{"version":3,"file":"static/js/2768.acc85e91.chunk.js","mappings":"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","sources":["ao/components/Showroom/frameworkComponents/GeneralComponents/StageFilteringControls.tsx","ao/components/Showroom/frameworkComponents/GalleryStageComponents/HeaderStyles/StageHeader.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/TeaserFilteringControls.tsx","ao/components/Showroom/frameworkComponents/GalleryStageComponents/TeaserCardStyles/TeaserCardsSection.tsx","ao/components/Showroom/frameworkComponents/GalleryStageComponents/TeaserCardStyles/TeaserPeopleSection.tsx","ao/components/Showroom/frameworkComponents/GalleryStageComponents/TeaserSection.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/StageNavigation/StageNavigationButton.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/StageNavigation/StageNavigation.tsx","ao/components/Showroom/ShowroomStage.tsx","ao/components/Showroom/frameworkComponents/GalleryStageComponents/StageStyles/StageCard.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ComingSoonMarker.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ShowroomContent.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ShowroomContentHeader.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ShowroomErrorAlert.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/Thumbnail.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ThumbnailProvider.tsx"],"sourcesContent":["/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file buttons for filtering on a stage's child tiers\r\n * @module Epic.AppOrchard.Showroom.StageFilteringControls\r\n */\r\n\r\nimport { Button, Flex, Heading, Image, Text, Wrap, WrapItem } from \"@chakra-ui/react\";\r\nimport { showroomGray, showroomText } from \"ao/chakraTheme\";\r\nimport { IGalleryStageWithChildren, TierQueryParamKeys } from \"ao/types/showroom\";\r\nimport { getBaseUrl, getIntFromSearchParam } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useCallback, useMemo } from \"react\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\n\r\ninterface IProps {\r\n\tstage: IGalleryStageWithChildren;\r\n}\r\n\r\nexport const StageFilteringControls: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { stage } = props;\r\n\r\n\tconst [searchParams, setSearchParams] = useSearchParams();\r\n\r\n\tconst firstChildId = stage.childStages.length > 0 ? stage.childStages[0]?.id : 0;\r\n\tconst substageIdFromUrl =\r\n\t\tgetIntFromSearchParam(searchParams, TierQueryParamKeys.ChildTierId) ?? firstChildId;\r\n\tconst filteredStageId =\r\n\t\tsubstageIdFromUrl > 0 && stage.childStages.map((x) => x.id).includes(substageIdFromUrl)\r\n\t\t\t? substageIdFromUrl\r\n\t\t\t: firstChildId;\r\n\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\tconst handleFilterStage = useCallback(\r\n\t\t(newStageId: number) => () => {\r\n\t\t\tsearchParams.set(TierQueryParamKeys.ChildTierId, newStageId.toString());\r\n\t\t\tsearchParams.delete(TierQueryParamKeys.Categories);\r\n\t\t\tsetSearchParams(searchParams);\r\n\t\t},\r\n\t\t[searchParams, setSearchParams],\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Wrap spacing=\"50px\" justify=\"center\" mt=\"20px\">\r\n\t\t\t{stage.childStages.map((child) => (\r\n\t\t\t\t<WrapItem width=\"240px\">\r\n\t\t\t\t\t<Flex flexDirection=\"column\" justify=\"center\" width=\"100%\">\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tbackground={\r\n\t\t\t\t\t\t\t\tchild.id === filteredStageId\r\n\t\t\t\t\t\t\t\t\t? `linear-gradient(42deg, ${child.backgroundColor2 ?? \"#D6FFDC\"} 0%, ${\r\n\t\t\t\t\t\t\t\t\t\t\tchild.backgroundColor ?? \"#A6EBAF\"\r\n\t\t\t\t\t\t\t\t\t } 100%)`\r\n\t\t\t\t\t\t\t\t\t: \"linear-gradient(147deg, #FFFFFF 0%, #FFFFFF66 100%)\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tborder={`1px solid ${\r\n\t\t\t\t\t\t\t\tchild.textColor ?? (child.id === filteredStageId ? \"#078D1A\" : showroomGray)\r\n\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\ttitle={`See ${child.groupName} listings`}\r\n\t\t\t\t\t\t\taria-label={`See ${child.groupName} listings`}\r\n\t\t\t\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\t\t\t\twidth=\"100%\"\r\n\t\t\t\t\t\t\theight=\"70px\"\r\n\t\t\t\t\t\t\tonClick={handleFilterStage(child.id)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Flex alignItems=\"center\">\r\n\t\t\t\t\t\t\t\t{child.iconPath && (\r\n\t\t\t\t\t\t\t\t\t<Flex\r\n\t\t\t\t\t\t\t\t\t\tpr=\"3px\"\r\n\t\t\t\t\t\t\t\t\t\tminWidth=\"50px\"\r\n\t\t\t\t\t\t\t\t\t\tminHeight=\"50px\"\r\n\t\t\t\t\t\t\t\t\t\tjustify=\"left\"\r\n\t\t\t\t\t\t\t\t\t\talignItems=\"center\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\t\t\t\t\tsrc={`${baseUrl}Content/images/${child.iconPath}`}\r\n\t\t\t\t\t\t\t\t\t\t\tfallback={<></>}\r\n\t\t\t\t\t\t\t\t\t\t\tmaxH=\"36px\"\r\n\t\t\t\t\t\t\t\t\t\t\tmaxW=\"36px\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\t\tas=\"h4\"\r\n\t\t\t\t\t\t\t\t\tfontWeight=\"600\"\r\n\t\t\t\t\t\t\t\t\tfontSize=\"1.5rem\"\r\n\t\t\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\t\t\t\tnoOfLines={2}\r\n\t\t\t\t\t\t\t\t\twhiteSpace={\"pre-line\"}\r\n\t\t\t\t\t\t\t\t\tpy=\"3px\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{child.groupName.toLocaleUpperCase()}\r\n\t\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t{child.description && (\r\n\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\tmt=\"10px\"\r\n\t\t\t\t\t\t\t\tfontSize=\"1.125rem\"\r\n\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\tcolor=\"gray.900\"\r\n\t\t\t\t\t\t\t\ttextAlign={\"center\"}\r\n\t\t\t\t\t\t\t\tnoOfLines={3}\r\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: child.description }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Flex>\r\n\t\t\t\t</WrapItem>\r\n\t\t\t))}\r\n\t\t</Wrap>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file Basic stage header component for Showroom\r\n * @module Epic.AppOrchard.Showroom.StageHeader\r\n */\r\n\r\nimport { Box, Button, Center, Heading, Image, Text, useBreakpointValue, VStack } from \"@chakra-ui/react\";\r\nimport { showroomPrimary } from \"ao/chakraTheme\";\r\nimport { AOLink, MessageForm } from \"ao/components/Core\";\r\nimport { canFilterSubTiers } from \"ao/components/Showroom/Helper\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { GalleryHeaderStyle, IGalleryStageWithChildren } from \"ao/types/showroom\";\r\nimport { getBaseUrl } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useCallback, useState } from \"react\";\r\nimport { BiPaperPlane } from \"react-icons/bi\";\r\nimport { BsArrowRight } from \"react-icons/bs\";\r\nimport { StageFilteringControls } from \"../../GeneralComponents/StageFilteringControls\";\r\n\r\ninterface IProps {\r\n\tstage: IGalleryStageWithChildren;\r\n\tuserSecurity: IUserSecurity;\r\n\theaderSubtextColor: string;\r\n}\r\n\r\nexport const StageHeader: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { stage, userSecurity, headerSubtextColor } = props;\r\n\r\n\tconst isDisplayGroupName =\r\n\t\t!!stage.groupName &&\r\n\t\t[\r\n\t\t\tGalleryHeaderStyle.TitleButtons,\r\n\t\t\tGalleryHeaderStyle.TitleIcon,\r\n\t\t\tGalleryHeaderStyle.TitleOnly,\r\n\t\t].includes(stage.headerStyle);\r\n\tconst isDisplayIcon =\r\n\t\t!!stage.iconPath &&\r\n\t\t[GalleryHeaderStyle.IconOnly, GalleryHeaderStyle.TitleIcon].includes(stage.headerStyle);\r\n\tconst isDisplayHeaderSubtext = !!stage.headerSubtext && (isDisplayIcon || isDisplayGroupName);\r\n\tconst isDisplaySubstageFilters = canFilterSubTiers(stage);\r\n\tconst isDisplayHeaderImage = !!stage.headerImagePath;\r\n\r\n\tconst headerColorToUse = stage.textColor || showroomPrimary;\r\n\tconst subheaderColorToUse = headerSubtextColor || stage.textColor || showroomPrimary;\r\n\tconst iconHeight = stage.iconPath?.indexOf(\".svg\") > 0 ? \"120px\" : \"150px\";\r\n\tconst imageHeight =\r\n\t\tuseBreakpointValue({\r\n\t\t\tbase: \"150px\",\r\n\t\t\tsm: \"200px\",\r\n\t\t\tmd: \"300px\",\r\n\t\t\tlg: \"350px\",\r\n\t\t\txl: \"450px\",\r\n\t\t\t\"2xl\": \"450px\",\r\n\t\t\t\"3xl\": \"450px\",\r\n\t\t}) || \"450px\";\r\n\r\n\tconst isEpicOrCustomer = userSecurity?.isEpicUser || userSecurity?.isEpicCustomer;\r\n\tconst showStageContactButton = stage.contactSubject_Id && (stage.showContactToAll || isEpicOrCustomer);\r\n\tconst showLearnMoreButton = !!stage.learnMoreUrl;\r\n\r\n\tconst isSubtextOnBottom = stage.headerStyle === GalleryHeaderStyle.TitleButtons;\r\n\r\n\treturn (\r\n\t\t<Center pt=\"50px\" pb=\"50px\" flexDirection=\"column\">\r\n\t\t\t<VStack maxW=\"780px\">\r\n\t\t\t\t{isDisplayGroupName && (\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\tfontSize=\"3rem\"\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tcolor={headerColorToUse}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{stage.groupName}\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t)}\r\n\t\t\t\t{isDisplayIcon && (\r\n\t\t\t\t\t<Center height={iconHeight}>\r\n\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\tsrc={`${getBaseUrl()}Content/images/${stage.iconPath}`}\r\n\t\t\t\t\t\t\tfallback={<></>}\r\n\t\t\t\t\t\t\tmaxH={iconHeight}\r\n\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\tobjectFit=\"contain\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Center>\r\n\t\t\t\t)}\r\n\t\t\t\t{!isSubtextOnBottom && isDisplayHeaderSubtext && (\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\tcolor={subheaderColorToUse}\r\n\t\t\t\t\t\tfontSize=\"1.714rem\" /* ~24px */\r\n\t\t\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\tposition=\"relative\"\r\n\t\t\t\t\t\tmt={isDisplayIcon ? \"-10px !important\" : \"0px\"}\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: stage.headerSubtext }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{stage.description && (\r\n\t\t\t\t\t<Text\r\n\t\t\t\t\t\tfontSize=\"1.714rem\" /* ~24px */\r\n\t\t\t\t\t\tcolor=\"gray.900\"\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tpt={isDisplayHeaderSubtext ? \"20px\" : \"0px\"}\r\n\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: stage.description }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{isDisplayHeaderImage && (\r\n\t\t\t\t\t<Center height={imageHeight} mb=\"-50px!important\">\r\n\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\tsrc={`${getBaseUrl()}Content/images/${stage.headerImagePath}`}\r\n\t\t\t\t\t\t\tfallback={<></>}\r\n\t\t\t\t\t\t\tmaxH={imageHeight}\r\n\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\tobjectFit=\"contain\"\r\n\t\t\t\t\t\t\tpos=\"absolute\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Center>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showStageContactButton || showLearnMoreButton) && (\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t{/*Useless box to free us from the VStack's influence */}\r\n\t\t\t\t\t\t<Box mt={isDisplayHeaderImage ? \"75px\" : \"20px\"}>\r\n\t\t\t\t\t\t\t{showStageContactButton && (\r\n\t\t\t\t\t\t\t\t<StageContactButton stage={stage} userSecurity={userSecurity} />\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{showLearnMoreButton && <LearnMoreLinkButton stage={stage} />}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</VStack>\r\n\t\t\t{isDisplaySubstageFilters && (\r\n\t\t\t\t<Box maxWidth=\"980\">\r\n\t\t\t\t\t<StageFilteringControls stage={stage} />\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{isSubtextOnBottom && isDisplayHeaderSubtext && (\r\n\t\t\t\t<Text\r\n\t\t\t\t\toverflow=\"visible\"\r\n\t\t\t\t\tmt=\"30px\"\r\n\t\t\t\t\tmb=\"-20px\"\r\n\t\t\t\t\tfontSize=\"1.125rem\"\r\n\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\tcolor=\"gray.900\"\r\n\t\t\t\t\ttextAlign={\"center\"}\r\n\t\t\t\t\tdangerouslySetInnerHTML={{ __html: stage.headerSubtext }}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</Center>\r\n\t);\r\n});\r\n\r\ninterface IContactButtonProps {\r\n\tstage: IGalleryStageWithChildren;\r\n\tuserSecurity: IUserSecurity;\r\n}\r\n\r\nconst StageContactButton: FunctionComponent<IContactButtonProps> = memo((props) => {\r\n\tconst { stage, userSecurity } = props;\r\n\r\n\tconst [showMessageForm, setShowMessageForm] = useState(false);\r\n\tconst hideMessageForm = useCallback(() => setShowMessageForm(false), []);\r\n\tconst onShowMessageFormClicked = useCallback((ev: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\tsetShowMessageForm(true);\r\n\t\tev.preventDefault();\r\n\t\tev.stopPropagation();\r\n\t\treturn false;\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Button\r\n\t\t\t\tonClick={onShowMessageFormClicked}\r\n\t\t\t\tvariant=\"showroomDark\"\r\n\t\t\t\tborderRadius=\"4px\"\r\n\t\t\t\tfontWeight=\"normal\"\r\n\t\t\t\tfontSize=\"1rem\"\r\n\t\t\t\trightIcon={<BiPaperPlane size={20} />}\r\n\t\t\t>\r\n\t\t\t\tContact {stage.groupName}\r\n\t\t\t</Button>\r\n\t\t\t<MessageForm\r\n\t\t\t\tisOpen={showMessageForm}\r\n\t\t\t\tonClose={hideMessageForm}\r\n\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\tdefaultSubject={stage.contactSubject_Id}\r\n\t\t\t\tcontactTarget={stage.groupName}\r\n\t\t\t/>\r\n\t\t</>\r\n\t);\r\n});\r\n\r\ninterface ILearnMoreLinkButtonProps {\r\n\tstage: IGalleryStageWithChildren;\r\n}\r\n\r\nconst LearnMoreLinkButton: FunctionComponent<ILearnMoreLinkButtonProps> = memo((props) => {\r\n\tconst { stage } = props;\r\n\r\n\treturn (\r\n\t\t<Button\r\n\t\t\tas={AOLink}\r\n\t\t\ttextDecoration=\"none\"\r\n\t\t\tvariant=\"showroomDark\"\r\n\t\t\tborderRadius=\"4px\"\r\n\t\t\tfontWeight=\"normal\"\r\n\t\t\tfontSize=\"1rem\"\r\n\t\t\turl={stage.learnMoreUrl}\r\n\t\t\trightIcon={<BsArrowRight size={20} />}\r\n\t\t\ttarget=\"_blank\"\r\n\t\t\ttitle={`Learn more about ${stage.groupName}`}\r\n\t\t\tml={stage.contactSubject_Id ? \"0.5em\" : undefined}\r\n\t\t>\r\n\t\t\tLearn More\r\n\t\t</Button>\r\n\t);\r\n});\r\n\r\nexport default StageHeader;\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file button for navigating to a stage page\r\n * @module Epic.AppOrchard.Showroom.TeaserFilteringControls\r\n */\r\n\r\nimport { ChevronDownIcon, SearchIcon } from \"@chakra-ui/icons\";\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tGrid,\r\n\tGridItem,\r\n\tInput,\r\n\tInputGroup,\r\n\tInputRightElement,\r\n\tPopover,\r\n\tPopoverBody,\r\n\tPopoverContent,\r\n\tPopoverTrigger,\r\n\tText,\r\n\tuseDisclosure,\r\n\tVStack,\r\n} from \"@chakra-ui/react\";\r\nimport { chakraTheme, showroomPrimary } from \"ao/chakraTheme\";\r\nimport {\r\n\tGalleryListingStyle,\r\n\tICategory,\r\n\tIGalleryStageWithChildren,\r\n\tTierQueryParamKeys,\r\n} from \"ao/types/showroom\";\r\nimport { getCaseInsensitiveParam, getIntFromSearchParam } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport { CleanSearchQuery, getIntArrayFromSearchParam } from \"../../Helper\";\r\nimport {\r\n\tCategoryDisplay,\r\n\tCategorySelect,\r\n\tfilterParentCategoryIds,\r\n} from \"../GalleryListingComponents/AppHelperComponents/CategorySelect\";\r\n\r\ninterface IProps {\r\n\tstage: IGalleryStageWithChildren;\r\n\tcategories: ICategory[];\r\n}\r\n\r\nexport enum ShowroomSortOrder {\r\n\tChronological = 0,\r\n\tName = 1,\r\n\tNameReverse = 2,\r\n\tVendorName = 3,\r\n\tVendorNameReverse = 4,\r\n\tCategoryName = 5,\r\n\tChronologicalReverse = 6,\r\n\tCategoryNameReverse = 7,\r\n}\r\n\r\nexport const TeaserFilteringControls: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { stage, categories } = props;\r\n\r\n\tconst [searchParams, setSearchParams] = useSearchParams();\r\n\tconst { onOpen: onSortOpen, onClose: onSortClose, isOpen: isSortOpen } = useDisclosure();\r\n\r\n\tconst searchStringFinal = getCaseInsensitiveParam(searchParams, TierQueryParamKeys.SearchString) ?? \"\";\r\n\r\n\tconst selectedCategoryIds = getIntArrayFromSearchParam(searchParams, TierQueryParamKeys.Categories);\r\n\r\n\tconst defaultSortOrder = stage.sortOptions.find((x) => x.isDefault);\r\n\tconst sortOrder = getCaseInsensitiveParam(searchParams, TierQueryParamKeys.SortOrder)\r\n\t\t? getIntFromSearchParam(searchParams, TierQueryParamKeys.SortOrder)\r\n\t\t: defaultSortOrder?.sortOption ?? -1;\r\n\r\n\t//remove parent category id if any of it's children have been selected\r\n\r\n\tconst selectedCategoryIdsNoParents = useMemo(() => {\r\n\t\tlet ids: number[] = [];\r\n\t\tcategories.forEach(\r\n\t\t\t(category) => (ids = [...ids, ...filterParentCategoryIds(category, selectedCategoryIds)]),\r\n\t\t);\r\n\t\treturn ids;\r\n\t}, [categories, selectedCategoryIds]);\r\n\r\n\t//#endregion\r\n\r\n\tconst [searchString, setSearchString] = useState<string>(\"\");\r\n\r\n\tconst handleSearch = useCallback(() => {\r\n\t\tconst cleanedQuery = CleanSearchQuery(searchString);\r\n\r\n\t\tif (cleanedQuery !== searchString) {\r\n\t\t\tsetSearchString(cleanedQuery);\r\n\t\t}\r\n\r\n\t\tsearchParams.set(TierQueryParamKeys.SearchString, cleanedQuery);\r\n\t\tsetSearchParams(searchParams);\r\n\t}, [searchParams, searchString, setSearchParams]);\r\n\r\n\tconst handleSort = useCallback(\r\n\t\t(optionSelected: ShowroomSortOrder) => {\r\n\t\t\tsearchParams.set(TierQueryParamKeys.SortOrder, optionSelected.toString() ?? \"0\");\r\n\t\t\tsetSearchParams(searchParams);\r\n\t\t},\r\n\t\t[searchParams, setSearchParams],\r\n\t);\r\n\r\n\tconst handleCategoryFilter = useCallback(\r\n\t\t(e: number[]) => {\r\n\t\t\tsearchParams.set(TierQueryParamKeys.Categories, e.join(\",\"));\r\n\t\t\tsetSearchParams(searchParams);\r\n\t\t},\r\n\t\t[searchParams, setSearchParams],\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetSearchString(searchStringFinal);\r\n\t}, [searchStringFinal]);\r\n\r\n\tconst showSort =\r\n\t\tstage && stage.listingStyle !== GalleryListingStyle.People && stage.sortOptions.length > 1;\r\n\r\n\tconst optionStyling = { fontFamily: \"Jost, sans-serif\" };\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Grid\r\n\t\t\t\ttemplateColumns=\"repeat(3, 1fr)\"\r\n\t\t\t\tgap={\"12px\"}\r\n\t\t\t\tw=\"100%\"\r\n\t\t\t\tpt={stage.details ? \"20px\" : \"\"}\r\n\t\t\t\tpb={selectedCategoryIds.length > 0 ? \"20px\" : \"40px\"}\r\n\t\t\t>\r\n\t\t\t\t<GridItem colSpan={{ base: 3, md: 3, lg: 1 }}>\r\n\t\t\t\t\t{categories.length > 0 && (\r\n\t\t\t\t\t\t<CategorySelect\r\n\t\t\t\t\t\t\tcategories={categories}\r\n\t\t\t\t\t\t\tselectedCategoryIds={selectedCategoryIds}\r\n\t\t\t\t\t\t\tonChange={handleCategoryFilter}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</GridItem>\r\n\t\t\t\t<GridItem colSpan={{ base: 3, md: 2, lg: 1 }}>\r\n\t\t\t\t\t<InputGroup>\r\n\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\tplaceholder=\"Search...\"\r\n\t\t\t\t\t\t\tmaxLength={100}\r\n\t\t\t\t\t\t\tvalue={searchString}\r\n\t\t\t\t\t\t\tborderRadius=\"3xl\"\r\n\t\t\t\t\t\t\tbackgroundColor=\"white\"\r\n\t\t\t\t\t\t\tonChange={(event) => {\r\n\t\t\t\t\t\t\t\tsetSearchString(event.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tonKeyDown={(event) => {\r\n\t\t\t\t\t\t\t\tif (event.key === \"Enter\") {\r\n\t\t\t\t\t\t\t\t\thandleSearch();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<InputRightElement>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tonClick={handleSearch}\r\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\r\n\t\t\t\t\t\t\t\th=\"2rem\"\r\n\t\t\t\t\t\t\t\tw=\"1.75rem\"\r\n\t\t\t\t\t\t\t\tminW=\"1.75rem\"\r\n\t\t\t\t\t\t\t\tborderRadius=\"3xl\"\r\n\t\t\t\t\t\t\t\tright=\"2px\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<SearchIcon color={showroomPrimary} />\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</InputRightElement>\r\n\t\t\t\t\t</InputGroup>\r\n\t\t\t\t</GridItem>\r\n\t\t\t\t{showSort && (\r\n\t\t\t\t\t<GridItem colSpan={{ base: 3, md: 1, lg: 1 }} ml=\"auto\">\r\n\t\t\t\t\t\t<Box maxW=\"270px\" minW=\"150px\">\r\n\t\t\t\t\t\t\t<Popover\r\n\t\t\t\t\t\t\t\tgutter={1}\r\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\r\n\t\t\t\t\t\t\t\tisOpen={isSortOpen}\r\n\t\t\t\t\t\t\t\tonOpen={onSortOpen}\r\n\t\t\t\t\t\t\t\tonClose={onSortClose}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<PopoverTrigger>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tfontWeight=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\r\n\t\t\t\t\t\t\t\t\t\tpaddingRight=\"0px\"\r\n\t\t\t\t\t\t\t\t\t\trightIcon={\r\n\t\t\t\t\t\t\t\t\t\t\t<ChevronDownIcon\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={chakraTheme.colors.showroomPrimary[\"500\"]}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<Box fontWeight=\"bold\">Sort: </Box>\r\n\t\t\t\t\t\t\t\t\t\t{getSortOptionName(sortOrder, stage.groupName)}\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</PopoverTrigger>\r\n\t\t\t\t\t\t\t\t<PopoverContent>\r\n\t\t\t\t\t\t\t\t\t<PopoverBody overflowY=\"auto\" maxHeight=\"300px\" overflowX=\"auto\">\r\n\t\t\t\t\t\t\t\t\t\t<VStack spacing=\"8px\" justify=\"left\" alignItems=\"left\">\r\n\t\t\t\t\t\t\t\t\t\t\t{stage.sortOptions\r\n\t\t\t\t\t\t\t\t\t\t\t\t.sort((a, b) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetSortOptionName(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ta.sortOption,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstage.groupName,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t).localeCompare(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetSortOptionName(b.sortOption, stage.groupName),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t.map((option) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={optionStyling}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleSort(option.sortOption);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSortClose();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getSortOptionName(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.sortOption,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstage.groupName,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t</VStack>\r\n\t\t\t\t\t\t\t\t\t</PopoverBody>\r\n\t\t\t\t\t\t\t\t</PopoverContent>\r\n\t\t\t\t\t\t\t</Popover>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</GridItem>\r\n\t\t\t\t)}\r\n\t\t\t</Grid>\r\n\t\t\t{selectedCategoryIds.length > 0 && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<Text color=\"#2D3748\" textAlign=\"center\" mt=\"0px\">\r\n\t\t\t\t\t\tFILTER BY\r\n\t\t\t\t\t</Text>\r\n\t\t\t\t\t<CategoryDisplay\r\n\t\t\t\t\t\tcategories={categories}\r\n\t\t\t\t\t\tselectedCategoryIds={selectedCategoryIdsNoParents}\r\n\t\t\t\t\t\tonChange={handleCategoryFilter}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n\r\nfunction getSortOptionName(val: ShowroomSortOrder, groupName: string): string {\r\n\tswitch (val) {\r\n\t\tcase ShowroomSortOrder.Chronological:\r\n\t\t\treturn \"Listed Date (Newest to Oldest)\";\r\n\t\tcase ShowroomSortOrder.ChronologicalReverse:\r\n\t\t\treturn \"Listed Date (Oldest to Newest)\";\r\n\t\tcase ShowroomSortOrder.Name:\r\n\t\t\treturn groupName === \"Products\" ? \"Product (A-Z)\" : \"Name (A-Z)\";\r\n\t\tcase ShowroomSortOrder.NameReverse:\r\n\t\t\treturn groupName === \"Products\" ? \"Product (Z-A)\" : \"Name (Z-A)\";\r\n\t\tcase ShowroomSortOrder.VendorName:\r\n\t\t\treturn \"Vendor (A-Z)\";\r\n\t\tcase ShowroomSortOrder.VendorNameReverse:\r\n\t\t\treturn \"Vendor (Z-A)\";\r\n\t\tcase ShowroomSortOrder.CategoryName:\r\n\t\t\treturn \"Category (A-Z)\";\r\n\t\tcase ShowroomSortOrder.CategoryNameReverse:\r\n\t\t\treturn \"Category (Z-A)\";\r\n\t\tdefault:\r\n\t\t\treturn \"\";\r\n\t}\r\n}\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file TeaserCardsSection component within Showroom\r\n * @module Epic.AppOrchard.Showroom.TeaserCardStyles.TeaserCardsSection\r\n */\r\n\r\nimport {\r\n\tBox,\r\n\tBoxProps,\r\n\tCenter,\r\n\tGridItem,\r\n\tHeading,\r\n\tSimpleGrid,\r\n\tText,\r\n\tuseBreakpointValue,\r\n\tuseDisclosure,\r\n} from \"@chakra-ui/react\";\r\nimport { showroomAppCategoryColor, showroomBorder, showroomText } from \"ao/chakraTheme\";\r\nimport { LinkButton } from \"ao/components/Core\";\r\nimport {\r\n\tContentWidth,\r\n\tisListingPageAccessible,\r\n\tisListingStyleInteractive,\r\n} from \"ao/components/Showroom/Helper\";\r\nimport { IThumbnailDictionary } from \"ao/state/showroomThumbnails\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { GalleryListingStyle, IAppTeaserModelWithStageAndParentStage } from \"ao/types/showroom\";\r\nimport { getBaseUrl, isNullOrEmpty } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useCallback } from \"react\";\r\nimport { ComingSoonMarker } from \"../../GeneralComponents/ComingSoonMarker\";\r\nimport {\r\n\tThumbnail,\r\n\tThumbnailExternalWatermark,\r\n\tThumbnailStageWatermark,\r\n} from \"../../GeneralComponents/Thumbnail\";\r\nimport { ThumbnailProvider } from \"../../GeneralComponents/ThumbnailProvider\";\r\n\r\ninterface IProps {\r\n\tteasers: IAppTeaserModelWithStageAndParentStage[];\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tlistingStyle: GalleryListingStyle;\r\n\tcolumnCount?: number;\r\n\tisFlat?: boolean;\r\n}\r\n\r\nconst TeaserCardsSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { teasers, thumbnailDictionary, listingStyle, columnCount, isFlat } = props;\r\n\r\n\tconst defaultColumns = useBreakpointValue({ base: 1, sm: 2, md: 3, lg: 4 }) || 4;\r\n\tconst defaultPartnerColumns = useBreakpointValue({ base: 1, sm: 1, md: 10, lg: 12 }) || 4;\r\n\r\n\tconst sectionWidth = useBreakpointValue(ContentWidth) || \"100%\";\r\n\tconst columnSpacing = useBreakpointValue({ base: \"20px\", md: \"30px\", lg: \"40px\" });\r\n\tconst rowSpacing = useBreakpointValue({ base: \"20px\", md: \"10\" });\r\n\r\n\tconst columns =\r\n\t\tcolumnCount ??\r\n\t\t(listingStyle === GalleryListingStyle.Partner ? defaultPartnerColumns : defaultColumns);\r\n\r\n\tconst colSpan = listingStyle === GalleryListingStyle.Partner ? 5 : 1;\r\n\tconst backgroundPartnerColors = [\"#6495fb\", \"#fd8b2ed9\", \"rgb(217, 52, 115)\"];\r\n\r\n\tconst centerProps =\r\n\t\tteasers.length < defaultColumns\r\n\t\t\t? {\r\n\t\t\t\t\tgridTemplateColumns: `repeat(${\r\n\t\t\t\t\t\tlistingStyle === GalleryListingStyle.Partner ? teasers.length * 5 : teasers.length\r\n\t\t\t\t\t}, minmax(0px, calc(calc(${sectionWidth} - calc(${columnSpacing} * ${\r\n\t\t\t\t\t\tcolumns - 1\r\n\t\t\t\t\t})) / ${columns})))`,\r\n\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t }\r\n\t\t\t: {};\r\n\r\n\treturn (\r\n\t\t<ThumbnailProvider\r\n\t\t\tlistingIds={teasers.map((x) => x.listingId)}\r\n\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t>\r\n\t\t\t<Box>\r\n\t\t\t\t<SimpleGrid\r\n\t\t\t\t\twidth=\"100%\"\r\n\t\t\t\t\tcolumns={columns}\r\n\t\t\t\t\trowGap={rowSpacing}\r\n\t\t\t\t\tcolumnGap={columnSpacing}\r\n\t\t\t\t\t{...centerProps}\r\n\t\t\t\t>\r\n\t\t\t\t\t{teasers.map((teaser, index) => (\r\n\t\t\t\t\t\t<AppCard\r\n\t\t\t\t\t\t\tteaser={teaser}\r\n\t\t\t\t\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t\t\t\t\t\tlistingStyle={listingStyle}\r\n\t\t\t\t\t\t\tkey={`${teaser.appId}_${teaser.listingId ?? 0}`}\r\n\t\t\t\t\t\t\tisFlat={isFlat}\r\n\t\t\t\t\t\t\tcolSpan={colSpan}\r\n\t\t\t\t\t\t\tbackgroundColor={\r\n\t\t\t\t\t\t\t\tlistingStyle === GalleryListingStyle.Partner\r\n\t\t\t\t\t\t\t\t\t? backgroundPartnerColors[index % 3]\r\n\t\t\t\t\t\t\t\t\t: \"#FFFFFF\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t></AppCard>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</SimpleGrid>\r\n\t\t\t</Box>\r\n\t\t</ThumbnailProvider>\r\n\t);\r\n});\r\n\r\ninterface ICardProps {\r\n\tteaser: IAppTeaserModelWithStageAndParentStage;\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tlistingStyle: GalleryListingStyle;\r\n\tisFlat?: boolean;\r\n\tcolSpan?: number;\r\n\tbackgroundColor: string;\r\n}\r\n\r\nconst AppCard: FunctionComponent<ICardProps> = memo((props) => {\r\n\tconst { teaser, thumbnailDictionary, listingStyle, colSpan, backgroundColor } = props;\r\n\r\n\tconst { isOpen: hoverOn, onOpen: onHover, onClose } = useDisclosure();\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst isStyleInteractive = isListingStyleInteractive(listingStyle);\r\n\tconst linkToListing = isStyleInteractive && isListingPageAccessible(listingStyle);\r\n\tconst linkToExternal = isStyleInteractive && !linkToListing && !isNullOrEmpty(teaser.website);\r\n\tconst isCardInteractive = linkToListing || linkToExternal;\r\n\r\n\tconst conditionalBoxProps: any = linkToListing\r\n\t\t? {\r\n\t\t\t\tas: LinkButton,\r\n\t\t\t\turl: `${siteInfo.showroomRelativeUrl}Listing?id=${teaser.listingId}`,\r\n\t\t\t\t_hover: { background: \"unset\" },\r\n\r\n\t\t\t\ttabIndex: 0,\r\n\t\t }\r\n\t\t: linkToExternal\r\n\t\t? {\r\n\t\t\t\tas: LinkButton,\r\n\t\t\t\turl: teaser.website,\r\n\r\n\t\t\t\t_hover: { background: \"unset\" },\r\n\t\t\t\tisExternal: true,\r\n\t\t\t\ttabIndex: 0,\r\n\t\t\t\ttitle: \"Access external website\",\r\n\t\t }\r\n\t\t: { tabIndex: -1 };\r\n\r\n\tconst conditionalWatermarkProps: BoxProps = teaser.isComingSoon\r\n\t\t? {\r\n\t\t\t\th: \"84px\",\r\n\t\t\t\tw: \"84px\",\r\n\t\t\t\ttop: \"0\",\r\n\t\t\t\tbackgroundColor: \"none\",\r\n\t\t\t\tborderRadius: \"0\",\r\n\t\t\t\tbackgroundImage: `url('${getBaseUrl()}Content/images/${\r\n\t\t\t\t\tteaser.stage.comingSoonBackgroundImagePath\r\n\t\t\t\t}')`,\r\n\t\t\t\tright: linkToExternal ? \"36px\" : \"0\",\r\n\t\t }\r\n\t\t: { right: linkToExternal ? \"36px\" : undefined };\r\n\r\n\tconst transition = \"200ms\";\r\n\r\n\tconst handleOnHover = useCallback(() => {\r\n\t\tif (isCardInteractive) {\r\n\t\t\tonHover();\r\n\t\t}\r\n\t}, [isCardInteractive, onHover]);\r\n\r\n\treturn (\r\n\t\t<GridItem colSpan={colSpan}>\r\n\t\t\t<Box\r\n\t\t\t\t{...conditionalBoxProps}\r\n\t\t\t\tonMouseEnter={handleOnHover} // for mouse users\r\n\t\t\t\tonMouseLeave={onClose} // for mouse users\r\n\t\t\t\tbackground=\"none\"\r\n\t\t\t\tdisplay=\"block\"\r\n\t\t\t\twhiteSpace=\"unset\"\r\n\t\t\t\tp=\"0px\"\r\n\t\t\t\tminH=\"260px\"\r\n\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\th=\"100%\"\r\n\t\t\t>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Box position=\"relative\" margin=\"auto\">\r\n\t\t\t\t\t\t<Center\r\n\t\t\t\t\t\t\taspectRatio=\"5 / 3\"\r\n\t\t\t\t\t\t\tstyle={{ aspectRatio: \"5 / 3\" }}\r\n\t\t\t\t\t\t\tp=\"5px\"\r\n\t\t\t\t\t\t\tbackground={backgroundColor}\r\n\t\t\t\t\t\t\tbackgroundImage={`url('${getBaseUrl()}Content/images/Showroom/PartnerCardBackground.svg')`}\r\n\t\t\t\t\t\t\tbackgroundSize=\"cover\"\r\n\t\t\t\t\t\t\tboxShadow={hoverOn ? \"0px 2px 15px #00000029\" : \"0px 2px 4px #00000029\"}\r\n\t\t\t\t\t\t\tborder={showroomBorder}\r\n\t\t\t\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\t\t\t\ttransitionDuration={transition}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Thumbnail\r\n\t\t\t\t\t\t\t\tsrc={\r\n\t\t\t\t\t\t\t\t\tteaser.listingId in thumbnailDictionary\r\n\t\t\t\t\t\t\t\t\t\t? thumbnailDictionary[teaser.listingId].ImageData\r\n\t\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlistingId={teaser.listingId}\r\n\t\t\t\t\t\t\t\tobjectFit=\"scale-down\"\r\n\t\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\t\tmaxH=\"100%\"\r\n\t\t\t\t\t\t\t\tmaxW={listingStyle === GalleryListingStyle.Partner ? \"290px\" : \"100%\"}\r\n\t\t\t\t\t\t\t\ttransform={hoverOn ? \"scale(1.03)\" : \"\"}\r\n\t\t\t\t\t\t\t\ttransitionDuration={transition}\r\n\t\t\t\t\t\t\t\tborderRadius={listingStyle === GalleryListingStyle.Partner ? \"0\" : \"10px\"}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Center>\r\n\t\t\t\t\t\t{teaser.stage.showGalleryIcon && teaser.stage.iconPath ? (\r\n\t\t\t\t\t\t\t<ThumbnailStageWatermark\r\n\t\t\t\t\t\t\t\ticonPath={teaser.stage.iconPath}\r\n\t\t\t\t\t\t\t\t{...conditionalWatermarkProps}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t) : teaser.isComingSoon ? (\r\n\t\t\t\t\t\t\t<ComingSoonMarker\r\n\t\t\t\t\t\t\t\ttitle={teaser.stage.comingSoonTitle}\r\n\t\t\t\t\t\t\t\tbackgroundImage={`url('${getBaseUrl()}Content/images/${\r\n\t\t\t\t\t\t\t\t\tteaser.stage.comingSoonBackgroundImagePath\r\n\t\t\t\t\t\t\t\t}')`}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t{linkToExternal && <ThumbnailExternalWatermark />}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\ttextAlign=\"left\"\r\n\t\t\t\t\t\tpadding=\"6px\"\r\n\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\twordBreak=\"break-word\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{listingStyle !== GalleryListingStyle.Partner && teaser.primaryCategoryName && (\r\n\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\tas=\"h4\"\r\n\t\t\t\t\t\t\t\tnoOfLines={2}\r\n\t\t\t\t\t\t\t\tfontSize=\".9rem\"\r\n\t\t\t\t\t\t\t\tmy=\"2px\"\r\n\t\t\t\t\t\t\t\tcolor={showroomAppCategoryColor}\r\n\t\t\t\t\t\t\t\tletterSpacing=\"2px\"\r\n\t\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{teaser.primaryCategoryName?.toLocaleUpperCase()}\r\n\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{!teaser.hideName && (\r\n\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\tas=\"h4\"\r\n\t\t\t\t\t\t\t\tfontSize=\"1.25rem\"\r\n\t\t\t\t\t\t\t\tlineHeight=\"1.28\"\r\n\t\t\t\t\t\t\t\tnoOfLines={3}\r\n\t\t\t\t\t\t\t\ttextDecoration={hoverOn ? \"underline\" : \"unset\"}\r\n\t\t\t\t\t\t\t\ttransitionDuration={transition}\r\n\t\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{teaser.name}\r\n\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!teaser.hideOrgName && teaser.orgName && (\r\n\t\t\t\t\t\t\t<Text fontSize=\"0.9rem\" fontStyle=\"italic\" fontWeight=\"400\" display=\"inline\">\r\n\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\tby {teaser.orgName}\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{listingStyle === GalleryListingStyle.Partner ? (\r\n\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\tnoOfLines={4}\r\n\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\tmt=\"5px\"\r\n\t\t\t\t\t\t\t\tfontSize=\"1.25rem\"\r\n\t\t\t\t\t\t\t\twhiteSpace={\"pre-line\"}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{teaser.summary}\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\tlistingStyle === GalleryListingStyle.AppFullWithDescription && (\r\n\t\t\t\t\t\t\t\t<Text noOfLines={4} fontWeight=\"400\" mt=\"5px\" whiteSpace={\"pre-line\"}>\r\n\t\t\t\t\t\t\t\t\t{teaser.summary}\r\n\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</GridItem>\r\n\t);\r\n});\r\n\r\nexport default TeaserCardsSection;\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file TeaserPeopleSection component within Showroom\r\n * @module Epic.AppOrchard.Showroom.TeaserCardStyles.TeaserPeopleSection\r\n */\r\n\r\nimport {\r\n\tBox,\r\n\tCenter,\r\n\tGridItem,\r\n\tHeading,\r\n\tSimpleGrid,\r\n\tText,\r\n\tuseBreakpointValue,\r\n\tuseDisclosure,\r\n\tVStack,\r\n} from \"@chakra-ui/react\";\r\nimport { showroomBorder, showroomPeopleCategoryColor, showroomText } from \"ao/chakraTheme\";\r\nimport { LinkButton } from \"ao/components/Core\";\r\nimport { ContentWidth } from \"ao/components/Showroom/Helper\";\r\nimport { IThumbnailDictionary } from \"ao/state/showroomThumbnails\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { IAppTeaserModelWithStageAndParentStage } from \"ao/types/showroom\";\r\nimport { getBaseUrl } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\nimport { ComingSoonMarker } from \"../../GeneralComponents/ComingSoonMarker\";\r\nimport { Thumbnail } from \"../../GeneralComponents/Thumbnail\";\r\nimport { ThumbnailProvider } from \"../../GeneralComponents/ThumbnailProvider\";\r\n\r\ninterface IProps {\r\n\tteasers: IAppTeaserModelWithStageAndParentStage[];\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tcolumnCount?: number;\r\n\tisFlat?: boolean;\r\n}\r\n\r\nconst TeaserPeopleSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { teasers, thumbnailDictionary, columnCount, isFlat } = props;\r\n\r\n\tconst defaultColumns = useBreakpointValue({ base: 1, sm: 3, md: 4, lg: 5 }) || 4;\r\n\tconst sectionWidth = useBreakpointValue(ContentWidth) || \"100%\";\r\n\r\n\tconst spacing = useBreakpointValue({ base: \"10px\", sm: \"10px\", md: \"20px\", lg: \"30px\" });\r\n\r\n\tconst columns = columnCount ?? defaultColumns;\r\n\r\n\tconst centerProps =\r\n\t\tteasers.length < defaultColumns\r\n\t\t\t? {\r\n\t\t\t\t\tgridTemplateColumns: `repeat(${\r\n\t\t\t\t\t\tteasers.length\r\n\t\t\t\t\t}, minmax(0px, calc(calc(${sectionWidth} - calc(${spacing} * ${\r\n\t\t\t\t\t\tcolumns - 1\r\n\t\t\t\t\t})) / ${columns})))`,\r\n\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t }\r\n\t\t\t: {};\r\n\r\n\treturn (\r\n\t\t<ThumbnailProvider\r\n\t\t\tlistingIds={teasers.map((x) => x.listingId)}\r\n\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t>\r\n\t\t\t<SimpleGrid w=\"100%\" columns={columns} spacing={spacing} {...centerProps}>\r\n\t\t\t\t{teasers.map((teaser) => (\r\n\t\t\t\t\t<AppCard\r\n\t\t\t\t\t\tteaser={teaser}\r\n\t\t\t\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t\t\t\t\tkey={`${teaser.appId}_${teaser.listingId ?? 0}`}\r\n\t\t\t\t\t\tisFlat={isFlat}\r\n\t\t\t\t\t></AppCard>\r\n\t\t\t\t))}\r\n\t\t\t</SimpleGrid>\r\n\t\t</ThumbnailProvider>\r\n\t);\r\n});\r\n\r\ninterface ICardProps {\r\n\tteaser: IAppTeaserModelWithStageAndParentStage;\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tisFlat?: boolean;\r\n}\r\n\r\nconst AppCard: FunctionComponent<ICardProps> = memo((props) => {\r\n\tconst { teaser, thumbnailDictionary } = props;\r\n\r\n\tconst { isOpen: hoverOn, onOpen: onHover, onClose } = useDisclosure();\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst cardWidth = \"11.25rem\";\r\n\tconst detailWidth = useBreakpointValue({ base: \"100%\", sm: cardWidth, md: cardWidth, lg: cardWidth });\r\n\r\n\tconst transition = \"200ms\";\r\n\r\n\treturn (\r\n\t\t<GridItem display=\"flex\" justifyContent=\"center\">\r\n\t\t\t<Box\r\n\t\t\t\tas={LinkButton}\r\n\t\t\t\tbackground=\"none\"\r\n\t\t\t\tdisplay=\"block\"\r\n\t\t\t\twhiteSpace=\"unset\"\r\n\t\t\t\tp=\"5px 12px\"\r\n\t\t\t\tminH=\"260px\"\r\n\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\th=\"100%\"\r\n\t\t\t\turl={`${siteInfo.showroomRelativeUrl}Listing?id=${teaser.listingId}`}\r\n\t\t\t\t_hover={{ background: \"unset\" }}\r\n\t\t\t\tonMouseEnter={onHover} // for mouse users\r\n\t\t\t\tonMouseLeave={onClose} // for mouse users\r\n\t\t\t>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Center>\r\n\t\t\t\t\t\t<Thumbnail\r\n\t\t\t\t\t\t\tsrc={\r\n\t\t\t\t\t\t\t\tteaser.listingId in thumbnailDictionary\r\n\t\t\t\t\t\t\t\t\t? thumbnailDictionary[teaser.listingId].ImageData\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlistingId={teaser.listingId}\r\n\t\t\t\t\t\t\tw={cardWidth}\r\n\t\t\t\t\t\t\tobjectFit=\"cover\"\r\n\t\t\t\t\t\t\tobjectPosition=\"top\"\r\n\t\t\t\t\t\t\ttransform={hoverOn ? \"scale(1.03)\" : \"\"}\r\n\t\t\t\t\t\t\tboxShadow={hoverOn ? \"0px 2px 15px #00000029\" : \"0px 2px 4px #00000029\"}\r\n\t\t\t\t\t\t\ttransitionDuration={transition}\r\n\t\t\t\t\t\t\tborder={showroomBorder}\r\n\t\t\t\t\t\t\tstyle={{ aspectRatio: \"168 / 193\" }}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Center>\r\n\t\t\t\t\t{teaser.isComingSoon && (\r\n\t\t\t\t\t\t<ComingSoonMarker\r\n\t\t\t\t\t\t\ttitle={teaser.stage.comingSoonTitle}\r\n\t\t\t\t\t\t\tbackgroundImage={`url('${getBaseUrl()}Content/images/${\r\n\t\t\t\t\t\t\t\tteaser.stage.comingSoonBackgroundImagePath\r\n\t\t\t\t\t\t\t}')`}\r\n\t\t\t\t\t\t\ttop=\"6px\"\r\n\t\t\t\t\t\t\tright=\"13px\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\ttextAlign=\"left\"\r\n\t\t\t\t\t\tp=\"6px\"\r\n\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\twordBreak=\"break-word\"\r\n\t\t\t\t\t\twidth={detailWidth}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<VStack spacing=\"10px\" align=\"stretch\">\r\n\t\t\t\t\t\t\t{teaser.primaryCategoryName && (\r\n\t\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\t\tas=\"h4\"\r\n\t\t\t\t\t\t\t\t\tnoOfLines={2}\r\n\t\t\t\t\t\t\t\t\tfontSize=\".9rem\"\r\n\t\t\t\t\t\t\t\t\tmy=\"2px\"\r\n\t\t\t\t\t\t\t\t\tcolor={showroomPeopleCategoryColor}\r\n\t\t\t\t\t\t\t\t\tletterSpacing=\"2px\"\r\n\t\t\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{teaser.primaryCategoryName?.toLocaleUpperCase()}\r\n\t\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{!teaser.hideName && (\r\n\t\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\t\tas=\"h4\"\r\n\t\t\t\t\t\t\t\t\tfontSize=\"1.25rem\"\r\n\t\t\t\t\t\t\t\t\tlineHeight=\"1.28\"\r\n\t\t\t\t\t\t\t\t\tnoOfLines={3}\r\n\t\t\t\t\t\t\t\t\ttextDecoration={hoverOn ? \"underline\" : \"unset\"}\r\n\t\t\t\t\t\t\t\t\ttransitionDuration={transition}\r\n\t\t\t\t\t\t\t\t\tmt=\"0!important\"\r\n\t\t\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{teaser.name}\r\n\t\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{!teaser.hideOrgName && teaser.orgName && (\r\n\t\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\t\tfontSize=\"0.9rem\"\r\n\t\t\t\t\t\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\t\tdisplay=\"inline\"\r\n\t\t\t\t\t\t\t\t\tmt=\"0.5em!important\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{teaser.orgName}\r\n\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\tnoOfLines={4}\r\n\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\tmarginTop=\"5px\"\r\n\t\t\t\t\t\t\t\twhiteSpace={\"pre-line\"}\r\n\t\t\t\t\t\t\t\tmt=\"0.5em!important\"\r\n\t\t\t\t\t\t\t\tfontSize=\"0.9em\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{teaser.description}\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t</VStack>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</GridItem>\r\n\t);\r\n});\r\n\r\nexport default TeaserPeopleSection;\r\n","/**\r\n * @copyright Copyright 2023-2024 Epic Systems Corporation\r\n * @file Component for sorting, filtering, and paging Showroom teasers\r\n * @module Epic.AppOrchard.Showroom.TeaserSection\r\n */\r\n\r\nimport { Heading, useBreakpointValue, VStack } from \"@chakra-ui/react\";\r\nimport { showroomText } from \"ao/chakraTheme\";\r\nimport { AOLink } from \"ao/components/Core\";\r\nimport { PaginationControl } from \"ao/components/Core/PaginationControl\";\r\nimport { IThumbnailDictionary } from \"ao/state/showroomThumbnails\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport {\r\n\tGalleryListingStyle,\r\n\tIAppTeaserModelWithStageAndParentStage,\r\n\tICategory,\r\n\tIGalleryStageWithChildren,\r\n\tTierQueryParamKeys,\r\n} from \"ao/types/showroom\";\r\nimport {\r\n\tgetCaseInsensitiveParam,\r\n\tgetIntFromSearchParam,\r\n\tisLocalhost,\r\n\tlocaleCompareIgnoreEmpty,\r\n\tsortDate,\r\n} from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useEffect, useMemo, useState } from \"react\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport { getShowroomSearchUrl } from \"routes/showroomSearch\";\r\nimport { getShowroomSearchAdminUrl } from \"routes/showroomSearchAdmin\";\r\nimport {\r\n\tcanFilterSubTiers,\r\n\tgetFilteredSubTier,\r\n\tgetIntArrayFromSearchParam,\r\n\tGetMatchingFields,\r\n\tMatchingCategories,\r\n} from \"../../Helper\";\r\nimport { filterParentCategoryIds } from \"../GalleryListingComponents/AppHelperComponents/CategorySelect\";\r\nimport { ShowroomSortOrder } from \"../GeneralComponents/TeaserFilteringControls\";\r\nimport TeaserCardsSection from \"./TeaserCardStyles/TeaserCardsSection\";\r\nimport TeaserPeopleSection from \"./TeaserCardStyles/TeaserPeopleSection\";\r\n\r\ninterface ITeasersProps {\r\n\tstage: IGalleryStageWithChildren;\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tsearchBarVerticalPositionTarget?: HTMLDivElement | null;\r\n\tcategories: ICategory[];\r\n\tlistingStyle: GalleryListingStyle;\r\n}\r\n\r\nexport const TeaserSection: FunctionComponent<\r\n\tITeasersProps & { allTeasers: IAppTeaserModelWithStageAndParentStage[] }\r\n> = memo((props) => {\r\n\tconst {\r\n\t\tstage,\r\n\t\tthumbnailDictionary,\r\n\t\tsearchBarVerticalPositionTarget,\r\n\t\tcategories,\r\n\t\tlistingStyle,\r\n\t\tallTeasers,\r\n\t} = props;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst [searchParams] = useSearchParams();\r\n\r\n\tconst searchString = getCaseInsensitiveParam(searchParams, TierQueryParamKeys.SearchString) ?? \"\";\r\n\tconst defaultSortOrder = stage.sortOptions.find((x) => x.isDefault);\r\n\tconst sortOrder = getCaseInsensitiveParam(searchParams, TierQueryParamKeys.SortOrder)\r\n\t\t? getIntFromSearchParam(searchParams, TierQueryParamKeys.SortOrder)\r\n\t\t: defaultSortOrder?.sortOption ?? -1;\r\n\tconst selectedCategoryIds = getIntArrayFromSearchParam(searchParams, TierQueryParamKeys.Categories);\r\n\tconst selectedCategoryString = selectedCategoryIds.toString(); // used by useEffect to check for changes\r\n\tconst filteredStageId = getIntFromSearchParam(searchParams, TierQueryParamKeys.ChildTierId);\r\n\r\n\tconst isFlat = stage.flattenTier;\r\n\r\n\t//remove parent category id if any of it's children have been selected\r\n\r\n\tconst selectedCategoryIdsNoParents = useMemo(() => {\r\n\t\tlet ids: number[] = [];\r\n\t\tcategories.forEach(\r\n\t\t\t(category) => (ids = [...ids, ...filterParentCategoryIds(category, selectedCategoryIds)]),\r\n\t\t);\r\n\t\treturn ids;\r\n\t}, [categories, selectedCategoryIds]);\r\n\r\n\t//#endregion\r\n\r\n\t//#region paging, filtering, sorting state\r\n\r\n\tconst [page, setPage] = useState<number>(1);\r\n\r\n\t//#endregion\r\n\r\n\tconst searchPageUrl =\r\n\t\tsiteInfo.isAdminSite || isLocalhost() ? getShowroomSearchAdminUrl() : getShowroomSearchUrl();\r\n\r\n\tconst pageSize = useBreakpointValue({ base: 10, sm: 20, md: 30, lg: 40 }) || 40;\r\n\r\n\tconst [filteredTeasers, filteredSubTier] = useMemo(() => {\r\n\t\tlet localTeasers: IAppTeaserModelWithStageAndParentStage[] = [];\r\n\t\tlet filteredSubTier: IGalleryStageWithChildren | null = null;\r\n\r\n\t\tif (searchString && allTeasers) {\r\n\t\t\tconst matchingCategories = MatchingCategories(searchString, categories);\r\n\r\n\t\t\tlocalTeasers = allTeasers.filter((teaser) => {\r\n\t\t\t\tconst parentNameIfMatches =\r\n\t\t\t\t\tteaser.parentStage &&\r\n\t\t\t\t\tteaser.parentStage.groupName &&\r\n\t\t\t\t\tteaser.parentStage.groupName.trim() &&\r\n\t\t\t\t\tteaser.parentStage.groupName.trim().toLocaleLowerCase().indexOf(searchString) >= 0\r\n\t\t\t\t\t\t? teaser.parentStage.groupName\r\n\t\t\t\t\t\t: \"\";\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\tGetMatchingFields(\r\n\t\t\t\t\t\tsearchString,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tteaser,\r\n\t\t\t\t\t\tparentNameIfMatches,\r\n\t\t\t\t\t\tteaser.stage?.groupName ?? \"\",\r\n\t\t\t\t\t\tmatchingCategories,\r\n\t\t\t\t\t).length > 0\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tlocalTeasers = [...allTeasers];\r\n\t\t}\r\n\r\n\t\tif (localTeasers && selectedCategoryIdsNoParents.length > 0) {\r\n\t\t\tlocalTeasers = localTeasers.filter((teaser) =>\r\n\t\t\t\tselectedCategoryIdsNoParents.some((id) => teaser.categoryIds.includes(id)),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (canFilterSubTiers(stage)) {\r\n\t\t\tfilteredSubTier = getFilteredSubTier(stage, filteredStageId);\r\n\r\n\t\t\tlocalTeasers = localTeasers.filter(\r\n\t\t\t\t(teaser) =>\r\n\t\t\t\t\tteaser.stage.id === filteredSubTier?.id ||\r\n\t\t\t\t\t(teaser.parentStage && teaser.parentStage.id === filteredSubTier?.id) ||\r\n\t\t\t\t\t(filteredSubTier!.includeLiveAppsWhenFiltering && teaser.hasDownload),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn [localTeasers, filteredSubTier];\r\n\t}, [allTeasers, categories, filteredStageId, searchString, selectedCategoryIdsNoParents, stage]);\r\n\r\n\tconst exceedPagesize = filteredTeasers.length > pageSize;\r\n\r\n\tconst pagedAndSortedTeasers = useMemo(() => {\r\n\t\tlet localTeasers = [...filteredTeasers];\r\n\r\n\t\tlocalTeasers.sort((a, b) => a.name.localeCompare(b.name));\r\n\r\n\t\tswitch (sortOrder) {\r\n\t\t\tcase ShowroomSortOrder.Chronological:\r\n\t\t\t\tlocalTeasers.sort((a, b) => sortDate(b.listingDate, a.listingDate));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.ChronologicalReverse:\r\n\t\t\t\tlocalTeasers.sort((a, b) => sortDate(a.listingDate, b.listingDate));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.Name:\r\n\t\t\t\tlocalTeasers.sort((a, b) => a.name.localeCompare(b.name));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.NameReverse:\r\n\t\t\t\tlocalTeasers.sort((a, b) => b.name.localeCompare(a.name));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.VendorName:\r\n\t\t\t\tlocalTeasers.sort((a, b) => localeCompareIgnoreEmpty(a.orgName, b.orgName));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.VendorNameReverse:\r\n\t\t\t\tlocalTeasers.sort((a, b) => (b.orgName ?? \"\").localeCompare(a.orgName ?? \"\"));\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.CategoryName:\r\n\t\t\t\tlocalTeasers.sort((a, b) =>\r\n\t\t\t\t\tlocaleCompareIgnoreEmpty(a.primaryCategoryName, b.primaryCategoryName),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase ShowroomSortOrder.CategoryNameReverse:\r\n\t\t\t\tlocalTeasers.sort((a, b) =>\r\n\t\t\t\t\tlocaleCompareIgnoreEmpty(b.primaryCategoryName, a.primaryCategoryName),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn localTeasers.slice((page - 1) * pageSize, page * pageSize);\r\n\t}, [filteredTeasers, page, pageSize, sortOrder]);\r\n\r\n\tconst lastPage = filteredTeasers ? Math.max(1, Math.ceil(filteredTeasers.length / pageSize)) : 0;\r\n\r\n\tuseEffect(() => {\r\n\t\tsetPage(1);\r\n\t}, [searchString, sortOrder, filteredStageId, selectedCategoryString]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (searchBarVerticalPositionTarget) {\r\n\t\t\tif (searchBarVerticalPositionTarget.getBoundingClientRect().top <= 125) {\r\n\t\t\t\tsearchBarVerticalPositionTarget.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\twindow.scrollTo({ top: 0, behavior: \"smooth\" });\r\n\t\t}\r\n\t}, [page, searchBarVerticalPositionTarget]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<VStack spacing=\"30px\" justify=\"center\" marginBottom=\"20px\">\r\n\t\t\t\t{listingStyle === GalleryListingStyle.People ? (\r\n\t\t\t\t\t<TeaserPeopleSection\r\n\t\t\t\t\t\tteasers={pagedAndSortedTeasers || []}\r\n\t\t\t\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t\t\t\t\tisFlat={isFlat}\r\n\t\t\t\t\t/>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<TeaserCardsSection\r\n\t\t\t\t\t\tteasers={pagedAndSortedTeasers || []}\r\n\t\t\t\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t\t\t\t\tisFlat={isFlat}\r\n\t\t\t\t\t\tlistingStyle={listingStyle}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{exceedPagesize && (\r\n\t\t\t\t\t<PaginationControl\r\n\t\t\t\t\t\tcurrentPage={page}\r\n\t\t\t\t\t\tnumPages={lastPage}\r\n\t\t\t\t\t\thandleUpdatePage={(page: number) => {\r\n\t\t\t\t\t\t\tsetPage(page);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tcurrentPageSize={pageSize}\r\n\t\t\t\t\t></PaginationControl>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{allTeasers.length > 0 && pagedAndSortedTeasers.length === 0 && (\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\tfontSize=\"1.5rem\"\r\n\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tNo matching result found in{\" \"}\r\n\t\t\t\t\t\t{filteredSubTier !== null ? filteredSubTier.groupName : stage.groupName}. Adjust your\r\n\t\t\t\t\t\tsearch {selectedCategoryIdsNoParents.length > 0 ? \"and filters\" : \"\"} or{\" \"}\r\n\t\t\t\t\t\t<AOLink url={`${searchPageUrl}?q=${searchString}`} omitDevUrlPrefix>\r\n\t\t\t\t\t\t\tsearch across everything in {siteInfo.galleryTokens.galleryName}\r\n\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t)}\r\n\t\t\t</VStack>\r\n\t\t</>\r\n\t);\r\n});\r\n","import { Box, ButtonProps, Flex } from \"@chakra-ui/react\";\r\nimport { LinkButton } from \"ao/components/Core\";\r\nimport React from \"react\";\r\n\r\nexport enum NavDirection {\r\n\tPrevious = \"prev\",\r\n\tNext = \"next\",\r\n}\r\n\r\ninterface IStageNavigationButtonProps {\r\n\tnavDirection: NavDirection;\r\n\tprimaryText: string;\r\n\tnavUrl: string;\r\n\tbuttonProps?: ButtonProps;\r\n}\r\n\r\nconst StageNavigationButton: React.FC<IStageNavigationButtonProps> = (props: IStageNavigationButtonProps) => {\r\n\tconst directionalText = props.navDirection === NavDirection.Previous ? \"↠Previous\" : \"Up next →\";\r\n\tconst directionalTitle =\r\n\t\tprops.navDirection === NavDirection.Previous\r\n\t\t\t? \"Navigate back to \" + props.primaryText\r\n\t\t\t: \"Navigate forward to \" + props.primaryText;\r\n\r\n\treturn (\r\n\t\t<Box style={{ margin: \"0.25rem 0\", height: \"4.75rem\", width: \"100%\", position: \"relative\" }}>\r\n\t\t\t<LinkButton\r\n\t\t\t\theight={props.buttonProps?.height || \"4.75rem\"}\r\n\t\t\t\tborderRadius={props.buttonProps?.borderRadius || \"0.6rem\"}\r\n\t\t\t\twidth={props.buttonProps?.width || \"100%\"}\r\n\t\t\t\tcolor={props.buttonProps?.color || \"blue.300\"}\r\n\t\t\t\tbackgroundColor={props.buttonProps?.backgroundColor}\r\n\t\t\t\tborder={`1px solid ${props.buttonProps?.borderColor}`}\r\n\t\t\t\tpadding={props.buttonProps?.padding || \"0.75rem\"}\r\n\t\t\t\tposition={\"absolute\"}\r\n\t\t\t\turl={props.navUrl}\r\n\t\t\t\ttitle={directionalTitle}\r\n\t\t\t\t_hover={{\r\n\t\t\t\t\tfilter: \"saturate(2) brightness(97%)\",\r\n\t\t\t\t\tboxShadow: \"0px 2px 15px #00000029\",\r\n\t\t\t\t\ttextDecoration: \"none\",\r\n\t\t\t\t}}\r\n\t\t\t\t_active={{\r\n\t\t\t\t\tfilter: \"saturate(3) brightness(98%)\",\r\n\t\t\t\t\tboxShadow: \"0px 1px 15px #00000029\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Flex direction=\"column\" alignItems=\"flex-start\" width=\"100%\">\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tfontSize={\"1.125rem\"}\r\n\t\t\t\t\t\tfontWeight={\"normal\"}\r\n\t\t\t\t\t\tcolor={props.buttonProps?.color}\r\n\t\t\t\t\t\tmargin={\"0.25rem 0\"}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{directionalText}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tfontSize={\"1.5rem\"}\r\n\t\t\t\t\t\tfontWeight={\"normal\"}\r\n\t\t\t\t\t\tcolor={\"black\"}\r\n\t\t\t\t\t\ttextOverflow={\"ellipsis\"}\r\n\t\t\t\t\t\toverflow={\"hidden\"}\r\n\t\t\t\t\t\tmaxWidth={\"100%\"}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{props.primaryText}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Flex>\r\n\t\t\t</LinkButton>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default StageNavigationButton;\r\n","import { Box, ButtonProps, Flex, SimpleGrid } from \"@chakra-ui/react\";\r\nimport { useShowroomState } from \"ao/state/showroom\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport React, { useMemo } from \"react\";\r\nimport StageNavigationButton, { NavDirection } from \"./StageNavigationButton\";\r\n\r\ninterface IStageNavigationProps {\r\n\tcurrentId: number;\r\n\tbackgroundColor1: string;\r\n\tbackgroundColor2: string;\r\n\tcolor: string;\r\n}\r\n\r\nconst StageNavigation: React.FC<IStageNavigationProps> = (props: IStageNavigationProps) => {\r\n\tconst linearStageTrack = useShowroomState((selector) => selector.getState(), []).linearTrack;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst [nextUrl, nextName, prevUrl, prevName] = useMemo(() => {\r\n\t\tconst linearStageTrackIndex = linearStageTrack.findIndex(\r\n\t\t\t(stageOrTeaser) => stageOrTeaser.id === props.currentId,\r\n\t\t);\r\n\t\tif (linearStageTrackIndex === -1) {\r\n\t\t\treturn [undefined, undefined, undefined, undefined];\r\n\t\t}\r\n\r\n\t\tconst nextStage =\r\n\t\t\tlinearStageTrackIndex + 1 <= linearStageTrack.length - 1\r\n\t\t\t\t? linearStageTrack[linearStageTrackIndex + 1]\r\n\t\t\t\t: undefined;\r\n\t\tconst nextUrl = nextStage ? `${siteInfo.showroomRelativeUrl}stage?id=` + nextStage?.id : undefined;\r\n\t\tconst nextName = nextStage\r\n\t\t\t? nextStage.parentName\r\n\t\t\t\t? nextStage.parentName + \": \" + nextStage.name\r\n\t\t\t\t: nextStage.name\r\n\t\t\t: undefined;\r\n\r\n\t\tconst prevStage =\r\n\t\t\tlinearStageTrackIndex - 1 >= 0 ? linearStageTrack[linearStageTrackIndex - 1] : undefined;\r\n\t\tconst prevUrl = prevStage ? `${siteInfo.showroomRelativeUrl}stage?id=` + prevStage?.id : \"/\";\r\n\t\tconst prevName = prevStage\r\n\t\t\t? prevStage.parentName\r\n\t\t\t\t? prevStage.parentName + \": \" + prevStage.name\r\n\t\t\t\t: prevStage.name\r\n\t\t\t: \"Home\";\r\n\r\n\t\treturn [nextUrl, nextName, prevUrl, prevName];\r\n\t}, [linearStageTrack, props.currentId, siteInfo.showroomRelativeUrl]);\r\n\r\n\tconst buttonStyles: ButtonProps = {\r\n\t\tbackgroundColor: props.backgroundColor2,\r\n\t\tcolor: props.color,\r\n\t\tborderColor: props.backgroundColor1,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Flex justify=\"center\" width=\"100%\">\r\n\t\t\t\t<SimpleGrid columns={{ sm: 1, md: 2 }} width=\"100%\" spacing=\"10px\">\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t{prevName && prevUrl && (\r\n\t\t\t\t\t\t\t<StageNavigationButton\r\n\t\t\t\t\t\t\t\tnavDirection={NavDirection.Previous}\r\n\t\t\t\t\t\t\t\tprimaryText={prevName}\r\n\t\t\t\t\t\t\t\tnavUrl={prevUrl}\r\n\t\t\t\t\t\t\t\tbuttonProps={buttonStyles}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t{nextName && nextUrl && (\r\n\t\t\t\t\t\t\t<StageNavigationButton\r\n\t\t\t\t\t\t\t\tnavDirection={NavDirection.Next}\r\n\t\t\t\t\t\t\t\tprimaryText={nextName}\r\n\t\t\t\t\t\t\t\tnavUrl={nextUrl}\r\n\t\t\t\t\t\t\t\tbuttonProps={buttonStyles}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</SimpleGrid>\r\n\t\t\t</Flex>\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nexport default StageNavigation;\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file Showroom stage component\r\n * @module Epic.AppOrchard.Showroom.ShowroomStage\r\n */\r\n\r\nimport { AbsoluteCenter, Box, Center, Text } from \"@chakra-ui/react\";\r\nimport { showroomStageTextDefault } from \"ao/chakraTheme\";\r\nimport { useShowroomState } from \"ao/state/showroom\";\r\nimport { useShowroomThumbnailState } from \"ao/state/showroomThumbnails\";\r\nimport { ITopLevelComponentProps } from \"ao/types\";\r\nimport {\r\n\tGalleryListingStyle,\r\n\tICategory,\r\n\tIGalleryStageWithChildren,\r\n\tstageHasComingSoonCardStyle,\r\n\tTierQueryParamKeys,\r\n} from \"ao/types/showroom\";\r\nimport { getIntFromSearchParam } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport StageHeader from \"./frameworkComponents/GalleryStageComponents/HeaderStyles/StageHeader\";\r\nimport { StageCardGrid } from \"./frameworkComponents/GalleryStageComponents/StageStyles/StageCard\";\r\nimport { TeaserSection } from \"./frameworkComponents/GalleryStageComponents/TeaserSection\";\r\nimport { ShowroomContent } from \"./frameworkComponents/GeneralComponents/ShowroomContent\";\r\nimport { ShowroomContentHeader } from \"./frameworkComponents/GeneralComponents/ShowroomContentHeader\";\r\nimport { ShowroomErrorAlert } from \"./frameworkComponents/GeneralComponents/ShowroomErrorAlert\";\r\nimport StageNavigation from \"./frameworkComponents/GeneralComponents/StageNavigation/StageNavigation\";\r\nimport { TeaserFilteringControls } from \"./frameworkComponents/GeneralComponents/TeaserFilteringControls\";\r\nimport {\r\n\tcanFilterSubTiers,\r\n\tgetAllTeasersInTree,\r\n\tgetCategoryTreeForStage,\r\n\tgetFilteredSubTier,\r\n\tgetListingStyleForTree,\r\n\tgetStagePathFromList,\r\n\tgetTopLevelStage,\r\n} from \"./Helper\";\r\n\r\nconst ShowroomStage: FunctionComponent<ITopLevelComponentProps> = memo((props: ITopLevelComponentProps) => {\r\n\tconst { userSecurity } = props;\r\n\r\n\tconst { stageTree: fullStageTree, categoryTree: categories } = useShowroomState(\r\n\t\t(selectors) => selectors.getState(),\r\n\t\t[],\r\n\t);\r\n\tconst { thumbnailDictionary } = useShowroomThumbnailState((selectors) => selectors.getState(), []);\r\n\r\n\t/**\r\n\t * quick and dirty solution until we have time to do dev\r\n\t * 2 for prod\r\n\t * 38 for staging\r\n\t * 3 for test\r\n\t * ??? for dev (will vary per database)\r\n\t */\r\n\tconst Workshop_Tier_Id: number = 2;\r\n\r\n\t//#region load stage data\r\n\r\n\tconst [searchParams] = useSearchParams();\r\n\tconst stageId = getIntFromSearchParam(searchParams, TierQueryParamKeys.Id);\r\n\tconst filteredStageId = getIntFromSearchParam(searchParams, TierQueryParamKeys.ChildTierId);\r\n\tconst [stage, setStage] = useState<IGalleryStageWithChildren | null>();\r\n\tconst aboveSearchElement = useRef<HTMLDivElement>(null);\r\n\r\n\tconst isFlat = stage?.flattenTier;\r\n\tconst isBottomLevel = stage !== null && stage !== undefined && stage.childStages.length === 0;\r\n\r\n\tconst [prunedCategories, setPrunedCategories] = useState<ICategory[]>([]);\r\n\tconst allTeasers = useMemo(() => (stage ? getAllTeasersInTree(stage) : []), [stage]);\r\n\r\n\tconst [subTierTeaserCount, setSubTierTeaserCount] = useState<number>(0);\r\n\r\n\tconst displayTeasers = isFlat || isBottomLevel;\r\n\tconst showFiltering =\r\n\t\tstage && canFilterSubTiers(stage) ? subTierTeaserCount > 4 : allTeasers.length > 4 && displayTeasers;\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.scrollTo(0, 0);\r\n\r\n\t\tconst stagePath = getStagePathFromList(stageId, fullStageTree).reverse();\r\n\r\n\t\t//if any higher level stage is flat, accessing substage is disabled\r\n\t\tif (stagePath.length > 0) {\r\n\t\t\tconst thisStage = stagePath[stagePath.length - 1];\r\n\r\n\t\t\tif (\r\n\t\t\t\tstagePath.some((x) => x.flattenTier && x.id !== stageId) ||\r\n\t\t\t\tstageHasComingSoonCardStyle(thisStage)\r\n\t\t\t) {\r\n\t\t\t\tsetStage(null);\r\n\t\t\t} else {\r\n\t\t\t\tsetStage(thisStage);\r\n\r\n\t\t\t\tif (canFilterSubTiers(thisStage)) {\r\n\t\t\t\t\tlet filteredSubTier = getFilteredSubTier(thisStage, filteredStageId);\r\n\r\n\t\t\t\t\tsetSubTierTeaserCount(getAllTeasersInTree(filteredSubTier).length);\r\n\t\t\t\t\tsetPrunedCategories(getCategoryTreeForStage(filteredSubTier, categories));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetPrunedCategories(getCategoryTreeForStage(thisStage, categories));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetStage(null);\r\n\t\t}\r\n\t}, [categories, filteredStageId, fullStageTree, stageId]);\r\n\r\n\tconst teaserSectionListingStyle = useMemo(() => {\r\n\t\t// We only need to calculate the teaser section listing style if:\r\n\t\t// 1) We have a stage, and\r\n\t\t// 2) We're displaying teasers\r\n\t\tif (stage && displayTeasers) {\r\n\t\t\treturn getListingStyleForTree(stage);\r\n\t\t}\r\n\t\treturn GalleryListingStyle.Undefined;\r\n\t}, [displayTeasers, stage]);\r\n\r\n\t// We only adjust the swoop downwards if:\r\n\t// 1) We have a stage, and\r\n\t// 2a) We're not displaying teasers\r\n\t// 2b) The teaser section is displaying partners\r\n\t//\t 2c) There is no details text\r\n\tconst isAdjustSwoop =\r\n\t\t!!stage &&\r\n\t\t(!displayTeasers || teaserSectionListingStyle === GalleryListingStyle.Partner) &&\r\n\t\t!stage.details;\r\n\tconst topStage = getTopLevelStage(stage?.id ?? -1, fullStageTree);\r\n\tconst textColor = topStage?.textColor || stage?.textColor || showroomStageTextDefault;\r\n\tconst backgroundColor1 = topStage?.backgroundColor || stage?.backgroundColor || showroomStageTextDefault;\r\n\tconst backgroundColor2 =\r\n\t\ttopStage?.backgroundColor2 || stage?.backgroundColor2 || showroomStageTextDefault;\r\n\r\n\t//#endregion\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{stage && (\r\n\t\t\t\t<ShowroomContentHeader\r\n\t\t\t\t\tbackgroundColor1={backgroundColor1}\r\n\t\t\t\t\tbackgroundColor2={backgroundColor2}\r\n\t\t\t\t\tisAdjustSwoop={isAdjustSwoop}\r\n\t\t\t\t>\r\n\t\t\t\t\t<StageHeader stage={stage} userSecurity={userSecurity} headerSubtextColor={textColor} />\r\n\t\t\t\t</ShowroomContentHeader>\r\n\t\t\t)}\r\n\t\t\t<ShowroomContent isAdjustSwoop={isAdjustSwoop} key={stageId}>\r\n\t\t\t\t{stage ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Box key={stageId} pb=\"30px\">\r\n\t\t\t\t\t\t\t{stage.details && (\r\n\t\t\t\t\t\t\t\t<Center pb=\"2px\" w=\"100%\" textAlign=\"left\">\r\n\t\t\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\t\t\twidth=\"100%\"\r\n\t\t\t\t\t\t\t\t\t\tfontSize=\"18px\"\r\n\t\t\t\t\t\t\t\t\t\tmaxW=\"780px\"\r\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\r\n\t\t\t\t\t\t\t\t\t\t\t__html: stage.details,\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Center>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t<Box w=\"100%\" h=\"0\" ref={aboveSearchElement}></Box>\r\n\t\t\t\t\t\t\t{showFiltering && (\r\n\t\t\t\t\t\t\t\t<TeaserFilteringControls stage={stage} categories={prunedCategories} />\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t{displayTeasers && allTeasers.length > 0 ? (\r\n\t\t\t\t\t\t\t\t<TeaserSection\r\n\t\t\t\t\t\t\t\t\tstage={stage}\r\n\t\t\t\t\t\t\t\t\tthumbnailDictionary={thumbnailDictionary}\r\n\t\t\t\t\t\t\t\t\tsearchBarVerticalPositionTarget={aboveSearchElement.current}\r\n\t\t\t\t\t\t\t\t\tcategories={prunedCategories}\r\n\t\t\t\t\t\t\t\t\tlistingStyle={teaserSectionListingStyle}\r\n\t\t\t\t\t\t\t\t\tallTeasers={allTeasers}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : stage.childStages.length > 0 ? (\r\n\t\t\t\t\t\t\t\t<StageCardGrid\r\n\t\t\t\t\t\t\t\t\tstages={stage.childStages}\r\n\t\t\t\t\t\t\t\t\tstageTree={fullStageTree}\r\n\t\t\t\t\t\t\t\t\theaderColor={textColor}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<></>\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t{filteredStageId === Workshop_Tier_Id ? (\r\n\t\t\t\t\t\t\t\t<Box textAlign=\"center\" fontWeight=\"300\" pt=\"30px\">\r\n\t\t\t\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\t\t\t\tThe developers of the products listed in Showroom pay Epic for\r\n\t\t\t\t\t\t\t\t\t\tservices and support.\r\n\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t<p>For some vendors in Workshop, this may include warrants.</p>\r\n\t\t\t\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\t\t\t\tEpic does not endorse, certify, or validate apps, developers, or their\r\n\t\t\t\t\t\t\t\t\t\tsoftware.\r\n\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\tstage.disclaimer && (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\t\t\t\tfontWeight=\"300\"\r\n\t\t\t\t\t\t\t\t\t\tpt=\"30px\"\r\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: stage.disclaimer }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<StageNavigation\r\n\t\t\t\t\t\t\tcurrentId={stage.id}\r\n\t\t\t\t\t\t\tbackgroundColor1={backgroundColor1}\r\n\t\t\t\t\t\t\tbackgroundColor2={backgroundColor2}\r\n\t\t\t\t\t\t\tcolor={textColor}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<AbsoluteCenter>\r\n\t\t\t\t\t\t{stage === null && stageId > -1 && (\r\n\t\t\t\t\t\t\t<ShowroomErrorAlert errorMessage={\"This Showroom tier could not be loaded.\"} />\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</AbsoluteCenter>\r\n\t\t\t\t)}\r\n\t\t\t</ShowroomContent>\r\n\t\t</>\r\n\t);\r\n});\r\n\r\nexport default ShowroomStage;\r\n","/**\r\n * @copyright Copyright 2023-2024 Epic Systems Corporation\r\n * @file Generic component for an IGalleryStageWithChildren\r\n * @module Epic.AppOrchard.Showroom.StageCard\r\n */\r\n\r\nimport { Box, Center, Flex, Heading, Image, Text, Wrap, WrapItem } from \"@chakra-ui/react\";\r\nimport { showroomGray, showroomPrimary } from \"ao/chakraTheme\";\r\nimport { AOLink } from \"ao/components/Core\";\r\nimport { getTopLevelStage } from \"ao/components/Showroom/Helper\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { GalleryCardStyle, IGalleryStageWithChildren, stageHasComingSoonCardStyle } from \"ao/types/showroom\";\r\nimport { getBaseUrl } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useState } from \"react\";\r\n\r\nconst STAGE_CARD_PADDING_X = \"10px\";\r\nconst STAGE_CARD_PADDING_TOP0 = \"0px\";\r\nconst STAGE_CARD_PADDING_TOP10 = \"10px\";\r\nconst STAGE_CARD_PADDING_TOP20 = \"20px\";\r\nconst STAGE_CARD_PADDING_BOTTOM = \"10px\";\r\nconst STAGE_CARD_INTRA_SECTION_PADDING = \"15px\";\r\n\r\ninterface IProps {\r\n\tstage: IGalleryStageWithChildren;\r\n\tstageTree: IGalleryStageWithChildren[];\r\n\tisNarrowCard?: boolean;\r\n\thideHeaderSubtext?: boolean;\r\n}\r\n\r\nexport const StageCard: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { stage, stageTree, isNarrowCard, hideHeaderSubtext } = props;\r\n\r\n\tconst [hover, setHover] = useState<boolean>();\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst topLevelParent = getTopLevelStage(stage.id, stageTree);\r\n\r\n\tconst isDisplayIcon =\r\n\t\t!!stage.iconPath &&\r\n\t\t[\r\n\t\t\tGalleryCardStyle.IconCard,\r\n\t\t\tGalleryCardStyle.IconCardSummaryOnly,\r\n\t\t\tGalleryCardStyle.IconCardNoFields,\r\n\t\t\tGalleryCardStyle.ComingSoonCardIconOnly,\r\n\t\t].includes(stage.cardStyle);\r\n\tconst isDisplayTitle =\r\n\t\t!!stage.groupName &&\r\n\t\t[GalleryCardStyle.IconCard, GalleryCardStyle.ComingSoonCardTitleOnly].includes(stage.cardStyle);\r\n\tconst isDisplayDescription =\r\n\t\t!!stage.description &&\r\n\t\t[\r\n\t\t\tGalleryCardStyle.IconCard,\r\n\t\t\tGalleryCardStyle.IconCardSummaryOnly,\r\n\t\t\tGalleryCardStyle.ComingSoonCardIconOnly,\r\n\t\t\tGalleryCardStyle.ComingSoonCardTitleOnly,\r\n\t\t].includes(stage.cardStyle);\r\n\tconst isDisplayHeaderSubtext = !!stage.headerSubtext && (isDisplayIcon || isDisplayTitle);\r\n\tconst subheaderColorToUse = stage.textColor || showroomPrimary;\r\n\tconst isComingSoonCard = stageHasComingSoonCardStyle(stage);\r\n\r\n\tconst imageDivHeight =\r\n\t\tisComingSoonCard || (!isDisplayTitle && !isDisplayDescription)\r\n\t\t\t? \"65px\"\r\n\t\t\t: stage.isTopLevel\r\n\t\t\t? \"185px\"\r\n\t\t\t: \"120px\";\r\n\tconst imageMaxWidth =\r\n\t\tisComingSoonCard || (!isDisplayTitle && !isDisplayDescription)\r\n\t\t\t? \"220px\"\r\n\t\t\t: stage.isTopLevel\r\n\t\t\t? \"270px\"\r\n\t\t\t: \"\";\r\n\tconst backgroundColor1 = stage.backgroundColor || \"white\";\r\n\tconst backgroundColor2 = stage.backgroundColor2 || \"white\";\r\n\tconst textColor = stage.textColor || showroomPrimary;\r\n\r\n\tconst borderColor = isComingSoonCard\r\n\t\t? topLevelParent && topLevelParent.backgroundColor\r\n\t\t\t? topLevelParent.backgroundColor\r\n\t\t\t: stage.backgroundColor || showroomGray\r\n\t\t: stage.backgroundColor || { showroomGray };\r\n\tconst borderWidth = isComingSoonCard ? \"2px\" : \"1px\";\r\n\r\n\tconst isWithPatientAtHeart = stage.groupName === \"With the Patient at the Heart\";\r\n\r\n\t// Make the card a link ONLY if it's NOT a Coming Soon card\r\n\tconst conditionalBoxProps: any = !isComingSoonCard\r\n\t\t? {\r\n\t\t\t\tas: AOLink,\r\n\t\t\t\turl: `${siteInfo.showroomRelativeUrl}stage?id=${stage.id}`,\r\n\t\t\t\t_hover: {\r\n\t\t\t\t\ttextDecoration: \"none\",\r\n\t\t\t\t\tboxShadow: \"0px 2px 15px #00000029\",\r\n\t\t\t\t},\r\n\t\t\t\tonMouseOver: () => setHover(true),\r\n\t\t\t\tonMouseOut: () => setHover(false),\r\n\t\t }\r\n\t\t: {};\r\n\tconst isDisplayArrow = !isComingSoonCard;\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\t{...conditionalBoxProps}\r\n\t\t\tpx={STAGE_CARD_PADDING_X}\r\n\t\t\tpt={\r\n\t\t\t\tstage.isTopLevel\r\n\t\t\t\t\t? STAGE_CARD_PADDING_TOP10\r\n\t\t\t\t\t: isComingSoonCard || (isDisplayIcon && stage.iconPath?.indexOf(\".svg\") > 0)\r\n\t\t\t\t\t? STAGE_CARD_PADDING_TOP20\r\n\t\t\t\t\t: STAGE_CARD_PADDING_TOP0\r\n\t\t\t}\r\n\t\t\tpb={STAGE_CARD_PADDING_BOTTOM}\r\n\t\t\tboxShadow=\"0px 2px 4px #00000029\"\r\n\t\t\tborder={`${borderWidth} solid ${borderColor}`}\r\n\t\t\tbackground={`transparent linear-gradient(153deg, ${backgroundColor1} 0%, ${backgroundColor2} 100%)`}\r\n\t\t\tbackgroundSize=\"cover\"\r\n\t\t\tborderRadius=\"10px\"\r\n\t\t\tw={\"100%\"}\r\n\t\t\tmaxWidth={\r\n\t\t\t\tisNarrowCard\r\n\t\t\t\t\t? \"270px\" /* We want 4 cards across when we have 1170px to work with (incl 30px padding between each) */\r\n\t\t\t\t\t: \"360px\" /* We want 3 cards across when we have 1170px to work with (incl 30px padding between each) */\r\n\t\t\t}\r\n\t\t\th=\"100%\" /* Required for Firefox */\r\n\t\t\tminHeight={stageHasComingSoonCardStyle(stage) ? undefined : isNarrowCard ? \"200px\" : \"170px\"}\r\n\t\t>\r\n\t\t\t<Flex flexDirection=\"column\" height=\"100%\" justifyContent=\"space-between\" px=\"14px\">\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t{isDisplayIcon && (\r\n\t\t\t\t\t\t<Center\r\n\t\t\t\t\t\t\theight={imageDivHeight}\r\n\t\t\t\t\t\t\tmb={\r\n\t\t\t\t\t\t\t\t!stage.isTopLevel &&\r\n\t\t\t\t\t\t\t\t!isComingSoonCard &&\r\n\t\t\t\t\t\t\t\tisDisplayIcon &&\r\n\t\t\t\t\t\t\t\tstage.iconPath?.indexOf(\".png\") > 0\r\n\t\t\t\t\t\t\t\t\t? \"-20px\"\r\n\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\t\tsrc={`${getBaseUrl()}Content/images/${stage.iconPath}`}\r\n\t\t\t\t\t\t\t\tfallback={<></>}\r\n\t\t\t\t\t\t\t\tmaxW={imageMaxWidth}\r\n\t\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\t\tobjectFit=\"contain\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Center>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{isDisplayTitle && (\r\n\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\tpt={\r\n\t\t\t\t\t\t\t\tisDisplayIcon\r\n\t\t\t\t\t\t\t\t\t? isNarrowCard\r\n\t\t\t\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t\t\t\t: STAGE_CARD_INTRA_SECTION_PADDING\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\t\tfontSize=\"1.6rem\"\r\n\t\t\t\t\t\t\tfontWeight=\"500\"\r\n\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\tcolor={textColor}\r\n\t\t\t\t\t\t\ttransform={hover ? \"scale(1.025)\" : \"\"}\r\n\t\t\t\t\t\t\ttransitionDuration=\"200ms\"\r\n\t\t\t\t\t\t\ttextDecoration={hover ? \"underline\" : \"unset\"}\r\n\t\t\t\t\t\t\tw=\"100%\"\r\n\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\toverflowWrap: \"anywhere\" /* Ensure long strings don't overflow card */,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{isWithPatientAtHeart ? (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\tWith the Patient\r\n\t\t\t\t\t\t\t\t\t<br />\r\n\t\t\t\t\t\t\t\t\tat the Heart\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\tstage.groupName\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{isDisplayHeaderSubtext && !hideHeaderSubtext && (\r\n\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\t\tcolor={subheaderColorToUse}\r\n\t\t\t\t\t\t\tfontSize=\"1.4rem\" /* ~18px */\r\n\t\t\t\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\t\tposition=\"relative\"\r\n\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\tpb=\"10px\"\r\n\t\t\t\t\t\t\tmt={!isDisplayTitle ? \"-10px\" : \"\"}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{stage.headerSubtext}\r\n\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{isDisplayDescription && (\r\n\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\tfontSize=\"1.25rem\"\r\n\t\t\t\t\t\t\tfontWeight=\"300\"\r\n\t\t\t\t\t\t\tcolor=\"gray.900\"\r\n\t\t\t\t\t\t\tw=\"100%\"\r\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: stage.description }}\r\n\t\t\t\t\t\t\tnoOfLines={4} //isNarrowCard ? 4 : 3}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\toverflowWrap: \"anywhere\" /* Ensure long strings don't overflow card */,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{isDisplayArrow && (\r\n\t\t\t\t\t<Flex pt={stage.isTopLevel ? \"15px\" : \"10px\"} justify=\"right\" w=\"100%\">\r\n\t\t\t\t\t\t<StageCardArrow color={textColor} hover={hover} />\r\n\t\t\t\t\t</Flex>\r\n\t\t\t\t)}\r\n\t\t\t</Flex>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\ninterface IStageCardGridProps {\r\n\tstages: IGalleryStageWithChildren[] | undefined;\r\n\tstageTree: IGalleryStageWithChildren[];\r\n\theaderColor?: string | undefined;\r\n\tisUseNarrowCards?: boolean;\r\n\thideHeaderSubtext?: boolean;\r\n}\r\n\r\nexport const StageCardGrid: FunctionComponent<IStageCardGridProps> = memo((props) => {\r\n\tconst { stages, stageTree, headerColor, isUseNarrowCards, hideHeaderSubtext } = props;\r\n\r\n\tif (!stages?.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Split the stages out to \"Coming Soon\" and standard\r\n\tconst primaryStages: IGalleryStageWithChildren[] = [];\r\n\tconst comingSoonStages: IGalleryStageWithChildren[] = [];\r\n\tfor (const stage of stages) {\r\n\t\tif (stageHasComingSoonCardStyle(stage)) {\r\n\t\t\tcomingSoonStages.push(stage);\r\n\t\t} else {\r\n\t\t\tprimaryStages.push(stage);\r\n\t\t}\r\n\t}\r\n\r\n\tconst sharedWrapProps = {\r\n\t\tjustify: \"center\",\r\n\t\tspacing: { base: \"60px\", sm: \"30px\", md: \"30px\" },\r\n\t\tpaddingXL: { base: \"10px\", sm: \"10px\", md: 0 },\r\n\t};\r\n\r\n\tconst labelColor = headerColor || showroomPrimary;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{!!primaryStages.length && (\r\n\t\t\t\t<Wrap {...sharedWrapProps}>\r\n\t\t\t\t\t{primaryStages.map((stage) => (\r\n\t\t\t\t\t\t<WrapItem>\r\n\t\t\t\t\t\t\t<StageCard\r\n\t\t\t\t\t\t\t\tstage={stage}\r\n\t\t\t\t\t\t\t\tstageTree={stageTree}\r\n\t\t\t\t\t\t\t\tkey={stage.id}\r\n\t\t\t\t\t\t\t\tisNarrowCard={isUseNarrowCards}\r\n\t\t\t\t\t\t\t\thideHeaderSubtext={hideHeaderSubtext}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</WrapItem>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Wrap>\r\n\t\t\t)}\r\n\t\t\t{!!comingSoonStages.length && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\tmt={primaryStages.length ? \"60px\" : undefined}\r\n\t\t\t\t\t\tmb=\"20px\"\r\n\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\tfontSize=\"2rem\"\r\n\t\t\t\t\t\tfontWeight=\"500\"\r\n\t\t\t\t\t\tfontFamily=\"Jost\"\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tcolor={labelColor}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tComing Soon\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t\t<Wrap {...sharedWrapProps}>\r\n\t\t\t\t\t\t{comingSoonStages.map((stage) => (\r\n\t\t\t\t\t\t\t<WrapItem>\r\n\t\t\t\t\t\t\t\t<StageCard\r\n\t\t\t\t\t\t\t\t\tstage={stage}\r\n\t\t\t\t\t\t\t\t\tstageTree={stageTree}\r\n\t\t\t\t\t\t\t\t\tkey={stage.id}\r\n\t\t\t\t\t\t\t\t\tisNarrowCard={isUseNarrowCards}\r\n\t\t\t\t\t\t\t\t\thideHeaderSubtext={hideHeaderSubtext}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</WrapItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Wrap>\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n\r\ninterface IStageCardArrowProps {\r\n\tcolor: string;\r\n\thover: boolean | undefined;\r\n}\r\n\r\nconst StageCardArrow: FunctionComponent<IStageCardArrowProps> = memo((props) => {\r\n\tconst { color, hover } = props;\r\n\r\n\tconst baseWidth = 33.303;\r\n\tconst baseHeight = 18.782;\r\n\tconst hoveredScalar = 1.05; // Subtle expansion when hovered\r\n\tconst scaledWidth = hoveredScalar * baseWidth;\r\n\tconst scaledHeight = hoveredScalar * baseHeight;\r\n\tconst width = hover ? scaledWidth : baseWidth;\r\n\tconst height = hover ? scaledHeight : baseHeight;\r\n\r\n\treturn (\r\n\t\t<Box w={scaledWidth} h={scaledHeight}>\r\n\t\t\t<Flex justifyContent=\"center\" alignItems=\"center\" height=\"100%\">\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={width}\r\n\t\t\t\t\theight={height}\r\n\t\t\t\t\tviewBox={`0 0 ${baseWidth} ${baseHeight}`}\r\n\t\t\t\t>\r\n\t\t\t\t\t<g transform=\"translate(3.061 0.535)\">\r\n\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\tclassName=\"arrow\"\r\n\t\t\t\t\t\t\td=\"M31.52.75H0V-.75H31.52Z\"\r\n\t\t\t\t\t\t\ttransform=\"translate(-3.061 8.854)\"\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\tfill: color,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\tclassName=\"arrow\"\r\n\t\t\t\t\t\t\td=\"M-4040.581,10441.323l-1.051-1.07,8.466-8.321-8.466-8.32,1.051-1.07,9.555,9.391Z\"\r\n\t\t\t\t\t\t\ttransform=\"translate(4061.267 -10423.076)\"\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\tfill: color,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</g>\r\n\t\t\t\t</svg>\r\n\t\t\t</Flex>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nexport default StageCard;\r\n","/**\r\n * @copyright Copyright 2024-2025 Epic Systems Corporation\r\n * @file app thumbnail or thumbnail placeholder\r\n * @module Epic.AppOrchard.AppListing.ComingSoonMarker\r\n */\r\n\r\nimport { Box, BoxProps } from \"@chakra-ui/react\";\r\nimport React from \"react\";\r\n\r\nexport const ComingSoonMarker: React.FC<BoxProps> = (props: BoxProps) => {\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tpos={\"absolute\"}\r\n\t\t\ttop={props?.top ?? \"0\"}\r\n\t\t\tright={props?.right ?? \"0\"}\r\n\t\t\twidth={props?.w ?? props?.width ?? \"84px\"}\r\n\t\t\theight={props?.h ?? props?.height ?? \"84px\"}\r\n\t\t\tmaxH={props?.maxHeight ?? props?.maxH ?? \"100%\"}\r\n\t\t\tmaxW={props?.maxWidth ?? props?.maxW ?? \"84px\"}\r\n\t\t\tbackgroundImage={props.backgroundImage ?? \"none\"}\r\n\t\t\tbackgroundSize={\"contain\"}\r\n\t\t\tbackgroundRepeat={\"no-repeat\"}\r\n\t\t\tbackgroundPosition={props?.backgroundPosition ?? \"top right\"}\r\n\t\t\t{...props}\r\n\t\t></Box>\r\n\t);\r\n};\r\n","/**\r\n * @copyright Copyright 2023 Epic Systems Corporation\r\n * @file Content section for Showroom pages. Adds the curve\r\n * @module Epic.AppOrchard.Showroom.ShowroomContent\r\n */\r\n\r\nimport { Box, BoxProps, Grid, GridItem, useBreakpointValue } from \"@chakra-ui/react\";\r\nimport { ContentWidth, GridGap } from \"ao/components/Showroom/Helper\";\r\nimport React, { FunctionComponent, memo, ReactNode, useMemo } from \"react\";\r\n\r\ninterface IProps {\r\n\tchildren: ReactNode;\r\n\tbackground?: string;\r\n\tcolSpan?: Record<string, number> | number[];\r\n\tmaxWidthOverride?: string;\r\n\tisAdjustSwoop?: boolean | undefined; // Whether to push the background swoop down like on the Home page\r\n}\r\n\r\ntype Props = IProps & BoxProps;\r\n\r\nconst curveProps: BoxProps = {\r\n\tborderTopLeftRadius: \"50% 150px\",\r\n\tborderTopRightRadius: \"50% 150px\",\r\n\r\n\tposition: \"relative\",\r\n\twidth: \"150%\",\r\n\theight: \"100%\",\r\n\tleft: \"-25%\",\r\n\tboxShadow: \"0px 0px 10px #00000029;\",\r\n\tpaddingTop: \"50px\",\r\n\tpaddingX: \"25%\",\r\n\tflexGrow: \"1\",\r\n};\r\n\r\nexport const ShowroomContent: FunctionComponent<Props> = memo((props) => {\r\n\tconst { children, background, colSpan, maxWidthOverride, isAdjustSwoop } = props;\r\n\tconst contentColSpan = useBreakpointValue(colSpan || [12]) || 12;\r\n\tconst contentColStart = useMemo(() => {\r\n\t\tconst spanRoundedDownToEven = Math.floor(contentColSpan / 2) * 2;\r\n\t\treturn (14 - spanRoundedDownToEven) / 2;\r\n\t}, [contentColSpan]);\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\t{...curveProps}\r\n\t\t\tdisplay=\"flex\"\r\n\t\t\tflexDirection=\"column\"\r\n\t\t\tbackground={\r\n\t\t\t\tbackground ??\r\n\t\t\t\t\"transparent linear-gradient(169deg, #FFFFFF 0%, #F3F3FF 100%) 0% 0% no-repeat padding-box\"\r\n\t\t\t}\r\n\t\t>\r\n\t\t\t<Box minH=\"100px\" mt=\"-50px\" pb=\"48px\" pt=\"50px\" flexGrow=\"1\">\r\n\t\t\t\t<Box maxW={maxWidthOverride ?? ContentWidth} m=\"0 auto\">\r\n\t\t\t\t\t<Grid\r\n\t\t\t\t\t\ttemplateColumns=\"repeat(12, 1fr)\"\r\n\t\t\t\t\t\tgap={GridGap}\r\n\t\t\t\t\t\tpaddingX={{ base: \"15px\", md: \"0px\" }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<GridItem colSpan={contentColSpan} colStart={contentColStart}>\r\n\t\t\t\t\t\t\t<Box mt={isAdjustSwoop ? \"-150px\" : undefined}>{children}</Box>\r\n\t\t\t\t\t\t</GridItem>\r\n\t\t\t\t\t</Grid>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023 Epic Systems Corporation\r\n * @file Content header for most Showroom pages\r\n * @module Epic.AppOrchard.Showroom.ShowroomContentHeader\r\n */\r\n\r\nimport { Box, BoxProps, Grid, GridItem, useBreakpointValue } from \"@chakra-ui/react\";\r\nimport { ShowroomHomeHeader } from \"ao/components/Frame/ShowroomHeader\";\r\nimport { IGalleryStageWithChildren } from \"ao/types/showroom\";\r\nimport { getBaseUrl } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, ReactNode, useMemo } from \"react\";\r\nimport { ContentWidth, GridGap } from \"../../Helper\";\r\n\r\ninterface IProps {\r\n\tchildren: ReactNode;\r\n\tbackground?: string;\r\n\tbackgroundSize?: string;\r\n\tbackgroundColor1: string;\r\n\tbackgroundColor2: string;\r\n\tcolSpan?: Record<string, number> | number[];\r\n\tisAdjustSwoop?: boolean | undefined; // Whether to push the background swoop down like on the Home page\r\n\tisHomePage?: boolean;\r\n\tstageTree?: IGalleryStageWithChildren[];\r\n\ttitle?: string;\r\n}\r\n\r\ntype Props = IProps & BoxProps;\r\n\r\nexport const ShowroomContentHeader: FunctionComponent<Props> = memo((props) => {\r\n\tconst {\r\n\t\tchildren,\r\n\t\tbackground,\r\n\t\tbackgroundSize,\r\n\t\tbackgroundColor1,\r\n\t\tbackgroundColor2,\r\n\t\tcolSpan,\r\n\t\tisAdjustSwoop,\r\n\t\tisHomePage,\r\n\t\tstageTree,\r\n\t\ttitle,\r\n\t} = props;\r\n\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\tconst isMobile = useBreakpointValue({ base: true, lg: false }) || false;\r\n\tconst contentColSpan = useBreakpointValue(colSpan || [12]) || 12;\r\n\tconst contentColStart = useMemo(() => {\r\n\t\tconst spanRoundedDownToEven = Math.floor(contentColSpan / 2) * 2;\r\n\t\treturn (14 - spanRoundedDownToEven) / 2;\r\n\t}, [contentColSpan]);\r\n\r\n\tconst boxProps = isHomePage\r\n\t\t? {\r\n\t\t\t\tpaddingTop: isMobile ? \"0px\" : \"75px\",\r\n\t\t\t\tpaddingBottom: isAdjustSwoop ? \"150px\" : \"50px\",\r\n\t\t\t\tmarginTop: \"-95px\",\r\n\t\t }\r\n\t\t: {\r\n\t\t\t\tpaddingTop: !isMobile ? \"30px\" : \"50px\",\r\n\t\t\t\tpaddingBottom: isAdjustSwoop ? \"150px\" : \"50px\",\r\n\t\t\t\tmarginTop: isMobile ? \"-40px\" : \"40px\",\r\n\t\t };\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tmb={\"-50px\"}\r\n\t\t\t{...boxProps}\r\n\t\t\tbackgroundSize={backgroundSize || \"cover\"}\r\n\t\t\tbackground={\r\n\t\t\t\tbackground ||\r\n\t\t\t\t`url('${baseUrl}Content/images/Showroom/Bubbles.png') -700px top, url('${baseUrl}Content/images/Showroom/Bubbles.png') right -700px bottom, transparent linear-gradient(90deg, ${backgroundColor1} 0%, ${backgroundColor2} 20%, ${backgroundColor2} 80%, ${backgroundColor1} 100%)`\r\n\t\t\t}\r\n\t\t>\r\n\t\t\t{isHomePage && stageTree && <ShowroomHomeHeader stageTree={stageTree} title={title} />}\r\n\t\t\t<Box maxW={ContentWidth} m=\"0 auto\">\r\n\t\t\t\t<Grid templateColumns=\"repeat(12, 1fr)\" gap={GridGap} paddingX={{ base: \"15px\", md: \"0px\" }}>\r\n\t\t\t\t\t<GridItem colSpan={contentColSpan} colStart={contentColStart}>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</GridItem>\r\n\t\t\t\t</Grid>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file Error alert page for Showroom\r\n * @module Epic.AppOrchard.Showroom.ShowroomErrorAlert\r\n */\r\n\r\nimport { Alert, AlertDescription, AlertIcon, AlertTitle } from \"@chakra-ui/react\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\n\r\ninterface IProps {\r\n\terrorMessage: string;\r\n\ttitle?: string;\r\n}\r\n\r\nexport const ShowroomErrorAlert: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { errorMessage, title } = props;\r\n\r\n\treturn (\r\n\t\t<Alert\r\n\t\t\tstatus=\"error\"\r\n\t\t\tvariant=\"subtle\"\r\n\t\t\tflexDirection=\"column\"\r\n\t\t\talignItems=\"center\"\r\n\t\t\tjustifyContent=\"center\"\r\n\t\t\ttextAlign=\"center\"\r\n\t\t\tbackground=\"none\"\r\n\t\t>\r\n\t\t\t<AlertIcon boxSize=\"50px\" mr={0} />\r\n\t\t\t<AlertTitle mt={4} mb={1} fontSize=\"2xl\">\r\n\t\t\t\t{title ?? \"Whoops\"}\r\n\t\t\t</AlertTitle>\r\n\t\t\t<AlertDescription maxWidth=\"none\" fontSize=\"xl\">\r\n\t\t\t\t{errorMessage}\r\n\t\t\t</AlertDescription>\r\n\t\t</Alert>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file app thumbnail or thumbnail placeholder\r\n * @module Epic.AppOrchard.AppListing.Thumbnail\r\n */\r\n\r\nimport { ExternalLinkIcon } from \"@chakra-ui/icons\";\r\nimport { Box, BoxProps, Image, ImageProps } from \"@chakra-ui/react\";\r\nimport { config } from \"ao/appConfig\";\r\nimport { getBaseUrl, isNullOrEmpty } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useMemo } from \"react\";\r\n\r\ninterface IProps {\r\n\tsrc?: string;\r\n\tlistingId: number;\r\n\tshowBackground?: boolean;\r\n}\r\n\r\ntype Props = IProps & ImageProps;\r\n\r\nexport const Thumbnail: FunctionComponent<Props> = memo((props) => {\r\n\tconst { src, listingId, showBackground, ...rest } = props;\r\n\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\tconst thumbnailSrc = !isNullOrEmpty(src)\r\n\t\t? `data:image/png;base64,${src}`\r\n\t\t: `${baseUrl}Content/images/app_placeholder.png`;\r\n\tconst thumbnailColor = !isNullOrEmpty(src)\r\n\t\t? \"none\"\r\n\t\t: `appThumbnailBackground.${listingId % config.NumAppThumbnailColors}`;\r\n\r\n\treturn (\r\n\t\t<Image\r\n\t\t\tsrc={thumbnailSrc}\r\n\t\t\tbackgroundColor={showBackground ? rest.backgroundColor || thumbnailColor : \"none\"}\r\n\t\t\t{...rest}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\ninterface IThumbnailStageWatermarkProps extends BoxProps {\r\n\ticonPath: string;\r\n}\r\n\r\nexport const ThumbnailStageWatermark: React.FC<IThumbnailStageWatermarkProps> = (\r\n\tprops: IThumbnailStageWatermarkProps,\r\n) => {\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\treturn (\r\n\t\t<ThumbnailWatermark {...props}>\r\n\t\t\t<Image\r\n\t\t\t\tsrc={`${baseUrl}Content/images/${props.iconPath}`}\r\n\t\t\t\tfallback={<></>}\r\n\t\t\t\tmaxH=\"26px\"\r\n\t\t\t\tmaxW=\"26px\"\r\n\t\t\t\th=\"26px\"\r\n\t\t\t\tw=\"26px\"\r\n\t\t\t\tp=\"3px\"\r\n\t\t\t\tpos=\"absolute\"\r\n\t\t\t\tright=\"3px\"\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tfilter:\r\n\t\t\t\t\t\t\"drop-shadow(1px 0px 0px white) drop-shadow(-1px 0px 0px white) drop-shadow(0px 1px 0px white) drop-shadow(0px -1px 0px white)\",\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t</ThumbnailWatermark>\r\n\t);\r\n};\r\n\r\ninterface IThumbnailExternalWatermarkProps {\r\n\ttitle?: string;\r\n}\r\n\r\nexport const ThumbnailExternalWatermark: React.FC<IThumbnailExternalWatermarkProps> = (\r\n\tprops: IThumbnailExternalWatermarkProps,\r\n) => {\r\n\treturn (\r\n\t\t<ThumbnailWatermark title={props.title}>\r\n\t\t\t<ExternalLinkIcon maxH=\"26px\" maxW=\"26px\" h=\"26px\" w=\"26px\" p=\"3px\" />\r\n\t\t</ThumbnailWatermark>\r\n\t);\r\n};\r\n\r\nexport const ThumbnailWatermark: React.FC<BoxProps> = (props: BoxProps) => {\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tpos={props?.pos ?? props.position ?? \"absolute\"}\r\n\t\t\ttop={props?.top ?? \"5px\"}\r\n\t\t\tright={props?.right ?? \"5px\"}\r\n\t\t\tborder={props?.border ?? \"0\"}\r\n\t\t\tborderBottom={props?.borderBottom ?? \"0\"}\r\n\t\t\tborderLeft={props?.borderLeft ?? \"0\"}\r\n\t\t\tbackgroundColor={props?.backgroundColor ?? \"white\"}\r\n\t\t\tbackgroundImage={props?.backgroundImage ?? \"none\"}\r\n\t\t\tbackgroundSize={props?.backgroundSize ?? \"contain\"}\r\n\t\t\tbackgroundRepeat={props?.backgroundRepeat ?? \"no-repeat\"}\r\n\t\t\tbackgroundPosition={props?.backgroundPosition ?? \"top right\"}\r\n\t\t\tborderRadius={props?.borderRadius ?? \"50%\"}\r\n\t\t\tpadding={props?.padding ?? \"2px 2px 5px 5px\"}\r\n\t\t\theight={props?.h ?? props.height ?? \"auto\"}\r\n\t\t\twidth={props?.w ?? props.width ?? \"auto\"}\r\n\t\t\tmaxH={props?.maxH ?? props?.maxHeight ?? \"100%\"}\r\n\t\t\tmaxW={props?.maxW ?? props.maxWidth ?? \"84px\"}\r\n\t\t\ttitle={props.title}\r\n\t\t>\r\n\t\t\t{props.children}\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nThumbnail.defaultProps = { display: \"inline\", borderRadius: \"10px\" };\r\n","/**\r\n * @copyright Copyright 2023 Epic Systems Corporation\r\n * @file loads thumbnails if they don't exist in the store\r\n * @module Epic.AppOrchard.AppListing.ThumbnailProvider\r\n */\r\n\r\nimport { useAsync } from \"@epic/react-async-hook\";\r\nimport { IThumbnailDictionary, ThumbnailActions } from \"ao/state/showroomThumbnails\";\r\nimport { isNullOrEmpty } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useCallback, useEffect, useMemo } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { getShowroomThumbnails } from \"../../data/data\";\r\n\r\ninterface IProps {\r\n\tlistingIds: number[];\r\n\tthumbnailDictionary: IThumbnailDictionary;\r\n\tchildren?: React.ReactNode;\r\n}\r\n\r\nexport const ThumbnailProvider: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { listingIds, thumbnailDictionary, children } = props;\r\n\r\n\tconst dispatch = useDispatch();\r\n\r\n\tconst handleThumbnailsLoaded = useCallback(\r\n\t\t(response: IThumbnailDictionary) => {\r\n\t\t\tdispatch(ThumbnailActions.setState(response));\r\n\t\t},\r\n\t\t[dispatch],\r\n\t);\r\n\r\n\tconst [, loadThumbnails] = useAsync(getShowroomThumbnails, {\r\n\t\texecuteImmediately: false,\r\n\t\tdisplayName: \"getShowroomThumbnails\",\r\n\t\tonSuccess: handleThumbnailsLoaded,\r\n\t});\r\n\r\n\tconst unloadedIdString = useMemo(() => {\r\n\t\treturn listingIds.filter((id) => !thumbnailDictionary[id]).join(\",\");\r\n\t}, [listingIds, thumbnailDictionary]);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet ids = isNullOrEmpty(unloadedIdString) ? [] : unloadedIdString.split(\",\").map(Number);\r\n\r\n\t\tif (ids.length > 0) {\r\n\t\t\tloadThumbnails(ids);\r\n\t\t}\r\n\t}, [loadThumbnails, unloadedIdString]);\r\n\r\n\treturn <>{children}</>;\r\n});\r\n"],"names":["StageFilteringControls","memo","props","_stage$childStages$","_getIntFromSearchPara","stage","searchParams","setSearchParams","useSearchParams","firstChildId","childStages","length","id","substageIdFromUrl","getIntFromSearchParam","TierQueryParamKeys","ChildTierId","filteredStageId","map","x","includes","baseUrl","useMemo","getBaseUrl","handleFilterStage","useCallback","newStageId","set","toString","delete","Categories","_jsx","Wrap","spacing","justify","mt","children","child","_child$backgroundColo","_child$backgroundColo2","_child$textColor","WrapItem","width","_jsxs","Flex","flexDirection","Button","background","concat","backgroundColor2","backgroundColor","border","textColor","showroomGray","title","groupName","borderRadius","height","onClick","alignItems","iconPath","pr","minWidth","minHeight","Image","src","fallback","_Fragment","maxH","maxW","Heading","as","fontWeight","fontSize","fontFamily","color","showroomText","noOfLines","whiteSpace","py","toLocaleUpperCase","description","Text","textAlign","dangerouslySetInnerHTML","__html","StageHeader","_stage$iconPath","userSecurity","headerSubtextColor","isDisplayGroupName","GalleryHeaderStyle","TitleButtons","TitleIcon","TitleOnly","headerStyle","isDisplayIcon","IconOnly","isDisplayHeaderSubtext","headerSubtext","isDisplaySubstageFilters","canFilterSubTiers","isDisplayHeaderImage","headerImagePath","headerColorToUse","showroomPrimary","subheaderColorToUse","iconHeight","indexOf","imageHeight","useBreakpointValue","base","sm","md","lg","xl","isEpicOrCustomer","isEpicUser","isEpicCustomer","showStageContactButton","contactSubject_Id","showContactToAll","showLearnMoreButton","learnMoreUrl","isSubtextOnBottom","Center","pt","pb","VStack","objectFit","fontStyle","position","mb","pos","Box","StageContactButton","LearnMoreLinkButton","maxWidth","overflow","showMessageForm","setShowMessageForm","useState","hideMessageForm","onShowMessageFormClicked","ev","preventDefault","stopPropagation","variant","rightIcon","BiPaperPlane","size","MessageForm","isOpen","onClose","defaultSubject","contactTarget","AOLink","textDecoration","url","BsArrowRight","target","ml","undefined","ShowroomSortOrder","TeaserFilteringControls","_getCaseInsensitivePa","_defaultSortOrder$sor","categories","onOpen","onSortOpen","onSortClose","isSortOpen","useDisclosure","searchStringFinal","getCaseInsensitiveParam","SearchString","selectedCategoryIds","getIntArrayFromSearchParam","defaultSortOrder","sortOptions","find","isDefault","sortOrder","SortOrder","sortOption","selectedCategoryIdsNoParents","ids","forEach","category","filterParentCategoryIds","searchString","setSearchString","handleSearch","cleanedQuery","CleanSearchQuery","handleSort","optionSelected","_optionSelected$toStr","handleCategoryFilter","e","join","useEffect","showSort","listingStyle","GalleryListingStyle","People","optionStyling","Grid","templateColumns","gap","w","details","GridItem","colSpan","CategorySelect","onChange","InputGroup","Input","type","placeholder","maxLength","value","event","onKeyDown","key","InputRightElement","h","minW","right","SearchIcon","Popover","gutter","placement","PopoverTrigger","paddingRight","ChevronDownIcon","chakraTheme","colors","getSortOptionName","PopoverContent","PopoverBody","overflowY","maxHeight","overflowX","sort","a","b","localeCompare","option","style","justifyContent","CategoryDisplay","val","Chronological","ChronologicalReverse","Name","NameReverse","VendorName","VendorNameReverse","CategoryName","CategoryNameReverse","TeaserCardsSection","teasers","thumbnailDictionary","columnCount","isFlat","defaultColumns","defaultPartnerColumns","sectionWidth","ContentWidth","columnSpacing","rowSpacing","columns","Partner","backgroundPartnerColors","centerProps","gridTemplateColumns","ThumbnailProvider","listingIds","listingId","SimpleGrid","rowGap","columnGap","teaser","index","_teaser$listingId","AppCard","appId","_teaser$primaryCatego","hoverOn","onHover","siteInfo","useSiteInfoState","selectors","getState","isStyleInteractive","isListingStyleInteractive","linkToListing","isListingPageAccessible","linkToExternal","isNullOrEmpty","website","isCardInteractive","conditionalBoxProps","LinkButton","showroomRelativeUrl","_hover","tabIndex","isExternal","conditionalWatermarkProps","isComingSoon","top","backgroundImage","comingSoonBackgroundImagePath","transition","handleOnHover","onMouseEnter","onMouseLeave","display","p","minH","margin","aspectRatio","backgroundSize","boxShadow","showroomBorder","transitionDuration","Thumbnail","ImageData","transform","showGalleryIcon","ThumbnailStageWatermark","ComingSoonMarker","comingSoonTitle","ThumbnailExternalWatermark","padding","wordBreak","primaryCategoryName","my","showroomAppCategoryColor","letterSpacing","hideName","lineHeight","name","hideOrgName","orgName","summary","AppFullWithDescription","TeaserPeopleSection","cardWidth","detailWidth","objectPosition","align","showroomPeopleCategoryColor","marginTop","TeaserSection","searchBarVerticalPositionTarget","allTeasers","selectedCategoryString","flattenTier","page","setPage","searchPageUrl","isAdminSite","isLocalhost","getShowroomSearchAdminUrl","getShowroomSearchUrl","pageSize","filteredTeasers","filteredSubTier","localTeasers","matchingCategories","MatchingCategories","filter","_teaser$stage$groupNa","_teaser$stage","parentNameIfMatches","parentStage","trim","toLocaleLowerCase","GetMatchingFields","some","categoryIds","getFilteredSubTier","_filteredSubTier","_filteredSubTier2","includeLiveAppsWhenFiltering","hasDownload","exceedPagesize","pagedAndSortedTeasers","sortDate","listingDate","localeCompareIgnoreEmpty","_b$orgName","_a$orgName","slice","lastPage","Math","max","ceil","getBoundingClientRect","scrollIntoView","block","behavior","window","scrollTo","marginBottom","PaginationControl","currentPage","numPages","handleUpdatePage","currentPageSize","omitDevUrlPrefix","galleryTokens","galleryName","NavDirection","_props$buttonProps","_props$buttonProps2","_props$buttonProps3","_props$buttonProps4","_props$buttonProps5","_props$buttonProps6","_props$buttonProps7","_props$buttonProps8","directionalText","navDirection","Previous","directionalTitle","primaryText","buttonProps","borderColor","navUrl","_active","direction","textOverflow","linearStageTrack","useShowroomState","selector","linearTrack","nextUrl","nextName","prevUrl","prevName","linearStageTrackIndex","findIndex","stageOrTeaser","currentId","nextStage","parentName","prevStage","buttonStyles","backgroundColor1","StageNavigationButton","Next","_stage$id","stageTree","fullStageTree","categoryTree","useShowroomThumbnailState","stageId","Id","setStage","aboveSearchElement","useRef","isBottomLevel","prunedCategories","setPrunedCategories","getAllTeasersInTree","subTierTeaserCount","setSubTierTeaserCount","displayTeasers","showFiltering","stagePath","getStagePathFromList","reverse","thisStage","stageHasComingSoonCardStyle","getCategoryTreeForStage","teaserSectionListingStyle","getListingStyleForTree","Undefined","isAdjustSwoop","topStage","getTopLevelStage","showroomStageTextDefault","ShowroomContentHeader","ShowroomContent","ref","current","StageCardGrid","stages","headerColor","disclaimer","StageNavigation","AbsoluteCenter","ShowroomErrorAlert","errorMessage","StageCard","_stage$iconPath2","isNarrowCard","hideHeaderSubtext","hover","setHover","topLevelParent","GalleryCardStyle","IconCard","IconCardSummaryOnly","IconCardNoFields","ComingSoonCardIconOnly","cardStyle","isDisplayTitle","ComingSoonCardTitleOnly","isDisplayDescription","isComingSoonCard","imageDivHeight","isTopLevel","imageMaxWidth","borderWidth","isWithPatientAtHeart","onMouseOver","onMouseOut","isDisplayArrow","px","sx","overflowWrap","StageCardArrow","isUseNarrowCards","primaryStages","comingSoonStages","push","sharedWrapProps","paddingXL","labelColor","baseWidth","baseHeight","scaledWidth","hoveredScalar","scaledHeight","xmlns","viewBox","className","d","fill","_props$top","_props$right","_ref","_props$w","_ref2","_props$h","_ref3","_props$maxHeight","_ref4","_props$maxWidth","_props$backgroundImag","_props$backgroundPosi","backgroundRepeat","backgroundPosition","curveProps","borderTopLeftRadius","borderTopRightRadius","left","paddingTop","paddingX","flexGrow","maxWidthOverride","contentColSpan","contentColStart","floor","m","GridGap","colStart","isHomePage","isMobile","boxProps","paddingBottom","ShowroomHomeHeader","Alert","status","AlertIcon","boxSize","mr","AlertTitle","AlertDescription","showBackground","rest","thumbnailSrc","thumbnailColor","config","NumAppThumbnailColors","ThumbnailWatermark","ExternalLinkIcon","_props$pos","_props$border","_props$borderBottom","_props$borderLeft","_props$backgroundColo","_props$backgroundSize","_props$backgroundRepe","_props$borderRadius","_props$padding","_props$maxH","_ref5","_props$maxW","borderBottom","borderLeft","defaultProps","dispatch","useDispatch","handleThumbnailsLoaded","response","ThumbnailActions","setState","loadThumbnails","useAsync","getShowroomThumbnails","executeImmediately","displayName","onSuccess","unloadedIdString","split","Number"],"sourceRoot":""}