@pantheon-systems/pds-toolkit-react 1.0.0-dev.99 → 1.0.0-dev.9999
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_dist/components/Avatar/Avatar.d.ts +36 -0
- package/_dist/components/BranchDiff/BranchDiff.d.ts +43 -0
- package/_dist/components/CTALink/CTALink.d.ts +20 -0
- package/_dist/components/CTASlice/CTASlice.d.ts +43 -0
- package/_dist/components/Callout/Callout.d.ts +31 -0
- package/_dist/components/Callout/sample-callout-content.d.ts +2 -0
- package/_dist/components/CodeBlock/CodeBlock.d.ts +85 -0
- package/_dist/components/CodeBlock/code-examples.d.ts +6 -0
- package/_dist/components/CodeBlock/themes/index.d.ts +2 -0
- package/_dist/components/CodeBlock/themes/pdsDark.d.ts +2 -0
- package/_dist/components/CodeBlock/themes/pdsLight.d.ts +2 -0
- package/_dist/components/ComparisonList/ComparisonList.d.ts +42 -0
- package/_dist/components/DashboardStat/DashboardStat.d.ts +28 -0
- package/_dist/components/FileDiff/FileDiff.d.ts +35 -0
- package/_dist/components/FlowSteps/FlowSteps.d.ts +37 -0
- package/_dist/components/FlowSteps/example-steps.d.ts +15 -0
- package/_dist/components/LinkNewWindow/LinkNewWindow.d.ts +35 -0
- package/_dist/components/Modal/Modal.d.ts +54 -0
- package/_dist/components/Pagination/Pagination.d.ts +54 -0
- package/_dist/components/Pagination/usePagination.d.ts +7 -0
- package/_dist/components/PantheonLogo/PantheonLogo.d.ts +32 -0
- package/_dist/components/PantheonLogo/pantheon-logo-data.d.ts +4 -0
- package/_dist/components/Picture/Picture.d.ts +37 -0
- package/_dist/components/Popover/Popover.d.ts +66 -0
- package/_dist/components/PullQuote/PullQuote.d.ts +34 -0
- package/_dist/components/RefreshChecker/RefreshChecker.d.ts +54 -0
- package/_dist/components/SiteDashboardHeading/SiteDashboardHeading.d.ts +57 -0
- package/_dist/components/Skiplink/Skiplink.d.ts +21 -0
- package/_dist/components/SocialLinks/SocialLinks.d.ts +23 -0
- package/_dist/components/StatusIndicator/StatusIndicator.d.ts +24 -0
- package/_dist/components/Table/Table.d.ts +27 -0
- package/_dist/components/TableOfContents/TableOfContents.d.ts +45 -0
- package/_dist/components/Tabs/Tabs.d.ts +63 -0
- package/_dist/components/Tag/Tag.d.ts +39 -0
- package/_dist/components/ThemeSwitcher/ThemeSwitcher.d.ts +32 -0
- package/_dist/components/Tooltip/Tooltip.d.ts +51 -0
- package/_dist/components/VideoEmbed/VideoEmbed.d.ts +28 -0
- package/_dist/components/badges/IndicatorBadge/IndicatorBadge.d.ts +27 -0
- package/_dist/components/badges/StatusBadge/StatusBadge.d.ts +35 -0
- package/_dist/components/badges/Tally/Tally.d.ts +38 -0
- package/_dist/components/buttons/Button/Button.d.ts +66 -0
- package/_dist/components/buttons/ButtonLink/ButtonLink.d.ts +48 -0
- package/_dist/components/buttons/ClipboardButton/ClipboardButton.d.ts +31 -0
- package/_dist/components/buttons/CloseButton/CloseButton.d.ts +27 -0
- package/_dist/components/buttons/IconButton/IconButton.d.ts +50 -0
- package/_dist/components/buttons/MenuButton/MenuButton.d.ts +75 -0
- package/_dist/components/buttons/SegmentedButton/SegmentedButton.d.ts +63 -0
- package/_dist/components/buttons/SplitButton/SplitButton.d.ts +41 -0
- package/_dist/components/buttons/SplitButton/split-button-sample-data.d.ts +17 -0
- package/_dist/components/buttons/UtilityButton/UtilityButton.d.ts +56 -0
- package/_dist/components/cards/Card/Card.d.ts +29 -0
- package/_dist/components/cards/CardHeading/CardHeading.d.ts +32 -0
- package/_dist/components/cards/CardSelectGroup/CardSelectGroup.d.ts +60 -0
- package/_dist/components/cards/EmptyStateCard/EmptyStateCard.d.ts +36 -0
- package/_dist/components/cards/LinksCard/LinksCard.d.ts +29 -0
- package/_dist/components/cards/LinksCard/links-card-sample-data.d.ts +2 -0
- package/_dist/components/cards/NewSiteCard/NewSiteCard.d.ts +57 -0
- package/_dist/components/cards/PaymentCard/PaymentCard.d.ts +47 -0
- package/_dist/components/cards/PricingCard/PricingCard.d.ts +90 -0
- package/_dist/components/cards/SiteCard/SiteCard.d.ts +45 -0
- package/_dist/components/empty-states/CompactEmptyState/CompactEmptyState.d.ts +37 -0
- package/_dist/components/empty-states/HorizontalEmptyState/HorizontalEmptyState.d.ts +69 -0
- package/_dist/components/empty-states/VerticalEmptyState/VerticalEmptyState.d.ts +47 -0
- package/_dist/components/footer/FooterHeading/FooterHeading.d.ts +22 -0
- package/_dist/components/footer/FooterLinks/FooterLinks.d.ts +26 -0
- package/_dist/components/footer/SiteFooter/SiteFooter.d.ts +30 -0
- package/_dist/components/footer/SiteFooter/footer-content.d.ts +2 -0
- package/_dist/components/icons/Icon/Icon.d.ts +732 -0
- package/_dist/components/icons/PaymentIcon/PaymentIcon.d.ts +21 -0
- package/_dist/components/icons/PaymentIcon/svgData.d.ts +8 -0
- package/_dist/components/icons/PlatformIcon/PlatformIcon.d.ts +12 -0
- package/_dist/components/inputs/Checkbox/Checkbox.d.ts +96 -0
- package/_dist/components/inputs/CheckboxFieldset/CheckboxFieldset.d.ts +64 -0
- package/_dist/components/inputs/CheckboxGroup/CheckboxGroup.d.ts +80 -0
- package/_dist/components/inputs/Combobox/Combobox.d.ts +138 -0
- package/_dist/components/inputs/ComboboxMultiselect/ComboboxMultiselect.d.ts +83 -0
- package/_dist/components/inputs/FileUpload/FileUpload.d.ts +93 -0
- package/_dist/components/inputs/InputGroup/InputGroup.d.ts +19 -0
- package/_dist/components/inputs/RadioGroup/RadioGroup.d.ts +104 -0
- package/_dist/components/inputs/Select/Select.d.ts +122 -0
- package/_dist/components/inputs/Switch/Switch.d.ts +74 -0
- package/_dist/components/inputs/TextInput/TextInput.d.ts +139 -0
- package/_dist/components/inputs/Textarea/Textarea.d.ts +110 -0
- package/_dist/components/inputs/input-types.d.ts +1 -0
- package/_dist/components/inputs/input-utilities.d.ts +96 -0
- package/_dist/components/loading-indicators/Skeleton/Skeleton.d.ts +62 -0
- package/_dist/components/loading-indicators/Spinner/Spinner.d.ts +32 -0
- package/_dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +23 -0
- package/_dist/components/navigation/ButtonNav/ButtonNav.d.ts +29 -0
- package/_dist/components/navigation/DashboardNav/DashboardNav.d.ts +35 -0
- package/_dist/components/navigation/DashboardNav/DashboardNavItem.d.ts +25 -0
- package/_dist/components/navigation/DashboardSearch/DashboardSearch.d.ts +70 -0
- package/_dist/components/navigation/DashboardSearch/SiteOptionDisplay.d.ts +39 -0
- package/_dist/components/navigation/DropdownMenu/DropdownMenu.d.ts +28 -0
- package/_dist/components/navigation/NavMenu/NavMenu.d.ts +43 -0
- package/_dist/components/navigation/NavMenu/NavMenuDropdown.d.ts +24 -0
- package/_dist/components/navigation/Navbar/Navbar.d.ts +60 -0
- package/_dist/components/navigation/SideNav/SideNav.d.ts +39 -0
- package/_dist/components/navigation/SideNavCompact/SideNavCompact.d.ts +53 -0
- package/_dist/components/navigation/SideNavGlobal/SideNavGlobal.d.ts +50 -0
- package/_dist/components/navigation/SideNavGlobal/SideNavGlobalItem.d.ts +25 -0
- package/_dist/components/navigation/TabMenu/TabMenu.d.ts +43 -0
- package/_dist/components/navigation/TabMenu/TabMenuDropdown.d.ts +33 -0
- package/_dist/components/navigation/UserMenu/UserMenu.d.ts +69 -0
- package/_dist/components/navigation/WorkspaceSelector/WorkspaceSelector.d.ts +89 -0
- package/_dist/components/navigation/navigation-types.d.ts +29 -0
- package/_dist/components/navigation/navigation-utilities.d.ts +90 -0
- package/_dist/components/notifications/Banner/Banner.d.ts +47 -0
- package/_dist/components/notifications/InlineMessage/InlineMessage.d.ts +37 -0
- package/_dist/components/notifications/SectionMessage/SectionMessage.d.ts +53 -0
- package/_dist/components/notifications/Toaster/Toast.d.ts +46 -0
- package/_dist/components/notifications/Toaster/Toaster.d.ts +29 -0
- package/_dist/components/notifications/Toaster/useToast.d.ts +10 -0
- package/_dist/components/panels/ExpansionPanel/ExpansionPanel.d.ts +32 -0
- package/_dist/components/panels/ExpansionPanelGroup/ExpansionPanelGroup.d.ts +24 -0
- package/_dist/components/panels/Panel/Panel.d.ts +35 -0
- package/_dist/components/panels/PanelList/PanelList.d.ts +28 -0
- package/_dist/components/panels/PanelList/PanelRow.d.ts +27 -0
- package/_dist/components/progress-indicators/ProgressBar/ProgressBar.d.ts +53 -0
- package/_dist/components/progress-indicators/ProgressRing/ProgressRing.d.ts +41 -0
- package/_dist/components/steppers/Stepper/Stepper.d.ts +54 -0
- package/_dist/components/steppers/VerticalStepper/VerticalStep.d.ts +52 -0
- package/_dist/components/steppers/VerticalStepper/VerticalStepper.d.ts +28 -0
- package/_dist/components/steppers/VerticalStepper/vertical-stepper-sample-data.d.ts +27 -0
- package/_dist/components/tiles/AvatarTileList/AvatarTileList.d.ts +28 -0
- package/_dist/components/tiles/Tile/Tile.d.ts +42 -0
- package/_dist/components/tiles/TileGrid/TileGrid.d.ts +29 -0
- package/_dist/css/component-css/pds-avatar-tile-list.css +1 -1
- package/_dist/css/component-css/pds-avatar.css +1 -1
- package/_dist/css/component-css/pds-banner.css +1 -1
- package/_dist/css/component-css/pds-branch-diff.css +1 -0
- package/_dist/css/component-css/pds-breadcrumb.css +1 -0
- package/_dist/css/component-css/pds-button-link.css +1 -1
- package/_dist/css/component-css/pds-button-nav.css +1 -0
- package/_dist/css/component-css/pds-button.css +33 -69
- package/_dist/css/component-css/pds-callout.css +1 -1
- package/_dist/css/component-css/pds-card-heading.css +1 -0
- package/_dist/css/component-css/pds-card-select-group.css +1 -1
- package/_dist/css/component-css/pds-card.css +1 -1
- package/_dist/css/component-css/pds-checkbox-group.css +1 -1
- package/_dist/css/component-css/pds-checkbox.css +1 -1
- package/_dist/css/component-css/pds-clipboard-button.css +0 -0
- package/_dist/css/component-css/pds-close-button.css +1 -0
- package/_dist/css/component-css/pds-code-block-legacy.css +1 -0
- package/_dist/css/component-css/pds-code-block.css +1 -0
- package/_dist/css/component-css/pds-combobox-multiselect.css +2 -0
- package/_dist/css/component-css/pds-combobox.css +1 -0
- package/_dist/css/component-css/pds-compact-empty-state.css +1 -0
- package/_dist/css/component-css/pds-comparison-list.css +1 -1
- package/_dist/css/component-css/pds-cta-link.css +1 -1
- package/_dist/css/component-css/pds-cta-slice.css +1 -1
- package/_dist/css/component-css/pds-dashboard-nav.css +5 -0
- package/_dist/css/component-css/pds-dashboard-search.css +1 -0
- package/_dist/css/component-css/pds-dashboard-stat.css +1 -0
- package/_dist/css/component-css/pds-dropdown-menu.css +2 -0
- package/_dist/css/component-css/pds-empty-state-card.css +1 -0
- package/_dist/css/component-css/pds-expansion-panel-group.css +1 -1
- package/_dist/css/component-css/pds-expansion-panel.css +1 -1
- package/_dist/css/component-css/pds-file-diff.css +1 -0
- package/_dist/css/component-css/pds-file-upload.css +7 -0
- package/_dist/css/component-css/pds-flow-steps.css +1 -0
- package/_dist/css/component-css/pds-footer-heading.css +1 -1
- package/_dist/css/component-css/pds-footer-links.css +1 -1
- package/_dist/css/component-css/pds-horizontal-empty-state.css +1 -0
- package/_dist/css/component-css/pds-icon-button.css +13 -5
- package/_dist/css/component-css/pds-icon-story-only.css +1 -1
- package/_dist/css/component-css/pds-index.css +83 -118
- package/_dist/css/component-css/pds-indicator-badge.css +15 -21
- package/_dist/css/component-css/pds-inline-message.css +1 -0
- package/_dist/css/component-css/pds-input-group.css +1 -1
- package/_dist/css/component-css/pds-input-utilities.css +1 -0
- package/_dist/css/component-css/pds-link-new-window.css +1 -0
- package/_dist/css/component-css/pds-links-card.css +1 -1
- package/_dist/css/component-css/pds-menu-button.css +2 -2
- package/_dist/css/component-css/pds-modal.css +1 -1
- package/_dist/css/component-css/pds-nav-menu.css +5 -1
- package/_dist/css/component-css/pds-navbar.css +1 -5
- package/_dist/css/component-css/pds-new-site-card.css +1 -1
- package/_dist/css/component-css/pds-pagination.css +1 -0
- package/_dist/css/component-css/pds-panel-list.css +1 -0
- package/_dist/css/component-css/pds-panel.css +1 -1
- package/_dist/css/component-css/pds-pantheon-logo.css +1 -1
- package/_dist/css/component-css/pds-payment-card.css +1 -0
- package/_dist/css/component-css/pds-payment-icon.css +1 -0
- package/_dist/css/component-css/pds-picture.css +1 -0
- package/_dist/css/component-css/pds-popover.css +1 -1
- package/_dist/css/component-css/pds-pricing-card.css +1 -1
- package/_dist/css/component-css/pds-progress-bar.css +1 -1
- package/_dist/css/component-css/pds-progress-ring.css +1 -1
- package/_dist/css/component-css/pds-pull-quote.css +1 -1
- package/_dist/css/component-css/pds-radio-group.css +1 -1
- package/_dist/css/component-css/pds-refresh-checker.css +1 -0
- package/_dist/css/component-css/pds-section-message.css +1 -1
- package/_dist/css/component-css/pds-segmented-button.css +1 -0
- package/_dist/css/component-css/pds-select.css +1 -4
- package/_dist/css/component-css/pds-side-nav-compact.css +1 -0
- package/_dist/css/component-css/pds-side-nav-global.css +5 -0
- package/_dist/css/component-css/pds-side-nav.css +2 -1
- package/_dist/css/component-css/pds-site-card.css +1 -1
- package/_dist/css/component-css/pds-site-dashboard-heading.css +1 -0
- package/_dist/css/component-css/pds-site-footer.css +1 -1
- package/_dist/css/component-css/pds-skeleton.css +1 -0
- package/_dist/css/component-css/pds-skiplink.css +1 -0
- package/_dist/css/component-css/pds-social-links.css +1 -1
- package/_dist/css/component-css/pds-spinner.css +1 -1
- package/_dist/css/component-css/pds-split-button.css +1 -1
- package/_dist/css/component-css/pds-status-badge.css +1 -9
- package/_dist/css/component-css/pds-status-indicator.css +1 -1
- package/_dist/css/component-css/pds-stepper.css +1 -1
- package/_dist/css/component-css/pds-switch.css +1 -0
- package/_dist/css/component-css/pds-tab-menu.css +2 -0
- package/_dist/css/component-css/pds-table-of-contents.css +1 -1
- package/_dist/css/component-css/pds-table.css +1 -1
- package/_dist/css/component-css/pds-tabs.css +1 -1
- package/_dist/css/component-css/pds-tag.css +1 -1
- package/_dist/css/component-css/pds-tally.css +1 -0
- package/_dist/css/component-css/pds-text-input.css +1 -0
- package/_dist/css/component-css/pds-textarea.css +1 -1
- package/_dist/css/component-css/pds-theme-switcher.css +1 -0
- package/_dist/css/component-css/pds-tile.css +1 -1
- package/_dist/css/component-css/pds-tiles-common.css +1 -1
- package/_dist/css/component-css/pds-toaster.css +1 -1
- package/_dist/css/component-css/pds-tooltip.css +1 -1
- package/_dist/css/component-css/pds-user-menu-story-only.css +1 -0
- package/_dist/css/component-css/pds-user-menu.css +1 -0
- package/_dist/css/component-css/pds-utility-button.css +1 -0
- package/_dist/css/component-css/pds-vertical-empty-state.css +1 -0
- package/_dist/css/component-css/pds-vertical-stepper.css +1 -0
- package/_dist/css/component-css/pds-video-embed.css +1 -0
- package/_dist/css/component-css/pds-workspace-selector.css +1 -1
- package/_dist/css/design-tokens/pds-design-tokens-dark-mode.css +219 -0
- package/_dist/css/design-tokens/pds-design-tokens-light-mode.css +328 -0
- package/_dist/css/design-tokens/pds-design-tokens.css +130 -0
- package/_dist/css/pds-components.css +83 -118
- package/_dist/css/pds-core.css +4 -4
- package/_dist/css/pds-layouts.css +9 -1
- package/_dist/index.css +1 -0
- package/_dist/index.d.ts +124 -0
- package/_dist/index.js +12518 -0
- package/_dist/index.js.map +1 -0
- package/_dist/layouts/AppLayout/AppLayout.d.ts +73 -0
- package/_dist/layouts/Container/Container.d.ts +25 -0
- package/_dist/layouts/DashboardGlobal/DashboardGlobal.d.ts +57 -0
- package/_dist/layouts/DashboardInner/DashboardInner.d.ts +29 -0
- package/_dist/layouts/DocsLayout/DocsLayout.d.ts +30 -0
- package/_dist/layouts/FlexContainer/FlexContainer.d.ts +72 -0
- package/_dist/layouts/GlobalWrapper/GlobalWrapper.d.ts +19 -0
- package/_dist/layouts/SidebarLayout/SidebarLayout.d.ts +36 -0
- package/_dist/layouts/StepperLayout/StepperLayout.d.ts +20 -0
- package/_dist/layouts/ThreeItemLayout/ThreeItemLayout.d.ts +30 -0
- package/_dist/layouts/TwoItemLayout/TwoItemLayout.d.ts +34 -0
- package/_dist/layouts/layout-types.d.ts +2 -0
- package/_dist/libs/components/sb-docs-toc-layout.d.ts +4 -0
- package/_dist/libs/components/utility-components.d.ts +15 -0
- package/_dist/libs/components/utils.d.ts +7 -0
- package/_dist/libs/types/custom-types.d.ts +107 -0
- package/_dist/mocks/data/navigation-items.d.ts +367 -0
- package/_dist/mocks/data/pagination-items.d.ts +16 -0
- package/_dist/mocks/markup/dashboard-main-content.d.ts +10 -0
- package/_dist/mocks/markup/dashboard-navigation.d.ts +11 -0
- package/_dist/mocks/markup/inputs.d.ts +2 -0
- package/_dist/mocks/markup/modal.d.ts +2 -0
- package/_dist/mocks/markup/panel-row-content.d.ts +16 -0
- package/_dist/utilities/color/color-preview-swatches.d.ts +13 -0
- package/_dist/utilities/context-providers/ResponsiveContext/ResponsiveContext.d.ts +6 -0
- package/_dist/utilities/hooks/useClipboard.d.ts +6 -0
- package/_dist/utilities/hooks/useKeyPress.d.ts +1 -0
- package/_dist/utilities/hooks/useWindowWidth.d.ts +1 -0
- package/_dist/vars/animation.d.ts +5 -0
- package/_dist/vars/spacing.d.ts +36 -0
- package/_dist/vars/type-scale.d.ts +28 -0
- package/_dist/vars/z-index.d.ts +16 -0
- package/package.json +83 -44
- package/_dist/cjs/index.js +0 -93
- package/_dist/cjs/index.js.map +0 -1
- package/_dist/css/component-css/pds-animated-button.css +0 -7
- package/_dist/css/component-css/pds-breadcrumbs.css +0 -1
- package/_dist/css/component-css/pds-heading.css +0 -1
- package/_dist/css/component-css/pds-inputs-common.css +0 -1
- package/_dist/css/component-css/pds-pager.css +0 -1
- package/_dist/css/component-css/pds-stats-tile-list.css +0 -1
- package/_dist/css/component-css/pds-toast.css +0 -1
- package/_dist/css/component-css/pds-toggle-button.css +0 -1
- package/_dist/css/component-css/pds-toggle-switch.css +0 -3
- package/_dist/esm/index.js +0 -93
- package/_dist/esm/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/libs/components/utils.js","../src/components/icons/Icon/Icon.tsx","../src/components/Avatar/Avatar.tsx","../src/components/badges/IndicatorBadge/IndicatorBadge.tsx","../src/components/badges/StatusBadge/StatusBadge.tsx","../src/components/badges/Tally/Tally.tsx","../src/vars/z-index.js","../src/components/Tooltip/Tooltip.tsx","../src/components/BranchDiff/BranchDiff.tsx","../src/libs/components/utility-components.tsx","../src/components/inputs/input-utilities.tsx","../src/components/loading-indicators/Spinner/Spinner.tsx","../src/components/buttons/Button/Button.tsx","../src/components/buttons/ButtonLink/ButtonLink.tsx","../src/utilities/hooks/useClipboard.ts","../src/components/buttons/IconButton/IconButton.tsx","../src/components/buttons/ClipboardButton/ClipboardButton.tsx","../src/components/buttons/CloseButton/CloseButton.tsx","../src/utilities/hooks/useWindowWidth.ts","../src/utilities/context-providers/ResponsiveContext/ResponsiveContext.tsx","../src/components/buttons/MenuButton/MenuButton.tsx","../src/components/buttons/SegmentedButton/SegmentedButton.tsx","../src/components/buttons/SplitButton/SplitButton.tsx","../src/components/buttons/UtilityButton/UtilityButton.tsx","../src/components/Callout/Callout.tsx","../src/components/cards/Card/Card.tsx","../src/components/cards/CardHeading/CardHeading.tsx","../src/components/cards/CardSelectGroup/CardSelectGroup.tsx","../src/components/cards/EmptyStateCard/EmptyStateCard.tsx","../src/components/cards/LinksCard/LinksCard.tsx","../src/components/icons/PlatformIcon/PlatformIcon.tsx","../src/components/cards/NewSiteCard/NewSiteCard.tsx","../src/components/icons/PaymentIcon/svgData.tsx","../src/components/icons/PaymentIcon/PaymentIcon.tsx","../src/components/cards/PaymentCard/PaymentCard.tsx","../src/components/ComparisonList/ComparisonList.tsx","../src/components/inputs/Select/Select.tsx","../src/components/cards/PricingCard/PricingCard.tsx","../src/components/cards/SiteCard/SiteCard.tsx","../node_modules/prismjs/components/prism-core.js","../src/components/CodeBlock/themes/pdsDark.ts","../src/components/CodeBlock/themes/pdsLight.ts","../src/vars/spacing.js","../src/vars/type-scale.js","../src/components/loading-indicators/Skeleton/Skeleton.tsx","../node_modules/prismjs/components/prism-bash.js","../node_modules/prismjs/components/prism-diff.js","../src/components/CodeBlock/CodeBlock.tsx","../src/components/CTALink/CTALink.tsx","../src/components/CTASlice/CTASlice.tsx","../src/components/DashboardStat/DashboardStat.tsx","../src/components/empty-states/CompactEmptyState/CompactEmptyState.tsx","../src/components/VideoEmbed/VideoEmbed.tsx","../src/components/empty-states/HorizontalEmptyState/HorizontalEmptyState.tsx","../src/components/empty-states/VerticalEmptyState/VerticalEmptyState.tsx","../src/components/FileDiff/FileDiff.tsx","../src/components/FlowSteps/FlowSteps.tsx","../src/components/footer/FooterHeading/FooterHeading.tsx","../src/components/footer/FooterLinks/FooterLinks.tsx","../src/components/footer/SiteFooter/SiteFooter.tsx","../src/components/inputs/Checkbox/Checkbox.tsx","../src/components/inputs/CheckboxFieldset/CheckboxFieldset.tsx","../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx","../src/components/inputs/Combobox/Combobox.tsx","../src/components/inputs/ComboboxMultiselect/ComboboxMultiselect.tsx","../src/components/inputs/FileUpload/FileUpload.tsx","../src/components/inputs/InputGroup/InputGroup.tsx","../src/components/inputs/RadioGroup/RadioGroup.tsx","../src/components/inputs/Switch/Switch.tsx","../src/components/inputs/Textarea/Textarea.tsx","../src/components/inputs/TextInput/TextInput.tsx","../src/components/LinkNewWindow/LinkNewWindow.tsx","../src/components/Modal/Modal.tsx","../src/components/navigation/Breadcrumb/Breadcrumb.tsx","../src/components/navigation/navigation-utilities.tsx","../src/components/navigation/ButtonNav/ButtonNav.tsx","../src/components/Skiplink/Skiplink.tsx","../src/layouts/DashboardGlobal/DashboardGlobal.tsx","../src/vars/animation.js","../src/components/navigation/DashboardNav/DashboardNavItem.tsx","../src/components/navigation/DropdownMenu/DropdownMenu.tsx","../src/components/PantheonLogo/pantheon-logo-data.tsx","../src/components/PantheonLogo/PantheonLogo.tsx","../src/components/navigation/DashboardNav/DashboardNav.tsx","../src/libs/types/custom-types.tsx","../src/components/navigation/DashboardSearch/SiteOptionDisplay.tsx","../src/components/navigation/DashboardSearch/DashboardSearch.tsx","../src/layouts/Container/Container.tsx","../src/components/navigation/Navbar/Navbar.tsx","../src/components/navigation/NavMenu/NavMenuDropdown.tsx","../src/components/navigation/NavMenu/NavMenu.tsx","../src/components/navigation/SideNav/SideNav.tsx","../src/components/navigation/SideNavCompact/SideNavCompact.tsx","../src/components/navigation/SideNavGlobal/SideNavGlobalItem.tsx","../src/components/navigation/SideNavGlobal/SideNavGlobal.tsx","../src/components/navigation/TabMenu/TabMenuDropdown.tsx","../src/components/navigation/TabMenu/TabMenu.tsx","../src/components/navigation/UserMenu/UserMenu.tsx","../src/components/navigation/WorkspaceSelector/WorkspaceSelector.tsx","../src/components/notifications/Banner/Banner.tsx","../src/components/notifications/InlineMessage/InlineMessage.tsx","../src/components/notifications/SectionMessage/SectionMessage.tsx","../src/components/notifications/Toaster/Toast.tsx","../src/components/notifications/Toaster/Toaster.tsx","../src/components/notifications/Toaster/useToast.tsx","../src/components/Pagination/usePagination.tsx","../src/components/Pagination/Pagination.tsx","../src/components/panels/ExpansionPanel/ExpansionPanel.tsx","../src/components/panels/ExpansionPanelGroup/ExpansionPanelGroup.tsx","../src/components/panels/Panel/Panel.tsx","../src/components/panels/PanelList/PanelList.tsx","../src/components/panels/PanelList/PanelRow.tsx","../src/components/Picture/Picture.tsx","../src/components/Popover/Popover.tsx","../src/components/progress-indicators/ProgressBar/ProgressBar.tsx","../src/components/progress-indicators/ProgressRing/ProgressRing.tsx","../src/components/PullQuote/PullQuote.tsx","../src/components/RefreshChecker/RefreshChecker.tsx","../src/components/SiteDashboardHeading/SiteDashboardHeading.tsx","../src/components/SocialLinks/SocialLinks.tsx","../src/components/StatusIndicator/StatusIndicator.tsx","../src/components/steppers/Stepper/Stepper.tsx","../src/components/steppers/VerticalStepper/VerticalStep.tsx","../src/components/steppers/VerticalStepper/VerticalStepper.tsx","../src/components/Table/Table.tsx","../src/components/TableOfContents/TableOfContents.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tag/Tag.tsx","../src/components/ThemeSwitcher/ThemeSwitcher.tsx","../src/components/tiles/AvatarTileList/AvatarTileList.tsx","../src/components/tiles/Tile/Tile.tsx","../src/components/tiles/TileGrid/TileGrid.tsx","../src/layouts/AppLayout/AppLayout.tsx","../src/layouts/DashboardInner/DashboardInner.tsx","../src/layouts/DocsLayout/DocsLayout.tsx","../src/layouts/FlexContainer/FlexContainer.tsx","../src/layouts/GlobalWrapper/GlobalWrapper.tsx","../src/layouts/SidebarLayout/SidebarLayout.tsx","../src/layouts/StepperLayout/StepperLayout.tsx","../src/layouts/ThreeItemLayout/ThreeItemLayout.tsx","../src/layouts/TwoItemLayout/TwoItemLayout.tsx","../src/utilities/hooks/useKeyPress.ts"],"sourcesContent":["import { Children, isValidElement } from 'react';\n\n// Function to generate a random ID.\nexport const createRandomID = () => {\n\treturn Math.random().toString(32).substring(2, 13);\n};\n\n// Function to collect all descendants of an element.\nexport const getDescendants = (node, collect) => {\n\t// Check for children first.\n\tif (!node?.childNodes) {\n\t\treturn;\n\t}\n\n\t// Collect all children.\n\tlet i;\n\tcollect = collect || [];\n\tfor (i = 0; i < node.childNodes.length; i++) {\n\t\tcollect.push(node.childNodes[i]);\n\t\tgetDescendants(node.childNodes[i], collect);\n\t}\n\treturn collect;\n};\n\n// Function to initiate slots from a children prop.\nexport const initiateSlots = (children) => {\n\tconst slots = {};\n\tconst unslotted = [];\n\n\tChildren.forEach(children, (child) => {\n\t\tif (isValidElement(child)) {\n\t\t\tconst slotName = child.props.slot;\n\t\t\tif (slotName) {\n\t\t\t\tif (slots[slotName]) {\n\t\t\t\t\tslots[slotName].push(child);\n\t\t\t\t} else {\n\t\t\t\t\tslots[slotName] = [child];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunslotted.push(child);\n\t\t\t}\n\t\t} else {\n\t\t\t// Handle non-React elements (strings, numbers, etc.)\n\t\t\tunslotted.push(child);\n\t\t}\n\t});\n\n\t// Add unslotted children to the slots object with a special key\n\tif (unslotted.length > 0) {\n\t\tslots['__unslotted'] = unslotted;\n\t}\n\n\treturn slots;\n};\n\n// Function to merge css classes\nexport const mergeClasses = (styles) =>\n\tstyles.join(' ').trim().replace(/\\s+/g, ' ');\n\n/**\n * Function to validate if image src is valid, restricts base64 to data image types and excludes svg + xml\n */\nexport const isValidImageSrc = (uri) => {\n\tif (!uri) return false;\n\n\tif (!uri.startsWith('data:')) return true;\n\n\tconst regex =\n\t\t/^data:image\\/(png|jpeg|jpg|gif|bmp|webp);base64,[A-Za-z0-9+/]+=*$/;\n\treturn regex.test(uri);\n};\n","import React from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { Display } from '@libs/types/custom-types';\n\n/**\n * PDS Icon type.\n */\nexport type PDSIcon = keyof typeof svgData;\n\n/**\n * Icon component prop types\n */\nexport interface IconProps {\n\t/**\n\t * Display value\n\t */\n\tdisplay?: Display;\n\t/**\n\t * Which icon to render\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Which size of icon to render\n\t */\n\ticonSize?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n\t/**\n\t * Vertical align value\n\t */\n\tverticalAlign?: string;\n\t/**\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * A component used to display an icon\n */\nexport const Icon = ({\n\tdisplay = 'inline-block',\n\ticonName,\n\ticonSize = 'md',\n\tverticalAlign = 'middle',\n\tclassName,\n\t...props\n}: IconProps) => {\n\tconst iconClasses =\n\t\t`pds-icon pds-icon--${iconSize} pds-icon--${iconName}` as const;\n\tconst iconWidth = `0 0 ${svgData[iconName].width} 512` as const;\n\n\tconst iconSizes = {\n\t\tsm: '0.8rem',\n\t\tmd: '1rem',\n\t\tlg: '1.2rem',\n\t\txl: '1.44rem',\n\t\t'2xl': '1.728rem',\n\t\t'3xl': '2.074rem',\n\t\t'4xl': '3.052rem',\n\t} as const;\n\n\t// Render the output\n\treturn (\n\t\t<svg\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\trole='img'\n\t\t\tviewBox={iconWidth}\n\t\t\theight={iconSizes[iconSize]}\n\t\t\tfill='none'\n\t\t\taria-hidden='true'\n\t\t\tpreserveAspectRatio='xMidYMid meet'\n\t\t\tfocusable='false'\n\t\t\tclassName={mergeClasses([iconClasses, className])}\n\t\t\tstyle={{\n\t\t\t\tdisplay: display,\n\t\t\t\tflexShrink: 0,\n\t\t\t\toverflow: 'visible',\n\t\t\t\tverticalAlign: verticalAlign,\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<path d={svgData[iconName].path} fill='currentColor' />\n\t\t</svg>\n\t);\n};\n\n// SVG Paths for each icon.\nconst svgData = {\n\tangleDown: {\n\t\tpath: 'M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z',\n\t\twidth: '440',\n\t},\n\tangleLeft: {\n\t\tpath: 'M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z',\n\t\twidth: '320',\n\t},\n\tangleRight: {\n\t\tpath: 'M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z',\n\t\twidth: '320',\n\t},\n\tangleUp: {\n\t\tpath: 'M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z',\n\t\twidth: '440',\n\t},\n\tanglesLeft: {\n\t\tpath: 'M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z',\n\t\twidth: '512',\n\t},\n\tanglesRight: {\n\t\tpath: 'M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z',\n\t\twidth: '512',\n\t},\n\tarrowDownToLine: {\n\t\tpath: 'M32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32zM214.6 342.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 242.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V242.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128z',\n\t\twidth: '384',\n\t},\n\tarrowLeft: {\n\t\tpath: 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z',\n\t\twidth: '448',\n\t},\n\tarrowRight: {\n\t\tpath: 'M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z',\n\t\twidth: '448',\n\t},\n\tasterisk: {\n\t\tpath: 'M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z',\n\t\twidth: '384',\n\t},\n\tbanBug: {\n\t\tpath: 'M256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2L367.2 412.5C335.9 434.9 297.5 448 256 448zm89-148.3l19.9 4c8.7 1.7 17.1-3.9 18.8-12.6s-3.9-17.1-12.6-18.8l-35.1-7V246.7l35.1-7c8.7-1.7 14.3-10.2 12.6-18.8s-10.2-14.3-18.8-12.6l-29.5 5.9c-1.1-9.2-3.8-17.8-7.7-25.8l24.5-14.7c7.6-4.5 10-14.4 5.5-22s-14.4-10-22-5.5L307.8 163c-14-11.9-32.1-19-51.8-19c-18.7 0-35.9 6.4-49.6 17.2L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L345 299.7zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM140.9 272.3c-8.7 1.7-14.3 10.2-12.6 18.8s10.2 14.3 18.8 12.6l29.5-5.9c1.1 9.2 3.8 17.8 7.7 25.8l-24.5 14.7c-7.6 4.5-10 14.4-5.5 22s14.4 10 22 5.5L204.2 349c14 11.9 32.1 19 51.8 19c6.6 0 13-.8 19.2-2.3L175 265.5l-34.1 6.8z',\n\t\twidth: '512',\n\t},\n\tbars: {\n\t\tpath: 'M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z',\n\t\twidth: '460',\n\t},\n\tbarsFilter: {\n\t\tpath: 'M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM288 416c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c17.7 0 32 14.3 32 32z',\n\t\twidth: '460',\n\t},\n\tbillboard: {\n\t\tpath: 'M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32H256c0-17.7-14.3-32-32-32s-32 14.3-32 32H80C53.5 32 32 53.5 32 80V352c-17.7 0-32 14.3-32 32s14.3 32 32 32H80 288v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416H560h48c17.7 0 32-14.3 32-32s-14.3-32-32-32V80c0-26.5-21.5-48-48-48H448zM320 352H96V96h96v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96H384v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96h96V352H320z',\n\t\twidth: '640',\n\t},\n\tbitbucket: {\n\t\tpath: 'M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z',\n\t\twidth: '512',\n\t},\n\tbluesky: {\n\t\tpath: 'M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z',\n\t\twidth: '512',\n\t},\n\tbolt: {\n\t\tpath: 'M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z',\n\t\twidth: '448',\n\t},\n\tboltPantheon: {\n\t\tpath: 'M183.215 0L254.271 277.176H204.614L302 512L46.228 187.779H135.272L0 0.434418L144.526 0.459972L145.968 0H183.215Z',\n\t\twidth: '304',\n\t},\n\tbook: {\n\t\tpath: 'M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '448',\n\t},\n\tbooks: {\n\t\tpath: 'M0 32C0 14.3 14.3 0 32 0L96 0c17.7 0 32 14.3 32 32l0 64L0 96 0 32zm0 96l128 0 0 256L0 384 0 128zM0 416l128 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zM160 32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64L160 96l0-64zm0 96l128 0 0 256-128 0 0-256zm0 288l128 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zm203.6-19.9L320 232.6l0-89.9 100.4-26.9 66 247.4L363.6 396.1zM412.2 85L320 109.6 320 11l36.9-9.9c16.9-4.6 34.4 5.5 38.9 22.6L412.2 85zM371.8 427l122.8-32.9 16.3 61.1c4.5 17-5.5 34.5-22.5 39.1l-61.4 16.5c-16.9 4.6-34.4-5.5-38.9-22.6L371.8 427z',\n\t\twidth: '512',\n\t},\n\tbracketRight: {\n\t\tpath: 'M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z',\n\t\twidth: '548',\n\t},\n\tbroomWide: {\n\t\tpath: 'M502.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128-15.8-15.8c-15.2-15.2-38.5-18.4-57.3-8l-32.5 18L380.4 288.1l18-32.5c10.4-18.7 7.1-42.1-8-57.3l-15.8-15.8 128-128c12.5-12.5 12.5-32.8 0-45.3zM187.5 151.8L16.4 246.9C6.3 252.5 0 263.2 0 274.8c0 8.5 3.4 16.6 9.3 22.6l43.2 43.2c2.1 2.1 5.3 2.9 8.2 1.9l52.1-17.4c6.3-2.1 12.2 3.9 10.1 10.1l-17.4 52.1c-1 2.9-.2 6 1.9 8.2L214.7 502.7c6 6 14.1 9.3 22.6 9.3c11.6 0 22.3-6.3 27.9-16.4l95.1-171.1L187.5 151.8z',\n\t\twidth: '512',\n\t},\n\tbuilding: {\n\t\tpath: 'M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z',\n\t\twidth: '400',\n\t},\n\tbuildings: {\n\t\tpath: 'M256 0c-35.3 0-64 28.7-64 64v64H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256 448c35.3 0 64-28.7 64-64V192 64c0-35.3-28.7-64-64-64H256zM64 304c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V304zm208 16c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272zm112-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 192h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zM256 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V80zM400 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM256 208V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zm144 16c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400z',\n\t\twidth: '512',\n\t},\n\tcalendarDays: {\n\t\tpath: 'M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z',\n\t\twidth: '448',\n\t},\n\tccAmex: {\n\t\tpath: 'M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z',\n\t\twidth: '600',\n\t},\n\tccDiscover: {\n\t\tpath: 'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z',\n\t\twidth: '600',\n\t},\n\tccGeneric: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z',\n\t\twidth: '600',\n\t},\n\tccMC: {\n\t\tpath: 'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z',\n\t\twidth: '600',\n\t},\n\tccVisa: {\n\t\tpath: 'M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z',\n\t\twidth: '600',\n\t},\n\tchartSimple: {\n\t\tpath: 'M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z',\n\t\twidth: '500',\n\t},\n\tcloud: {\n\t\tpath: 'M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z',\n\t\twidth: '640',\n\t},\n\tcloudArrowUp: {\n\t\tpath: 'M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z',\n\t\twidth: '640',\n\t},\n\tcloudPlus: {\n\t\tpath: 'M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zM296 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z',\n\t\twidth: '640',\n\t},\n\tcode: {\n\t\tpath: 'M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z',\n\t\twidth: '640',\n\t},\n\tcodeBranch: {\n\t\tpath: 'M80 112a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm80-32c0 35.8-23.5 66.1-56 76.3V256c20.1-15.1 45-24 72-24h96c39.8 0 72-32.2 72-72v-3.7c-32.5-10.2-56-40.5-56-76.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 35.8-23.5 66.1-56 76.3V160c0 66.3-53.7 120-120 120H176c-39.8 0-72 32.2-72 72v3.7c32.5 10.2 56 40.5 56 76.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-35.8 23.5-66.1 56-76.3V352 156.3C23.5 146.1 0 115.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm240 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM80 464a32 32 0 1 0 0-64 32 32 0 1 0 0 64z',\n\t\twidth: '500',\n\t},\n\tcodeMerge: {\n\t\tpath: 'M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z',\n\t\twidth: '480',\n\t},\n\tcaretDown: {\n\t\tpath: 'M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z',\n\t\twidth: '320',\n\t},\n\tcaretLeft: {\n\t\tpath: 'M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z',\n\t\twidth: '256',\n\t},\n\tcaretRight: {\n\t\tpath: 'M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z',\n\t\twidth: '256',\n\t},\n\tcaretUp: {\n\t\tpath: 'M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z',\n\t\twidth: '320',\n\t},\n\tchartLine: {\n\t\tpath: 'M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z',\n\t\twidth: '512',\n\t},\n\tchartNetwork: {\n\t\tpath: 'M288 64c0 13.7-4.3 26.3-11.6 36.7l29.2 62.5c9.8-2.1 20-3.2 30.4-3.2c36.1 0 69 13.3 94.3 35.2L512.4 135c-.2-2.3-.4-4.6-.4-7c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-9.2 0-17.9-1.9-25.8-5.4l-82 60.2c7.6 17.5 11.8 36.9 11.8 57.2c0 15.6-2.5 30.7-7.1 44.8l72 43.2c9.2-5.1 19.8-8 31.1-8c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64l0-1.1-72.1-43.3C413.7 431 376.8 448 336 448c-68.5 0-125.9-47.9-140.4-112H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64s28.7-64 64-64c23.7 0 44.4 12.9 55.4 32h76.1c7.5-33 26.3-61.6 52.1-81.7l-29.2-62.5C185.7 124.9 160 97.5 160 64c0-35.3 28.7-64 64-64s64 28.7 64 64zm48 288a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: '640',\n\t},\n\tcheck: {\n\t\tpath: 'M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z',\n\t\twidth: '448',\n\t},\n\tcircle: {\n\t\tpath: 'M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z',\n\t\twidth: '512',\n\t},\n\tcircleExclamation: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '512',\n\t},\n\tcircleCheck: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '512',\n\t},\n\tcircleInfo: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z',\n\t\twidth: '512',\n\t},\n\tcircleMinus: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: '512',\n\t},\n\tcircleMinusOutline: {\n\t\tpath: 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z',\n\t\twidth: '512',\n\t},\n\tcircleNotch: {\n\t\tpath: 'M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z',\n\t\twidth: '512',\n\t},\n\tcirclePlus: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z',\n\t\twidth: '512',\n\t},\n\tcirclePlusOutline: {\n\t\tpath: 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z',\n\t\twidth: '512',\n\t},\n\tcircleQuestion: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '512',\n\t},\n\tcircleXmark: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z',\n\t\twidth: '512',\n\t},\n\tcommand: {\n\t\tpath: 'M0 96C0 43 43 0 96 0s96 43 96 96v32H320V96c0-53 43-96 96-96s96 43 96 96s-43 96-96 96H384V320h32c53 0 96 43 96 96s-43 96-96 96s-96-43-96-96V384H192v32c0 53-43 96-96 96s-96-43-96-96s43-96 96-96h32V192H96C43 192 0 149 0 96zm128 32V96c0-17.7-14.3-32-32-32S64 78.3 64 96s14.3 32 32 32h32zm64 192H320V192H192V320zm-64 64H96c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32V384zm256 0v32c0 17.7 14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32H384zm0-256h32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32v32z',\n\t\twidth: '512',\n\t},\n\tcomment: {\n\t\tpath: 'M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z',\n\t\twidth: '512',\n\t},\n\tcopy: {\n\t\tpath: 'M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z',\n\t\twidth: '480',\n\t},\n\tdesktop: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z',\n\t\twidth: '576',\n\t},\n\tdiamondExclamation: {\n\t\tpath: 'M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z',\n\t\twidth: '512',\n\t},\n\tdiamonds4: {\n\t\tpath: 'M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l74.1 74.1c12.5 12.5 12.5 32.8 0 45.3l-79.7 79.7c-12.5 12.5-32.8 12.5-45.3 0L153.7 131c-12.5-12.5-12.5-32.8 0-45.3l74.1-74.1zM131 153.7l79.7 79.7c12.5 12.5 12.5 32.8 0 45.3L131 358.3c-12.5 12.5-32.8 12.5-45.3 0L11.7 284.3c-15.6-15.6-15.6-40.9 0-56.6l74.1-74.1c12.5-12.5 32.8-12.5 45.3 0zM153.7 381l79.7-79.7c12.5-12.5 32.8-12.5 45.3 0L358.3 381c12.5 12.5 12.5 32.8 0 45.3l-74.1 74.1c-15.6 15.6-40.9 15.6-56.6 0l-74.1-74.1c-12.5-12.5-12.5-32.8 0-45.3zM381 358.3l-79.7-79.7c-12.5-12.5-12.5-32.8 0-45.3L381 153.7c12.5-12.5 32.8-12.5 45.3 0l74.1 74.1c15.6 15.6 15.6 40.9 0 56.6l-74.1 74.1c-12.5 12.5-32.8 12.5-45.3 0z',\n\t\twidth: '512',\n\t},\n\tdiscourse: {\n\t\tpath: 'M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z',\n\t\twidth: '512',\n\t},\n\tdownload: {\n\t\tpath: 'M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z',\n\t\twidth: '520',\n\t},\n\tdrupal: {\n\t\tpath: 'M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z',\n\t\twidth: '440',\n\t},\n\tellipsis: {\n\t\tpath: 'M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z',\n\t\twidth: '448',\n\t},\n\tellipsisVertical: {\n\t\tpath: 'M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z',\n\t\twidth: '120',\n\t},\n\temptySet: {\n\t\tpath: 'M435.4 121.9l67.2-67.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L390.2 76.6C352.8 48.6 306.3 32 256 32C132.3 32 32 132.3 32 256c0 50.3 16.6 96.8 44.6 134.2L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l67.2-67.2c37.4 28 83.8 44.6 134.1 44.6c123.7 0 224-100.3 224-224c0-50.3-16.6-96.8-44.6-134.1zm-91.2 .7L122.5 344.2C105.8 318.9 96 288.6 96 256c0-88.4 71.6-160 160-160c32.6 0 62.9 9.8 88.2 26.5zm-176.5 267L389.5 167.8C406.2 193.1 416 223.4 416 256c0 88.4-71.6 160-160 160c-32.6 0-62.9-9.8-88.2-26.5z',\n\t\twidth: '512',\n\t},\n\tenvelope: {\n\t\tpath: 'M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z',\n\t\twidth: '512',\n\t},\n\texclamation: {\n\t\tpath: 'M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z',\n\t\twidth: '100',\n\t},\n\texpand: {\n\t\tpath: 'M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z',\n\t\twidth: '448',\n\t},\n\texternalLink: {\n\t\tpath: 'M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z',\n\t\twidth: '512',\n\t},\n\teye: {\n\t\tpath: 'M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z',\n\t\twidth: '576',\n\t},\n\teyeSlash: {\n\t\tpath: 'M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z',\n\t\twidth: '640',\n\t},\n\tfacebook: {\n\t\tpath: 'M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z',\n\t\twidth: '512',\n\t},\n\tfile: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z',\n\t\twidth: '384',\n\t},\n\tfileCheck: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm49 281L177 409c-9.4 9.4-24.6 9.4-33.9 0L79 345c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 247c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '384',\n\t},\n\tfileContract: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z',\n\t\twidth: '400',\n\t},\n\tfileCSV: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z',\n\t\twidth: '512',\n\t},\n\tfileDiff: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM208 208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16zM128 384l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '384',\n\t},\n\tfileExport: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z',\n\t\twidth: '576',\n\t},\n\tfileImport: {\n\t\tpath: 'M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z',\n\t\twidth: '512',\n\t},\n\tfileLines: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '384',\n\t},\n\tfilePDF: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z',\n\t\twidth: '512',\n\t},\n\tfileZip: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-144 0c-35.3 0-64 28.7-64 64l0 144L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM240 352l64 0c5.5 0 10.7 2.9 13.6 7.6s3.2 10.6 .7 15.6L265.9 480l38.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-5.5 0-10.7-2.9-13.6-7.6s-3.2-10.6-.7-15.6L278.1 384 240 384c-8.8 0-16-7.2-16-16s7.2-16 16-16zm144 16l0 128c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16s16 7.2 16 16zm32 0c0-8.8 7.2-16 16-16l24 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-8 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80zm32 64l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 48z',\n\t\twidth: '512',\n\t},\n\tfolder: {\n\t\tpath: 'M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z',\n\t\twidth: '512',\n\t},\n\tfolderTree: {\n\t\tpath: 'M60 67.375V123.375H228H228V179.375H60V375.375H228V431.375H60C28.5 431.375 4 406.875 4 375.375V151.375V67.375C4 52.9 20.25 39.375 32 39.375C46.875 39.375 60 52.9 60 67.375ZM256 207.375V67.375C256 52.9 272.25 39.375 284 39.375H341.75C350.5 39.375 357.625 43.875 362 48.25L373.25 59.5C377.625 63.875 384.75 67.375 393.5 67.375H480C494.875 67.375 508 80.9 508 95.375V207.375C508 222.25 494.875 235.375 480 235.375H284C272.25 235.375 256 222.25 256 207.375ZM256 459.375V319.375C256 304.9 272.25 291.375 284 291.375H341.75C350.5 291.375 357.625 295.875 362 300.25L373.25 311.5C377.625 315.875 384.75 319.375 393.5 319.375H480C494.875 319.375 508 332.9 508 347.375V459.375C508 474.25 494.875 487.375 480 487.375H284C272.25 487.375 256 474.25 256 459.375Z',\n\t\twidth: '512',\n\t},\n\tgear: {\n\t\tpath: 'M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z',\n\t\twidth: '512',\n\t},\n\tgithub: {\n\t\tpath: 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2',\n\t\twidth: '512',\n\t},\n\tgitlab: {\n\t\tpath: 'M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z',\n\t\twidth: '512',\n\t},\n\tglobe: {\n\t\tpath: 'M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z',\n\t\twidth: '512',\n\t},\n\tglobeLine: {\n\t\tpath: 'M256 480c16.7 0 40.4-14.4 61.9-57.3c9.9-19.8 18.2-43.7 24.1-70.7H170c5.9 27 14.2 50.9 24.1 70.7C215.6 465.6 239.3 480 256 480zM164.3 320H347.7c2.8-20.2 4.3-41.7 4.3-64s-1.5-43.8-4.3-64H164.3c-2.8 20.2-4.3 41.7-4.3 64s1.5 43.8 4.3 64zM170 160H342c-5.9-27-14.2-50.9-24.1-70.7C296.4 46.4 272.7 32 256 32s-40.4 14.4-61.9 57.3C184.2 109.1 175.9 133 170 160zm210 32c2.6 20.5 4 41.9 4 64s-1.4 43.5-4 64h90.8c6-20.3 9.3-41.8 9.3-64s-3.2-43.7-9.3-64H380zm78.5-32c-25.9-54.5-73.1-96.9-130.9-116.3c21 28.3 37.6 68.8 47.2 116.3h83.8zm-321.1 0c9.6-47.6 26.2-88 47.2-116.3C126.7 63.1 79.4 105.5 53.6 160h83.7zm-96 32c-6 20.3-9.3 41.8-9.3 64s3.2 43.7 9.3 64H132c-2.6-20.5-4-41.9-4-64s1.4-43.5 4-64H41.3zM327.5 468.3c57.8-19.5 105-61.8 130.9-116.3H374.7c-9.6 47.6-26.2 88-47.2 116.3zm-143 0c-21-28.3-37.5-68.8-47.2-116.3H53.6c25.9 54.5 73.1 96.9 130.9 116.3zM256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512z',\n\t\twidth: '512',\n\t},\n\tgraduationCap: {\n\t\tpath: 'M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z',\n\t\twidth: '640',\n\t},\n\tgrid: {\n\t\tpath: 'M224 80c0-26.5-21.5-48-48-48H80C53.5 32 32 53.5 32 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80zm0 256c0-26.5-21.5-48-48-48H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336zM288 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zM480 336c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336z',\n\t\twidth: '512',\n\t},\n\tgripDots: {\n\t\tpath: 'M336 176a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zm-160 0a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM64 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM336 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM224 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM16 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0z',\n\t\twidth: '448',\n\t},\n\tgripDotsVertical: {\n\t\tpath: 'M48 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm0 160a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM96 416A48 48 0 1 0 0 416a48 48 0 1 0 96 0zM208 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 112a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: '280',\n\t},\n\theart: {\n\t\tpath: 'M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z',\n\t\twidth: '532',\n\t},\n\thouse: {\n\t\tpath: 'M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z',\n\t\twidth: '600',\n\t},\n\tidCard: {\n\t\tpath: 'M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z',\n\t\twidth: '575',\n\t},\n\tinstagram: {\n\t\tpath: 'M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z',\n\t\twidth: '480',\n\t},\n\tkeySkeleton: {\n\t\tpath: 'M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224c79.5 0 144-64.5 144-144S383.5 0 304 0S160 64.5 160 144c0 28.2 8.1 54.5 22.1 76.7L9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L141.3 352l86.1-86.1c22.2 14 48.5 22.1 76.7 22.1z',\n\t\twidth: '480',\n\t},\n\tlaptop: {\n\t\tpath: 'M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z',\n\t\twidth: '640',\n\t},\n\tlaptopCode: {\n\t\tpath: 'M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z',\n\t\twidth: '640',\n\t},\n\tleaf: {\n\t\tpath: 'M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z',\n\t\twidth: '512',\n\t},\n\tlifeRing: {\n\t\tpath: 'M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z',\n\t\twidth: '512',\n\t},\n\tlinkedin: {\n\t\tpath: 'M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z',\n\t\twidth: '480',\n\t},\n\tlinkSimple: {\n\t\tpath: 'M0 256C0 167.6 71.6 96 160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96 43-96 96s43 96 96 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c53 0 96-43 96-96s-43-96-96-96H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c88.4 0 160 71.6 160 160zM192 224H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32z',\n\t\twidth: '600',\n\t},\n\tlinkSimpleSlash: {\n\t\tpath: 'M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L532.4 392c45.4-28.2 75.6-78.6 75.6-136c0-88.4-71.6-160-160-160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96 43 96 96c0 43.3-28.6 79.8-67.9 91.8L399.7 288H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H318.1l-81.7-64H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-11.3 0-22.3 1.2-32.9 3.4L38.8 5.1zM121 191.4L70.7 151.7C46.6 179.7 32 216.1 32 256c0 88.4 71.6 160 160 160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-53 0-96-43-96-96c0-24.9 9.5-47.6 25-64.6z',\n\t\twidth: '640',\n\t},\n\tlistCheck: {\n\t\tpath: 'M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z',\n\t\twidth: '512',\n\t},\n\tlock: {\n\t\tpath: 'M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z',\n\t\twidth: '448',\n\t},\n\tlockOpen: {\n\t\tpath: 'M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z',\n\t\twidth: '576',\n\t},\n\tmagnifyingGlass: {\n\t\tpath: 'M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z',\n\t\twidth: '512',\n\t},\n\tmemo: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 80c0 8.8 7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 128c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 224zm0 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 320z',\n\t\twidth: '384',\n\t},\n\tmessages: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64V256c0 35.3 28.7 64 64 64H96v48c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L202.7 320H352c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM352 352H256v32c0 35.3 28.7 64 64 64H437.3l81.1 60.8c4.8 3.6 11.3 4.2 16.8 1.5s8.8-8.2 8.8-14.3V448h32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H448V256c0 53-43 96-96 96z',\n\t\twidth: '640',\n\t},\n\tminus: {\n\t\tpath: 'M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z',\n\t\twidth: '448',\n\t},\n\tmoon: {\n\t\tpath: 'M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z',\n\t\twidth: '384',\n\t},\n\tpaperclip: {\n\t\tpath: 'M375 73c-26-26-68.1-26-94.1 0L89 265C45.3 308.6 45.3 379.4 89 423s114.4 43.6 158.1 0L399 271c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L281 457c-62.4 62.4-163.5 62.4-225.9 0S-7.4 293.4 55 231L247 39C291.7-5.7 364.3-5.7 409 39s44.7 117.2 0 161.9L225.2 384.7c-31.6 31.6-83.6 28.7-111.5-6.2c-23.8-29.8-21.5-72.8 5.5-99.8L271 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L153.2 312.7c-9.7 9.7-10.6 25.1-2 35.8c10 12.5 28.7 13.6 40 2.2L375 167c26-26 26-68.1 0-94.1z',\n\t\twidth: '448',\n\t},\n\tpaperPlane: {\n\t\tpath: 'M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z',\n\t\twidth: '512',\n\t},\n\tpen: {\n\t\tpath: 'M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z',\n\t\twidth: '512',\n\t},\n\tpenField: {\n\t\tpath: 'M534.4 48C553.1 29.2 583.5 29.2 602.3 48L624.2 69.9C643.1 88.8 642.9 119.5 623.8 138.1L584 177L494.7 87.7L534.4 48zM472.1 110.4L561.2 199.5L416 341.6C409.1 348.4 400.7 353.5 391.5 356.6L320 380.5C311.4 383.4 301.9 381.1 295.4 374.7C288.9 368.3 286.7 358.8 289.6 350.1L313.4 278.8C316.5 269.4 321.8 260.8 328.8 253.8L472.1 110.4zM64.4 240C64.4 195.8 100.2 160 144.4 160L256.4 160C274.1 160 288.4 174.3 288.4 192C288.4 209.7 274.1 224 256.4 224L144.4 224C135.6 224 128.4 231.2 128.4 240L128.4 464C128.4 472.8 135.6 480 144.4 480L496.4 480C505.2 480 512.4 472.8 512.4 464L512.4 352C512.4 334.3 526.7 320 544.4 320C562.1 320 576.4 334.3 576.4 352L576.4 464C576.4 508.2 540.6 544 496.4 544L144.4 544C100.2 544 64.4 508.2 64.4 464L64.4 240zM224.4 320C242.1 320 256.4 334.3 256.4 352C256.4 369.7 242.1 384 224.4 384C206.7 384 192.4 369.7 192.4 352C192.4 334.3 206.7 320 224.4 320z',\n\t\twidth: '640',\n\t},\n\tphone: {\n\t\tpath: 'M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z',\n\t\twidth: '512',\n\t},\n\tplay: {\n\t\tpath: 'M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z',\n\t\twidth: '440',\n\t},\n\tplus: {\n\t\tpath: 'M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z',\n\t\twidth: '448',\n\t},\n\tquotesLeft: {\n\t\tpath: 'M232.896 226.425C228.749 226.425 225.964 231.118 227.632 235.301L286.746 413.714L116.988 224.541C113.406 220.543 102.507 208.132 99.9534 203.926L11.645 108.127C9.0914 103.92 11.8346 98.2854 16.4278 98.2854H227.018C227.811 98.2854 228.592 98.3754 229.349 98.5481C229.87 98.3779 230.428 98.2854 231.017 98.2854H441.605C446.22 98.2854 450.387 101.323 452.187 106.003L495.176 217.627C496.786 221.801 494.005 226.425 489.888 226.425H447.484C443.338 226.425 440.551 231.118 442.221 235.301L501.333 413.714L331.576 224.541C327.995 220.543 317.095 208.132 314.542 203.926L247.159 130.829L280.589 217.627C282.198 221.801 279.418 226.425 275.3 226.425H232.896Z',\n\t\twidth: '512',\n\t},\n\tquotesRight: {\n\t\tpath: 'M289.771 226.425C293.918 226.425 296.703 231.118 295.035 235.301L235.921 413.714L405.679 224.541C409.261 220.543 420.16 208.132 422.713 203.926L511.022 108.127C513.575 103.92 510.832 98.2854 506.239 98.2854H295.649C294.855 98.2854 294.075 98.3754 293.317 98.5481C292.797 98.3779 292.239 98.2854 291.65 98.2854H81.0613C76.4469 98.2854 72.2795 101.323 70.48 106.003L27.4902 217.627C25.8806 221.801 28.6614 226.425 32.7787 226.425H75.183C79.3291 226.425 82.1152 231.118 80.4459 235.301L21.3334 413.714L191.09 224.541C194.672 220.543 205.571 208.132 208.125 203.926L275.507 130.829L242.078 217.627C240.468 221.801 243.249 226.425 247.366 226.425H289.771Z',\n\t\twidth: '512',\n\t},\n\trectangleList: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z',\n\t\twidth: '575',\n\t},\n\trocketLaunch: {\n\t\tpath: 'M117.8 128l89.3 0C286.9-3.7 409.5-8.5 483.9 5.3c11.6 2.2 20.7 11.2 22.8 22.8c13.8 74.4 9 197-122.7 276.9l0 89.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-114.7c0-22.6-9-44.3-25-60.3s-37.7-25-60.3-25L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3zM424 128a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM166.5 470C132.3 504.3 66 511 28.3 511.9c-16 .4-28.6-12.2-28.2-28.2C1 446 7.7 379.7 42 345.5c34.4-34.4 90.1-34.4 124.5 0s34.4 90.1 0 124.5zm-46.7-36.4c11.4-11.4 11.4-30 0-41.4s-30-11.4-41.4 0c-10.1 10.1-13 28.5-13.7 41.3c-.5 8 5.9 14.3 13.9 13.9c12.8-.7 31.2-3.7 41.3-13.7z',\n\t\twidth: '512',\n\t},\n\trobot: {\n\t\tpath: 'M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z',\n\t\twidth: '640',\n\t},\n\trotate: {\n\t\tpath: 'M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z',\n\t\twidth: '512',\n\t},\n\trotateClock: {\n\t\tpath: 'M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z',\n\t\twidth: '512',\n\t},\n\trotateLeft: {\n\t\tpath: 'M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z',\n\t\twidth: '512',\n\t},\n\trotateRight: {\n\t\tpath: 'M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z',\n\t\twidth: '512',\n\t},\n\trss: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '448',\n\t},\n\tsave: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z',\n\t\twidth: '448',\n\t},\n\tserver: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z',\n\t\twidth: '512',\n\t},\n\tshield: {\n\t\tpath: 'M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM80 141.4L256 66.8V224H90.1c-6.9-30-9.8-58.5-10.1-82.6zM256 444.8V224H422c-18.5 80.5-65.5 172.2-166 220.8z',\n\t\twidth: '512',\n\t},\n\tshovel: {\n\t\tpath: 'M361.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-44.1 44.1c-18.7 18.7-44.1 29.3-70.6 29.3c-15.9 0-30.9-3.7-44.3-10.3l-97 97 50.7 50.7c12.5 12.5 12.5 32.8 0 45.3l-58.5 58.5c-30 30-70.7 46.9-113.1 46.9H32c-17.7 0-32-14.3-32-32V386.3c0-42.4 16.9-83.1 46.9-113.1l58.5-58.5c12.5-12.5 32.8-12.5 45.3 0l50.7 50.7 97-97C291.7 155.1 288 140 288 124.1c0-26.5 10.5-51.9 29.3-70.6L361.4 9.4zM384 77.3L362.5 98.7c-6.7 6.7-10.5 15.9-10.5 25.4c0 19.8 16.1 35.9 35.9 35.9c9.5 0 18.6-3.8 25.4-10.5L434.7 128 384 77.3z',\n\t\twidth: '512',\n\t},\n\tsiren: {\n\t\tpath: 'M69.3 36l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7zM597.3 76l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 192H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM144 352l25-199.9c4-32 31.2-56.1 63.5-56.1h175c32.3 0 59.5 24 63.5 56.1L496 352H234.1l21.8-174c1.1-8.8-5.1-16.8-13.9-17.9s-16.8 5.1-17.9 13.9L201.9 352H144zM96 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416z',\n\t\twidth: '640',\n\t},\n\tsitemap: {\n\t\tpath: 'M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z',\n\t\twidth: '600',\n\t},\n\tslack: {\n\t\tpath: 'M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z',\n\t\twidth: '480',\n\t},\n\tslashForward: {\n\t\tpath: 'M303.9 4.2c15.3 8.8 20.7 28.3 11.9 43.7l-256 448c-8.8 15.3-28.3 20.7-43.7 11.9S-4.6 479.5 4.2 464.1l256-448C269 .8 288.5-4.6 303.9 4.2z',\n\t\twidth: '320',\n\t},\n\tslidersSimple: {\n\t\tpath: 'M96 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm90.5 0L480 320c17.7 0 32 14.3 32 32s-14.3 32-32 32l-293.5 0c-13.2 37.3-48.7 64-90.5 64c-53 0-96-43-96-96s43-96 96-96c41.8 0 77.4 26.7 90.5 64zM384 160a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-58.5-32c13.2-37.3 48.7-64 90.5-64c53 0 96 43 96 96s-43 96-96 96c-41.8 0-77.4-26.7-90.5-64L32 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l293.5 0z',\n\t\twidth: '512',\n\t},\n\tsnowflake: {\n\t\tpath: 'M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z',\n\t\twidth: '470',\n\t},\n\tsparkles: {\n\t\tpath: 'M327.5 85.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 128l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 128l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 64 426.8 7.5C425.1 3 420.8 0 416 0s-9.1 3-10.8 7.5L384 64 327.5 85.2zM205.1 73.3c-2.6-5.7-8.3-9.3-14.5-9.3s-11.9 3.6-14.5 9.3L123.3 187.3 9.3 240C3.6 242.6 0 248.3 0 254.6s3.6 11.9 9.3 14.5l114.1 52.7L176 435.8c2.6 5.7 8.3 9.3 14.5 9.3s11.9-3.6 14.5-9.3l52.7-114.1 114.1-52.7c5.7-2.6 9.3-8.3 9.3-14.5s-3.6-11.9-9.3-14.5L257.8 187.4 205.1 73.3zM384 384l-56.5 21.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 448l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 448l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 384l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L384 384z',\n\t\twidth: '512',\n\t},\n\tsquareCheck: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '448',\n\t},\n\tsquareCode: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm262.2 71.9c-8.9 9.9-8.1 25 1.8 33.9L324.1 256l-60.2 54.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72c-9.9-8.9-25-8.1-33.9 1.8zm-78.1 33.9c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72c-5.1 4.6-7.9 11-7.9 17.8s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L123.9 256l60.2-54.2z',\n\t\twidth: '448',\n\t},\n\tsquareMinus: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: '448',\n\t},\n\tsquarePen: {\n\t\tpath: 'M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z',\n\t\twidth: '512',\n\t},\n\tsquareQuestion: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm73.8 133.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L248 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H190.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM192 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '448',\n\t},\n\tsquareTerminal: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm70.3 55.8c-9 9.8-8.3 25 1.5 33.9L148.5 256 71.8 326.3c-9.8 9-10.4 24.1-1.5 33.9s24.1 10.4 33.9 1.5l96-88c5-4.5 7.8-11 7.8-17.7s-2.8-13.1-7.8-17.7l-96-88c-9.8-9-25-8.3-33.9 1.5zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z',\n\t\twidth: '448',\n\t},\n\tstar: {\n\t\tpath: 'M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z',\n\t\twidth: '576',\n\t},\n\tsun: {\n\t\tpath: 'M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z',\n\t\twidth: '512',\n\t},\n\ttable: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm128 0V224H448V96H128zM448 288H128V416H448V288z',\n\t\twidth: '512',\n\t},\n\tterminal: {\n\t\tpath: 'M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z',\n\t\twidth: '576',\n\t},\n\tthreads: {\n\t\tpath: 'M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z',\n\t\twidth: '440',\n\t},\n\tthumbsDown: {\n\t\tpath: 'M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z',\n\t\twidth: '512',\n\t},\n\tthumbsUp: {\n\t\tpath: 'M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z',\n\t\twidth: '512',\n\t},\n\ttrash: {\n\t\tpath: 'M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z',\n\t\twidth: '448',\n\t},\n\ttriangleExclamation: {\n\t\tpath: 'M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z',\n\t\twidth: '512',\n\t},\n\ttwitter: {\n\t\tpath: 'M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z',\n\t\twidth: '512',\n\t},\n\tupload: {\n\t\tpath: 'M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z',\n\t\twidth: '512',\n\t},\n\tuser: {\n\t\tpath: 'M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z',\n\t\twidth: '448',\n\t},\n\tuserGear: {\n\t\tpath: 'M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z',\n\t\twidth: '640',\n\t},\n\tuserPlus: {\n\t\tpath: 'M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z',\n\t\twidth: '640',\n\t},\n\tusers: {\n\t\tpath: 'M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z',\n\t\twidth: '640',\n\t},\n\tvideo: {\n\t\tpath: 'M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z',\n\t\twidth: '576',\n\t},\n\twavePulse: {\n\t\tpath: 'M319.1 0c14.8-.4 27.9 9.3 31.8 23.6l74 271.2 17.7-35.4c10.8-21.7 33-35.4 57.2-35.4H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H499.8L444.6 398.3c-5.9 11.9-18.6 18.8-31.8 17.5s-24.2-10.6-27.7-23.4L323.7 167.3 255.3 486.7c-3.1 14.4-15.5 24.8-30.2 25.3s-27.8-9.1-31.8-23.2L135.9 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H135.9c28.6 0 53.7 18.9 61.5 46.4L219.6 348 288.7 25.3C291.8 10.9 304.4 .4 319.1 0z',\n\t\twidth: '640',\n\t},\n\twindowRestore: {\n\t\tpath: 'M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z',\n\t\twidth: '512',\n\t},\n\twordpress: {\n\t\tpath: 'M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8 .9 0 1.8 .1 2.8 .2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7 .3 13.7 .3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z',\n\t\twidth: '512',\n\t},\n\twrench: {\n\t\tpath: 'M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z',\n\t\twidth: '512',\n\t},\n\txmark: {\n\t\tpath: 'M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z',\n\t\twidth: '384',\n\t},\n\txmarkLarge: {\n\t\tpath: 'M41 39C31.6 29.7 16.4 29.7 7 39S-2.3 63.6 7 73l183 183L7 439c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l183-183L407 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-183-183L441 73c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-183 183L41 39z',\n\t\twidth: '500',\n\t},\n\txTwitter: {\n\t\tpath: 'M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z',\n\t\twidth: '500',\n\t},\n\tyoutube: {\n\t\tpath: 'M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z',\n\t\twidth: '576',\n\t},\n} as const;\n\nexport const iconList = Object.keys(svgData) as PDSIcon[];\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tisValidElement,\n\tuseState,\n} from 'react';\nimport hashSum from 'hash-sum';\n\nimport { isValidImageSrc, mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './avatar.css';\n\nconst gradients = [\n\t'dawn',\n\t'dragonfruit',\n\t'dusk',\n\t'earth',\n\t'fall',\n\t'grape',\n\t'midnight',\n\t'moon',\n\t'plum',\n\t'spring',\n\t'summer',\n\t'sun',\n\t'sundown',\n\t'sunrise',\n\t'twilight',\n\t'winter',\n];\n\n// Creates consistent color based on the uniqueId\nconst uniqueIdToGradient = (uniqueId: string) => {\n\tconst pos = parseInt(hashSum(uniqueId), 16);\n\tconst gradient = gradients[pos % gradients.length];\n\treturn gradient;\n};\n\nexport interface AvatarProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aria label for the avatar when used as a link. This is required if using a link.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * If true, a user icon will be displayed with the fallback gradient when an image is not provided.\n\t */\n\thasUserFallback?: boolean;\n\t/**\n\t * Avatar image.\n\t */\n\timageSrc?: string;\n\t/**\n\t * A link element using the router of your choice. Leave empty for no link.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Avatar size.\n\t */\n\tsize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\t/**\n\t * Unique ID associated with the avatar. Can be workspace ID, user ID, email, etc.\n\t */\n\tuniqueId?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Avatar UI component\n */\nexport const Avatar = ({\n\tariaLabel,\n\thasUserFallback = false,\n\timageSrc,\n\tlinkContent,\n\tsize = 'md',\n\tuniqueId,\n\tclassName,\n\t...props\n}: AvatarProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-avatar';\n\tconst sizeClass = `${baseClass}--${size}`;\n\tconst hasImageClass = imageSrc ? `${baseClass}--image` : null;\n\tconst [doesImageHaveError, setImageHaveError] = useState(undefined);\n\n\t// If an image is not provided, use a random gradient based on the uniqueId.\n\tconst gradientStyle = uniqueId\n\t\t? `var(--pds-color-gradient-avatar-${uniqueIdToGradient(uniqueId)})`\n\t\t: null;\n\n\t// Default fallback styles.\n\tconst fallbackStyles = {\n\t\tbackgroundImage: gradientStyle,\n\t\tborderRadius: '100%',\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tdisplay: 'flex',\n\t\talignItems: 'center',\n\t\tjustifyContent: 'center',\n\t};\n\n\t// Preprocess image content.\n\tconst imageContent =\n\t\tisValidImageSrc(imageSrc) && !doesImageHaveError ? (\n\t\t\t<img\n\t\t\t\tsrc={`${imageSrc}`}\n\t\t\t\tclassName={`${baseClass}__image`}\n\t\t\t\talt=''\n\t\t\t\tonLoad={() => setImageHaveError(false)}\n\t\t\t\tonError={() => setImageHaveError(true)}\n\t\t\t/>\n\t\t) : (\n\t\t\t<span style={fallbackStyles}>\n\t\t\t\t{hasUserFallback && (\n\t\t\t\t\t<Icon iconName='user' className={`${baseClass}__user-icon`} />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t);\n\n\t// Preprocess content for either static or interactive avatars.\n\tconst staticContent = (\n\t\t<span className={`${baseClass}__content`}>{imageContent}</span>\n\t);\n\n\tconst interactiveContent = isValidElement(linkContent)\n\t\t? cloneElement(\n\t\t\t\tlinkContent as ReactElement,\n\t\t\t\t{\n\t\t\t\t\t...linkContent.props,\n\t\t\t\t\tclassName: `${baseClass}__content ${baseClass}__content--link`,\n\t\t\t\t\t'aria-label': ariaLabel,\n\t\t\t\t},\n\t\t\t\timageContent,\n\t\t\t)\n\t\t: null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, sizeClass, hasImageClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{linkContent ? interactiveContent : staticContent}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport './indicator-badge.css';\nimport { mergeClasses } from '@libs/components/utils';\n\n/**\n * IndicatorBadge component props\n */\nexport interface IndicatorBadgeProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Badge color\n\t */\n\tcolor:\n\t\t| 'critical'\n\t\t| 'info'\n\t\t| 'success'\n\t\t| 'warning'\n\t\t| 'neutral'\n\t\t| 'brand'\n\t\t| 'silver'\n\t\t| 'gold'\n\t\t| 'platinum'\n\t\t| 'diamond';\n\t/**\n\t * Badge text.\n\t */\n\tlabel: string;\n\t/**\n\t * Badge size\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * IndicatorBadge UI component\n */\nexport const IndicatorBadge = ({\n\tlabel,\n\tsize = 'md',\n\tcolor = 'neutral',\n\tclassName,\n\t...props\n}: IndicatorBadgeProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-indicator-badge';\n\tconst colorClass = `${baseClass}--${color}`;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcolorClass,\n\t\t\t\tsizeClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t</span>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport './status-badge.css';\n\n/**\n * StatusBadge component props\n */\nexport interface StatusBadgeProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Background color for badge\n\t */\n\tcolor?: 'transparent' | 'neutral' | 'reverse';\n\t/**\n\t * Should the badge show a status indicator.\n\t */\n\thasStatusIndicator?: boolean;\n\t/**\n\t * Text for badge.\n\t */\n\tlabel: string;\n\t/**\n\t * Translatable text for status indicator — for screen readers.\n\t */\n\tstatusIndicatorText?: string;\n\t/**\n\t * Status type for badge. Only renders if `hasStatusIndicator` is true.\n\t */\n\tstatusType?:\n\t\t| 'success'\n\t\t| 'info'\n\t\t| 'frozen'\n\t\t| 'critical'\n\t\t| 'warning'\n\t\t| 'discovery'\n\t\t| 'disabled';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * StatusBadge UI component\n */\nexport const StatusBadge = ({\n\tcolor = 'transparent',\n\thasStatusIndicator = false,\n\tlabel,\n\tstatusIndicatorText = 'Status indicator: ',\n\tstatusType,\n\tclassName,\n\t...props\n}: StatusBadgeProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-status-badge';\n\tconst colorClass = `${baseClass}--${color}`;\n\tconst statusClass = `${baseClass}__status`;\n\tconst statusClassMod = statusType ? `${statusClass}--${statusType}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, colorClass, className ?? '']\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasStatusIndicator === true && (\n\t\t\t\t<span className={[statusClass, statusClassMod].join(' ').trim()}>\n\t\t\t\t\t{statusType && (\n\t\t\t\t\t\t<span className='visually-hidden'>\n\t\t\t\t\t\t\t{statusIndicatorText} {statusType}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './tally.css';\n\ninterface TypeLabels {\n\tinfo?: string;\n\tsuccess?: string;\n\tneutral?: string;\n\twarning?: string;\n\tcritical?: string;\n}\n\n/**\n * Prop types for Tally\n */\nexport interface TallyProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Label text\n\t */\n\tlabel: string | number;\n\t/**\n\t * Notification type\n\t */\n\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t/**\n\t * Message type labels.\n\t */\n\ttypeLabels?: TypeLabels;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Tally UI component\n */\nexport const Tally = ({\n\tlabel,\n\ttype = 'neutral',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tneutral: '',\n\t},\n\tclassName,\n\t...props\n}: TallyProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-tally';\n\tconst colorClass = `${baseClass}--${type}`;\n\n\t// Label by type\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, colorClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__label`}>\n\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t{label}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTally.displayName = 'Tally';\n","export const Z_INDEX_NAVIGATION = 100;\nexport const Z_INDEX_DROPDOWN = 300;\nexport const Z_INDEX_NOTIFICATIONS = 500;\nexport const Z_INDEX_OVERLAY = 700;\nexport const Z_INDEX_MODAL = 900;\nexport const Z_INDEX_MAX = 9999;\nexport const Z_INDEX_RESET = 0;\n\nexport const Z_INDEX = {\n\tZ_INDEX_NAVIGATION,\n\tZ_INDEX_DROPDOWN,\n\tZ_INDEX_NOTIFICATIONS,\n\tZ_INDEX_OVERLAY,\n\tZ_INDEX_MODAL,\n\tZ_INDEX_MAX,\n\tZ_INDEX_RESET,\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\nimport {\n\tuseFloating,\n\tautoUpdate,\n\toffset,\n\tflip,\n\tshift,\n\tuseHover,\n\tuseFocus,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n\tFloatingPortal,\n\tPlacement,\n} from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport { Z_INDEX_OVERLAY } from '@vars/z-index';\n\nimport { FuiOffset } from '@libs/types/custom-types';\n\nimport './tooltip.css';\n\ninterface TooltipProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Text to display in tooltip container.\n\t */\n\tcontent: string;\n\t/**\n\t * String or HTML content to use as the trigger instead of an icon. Leave null to use the icon.\n\t */\n\tcustomTrigger?: ReactNode;\n\t/**\n\t * The spacing between the trigger and the tooltip in pixels. Use the default value (in most cases) when using an icon trigger.\n\t */\n\toffsetValue?: FuiOffset;\n\t/**\n\t * The preferred placement of the tooltip relative to the trigger.\n\t */\n\tpreferredPlacement?: Placement;\n\t/**\n\t * The accessible text for the trigger. Only necessary when the trigger is an icon.\n\t */\n\ttriggerAccessibleText?: string;\n\t/**\n\t * Icon to trigger tooltip\n\t */\n\ttriggerIcon?: 'circleInfo' | 'circleQuestion' | 'circleExclamation';\n\t/**\n\t * Color of the trigger icon. Uses PDS default text color options.\n\t */\n\ttriggerIconColor?: 'default' | 'default-secondary' | 'critical';\n\t/**\n\t * Size of the trigger icon. Uses PDS Icon sizing.\n\t */\n\ttriggerIconSize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Z-index value for the tooltip container. In most cases, the default value should be retained.\n\t */\n\tzIndex?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Tooltip UI component\n */\nexport const Tooltip = ({\n\tcontent,\n\tcustomTrigger = null,\n\toffsetValue = 8,\n\tpreferredPlacement = 'top',\n\ttriggerAccessibleText = 'Show more information',\n\ttriggerIcon = 'circleInfo',\n\ttriggerIconColor = 'default',\n\ttriggerIconSize = 'sm',\n\tzIndex = Z_INDEX_OVERLAY,\n\tclassName,\n\t...props\n}: TooltipProps) => {\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// Get type of custom trigger.\n\tconst triggerType = typeof customTrigger;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tooltip';\n\tconst customTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger-custom`,\n\t\ttriggerType === 'string' ? `${baseClass}__trigger-text` : null,\n\t]);\n\tconst iconTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger`,\n\t\t`${baseClass}__trigger--${triggerIconColor}`,\n\t]);\n\n\t// FUI config.\n\tconst { refs, floatingStyles, context } = useFloating({\n\t\tplacement: preferredPlacement,\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(offsetValue), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst hover = useHover(context, {\n\t\trestMs: 300,\n\t\tdelay: { open: 500, close: 0 },\n\t\tmove: false,\n\t});\n\tconst focus = useFocus(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'tooltip' });\n\n\tconst { getReferenceProps, getFloatingProps } = useInteractions([\n\t\thover,\n\t\tfocus,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{customTrigger ? (\n\t\t\t\t<span\n\t\t\t\t\tclassName={customTriggerClasses}\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t{customTrigger}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<button\n\t\t\t\t\ttype='button'\n\t\t\t\t\taria-label={triggerAccessibleText}\n\t\t\t\t\tclassName={iconTriggerClasses}\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={triggerIcon}\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonSize={triggerIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t{isOpen && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__container`}\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tstyle={{ ...floatingStyles, zIndex: zIndex }}\n\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{content}\n\t\t\t\t\t</div>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './branch-diff.css';\n\n/**\n * Prop types for BranchDiff\n */\nexport interface BranchDiffProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Is the component in the process of loading?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Text to be displayed in tooltip while component is loading.\n\t */\n\tloadingText?: string;\n\t/**\n\t * The number of commits the current branch is ahead of its upstream branch.\n\t */\n\tnumberAhead: number;\n\t/**\n\t * A description for the `numberAhead` value.\n\t */\n\tnumberAheadDescription?: string;\n\t/**\n\t * The number of commits the current branch is behind its upstream branch.\n\t */\n\tnumberBehind: number;\n\t/**\n\t * A description for the `numberBehind` value.\n\t */\n\tnumberBehindDescription?: string;\n\t/**\n\t * Custom width in rems for the component. This will override the default.\n\t */\n\tcomponentWidth?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * BranchDiff UI component\n */\nexport const BranchDiff = ({\n\tisLoading,\n\tloadingText = 'Loading...',\n\tnumberAhead,\n\tnumberAheadDescription = 'commits ahead of main',\n\tnumberBehind,\n\tnumberBehindDescription = 'commits behind main',\n\tcomponentWidth,\n\tclassName,\n\t...props\n}: BranchDiffProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-branch-diff';\n\tconst loadingClass = isLoading ? `${baseClass}--loading` : null;\n\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t// Handle componentWidth\n\tconst computedWidth =\n\t\tcomponentWidth !== null && componentWidth > 0\n\t\t\t? `${componentWidth}rem`\n\t\t\t: '100%';\n\n\t// Ensure negative numbers are treated as 0\n\tlet sanitizedNumberAhead = Math.max(0, numberAhead);\n\tlet sanitizedNumberBehind = Math.max(0, numberBehind);\n\n\t// If loading, set both numbers to 1\n\tif (isLoading) {\n\t\tsanitizedNumberAhead = 1;\n\t\tsanitizedNumberBehind = 1;\n\t}\n\n\t// Determine the maximum commits\n\tconst maxCommits = Math.max(sanitizedNumberAhead, sanitizedNumberBehind);\n\n\t// Calculate widths relative to the maximum\n\tlet widthBehind =\n\t\tmaxCommits > 0 ? (sanitizedNumberBehind / maxCommits) * 100 : 0;\n\tlet widthAhead =\n\t\tmaxCommits > 0 ? (sanitizedNumberAhead / maxCommits) * 100 : 0;\n\n\t// Enforce a minimum width of 10% for the smaller bar\n\tconst minPercentage = 10;\n\tif (widthBehind < minPercentage) {\n\t\twidthBehind = minPercentage;\n\t\twidthAhead = 100 - minPercentage;\n\t} else if (widthAhead < minPercentage) {\n\t\twidthAhead = minPercentage;\n\t\twidthBehind = 100 - minPercentage;\n\t}\n\n\t// Prepare tooltip text\n\tconst tooltipText = isLoading\n\t\t? loadingText\n\t\t: `${sanitizedNumberBehind} ${numberBehindDescription} & ${sanitizedNumberAhead} ${numberAheadDescription}`;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, loadingClass, className ?? ''])}\n\t\t\tstyle={{ width: computedWidth }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Tooltip\n\t\t\t\tcontent={tooltipText}\n\t\t\t\tpreferredPlacement='top'\n\t\t\t\tcustomTrigger={\n\t\t\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${baseClass}__segment ${baseClass}__segment--behind`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`${baseClass}__number`}>\n\t\t\t\t\t\t\t\t{!isLoading && sanitizedNumberBehind}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{sanitizedNumberBehind > 0 && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t\t`${baseClass}__line ${baseClass}__line--behind`,\n\t\t\t\t\t\t\t\t\t\tpulseClass,\n\t\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\t\tstyle={{ width: `${widthBehind}%` }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${baseClass}__segment ${baseClass}__segment--ahead`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`${baseClass}__number`}>\n\t\t\t\t\t\t\t\t{!isLoading && sanitizedNumberAhead}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{sanitizedNumberAhead > 0 && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t\t`${baseClass}__line ${baseClass}__line--ahead`,\n\t\t\t\t\t\t\t\t\t\tpulseClass,\n\t\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\t\tstyle={{ width: `${widthAhead}%` }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import React, { ReactNode, createElement } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { HeadingLevel } from '@libs/types/custom-types';\n\n// Heading level utility component.\n// This is used for elements that need to render as a heading (h2, h3, h4) or span.\ninterface HxProps {\n\tbaseClass?: string;\n\tchildren?: ReactNode;\n\tid?: string;\n\tlevel: HeadingLevel;\n\tclassName?: string;\n}\n\nexport const Hx = ({\n\tbaseClass,\n\tchildren,\n\tid,\n\tlevel,\n\tclassName,\n\t...props\n}: HxProps) => {\n\t// Set up classes.\n\tconst headingClass = baseClass ? `${baseClass}__heading` : null;\n\n\t// Preprocess heading element type.\n\tconst HxElement = level;\n\n\t// Render the appropriate heading level\n\treturn createElement(\n\t\tHxElement,\n\t\t{ className: mergeClasses([headingClass, className]), id, ...props },\n\t\tchildren,\n\t);\n};\n\n// Extract text if it's a ReactNode, convert it if it's a number\nexport const extractText = (node: ReactNode): string => {\n\tif (typeof node === 'string' || typeof node === 'number') {\n\t\treturn String(node);\n\t}\n\tif (React.isValidElement(node)) {\n\t\treturn React.Children.toArray(node.props.children)\n\t\t\t.map(extractText)\n\t\t\t.join('');\n\t}\n\treturn '';\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEventHandler,\n\tReactNode,\n\tforwardRef,\n} from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { useId } from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport { SelectOptionType, SelectOptionGroupType } from './Select/Select';\n\nimport './input-utilities.css';\n\n// Input conditional field classes.\nexport const inputCommonClasses = {\n\tbase: 'pds-input',\n\tdisabled: 'pds-is-disabled',\n\trequired: 'pds-is-required',\n\terror: 'pds-has-error',\n\tsuccess: 'pds-has-success',\n\treadonly: 'pds-is-readonly',\n};\n\n// Process input width. Convert to rems.\nexport const getInputWidthStyle = (inputWidth: number) =>\n\tinputWidth ? { width: `${inputWidth / 16}rem` } : null;\n\n// Function to strip http:// or https:// from input value\nexport const stripUrlProtocol = (value: string): string => {\n\treturn value.replace(/^(https?:\\/\\/)/, '');\n};\n\n// Required Icon.\nexport const RequiredIcon = () => (\n\t<span className='pds-input-label__required'>\n\t\t<Icon\n\t\t\ticonName='asterisk'\n\t\t\ticonSize='sm'\n\t\t\tclassName='pds-input-label__required-icon'\n\t\t/>\n\t</span>\n);\n\n// InputLabel component.\ninterface InputLabelProps {\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Label text.\n\t */\n\tlabel: string;\n\t/**\n\t * Should the label be visible?\n\t */\n\tshowLabel: boolean;\n\t/**\n\t * Is the field required?\n\t */\n\trequired: boolean;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled: boolean;\n\t/**\n\t * Is the label a legend? Should be used when the input is a fieldset.\n\t */\n\tisLegend?: boolean;\n\t/**\n\t * Not a true `label`, but a description of the field.\n\t * Used for inputs that have their label built into the element itself.\n\t */\n\tisPseudoLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\nexport const InputLabel = ({\n\tid,\n\tlabel,\n\tshowLabel = true,\n\trequired,\n\tdisabled,\n\tisLegend,\n\tisPseudoLabel,\n\ttooltipText = null,\n\tclassName,\n}: InputLabelProps) => {\n\tconst labelClasses = mergeClasses([\n\t\t'pds-input-label',\n\t\t!showLabel ? 'visually-hidden' : null,\n\t\tclassName ?? '',\n\t]);\n\n\tconst labelContent = (\n\t\t<>\n\t\t\t{label}\n\t\t\t{required && !disabled && <RequiredIcon />}\n\t\t\t{tooltipText && (\n\t\t\t\t<Tooltip content={tooltipText}>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<Icon iconName='circleInfo' iconSize='sm' />\n\t\t\t\t\t</span>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// If it's a legend, return a legend element.\n\tif (isLegend) {\n\t\treturn (\n\t\t\t<legend className={labelClasses} id={`${id}-legend`}>\n\t\t\t\t{labelContent}\n\t\t\t</legend>\n\t\t);\n\t}\n\n\t// If it's a pseudo label, return a span element.\n\tif (isPseudoLabel) {\n\t\treturn (\n\t\t\t<span className={labelClasses} id={`${id}-field-label`}>\n\t\t\t\t{labelContent}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// Otherwise, return a label element.\n\treturn (\n\t\t<label htmlFor={id} className={labelClasses} id={`${id}-label`}>\n\t\t\t{labelContent}\n\t\t</label>\n\t);\n};\n\n// InputMessage component.\nexport const InputMessage = ({\n\tforInputGroup = false,\n\tid,\n\tmessage,\n\thasValidationMessage,\n\tvalidationMessageHasDecorators,\n\tvalidationStatus,\n\tclassName,\n}: {\n\tforInputGroup?: boolean;\n\tid: string;\n\tmessage?: string | ReactNode;\n\thasValidationMessage?: boolean;\n\tvalidationMessageHasDecorators?: boolean;\n\tvalidationStatus?: string;\n\tclassName?: string;\n}) => {\n\tconst baseClass = 'pds-input-message';\n\tconst statusClass =\n\t\tvalidationStatus && hasValidationMessage\n\t\t\t? `${baseClass}--${validationStatus}`\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, statusClass, className ?? ''])}\n\t\t\tid={forInputGroup ? `${id}__message-hidden` : `${id}__message`}\n\t\t\trole={validationStatus === 'error' ? 'alert' : null}\n\t\t>\n\t\t\t{validationMessageHasDecorators && validationStatus && (\n\t\t\t\t<InputDecorator variant={validationStatus as DecoratorVariants} />\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__text`}>{message}</div>\n\t\t</div>\n\t);\n};\n\n// InputDecorator component.\ntype DecoratorVariants = 'search' | 'error' | 'success' | 'filter';\n\nconst iconVariants: Record<DecoratorVariants, PDSIcon> = {\n\tsearch: 'magnifyingGlass',\n\terror: 'triangleExclamation',\n\tsuccess: 'check',\n\tfilter: 'barsFilter',\n};\n\nexport const InputDecorator = ({ variant }: { variant: DecoratorVariants }) => {\n\tconst baseClass = 'pds-input-decorator';\n\n\treturn (\n\t\t<div className={mergeClasses([baseClass, `${baseClass}--${variant}`])}>\n\t\t\t<Icon\n\t\t\t\ticonName={iconVariants[variant]}\n\t\t\t\ticonSize='md'\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n// SearchShortcut component.\nexport const SearchShortcut = ({\n\tinputId,\n\tshortcutLabel,\n}: {\n\tinputId: string;\n\tshortcutLabel: string;\n}) => {\n\t// Handle search shortcut.\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst handleSearchShortcut = (e: any) => {\n\t\tconst element = document.getElementById(inputId);\n\n\t\tif (element) {\n\t\t\telement.focus();\n\t\t}\n\t\te.preventDefault();\n\t};\n\n\t// Set up search shortcut hotkey.\n\tuseHotkeys('/', handleSearchShortcut);\n\n\treturn (\n\t\t<div className='pds-input-search-shortcut'>\n\t\t\t<span className='visually-hidden'>{shortcutLabel}</span>\n\t\t\t<Icon iconName='slashForward' iconSize='md' />\n\t\t</div>\n\t);\n};\n\n// ClearButton component.\nexport const ClearButton = ({\n\tid,\n\tclearLabel,\n\thandleClearInput,\n}: {\n\tid: string;\n\tclearLabel: string;\n\thandleClearInput: MouseEventHandler<HTMLButtonElement>;\n}) => {\n\treturn (\n\t\t<button\n\t\t\ttype='button'\n\t\t\tclassName='pds-input-clear-button'\n\t\t\ttitle={clearLabel}\n\t\t\taria-controls={id}\n\t\t\tonClick={handleClearInput}\n\t\t>\n\t\t\t<Icon iconName='xmark' iconSize='md' />\n\t\t</button>\n\t);\n};\n\n// CharacterCounter component.\nexport const CharacterCounter = ({\n\tid,\n\tcurrentLength,\n\tmaxLength,\n\toverLimitMessage = 'Character limit exceeded by',\n}: {\n\tid: string;\n\tcurrentLength: number;\n\tmaxLength: number;\n\toverLimitMessage: string;\n}) => {\n\tconst isOverLimit = currentLength > maxLength;\n\tconst overLimitCount = currentLength - maxLength;\n\n\tconst baseClass = 'pds-input-character-counter';\n\tconst overLimitClass = isOverLimit ? `${baseClass}--overLimit` : null;\n\n\treturn (\n\t\t<div\n\t\t\tid={`${id}__counter`}\n\t\t\tclassName={mergeClasses([baseClass, overLimitClass])}\n\t\t>\n\t\t\t{currentLength}/{maxLength}\n\t\t\t<span className='visually-hidden' aria-live='polite'>\n\t\t\t\t{isOverLimit && `${overLimitMessage} ${overLimitCount}`}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\n// HiddenLabel component.\nexport const HiddenLabel = ({ label, ...props }) => (\n\t<span className='visually-hidden' {...props}>\n\t\t{label}\n\t</span>\n);\n\n// Select option group component.\nexport const isOptionGroup = (\n\toption: SelectOptionType | SelectOptionGroupType,\n): option is SelectOptionGroupType => {\n\treturn 'options' in option;\n};\n\n// Select option component.\n// For use with Combobox and Select components.\ninterface SelectOptionProps extends ComponentPropsWithoutRef<'li'> {\n\tchildren?: ReactNode;\n\tisActive?: boolean;\n\tclassName?: string;\n}\n\nexport const SelectOption = forwardRef(\n\t(\n\t\t{ children, isActive, className, ...props }: SelectOptionProps,\n\t\tref: React.Ref<HTMLLIElement>,\n\t) => {\n\t\tconst id = useId();\n\n\t\tconst baseClass = 'pds-input__select-option';\n\t\tconst activeClass = isActive ? `${baseClass}--active` : null;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tref={ref}\n\t\t\t\trole='option'\n\t\t\t\tid={id}\n\t\t\t\taria-selected={isActive}\n\t\t\t\tclassName={mergeClasses([baseClass, activeClass, className ?? ''])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</li>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { HiddenLabel } from '@components/inputs/input-utilities';\n\nimport './spinner.css';\n\nexport interface SpinnerProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Spinner color\n\t */\n\tcolorType?: 'full-color' | 'monochromatic' | 'monochromatic-reverse';\n\t/**\n\t * Should the spinner be an inline element? If true, it will be displayed inline-block without a visible label.\n\t */\n\tisInline?: boolean;\n\t/**\n\t * Spinner label. Will be displayed below the Spinner if `showLabel` is true.\n\t */\n\tlabel?: string;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Spinner size\n\t */\n\tsize?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Spinner UI component\n */\nexport const Spinner = ({\n\tcolorType = 'full-color',\n\tisInline = false,\n\tlabel = 'Loading',\n\tshowLabel = false,\n\tsize = 'md',\n\tclassName = '',\n\t...props\n}: SpinnerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-spinner';\n\tconst colorClass =\n\t\tcolorType !== 'full-color' ? `${baseClass}--${colorType}` : null;\n\tconst sizeClass = `${baseClass}--${size}`;\n\tconst displayClass = isInline ? `${baseClass}--inline` : null;\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={[baseClass, colorClass, displayClass, sizeClass, className]\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\trole='status'\n\t\t\taria-hidden='true'\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className={`${baseClass}__icon`}></span>\n\t\t\t{showLabel && !isInline ? (\n\t\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t\t) : (\n\t\t\t\t<HiddenLabel label={label} />\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tRef,\n\tMouseEvent,\n\tforwardRef,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { extractText } from '@libs/components/utility-components';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './button.css';\n\ninterface ButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: 'button' | 'submit' | 'reset';\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: 'label-only' | 'icon-start' | 'icon-end';\n\t/**\n\t * Which icon to render\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * is the button full width?\n\t */\n\tisFullWidth?: boolean;\n\t/**\n\t * Is the button in a loading state?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Click event handler callback\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled` or `isLoading`.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?:\n\t\t| 'primary'\n\t\t| 'secondary'\n\t\t| 'subtle'\n\t\t| 'brand'\n\t\t| 'brand-secondary'\n\t\t| 'critical'\n\t\t| 'critical-secondary'\n\t\t| 'navbar'\n\t\t| 'inline';\n\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * A Component used to render a Button\n */\nexport const Button = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tdisabled = false,\n\t\t\tdisplayType = 'label-only',\n\t\t\ticonName,\n\t\t\tisFullWidth = false,\n\t\t\tisLoading = false,\n\t\t\tisSplitButton = false,\n\t\t\tlabel,\n\t\t\tonClick,\n\t\t\tsize = 'md',\n\t\t\ttooltipText,\n\t\t\tvariant = 'primary',\n\t\t\tclassName = '',\n\t\t\t...props\n\t\t}: ButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-button';\n\t\tconst sizeClass = size !== 'md' ? `${baseClass}--${size}` : null;\n\t\tconst variantClass =\n\t\t\tvariant !== 'primary' ? `${baseClass}--${variant}` : null;\n\t\tconst fullWidthClass = isFullWidth ? `${baseClass}--full-width` : null;\n\n\t\t// Map button sizes to icon sizes.\n\t\tlet setIconSize;\n\t\tswitch (size) {\n\t\t\tcase 'sm':\n\t\t\t\tsetIconSize = 'sm';\n\t\t\t\tbreak;\n\t\t\tcase 'md':\n\t\t\t\tsetIconSize = 'md';\n\t\t\t\tbreak;\n\t\t\tcase 'lg':\n\t\t\t\tsetIconSize = 'lg';\n\t\t}\n\n\t\t// Render the chosen icon\n\t\tconst renderedIcon = (\n\t\t\t<Icon\n\t\t\t\tkey='icon'\n\t\t\t\ticonName={iconName}\n\t\t\t\ticonSize={setIconSize}\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t/>\n\t\t);\n\n\t\t// Set content of the button based on displayType.\n\t\tlet buttonContent = [label];\n\n\t\tif (displayType == 'icon-start' && iconName) {\n\t\t\tbuttonContent.unshift(renderedIcon);\n\t\t}\n\t\tif (displayType == 'icon-end' && iconName) {\n\t\t\tbuttonContent.push(renderedIcon);\n\t\t}\n\n\t\t// Use label as aria-label when used as a split button.\n\t\tif (isSplitButton) {\n\t\t\tbuttonContent = [renderedIcon];\n\t\t\tariaLabel = extractText(label);\n\t\t}\n\n\t\t// Preprocess the button element.\n\t\tconst buttonElement = (\n\t\t\t<button\n\t\t\t\ttype={buttonType}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tfullWidthClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled || isLoading}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tonClick={onClick}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isLoading && (\n\t\t\t\t\t<Spinner className={`${baseClass}__loading-indicator`} size='md' />\n\t\t\t\t)}\n\t\t\t\t{buttonContent}\n\t\t\t</button>\n\t\t);\n\n\t\treturn (disabled || isLoading) && tooltipText ? (\n\t\t\t<Tooltip content={tooltipText} customTrigger={buttonElement} />\n\t\t) : (\n\t\t\t<>{buttonElement}</>\n\t\t);\n\t},\n);\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tisValidElement,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport {\n\tButtonDisplayType,\n\tButtonSize,\n\tButtonVariant,\n} from '@libs/types/custom-types';\n\nimport '../Button/button.css';\nimport './button-link.css';\n\ntype ButtonLinkVariant = Exclude<ButtonVariant, 'navbar' | 'inline'>;\n\n/**\n * Prop types for ButtonLink\n */\nexport interface ButtonLinkProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Is the link disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Display type of the button.\n\t */\n\tdisplayType?: ButtonDisplayType;\n\t/**\n\t * Icon to render in the button. Only necessary if `displayType` is 'icon-start' or 'icon-end'.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent: ReactNode;\n\t/**\n\t * Size of the button.\n\t */\n\tsize?: ButtonSize;\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled`.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Variant of the button.\n\t */\n\tvariant?: ButtonLinkVariant;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ButtonLink UI component\n */\nexport const ButtonLink = ({\n\tdisabled = false,\n\tdisplayType = 'label-only',\n\ticonName,\n\tlinkContent,\n\tsize = 'md',\n\ttooltipText,\n\tvariant = 'primary',\n\tclassName,\n\t...props\n}: ButtonLinkProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-button-link';\n\tconst buttonBaseClass = 'pds-button';\n\tconst sizeClass = size !== 'md' ? `${buttonBaseClass}--${size}` : null;\n\tconst variantClass =\n\t\tvariant !== 'primary' ? `${buttonBaseClass}--${variant}` : null;\n\tconst buttonModifierClasses = mergeClasses([\n\t\tbuttonBaseClass,\n\t\tsizeClass,\n\t\tvariantClass,\n\t]);\n\n\t// Get the label text from the link element.\n\tconst linkText = isValidElement(linkContent)\n\t\t? linkContent.props.children\n\t\t: null;\n\n\t// Render the chosen icon\n\tconst renderedIcon = (\n\t\t<Icon\n\t\t\ticonName={iconName}\n\t\t\ticonSize={size}\n\t\t\tclassName={`${baseClass}__icon`}\n\t\t\tkey={iconName}\n\t\t/>\n\t);\n\n\t// Add the icon to the button if necessary.\n\tlet linkLabel = [linkText];\n\tif (displayType === 'icon-start' && iconName) {\n\t\tlinkLabel = [renderedIcon, linkText];\n\t} else if (displayType === 'icon-end' && iconName) {\n\t\tlinkLabel = [linkText, renderedIcon];\n\t}\n\n\t// Clone the original link element so that we can add the appropriate classes and children to it.\n\tconst processedLink = isValidElement(linkContent)\n\t\t? cloneElement(linkContent as ReactElement, {\n\t\t\t\tclassName: buttonModifierClasses,\n\t\t\t\tchildren: linkLabel,\n\t\t\t})\n\t\t: null;\n\n\t// If the ButtonLink is disabled, render a disabled regular button.\n\tif (disabled) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t\tdisabled={true}\n\t\t\t\tlabel={linkLabel}\n\t\t\t\tsize={size}\n\t\t\t\ttooltipText={tooltipText ?? null}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// If not disabled, render the output.\n\treturn (\n\t\t<span className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{processedLink}\n\t\t</span>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\ninterface ClipboardOptions {\n\tduration?: number;\n}\n\ntype UseClipboardReturn = [boolean, () => Promise<void>];\n\nexport const useClipboard = (\n\ttext: string,\n\toptions?: ClipboardOptions,\n): UseClipboardReturn => {\n\tconst [isCopied, setIsCopied] = useState<boolean>(false);\n\tconst duration = options?.duration;\n\n\tuseEffect(() => {\n\t\tlet id: NodeJS.Timeout | undefined;\n\n\t\tif (isCopied && duration) {\n\t\t\tid = setTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, duration);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (id) {\n\t\t\t\tclearTimeout(id);\n\t\t\t}\n\t\t};\n\t}, [isCopied, duration]);\n\n\tconst doCopy = async () => {\n\t\tif (navigator.clipboard) {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\t\tsetIsCopied(true);\n\t\t\t} catch (e) {\n\t\t\t\t// Unsupported browser\n\t\t\t}\n\t\t}\n\t};\n\n\treturn [isCopied, doCopy];\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tRef,\n\tforwardRef,\n\tuseRef,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { PDSIcon } from '@components/icons/Icon/Icon';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './icon-button.css';\n\ninterface IconButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: 'button' | 'submit' | 'reset';\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Show tooltip on hover. If false, the title attribute will be used.\n\t */\n\thasTooltip?: boolean;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Which icon to render second. If this is set, the button will be animated.\n\t */\n\ticon2Name?: PDSIcon;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse' | 'critical' | 'critical-hover';\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * IconButton UI component\n */\nexport const IconButton = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tdisabled = false,\n\t\t\thasTooltip = true,\n\t\t\ticonName,\n\t\t\ticon2Name = null,\n\t\t\tonClick,\n\t\t\tsize = 'md',\n\t\t\tvariant = 'standard',\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: IconButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-icon-button';\n\t\tconst sizeClass = size !== 'md' ? `${baseClass}--${size}` : null;\n\t\tconst variantClass =\n\t\t\tvariant !== 'standard' ? `${baseClass}--${variant}` : null;\n\n\t\tconst animationClasses = {\n\t\t\tfadeOut: `${baseClass}--fadeOut`,\n\t\t\thide: `${baseClass}--hide`,\n\t\t\tscaleIn: `${baseClass}--scaleIn`,\n\t\t};\n\n\t\t// Map button sizes to icon sizes and offset values.\n\t\tlet setOffsetValue;\n\t\tlet setIconSize;\n\t\tswitch (size) {\n\t\t\tcase 'sm':\n\t\t\t\tsetIconSize = 'md';\n\t\t\t\tsetOffsetValue = 8;\n\t\t\t\tbreak;\n\t\t\tcase 'md':\n\t\t\t\tsetIconSize = 'md';\n\t\t\t\tsetOffsetValue = 11;\n\t\t\t\tbreak;\n\t\t\tcase 'lg':\n\t\t\t\tsetIconSize = 'xl';\n\t\t\t\tsetOffsetValue = 12;\n\t\t}\n\n\t\t// If there is a second icon, the button will be animated.\n\t\tconst isAnimated = icon2Name !== null;\n\n\t\t// Set up refs for the two icons.\n\t\tconst icon1Ref = useRef(null);\n\t\tconst icon2Ref = useRef(null);\n\n\t\t// Set up the animation transitions.\n\t\tconst handleAnimation = () => {\n\t\t\ticon1Ref.current.classList.add(animationClasses.fadeOut);\n\t\t\ticon1Ref.current.classList.add(animationClasses.hide);\n\n\t\t\ticon2Ref.current.classList.remove(animationClasses.hide);\n\t\t\ticon2Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ticon1Ref.current.classList.remove(\n\t\t\t\t\tanimationClasses.fadeOut,\n\t\t\t\t\tanimationClasses.hide,\n\t\t\t\t);\n\t\t\t\ticon1Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\t\ticon2Ref.current.classList.remove(animationClasses.scaleIn);\n\t\t\t\ticon2Ref.current.classList.add(animationClasses.hide);\n\t\t\t}, 2000);\n\t\t};\n\n\t\t// Handle click.\n\t\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\t\tif (isAnimated) {\n\t\t\t\thandleAnimation();\n\t\t\t}\n\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t};\n\n\t\t// Preprocess button content.\n\t\tconst buttonContent = isAnimated ? (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<div ref={icon1Ref} className={`${baseClass}__icon-wrapper`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={iconName}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tref={icon2Ref}\n\t\t\t\t\tclassName={`${baseClass}__icon-wrapper ${animationClasses.hide}`}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={icon2Name}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t) : (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<Icon\n\t\t\t\t\ticonName={iconName}\n\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<button\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={handleClick}\n\t\t\t\ttype={buttonType}\n\t\t\t\ttitle={hasTooltip && !disabled ? null : ariaLabel}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{hasTooltip && !disabled ? (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tcontent={ariaLabel}\n\t\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\t\toffsetValue={setOffsetValue}\n\t\t\t\t\t\tcustomTrigger={buttonContent}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\tbuttonContent\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { useClipboard } from '@utilities/hooks/useClipboard';\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\n\nimport './clipboard-button.css';\n\n/**\n * Prop types for ClipboardButton\n */\nexport interface ClipboardButtonProps\n\textends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Translation string for aria-label attribute and tooltip text.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Text to copy to clipboard.\n\t */\n\tclipboardText?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ClipboardButton UI component\n */\nexport const ClipboardButton = ({\n\tariaLabel = 'Copy to clipboard',\n\tclipboardText = '',\n\tdisabled,\n\tvariant = 'standard',\n\tclassName,\n\t...props\n}: ClipboardButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-clipboard-button';\n\n\t// Set up clipboard hook.\n\tconst [_isCopied, setIsCopied] = useClipboard(clipboardText);\n\n\t// Render the output\n\treturn (\n\t\t<IconButton\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\tariaLabel={ariaLabel}\n\t\t\tbuttonType='button'\n\t\t\tdisabled={disabled}\n\t\t\ticonName='copy'\n\t\t\ticon2Name='check'\n\t\t\tonClick={setIsCopied}\n\t\t\tsize='md'\n\t\t\tvariant={variant}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './close-button.css';\n\n/**\n * Prop types for CloseButton\n */\nexport interface CloseButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Size of the icon.\n\t */\n\ticonSize?: 'md' | 'lg' | 'xl';\n\t/**\n\t * Click event callback function.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * CloseButton UI component\n */\nexport const CloseButton = ({\n\tariaLabel = 'Close',\n\ticonSize = 'xl',\n\tonClick,\n\tclassName,\n\t...props\n}: CloseButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-close-button';\n\n\t// Render the output\n\treturn (\n\t\t<button\n\t\t\taria-label={ariaLabel}\n\t\t\tonClick={onClick}\n\t\t\ttype='button'\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Icon iconName='xmark' iconSize={iconSize} />\n\t\t</button>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\nexport const useWindowWidth = () => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst [windowWidth, setWindowWidth] = useState(\n\t\tisBrowser && window.innerWidth !== undefined ? window.innerWidth : 1024,\n\t);\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\tconst handleResize = () => {\n\t\t\tsetWindowWidth(window.innerWidth);\n\t\t};\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\treturn windowWidth;\n};\n","import React, { createContext, useEffect } from 'react';\n\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth';\n\nexport const ResponsiveContext = createContext(null);\n\nexport const ResponsiveContextProvider = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Check if mobile.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Prepare the context value.\n\tconst contextValue = {\n\t\tisMobile: isMobile,\n\t\tmobileMenuMaxWidth: mobileMenuMaxWidth,\n\t\twindowWidth: windowWidth,\n\t};\n\n\t// Disallow horizontal scrolling on mobile.\n\tuseEffect(() => {\n\t\tif (isMobile) {\n\t\t\tdocument.body.classList.add('pds-no-scroll-x');\n\t\t} else {\n\t\t\tdocument.body.classList.remove('pds-no-scroll-x');\n\t\t}\n\t}, [isMobile]);\n\n\treturn (\n\t\t<ResponsiveContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ResponsiveContext.Provider>\n\t);\n};\n","import React, {\n\tComponentPropsWithRef,\n\tKeyboardEvent,\n\tMouseEvent,\n\tReactNode,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tautoUpdate,\n\tflip,\n\toffset,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n\tuseTypeahead,\n} from '@floating-ui/react';\n\nimport {\n\tHeadingItemType,\n\tLinkItemType,\n\tMenuItemType,\n\tNodeItemType,\n\tSeparatorItemType,\n} from '@libs/types/custom-types';\n\nimport { createRandomID, mergeClasses } from '@libs/components/utils';\nimport { extractText } from '@libs/components/utility-components';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { PDSIcon } from '@components/icons/Icon/Icon';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\n\nimport './menu-button.css';\n\n// Menu item union type\ntype MenuItemUnion =\n\t| HeadingItemType\n\t| LinkItemType\n\t| MenuItemType\n\t| NodeItemType\n\t| SeparatorItemType;\n\n// Define item types.\nconst isSeparatorItemType = (\n\titem: MenuItemUnion,\n): item is SeparatorItemType => {\n\treturn 'isSeparator' in item && item.isSeparator === true;\n};\n\nconst isHeadingItemType = (item: MenuItemUnion): item is HeadingItemType => {\n\treturn 'isHeading' in item && item.isHeading === true;\n};\n\nconst isLinkItemType = (item: MenuItemUnion): item is LinkItemType => {\n\treturn 'isLink' in item && item.isLink === true;\n};\n\nconst isNodeItemType = (item: MenuItemUnion): item is NodeItemType => {\n\treturn 'isNode' in item && item.isNode === true;\n};\n\n/**\n * Prop types for MenuButton\n */\nexport interface MenuButtonProps extends ComponentPropsWithRef<'span'> {\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: 'icon-end' | 'icon-only';\n\t/**\n\t * Icon name for icon-only buttons.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Array of menu items\n\t */\n\tmenuItems: Array<\n\t\t| HeadingItemType\n\t\t| LinkItemType\n\t\t| MenuItemType\n\t\t| NodeItemType\n\t\t| SeparatorItemType\n\t>;\n\t/**\n\t * Horizontal position of the menu relative to the button. Applies to breakpoints `md` and up.\n\t */\n\tmenuPosition?: 'start' | 'end';\n\t/**\n\t * Optional callback function for when the button is clicked or activated by the keyboard.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Optional `data-testid` value for this component.\n\t */\n\ttestId?: string;\n\t/**\n\t * Translatable string for description of unlabeled group of menu items.\n\t */\n\tundefinedLabel?: string;\n\t/**\n\t * Which variant of button to render — only valid for icon-end (default) display type.\n\t */\n\tvariant?: 'primary' | 'secondary' | 'navbar';\n\t/**\n\t * Is this button located with the Navbar component?\n\t * This will adjust the styling and position of the dropdown.\n\t * Omit this prop for the Dashboard application. It only applies to the standard Navbar component with a bottom border.\n\t */\n\twithinNavbar?: boolean;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * MenuButton UI component - Modernized with Floating UI\n */\nexport const MenuButton = ({\n\tdisabled,\n\tdisplayType = 'icon-end',\n\ticonName = 'ellipsisVertical',\n\tid,\n\tisSplitButton = false,\n\tlabel,\n\tmenuItems,\n\tmenuPosition = 'start',\n\tonClick,\n\tsize = 'md',\n\ttestId,\n\tundefinedLabel = 'Unlabeled group',\n\tvariant = 'primary',\n\twithinNavbar,\n\tclassName,\n\t...props\n}: MenuButtonProps) => {\n\t// Get responsive context\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tconst isMobile = responsiveContext?.isMobile ?? false;\n\tconst isMobileNavbar = variant === 'navbar' && isMobile;\n\n\t// Set up classes\n\tconst baseClass = 'pds-menu-button';\n\tconst mobileClass = isMobileNavbar ? `${baseClass}--isMobile` : null;\n\tconst navbarClass = withinNavbar ? `${baseClass}--navbar` : null;\n\n\t// Generate IDs\n\tconst triggerID = id;\n\tconst [listboxID] = useState(`menu-button-${id}`);\n\n\t// State\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState<number | null>(null);\n\tconst openedViaKeyboard = useRef(false);\n\n\t// Refs\n\tconst nodeRef = useRef(null);\n\tconst listRef = useRef([]);\n\tconst groupIDs = useRef([]);\n\tconst disabledIndicesRef = useRef<number[]>([]);\n\n\t// Build disabled indices array\n\tconst buildDisabledIndices = () => {\n\t\tconst indices: number[] = [];\n\t\tlet focusableIdx = 0;\n\n\t\tmenuItems.forEach((item) => {\n\t\t\tconst isFocusable =\n\t\t\t\t!isSeparatorItemType(item) &&\n\t\t\t\t!isHeadingItemType(item) &&\n\t\t\t\t!isNodeItemType(item);\n\n\t\t\tif (isFocusable) {\n\t\t\t\tif (item.disabled) {\n\t\t\t\t\tindices.push(focusableIdx);\n\t\t\t\t}\n\t\t\t\tfocusableIdx++;\n\t\t\t}\n\t\t});\n\n\t\treturn indices;\n\t};\n\n\tdisabledIndicesRef.current = buildDisabledIndices();\n\n\t// Initialize activeIndex and focus when menu opens\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tif (openedViaKeyboard.current) {\n\t\t\t\t// Keyboard open: set activeIndex and focus first item\n\t\t\t\tsetActiveIndex(0);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tlistRef.current[0]?.focus();\n\t\t\t\t}, 0);\n\t\t\t} else {\n\t\t\t\t// Mouse open: focus the menu container to enable keyboard navigation\n\t\t\t\t// but don't set activeIndex so no item appears focused\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst menuContainer = refs.floating.current as HTMLElement;\n\t\t\t\t\tmenuContainer?.focus();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\topenedViaKeyboard.current = false; // Reset\n\t\t} else {\n\t\t\t// Reset activeIndex when menu closes\n\t\t\tsetActiveIndex(null);\n\t\t}\n\t}, [isOpen]);\n\n\t// Floating UI setup\n\tconst { context, refs, floatingStyles } = useFloating({\n\t\tplacement: menuPosition === 'end' ? 'bottom-end' : 'bottom-start',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t\tmiddleware: [offset(withinNavbar ? 0 : 12), flip()],\n\t});\n\n\tconst click = useClick(context, {\n\t\tenabled: !disabled,\n\t\tevent: 'mousedown',\n\t});\n\n\tconst dismiss = useDismiss(context);\n\n\tconst role = useRole(context, { role: 'menu' });\n\n\tconst listNav = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t\tdisabledIndices: disabledIndicesRef.current,\n\t\topenOnArrowKeyDown: false,\n\t\tfocusItemOnHover: false,\n\t});\n\n\tconst typeahead = useTypeahead(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tselectedIndex: null,\n\t\tonMatch: (index) => {\n\t\t\tif (isOpen) {\n\t\t\t\tsetActiveIndex(index);\n\t\t\t} else {\n\t\t\t\tsetIsOpen(true);\n\t\t\t\tsetActiveIndex(index);\n\t\t\t}\n\t\t},\n\t\tfindMatch: (list, typedString) => {\n\t\t\tconst lowerTyped = typedString.toLowerCase();\n\t\t\treturn list.find((item) => {\n\t\t\t\tconst element = item as unknown as HTMLElement;\n\n\t\t\t\t// Skip disabled items\n\t\t\t\tif (element?.getAttribute('aria-disabled') === 'true') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst label = element?.textContent?.trim().toLowerCase() ?? '';\n\t\t\t\treturn label.startsWith(lowerTyped);\n\t\t\t});\n\t\t},\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[click, dismiss, role, listNav, typeahead],\n\t);\n\n\t// Wrap getReferenceProps to track keyboard opens\n\tconst wrappedGetReferenceProps = () => {\n\t\tconst props = getReferenceProps();\n\t\treturn {\n\t\t\t...props,\n\t\t\tonKeyDown: (e: KeyboardEvent) => {\n\t\t\t\tif (\n\t\t\t\t\te.key === 'Enter' ||\n\t\t\t\t\te.key === ' ' ||\n\t\t\t\t\te.key === 'ArrowDown' ||\n\t\t\t\t\te.key === 'ArrowUp'\n\t\t\t\t) {\n\t\t\t\t\topenedViaKeyboard.current = true;\n\t\t\t\t}\n\t\t\t\tif (props.onKeyDown && typeof props.onKeyDown === 'function') {\n\t\t\t\t\tprops.onKeyDown(e);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t};\n\n\t// Transition styles\n\tconst { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 300,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Handle item activation\n\tconst handleItemActivation = (item: MenuItemUnion) => {\n\t\t// Check if item has disabled property\n\t\tif ('disabled' in item && item.disabled) return;\n\n\t\t// Execute callback if exists\n\t\tif ('callback' in item && item.callback) {\n\t\t\titem.callback();\n\t\t}\n\n\t\t// Click link if exists\n\t\tif (isLinkItemType(item) && item.linkContent) {\n\t\t\tconst linkElement = item.linkContent;\n\t\t\tif (isValidElement(linkElement) && linkElement.props?.onClick) {\n\t\t\t\tlinkElement.props.onClick();\n\t\t\t}\n\t\t}\n\n\t\t// Close menu unless in mobile navbar\n\t\tif (!isMobileNavbar) {\n\t\t\tsetIsOpen(false);\n\t\t}\n\t};\n\n\t// Function to render grouped items\n\tconst renderMenuItemsGrouped = (\n\t\titems: MenuItemUnion[],\n\t\tmenuItemBreaks: MenuItemUnion[],\n\t) => {\n\t\tconst groupedItems = [];\n\t\tlet breakItem = menuItemBreaks.shift();\n\t\tlet group = [];\n\n\t\titems.forEach((item, index) => {\n\t\t\tif (item !== breakItem) {\n\t\t\t\tgroup.push(item);\n\t\t\t\tif (index + 1 === items.length) {\n\t\t\t\t\tgroupedItems.push(group);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tgroupedItems.push(group);\n\t\t\t\tgroup = [];\n\t\t\t\tgroup.push(item);\n\t\t\t\tbreakItem = menuItemBreaks.shift();\n\t\t\t}\n\t\t});\n\n\t\treturn groupedItems.filter((group) => group.length > 0);\n\t};\n\n\t// Render individual menu item\n\tconst renderItem = (\n\t\titem: MenuItemUnion,\n\t\titemIndex: number,\n\t\tfocusableIndex: number,\n\t\tgroupID = '',\n\t\tgroupHeadingID = '',\n\t) => {\n\t\tconst groupIDString = groupID ? `-group-${groupID}` : '';\n\t\tconst fallbackItemID =\n\t\t\ttriggerID + groupIDString + '-item-' + (itemIndex + 1);\n\t\tconst itemID = 'id' in item && item.id ? item.id : fallbackItemID;\n\n\t\t// Render separator\n\t\tif (isSeparatorItemType(item)) {\n\t\t\treturn <li role='separator' key={itemID}></li>;\n\t\t}\n\n\t\t// Render heading\n\t\tif (isHeadingItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\trole='presentation'\n\t\t\t\t\tid={groupHeadingID || itemID}\n\t\t\t\t\tkey={groupHeadingID || itemID}\n\t\t\t\t\tclassName={`${baseClass}__listbox-heading`}\n\t\t\t\t>\n\t\t\t\t\t{item.label}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// Render node\n\t\tif (isNodeItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li role='presentation' key={itemID}>\n\t\t\t\t\t{item.nodeContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// Render link or menu item\n\t\tif (isLinkItemType(item) || ('label' in item && item.label)) {\n\t\t\tconst isFocused = activeIndex === focusableIndex;\n\n\t\t\t// Set item label\n\t\t\tlet itemLabel: ReactNode[] | undefined;\n\t\t\tif ('label' in item && item.label) {\n\t\t\t\titemLabel = [item.label];\n\t\t\t}\n\t\t\tif (isLinkItemType(item) && isValidElement(item.linkContent)) {\n\t\t\t\titemLabel = [item.linkContent.props.children];\n\t\t\t}\n\n\t\t\tif ('iconName' in item && item.iconName) {\n\t\t\t\tconst renderedIcon = (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tkey={`icon-${triggerID}-${itemIndex}`}\n\t\t\t\t\t\ticonName={item.iconName}\n\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t\titemLabel.unshift(renderedIcon);\n\t\t\t}\n\n\t\t\tlet itemDescription: ReactNode | undefined;\n\t\t\tif ('description' in item && item.description) {\n\t\t\t\titemDescription = (\n\t\t\t\t\t<span className={`${baseClass}__item-description`}>\n\t\t\t\t\t\t{item.description}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Render content\n\t\t\tlet itemContent: ReactNode;\n\t\t\tif (isLinkItemType(item) && isValidElement(item.linkContent)) {\n\t\t\t\tconst LinkElement = item.linkContent.type;\n\t\t\t\titemContent = (\n\t\t\t\t\t<LinkElement tabIndex={-1} {...item.linkContent.props}>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</LinkElement>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\titemContent = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst itemProps = getItemProps({\n\t\t\t\tonClick: () => handleItemActivation(item),\n\t\t\t});\n\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tid={itemID}\n\t\t\t\t\tkey={itemID}\n\t\t\t\t\tdata-testid={'testId' in item ? item.testId : undefined}\n\t\t\t\t\tclassName={isFocused ? `${baseClass}__item-focused` : null}\n\t\t\t\t\trole='menuitem'\n\t\t\t\t\ttabIndex={isFocused ? 0 : -1}\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tlistRef.current[focusableIndex] = node;\n\t\t\t\t\t}}\n\t\t\t\t\taria-disabled={('disabled' in item && item.disabled) || null}\n\t\t\t\t\t{...itemProps}\n\t\t\t\t\tonPointerDown={(e) => {\n\t\t\t\t\t\tif (typeof itemProps.onPointerDown === 'function') {\n\t\t\t\t\t\t\titemProps.onPointerDown(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!('disabled' in item && item.disabled)) {\n\t\t\t\t\t\t\thandleItemActivation(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{itemContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Render menu items\n\tconst renderMenuItems = (items: MenuItemUnion[]) => {\n\t\tconst menuItemBreaks = items.filter(\n\t\t\t(item) => isHeadingItemType(item) || isSeparatorItemType(item),\n\t\t);\n\t\tconst haveBreaks = menuItemBreaks.length > 0;\n\n\t\tconst listboxClasses: string[] = [`${baseClass}__listbox`];\n\t\tif (withinNavbar) {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--navbar`);\n\t\t}\n\t\tif (menuPosition === 'end') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--end`);\n\t\t}\n\t\tif (displayType === 'icon-only') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--icon-only`);\n\t\t}\n\n\t\t// Track focusable item index separately from item index\n\t\tlet focusableIndex = 0;\n\n\t\tif (haveBreaks) {\n\t\t\tconst groupedItemsData = renderMenuItemsGrouped(items, [\n\t\t\t\t...menuItemBreaks,\n\t\t\t]);\n\n\t\t\t// Setup group IDs\n\t\t\tgroupIDs.current = groupedItemsData.map(() => createRandomID());\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={mergeClasses(listboxClasses)}\n\t\t\t\t\tid={listboxID}\n\t\t\t\t\trole='menu'\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\t...transitionStyles,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t>\n\t\t\t\t\t{groupedItemsData.map((group, groupIndex) => {\n\t\t\t\t\t\tconst currentGroupID = groupIDs.current[groupIndex];\n\t\t\t\t\t\tconst hasHeading = group[0]?.isHeading;\n\t\t\t\t\t\tconst groupHeadingID = hasHeading\n\t\t\t\t\t\t\t? `${triggerID}-group-${currentGroupID}-heading`\n\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst keyID = `${triggerID}-group-${currentGroupID}`;\n\t\t\t\t\t\tconst groupLabel = hasHeading\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: `${undefinedLabel} ${groupIndex + 1}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\trole='group'\n\t\t\t\t\t\t\t\taria-labelledby={groupHeadingID || null}\n\t\t\t\t\t\t\t\taria-label={groupLabel}\n\t\t\t\t\t\t\t\tkey={keyID}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{group.map((item: MenuItemUnion, itemIndex: number) => {\n\t\t\t\t\t\t\t\t\tconst isFocusable =\n\t\t\t\t\t\t\t\t\t\t!isSeparatorItemType(item) &&\n\t\t\t\t\t\t\t\t\t\t!isHeadingItemType(item) &&\n\t\t\t\t\t\t\t\t\t\t!isNodeItemType(item);\n\n\t\t\t\t\t\t\t\t\tconst currentFocusableIndex = focusableIndex;\n\t\t\t\t\t\t\t\t\tif (isFocusable) {\n\t\t\t\t\t\t\t\t\t\tfocusableIndex++;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn renderItem(\n\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t\t\t\t\tcurrentFocusableIndex,\n\t\t\t\t\t\t\t\t\t\tcurrentGroupID,\n\t\t\t\t\t\t\t\t\t\tgroupHeadingID,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<ul\n\t\t\t\t\tclassName={mergeClasses(listboxClasses)}\n\t\t\t\t\tid={listboxID}\n\t\t\t\t\trole='menu'\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\t...transitionStyles,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t>\n\t\t\t\t\t{items.map((item, itemIndex) => {\n\t\t\t\t\t\tconst isFocusable =\n\t\t\t\t\t\t\t!isSeparatorItemType(item) &&\n\t\t\t\t\t\t\t!isHeadingItemType(item) &&\n\t\t\t\t\t\t\t!isNodeItemType(item);\n\n\t\t\t\t\t\tconst currentFocusableIndex = focusableIndex;\n\t\t\t\t\t\tif (isFocusable) {\n\t\t\t\t\t\t\tfocusableIndex++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn renderItem(item, itemIndex, currentFocusableIndex);\n\t\t\t\t\t})}\n\t\t\t\t</ul>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Trigger button display\n\tlet menuButtonDisplayType: ReactNode;\n\n\tif (displayType === 'icon-end') {\n\t\tmenuButtonDisplayType = (\n\t\t\t<Button\n\t\t\t\tisSplitButton={isSplitButton}\n\t\t\t\tlabel={label}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t\tdisplayType={displayType}\n\t\t\t\ticonName='angleDown'\n\t\t\t\ttype='button'\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\taria-haspopup='true'\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\tonClick={onClick}\n\t\t\t\t{...wrappedGetReferenceProps()}\n\t\t\t\tid={triggerID}\n\t\t\t\tref={refs.setReference}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (displayType === 'icon-only') {\n\t\tconst labelText = extractText(label);\n\n\t\tmenuButtonDisplayType = (\n\t\t\t<IconButton\n\t\t\t\tariaLabel={labelText}\n\t\t\t\tsize={size}\n\t\t\t\tvariant='standard'\n\t\t\t\ticonName={iconName}\n\t\t\t\ttype='button'\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={`${baseClass}__trigger ${baseClass}__trigger--icon-only`}\n\t\t\t\taria-haspopup='true'\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\tonClick={onClick}\n\t\t\t\t{...wrappedGetReferenceProps()}\n\t\t\t\tid={triggerID}\n\t\t\t\tref={refs.setReference}\n\t\t\t\thasTooltip={false}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Mobile navbar handling\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\tconst button = e.target as HTMLButtonElement;\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`);\n\t\tbutton.setAttribute(\n\t\t\t'aria-expanded',\n\t\t\tbutton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true',\n\t\t);\n\n\t\tconst menu = button.nextElementSibling as HTMLElement | null;\n\t\tif (menu) {\n\t\t\tmenu.classList.toggle(`${baseClass}__mobile-menu--expanded`);\n\t\t}\n\t};\n\n\t// Mobile menu items (simplified - no FUI for mobile)\n\tconst MobileMenuItems = () => {\n\t\tlet focusableIndex = 0;\n\n\t\treturn (\n\t\t\t<ul className={`${baseClass}__mobile-menu`} role='menu'>\n\t\t\t\t{menuItems.map((item, itemIndex) => {\n\t\t\t\t\tconst isFocusable =\n\t\t\t\t\t\t!isSeparatorItemType(item) &&\n\t\t\t\t\t\t!isHeadingItemType(item) &&\n\t\t\t\t\t\t!isNodeItemType(item);\n\n\t\t\t\t\tconst currentFocusableIndex = focusableIndex;\n\t\t\t\t\tif (isFocusable) {\n\t\t\t\t\t\tfocusableIndex++;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn renderItem(item, itemIndex, currentFocusableIndex);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t);\n\t};\n\n\tlet menuButtonMobileDisplayType: ReactNode;\n\n\tconst buttonVariant =\n\t\tdisplayType === 'icon-end' ? 'pds-button pds-button--navbar' : null;\n\tconst mobileButtonClasses = mergeClasses([\n\t\t`${baseClass}__toggle`,\n\t\tbuttonVariant,\n\t]);\n\n\tif (isMobileNavbar) {\n\t\tmenuButtonMobileDisplayType = (\n\t\t\t<button\n\t\t\t\tid={triggerID}\n\t\t\t\ttype='button'\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={mobileButtonClasses}\n\t\t\t\taria-expanded={false}\n\t\t\t\tonClick={handleExpand}\n\t\t\t>\n\t\t\t\t{displayType === 'icon-only' ? (\n\t\t\t\t\t<span className={`${baseClass}__icon-label`}>\n\t\t\t\t\t\t<Icon iconName={iconName} /> {label}\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tlabel\n\t\t\t\t)}\n\t\t\t\t<Icon\n\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\ticonSize='md'\n\t\t\t\t\tclassName={`${baseClass}__toggle-icon ${baseClass}__toggle-icon--${displayType}`}\n\t\t\t\t/>\n\t\t\t</button>\n\t\t);\n\t}\n\n\tconst expandedClass = isOpen ? `${baseClass}--expanded` : null;\n\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tnavbarClass,\n\t\t\t\tmobileClass,\n\t\t\t\texpandedClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\tdata-testid={testId}\n\t\t\tref={nodeRef}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobileNavbar ? (\n\t\t\t\t<>\n\t\t\t\t\t{menuButtonMobileDisplayType}\n\t\t\t\t\t<MobileMenuItems />\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{menuButtonDisplayType}\n\t\t\t\t\t{isMounted && renderMenuItems(menuItems)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, { MouseEvent, useState } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tally } from '@components/badges/Tally/Tally';\n\nimport './segmented-button.css';\n\n/**\n * Structure for each option in the SegmentedButton component.\n */\ninterface OptionType {\n\tid?: string;\n\tvalue: string;\n\tlabel: string;\n\tdisabled?: boolean;\n\ticonName?: PDSIcon;\n\ttally?: {\n\t\tlabel: string | number;\n\t\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t};\n}\n\n/**\n * Interface for handling selection events.\n */\ninterface HandleSelectionEvent extends MouseEvent<HTMLInputElement> {\n\ttarget: HTMLInputElement;\n}\n\n/**\n * Prop types for SegmentedButton\n */\nexport interface SegmentedButtonProps {\n\t/**\n\t * Is the SegmentedButton disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Unique ID for the SegmentedButton.\n\t */\n\tid: string;\n\t/**\n\t * Optional initial selected option value.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Label for the SegmentedButton — visually hidden, used for screen readers only.\n\t */\n\tlabel: string;\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Array of button options — must be between 2 and 6 options.\n\t */\n\toptions: OptionType[];\n\t/**\n\t * Size of the SegmentedButton.\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Value of the Segmented Button. Used to set the value of the field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SegmentedButton UI component\n */\nexport const SegmentedButton = ({\n\tdisabled = false,\n\tid,\n\tdefaultValue,\n\tlabel,\n\tonChange,\n\toptions,\n\tsize = 'md',\n\tvalue,\n\tclassName,\n\t...props\n}: SegmentedButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-segmented-button';\n\tconst disabledClass = disabled ? 'pds-is-disabled' : null;\n\tconst sizeClass = size !== 'md' ? `${baseClass}--${size}` : null;\n\n\t// Determine if the input is controlled.\n\tconst isControlled = typeof value != 'undefined';\n\n\t// When a component is not controlled, it can have a defaultValue.\n\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t// If the input is uncontrolled, use state within the component to manage the value.\n\tconst [internalValue, setInternalValue] = useState(\n\t\thasDefaultValue ? defaultValue : '',\n\t);\n\n\t// Handle selection changes.\n\tconst handleSelection = (e: HandleSelectionEvent) => {\n\t\tsetInternalValue(e.target.value);\n\n\t\tif (onChange) {\n\t\t\tonChange(e.target.value);\n\t\t}\n\t};\n\n\t// Render the output\n\tif (options.length >= 2 && options.length <= 6) {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<legend className='visually-hidden'>{label}</legend>\n\n\t\t\t\t<div className={`${baseClass}__options`}>\n\t\t\t\t\t{options.map((radio, idx) => {\n\t\t\t\t\t\t// Determine if the option is checked.\n\t\t\t\t\t\tconst isChecked = isControlled\n\t\t\t\t\t\t\t? value === radio.value\n\t\t\t\t\t\t\t: internalValue === radio.value;\n\n\t\t\t\t\t\t// Option classes.\n\t\t\t\t\t\tconst optionClass = `${baseClass}__option`;\n\t\t\t\t\t\tconst checkedClass = isChecked ? `${optionClass}--checked` : null;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={mergeClasses([optionClass, checkedClass])}\n\t\t\t\t\t\t\t\tkey={`${id}-option-${idx}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tclassName='visually-hidden'\n\t\t\t\t\t\t\t\t\ttype='radio'\n\t\t\t\t\t\t\t\t\tid={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\tname={id}\n\t\t\t\t\t\t\t\t\tvalue={radio.value}\n\t\t\t\t\t\t\t\t\tdisabled={disabled || radio.disabled}\n\t\t\t\t\t\t\t\t\tonChange={handleSelection}\n\t\t\t\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<label htmlFor={radio.id ? radio.id : `${id}-option-${idx}`}>\n\t\t\t\t\t\t\t\t\t{radio.tally ? (\n\t\t\t\t\t\t\t\t\t\t<Tally\n\t\t\t\t\t\t\t\t\t\t\tlabel={radio.tally.label}\n\t\t\t\t\t\t\t\t\t\t\ttype={radio.tally.type}\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__tally`}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tradio.iconName && (\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticonName={radio.iconName}\n\t\t\t\t\t\t\t\t\t\t\t\ticonSize={size}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className={`${baseClass}__label-text`}>\n\t\t\t\t\t\t\t\t\t\t{radio.label}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t);\n\t}\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { LinkItemType, MenuItemType } from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { MenuButton } from '@components/buttons/MenuButton/MenuButton';\n\nimport './split-button.css';\n\n/**\n * Prop types for SplitButton\n */\ninterface SplitButtonProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Array of menu items\n\t */\n\tactionItems: Array<LinkItemType | MenuItemType>;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Label for the buttons additional actions menu.\n\t */\n\tmoreActionsLabel?: string;\n\t/**\n\t * Which size of button to render\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?: 'primary' | 'secondary';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * A component used to render a button with a primary action and a menu of additional options\n */\nexport const SplitButton = ({\n\tactionItems,\n\tdisabled,\n\tid,\n\tmoreActionsLabel = 'More actions',\n\tsize = 'md',\n\tvariant = 'primary',\n\tclassName,\n\t...props\n}: SplitButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-split-button';\n\tconst variantClass = `${baseClass}--${variant}`;\n\n\t// Separate the primary action from the rest.\n\tconst primaryAction = actionItems[0];\n\tconst moreActions = actionItems.slice(1);\n\n\t// Preprocess the first item based on its type.\n\tlet primaryActionElement = null;\n\n\tif ('isLink' in primaryAction && primaryAction.isLink === true) {\n\t\tprimaryActionElement = (\n\t\t\t<ButtonLink\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t\tdisplayType='label-only'\n\t\t\t\tdisabled={disabled}\n\t\t\t\tlinkContent={primaryAction.linkContent}\n\t\t\t/>\n\t\t);\n\t} else if ('label' in primaryAction) {\n\t\tprimaryActionElement = (\n\t\t\t<Button\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tlabel={primaryAction.label}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={() => primaryAction.callback()}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([baseClass, variantClass, className])}\n\t\t\tid={id}\n\t\t\t{...props}\n\t\t>\n\t\t\t{primaryActionElement}\n\t\t\t<MenuButton\n\t\t\t\tclassName={`${baseClass}__menu-button`}\n\t\t\t\tlabel={moreActionsLabel}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t\tmenuItems={moreActions}\n\t\t\t\tdisplayType='icon-end'\n\t\t\t\tisSplitButton={true}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={`${id}-menu`}\n\t\t\t\ttestId={null}\n\t\t\t\twithinNavbar={false}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './utility-button.css';\n\n/**\n * Prop types for UtilityButton\n */\nexport interface UtilityButtonProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional props for the button element.\n\t */\n\tbuttonProps?: ComponentPropsWithoutRef<'button'>;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Is the button critical? If true, the button will be styled as critical on hover and focus.\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the button in the process of an initial load?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Is the button in the process of performing a task and should be disabled?\n\t */\n\tisWorking?: boolean;\n\t/**\n\t * Should the button label use the monospace font?\n\t */\n\tisMonospace?: boolean;\n\t/**\n\t * The text of the button.\n\t */\n\tlabel: string;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Tooltip text.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * UtilityButton UI component\n */\nexport const UtilityButton = ({\n\tbuttonProps,\n\tdisabled = false,\n\ticonName,\n\tisCritical = false,\n\tisLoading,\n\tisWorking,\n\tisMonospace = false,\n\tlabel,\n\tonClick,\n\ttooltipText,\n\tclassName,\n\t...props\n}: UtilityButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-utility-button';\n\tconst criticalClass = isCritical ? `${baseClass}--critical` : null;\n\tconst disabledClass = disabled ? `${baseClass}--disabled` : null;\n\tconst loadingClass = isLoading ? `${baseClass}--loading` : null;\n\tconst workingClass = isWorking ? `${baseClass}--working` : null;\n\tconst monospaceClass = isMonospace ? `${baseClass}--monospace` : null;\n\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t// Preprocess button content.\n\tconst buttonContent = (\n\t\t<button\n\t\t\tclassName={mergeClasses([`${baseClass}__button`, pulseClass])}\n\t\t\taria-disabled={disabled || isLoading || isWorking}\n\t\t\tonClick={disabled ? undefined : onClick}\n\t\t\ttype='button'\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t{iconName && !isWorking && (\n\t\t\t\t<Icon iconName={iconName} className={`${baseClass}__icon`} />\n\t\t\t)}\n\n\t\t\t{isWorking && (\n\t\t\t\t<Spinner\n\t\t\t\t\tclassName={`${baseClass}__spinner`}\n\t\t\t\t\tsize='sm'\n\t\t\t\t\tcolorType='monochromatic'\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t</button>\n\t);\n\n\t// Render the output.\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcriticalClass,\n\t\t\t\tdisabledClass,\n\t\t\t\tloadingClass,\n\t\t\t\tworkingClass,\n\t\t\t\tmonospaceClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{tooltipText ? (\n\t\t\t\t<Tooltip content={tooltipText} customTrigger={buttonContent} />\n\t\t\t) : (\n\t\t\t\tbuttonContent\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './callout.css';\n\ntype CalloutType =\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'critical'\n\t| 'discovery'\n\t| 'code'\n\t| 'earlyAccess';\n\ntype TypeLabels = Record<CalloutType, string>;\n\nconst iconTypes: Record<CalloutType, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tsuccess: 'circleCheck',\n\tcritical: 'diamondExclamation',\n\tdiscovery: 'squareQuestion',\n\tcode: 'squareTerminal',\n\tearlyAccess: 'leaf',\n};\n\n// Callout component prop types\nexport interface CalloutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Callout main content.\n\t */\n\tchildren: React.ReactNode;\n\t/**\n\t * Callout title.\n\t */\n\ttitle: string;\n\t/**\n\t * Callout type.\n\t */\n\ttype?: CalloutType;\n\t/**\n\t * Callout type labels. Provide translation strings if necessary.\n\t */\n\ttypeLabels?: TypeLabels;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Callout UI component\n */\nexport const Callout = ({\n\tchildren,\n\ttitle,\n\ttype = 'info',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tdiscovery: 'Discovery',\n\t\tcode: 'Code',\n\t\tearlyAccess: 'Early Access',\n\t},\n\tclassName,\n\t...props\n}: CalloutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-callout';\n\tconst typeClass = `${baseClass}--${type}`;\n\n\t// Label by type.\n\tconst calloutTypeLabel = `${typeLabels[type]}: `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, typeClass, className ?? '']\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__inner`}>\n\t\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon--${type}`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\ticonSize='xl'\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t\t<span className='visually-hidden'>{calloutTypeLabel}</span>\n\t\t\t\t\t{title && <div className={`${baseClass}__title`}>{title}</div>}\n\t\t\t\t\t{children && (\n\t\t\t\t\t\t<div className={`${baseClass}__main-content`}>{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { GridGapOptions } from '@layouts/layout-types';\n\nimport './card.css';\n\nexport type CardBackground =\n\t| 'default'\n\t| 'mint-gradient'\n\t| 'sundown-gradient'\n\t| 'yellow-gradient'\n\t| 'transparent';\n\n/**\n * Prop types for Card\n */\nexport interface CardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Background color or gradient for the card.\n\t */\n\tbackground?: CardBackground;\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Relative padding for the `main` slot.\n\t */\n\tpadding?: GridGapOptions;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Card UI component\n */\nexport const Card = ({\n\tbackground = 'default',\n\tchildren,\n\tpadding = 'standard',\n\tclassName,\n\t...props\n}: CardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-card';\n\tconst backgroundClass =\n\t\tbackground !== 'default' ? `${baseClass}--${background}` : null;\n\tconst paddingClass =\n\t\tpadding !== 'standard' ? `${baseClass}--pad-${padding}` : null;\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst imageSlot = slots['image'];\n\tconst mainSlot = slots['main'];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tbackgroundClass,\n\t\t\t\tpaddingClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{imageSlot && <div className={`${baseClass}__image`}>{imageSlot[0]}</div>}\n\t\t\t{mainSlot && <div className={`${baseClass}__main`}>{mainSlot}</div>}\n\t\t</div>\n\t);\n};\n","import React from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './card-heading.css';\n/**\n * Prop types for CardHeading\n */\nexport interface CardHeadingProps {\n\t/**\n\t * Font size of the heading. Default is `XL`.\n\t */\n\tfontSize?: 'L' | 'XL';\n\t/**\n\t * Font weight of the heading. Default is `bold`.\n\t */\n\tfontWeight?: 'bold' | 'semibold';\n\t/**\n\t * Heading level or `span`.\n\t */\n\tlevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text.\n\t */\n\ttext?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CardHeading UI component\n */\nexport const CardHeading = ({\n\tfontSize = 'XL',\n\tfontWeight = 'bold',\n\tlevel = 'h2',\n\ttext,\n\tclassName,\n\t...props\n}: CardHeadingProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-card-heading';\n\tconst sizeClass = fontSize === 'XL' ? 'pds-ts-xl' : 'pds-ts-l';\n\tconst weightClass = fontWeight === 'bold' ? 'pds-fw-bold' : 'pds-fw-semibold';\n\n\t// Render the output\n\treturn (\n\t\t<Hx\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tsizeClass,\n\t\t\t\tweightClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tlevel={level}\n\t\t\t{...props}\n\t\t>\n\t\t\t{text}\n\t\t</Hx>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tReactNode,\n\tuseState,\n} from 'react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './card-select-group.css';\n\nexport interface CardOption {\n\t/**\n\t * Unique ID for the option\n\t * @default ''\n\t */\n\tid?: string;\n\t/**\n\t * Option label\n\t */\n\tlabel: string | ReactNode;\n\t/**\n\t * Option description\n\t */\n\tdescription?: string | ReactNode;\n\t/**\n\t * Option value\n\t */\n\tvalue: string;\n}\n\nexport interface CardSelectGroupProps\n\textends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {\n\t/**\n\t * Optional initial selected option value\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Unique ID for the card select group\n\t */\n\tid: string;\n\t/**\n\t * Label for the card select group\n\t */\n\tlabel: string;\n\t/**\n\t * Display of the component label. `hidden` visually hides the label but keeps it accessible to screen readers.\n\t */\n\tlabelDisplay?: 'left' | 'center' | 'hidden';\n\t/**\n\t * Column layout of the cards at breakpoints medium and above.\n\t */\n\tlayout?: 'auto' | 'twoAcross' | 'threeAcross';\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t * Function should have the shape of: `(value) => { <do stuff here> } `.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Array of card options\n\t */\n\toptions?: CardOption[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CardSelectGroup UI component\n */\nexport const CardSelectGroup = ({\n\tid,\n\tdefaultValue,\n\tlabel,\n\tlabelDisplay = 'left',\n\tlayout = 'auto',\n\tonChange,\n\toptions,\n\tclassName,\n\t...props\n}: CardSelectGroupProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-card-select-group';\n\tlet legendClass = `${baseClass}__legend`;\n\tif (labelDisplay === 'center') {\n\t\tlegendClass = `${baseClass}__legend ${baseClass}__legend--center`;\n\t}\n\tif (labelDisplay === 'hidden') {\n\t\tlegendClass = `${baseClass}__legend visually-hidden`;\n\t}\n\n\t// Set up state.\n\tconst [currentSelection, setCurrentSelection] = useState(defaultValue);\n\n\t// Function to handle selection.\n\tconst handleSelection = (event: MouseEvent<HTMLInputElement>) => {\n\t\tsetCurrentSelection(event.currentTarget.value);\n\n\t\tif (onChange) {\n\t\t\tonChange(event.currentTarget.value);\n\t\t}\n\t};\n\n\t// Assign grid classes based on number of options.\n\tconst numberOfOptions = options.length;\n\tconst oneAcross = 'pds-grid-item';\n\tconst twoAcross = 'pds-grid-item pds-grid-item--sm-4 pds-grid-item--md-6';\n\tconst threeAcross = 'pds-grid-item pds-grid-item--sm-4 pds-grid-item--md-4';\n\n\tlet gridItemClasses = '';\n\tif (layout === 'twoAcross') {\n\t\tgridItemClasses = twoAcross;\n\t} else if (layout === 'threeAcross') {\n\t\tgridItemClasses = threeAcross;\n\t} else if (layout === 'auto') {\n\t\t// If there is only one option, use one across.\n\t\tif (numberOfOptions === 1) {\n\t\t\tgridItemClasses = oneAcross;\n\t\t}\n\t\t// If items are divisible by 3, use 3 across.\n\t\telse if (numberOfOptions % 3 === 0) {\n\t\t\tgridItemClasses = threeAcross;\n\t\t}\n\t\t// If items are divisible by 2, use 2 across.\n\t\telse if (numberOfOptions % 2 === 0) {\n\t\t\tgridItemClasses = twoAcross;\n\t\t}\n\t\t// If items are not divisible by 2 or 3, use 3 across.\n\t\telse {\n\t\t\tgridItemClasses = threeAcross;\n\t\t}\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<fieldset\n\t\t\tclassName={[baseClass, className].join(' ').trim().replace(/\\s+/g, ' ')}\n\t\t\tid={id}\n\t\t\t{...props}\n\t\t>\n\t\t\t<legend className={legendClass}>{label}</legend>\n\t\t\t<div className={`${baseClass}__options pds-grid pds-grid--narrow`}>\n\t\t\t\t{options.map((option, idx) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={[`${baseClass}__option`, gridItemClasses]\n\t\t\t\t\t\t\t\t.join(' ')\n\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t\t\t\t\tkey={`${id}-option-${idx}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype='radio'\n\t\t\t\t\t\t\t\tid={option.id ? option.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\tname={id}\n\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\tonClick={handleSelection}\n\t\t\t\t\t\t\t\tdefaultChecked={\n\t\t\t\t\t\t\t\t\tcurrentSelection === option.value ? true : false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\thtmlFor={option.id ? option.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tcurrentSelection === option.value\n\t\t\t\t\t\t\t\t\t\t? `${baseClass}__option-label ${baseClass}__option-label--selected`\n\t\t\t\t\t\t\t\t\t\t: `${baseClass}__option-label`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__option-label-indicator`}>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticonName={\n\t\t\t\t\t\t\t\t\t\t\tcurrentSelection === option.value\n\t\t\t\t\t\t\t\t\t\t\t\t? 'circleCheck'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'circle'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ticonSize='xl'\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tcurrentSelection === option.value\n\t\t\t\t\t\t\t\t\t\t\t\t? `${baseClass}__option-icon ${baseClass}__option-icon--selected`\n\t\t\t\t\t\t\t\t\t\t\t\t: `${baseClass}__option-icon`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__option-label-text`}>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t{option.description && (\n\t\t\t\t\t\t\t\t\t\t<div className={`${baseClass}__option-description`}>\n\t\t\t\t\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</fieldset>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { CardHeading } from '@components/cards/CardHeading/CardHeading';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './empty-state-card.css';\n\n/**\n * Prop types for EmptyStateCard\n */\nexport interface EmptyStateCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Heading level or `span`.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text.\n\t */\n\theadingText: string;\n\t/**\n\t * Whether the link is external or not.\n\t */\n\tisLinkExternal?: boolean;\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent: ReactNode;\n\t/**\n\t * Summary paragraph.\n\t */\n\tsummary: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * EmptyStateCard UI component\n */\nexport const EmptyStateCard = ({\n\theadingLevel = 'h2',\n\theadingText,\n\tisLinkExternal = false,\n\tlinkContent,\n\tsummary,\n\tclassName,\n\t...props\n}: EmptyStateCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-empty-state-card';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t<CardHeading\n\t\t\t\t\tclassName={`${baseClass}__heading`}\n\t\t\t\t\tfontSize='XL'\n\t\t\t\t\tfontWeight='semibold'\n\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t\ttext={headingText}\n\t\t\t\t/>\n\t\t\t\t<p className={`${baseClass}__summary`}>{summary}</p>\n\t\t\t</div>\n\t\t\t<ButtonLink\n\t\t\t\tdisplayType={isLinkExternal ? 'icon-end' : 'label-only'}\n\t\t\t\tlinkContent={linkContent}\n\t\t\t\tsize='md'\n\t\t\t\tvariant='secondary'\n\t\t\t\ticonName='externalLink'\n\t\t\t\tclassName={`${baseClass}__cta`}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Card } from '@components/cards/Card/Card';\nimport { CardHeading } from '@components/cards/CardHeading/CardHeading';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './links-card.css';\n\n/**\n * Prop types for LinksCard\n */\ninterface LinksCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Heading level\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Link Card heading\n\t */\n\theadingText: string;\n\t/**\n\t * Array of links\n\t */\n\tlinkItems?: ReactNode[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Links Card UI component\n */\nexport const LinksCard = ({\n\tlinkItems,\n\theadingLevel = 'h3',\n\theadingText,\n\tclassName,\n\t...props\n}: LinksCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-links-card';\n\n\tconst cardContents = (\n\t\t<Card>\n\t\t\t<div slot='main'>\n\t\t\t\t{headingText && (\n\t\t\t\t\t<CardHeading\n\t\t\t\t\t\tclassName={`${baseClass}__heading`}\n\t\t\t\t\t\tfontSize='XL'\n\t\t\t\t\t\tfontWeight='bold'\n\t\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t\t\ttext={headingText}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{linkItems && (\n\t\t\t\t\t<ul className={`${baseClass}__list`} role='list'>\n\t\t\t\t\t\t{linkItems.map((linkItem, index) => (\n\t\t\t\t\t\t\t<li key={index} className='pds-cta-links-card__item'>\n\t\t\t\t\t\t\t\t{linkItem}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Card>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{cardContents}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './platform-icon.css';\n\ntype PlatformType =\n\t| 'drupal'\n\t| 'drupal7'\n\t| 'front-end-sites'\n\t| 'gatsby'\n\t| 'gatsby-wp'\n\t| 'import-custom'\n\t| 'next'\n\t| 'next-drupal'\n\t| 'next-wp'\n\t| 'wordpress';\n\ninterface PlatformIconProps extends ComponentPropsWithoutRef<'div'> {\n\tplatformType: PlatformType;\n\tclassName?: string;\n}\n\n/**\n * PlatformIcon UI component\n */\nexport const PlatformIcon = ({\n\tplatformType,\n\tclassName,\n\t...props\n}: PlatformIconProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-platform-icon';\n\tconst platformClass = `pds-platform-icon--${platformType}`;\n\n\t// Preprocess icon.\n\tlet processedIcon;\n\n\t// Icon pairs get rendered from single platform svgs.\n\tconst iconPairs = ['front-end-sites', 'gatsby-wp', 'next-drupal', 'next-wp'];\n\n\tif (iconPairs.includes(platformType)) {\n\t\t// Map icon pairs to a single element.\n\t\tlet iconPair = [];\n\t\tswitch (platformType) {\n\t\t\tcase 'front-end-sites':\n\t\t\t\ticonPair = ['next', 'gatsby'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-drupal':\n\t\t\t\ticonPair = ['next', 'drupal'];\n\t\t\t\tbreak;\n\t\t\tcase 'gatsby-wp':\n\t\t\t\ticonPair = ['gatsby', 'wordpress'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-wp':\n\t\t\t\ticonPair = ['next', 'wordpress'];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tprocessedIcon = (\n\t\t\t<span className={`${baseClass}__group`}>\n\t\t\t\t{svgData[iconPair[0]]}\n\t\t\t\t{svgData[iconPair[1]]}\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\tprocessedIcon = svgData[platformType];\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, platformClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{processedIcon}\n\t\t</div>\n\t);\n};\n\n// SVG Paths for each icon.\nconst svgData = {\n\tdrupal: (\n\t\t<svg\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\twidth='32'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M23.027 12.9858C23.027 12.9602 23.0016 12.9474 22.9762 12.9218C21.7311 11.5139 19.9652 9.51725 18.6948 8.09655C18.301 7.67418 17.9071 7.25181 17.5387 6.81664C17.4498 6.71425 17.3736 6.61185 17.2846 6.50946C17.2084 6.43267 17.1703 6.38147 17.1703 6.38147C16.7383 5.8695 16.3953 5.29354 16.1539 4.67919L16.0904 4.5384C16.0904 4.5384 16.0904 4.5384 16.065 4.5128C16.065 4.5128 16.0269 4.5 16.0142 4.5C15.9888 4.5 15.9761 4.5128 15.9634 4.5128C15.9634 4.52133 15.9549 4.52986 15.938 4.5384L15.8745 4.67919C15.6204 5.29354 15.2773 5.8695 14.8581 6.38147C14.8581 6.38147 14.82 6.43267 14.7438 6.50946C14.6548 6.61185 14.5786 6.71425 14.4897 6.81664C14.1086 7.25181 13.7274 7.67418 13.3336 8.09655C12.0632 9.51725 10.2846 11.5139 9.03954 12.9218C9.02683 12.9474 9.01413 12.9602 8.98872 12.9858C4.28813 19.2958 9.39526 24.441 9.39526 24.441H9.38256C10.8944 26.2073 13.0414 27.2952 15.3409 27.4616C15.5441 27.4872 15.7601 27.5 15.9888 27.5C16.2048 27.5 16.4207 27.4872 16.6367 27.4616C18.9489 27.2952 21.0832 26.2073 22.595 24.441C22.595 24.441 27.7149 19.2958 23.0143 12.9858H23.027ZM12.0886 17.4271L11.9742 17.6063C11.1103 18.6686 10.6022 19.7949 10.437 20.9085C10.4116 21.0492 10.2846 21.1388 10.1575 21.1132C10.0686 21.1004 10.0051 21.0365 9.96695 20.9597C9.73828 20.4221 9.58582 19.8589 9.5096 19.283C9.2174 17.2479 9.82721 15.4688 11.123 13.9457C11.6439 13.3442 12.1648 12.7426 12.6857 12.1411C12.7746 12.0387 12.9271 12.0259 13.0287 12.1155L13.0541 12.1411C13.4733 12.6274 14.0196 13.2546 14.6294 13.9713C14.7057 14.0609 14.7057 14.2017 14.6294 14.3041C13.7909 15.3152 12.9016 16.3904 12.1013 17.4143L12.0886 17.4271ZM19.3046 22.7003C18.8218 23.9802 17.869 24.7482 16.5224 24.9658C14.604 25.2602 12.8127 23.9418 12.5205 22.0092C12.5205 21.9836 12.5205 21.9708 12.5205 21.9452C12.3681 20.8573 12.6984 19.8973 13.3971 19.0782C14.2102 18.1183 16.0015 15.8912 16.0269 15.8528C16.065 15.8912 17.9707 18.2846 18.6821 19.1294C19.5841 20.1917 19.8001 21.4076 19.3173 22.7003H19.3046ZM22.1377 20.6909C22.1377 20.7293 22.0996 20.7805 22.0869 20.8189C22.036 20.9469 21.8963 21.0109 21.7692 20.9597C21.693 20.9213 21.6295 20.8573 21.6168 20.7677C21.4389 19.6925 20.9308 18.6174 20.105 17.6063L20.0288 17.4783L19.9779 17.4143C19.3173 16.5696 15.8236 12.4482 14.2991 10.6436C14.2229 10.554 14.2229 10.4132 14.2991 10.3108C14.8073 9.74764 15.3155 9.18447 15.8109 8.60851C15.8999 8.50612 16.0523 8.50612 16.1539 8.60851C16.3826 8.8645 16.5986 9.10768 16.8146 9.36366C18.1993 10.9252 19.5968 12.461 20.9435 14.0353C22.6458 16.0192 23.0397 18.2974 22.1377 20.7037V20.6909Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tdrupal7: (\n\t\t<svg\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\twidth='32'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M20.2634 9.37661C19.2723 8.72036 18.3214 8.46255 17.375 7.8063C16.7946 7.3938 15.9777 6.40005 15.2991 5.54224C15.1786 6.91567 14.7857 7.47349 14.317 7.86255C13.3661 8.65942 12.7634 8.90317 11.9286 9.37661C11.2232 9.76567 7.42857 12.5079 7.42857 17.6172C7.42857 22.736 11.5268 26.5 16.0804 26.5C20.6205 26.5 24.5714 23.0313 24.5714 17.7813C24.5714 12.5172 20.8661 9.76567 20.2634 9.37661ZM20.375 24.6391C19.4777 25.5813 16.3527 25.9844 15.1652 24.836C14.9509 24.611 15.1786 24.2735 15.4554 24.2735C15.4554 24.2735 16.2143 24.8969 17.7545 24.8969C18.9598 24.8969 19.808 24.536 20.1875 24.2407C20.4598 24.025 20.5625 24.4422 20.375 24.6391ZM17.942 22.1735C18.3304 22.0047 19.2366 21.9954 19.5848 22.2344C19.7679 22.3657 20.3036 23.1157 19.8616 23.3454C19.4866 23.5422 19.808 22.6094 18.6786 22.6094C18.0223 22.6094 17.808 22.8532 17.4866 23.125C17.1741 23.4063 17.0491 23.5 16.942 23.3454C16.6741 22.961 17.6518 22.3 17.942 22.1735ZM22.0714 22.9844C21.3929 22.9375 20.0402 20.6969 19.1696 20.6641C17.7902 20.6219 14.5223 24.4469 11.9688 22.6329C10.2366 21.386 11.317 17.7204 14.2813 17.7016C16.4911 17.6782 18.0223 19.9985 19.125 19.975C20.0759 19.961 21.8839 18.0157 22.7768 18.0157C24.9509 18.0157 23.817 23.1391 22.0714 22.9844Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\twordpress: (\n\t\t<svg\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<circle cx='16' cy='16' r='16' fill='white' />\n\t\t\t<path\n\t\t\t\td='M16 0.96001C18.0309 0.96001 20.0004 1.35745 21.8541 2.14178C22.745 2.51859 23.6047 2.98515 24.4087 3.52852C25.2055 4.0666 25.9543 4.68485 26.6355 5.36549C27.3161 6.04614 27.9344 6.79543 28.4724 7.59224C29.0158 8.39624 29.4819 9.25545 29.8592 10.1468C30.643 12.0006 31.041 13.9701 31.041 16.001C31.041 18.0319 30.6435 20.0013 29.8592 21.8551C29.4824 22.746 29.0158 23.6057 28.4724 24.4097C27.9344 25.2065 27.3161 25.9553 26.6355 26.6364C25.9548 27.3171 25.2055 27.9353 24.4087 28.4734C23.6047 29.0168 22.7455 29.4829 21.8541 29.8601C20.0004 30.644 18.0309 31.0419 16 31.0419C13.9691 31.0419 11.9996 30.6445 10.1459 29.8601C9.25497 29.4833 8.39528 29.0168 7.59128 28.4734C6.79447 27.9353 6.04566 27.3171 5.36453 26.6364C4.68389 25.9558 4.06564 25.2065 3.52756 24.4097C2.98419 23.6057 2.51811 22.7465 2.14082 21.8551C1.35697 20.0013 0.95905 18.0319 0.95905 16.001C0.95905 13.9701 1.35649 12.0006 2.14082 10.1468C2.51763 9.25593 2.98419 8.39624 3.52756 7.59224C4.06564 6.79543 4.68389 6.04662 5.36453 5.36549C6.04518 4.68485 6.79447 4.0666 7.59128 3.52852C8.39528 2.98515 9.25449 2.51907 10.1459 2.14178C11.9996 1.35793 13.9691 0.96001 16 0.96001ZM16 0C7.16359 0 0 7.16359 0 16C0 24.8364 7.16359 32 16 32C24.8364 32 32 24.8364 32 16C32 7.16359 24.8369 0 16 0Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M2.6669 15.9996C2.6669 21.2772 5.73365 25.8382 10.1819 27.9992L3.82131 10.5736C3.08162 12.2316 2.6669 14.0666 2.6669 15.9996ZM25.0015 15.3271C25.0015 13.6788 24.4097 12.5378 23.9023 11.6498C23.2265 10.5511 22.5924 9.62129 22.5924 8.52255C22.5924 7.2971 23.5217 6.15613 24.8316 6.15613C24.8906 6.15613 24.9468 6.16333 25.0044 6.16669C22.6322 3.99323 19.4714 2.66602 16.0005 2.66602C11.342 2.66602 7.24423 5.05644 4.86004 8.67568C5.17301 8.68576 5.46821 8.692 5.71829 8.692C7.11271 8.692 9.27177 8.52255 9.27177 8.52255C9.99033 8.48031 10.0753 9.53632 9.35721 9.62129C9.35721 9.62129 8.6348 9.70577 7.83127 9.74801L12.6865 24.1904L15.605 15.4394L13.528 9.74801C12.8094 9.70577 12.1297 9.62129 12.1297 9.62129C11.4111 9.57904 11.4952 8.48031 12.2142 8.52255C12.2142 8.52255 14.4155 8.692 15.7259 8.692C17.1203 8.692 19.2799 8.52255 19.2799 8.52255C19.9984 8.48031 20.0834 9.53632 19.3648 9.62129C19.3648 9.62129 18.6415 9.70577 17.8389 9.74801L22.6577 24.0805L24.0334 19.722C24.6444 17.8174 25.0025 16.4676 25.0025 15.3266L25.0015 15.3271ZM16.2342 17.166L12.2329 28.7903C13.4276 29.1416 14.691 29.3336 16 29.3336C17.5528 29.3336 19.0423 29.0658 20.428 28.5776C20.3925 28.5205 20.3594 28.46 20.3325 28.3938L16.2342 17.166ZM27.7006 9.60353C27.7577 10.0283 27.7904 10.4839 27.7904 10.9744C27.7904 12.3271 27.5369 13.8477 26.7761 15.75L22.7037 27.5245C26.6676 25.2133 29.3336 20.9192 29.3336 16.0001C29.3336 13.6821 28.7412 11.5024 27.7006 9.60353Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tgatsby: (\n\t\t<svg\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clip-path='url(#clip0_14628_82557)'>\n\t\t\t\t<path\n\t\t\t\t\td='M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z'\n\t\t\t\t\tfill='var(--pds-color-partner-gatsby)'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M7.0857 24.9142C4.6857 22.5142 3.42856 19.3142 3.42856 16.2285L15.8857 28.5714C12.6857 28.4571 9.4857 27.3142 7.0857 24.9142Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M18.7429 28.2285L3.77142 13.257C5.02857 7.65704 10.0571 3.42847 16 3.42847C20.2286 3.42847 23.8857 5.48561 26.1714 8.57132L24.4571 10.057C22.5143 7.42847 19.4286 5.71418 16 5.71418C11.5429 5.71418 7.77142 8.57132 6.28571 12.5713L19.4286 25.7142C22.7429 24.5713 25.2571 21.7142 26.0571 18.2856H20.5714V15.9999H28.5714C28.5714 21.9428 24.3429 26.9713 18.7429 28.2285Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_14628_82557'>\n\t\t\t\t\t<rect width='32' height='32' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tnext: (\n\t\t<svg\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tfill='none'\n\t\t\tviewBox='0 0 32 32'\n\t\t>\n\t\t\t<rect\n\t\t\t\twidth='32'\n\t\t\t\theight='32'\n\t\t\t\tfill='var(--pds-color-partner-nextjs)'\n\t\t\t\trx='16'\n\t\t\t></rect>\n\t\t\t<g clipPath='url(#clip0_3906_4409)'>\n\t\t\t\t<mask\n\t\t\t\t\tid='mask0_3906_4409'\n\t\t\t\t\tstyle={{ maskType: 'alpha' }}\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tx='4'\n\t\t\t\t\ty='4'\n\t\t\t\t\tmaskUnits='userSpaceOnUse'\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t\t\t\td='M16 28c6.627 0 12-5.373 12-12S22.627 4 16 4 4 9.373 4 16s5.373 12 12 12z'\n\t\t\t\t\t></path>\n\t\t\t\t</mask>\n\t\t\t\t<g mask='url(#mask0_3906_4409)'>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t\t\t\tstroke='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstrokeWidth='1.333'\n\t\t\t\t\t\td='M16 28c6.627 0 12-5.373 12-12S22.627 4 16 4 4 9.373 4 16s5.373 12 12 12z'\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill='url(#paint0_linear_3906_4409)'\n\t\t\t\t\t\td='M23.934 25.003L13.22 11.2H11.2v9.596h1.615v-7.545l9.851 12.728c.445-.297.869-.624 1.268-.976z'\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill='url(#paint1_linear_3906_4409)'\n\t\t\t\t\t\td='M20.933 11.2h-1.6v9.6h1.6v-9.6z'\n\t\t\t\t\t></path>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid='paint0_linear_3906_4409'\n\t\t\t\t\tx1='18.533'\n\t\t\t\t\tx2='23.267'\n\t\t\t\t\ty1='19.533'\n\t\t\t\t\ty2='25.4'\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='var(--pds-color-fg-reverse)'></stop>\n\t\t\t\t\t<stop\n\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\tstopColor='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t></stop>\n\t\t\t\t</linearGradient>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid='paint1_linear_3906_4409'\n\t\t\t\t\tx1='20.133'\n\t\t\t\t\tx2='20.107'\n\t\t\t\t\ty1='11.2'\n\t\t\t\t\ty2='18.25'\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='var(--pds-color-fg-reverse)'></stop>\n\t\t\t\t\t<stop\n\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\tstopColor='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t></stop>\n\t\t\t\t</linearGradient>\n\t\t\t\t<clipPath id='clip0_3906_4409'>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\td='M0 0H24V24H0z'\n\t\t\t\t\t\ttransform='translate(4 4)'\n\t\t\t\t\t></path>\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\t'import-custom': (\n\t\t<svg\n\t\t\twidth='32'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\twidth='32'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M17 10.5V15H21.5C22.0312 15 22.5 15.4688 22.5 16C22.5 16.5625 22.0312 17 21.5 17H17V21.5C17 22.0625 16.5312 22.5 16 22.5C15.4375 22.5 15 22.0625 15 21.5V17H10.5C9.9375 17 9.5 16.5625 9.5 16C9.5 15.4688 9.9375 15 10.5 15H15V10.5C15 9.96875 15.4375 9.5 16 9.5C16.5312 9.5 17 9.96875 17 10.5Z'\n\t\t\t\tfill='var(--pds-color-fg-reverse)'\n\t\t\t/>\n\t\t</svg>\n\t),\n};\n","import React, { ComponentPropsWithoutRef, ReactElement } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Card } from '@components/cards/Card/Card';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { IndicatorBadge } from '@components/badges/IndicatorBadge/IndicatorBadge';\nimport { PlatformIcon } from '@components/icons/PlatformIcon/PlatformIcon';\n\nimport { BadgeColor } from '@libs/types/custom-types';\n\nimport './new-site-card.css';\n\ninterface BadgeValueType {\n\tlabel: string;\n\tcolor: BadgeColor;\n}\n\nexport const badgeTypes: { [key: string]: BadgeValueType } = {\n\t'early-access': { label: 'Early Access', color: 'success' },\n} as const;\n\ntype IconType =\n\t| 'drupal'\n\t| 'wordpress'\n\t| 'gatsby'\n\t| 'next'\n\t| 'import-custom'\n\t| 'next-drupal'\n\t| 'gatsby-wp'\n\t| 'next-wp';\n\n/**\n * Prop types for NewSiteCard\n */\ninterface NewSiteCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Optional indicator badge type. Choose from only early-access at this time.\n\t */\n\tbadge?: 'early-access';\n\t/**\n\t * Icon. Choose from only Platform Icons at this time.\n\t */\n\ticon?: IconType;\n\t/**\n\t * Text for screen readers when link opens in new window\n\t */\n\tnewWindowString?: string;\n\t/**\n\t * Card title\n\t */\n\ttitle: string;\n\t/**\n\t * Card subtitle\n\t */\n\tsubtitle?: string;\n\t/**\n\t * Card summary\n\t */\n\tsummary?: string;\n\t/**\n\t * The primary link for the selection card.\n\t */\n\tselectionLink: ReactElement;\n\t/**\n\t * Array of supplemental links. Maximum of 2.\n\t */\n\tsupplementalLinks?: ReactElement[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * NewSiteCard UI component\n */\nexport const NewSiteCard = ({\n\tbadge,\n\ticon,\n\tnewWindowString = 'Opens new window',\n\ttitle,\n\tsubtitle,\n\tsummary,\n\tselectionLink,\n\tsupplementalLinks,\n\tclassName,\n\t...props\n}: NewSiteCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-new-site-card';\n\n\t// Set selection link element based on the type of link element passed in.\n\tconst SelectionLinkElement = selectionLink.type;\n\n\t// Preprocess card contents.\n\tconst cardContents = (\n\t\t<Card padding='narrow'>\n\t\t\t<div slot='main' className={`${baseClass}__main`}>\n\t\t\t\t<SelectionLinkElement\n\t\t\t\t\taria-label={selectionLink.props.children}\n\t\t\t\t\tclassName={`${baseClass}__selection-link`}\n\t\t\t\t\t{...selectionLink.props}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${baseClass}__header`}>\n\t\t\t\t\t\t{icon && (\n\t\t\t\t\t\t\t<div className={`${baseClass}__icon`}>\n\t\t\t\t\t\t\t\t<PlatformIcon platformType={icon} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className={`${baseClass}__title`}>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t{subtitle && (\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__subtitle`}>{subtitle}</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{badge && (\n\t\t\t\t\t\t<IndicatorBadge\n\t\t\t\t\t\t\tlabel={badgeTypes[badge].label}\n\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\tcolor={badgeTypes[badge].color}\n\t\t\t\t\t\t\tclassName={`${baseClass}__badge`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{summary && <div className={`${baseClass}__summary`}>{summary}</div>}\n\t\t\t\t</SelectionLinkElement>\n\t\t\t\t{supplementalLinks && supplementalLinks.length <= 2 && (\n\t\t\t\t\t<div className={`${baseClass}__links`}>\n\t\t\t\t\t\t{supplementalLinks.map((item, index) => {\n\t\t\t\t\t\t\tconst LinkType = item.type;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<LinkType\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__link`}\n\t\t\t\t\t\t\t\t\t{...item.props}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t\t\t\t\t{item.props.target === '_blank' && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticonName='externalLink'\n\t\t\t\t\t\t\t\t\t\t\t\ticonSize='sm'\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__link-icon`}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span className='visually-hidden'>{newWindowString}</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</LinkType>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Card>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{cardContents}\n\t\t</div>\n\t);\n};\n","import React from 'react';\n\nexport const svgData = {\n\tamex: (\n\t\t<svg\n\t\t\twidth='70'\n\t\t\theight='42'\n\t\t\tviewBox='0 0 70 42'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_10146_23946)'>\n\t\t\t\t<path\n\t\t\t\t\td='M63 0H7C3.13401 0 0 3.13401 0 7V35C0 38.866 3.13401 42 7 42H63C66.866 42 70 38.866 70 35V7C70 3.13401 66.866 0 63 0Z'\n\t\t\t\t\tfill='#0072CE'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M57.512 24.4402H55.1934C54.9619 24.4402 54.8081 24.4488 54.6786 24.5361C54.5444 24.622 54.4927 24.7496 54.4927 24.9179C54.4927 25.1182 54.606 25.2544 54.7709 25.3133C54.9051 25.3598 55.0492 25.3734 55.2611 25.3734L55.9506 25.3918C56.6464 25.409 57.1108 25.5282 57.394 25.819C57.4455 25.8595 57.4765 25.905 57.512 25.9504V24.4402ZM57.5116 27.9388C57.2025 28.3894 56.6004 28.6178 55.7852 28.6178H53.3284V27.4797H55.7753C56.018 27.4797 56.1878 27.4478 56.2901 27.3483C56.3787 27.2662 56.4405 27.1469 56.4405 27.0021C56.4405 26.8475 56.3787 26.7247 56.2851 26.6511C56.1928 26.5701 56.0584 26.5333 55.8369 26.5333C54.6424 26.4928 53.1522 26.5701 53.1522 24.8906C53.1522 24.1207 53.6424 23.3104 54.9774 23.3104H57.5114V22.2544H55.1571C54.4465 22.2544 53.9304 22.424 53.5649 22.6878V22.2544H50.0825C49.5256 22.2544 48.8719 22.392 48.5627 22.6878V22.2544H42.3441V22.6878C41.8491 22.3319 41.0141 22.2544 40.6286 22.2544H36.5267V22.6878C36.1352 22.3098 35.2645 22.2544 34.7337 22.2544H30.143L29.0925 23.3879L28.1086 22.2544H21.251V29.6602H27.9795L29.062 28.5088L30.0817 29.6602L34.2292 29.6639V27.9217H34.6369C35.1872 27.9302 35.8363 27.9081 36.4089 27.6613V29.66H39.8298V27.7298H39.9948C40.2055 27.7298 40.2262 27.7385 40.2262 27.9483V29.6599H50.6183C51.2781 29.6599 51.9678 29.4915 52.3497 29.1859V29.6599H55.646C56.332 29.6599 57.0019 29.564 57.5116 29.3185V27.9388ZM52.4376 25.8187C52.6853 26.0743 52.818 26.3969 52.818 26.9432C52.818 28.085 52.1025 28.6179 50.8196 28.6179H48.3417V27.4798H50.8096C51.0509 27.4798 51.222 27.448 51.3292 27.3484C51.4167 27.2663 51.4795 27.1471 51.4795 27.0022C51.4795 26.8476 51.4116 26.7249 51.3243 26.6512C51.227 26.5703 51.0928 26.5335 50.8712 26.5335C49.6815 26.493 48.1917 26.5703 48.1917 24.8907C48.1917 24.1209 48.6768 23.3105 50.0105 23.3105H52.5608V24.4402H50.2272C49.9959 24.4402 49.8454 24.4488 49.7175 24.536C49.5782 24.622 49.5265 24.7495 49.5265 24.9179C49.5265 25.1181 49.6448 25.2543 49.8048 25.3132C49.939 25.3598 50.0832 25.3734 50.2999 25.3734L50.9847 25.3918C51.6753 25.4086 52.1494 25.5277 52.4376 25.8187ZM40.9579 25.4904C40.7878 25.5911 40.5773 25.5998 40.3298 25.5998H38.7843V24.4077H40.3508C40.5773 24.4077 40.804 24.4125 40.9579 24.5036C41.1228 24.5895 41.2214 24.7539 41.2214 24.981C41.2214 25.2081 41.1228 25.3911 40.9579 25.4904ZM41.7265 26.1516C42.0097 26.2558 42.2412 26.4425 42.3497 26.5971C42.5293 26.8563 42.5553 27.0981 42.5605 27.5659V28.6181H41.2833V27.954C41.2833 27.6347 41.3141 27.162 41.0776 26.9152C40.8917 26.725 40.6084 26.6796 40.1443 26.6796H38.7848V28.6181H37.5064V23.3105H40.4435C41.0876 23.3105 41.5567 23.3389 41.9742 23.561C42.3757 23.8029 42.6282 24.1342 42.6282 24.7396C42.628 25.5868 42.0614 26.0191 41.7265 26.1516ZM43.3332 23.3105H47.5791V24.4082H44.6001V25.3731H47.5064V26.456H44.6001V27.512L47.5791 27.5168V28.6181H43.3332V23.3105ZM34.7502 25.7593H33.1062V24.4077H34.765C35.2243 24.4077 35.5431 24.5943 35.5431 25.0585C35.5431 25.5175 35.2391 25.7593 34.7502 25.7593ZM31.8391 28.1349L29.8859 25.9729L31.8391 23.8796V28.1349ZM26.7953 27.5115H23.6675V26.4555H26.4604V25.3726H23.6675V24.4077H26.857L28.2484 25.9544L26.7953 27.5115ZM36.9094 25.0591C36.9094 26.5335 35.806 26.8379 34.694 26.8379H33.1067V28.6181H30.634L29.0676 26.8611L27.4396 28.6181H22.4005V23.3105H27.5171L29.0823 25.0503L30.7005 23.3105H34.7655C35.775 23.3105 36.9094 23.5892 36.9094 25.0591Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M16.3301 17.1937L15.4594 15.0784L14.5937 17.1937H16.3301ZM35.5119 16.351C35.3371 16.4568 35.1303 16.4603 34.8826 16.4603H33.3372V15.2817H34.9036C35.1253 15.2817 35.3566 15.2917 35.5069 15.3774C35.6719 15.4548 35.774 15.6193 35.774 15.8466C35.774 16.0785 35.6769 16.2651 35.5119 16.351ZM46.5371 17.1937L45.6567 15.0784L44.7812 17.1937H46.5371ZM25.9854 19.4831H24.6812L24.6764 15.3273L22.8317 19.4831H21.7148L19.8653 15.3236V19.4831H17.2778L16.789 18.2996H14.1402L13.6464 19.4831H12.2647L14.5428 14.1769H16.4329L18.5966 19.2008V14.1769H20.6729L22.3378 17.7765L23.8672 14.1769H25.9852L25.9854 19.4831ZM31.1833 19.4831H26.9336V14.1769H31.1833V15.2819H28.2058V16.2383H31.1119V17.326H28.2058V18.3857H31.1833V19.4831ZM37.1752 15.606C37.1752 16.452 36.6089 16.8891 36.2788 17.0203C36.5572 17.1259 36.7949 17.3126 36.9081 17.4672C37.0877 17.7311 37.1187 17.9668 37.1187 18.4407V19.4831H35.8356L35.8308 18.814C35.8308 18.4947 35.8614 18.0355 35.63 17.7802C35.4441 17.5936 35.1607 17.5531 34.7027 17.5531H33.3371V19.4831H32.065V14.1769H34.991C35.6412 14.1769 36.1202 14.194 36.5315 14.431C36.934 14.6681 37.1752 15.0141 37.1752 15.606ZM39.211 19.4831H37.913V14.1769H39.211V19.4831ZM54.2703 19.4831H52.4675L50.0561 15.5005V19.4831H47.4653L46.9702 18.2996H44.3276L43.8473 19.4831H42.3586C41.7403 19.4831 40.9574 19.3468 40.514 18.8962C40.0669 18.4457 39.8343 17.8354 39.8343 16.8705C39.8343 16.0835 39.9733 15.3641 40.5201 14.7956C40.9314 14.3721 41.5754 14.1769 42.4521 14.1769H43.6837V15.3139H42.4779C42.0137 15.3139 41.7515 15.3827 41.499 15.6282C41.2821 15.8516 41.1333 16.274 41.1333 16.8302C41.1333 17.3987 41.2466 17.8085 41.4831 18.0763C41.679 18.2863 42.0349 18.35 42.3697 18.35H42.9411L44.734 14.177H46.6402L48.794 19.196V14.177H50.731L52.9672 17.8726V14.177H54.2703V19.4831ZM12.2502 20.5257H14.4238L14.9139 19.3471H16.0111L16.4999 20.5257H20.7766V19.6246L21.1584 20.5295H23.3785L23.7603 19.6111V20.5257H34.3888L34.3838 18.591H34.5894C34.7334 18.5959 34.7755 18.6092 34.7755 18.8463V20.5257H40.2726V20.0753C40.716 20.3122 41.4056 20.5257 42.3131 20.5257H44.6257L45.1206 19.3471H46.2178L46.7019 20.5257H51.1584V19.4061L51.8332 20.5257H55.4044V13.125H51.8702V13.999L51.3752 13.125H47.7487V13.999L47.2942 13.125H42.3956C41.5756 13.125 40.8548 13.2391 40.2726 13.5571V13.125H36.8921V13.5571C36.5216 13.2294 36.0167 13.125 35.4553 13.125H23.1051L22.2765 15.0365L21.4255 13.125H17.5355V13.999L17.1082 13.125H13.7906L12.25 16.6437L12.2502 20.5257Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_10146_23946'>\n\t\t\t\t\t<rect width='70' height='42' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tdiscover: (\n\t\t<svg\n\t\t\twidth='70'\n\t\t\theight='42'\n\t\t\tviewBox='0 0 70 42'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_10146_23945)'>\n\t\t\t\t<path\n\t\t\t\t\td='M70 36.4C70 39.48 67 42 63.3333 42H6.66667C3 42 0 39.48 0 36.4V5.6C0 2.52 3 0 6.66667 0H63.3333C67 0 70 2.52 70 5.6V36.4Z'\n\t\t\t\t\tfill='#F5F5F5'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M69.9999 36.75C69.9999 40.1417 66.3612 42 62.9411 42H20.5881C20.5881 42 61.6049 36.5167 69.9999 19.25V36.75Z'\n\t\t\t\t\tfill='#FF6D00'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M14.8791 16.6249H16.5749V25.8749H14.8791V16.6249ZM24.1291 21.2499C24.1291 23.8707 26.1333 25.8749 28.7541 25.8749C29.5249 25.8749 30.1416 25.7207 30.9124 25.4124V23.4082C30.2958 24.0249 29.6791 24.3332 28.7541 24.3332C27.0583 24.3332 25.8249 23.0999 25.8249 21.2499C25.8249 19.554 27.0583 18.1665 28.7541 18.1665C29.5249 18.1665 30.1416 18.4749 30.9124 19.0915V17.0874C30.1416 16.779 29.5249 16.4707 28.7541 16.4707C26.1333 16.6249 24.1291 18.7832 24.1291 21.2499ZM44.7874 22.6374L42.3208 16.6249H40.4708L44.3249 25.8749H45.2499L49.1041 16.6249H47.2541L44.7874 22.6374ZM49.8749 25.8749H54.8083V24.3332H51.5708V21.8665H54.6541V20.3249H51.5708V18.1665H54.8083V16.6249H49.8749V25.8749ZM61.5916 19.3999C61.5916 17.704 60.5124 16.6249 58.5083 16.6249H55.8874V25.8749H57.5833V22.1749H57.7374L60.2041 25.8749H62.3624L59.5874 22.0207C60.8208 21.7124 61.5916 20.7874 61.5916 19.3999ZM58.0458 20.9415H57.5833V18.1665H58.0458C59.1249 18.1665 59.7416 18.629 59.7416 19.554C59.7416 20.3249 59.2791 20.9415 58.0458 20.9415ZM9.48326 16.6249H6.86243V25.8749H9.32909C13.1833 25.8749 14.1083 22.6374 14.1083 21.2499C14.2624 18.4749 12.2583 16.6249 9.48326 16.6249ZM9.02076 24.3332H8.55826V18.1665H9.17493C11.4874 18.1665 12.4124 19.7082 12.4124 21.2499C12.4124 21.8665 12.2583 24.3332 9.02076 24.3332ZM21.1999 20.1707C20.1208 19.7082 19.8124 19.554 19.8124 19.0915C19.8124 18.4749 20.4291 18.1665 21.0458 18.1665C21.5083 18.1665 21.9708 18.3207 22.4333 18.9374L23.3583 17.704C22.5874 16.9332 21.8166 16.6249 20.7374 16.6249C19.1958 16.6249 17.9624 17.704 17.9624 19.2457C17.9624 20.479 18.5791 21.0957 20.1208 21.7124C21.0458 22.0207 21.8166 22.329 21.8166 23.0999C21.8166 23.8707 21.1999 24.3332 20.4291 24.3332C19.6583 24.3332 18.8874 23.8707 18.5791 23.0999L17.4999 24.179C18.2708 25.4124 19.1958 25.8749 20.5833 25.8749C22.4333 25.8749 23.6666 24.6415 23.6666 22.9457C23.6666 21.5582 23.0499 20.9415 21.1999 20.1707Z'\n\t\t\t\t\tfill='black'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M36.175 26.4751C38.8329 26.4751 40.9875 24.3205 40.9875 21.6626C40.9875 19.0047 38.8329 16.8501 36.175 16.8501C33.5172 16.8501 31.3625 19.0047 31.3625 21.6626C31.3625 24.3205 33.5172 26.4751 36.175 26.4751Z'\n\t\t\t\t\tfill='#FF6D00'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_10146_23945'>\n\t\t\t\t\t<rect width='70' height='42' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tgeneric: (\n\t\t<svg\n\t\t\twidth='70'\n\t\t\theight='42'\n\t\t\tviewBox='0 0 70 42'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_10146_23944)'>\n\t\t\t\t<path\n\t\t\t\t\td='M65.5466 42H4.45343C2.002 42 0 40.102 0 37.7779V4.22213C0 1.89802 2.002 0 4.45343 0H65.5466C67.998 0 70 1.89802 70 4.22213V37.7779C70.0058 40.102 67.998 42 65.5466 42Z'\n\t\t\t\t\tfill='#B2C1CB'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M0.234253 9.60986H69.6906V18.9151H0.234253V9.60986Z'\n\t\t\t\t\tfill='#4F5D6B'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M64.0275 30.6053H5.93773C5.37027 30.6053 4.90125 30.1421 4.90125 29.5688V24.6991C4.90125 24.1316 5.36448 23.6626 5.93773 23.6626H64.0275C64.5949 23.6626 65.064 24.1258 65.064 24.6991V29.5688C65.064 30.1363 64.5949 30.6053 64.0275 30.6053Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M13.141 25.9618C12.5504 26.1471 12.342 26.9462 12.6025 27.5079C12.8689 28.0637 13.4595 28.3996 14.0443 28.5849C15.2835 28.967 16.6732 28.8281 17.8081 28.2085C19.0531 27.5252 19.9738 26.3092 21.294 25.7765C23.2106 25.0064 25.3589 25.875 27.206 26.8014C29.0532 27.7279 31.0798 28.747 33.0833 28.2548C35.1389 27.7511 36.8297 25.707 38.9259 26.0429C40.1592 26.2398 41.0915 27.2241 42.1859 27.8321C44.4905 29.1176 47.3683 28.6486 49.8698 27.8148C52.3713 26.9751 54.838 25.7997 57.4784 25.7476'\n\t\t\t\t\tstroke='#424242'\n\t\t\t\t\tstrokeWidth='1.15809'\n\t\t\t\t\tstrokeMiterlimit='10'\n\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\tstrokeLinejoin='round'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_10146_23944'>\n\t\t\t\t\t<rect width='70' height='42' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tmastercard: (\n\t\t<svg\n\t\t\twidth='70'\n\t\t\theight='42'\n\t\t\tviewBox='0 0 70 42'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_10146_23943)'>\n\t\t\t\t<path\n\t\t\t\t\td='M63 0H7C3.13401 0 0 3.13401 0 7V35C0 38.866 3.13401 42 7 42H63C66.866 42 70 38.866 70 35V7C70 3.13401 66.866 0 63 0Z'\n\t\t\t\t\tfill='#003663'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M39.0354 20.3928C39.0354 27.7896 33.0396 33.7852 25.643 33.7852C18.2462 33.7852 12.25 27.7896 12.25 20.3928C12.25 12.9962 18.2462 7 25.643 7C33.0396 7 39.0354 12.9962 39.0354 20.3928Z'\n\t\t\t\t\tfill='#CC0000'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M43.6256 7C40.1643 7 37.0117 8.31284 34.6344 10.4666C34.1508 10.9055 33.6994 11.3796 33.2826 11.8844H35.9886C36.3581 12.3343 36.6986 12.8074 37.0095 13.3028H32.2615C31.9774 13.7581 31.7192 14.2311 31.4898 14.7213H37.7808C37.9958 15.1804 38.185 15.6532 38.348 16.1391H30.9226C30.7681 16.6009 30.6377 17.0742 30.5336 17.5567H38.7366C38.933 18.471 39.0375 19.4196 39.0375 20.3928C39.0375 21.8796 38.7952 23.3108 38.348 24.6473H30.9226C31.0855 25.1328 31.2748 25.6063 31.4894 26.066H37.7808C37.5509 26.5549 37.294 27.0283 37.0083 27.4842H32.2615C32.5711 27.9782 32.9123 28.4519 33.2826 28.9012H35.9877C35.5718 29.4064 35.12 29.8805 34.6349 30.3195C37.0119 32.4732 40.1643 33.7852 43.6256 33.7852C51.022 33.7852 57.018 27.7896 57.018 20.3928C57.018 12.9968 51.022 7 43.6256 7Z'\n\t\t\t\t\tfill='#FF9900'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M22.5167 21.8592C22.3641 21.8419 22.2968 21.8363 22.1921 21.8363C21.3679 21.8363 20.9512 22.1191 20.9512 22.6776C20.9512 23.0216 21.1546 23.2402 21.472 23.2402C22.0644 23.2402 22.4913 22.6764 22.5167 21.8592ZM23.5741 24.3209C23.3803 24.3209 22.369 24.3209 22.369 24.3209L22.3967 23.7484C22.0293 24.2004 21.5389 24.4163 20.8729 24.4163C20.0851 24.4163 19.5448 23.8013 19.5448 22.9075C19.5448 21.562 20.4843 20.7775 22.0973 20.7775C22.2626 20.7775 22.4738 20.7927 22.6901 20.82C22.735 20.6376 22.7468 20.5601 22.7468 20.4617C22.7468 20.096 22.4937 19.9588 21.8145 19.9588C21.1032 19.9516 20.5165 20.1288 20.2754 20.2079C20.2906 20.1161 20.4771 18.9653 20.4771 18.9653C21.2014 18.7524 21.6793 18.6729 22.2171 18.6729C23.4658 18.6729 24.1272 19.2333 24.1257 20.2928C24.1282 20.577 24.081 20.9265 24.008 21.3874C23.8819 22.1875 23.611 23.9033 23.5741 24.3209Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M18.9358 24.3206H17.4816L18.315 19.0988L16.4549 24.3206H15.4641L15.3416 19.128L14.4662 24.3206H13.1053L14.2421 17.5273H16.333L16.4593 21.3298L17.7349 17.5273H20.0603L18.9358 24.3206Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M45.4218 21.8592C45.2692 21.8419 45.2027 21.8363 45.0982 21.8363C44.2734 21.8363 43.8571 22.1191 43.8571 22.6776C43.8571 23.0216 44.0596 23.2402 44.3779 23.2402C44.9699 23.2402 45.397 22.6764 45.4218 21.8592ZM46.4786 24.3209C46.2843 24.3209 45.2739 24.3209 45.2739 24.3209L45.3012 23.7484C44.9338 24.2004 44.4436 24.4163 43.778 24.4163C42.9892 24.4163 42.4495 23.8013 42.4495 22.9075C42.4495 21.562 43.3894 20.7775 45.0019 20.7775C45.167 20.7775 45.3778 20.7927 45.5943 20.82C45.6394 20.6376 45.651 20.5601 45.651 20.4617C45.651 20.096 45.3979 19.9588 44.7187 19.9588C44.0074 19.9516 43.4209 20.1288 43.179 20.2079C43.1951 20.1161 43.382 18.9653 43.382 18.9653C44.1058 18.7524 44.5841 18.6729 45.1211 18.6729C46.3706 18.6729 47.0312 19.2333 47.0299 20.2928C47.0325 20.577 46.9857 20.9265 46.9122 21.3874C46.7865 22.1875 46.515 23.9033 46.4786 24.3209Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M30.0361 24.2368C29.638 24.3621 29.3279 24.4162 28.9914 24.4162C28.2483 24.4162 27.8426 23.9891 27.8426 23.2025C27.8322 22.9582 27.9494 22.3159 28.0417 21.73C28.126 21.2138 28.6724 17.96 28.6724 17.96H30.1173L29.9487 18.7962H30.8217L30.6247 20.124H29.7487C29.5808 21.1745 29.3414 22.4833 29.3387 22.6568C29.3387 22.9417 29.4907 23.0662 29.8367 23.0662C30.0024 23.0662 30.1307 23.0492 30.2287 23.0141L30.0361 24.2368Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M34.4667 24.1922C33.9702 24.3439 33.4917 24.418 32.9839 24.4163C31.3659 24.4142 30.5225 23.5697 30.5225 21.9517C30.5225 20.0634 31.5953 18.6729 33.0521 18.6729C34.2434 18.6729 35.0047 19.4513 35.0047 20.6716C35.0047 21.0774 34.9527 21.4727 34.8263 22.0306H31.9483C31.8512 22.8321 32.3638 23.1659 33.2051 23.1659C33.7217 23.1659 34.1886 23.0592 34.7074 22.8186L34.4667 24.1922ZM33.6547 20.9171C33.6629 20.8018 33.8077 19.9308 32.9816 19.9308C32.5219 19.9308 32.1924 20.2817 32.0588 20.9171H33.6547Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M24.4464 20.543C24.4464 21.2412 24.785 21.7231 25.5533 22.0852C26.1419 22.3623 26.2335 22.4442 26.2335 22.695C26.2335 23.0389 25.9736 23.1951 25.3986 23.1951C24.9645 23.1951 24.5611 23.127 24.0957 22.9765C24.0957 22.9765 23.905 24.1947 23.8959 24.2529C24.2263 24.3245 24.5209 24.3911 25.4089 24.4163C26.943 24.4163 27.6515 23.8322 27.6515 22.5697C27.6515 21.8107 27.3552 21.3652 26.6268 21.03C26.0174 20.7504 25.9469 20.6877 25.9469 20.4299C25.9469 20.1313 26.1889 19.9787 26.6585 19.9787C26.944 19.9787 27.3337 20.0092 27.7034 20.0615L27.9102 18.7802C27.5339 18.7203 26.9628 18.6729 26.6306 18.6729C25.0043 18.6729 24.4411 19.5222 24.4464 20.543Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M41.5386 18.8183C41.9424 18.8183 42.3196 18.9233 42.8379 19.1851L43.076 17.7108C42.8622 17.627 42.1128 17.1357 41.4778 17.1357C40.5051 17.1357 39.6818 17.6191 39.1038 18.4151C38.2597 18.1358 37.9124 18.7004 37.4874 19.2634L37.1097 19.3515C37.1382 19.1663 37.1643 18.9824 37.156 18.7959H35.8201C35.6381 20.5062 35.3149 22.2379 35.062 23.9489L34.9957 24.3205H36.4504C36.6931 22.7429 36.8258 21.7331 36.9067 21.0491L37.4544 20.7456C37.5368 20.4406 37.7922 20.3382 38.3061 20.3507C38.239 20.7109 38.2026 21.0904 38.2026 21.483C38.2026 23.2906 39.1791 24.416 40.7436 24.416C41.1468 24.416 41.4931 24.3631 42.0292 24.217L42.284 22.669C41.8019 22.9059 41.4071 23.0174 41.0492 23.0174C40.2039 23.0174 39.6924 22.3933 39.6924 21.3623C39.6924 19.8662 40.4526 18.8183 41.5386 18.8183Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M53.848 17.5273L53.5248 19.4899C53.128 18.967 52.7009 18.5881 52.137 18.5881C51.4035 18.5881 50.7357 19.1443 50.2985 19.9634C49.6895 19.837 49.0603 19.6222 49.0603 19.6222L49.0599 19.6275C49.1084 19.1697 49.1289 18.8912 49.124 18.796H47.7883C47.6069 20.5063 47.2833 22.238 47.0306 23.9489L46.9637 24.3206H48.4188C48.6152 23.0456 48.7653 21.9857 48.876 21.1463C49.3733 20.6968 49.6222 20.3058 50.1236 20.3312C49.9012 20.8692 49.7715 21.4885 49.7715 22.1239C49.7715 23.5045 50.4695 24.416 51.5268 24.416C52.0598 24.416 52.4687 24.2321 52.8674 23.8063L52.7988 24.3201H54.1746L55.2821 17.5273H53.848ZM52.0311 23.0443C51.5362 23.0443 51.2856 22.6773 51.2856 21.9551C51.2856 20.8692 51.754 20.0994 52.4133 20.0994C52.913 20.0994 53.1839 20.4795 53.1839 21.1814C53.1839 22.2766 52.7077 23.0443 52.0311 23.0443Z'\n\t\t\t\t\tfill='#000066'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M19.3543 23.9176H17.9005L18.7337 18.6958L16.874 23.9176H15.8829L15.7605 18.7261L14.8849 23.9176H13.524L14.6608 17.125H16.7517L16.8101 21.33L18.2209 17.125H20.479L19.3543 23.9176Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M22.9353 21.4567C22.7829 21.4389 22.7156 21.4341 22.6108 21.4341C21.7867 21.4341 21.3698 21.7164 21.3698 22.2745C21.3698 22.618 21.5734 22.8379 21.891 22.8379C22.4832 22.8379 22.9101 22.2741 22.9353 21.4567ZM23.9916 23.9175C23.7979 23.9175 22.7871 23.9175 22.7871 23.9175L22.8146 23.3455C22.4472 23.7973 21.9568 24.0134 21.2907 24.0134C20.5028 24.0134 19.9626 23.3975 19.9626 22.5039C19.9626 21.1583 20.9024 20.3748 22.5153 20.3748C22.6802 20.3748 22.8914 20.3898 23.1079 20.4177C23.1528 20.2349 23.1646 20.1572 23.1646 20.0584C23.1646 19.6929 22.9115 19.5568 22.2323 19.5568C21.5208 19.5483 20.9343 19.7254 20.693 19.8044C20.7085 19.713 20.8947 18.5622 20.8947 18.5622C21.6192 18.3497 22.0971 18.2695 22.6349 18.2695C23.8834 18.2695 24.5446 18.8306 24.5435 19.8897C24.5459 20.1735 24.4991 20.5246 24.4259 20.9843C24.2995 21.7837 24.0286 23.5006 23.9916 23.9175Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M43.4941 17.3079L43.256 18.782C42.7368 18.5211 42.3607 18.4154 41.9573 18.4154C40.8718 18.4154 40.1103 19.4646 40.1103 20.9609C40.1103 21.9918 40.622 22.6147 41.4674 22.6147C41.8255 22.6147 42.221 22.504 42.7021 22.2664L42.4466 23.8143C41.9114 23.9602 41.5649 24.0135 41.1619 24.0135C39.5964 24.0135 38.6213 22.888 38.6213 21.0807C38.6213 18.6523 39.9693 16.9551 41.8961 16.9551C42.5311 16.9551 43.281 17.2241 43.4941 17.3079Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M45.8399 21.4567C45.6883 21.4389 45.6208 21.4341 45.5163 21.4341C44.6925 21.4341 44.2754 21.7164 44.2754 22.2745C44.2754 22.618 44.4788 22.8379 44.7963 22.8379C45.3882 22.8379 45.8155 22.2741 45.8399 21.4567ZM46.8977 23.9175C46.7043 23.9175 45.6932 23.9175 45.6932 23.9175L45.7205 23.3455C45.3531 23.7973 44.8627 24.0134 44.1973 24.0134C43.4085 24.0134 42.869 23.3975 42.869 22.5039C42.869 21.1583 43.8079 20.3748 45.4213 20.3748C45.5861 20.3748 45.7969 20.3898 46.0132 20.4177C46.0583 20.2349 46.0702 20.1572 46.0702 20.0584C46.0702 19.6929 45.8177 19.5568 45.1381 19.5568C44.4272 19.5483 43.8409 19.7254 43.5992 19.8044C43.6144 19.713 43.8009 18.5622 43.8009 18.5622C44.5254 18.3497 45.0028 18.2695 45.5406 18.2695C46.7891 18.2695 47.451 18.8306 47.4493 19.8897C47.4522 20.1735 47.405 20.5246 47.3318 20.9843C47.2059 21.7837 46.935 23.5006 46.8977 23.9175Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M30.4539 23.8335C30.0562 23.9588 29.7457 24.0132 29.4096 24.0132C28.6663 24.0132 28.2604 23.5859 28.2604 22.8C28.2502 22.555 28.3677 21.9137 28.4602 21.3272C28.5438 20.8106 29.0905 17.5571 29.0905 17.5571H30.5358L30.3667 18.3931H31.1087L30.911 19.7206H30.1667C29.9988 20.772 29.7595 22.08 29.7565 22.2536C29.7565 22.5393 29.9091 22.6629 30.2547 22.6629C30.4204 22.6629 30.5485 22.6466 30.6469 22.6106L30.4539 23.8335Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M34.8848 23.7899C34.388 23.9421 33.9084 24.0138 33.4013 24.0134C31.7831 24.0124 30.9403 23.1668 30.9403 21.549C30.9403 19.6601 32.0129 18.2695 33.4686 18.2695C34.6613 18.2695 35.4221 19.048 35.4221 20.2698C35.4221 20.6747 35.3692 21.0698 35.2444 21.6279H32.366C32.2684 22.4294 32.7816 22.7639 33.6221 22.7639C34.1391 22.7639 34.6058 22.6568 35.1252 22.4155L34.8848 23.7899ZM34.0719 20.5139C34.0798 20.3983 34.2252 19.5278 33.3993 19.5278C32.9392 19.5278 32.6097 19.8794 32.4757 20.5139H34.0719Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M24.8638 20.1396C24.8638 20.8391 25.2028 21.32 25.9713 21.6825C26.5599 21.9594 26.6511 22.0413 26.6511 22.2923C26.6511 22.6367 26.3915 22.792 25.816 22.792C25.3823 22.792 24.9787 22.7247 24.5131 22.5746C24.5131 22.5746 24.3226 23.792 24.3137 23.8494C24.6439 23.9218 24.9387 23.9878 25.8264 24.0134C27.3608 24.0134 28.0694 23.4295 28.0694 22.167C28.0694 21.4076 27.7727 20.9623 27.0444 20.6279C26.4348 20.3475 26.3648 20.2855 26.3648 20.0273C26.3648 19.7286 26.6065 19.575 27.0766 19.575C27.3614 19.575 27.7515 19.6067 28.121 19.6588L28.328 18.3777C27.9515 18.3182 27.3809 18.2695 27.0484 18.2695C25.4217 18.2695 24.8589 19.1191 24.8638 20.1396Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M54.5919 23.9176H53.2166L53.2848 23.4035C52.8858 23.8295 52.4771 24.0135 51.9442 24.0135C50.8877 24.0135 50.1886 23.103 50.1886 21.7209C50.1886 19.8834 51.2724 18.3346 52.5544 18.3346C53.1182 18.3346 53.5451 18.5648 53.9428 19.088L54.2653 17.125H55.6992L54.5919 23.9176ZM52.4489 22.6411C53.1264 22.6411 53.6018 21.8739 53.6018 20.7797C53.6018 20.0777 53.3311 19.6963 52.8314 19.6963C52.1719 19.6963 51.7037 20.4662 51.7037 21.5526C51.7037 22.2756 51.9545 22.6411 52.4489 22.6411Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M48.206 18.3933C48.0242 20.1032 47.7008 21.8349 47.4478 23.546L47.3816 23.9175H48.8358C49.356 20.5392 49.4811 19.8799 50.2972 19.9622C50.427 19.2708 50.6689 18.6653 50.849 18.3601C50.2401 18.2331 49.9 18.5772 49.4542 19.2312C49.4898 18.9482 49.5539 18.6737 49.5419 18.3933H48.206Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\td='M36.2386 18.3933C36.0559 20.1032 35.7321 21.8349 35.4796 23.546L35.4136 23.9175H36.8682C37.3887 20.5392 37.5133 19.8799 38.3282 19.9622C38.4587 19.2708 38.7011 18.6653 38.8808 18.3601C38.2725 18.2331 37.9317 18.5772 37.4869 19.2312C37.522 18.9482 37.5866 18.6737 37.5739 18.3933H36.2386Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_10146_23943'>\n\t\t\t\t\t<rect width='70' height='42' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tvisa: (\n\t\t<svg\n\t\t\twidth='70'\n\t\t\theight='42'\n\t\t\tviewBox='0 0 70 42'\n\t\t\tfill='none'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_10146_23942)'>\n\t\t\t\t<path\n\t\t\t\t\td='M63 0.686279H7.00001C3.51303 0.686279 0.686279 3.51303 0.686279 7.00001V35C0.686279 38.4869 3.51303 41.3137 7.00001 41.3137H63C66.4869 41.3137 69.3137 38.4869 69.3137 35V7.00001C69.3137 3.51303 66.4869 0.686279 63 0.686279Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t\tstroke='#B2C1CB'\n\t\t\t\t\tstrokeWidth='1.37255'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M35.3447 18.9593C35.3173 21.1203 37.2706 22.3262 38.742 23.0432C40.2537 23.7788 40.7615 24.2506 40.7555 24.9085C40.7443 25.9152 39.5497 26.3596 38.4318 26.3769C36.4815 26.4071 35.3475 25.8503 34.446 25.4292L33.7435 28.7167C34.648 29.1335 36.3228 29.497 38.0595 29.5129C42.1363 29.5129 44.8034 27.5005 44.8178 24.3804C44.8338 20.4206 39.3406 20.2014 39.3781 18.4314C39.3911 17.8947 39.9032 17.322 41.0254 17.1764C41.5808 17.1028 43.1141 17.0465 44.8525 17.8471L45.5349 14.6664C44.6 14.326 43.3984 14 41.9024 14C38.0653 14 35.3665 16.0398 35.3447 18.9593ZM52.0911 14.274C51.3467 14.274 50.7193 14.7082 50.4394 15.3746L44.6159 29.2793H48.6897L49.5003 27.0389H54.4784L54.9487 29.2793H58.5392L55.406 14.274H52.0911ZM52.661 18.3275L53.8366 23.9621H50.6169L52.661 18.3275ZM30.4055 14.2742L27.1944 29.2791H31.0764L34.286 14.2738L30.4055 14.2742ZM24.6627 14.2738L20.6222 24.4872L18.9877 15.8032C18.796 14.8337 18.0386 14.274 17.1975 14.274H10.5925L10.5 14.7097C11.856 15.0039 13.3966 15.4785 14.33 15.9863C14.9012 16.2965 15.0641 16.5677 15.2518 17.3048L18.3475 29.2793H22.4498L28.7391 14.274L24.6627 14.2738Z'\n\t\t\t\t\tfill='url(#paint0_linear_10146_23942)'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid='paint0_linear_10146_23942'\n\t\t\t\t\tx1='32.5855'\n\t\t\t\t\ty1='29.8241'\n\t\t\t\t\tx2='33.0346'\n\t\t\t\t\ty2='13.8921'\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='#222357' />\n\t\t\t\t\t<stop offset='1' stopColor='#254AA5' />\n\t\t\t\t</linearGradient>\n\t\t\t\t<clipPath id='clip0_10146_23942'>\n\t\t\t\t\t<rect width='70' height='42' fill='white' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n};","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { svgData } from './svgData';\n\nimport './payment-icon.css';\n\ntype PaymentType = 'visa' | 'mastercard' | 'amex' | 'discover' | 'generic';\n\n/**\n * Prop types for PaymentIcon\n */\nexport interface PaymentIconProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * The type of payment icon to display.\n\t */\n\tpaymentType: PaymentType;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * PaymentIcon UI component\n */\nexport const PaymentIcon = ({\n\tpaymentType,\n\tclassName,\n\t...props\n}: PaymentIconProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-payment-icon';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{svgData[paymentType]}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Card } from '@components/cards/Card/Card';\nimport { PaymentIcon } from '@components/icons/PaymentIcon/PaymentIcon';\n\nimport './payment-card.css';\nimport { Icon } from '@components/icons/Icon/Icon';\n\n/**\n * Prop types for PaymentCard\n */\nexport interface PaymentCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * The type of payment icon to display.\n\t */\n\tcardType?: 'visa' | 'mastercard' | 'amex' | 'discover';\n\t/**\n\t * The last four digits of the card number.\n\t */\n\tcardNumber?: number;\n\t/**\n\t * The name of the cardholder.\n\t */\n\tcardholderName?: string;\n\t/**\n\t * Expiration date of the card in MM/YY format.\n\t */\n\texpDate?: string;\n\t/**\n\t * A string for the lower left corner.\n\t */\n\tcardUsage?: string;\n\t/**\n\t * Translation string for “view details”\n\t */\n\tdetailsLabel?: string;\n\t/**\n\t * Function for when “view details” is clicked\n\t */\n\tdetailsCallback?: () => void;\n\t/**\n\t * Function for when this card is selected\n\t */\n\tselectionCallback?: () => void;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * PaymentCard UI component\n */\nexport const PaymentCard = ({\n\tcardType,\n\tcardNumber,\n\tcardholderName,\n\texpDate,\n\tcardUsage,\n\tdetailsLabel = 'View Details',\n\tdetailsCallback,\n\tselectionCallback,\n\tclassName,\n\t...props\n}: PaymentCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-payment-card';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t<div\n\t\t\t\tclassName={`${baseClass}__main`}\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={selectionCallback}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (selectionCallback) selectionCallback();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Card padding='narrow'>\n\t\t\t\t\t<div slot='main'>\n\t\t\t\t\t\t<div className={`${baseClass}__top`}>\n\t\t\t\t\t\t\t<div className={`${baseClass}__icon`}>\n\t\t\t\t\t\t\t\t<PaymentIcon paymentType={cardType} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={`${baseClass}__details`}>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__details-header`}>\n\t\t\t\t\t\t\t\t\t{cardType} — {cardNumber}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__details-name`}>\n\t\t\t\t\t\t\t\t\t{cardholderName}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__details-exp`}>{expDate}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={`${baseClass}__bottom`}>\n\t\t\t\t\t\t\t<div>{cardUsage}</div>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tif (detailsCallback) detailsCallback();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\taria-label={detailsLabel}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{detailsLabel}\n\t\t\t\t\t\t\t\t<Icon iconName='arrowRight' iconSize='sm' />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './comparison-list.css';\n\ninterface TypeLabels {\n\tincluded: string;\n\tnotIncluded: string;\n\taddon: string;\n}\n\nexport interface ListItems {\n\ttext: string;\n\ttype: 'included' | 'notIncluded' | 'addon';\n}\n\nexport interface ComparisonListProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Icon labels\n\t */\n\ttypeLabels?: TypeLabels;\n\t/**\n\t * List items\n\t */\n\tlistItems?: ListItems[];\n\t/**\n\t * Text preceding the list. Optional.\n\t */\n\tlistLabel?: string;\n\t/**\n\t * A link element using the router of your choice. Will be displayed below the list. Optional.\n\t */\n\tmoreLink?: ReactNode;\n\t/**\n\t * Render the icon labels for screen readers.\n\t */\n\trenderTypeLabels?: boolean;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\nconst iconTypes: { [key in ListItems['type']]: PDSIcon } = {\n\tincluded: 'circleCheck',\n\tnotIncluded: 'xmark',\n\taddon: 'circlePlusOutline',\n};\n\n/**\n * ComparisonList UI component\n */\nexport const ComparisonList = ({\n\tlistItems,\n\tlistLabel,\n\tmoreLink,\n\trenderTypeLabels = true,\n\ttypeLabels = {\n\t\tincluded: 'Included',\n\t\tnotIncluded: 'Not included',\n\t\taddon: 'Add-on',\n\t},\n\tclassName,\n\t...props\n}: ComparisonListProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-comparison-list';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{listLabel && <div className={`${baseClass}__intro`}>{listLabel}</div>}\n\n\t\t\t{listItems && (\n\t\t\t\t<ul className={`${baseClass}__list`}>\n\t\t\t\t\t{listItems.map((item, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tclassName={`${baseClass}__list-item ${baseClass}__list-item--${item.type}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`${baseClass}__item-icon-wrapper`}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticonName={iconTypes[item.type]}\n\t\t\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__item-icon`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{renderTypeLabels && (\n\t\t\t\t\t\t\t\t<span className='visually-hidden'>\n\t\t\t\t\t\t\t\t\t{typeLabels[item.type]}:{' '}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{item.text}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t\t{moreLink && <div className={`${baseClass}__more-link`}>{moreLink}</div>}\n\t\t</div>\n\t);\n};\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport {\n\tautoUpdate,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n\tuseTypeahead,\n\tflip,\n\tsize,\n\toffset,\n} from '@floating-ui/react';\n\nimport {\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n\tInputDecorator,\n\tInputLabel,\n\tInputMessage,\n\tSelectOption,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\nimport { isOptionGroup } from '../input-utilities';\n\nimport { ValidationStatus } from '../input-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './select.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tselectOptionText: string;\n\ttriggerButton: string;\n};\n\n// Select option type.\nexport type SelectOptionType = {\n\t/**\n\t * Option label.\n\t */\n\tlabel: string;\n\t/**\n\t * Option value.\n\t */\n\tvalue: string;\n\t/**\n\t * Option disabled.\n\t */\n\tdisabled?: boolean;\n};\n\n// Select option group type.\nexport type SelectOptionGroupType = {\n\t/**\n\t * Group label.\n\t */\n\tgroupLabel: string;\n\t/**\n\t * Options within this group.\n\t */\n\toptions: SelectOptionType[];\n};\n\nexport type SelectOptionsType = (SelectOptionType | SelectOptionGroupType)[];\n\ninterface SelectOptionGroupProps {\n\tlabel: string;\n\tchildren: ReactNode;\n}\n\n/**\n * Prop types for Select\n */\nexport interface SelectProps {\n\t/**\n\t * Optional default value for the field. Must match the value of one of the options. Cannot be used in conjunction with the `value` prop.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Field label.\n\t */\n\tlabel: string;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\tlabelStrings?: LabelStrings;\n\t/**\n\t * Message or description used to help clarify the usage of the input.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * onBlur event handler to provide the current value of the input.\n\t */\n\tonBlur?: (currentValue: string) => void;\n\t/**\n\t * onFocus event handler to provide the current value of the input.\n\t */\n\tonFocus?: (currentValue: string) => void;\n\t/**\n\t * Callback function when an option is selected.\n\t */\n\tonOptionSelect?: (option: SelectOptionType) => void;\n\t/**\n\t * Array of options for the select field.\n\t */\n\toptions?: SelectOptionsType;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Value of the field. Must match the value of one of the options. Used to set the value of the field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SelectOptionGroup component\n */\nexport const SelectOptionGroup = ({\n\tlabel,\n\tchildren,\n}: SelectOptionGroupProps) => {\n\tconst baseClass = 'pds-select';\n\n\treturn (\n\t\t<li role='presentation' className={`${baseClass}__group`}>\n\t\t\t<span className={`${baseClass}__group-label`}>{label}</span>\n\t\t\t<ul role='group' className={`${baseClass}__group-options`}>\n\t\t\t\t{children}\n\t\t\t</ul>\n\t\t</li>\n\t);\n};\n\n/**\n * Select UI component\n */\nexport const Select = ({\n\tdefaultValue,\n\tdisabled,\n\tid,\n\tinputWidth,\n\tlabel,\n\tlabelStrings = {\n\t\tselectOptionText: 'Select an option...',\n\t\ttriggerButton: 'Toggle dropdown menu',\n\t},\n\tmessage,\n\tonBlur,\n\tonFocus,\n\tonOptionSelect,\n\toptions,\n\trequired = false,\n\tshowLabel = true,\n\ttooltipText = null,\n\tvalidationMessage,\n\tvalidationStatus,\n\tvalue,\n\tclassName,\n\t...props\n}: SelectProps) => {\n\t// Determine input width style.\n\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-select';\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst requiredClass =\n\t\trequired && !disabled ? inputCommonClasses.required : null;\n\tconst errorClass =\n\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\tconst successClass =\n\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t// Set decorators.\n\tlet decorator = null;\n\tif (validationStatus === 'error') {\n\t\tdecorator = 'error';\n\t}\n\tif (validationStatus === 'success') {\n\t\tdecorator = 'success';\n\t}\n\n\t// If there is a validation message, use that. Otherwise, use the message prop.\n\tconst processedMessage = validationMessage || message;\n\n\t// Determine if the input is controlled.\n\tconst isControlled = typeof value != 'undefined';\n\n\t// When a component is not controlled, it can have a defaultValue.\n\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\tconst getFlatOptions = (options: SelectOptionsType): SelectOptionType[] => {\n\t\treturn options.reduce((acc: SelectOptionType[], curr) => {\n\t\t\tif (isOptionGroup(curr)) {\n\t\t\t\treturn [...acc, ...curr.options];\n\t\t\t}\n\t\t\treturn [...acc, curr as SelectOptionType];\n\t\t}, []);\n\t};\n\n\tconst flatOptions = getFlatOptions(options);\n\n\t// Function to get the index from the value.\n\tconst getIndexFromValue = (value: string) =>\n\t\tflatOptions.findIndex((option) => option.value === value);\n\n\t// If the input is controlled, use the value prop to get the default index.\n\tconst controlledValueIndex =\n\t\tisControlled && getIndexFromValue(value) >= 0\n\t\t\t? getIndexFromValue(value)\n\t\t\t: null;\n\n\t// If the input in uncontrolled, use the defaultValue prop to get the default index.\n\tconst internalValueIndex = hasDefaultValue\n\t\t? getIndexFromValue(defaultValue)\n\t\t: null;\n\n\t// Determine if the input has a default value either from props or internal state.\n\tconst startingValueIndex = controlledValueIndex || internalValueIndex;\n\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState(null);\n\tconst [selectedIndex, setSelectedIndex] = useState(\n\t\tstartingValueIndex ?? null,\n\t);\n\n\t// Get label from selected item.\n\tconst selectedItemLabel =\n\t\tselectedIndex !== null ? flatOptions[selectedIndex]?.label : undefined;\n\n\t// Get value from selected item.\n\tconst selectedItemValue =\n\t\tselectedIndex !== null ? flatOptions[selectedIndex]?.value : undefined;\n\n\t// Initiate refs.\n\tconst listRef = useRef([]);\n\n\t// FUI config\n\tconst { context, refs, floatingStyles } = useFloating({\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t\tmiddleware: [\n\t\t\toffset(({ placement }) => {\n\t\t\t\treturn placement.startsWith('top') ? 16 : 0;\n\t\t\t}),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, elements }) {\n\t\t\t\t\tObject.assign(elements.floating.style, {\n\t\t\t\t\t\tminHeight: 'var(--pds-spacing-4xl)',\n\t\t\t\t\t\tmaxHeight: `${availableHeight}px`,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t}),\n\t\t\tflip(),\n\t\t],\n\t});\n\n\tconst click = useClick(context, {\n\t\tenabled: disabled ? false : true,\n\t\tevent: 'mousedown',\n\t});\n\tconst dismiss = useDismiss(context);\n\n\tconst role = useRole(context, { role: 'listbox' });\n\n\tconst listNav = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tselectedIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t});\n\n\tconst typeahead = useTypeahead(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tselectedIndex,\n\t\tonMatch: (index) => {\n\t\t\tif (isOpen) {\n\t\t\t\tsetActiveIndex(index);\n\t\t\t} else {\n\t\t\t\tsetIsOpen(true);\n\t\t\t\tsetActiveIndex(index);\n\t\t\t}\n\t\t},\n\t\tfindMatch: (list, typedString) => {\n\t\t\tconst lowerTyped = typedString.toLowerCase();\n\t\t\treturn list.find((item) => {\n\t\t\t\tconst label =\n\t\t\t\t\t(item as unknown as HTMLElement)?.textContent?.trim().toLowerCase() ??\n\t\t\t\t\t'';\n\t\t\t\treturn label.startsWith(lowerTyped);\n\t\t\t});\n\t\t},\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[role, dismiss, listNav, click, typeahead],\n\t);\n\n\t// FUI Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 150,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Handle selection.\n\tconst handleSelection = (index: number) => {\n\t\tconst option = flatOptions[index];\n\n\t\t// If the option is controlled it will be handled externally via the useEffect below.\n\t\t// If the option is uncontrolled, update the selected index here.\n\t\tif (!isControlled) {\n\t\t\tsetSelectedIndex(index);\n\t\t\tsetIsOpen(false);\n\t\t}\n\n\t\t// If onOptionSelect callback.\n\t\tif (onOptionSelect) {\n\t\t\tonOptionSelect(option);\n\t\t}\n\t};\n\n\t// Update the selectedIndex when the value prop changes.\n\tuseEffect(() => {\n\t\tif (isControlled) {\n\t\t\tconst index = getIndexFromValue(value);\n\t\t\tsetSelectedIndex(index);\n\t\t\tsetIsOpen(false);\n\t\t}\n\t}, [value]);\n\n\t// Get the current value of the input field when the input loses focus.\n\tconst handleBlur = () => {\n\t\tif (onBlur) {\n\t\t\tonBlur(selectedItemValue);\n\t\t}\n\t};\n\n\t// Get the current value of the input field when the input gains focus.\n\tconst handleFocus = () => {\n\t\tif (onFocus) {\n\t\t\tonFocus(selectedItemValue);\n\t\t}\n\t};\n\n\t// Focus the input field.\n\tconst focusInput = () => {\n\t\t(refs.reference.current as HTMLElement).focus();\n\t};\n\n\t// Render options with group support\n\tconst renderOptions = (options: SelectOptionsType) => {\n\t\tlet currentIndex = 0;\n\n\t\treturn options.map((option) => {\n\t\t\tif (isOptionGroup(option)) {\n\t\t\t\tconst groupOptions = option.options.map((groupOption) => {\n\t\t\t\t\tconst optionIndex = currentIndex++;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SelectOption\n\t\t\t\t\t\t\tkey={optionIndex}\n\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\tlistRef.current[optionIndex] = node;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttabIndex={optionIndex === activeIndex ? 0 : -1}\n\t\t\t\t\t\t\taria-selected={\n\t\t\t\t\t\t\t\toptionIndex === selectedIndex && optionIndex === activeIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-disabled={groupOption?.disabled}\n\t\t\t\t\t\t\t{...(!groupOption?.disabled &&\n\t\t\t\t\t\t\t\tgetItemProps({\n\t\t\t\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\t\t\t\thandleSelection(optionIndex);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonKeyDown(e) {\n\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\thandleSelection(optionIndex);\n\t\t\t\t\t\t\t\t\t\t\t(refs.reference.current as HTMLElement).focus();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t(refs.reference.current as HTMLElement).focus();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{groupOption.label}\n\t\t\t\t\t\t\t{selectedIndex === optionIndex && (\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticonName='check'\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__checked-icon`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</SelectOption>\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<SelectOptionGroup key={option.groupLabel} label={option.groupLabel}>\n\t\t\t\t\t\t{groupOptions}\n\t\t\t\t\t</SelectOptionGroup>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst optionIndex = currentIndex++;\n\t\t\treturn (\n\t\t\t\t<SelectOption\n\t\t\t\t\tkey={optionIndex}\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tlistRef.current[optionIndex] = node;\n\t\t\t\t\t}}\n\t\t\t\t\ttabIndex={optionIndex === activeIndex ? 0 : -1}\n\t\t\t\t\taria-selected={\n\t\t\t\t\t\toptionIndex === selectedIndex && optionIndex === activeIndex\n\t\t\t\t\t}\n\t\t\t\t\taria-disabled={option?.disabled}\n\t\t\t\t\t{...(!option?.disabled &&\n\t\t\t\t\t\tgetItemProps({\n\t\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\t\thandleSelection(optionIndex);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonKeyDown(e) {\n\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\thandleSelection(optionIndex);\n\t\t\t\t\t\t\t\t\t(refs.reference.current as HTMLElement).focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t(refs.reference.current as HTMLElement).focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}))}\n\t\t\t\t>\n\t\t\t\t\t{option.label}\n\t\t\t\t\t{selectedIndex === optionIndex && (\n\t\t\t\t\t\t<Icon iconName='check' className={`${baseClass}__checked-icon`} />\n\t\t\t\t\t)}\n\t\t\t\t</SelectOption>\n\t\t\t);\n\t\t});\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tinputCommonClasses.base,\n\t\t\t\tbaseClass,\n\t\t\t\tdisabledClass,\n\t\t\t\trequiredClass,\n\t\t\t\terrorClass,\n\t\t\t\tsuccessClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t{...props}\n\t\t>\n\t\t\t<InputLabel\n\t\t\t\tid={id}\n\t\t\t\tlabel={label}\n\t\t\t\tshowLabel={showLabel}\n\t\t\t\ttooltipText={tooltipText}\n\t\t\t\trequired={required}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\n\t\t\t<span\n\t\t\t\tclassName={`${baseClass}__input-wrapper`}\n\t\t\t\tid={id}\n\t\t\t\ttabIndex={0}\n\t\t\t\tref={refs.setReference}\n\t\t\t\taria-labelledby={`${id}-label`}\n\t\t\t\taria-autocomplete='none'\n\t\t\t\t{...getReferenceProps({\n\t\t\t\t\tonClick: focusInput,\n\t\t\t\t\tonBlur: handleBlur,\n\t\t\t\t\tonFocus: handleFocus,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{decorator && <InputDecorator variant={decorator} />}\n\t\t\t\t<span className={`${baseClass}__input-inner`}>\n\t\t\t\t\t<span className={`${baseClass}__option-text`}>\n\t\t\t\t\t\t{selectedItemLabel ?? labelStrings.selectOptionText}\n\t\t\t\t\t</span>\n\t\t\t\t\t<Icon iconName='angleDown' className={`${baseClass}__trigger-icon`} />\n\t\t\t\t</span>\n\t\t\t</span>\n\n\t\t\t{isMounted && (\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t<div style={{ ...styles }}>\n\t\t\t\t\t\t<ul role='group' className={`${baseClass}__options`}>\n\t\t\t\t\t\t\t{renderOptions(options)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{processedMessage && (\n\t\t\t\t<InputMessage\n\t\t\t\t\tid={id}\n\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useState } from 'react';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { ComparisonList } from '@components/ComparisonList/ComparisonList';\nimport { IndicatorBadge } from '@components/badges/IndicatorBadge/IndicatorBadge';\nimport { Select } from '@components/inputs/Select/Select';\nimport { StatusBadge } from '@components/badges/StatusBadge/StatusBadge';\n\nimport { ListItems } from '@components/ComparisonList/ComparisonList';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './pricing-card.css';\n\ninterface PrimaryCallToAction {\n\ttype?: 'button' | 'link';\n\tvariant?: 'primary' | 'secondary';\n\tlabel?: string;\n\tbuttonAction?: () => void;\n\tlinkUrl?: string;\n\tlinkTarget?: string;\n\tdisabled?: boolean;\n}\n\ninterface SecondaryCallToAction {\n\ttype?: 'button' | 'link';\n\tlabel?: string;\n\tbuttonAction?: () => void;\n\tlinkUrl?: string;\n\tlinkTarget?: string;\n}\n\ninterface PlanPricingData {\n\tcustomActionLabel?: string;\n\tlabel?: string;\n\tpricePrefix?: string;\n\tprice?: string;\n\tpriceDetails?: string;\n\tsavingsBadgeLabel?: string;\n\tsavingsDetails?: string;\n\tlistLabel?: string;\n\tlistItems?: ListItems[];\n}\n\ninterface StatusBadgeLabels {\n\tcurrentPlan?: string;\n\tmostPopular?: string;\n}\ninterface PricingCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * The primary call to action.\n\t */\n\tactionPrimary?: PrimaryCallToAction;\n\t/**\n\t * An optional secondary call to action.\n\t */\n\tactionSecondary?: SecondaryCallToAction;\n\t/**\n\t * Has comparison list. Will be rendered below the card if true.\n\t * Add corresponding `comparisonListId` to each planPricingData object.\n\t */\n\thasComparisonList?: boolean;\n\t/**\n\t * Optional function to handle the change event of the select input. Only valid when multiple tiers of planPricingData are present.\n\t */\n\tonTierChange?: (value) => void;\n\t/**\n\t * A brief description of the plan.\n\t */\n\tplanDescription?: string;\n\t/**\n\t * The name of the plan.\n\t */\n\tplanName?: string;\n\t/**\n\t * Plan pricing data. An array of objects.\n\t */\n\tplanPricingData: PlanPricingData[];\n\t/**\n\t * Label for the plan size select dropdown. Available to screen readers only. Provide translation string if needed.\n\t */\n\tselectLabel?: string;\n\t/**\n\t * Status badge labels. Provide translation strings if needed.\n\t */\n\tstatusBadgeLabels: StatusBadgeLabels;\n\t/**\n\t * Status badge type. Leave empty for no badge. Only one badge of each type should be used in a group of Pricing Cards.\n\t */\n\tstatusBadgeType?: 'currentPlan' | 'mostPopular';\n\t/**\n\t * Additional class names for the card item.\n\t */\n\tclassName?: string;\n\t/**\n\t * Additional class names for the card container.\n\t */\n\tcontainerClassName?: string;\n}\n\n/**\n * PricingCard UI component\n */\nexport const PricingCard = ({\n\tactionPrimary,\n\tactionSecondary,\n\thasComparisonList = true,\n\tonTierChange,\n\tplanDescription,\n\tplanName,\n\tplanPricingData,\n\tstatusBadgeLabels = {\n\t\tcurrentPlan: 'Current plan',\n\t\tmostPopular: 'Most popular',\n\t},\n\tselectLabel = 'Select a plan size',\n\tstatusBadgeType,\n\tclassName,\n\t...props\n}: PricingCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-pricing-card';\n\tconst containerClass = `${baseClass}-container`;\n\tconst listClass = hasComparisonList ? `${containerClass}--with-list` : null;\n\tconst statusClass = statusBadgeType\n\t\t? `${baseClass}--${statusBadgeType}`\n\t\t: null;\n\n\t// Function to convert labels to ids.\n\tconst labelToId = (label) => {\n\t\treturn label.toLowerCase().replace(/\\s/g, '-');\n\t};\n\n\t// Determine if there are multiple options within a plan level.\n\tconst multiplePlanOptions = planPricingData && planPricingData.length > 1;\n\n\t// Use state to track the selected plan option.\n\tconst [selectedPlan, setSelectedPlan] = useState(\n\t\tlabelToId(planPricingData[0].label),\n\t);\n\n\t// Use state to track the primary action label.\n\tconst [primaryActionLabel, setPrimaryActionLabel] = useState(\n\t\tactionPrimary.label,\n\t);\n\n\t// Preprocess planPricingData.\n\tlet pricingData = null;\n\tlet listData = null;\n\n\t// If there is only one plan option, use the first object in the array.\n\tif (!multiplePlanOptions) {\n\t\tpricingData = (\n\t\t\t<div className={`${baseClass}__pricing-data`}>\n\t\t\t\t{planPricingData[0].pricePrefix && (\n\t\t\t\t\t<span className={`${baseClass}__price-prefix`}>\n\t\t\t\t\t\t{planPricingData[0].pricePrefix}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<div className={`${baseClass}__price-line`}>\n\t\t\t\t\t<span className={`${baseClass}__price`}>\n\t\t\t\t\t\t{planPricingData[0].price}\n\t\t\t\t\t</span>\n\t\t\t\t\t{planPricingData[0].priceDetails && (\n\t\t\t\t\t\t<span className={`${baseClass}__details`}>\n\t\t\t\t\t\t\t{planPricingData[0].priceDetails}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__savings-line`}>\n\t\t\t\t\t{planPricingData[0].savingsBadgeLabel && (\n\t\t\t\t\t\t<IndicatorBadge\n\t\t\t\t\t\t\tclassName={`${baseClass}__savings-badge`}\n\t\t\t\t\t\t\tcolor='neutral'\n\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\tlabel={planPricingData[0].savingsBadgeLabel}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{planPricingData[0].savingsDetails && (\n\t\t\t\t\t\t<span className={`${baseClass}__savings-details`}>\n\t\t\t\t\t\t\t{planPricingData[0].savingsDetails}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\n\t\tlistData = (\n\t\t\t<ComparisonList\n\t\t\t\tclassName={`${baseClass}__list`}\n\t\t\t\tlistLabel={planPricingData[0].listLabel}\n\t\t\t\tlistItems={planPricingData[0].listItems}\n\t\t\t\trenderTypeLabels={false}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// If there are multiple plan options, render each option in a separate div.\n\tif (multiplePlanOptions) {\n\t\tpricingData = planPricingData.map((option) => {\n\t\t\tconst isSelected = selectedPlan === labelToId(option.label);\n\t\t\tconst dataHideClass = !isSelected\n\t\t\t\t? `${baseClass}__pricing-data--hide`\n\t\t\t\t: null;\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t`${baseClass}__pricing-data`,\n\t\t\t\t\t\tdataHideClass,\n\t\t\t\t\t])}\n\t\t\t\t\tid={`data-${labelToId(option.label)}`}\n\t\t\t\t\tkey={labelToId(option.label)}\n\t\t\t\t>\n\t\t\t\t\t{option.pricePrefix && (\n\t\t\t\t\t\t<span className={`${baseClass}__price-prefix`}>\n\t\t\t\t\t\t\t{option.pricePrefix}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={`${baseClass}__price-line`}>\n\t\t\t\t\t\t<span className={`${baseClass}__price`}>{option.price}</span>\n\t\t\t\t\t\t{option.priceDetails && (\n\t\t\t\t\t\t\t<span className={`${baseClass}__details`}>\n\t\t\t\t\t\t\t\t{option.priceDetails}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={`${baseClass}__savings-line`}>\n\t\t\t\t\t\t{option.savingsBadgeLabel && (\n\t\t\t\t\t\t\t<IndicatorBadge\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__savings-badge`}\n\t\t\t\t\t\t\t\tcolor='neutral'\n\t\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\t\tlabel={option.savingsBadgeLabel}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{option.savingsDetails && (\n\t\t\t\t\t\t\t<span className={`${baseClass}__savings-details`}>\n\t\t\t\t\t\t\t\t{option.savingsDetails}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t});\n\n\t\tlistData = planPricingData.map((option) => {\n\t\t\tconst isSelected = selectedPlan === labelToId(option.label);\n\t\t\tconst dataHideClass = !isSelected ? `${baseClass}__list--hide` : null;\n\n\t\t\treturn (\n\t\t\t\t<ComparisonList\n\t\t\t\t\tclassName={mergeClasses([`${baseClass}__list`, dataHideClass])}\n\t\t\t\t\tlistLabel={option.listLabel}\n\t\t\t\t\tlistItems={option.listItems}\n\t\t\t\t\trenderTypeLabels={false}\n\t\t\t\t\tkey={`${labelToId(option.label)}-list`}\n\t\t\t\t/>\n\t\t\t);\n\t\t});\n\t}\n\n\t// If there are multiple plan options and a custom action label is provided, use it instead of the card-level action label.\n\t// Function to find if an option has a custom action label.\n\tconst findCustomActionLabel = (selectedPlan) => {\n\t\tconst planToCompare = planPricingData.find(\n\t\t\t(option) => labelToId(option.label) === selectedPlan,\n\t\t);\n\t\tif (planToCompare.customActionLabel) {\n\t\t\treturn planToCompare.customActionLabel;\n\t\t} else {\n\t\t\treturn actionPrimary.label;\n\t\t}\n\t};\n\n\t// Then display a dropdown to choose between them.\n\tlet planSelect = null;\n\n\tif (multiplePlanOptions) {\n\t\tplanSelect = (\n\t\t\t<Select\n\t\t\t\tid='plan-select'\n\t\t\t\tclassName={`${baseClass}__select`}\n\t\t\t\tlabel={selectLabel}\n\t\t\t\tshowLabel={false}\n\t\t\t\toptions={planPricingData.map((option) => ({\n\t\t\t\t\tvalue: labelToId(option.label),\n\t\t\t\t\tlabel: option.label,\n\t\t\t\t}))}\n\t\t\t\tdefaultValue={labelToId(planPricingData[0].label)}\n\t\t\t\tonOptionSelect={(result) => {\n\t\t\t\t\tsetSelectedPlan(result.value);\n\t\t\t\t\tsetPrimaryActionLabel(findCustomActionLabel(result.value));\n\t\t\t\t\tif (onTierChange) {\n\t\t\t\t\t\tonTierChange(result.value);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Preprocess actionPrimary based on type.\n\tlet actionPrimaryElement = null;\n\n\tif (actionPrimary) {\n\t\tif (actionPrimary.type === 'button') {\n\t\t\tactionPrimaryElement = (\n\t\t\t\t<Button\n\t\t\t\t\tvariant={actionPrimary.variant}\n\t\t\t\t\tlabel={primaryActionLabel}\n\t\t\t\t\tonClick={actionPrimary.buttonAction}\n\t\t\t\t\tdisabled={actionPrimary.disabled}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (actionPrimary.type === 'link') {\n\t\t\tactionPrimaryElement = (\n\t\t\t\t<ButtonLink\n\t\t\t\t\tvariant={actionPrimary.variant}\n\t\t\t\t\tlinkContent={\n\t\t\t\t\t\t<a href={actionPrimary.linkUrl} target={actionPrimary.linkTarget}>\n\t\t\t\t\t\t\t{actionPrimary.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t}\n\n\t// Preprocess actionSecondary based on type.\n\tlet actionSecondaryElement = null;\n\tif (actionSecondary) {\n\t\tif (actionSecondary.type === 'button') {\n\t\t\tactionSecondaryElement = (\n\t\t\t\t<Button\n\t\t\t\t\tvariant='secondary'\n\t\t\t\t\tlabel={actionSecondary.label}\n\t\t\t\t\tonClick={actionSecondary.buttonAction}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (actionSecondary.type === 'link') {\n\t\t\tactionSecondaryElement = (\n\t\t\t\t<ButtonLink\n\t\t\t\t\tvariant='secondary'\n\t\t\t\t\tlinkContent={\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={actionSecondary.linkUrl}\n\t\t\t\t\t\t\ttarget={actionSecondary.linkTarget}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{actionSecondary.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([containerClass, listClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={mergeClasses([baseClass, statusClass])}>\n\t\t\t\t{statusBadgeType && (\n\t\t\t\t\t<StatusBadge\n\t\t\t\t\t\tclassName={`${baseClass}__status-badge`}\n\t\t\t\t\t\tlabel={statusBadgeLabels[statusBadgeType]}\n\t\t\t\t\t\tcolor={statusBadgeType === 'mostPopular' ? 'reverse' : 'neutral'}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<div className={`${baseClass}__main-content`}>\n\t\t\t\t\t{planName && (\n\t\t\t\t\t\t<div className={`${baseClass}__plan pds-overline-text`}>\n\t\t\t\t\t\t\t{planName}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{pricingData}\n\n\t\t\t\t\t{planDescription && (\n\t\t\t\t\t\t<div className={`${baseClass}__description`}>{planDescription}</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{planSelect}\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__actions`}>\n\t\t\t\t\t{actionPrimary && actionPrimaryElement}\n\t\t\t\t\t{actionPrimary && actionSecondary && actionSecondaryElement}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasComparisonList && listData}\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tisValidElement,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\n// Components.\nimport { Card } from '@components/cards/Card/Card';\nimport { CardHeading } from '@components/cards/CardHeading/CardHeading';\nimport { StatusBadge } from '@components/badges/StatusBadge/StatusBadge';\n\n// Types.\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\nimport { SiteStatus } from '@libs/types/custom-types';\n\n// Styles.\nimport './site-card.css';\n\n/**\n * Prop types for SiteCard\n */\nexport interface SiteCardProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Translatable text for the \"Go to\" link.\n\t */\n\tgotoText?: string;\n\t/**\n\t * Heading level of the card title.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Image URL for the site.\n\t */\n\tsiteImage?: string;\n\t/**\n\t * Link to the site dashboard.\n\t */\n\tsiteLink: ReactNode;\n\t/**\n\t * Name of the site.\n\t */\n\tsiteName?: string;\n\t/**\n\t * Plan of the site.\n\t */\n\tsitePlan?: string;\n\t/**\n\t * Status of the site.\n\t */\n\tsiteStatus?: SiteStatus;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SiteCard UI component\n */\nexport const SiteCard = ({\n\tgotoText = 'Go to',\n\theadingLevel = 'h3',\n\tsiteImage,\n\tsiteLink,\n\tsiteName,\n\tsitePlan,\n\tsiteStatus,\n\tclassName,\n\t...props\n}: SiteCardProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-site-card';\n\n\t// Preprocess status badge.\n\tlet siteStatusLabel: string;\n\tlet siteStatusType: 'success' | 'frozen';\n\tif (siteStatus === 'active') {\n\t\tsiteStatusLabel = 'Active';\n\t\tsiteStatusType = 'success';\n\t}\n\tif (siteStatus === 'frozen') {\n\t\tsiteStatusLabel = 'Frozen';\n\t\tsiteStatusType = 'frozen';\n\t}\n\tconst statusBadge = (\n\t\t<StatusBadge\n\t\t\tlabel={siteStatusLabel}\n\t\t\tstatusType={siteStatusType}\n\t\t\thasStatusIndicator={true}\n\t\t/>\n\t);\n\n\t// Preprocess card contents.\n\tconst cardContents = (\n\t\t<Card>\n\t\t\t<img slot='image' src={siteImage} alt='' />\n\t\t\t<div slot='main' className={`${baseClass}__main`}>\n\t\t\t\t<div className={`${baseClass}__header`}>\n\t\t\t\t\t<CardHeading\n\t\t\t\t\t\tfontSize='L'\n\t\t\t\t\t\tfontWeight='semibold'\n\t\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t\t\ttext={siteName}\n\t\t\t\t\t/>\n\t\t\t\t\t{statusBadge}\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__plan`}>{sitePlan}</div>\n\t\t\t</div>\n\t\t</Card>\n\t);\n\n\t// Process the site link.\n\tconst processedSiteLink = isValidElement(siteLink)\n\t\t? cloneElement(siteLink as ReactElement, {\n\t\t\t\t...siteLink.props,\n\t\t\t\tclassName: `${baseClass}__link`,\n\t\t\t\tchildren: cardContents,\n\t\t\t\t'aria-label': `${gotoText} ${siteName} dashboard`,\n\t\t\t})\n\t\t: null;\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{processedSiteLink}\n\t\t</div>\n\t);\n};\n","/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n","import type { PrismTheme } from 'prism-react-renderer';\nexport const pdsDark: PrismTheme = {\n\tplain: {\n\t\tcolor: 'var(--pds-color-code-block-dark-foreground)',\n\t\tbackgroundColor: 'var(--pds-color-code-block-dark-background)',\n\t},\n\tstyles: [\n\t\t{\n\t\t\ttypes: ['comment', 'prolog', 'doctype', 'cdata'],\n\t\t\tstyle: {\n\t\t\t\tcolor: 'var(--pds-color-code-block-dark-line-prefix)',\n\t\t\t\tfontStyle: 'italic',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['namespace'],\n\t\t\tstyle: {\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['punctuation'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#C3C5C9',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['attr-name', 'url', 'number'],\n\t\t\tstyle: {\n\t\t\t\tcolor: 'var(--pds-color-code-block-dark-foreground)',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: [\n\t\t\t\t'builtin',\n\t\t\t\t'char',\n\t\t\t\t'constant',\n\t\t\t\t'function',\n\t\t\t\t'class-name',\n\t\t\t\t'rule',\n\t\t\t\t'variable',\n\t\t\t],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#ffe668',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['coord', 'operator', 'keyword', 'property'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#78d1fa',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['string', 'attr-value'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#a0f76e',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['boolean', 'selector'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#b4a3ff',\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\ttypes: ['tag'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#ff61ca',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['deleted'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#F8495D',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['inserted'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#a0f76e',\n\t\t\t},\n\t\t},\n\t],\n};\n","import type { PrismTheme } from 'prism-react-renderer';\nexport const pdsLight: PrismTheme = {\n\tplain: {\n\t\tcolor: 'var(--pds-color-code-block-light-foreground)',\n\t\tbackgroundColor: '#f4f4f4',\n\t},\n\tstyles: [\n\t\t{\n\t\t\ttypes: ['comment', 'prolog', 'doctype', 'cdata'],\n\t\t\tstyle: {\n\t\t\t\tcolor: 'var(--pds-color-code-block-light-line-prefix)',\n\t\t\t\tfontStyle: 'italic',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['namespace'],\n\t\t\tstyle: {\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['punctuation'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#686972',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['attr-name', 'url', 'number'],\n\t\t\tstyle: {\n\t\t\t\tcolor: 'var(--pds-color-code-block-light-foreground)',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: [\n\t\t\t\t'builtin',\n\t\t\t\t'char',\n\t\t\t\t'coord',\n\t\t\t\t'constant',\n\t\t\t\t'function',\n\t\t\t\t'class-name',\n\t\t\t\t'rule',\n\t\t\t\t'variable',\n\t\t\t],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#0761BB',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['operator', 'keyword', 'property'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#C70085',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['string', 'attr-value'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#553ACF',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['boolean', 'selector'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#694A07',\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\ttypes: ['tag'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#207463',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['deleted'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#BC1C11',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttypes: ['inserted'],\n\t\t\tstyle: {\n\t\t\t\tcolor: '#217A37',\n\t\t\t},\n\t\t},\n\t],\n};\n","// Values are in rems. If px is needed, multiply the rem value by 16.\nexport const SPACING_6XS = 0.125;\nexport const SPACING_5XS = 0.25;\nexport const SPACING_4XS = 0.328;\nexport const SPACING_3XS = 0.41;\nexport const SPACING_2XS = 0.512;\nexport const SPACING_XS = 0.64;\nexport const SPACING_S = 0.8;\nexport const SPACING_M = 1;\nexport const SPACING_L = 1.25;\nexport const SPACING_XL = 1.563;\nexport const SPACING_2XL = 1.953;\nexport const SPACING_3XL = 2.441;\nexport const SPACING_4XL = 3.052;\nexport const SPACING_5XL = 3.815;\nexport const SPACING_6XL = 4.678;\nexport const SPACING_7XL = 5.96;\nexport const SPACING_8XL = 7.451;\n\nexport const SPACING = {\n\tSPACING_6XS,\n\tSPACING_5XS,\n\tSPACING_4XS,\n\tSPACING_3XS,\n\tSPACING_2XS,\n\tSPACING_XS,\n\tSPACING_S,\n\tSPACING_M,\n\tSPACING_L,\n\tSPACING_XL,\n\tSPACING_2XL,\n\tSPACING_3XL,\n\tSPACING_4XL,\n\tSPACING_5XL,\n\tSPACING_6XL,\n\tSPACING_7XL,\n\tSPACING_8XL,\n};\n","// Values are in rems. If px is needed, multiply the rem value by 16.\nexport const TYPE_SCALE_XS = 0.64;\nexport const TYPE_SCALE_S = 0.8;\nexport const TYPE_SCALE_M = 1;\nexport const TYPE_SCALE_L = 1.25;\nexport const TYPE_SCALE_XL = 1.563;\nexport const TYPE_SCALE_2XL = 1.953;\nexport const TYPE_SCALE_3XL = 2.441;\nexport const TYPE_SCALE_4XL = 3.052;\nexport const TYPE_SCALE_5XL = 3.815;\nexport const TYPE_SCALE_6XL = 4.678;\nexport const TYPE_SCALE_7XL = 5.96;\nexport const TYPE_SCALE_8XL = 7.451;\nexport const TYPE_SCALE_9XL = 6.192;\n\nexport const TYPE_SCALE = {\n\tTYPE_SCALE_XS,\n\tTYPE_SCALE_S,\n\tTYPE_SCALE_M,\n\tTYPE_SCALE_L,\n\tTYPE_SCALE_XL,\n\tTYPE_SCALE_2XL,\n\tTYPE_SCALE_3XL,\n\tTYPE_SCALE_4XL,\n\tTYPE_SCALE_5XL,\n\tTYPE_SCALE_6XL,\n\tTYPE_SCALE_7XL,\n\tTYPE_SCALE_8XL,\n\tTYPE_SCALE_9XL,\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { SPACING } from '@vars/spacing';\nimport { TYPE_SCALE } from '@vars/type-scale';\n\nimport {\n\tSpacingScaleOptions,\n\tTypeScaleOptions,\n} from '@libs/types/custom-types';\n\nimport './skeleton.css';\n\n/**\n * Prop types for Skeleton\n */\nexport interface SkeletonProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Skeleton color scheme.\n\t */\n\tcolorType?: 'regular' | 'bold';\n\t/**\n\t * Is the skeleton animated? This should almost always be true.\n\t * If false, the skeleton will not animate and will be a static placeholder.\n\t */\n\tisAnimated?: boolean;\n\t/**\n\t * The shape of the skeleton.\n\t */\n\tshape?:\n\t\t| 'circular'\n\t\t| 'rectangular'\n\t\t| 'rounded'\n\t\t| 'text-block'\n\t\t| 'code-block'\n\t\t| 'code-block-prefix';\n\t/**\n\t * The size of the skeleton — height and width. These values can either be set with PDS spacing scale options or as a number in rems.\n\t *\n\t * If `shape` = `circular`, the `height` value will be used to set the `height` and `width`.\n\t *\n\t * If `shape` = `text-block`, `code-block`, or `code-block-prefix`, only the `width` value will be used. The overall height will be determined by the `textLineCount` and `textSize` props.\n\t */\n\tsize?: {\n\t\theight?: SpacingScaleOptions | number;\n\t\twidth?: SpacingScaleOptions | number;\n\t};\n\t/**\n\t * Is the text justified?\n\t * If true, the block will span the prescribed width.\n\t * If false, and there are multiple lines of text, the widths will vary.\n\t *\n\t * This is only used when the shape is 'text-block'. Code blocks will have specific formatting.\n\t */\n\ttextIsJustified?: boolean;\n\t/**\n\t * The number of lines for text skeletons.\n\t * Value should be between 1 and 5 for text-block shapes.\n\t * Value should be between 1 and 15 for code-block and code-block-prefix shapes.\n\t *\n\t * This is only used when the shape is `text-block`, `code-block`, or `code-block-prefix`.\n\t */\n\ttextLineCount?: number;\n\t/**\n\t * The font-size of the text skeleton.\n\t *\n\t * This is only used when the shape is `text-block`, `code-block`, or `code-block-prefix`.\n\t */\n\ttextSize?: TypeScaleOptions;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Skeleton UI component\n */\nexport const Skeleton = ({\n\tcolorType = 'regular',\n\tisAnimated = true,\n\tshape = 'rounded',\n\tsize,\n\ttextIsJustified,\n\ttextLineCount = 1,\n\ttextSize = 'm',\n\tclassName,\n\t...props\n}: SkeletonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-skeleton';\n\tconst shapeClass = `${baseClass}--${shape}`;\n\tconst colorClass = isAnimated\n\t\t? `pds-pulse pds-pulse--${colorType}`\n\t\t: `${baseClass}--${colorType}`;\n\n\t// Set the array of text-based shapes.\n\tconst textBasedShapes = ['text-block', 'code-block', 'code-block-prefix'];\n\n\t// If height is passed in as a spacing scale option, convert it to rems.\n\tconst processedHeight = size?.height\n\t\t? typeof size.height === 'number'\n\t\t\t? `${size.height}rem`\n\t\t\t: `${SPACING[`SPACING_${size.height.toUpperCase()}`]}rem`\n\t\t: '1rem';\n\n\tconst processedWidth = size?.width\n\t\t? typeof size.width === 'number'\n\t\t\t? `${size.width}rem`\n\t\t\t: `${SPACING[`SPACING_${size.width.toUpperCase()}`]}rem`\n\t\t: '100%';\n\n\t// Handle size.\n\tlet computedSize = {\n\t\theight: processedHeight,\n\t\twidth: processedWidth,\n\t};\n\n\t// If the shape is a circular, set the width and height to be the same.\n\tif (shape === 'circular') {\n\t\tcomputedSize = {\n\t\t\t...computedSize,\n\t\t\twidth: computedSize.height,\n\t\t};\n\t}\n\n\t// Pre-process the output for all shapes that are not text or code blocks.\n\tconst defaultOutput = (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcolorClass,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={computedSize}\n\t\t\t{...props}\n\t\t/>\n\t);\n\n\t// Sanitize the textLineCount based on shape type.\n\tconst isCodeBlock = shape === 'code-block' || shape === 'code-block-prefix';\n\tconst maxLines = isCodeBlock ? 15 : 5;\n\tconst sanitizedTextLineCount = Math.max(1, Math.min(textLineCount, maxLines));\n\n\t// Compute the row gap for the text-block shape.\n\tlet rowGap = `${TYPE_SCALE[`TYPE_SCALE_${textSize.toUpperCase()}`] * 0.75}rem`;\n\tif (shape === 'code-block' || shape === 'code-block-prefix') {\n\t\t// For code blocks, use a larger row gap.\n\t\trowGap = `${TYPE_SCALE[`TYPE_SCALE_${textSize.toUpperCase()}`] * 1.25}rem`;\n\t}\n\n\t// Compute the column gap for code-block-prefix shape.\n\tconst columnGap = `calc(var(--pds-typography-size-${textSize}) * 0.75)`;\n\n\t// Function to determine the width of each item in the text-block when not justified.\n\tconst getTextBlockWidth = (index: number) => {\n\t\tif (shape === 'text-block') {\n\t\t\tif (textIsJustified) {\n\t\t\t\treturn processedWidth;\n\t\t\t}\n\n\t\t\t// Return the full width for the first line.\n\t\t\tif (index === 0) {\n\t\t\t\treturn processedWidth;\n\t\t\t}\n\n\t\t\t// Get the line number (1-based index).\n\t\t\tconst lineNumber = index + 1;\n\n\t\t\t// If the line number is even, return 75% of the width.\n\t\t\tif (lineNumber === 2) {\n\t\t\t\treturn `calc(${processedWidth} * 0.75)`;\n\t\t\t}\n\n\t\t\t// If the line number is odd, return 85% of the width.\n\t\t\tif (lineNumber % 2 === 1) {\n\t\t\t\treturn `calc(${processedWidth} * 0.85)`;\n\t\t\t}\n\n\t\t\t// Fallback for remaining even numbers\n\t\t\treturn `calc(${processedWidth} * 0.75)`;\n\t\t}\n\n\t\tif (shape === 'code-block' || shape === 'code-block-prefix') {\n\t\t\t// For code blocks return the full width for all lines except for the last.\n\t\t\tif (index === sanitizedTextLineCount - 1) {\n\t\t\t\treturn `calc(${processedWidth} * 0.80)`;\n\t\t\t}\n\t\t\treturn processedWidth;\n\t\t}\n\t};\n\n\t// Function to get the prefix width for code-block-prefix (square based on text size)\n\tconst getPrefixWidth = () => {\n\t\treturn `var(--pds-typography-size-${textSize})`;\n\t};\n\n\t// Function to get opacity for code block lines with percentage-based fade\n\tconst getCodeBlockOpacity = (index: number) => {\n\t\tconst isCodeBlock = shape === 'code-block' || shape === 'code-block-prefix';\n\n\t\tif (!isCodeBlock || sanitizedTextLineCount < 5) {\n\t\t\treturn 1; // Full opacity for non-code blocks or when less than 5 lines\n\t\t}\n\n\t\t// Calculate the halfway point (rounded up) then start fade 1 line before\n\t\tconst halfwayPoint = Math.ceil(sanitizedTextLineCount / 2);\n\t\tconst fadeStartPoint = Math.max(0, halfwayPoint - 1);\n\n\t\t// If we're before the fade start point, full opacity\n\t\tif (index < fadeStartPoint) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Calculate how far we are from the fade start point\n\t\tconst fadeZoneLength = sanitizedTextLineCount - fadeStartPoint;\n\t\tconst positionInFadeZone = index - fadeStartPoint;\n\n\t\t// Calculate opacity: starts at 1.0 at halfway point, ends at 0.1 at the last line\n\t\t// Linear interpolation from 1.0 to 0.1\n\t\tconst opacityRange = 1.0 - 0.1; // 0.9\n\t\tconst fadeProgress = positionInFadeZone / fadeZoneLength; // 0 to 1\n\t\tconst opacity = 1.0 - opacityRange * fadeProgress;\n\n\t\t// Ensure minimum opacity of 0.1\n\t\treturn Math.max(0.1, opacity);\n\t};\n\n\t// Pre-process the output for text-block shapes.\n\tconst textBlockOutput = (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\t`${baseClass}-group`,\n\t\t\t\tshape === 'code-block-prefix' ? shapeClass : '',\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={{\n\t\t\t\trowGap: rowGap,\n\t\t\t\twidth: size?.width ? undefined : '100%', // Ensure container takes full width when no width specified\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t{Array.from({ length: sanitizedTextLineCount }, (_, index) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName={mergeClasses([`${baseClass}-line`])}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\tshape === 'code-block-prefix'\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tgap: columnGap,\n\t\t\t\t\t\t\t\t\topacity: getCodeBlockOpacity(index),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\topacity: getCodeBlockOpacity(index),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{/* Render prefix for code-block-prefix */}\n\t\t\t\t\t{shape === 'code-block-prefix' && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\tbaseClass,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t\t`${baseClass}--rounded`,\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: getPrefixWidth(),\n\t\t\t\t\t\t\t\theight: `var(--pds-typography-size-${textSize})`,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Render the main line */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={mergeClasses([baseClass, colorClass, shapeClass])}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\tshape === 'code-block-prefix'\n\t\t\t\t\t\t\t\t\t? `calc(${getTextBlockWidth(index)} - ${getPrefixWidth()} - ${columnGap})`\n\t\t\t\t\t\t\t\t\t: getTextBlockWidth(index),\n\t\t\t\t\t\t\theight: `var(--pds-typography-size-${textSize})`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n\n\t// Render the output\n\treturn textBasedShapes.includes(shape) ? textBlockOutput : defaultOutput;\n};\n","(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not “foo {”\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (“=” and “+=”).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// → No expansion (so no “inside”).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// “Normal” string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n","(function (Prism) {\n\n\tPrism.languages.diff = {\n\t\t'coord': [\n\t\t\t// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n\t\t\t/^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n\t\t\t// Match \"@@ ... @@\" coord lines in unified diff.\n\t\t\t/^@@.*@@$/m,\n\t\t\t// Match coord lines in normal diff (starts with a number).\n\t\t\t/^\\d.*$/m\n\t\t]\n\n\t\t// deleted, inserted, unchanged, diff\n\t};\n\n\t/**\n\t * A map from the name of a block to its line prefix.\n\t *\n\t * @type {Object<string, string>}\n\t */\n\tvar PREFIXES = {\n\t\t'deleted-sign': '-',\n\t\t'deleted-arrow': '<',\n\t\t'inserted-sign': '+',\n\t\t'inserted-arrow': '>',\n\t\t'unchanged': ' ',\n\t\t'diff': '!',\n\t};\n\n\t// add a token for each prefix\n\tObject.keys(PREFIXES).forEach(function (name) {\n\t\tvar prefix = PREFIXES[name];\n\n\t\tvar alias = [];\n\t\tif (!/^\\w+$/.test(name)) { // \"deleted-sign\" -> \"deleted\"\n\t\t\talias.push(/\\w+/.exec(name)[0]);\n\t\t}\n\t\tif (name === 'diff') {\n\t\t\talias.push('bold');\n\t\t}\n\n\t\tPrism.languages.diff[name] = {\n\t\t\tpattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n\t\t\talias: alias,\n\t\t\tinside: {\n\t\t\t\t'line': {\n\t\t\t\t\tpattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'prefix': {\n\t\t\t\t\tpattern: /[\\s\\S]/,\n\t\t\t\t\talias: /\\w+/.exec(name)[0]\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t});\n\n\t// make prefixes available to Diff plugin\n\tObject.defineProperty(Prism.languages.diff, 'PREFIXES', {\n\t\tvalue: PREFIXES\n\t});\n\n}(Prism));\n","import React, { ComponentPropsWithoutRef, CSSProperties } from 'react';\nimport { CodeBlock as ReactCodeBlock } from 'react-code-block';\nimport Prism from 'prismjs/components/prism-core';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ClipboardButton } from '@components/buttons/ClipboardButton/ClipboardButton';\nimport { pdsDark, pdsLight } from './themes';\n\nimport { Skeleton } from '@components/loading-indicators/Skeleton/Skeleton';\n\n// Import extra Prism languages not included with prism-react-renderer.\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-diff';\n\nimport './code-block.css';\n\n// Remove when legacy functionality is no longer needed.\n// This is for Pantheon legacy code blocks that use <br> and <span> elements.\nimport './code-block-legacy.css';\n\ntype SupportedLanguages =\n\t| 'bash'\n\t| 'css'\n\t| 'diff'\n\t| 'html'\n\t| 'js'\n\t| 'json'\n\t| 'jsx'\n\t| 'ts'\n\t| 'tsx'\n\t| 'yaml';\n\n/**\n * Prop types for CodeBlock\n */\nexport interface CodeBlockProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Code to display.\n\t */\n\tcode: string;\n\t/**\n\t * Color type. Default is dark.\n\t */\n\tcolorType?: 'dark' | 'light';\n\t/**\n\t * Copy button label. Aria-label and tooltip text for the copy button.\n\t */\n\tcopyButtonLabel?: string;\n\t/**\n\t * Show copy button.\n\t */\n\thasCopyButton?: boolean;\n\t/**\n\t * Show line numbers.\n\t */\n\thasLineNumbers?: boolean;\n\t/**\n\t * Show prompt. A prompt and and line numbers cannot be shown at the same time.\n\t * If both are set to true, line numbers will be shown.\n\t */\n\thasPrompt?: boolean;\n\t/**\n\t * Height of the code block in rems. If not set, the height will be determined by the content.\n\t *\n\t * A maximum height can also be set with the `maxHeight` prop.\n\t */\n\theight?: number;\n\t/**\n\t * Show loading state.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Language for optional syntax highlighting.\n\t */\n\tlanguage?: SupportedLanguages;\n\t/**\n\t * Number of lines to show when loading. Value should be between 1 and 15.\n\t *\n\t * See `Loading state` section in the component documentation for more details.\n\t */\n\tloadingLineCount?: number;\n\t/**\n\t * Maximum height for the code block in rems.\n\t */\n\tmaxHeight?: number;\n\t/**\n\t * Prompt symbol. Default is '$'.\n\t */\n\tpromptSymbol?: string;\n\t/**\n\t * When true, the component will bypass the Prism renderer and use the legacy Pantheon method of rendering code blocks.\n\t * Any `<br>` and `<span>` elements in the `code` prop will be rendered.\n\t *\n\t * This is a temporary solution to support legacy code blocks.\n\t */\n\trenderAsLegacy?: boolean;\n\t/**\n\t * Should wrap the code block\n\t * Default is false\n\t */\n\tshouldWrap?: boolean;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CodeBlock UI component\n */\nexport const CodeBlock = ({\n\tcode,\n\tcolorType = 'dark',\n\tcopyButtonLabel = 'Copy to clipboard',\n\thasCopyButton,\n\thasLineNumbers,\n\thasPrompt,\n\theight,\n\tisLoading,\n\tlanguage,\n\tloadingLineCount = 1,\n\tmaxHeight,\n\tpromptSymbol = '$',\n\trenderAsLegacy = false,\n\tshouldWrap = false,\n\tclassName,\n\t...props\n}: CodeBlockProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-code-block';\n\tconst colorClass = `${baseClass}--${colorType}`;\n\tconst wrapClass = shouldWrap ? `${baseClass}__line-wrapped` : '';\n\n\t// Set up inline styles.\n\tconst blockStyles: CSSProperties = {};\n\tif (height) {\n\t\tblockStyles.height = `${height}rem`;\n\t}\n\tif (maxHeight) {\n\t\tblockStyles.maxHeight = `${maxHeight}rem`;\n\t}\n\n\t// Map color type to ClipboardButton variant.\n\tconst buttonVariant = colorType === 'dark' ? 'reverse' : 'standard';\n\n\t// Map color type to Prism theme.\n\tconst prismTheme = colorType === 'dark' ? pdsDark : pdsLight;\n\n\t// Array of extra languages that will need custom support.\n\tconst extraLanguages = ['bash', 'diff', 'twig'];\n\n\t// Create a loading skeleton to use if the component is loading.\n\tconst loadingSkeleton = (\n\t\t<div className={`${baseClass}__code`}>\n\t\t\t<Skeleton\n\t\t\t\tclassName={`${baseClass}__skeleton`}\n\t\t\t\ttextLineCount={loadingLineCount}\n\t\t\t\tshape={hasLineNumbers || hasPrompt ? 'code-block-prefix' : 'code-block'}\n\t\t\t\tcolorType={colorType === 'dark' ? 'bold' : 'regular'}\n\t\t\t/>\n\t\t</div>\n\t);\n\n\t// Function to get the clean text for clipboard when rendering as HTML\n\tconst getClipboardText = (htmlContent: string): string => {\n\t\t// Create a temporary div to parse HTML and extract text\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = htmlContent;\n\n\t\t// Replace <br> tags with newlines\n\t\tconst brTags = tempDiv.querySelectorAll('br');\n\t\tbrTags.forEach((br) => {\n\t\t\tbr.replaceWith('\\n');\n\t\t});\n\n\t\treturn tempDiv.textContent || tempDiv.innerText || '';\n\t};\n\n\t// Function to process HTML content for line numbers\n\tconst processHtmlForLineNumbers = (\n\t\thtmlContent: string,\n\t): React.ReactNode[] => {\n\t\t// Split by <br> tags to get individual lines\n\t\tconst lines = htmlContent.split(/<br\\s*\\/?>/i);\n\n\t\treturn lines.map((line, index) => (\n\t\t\t<div key={index} className={`${baseClass}__line ${wrapClass}`}>\n\t\t\t\t<span className={`${baseClass}__number`}>{index + 1}</span>\n\t\t\t\t<span\n\t\t\t\t\tclassName={`${baseClass}__line-content`}\n\t\t\t\t\tdangerouslySetInnerHTML={{ __html: line }}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t));\n\t};\n\n\t// Function to process HTML content for prompt\n\tconst processHtmlForPrompt = (htmlContent: string): React.ReactNode[] => {\n\t\t// Split by <br> tags to get individual lines\n\t\tconst lines = htmlContent.split(/<br\\s*\\/?>/i);\n\n\t\treturn lines.map((line, index) => (\n\t\t\t<div key={index} className={`${baseClass}__line`}>\n\t\t\t\t<span className={`${baseClass}__prompt`}>{promptSymbol}</span>\n\t\t\t\t<span\n\t\t\t\t\tclassName={`${baseClass}__line-content`}\n\t\t\t\t\tdangerouslySetInnerHTML={{ __html: line }}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t));\n\t};\n\n\t// Render HTML content instead of using Prism\n\tif (renderAsLegacy) {\n\t\tconst clipboardText = getClipboardText(code);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([baseClass, colorClass, className ?? ''])}\n\t\t\t\tstyle={blockStyles}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\tloadingSkeleton\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<pre className={`${baseClass}__code`} tabIndex={0}>\n\t\t\t\t\t\t\t{hasLineNumbers || hasPrompt ? (\n\t\t\t\t\t\t\t\thasLineNumbers ? (\n\t\t\t\t\t\t\t\t\t<>{processHtmlForLineNumbers(code)}</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<>{processHtmlForPrompt(code)}</>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__content`}\n\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: code }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</pre>\n\t\t\t\t\t\t{hasCopyButton && (\n\t\t\t\t\t\t\t<div className={`${baseClass}__copy`}>\n\t\t\t\t\t\t\t\t<ClipboardButton\n\t\t\t\t\t\t\t\t\tariaLabel={copyButtonLabel}\n\t\t\t\t\t\t\t\t\tclipboardText={clipboardText}\n\t\t\t\t\t\t\t\t\tvariant={buttonVariant}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Original Prism-based rendering\n\t// Preprocess the lines.\n\tconst lineContent = (\n\t\t<ReactCodeBlock.LineContent>\n\t\t\t<ReactCodeBlock.Token />\n\t\t</ReactCodeBlock.LineContent>\n\t);\n\n\t// If the code has line numbers we need to wrap each line.\n\tconst withLineNumbers = (\n\t\t<div className={`${baseClass}__line ${wrapClass}`}>\n\t\t\t<ReactCodeBlock.LineNumber className={`${baseClass}__number`} />\n\t\t\t{lineContent}\n\t\t</div>\n\t);\n\n\t// If the code has a prompt we also need to wrap each line.\n\tconst withPrompt = (\n\t\t<div className={`${baseClass}__line`}>\n\t\t\t<span className={`${baseClass}__prompt`}>{promptSymbol}</span>\n\t\t\t{lineContent}\n\t\t</div>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, colorClass, className ?? ''])}\n\t\t\tstyle={blockStyles}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isLoading ? (\n\t\t\t\tloadingSkeleton\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<ReactCodeBlock\n\t\t\t\t\t\tcode={code}\n\t\t\t\t\t\tlanguage={language ? language : ''}\n\t\t\t\t\t\ttheme={prismTheme}\n\t\t\t\t\t\tprism={extraLanguages.includes(language) ? Prism : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ReactCodeBlock.Code className={`${baseClass}__code`} tabIndex={0}>\n\t\t\t\t\t\t\t{hasLineNumbers || hasPrompt\n\t\t\t\t\t\t\t\t? hasLineNumbers\n\t\t\t\t\t\t\t\t\t? withLineNumbers\n\t\t\t\t\t\t\t\t\t: withPrompt\n\t\t\t\t\t\t\t\t: lineContent}\n\t\t\t\t\t\t</ReactCodeBlock.Code>\n\t\t\t\t\t</ReactCodeBlock>\n\t\t\t\t\t{hasCopyButton && (\n\t\t\t\t\t\t<div className={`${baseClass}__copy`}>\n\t\t\t\t\t\t\t<ClipboardButton\n\t\t\t\t\t\t\t\tariaLabel={copyButtonLabel}\n\t\t\t\t\t\t\t\tclipboardText={code}\n\t\t\t\t\t\t\t\tvariant={buttonVariant}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './cta-link.css';\n\nexport interface CTALinkProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Size of link\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CTA Link UI component\n */\nexport const CTALink = ({\n\tlinkContent,\n\tsize = 'md',\n\tclassName,\n\t...props\n}: CTALinkProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-cta-link';\n\tconst sizeClass = size != 'md' ? `${baseClass}--${size}` : null;\n\n\t// Render the output.\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, sizeClass, className ?? '']\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{linkContent}\n\t\t\t<Icon\n\t\t\t\ticonName='arrowRight'\n\t\t\t\ticonSize={size === 'sm' ? 'md' : 'lg'}\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\n\nimport { ContainerWidth, HeadingLevel } from '@libs/types/custom-types';\n\nimport './../buttons/Button/button.css';\nimport './cta-slice.css';\n\ninterface CTASliceProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Background color of slice\n\t */\n\tbackgroundColor?: 'default' | 'secondary';\n\t/**\n\t * PDS container width.\n\t */\n\tcontainerWidth?: ContainerWidth;\n\t/**\n\t * Heading level\n\t */\n\theadingLevel?: HeadingLevel;\n\t/**\n\t * Heading text\n\t */\n\theadingText: string;\n\t/**\n\t * Further explain block\n\t */\n\tleadText?: string;\n\t/**\n\t * Primary link content\n\t */\n\tprimaryLinkContent: ReactNode;\n\t/**\n\t * Optional secondary link content\n\t */\n\tsecondaryLinkContent?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CTA Slice UI component\n */\nexport const CTASlice = ({\n\tbackgroundColor = 'default',\n\tcontainerWidth = 'standard',\n\theadingLevel = 'h2',\n\theadingText,\n\tleadText,\n\tprimaryLinkContent,\n\tsecondaryLinkContent,\n\tclassName,\n\t...props\n}: CTASliceProps) => {\n\t// Set up classes\n\tconst baseClass = 'pds-cta-slice';\n\tconst colorClass =\n\t\tbackgroundColor && backgroundColor !== 'default'\n\t\t\t? `${baseClass}--${backgroundColor}`\n\t\t\t: null;\n\n\tconst containerClasses =\n\t\tcontainerWidth && containerWidth !== 'standard'\n\t\t\t? `pds-container pds-container--${containerWidth}`\n\t\t\t: 'pds-container';\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, colorClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={containerClasses}>\n\t\t\t\t{headingText && (\n\t\t\t\t\t<Hx baseClass={baseClass} className='pds-ts-4xl' level={headingLevel}>\n\t\t\t\t\t\t{headingText}\n\t\t\t\t\t</Hx>\n\t\t\t\t)}\n\n\t\t\t\t{leadText && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__lead-text pds-lead-text pds-lead-text--sm`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{leadText}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{primaryLinkContent && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__links pds-button-group pds-button-group--lg`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{primaryLinkContent}\n\t\t\t\t\t\t{secondaryLinkContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './dashboard-stat.css';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nexport type DashBoardStatStatus =\n\t| 'success'\n\t| 'warning'\n\t| 'launch'\n\t| 'error'\n\t| 'ready'\n\t| 'notReady';\n\n/**\n * Prop types for DashboardStat\n */\nexport interface DashboardStatProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Title of the stat, displayed as the main heading of the component.\n\t */\n\ttitle?: string;\n\t/**\n\t * Status of the stat, which determines the icon and icon color.\n\t */\n\tstatus?: DashBoardStatStatus;\n\t/**\n\t * Value of the stat, displayed next to the status icon.\n\t */\n\tstat?: string | number;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * DashboardStat UI component\n */\nexport const DashboardStat = ({\n\ttitle,\n\tstatus,\n\tstat,\n\tclassName,\n\t...props\n}: DashboardStatProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-stat';\n\n\tconst statusIcons: Record<DashBoardStatStatus, PDSIcon> = {\n\t\tsuccess: 'circleCheck',\n\t\twarning: 'diamondExclamation',\n\t\tlaunch: 'rocketLaunch',\n\t\terror: 'diamondExclamation',\n\t\tready: 'thumbsUp',\n\t\tnotReady: 'thumbsDown',\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t<div className={`${baseClass}__title`}>{title}</div>\n\t\t\t<div className={`${baseClass}__stat-wrapper`}>\n\t\t\t\t{status && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={statusIcons[status]}\n\t\t\t\t\t\tclassName={`${baseClass}__stat-status ${baseClass}__stat-status--${status}`}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{stat && <div className={`${baseClass}__stat-value`}>{stat}</div>}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './compact-empty-state.css';\n\n/**\n * Prop types for CompactEmptyState\n */\nexport interface CompactEmptyStateProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * heading to explain the empty state.\n\t */\n\theading: string;\n\t/**\n\t * Heading level.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Icon to display above the heading.\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * A link element using the router of your choice. Leave empty for no link.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Message to display below the heading.\n\t */\n\tmessage?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CompactEmptyState UI component\n */\nexport const CompactEmptyState = ({\n\ticonName,\n\tlinkContent,\n\tmessage,\n\theading,\n\theadingLevel = 'span',\n\tclassName,\n\t...props\n}: CompactEmptyStateProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-compact-empty-state';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{iconName && (\n\t\t\t\t<Icon\n\t\t\t\t\ticonName={iconName}\n\t\t\t\t\ticonSize='xl'\n\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t<Hx\n\t\t\t\t\tbaseClass={baseClass}\n\t\t\t\t\tclassName='pds-ts-l pds-fw-bold'\n\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t>\n\t\t\t\t\t{heading}\n\t\t\t\t</Hx>\n\n\t\t\t\t{message && <p className={`${baseClass}__message`}>{message}</p>}\n\t\t\t</div>\n\n\t\t\t{linkContent && <div className={`${baseClass}__link`}>{linkContent}</div>}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './video-embed.css';\n\n/**\n * Prop types for VideoEmbed\n */\nexport interface VideoEmbedProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Video hosting platform.\n\t */\n\tplatform: 'vimeo' | 'wistia' | 'youtube';\n\t/**\n\t * Video ID to embed.\n\t */\n\tvideoId: string;\n\t/**\n\t * Video title to display. This is for the title prop on the video iframe.\n\t * If none is provided it will default to `\"[platform] video player\"`\n\t */\n\tvideoTitle?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * VideoEmbed UI component\n */\nexport const VideoEmbed = ({\n\tplatform,\n\tvideoId,\n\tvideoTitle,\n\tclassName,\n\t...props\n}: VideoEmbedProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-video-embed';\n\n\tconst wistiaFrame = (\n\t\t<iframe\n\t\t\tsrc={`https://fast.wistia.net/embed/iframe/${videoId}`}\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\ttitle={`Wistia video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst vimeoFrame = (\n\t\t<iframe\n\t\t\tsrc={`https://player.vimeo.com/video/${videoId}`}\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\ttitle={`Vimeo video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst youTubeFrame = (\n\t\t<iframe\n\t\t\tsrc={`https://www.youtube.com/embed/${videoId}`}\n\t\t\ttitle={`YouTube video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t\tallow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'\n\t\t\treferrerPolicy='strict-origin-when-cross-origin'\n\t\t\tallowFullScreen\n\t\t></iframe>\n\t);\n\n\tlet frameToRender: ReactNode;\n\tswitch (platform) {\n\t\tcase 'vimeo':\n\t\t\tframeToRender = vimeoFrame;\n\t\t\tbreak;\n\t\tcase 'wistia':\n\t\t\tframeToRender = wistiaFrame;\n\t\t\tbreak;\n\t\tcase 'youtube':\n\t\tdefault:\n\t\t\tframeToRender = youTubeFrame;\n\t\t\tbreak;\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{frameToRender}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\n// Components.\nimport { Hx } from '@libs/components/utility-components';\nimport { VideoEmbed, VideoEmbedProps } from '@components/VideoEmbed/VideoEmbed';\n\n// Contexts.\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Types.\nimport { HeadingLevel } from '@libs/types/custom-types';\n\nimport './horizontal-empty-state.css';\n\n/**\n * Prop types for HorizontalEmptyState\n */\nexport interface HorizontalEmptyStateProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Vertical alignment of the content.\n\t */\n\talignment?: 'top' | 'center';\n\t/**\n\t * A call-to-action region.\n\t * This should be a Button, ButtonLink, or two items wrapped in a `pds-button-group` div.\n\t */\n\tctaRegion?: ReactNode;\n\t/**\n\t * Pantheon collage image to display next to the main content.\n\t * Can be a string (image path/URL) or a React node (e.g., <Picture />).\n\t * If a video is provided, this will be ignored.\n\t */\n\timage?: string | React.ReactNode;\n\t/**\n\t * Will this be rendered within a panel?\n\t * If true, the image and heading will be scaled down to fit within the panel.\n\t */\n\tisWithinPanel?: boolean;\n\t/**\n\t * heading to explain the empty state.\n\t */\n\theading: string;\n\t/**\n\t * Heading level.\n\t */\n\theadingLevel?: HeadingLevel;\n\t/**\n\t * Message to display below the heading.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * A video to display next to the main content.\n\t *\n\t * This is an object with the following properties:\n\t * - `platform`: The video hosting platform, either 'youtube' or 'vimeo'.\n\t * - `videoId`: The ID of the video to embed.\n\t *\n\t * If a video is provided, the image will be ignored.\n\t */\n\tvideo?: VideoEmbedProps;\n\t/**\n\t * Width of the image container (CSS value, e.g., '40%', '30%', '300px').\n\t * Default is '40%'.\n\t */\n\timageWidth?: string;\n\t/**\n\t * Margin left of the image container (CSS value, e.g., '0', '10px', '20%').\n\t * Default is '0'.\n\t */\n\timageMarginLeft?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * HorizontalEmptyState UI component\n */\nexport const HorizontalEmptyState = ({\n\talignment = 'center',\n\tctaRegion,\n\timage,\n\tisWithinPanel,\n\theading,\n\theadingLevel = 'h1',\n\tmessage,\n\tvideo,\n\timageWidth = '40%',\n\timageMarginLeft = '0',\n\tclassName,\n\t...props\n}: HorizontalEmptyStateProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-horizontal-empty-state';\n\tconst alignmentClass = `${baseClass}--${alignment}`;\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\tconst panelClass = isWithinPanel ? `${baseClass}--panel` : null;\n\tconst videoClass = video ? `${baseClass}--video` : null;\n\n\t// Compute style for image container (input-style pattern)\n\tconst imageContainerStyle = {\n\t\twidth: imageWidth,\n\t\tmarginLeft: imageMarginLeft,\n\t};\n\n\t// If the message is a string, wrap it in a paragraph. Otherwise wrap it in a div.\n\tif (typeof message === 'string') {\n\t\tmessage = <p className={`${baseClass}__message`}>{message}</p>;\n\t} else {\n\t\tmessage = <div className={`${baseClass}__message`}>{message}</div>;\n\t}\n\n\tconst videoMarkup = video && (\n\t\t<div className={`${baseClass}__media`}>\n\t\t\t<VideoEmbed platform={video.platform} videoId={video.videoId} />\n\t\t</div>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\talignmentClass,\n\t\t\t\tmobileClass,\n\t\t\t\tpanelClass,\n\t\t\t\tvideoClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile && video && videoMarkup}\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<Hx\n\t\t\t\t\tbaseClass={baseClass}\n\t\t\t\t\tclassName={`${isWithinPanel ? `pds-ts-2xl` : `pds-ts-4xl`} pds-fw-bold`}\n\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t>\n\t\t\t\t\t{heading}\n\t\t\t\t</Hx>\n\t\t\t\t{message && message}\n\t\t\t\t{ctaRegion && <div className={`${baseClass}__cta`}>{ctaRegion}</div>}\n\t\t\t</div>\n\t\t\t{!isMobile && image && !video && (\n\t\t\t\t<div className={`${baseClass}__media`} style={imageContainerStyle}>\n\t\t\t\t\t{typeof image === 'string' ? (\n\t\t\t\t\t\t<img className={`${baseClass}__image`} src={image} alt='' />\n\t\t\t\t\t) : (\n\t\t\t\t\t\timage\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!isMobile && video && videoMarkup}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\n\nimport { HeadingLevel } from '@libs/types/custom-types';\n\nimport './vertical-empty-state.css';\n\n/**\n * Prop types for VerticalEmptyState\n */\nexport interface VerticalEmptyStateProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * A call-to-action region.\n\t * This should be a Button, ButtonLink, or two items wrapped in a `pds-button-group` div.\n\t */\n\tctaRegion?: ReactNode;\n\t/**\n\t * PDS illustration image to display above the heading.\n\t * Should be a link to an SVG file, either from Brandfolder or local.\n\t * See full documentation for details.\n\t */\n\timage?: string;\n\t/**\n\t * Height of the image (CSS value like '200px', '50%', etc.)\n\t */\n\timageHeight?: string;\n\t/**\n\t * Width of the image (CSS value like '200px', '50%', etc.)\n\t */\n\timageWidth?: string;\n\t/**\n\t * heading to explain the empty state.\n\t */\n\theading: string;\n\t/**\n\t * Heading level.\n\t */\n\theadingLevel?: HeadingLevel;\n\t/**\n\t * Message to display below the heading.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * VerticalEmptyState UI component\n */\nexport const VerticalEmptyState = ({\n\tctaRegion,\n\timage,\n\timageHeight = 'auto',\n\timageWidth = 'auto',\n\theading,\n\theadingLevel = 'h2',\n\tmessage,\n\tclassName,\n\t...props\n}: VerticalEmptyStateProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-vertical-empty-state';\n\n\t// If the message is a string, wrap it in a paragraph. Otherwise wrap it in a div.\n\tif (typeof message === 'string') {\n\t\tmessage = <p className={`${baseClass}__message`}>{message}</p>;\n\t} else {\n\t\tmessage = <div className={`${baseClass}__message`}>{message}</div>;\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{image && (\n\t\t\t\t<img\n\t\t\t\t\tclassName={`${baseClass}__image`}\n\t\t\t\t\theight={imageHeight}\n\t\t\t\t\twidth={imageWidth}\n\t\t\t\t\tsrc={image}\n\t\t\t\t\talt=''\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t<Hx\n\t\t\t\t\tbaseClass={baseClass}\n\t\t\t\t\tclassName='pds-ts-2xl pds-fw-bold'\n\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t>\n\t\t\t\t\t{heading}\n\t\t\t\t</Hx>\n\n\t\t\t\t{message && message}\n\t\t\t</div>\n\n\t\t\t{ctaRegion && <div className={`${baseClass}__cta`}>{ctaRegion}</div>}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './file-diff.css';\n\n/**\n * Prop types for FileDiff\n */\nexport interface FileDiffProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Number of added lines (green bar).\n\t */\n\tadditions: number;\n\t/**\n\t * Number of removed lines (red bar).\n\t */\n\tdeletions: number;\n\t/**\n\t * Object with strings for tooltips and screen reader labels.\n\t */\n\tlabelStrings?: {\n\t\tlinesChanged?: string;\n\t\tadditions?: string;\n\t\tdeletions?: string;\n\t};\n\t/**\n\t * Custom width in rems for the component. This will override the default.\n\t */\n\tcomponentWidth?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * FileDiff UI component\n */\nexport const FileDiff = ({\n\tadditions = 4,\n\tdeletions = 2,\n\tlabelStrings = {\n\t\tlinesChanged: 'lines changed',\n\t\tadditions: 'additions',\n\t\tdeletions: 'deletions',\n\t},\n\tclassName,\n\tcomponentWidth,\n\t...props\n}: FileDiffProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-file-diff';\n\n\t// Determine the totalChanges\n\tconst totalChanges = additions + deletions;\n\n\t// Calculate widths relative to the maximum\n\tconst widthDeletions =\n\t\ttotalChanges > 0 ? (deletions / totalChanges) * 100 : 0;\n\tconst widthAdditions =\n\t\ttotalChanges > 0 ? (additions / totalChanges) * 100 : 0;\n\n\t// Handle componentWidth\n\tconst computedWidth =\n\t\tcomponentWidth !== null && componentWidth > 0\n\t\t\t? `${componentWidth}rem`\n\t\t\t: '100%';\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\tstyle={{ width: computedWidth }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__total-changes`}>\n\t\t\t\t<Tooltip\n\t\t\t\t\tcontent={`${totalChanges} ${labelStrings.linesChanged}`}\n\t\t\t\t\tpreferredPlacement='top'\n\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\tcustomTrigger={\n\t\t\t\t\t\t<div className={`${baseClass}__total-changes-number`}>\n\t\t\t\t\t\t\t{totalChanges}\n\t\t\t\t\t\t\t<span className='visually-hidden'>\n\t\t\t\t\t\t\t\t{` ${labelStrings.linesChanged}`}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className={`${baseClass}__bars`}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__behind`}\n\t\t\t\t\tstyle={{ width: `${widthDeletions}%` }}\n\t\t\t\t>\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tcontent={`${deletions} ${labelStrings.deletions}`}\n\t\t\t\t\t\tpreferredPlacement='top'\n\t\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\t\tcustomTrigger={\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__behind-bar`}></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t></Tooltip>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__ahead`}\n\t\t\t\t\tstyle={{ width: `${widthAdditions}%` }}\n\t\t\t\t>\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tcontent={`${additions} ${labelStrings.additions}`}\n\t\t\t\t\t\tpreferredPlacement='top'\n\t\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\t\tcustomTrigger={\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__ahead-bar`}></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t></Tooltip>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tCSSProperties,\n\tReactNode,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './flow-steps.css';\n\nexport type FlowStep = {\n\t/**\n\t * The header text of the step\n\t */\n\theader: string | ReactNode;\n\t/**\n\t * The content of the step\n\t */\n\tcontent?: string | ReactNode;\n};\n\n/**\n * Prop types for FlowSteps\n */\nexport interface FlowStepsProps extends ComponentPropsWithoutRef<'ol'> {\n\t/**\n\t * Alignment of the step content.\n\t */\n\tcontentAlignment?: 'indented' | 'left';\n\t/**\n\t * direction of the steps.\n\t */\n\tlayoutDirection?: 'vertical' | 'horizontal';\n\t/**\n\t * The list of steps to display.\n\t */\n\tsteps: FlowStep[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * FlowSteps UI component\n */\nexport const FlowSteps = ({\n\tcontentAlignment = 'indented',\n\tlayoutDirection = 'vertical',\n\tsteps,\n\tclassName,\n\t...props\n}: FlowStepsProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-flow-steps';\n\tconst contentAlignmentClass = `${baseClass}--${contentAlignment}`;\n\tconst layoutDirectionClass =\n\t\tlayoutDirection === 'horizontal' ? `${baseClass}--horizontal` : '';\n\n\t// Preprocess the steps.\n\tconst processedSteps = steps.map(({ header, content }, index) => {\n\t\tconst numberMarkup = (\n\t\t\t<div className={`${baseClass}__number`}>\n\t\t\t\t<span>{index + 1}</span>\n\t\t\t</div>\n\t\t);\n\t\tconst headerMarkup = <div className={`${baseClass}__header`}>{header}</div>;\n\t\tconst contentMarkup = content ? (\n\t\t\t<div className={`${baseClass}__content`}>{content}</div>\n\t\t) : null;\n\n\t\tconst stepClass = `${baseClass}__step`;\n\n\t\treturn (\n\t\t\t<li key={index} className={stepClass}>\n\t\t\t\t{contentAlignment === 'indented' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{numberMarkup}\n\t\t\t\t\t\t<div className={`${baseClass}__content-group`}>\n\t\t\t\t\t\t\t{headerMarkup}\n\t\t\t\t\t\t\t{contentMarkup}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t{contentAlignment === 'left' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={`${baseClass}__header-group`}>\n\t\t\t\t\t\t\t{numberMarkup}\n\t\t\t\t\t\t\t{headerMarkup}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{contentMarkup}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<ol\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcontentAlignmentClass,\n\t\t\t\tlayoutDirectionClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={\n\t\t\t\tlayoutDirection === 'horizontal'\n\t\t\t\t\t? ({ '--flow-steps-columns': steps.length } as CSSProperties)\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\t{...props}\n\t\t>\n\t\t\t{processedSteps}\n\t\t</ol>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport './footer-heading.css';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport type { HeadingLevelCommon } from '@libs/types/custom-types';\n\ninterface FooterHeadingProps {\n\t/**\n\t * Heading level\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text\n\t */\n\theadingText: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Footer Heading UI component\n */\nexport const FooterHeading = ({\n\theadingLevel = 'h3',\n\theadingText,\n\tclassName,\n\t...props\n}: FooterHeadingProps & ComponentPropsWithoutRef<HeadingLevelCommon>) => {\n\t// Preprocess heading element type.\n\tconst Hx: React.ElementType = headingLevel;\n\n\t// Render the output\n\treturn (\n\t\t<Hx\n\t\t\tclassName={mergeClasses(['pds-footer-heading', 'pds-ts-m', className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{headingText}\n\t\t</Hx>\n\t);\n};\n","import React, {\n\tComponentProps,\n\tComponentPropsWithoutRef,\n\tReactNode,\n} from 'react';\n\nimport { FooterHeading } from '../FooterHeading/FooterHeading';\n\nimport './footer-links.css';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport type { HeadingLevelCommon } from '@libs/types/custom-types';\n\ninterface FooterLinksProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Heading level\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text\n\t */\n\theadingText: string;\n\t/**\n\t * Array of links\n\t */\n\tlinkItems?: ReactNode[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Footer Links UI component\n */\nexport const FooterLinks = ({\n\theadingLevel,\n\theadingText,\n\tlinkItems,\n\tclassName,\n\t...props\n}: FooterLinksProps) => {\n\t// Set up classes.\n\n\tconst baseClass = 'pds-footer-links';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t{headingText && (\n\t\t\t\t<FooterHeading\n\t\t\t\t\theadingLevel={headingLevel}\n\t\t\t\t\tclassName={`${baseClass}__heading`}\n\t\t\t\t\theadingText={headingText}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<ul className={`${baseClass}__list`} role='list'>\n\t\t\t\t{linkItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={index} className={`${baseClass}__item`}>\n\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport './site-footer.css';\n\ninterface SiteFooterProps extends ComponentPropsWithoutRef<'footer'> {\n\t/**\n\t * PDS container width.\n\t */\n\tcontainerWidth?: ContainerWidth;\n\t/**\n\t * Footer content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Should the footer have a top border?\n\t */\n\thasTopBorder?: boolean;\n\t/**\n\t * Legal policy links.\n\t */\n\tlegalLinks?: Array<\n\t\t| 'privacy'\n\t\t| 'dataSubjectRequest'\n\t\t| 'cookiePolicy'\n\t\t| 'termsOfUse'\n\t\t| 'acceptableUse'\n\t\t| 'accessibilityStatement'\n\t>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SiteFooter UI component\n */\nexport const SiteFooter = ({\n\tcontainerWidth = 'standard',\n\tchildren,\n\thasTopBorder,\n\tlegalLinks = [\n\t\t'privacy',\n\t\t'dataSubjectRequest',\n\t\t'cookiePolicy',\n\t\t'termsOfUse',\n\t\t'acceptableUse',\n\t\t'accessibilityStatement',\n\t],\n\tclassName,\n\t...props\n}: SiteFooterProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-site-footer';\n\tconst borderClass = hasTopBorder ? `${baseClass}--border` : null;\n\tconst containerClasses =\n\t\tcontainerWidth && containerWidth !== 'standard'\n\t\t\t? `pds-container pds-container--${containerWidth}`\n\t\t\t: 'pds-container';\n\n\t// Get current year\n\tconst currentYear = new Date().getFullYear();\n\n\t// Check for legal policy links.\n\tconst privacy = legalLinks.includes('privacy');\n\tconst dataSubjectRequest = legalLinks.includes('dataSubjectRequest');\n\tconst cookiePolicy = legalLinks.includes('cookiePolicy');\n\tconst termsOfUse = legalLinks.includes('termsOfUse');\n\tconst acceptableUse = legalLinks.includes('acceptableUse');\n\tconst accessibilityStatement = legalLinks.includes('accessibilityStatement');\n\n\t// Render the output\n\treturn (\n\t\t<footer\n\t\t\tclassName={mergeClasses([baseClass, borderClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={containerClasses}>\n\t\t\t\t{children && <div className={`${baseClass}__content`}>{children}</div>}\n\t\t\t\t<div className={`${baseClass}__legal`}>\n\t\t\t\t\t<span className={`${baseClass}__copyright`}>\n\t\t\t\t\t\t© {currentYear} Pantheon Systems, Inc.\n\t\t\t\t\t</span>\n\t\t\t\t\t{privacy && <a href='https://legal.pantheon.io'>Privacy Policy</a>}\n\t\t\t\t\t{dataSubjectRequest && (\n\t\t\t\t\t\t<a href='http://pantheon.io/data-subject-request'>\n\t\t\t\t\t\t\tData Subject Request\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{cookiePolicy && (\n\t\t\t\t\t\t<a href='https://legal.pantheon.io'>Cookie Policy</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{termsOfUse && <a href='https://legal.pantheon.io'>Terms of Use</a>}\n\t\t\t\t\t{acceptableUse && (\n\t\t\t\t\t\t<a href='https://legal.pantheon.io'>Acceptable Use Policy</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{accessibilityStatement && (\n\t\t\t\t\t\t<a href='https://pantheon.io/accessibility-statement'>\n\t\t\t\t\t\t\tAccessibility Statement\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</footer>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tChangeEvent,\n\tFocusEvent,\n\tReactNode,\n\tRef,\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n} from 'react';\n\nimport {\n\tinputCommonClasses,\n\tInputMessage,\n\tRequiredIcon,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ValidationStatus } from '../input-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './checkbox.css';\n\n/**\n * Prop types for Checkbox\n */\nexport interface CheckboxProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Checked state of the input. Used to set the checked status of the input field when controlled. Cannot be used in conjunction with the `defaultChecked` prop.\n\t */\n\tchecked?: boolean;\n\t/**\n\t * Default checked state. Setting this prop automatically makes the input uncontrolled. Cannot be used with the checked prop.\n\t */\n\tdefaultChecked?: boolean;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * The ID of the checkbox.\n\t */\n\tid: string;\n\t/**\n\t * Indeterminate state\n\t */\n\tindeterminate?: boolean;\n\t/**\n\t * Additional props for the `<input>` element.\n\t */\n\tinputProps?: ComponentPropsWithoutRef<'input'>;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Input label.\n\t */\n\tlabel: string | ReactNode;\n\t/**\n\t * Input message. Used to provide supplemental text. Will be displayed below the input field.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Name attribute of the checkbox.\n\t */\n\tname?: string;\n\t/**\n\t * Indent level of the checkbox. Visual styles for creating nested checkboxes. Styles are only applied when the checkbox is an ancestor of a div with the class `pds-checkbox-group`.\n\t */\n\tnestingLevel?: 0 | 1 | 2;\n\t/**\n\t * onBlur event handler\n\t */\n\tonBlur?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * onChange event handler\n\t */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n\t/**\n\t * onFocus event handler\n\t */\n\tonFocus?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * Is the field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Size of the label and checkbox. Defaults to 'M'.\n\t */\n\tsize?: 'S' | 'M';\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Value attribute of the checkbox.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Checkbox UI component\n */\nexport const Checkbox = forwardRef(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tdisabled,\n\t\t\tid,\n\t\t\tindeterminate,\n\t\t\tinputProps,\n\t\t\tinputWidth,\n\t\t\tlabel,\n\t\t\tmessage,\n\t\t\tname,\n\t\t\tnestingLevel = 0,\n\t\t\tonBlur,\n\t\t\tonChange,\n\t\t\tonFocus,\n\t\t\trequired,\n\t\t\tshowLabel = true,\n\t\t\tsize = 'M',\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\tvalue,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: CheckboxProps,\n\t\tref: Ref<HTMLInputElement>,\n\t) => {\n\t\t// Process input width. Convert to rems.\n\t\tconst inputWidthStyle = inputWidth\n\t\t\t? { width: `${inputWidth / 16}rem` }\n\t\t\t: null;\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-checkbox';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst indentClass =\n\t\t\tnestingLevel > 0 ? `${baseClass}--indent-${nestingLevel}` : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst sizeClass = size === 'S' ? `${baseClass}--sm` : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Determine if the input is controlled.\n\t\tconst isControlled = typeof checked != 'undefined';\n\n\t\t// When a component is not controlled, it can have a defaultChecked state.\n\t\tconst hasDefaultChecked = typeof defaultChecked != 'undefined';\n\n\t\t// If the input is uncontrolled, use state within the component to manage the checked state.\n\t\tconst [isInternalChecked, setIsInternalChecked] = useState(\n\t\t\thasDefaultChecked ? defaultChecked : false,\n\t\t);\n\n\t\t// Determine if the input is checked either from props or internal state.\n\t\tconst isChecked = checked || isInternalChecked;\n\n\t\t// Handle change event.\n\t\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetIsInternalChecked(e.target.checked);\n\t\t\t}\n\n\t\t\tif (onChange) {\n\t\t\t\tonChange(e);\n\t\t\t}\n\t\t};\n\n\t\t// Classes for checkbox box.\n\t\tconst boxClass = `${baseClass}__box`;\n\t\tconst checkedClass = !indeterminate\n\t\t\t? isChecked\n\t\t\t\t? `${boxClass}--checked`\n\t\t\t\t: null\n\t\t\t: null;\n\t\tconst indeterminateClass = indeterminate\n\t\t\t? `${boxClass}--indeterminate`\n\t\t\t: null;\n\n\t\t// Icon for checkbox box.\n\t\tconst CheckboxIcon = useCallback(() => {\n\t\t\tif (indeterminate) {\n\t\t\t\treturn (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName='minus'\n\t\t\t\t\t\ticonSize='sm'\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--indeterminate`}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (isChecked) {\n\t\t\t\treturn (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName='check'\n\t\t\t\t\t\ticonSize='sm'\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--checked`}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t}, [indeterminate, isChecked]);\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={[\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tindentClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t]\n\t\t\t\t\t.join(' ')\n\t\t\t\t\t.trim()\n\t\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__input-wrapper`}>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\ttype='checkbox'\n\t\t\t\t\t\tchecked={isControlled ? checked : isInternalChecked}\n\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\tindeterminate ? 'mixed' : isChecked ? 'true' : 'false'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{...(value ? { value: value } : {})}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : null}\n\t\t\t\t\t\taria-describedby={processedMessage ? `${id}__message` : null}\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t/>\n\t\t\t\t\t<label htmlFor={id} className={`${baseClass}__label`}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\tboxClass,\n\t\t\t\t\t\t\t\tcheckedClass,\n\t\t\t\t\t\t\t\tindeterminateClass,\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CheckboxIcon />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t`${baseClass}__label-text`,\n\t\t\t\t\t\t\t\t!showLabel ? 'visually-hidden' : '',\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label} {required && !disabled && <RequiredIcon />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tvalidationMessageHasDecorators={true}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport {\n\tinputCommonClasses,\n\tInputLabel,\n\tInputMessage,\n} from '../input-utilities';\n\nimport { ValidationStatus } from '../input-types';\n\nimport '../CheckboxGroup/checkbox-group.css';\n\n/**\n * Prop types for CheckboxFieldset\n */\nexport interface CheckboxGroupWrapperProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Individual checkboxes to be rendered within the group.\n\t */\n\tchildren: React.ReactNode;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Additional props for the `<fieldset>` element.\n\t */\n\tfieldsetProps?: ComponentPropsWithoutRef<'fieldset'>;\n\t/**\n\t * The ID of the checkbox group.\n\t */\n\tid: string;\n\t/**\n\t * Width of the field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Field label. Will be rendered as the fieldset legend.\n\t */\n\tlabel: string;\n\t/**\n\t * Input message. Used to provide supplemental text. Will be displayed below the field.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Is the field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label (legend) be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CheckboxFieldset UI component\n */\nexport const CheckboxFieldset = ({\n\tchildren,\n\tdisabled = false,\n\tfieldsetProps,\n\tid,\n\tinputWidth,\n\tlabel,\n\tmessage,\n\trequired = false,\n\tshowLabel = true,\n\ttooltipText = null,\n\tvalidationMessage,\n\tvalidationStatus,\n\tclassName,\n\t...props\n}: CheckboxGroupWrapperProps) => {\n\t// Process input width. Convert to rems.\n\tconst inputWidthStyle = inputWidth\n\t\t? { width: `${inputWidth / 16}rem` }\n\t\t: null;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-checkbox-group';\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst requiredClass =\n\t\trequired && !disabled ? inputCommonClasses.required : null;\n\tconst errorClass =\n\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\tconst successClass =\n\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t// If there is a validation message, use that. Otherwise, use the message prop.\n\tconst processedMessage = validationMessage || message;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[\n\t\t\t\tbaseClass,\n\t\t\t\tdisabledClass,\n\t\t\t\trequiredClass,\n\t\t\t\terrorClass,\n\t\t\t\tsuccessClass,\n\t\t\t\tclassName ?? '',\n\t\t\t]\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t{...props}\n\t\t>\n\t\t\t<fieldset className={`${baseClass}__fieldset`} id={id} {...fieldsetProps}>\n\t\t\t\t<InputLabel\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tid={id}\n\t\t\t\t\tisLegend\n\t\t\t\t\trequired={required}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t/>\n\t\t\t\t<div className={`${baseClass}__options`}>{children}</div>\n\t\t\t</fieldset>\n\n\t\t\t{processedMessage && (\n\t\t\t\t<InputMessage\n\t\t\t\t\tid={id}\n\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\tvalidationMessageHasDecorators={true}\n\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tChangeEvent,\n\tReactNode,\n\tuseState,\n} from 'react';\n\nimport {\n\tinputCommonClasses,\n\tInputLabel,\n\tInputMessage,\n} from '../input-utilities';\n\nimport { ValidationStatus } from '../input-types';\n\nimport { Checkbox } from '@components/inputs/Checkbox/Checkbox';\n\nimport './checkbox-group.css';\n\nexport type CheckboxOption = {\n\tchecked?: boolean;\n\tdisabled?: boolean;\n\tid?: string;\n\tlabel: string;\n\tname?: string;\n\tvalue: string;\n};\n\n/**\n * Prop types for CheckboxGroup\n */\nexport interface CheckboxGroupProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Additional props for the `<fieldset>` element.\n\t */\n\tfieldsetProps?: ComponentPropsWithoutRef<'fieldset'>;\n\t/**\n\t * The ID of the checkbox group.\n\t */\n\tid: string;\n\t/**\n\t * Width of the field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Field label. Will be rendered as the fieldset legend.\n\t */\n\tlabel: string;\n\t/**\n\t * Input message. Used to provide supplemental text. Will be displayed below the field.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * onGroupBlur function. Called when all checkboxes have lost focus. Provides an array of checked values.\n\t */\n\tonGroupBlur?: (checkedOptions: string[]) => void;\n\t/**\n\t * onValueChange function. Called when the value of any checkbox changes. Provides an array of checked values.\n\t */\n\tonValueChange?: (updatedOptions: string[]) => void;\n\t/**\n\t * Array of checkbox options for group.\n\t */\n\toptions: CheckboxOption[];\n\t/**\n\t * Is the field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label (legend) be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * CheckboxGroup UI component\n */\nexport const CheckboxGroup = ({\n\tdisabled = false,\n\tfieldsetProps,\n\tid,\n\tinputWidth,\n\tlabel,\n\tmessage,\n\tonGroupBlur,\n\tonValueChange,\n\toptions,\n\trequired = false,\n\tshowLabel = true,\n\ttooltipText = null,\n\tvalidationMessage,\n\tvalidationStatus,\n\tclassName,\n\t...props\n}: CheckboxGroupProps) => {\n\t// Process input width. Convert to rems.\n\tconst inputWidthStyle = inputWidth\n\t\t? { width: `${inputWidth / 16}rem` }\n\t\t: null;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-checkbox-group';\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst requiredClass =\n\t\trequired && !disabled ? inputCommonClasses.required : null;\n\tconst errorClass =\n\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\tconst successClass =\n\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t// If there is a validation message, use that. Otherwise, use the message prop.\n\tconst processedMessage = validationMessage || message;\n\n\t// If an option.id is not provided, use the option.value.\n\toptions.map((option) => {\n\t\tif (!option.id) {\n\t\t\toption.id = option.value;\n\t\t}\n\t});\n\n\t// Get array of values that are checked initially.\n\tconst initialCheckedOptions = [];\n\toptions.map((checkbox) => {\n\t\tif (checkbox.checked === true) {\n\t\t\tinitialCheckedOptions.push(checkbox.value);\n\t\t}\n\t});\n\n\t// Set up state to track checked options.\n\tconst [checkedOptions, setCheckedOptions] = useState(initialCheckedOptions);\n\n\t// Update values when checkboxes are checked/unchecked.\n\tconst handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst { value } = e.target;\n\n\t\t// Update the checked options array.\n\t\tconst updatedOptions = checkedOptions.includes(value)\n\t\t\t? checkedOptions.filter((option) => option !== value)\n\t\t\t: [...checkedOptions, value];\n\n\t\tsetCheckedOptions(updatedOptions);\n\n\t\t// Call the onChange prop, if it exists.\n\t\tif (onValueChange) {\n\t\t\tonValueChange(updatedOptions);\n\t\t}\n\t};\n\n\t// Handle the checked state of the individual checkboxes.\n\toptions.map((option) => {\n\t\tif (checkedOptions.includes(option.value)) {\n\t\t\toption.checked = true;\n\t\t} else {\n\t\t\toption.checked = false;\n\t\t}\n\t});\n\n\t// Handle the onBlur event.\n\tconst handleGroupBlur = () => {\n\t\tif (onGroupBlur) {\n\t\t\tsetTimeout(() => {\n\t\t\t\t// If the active element is not in the options array, call the onGroupBlur function.\n\t\t\t\tif (\n\t\t\t\t\t!options.some((option) => option.id === document.activeElement.id)\n\t\t\t\t) {\n\t\t\t\t\tonGroupBlur(checkedOptions);\n\t\t\t\t}\n\t\t\t}, 1500);\n\t\t}\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[\n\t\t\t\tbaseClass,\n\t\t\t\tdisabledClass,\n\t\t\t\trequiredClass,\n\t\t\t\terrorClass,\n\t\t\t\tsuccessClass,\n\t\t\t\tclassName ?? '',\n\t\t\t]\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t{...props}\n\t\t>\n\t\t\t<fieldset className={`${baseClass}__fieldset`} id={id} {...fieldsetProps}>\n\t\t\t\t<InputLabel\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tid={id}\n\t\t\t\t\tisLegend\n\t\t\t\t\trequired={required}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t/>\n\n\t\t\t\t<div className={`${baseClass}__options`}>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\tchecked={option.checked}\n\t\t\t\t\t\t\tid={option.id}\n\t\t\t\t\t\t\tlabel={option.label}\n\t\t\t\t\t\t\tname={option.name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tdisabled={option.disabled || disabled}\n\t\t\t\t\t\t\tclassName={`${baseClass}__checkbox`}\n\t\t\t\t\t\t\tonChange={handleCheckboxChange}\n\t\t\t\t\t\t\tonBlur={handleGroupBlur}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\n\t\t\t{processedMessage && (\n\t\t\t\t<InputMessage\n\t\t\t\t\tid={id}\n\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\tvalidationMessageHasDecorators={true}\n\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, {\n\tChangeEvent,\n\tComponentPropsWithoutRef,\n\tFocusEvent,\n\tReactNode,\n\tRef,\n\tforwardRef,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tautoUpdate,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n} from '@floating-ui/react';\n\nimport {\n\tClearButton,\n\tSearchShortcut,\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n\tInputDecorator,\n\tInputLabel,\n\tInputMessage,\n\tSelectOption,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ValidationStatus } from '../input-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './combobox.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tclearButton?: string;\n\tinputInstructions?: string;\n\tsearchShortcut?: string;\n\ttriggerButton?: string;\n};\n\n// Combobox option type.\nexport type ComboboxOption = {\n\tlabel: string;\n\toptionDisplay?: ReactNode;\n\tsearchIndex?: string[];\n\tvalue: string;\n\t[otherOptions: string]: unknown;\n};\n\n/**\n * Prop types for Combobox\n */\nexport interface ComboboxProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Optional default value for the field.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Should the combobox have a clear button?\n\t */\n\thasClearButton?: boolean;\n\t/**\n\t * Should the combobox have a dropdown trigger?\n\t */\n\thasDropdownTrigger?: boolean;\n\t/**\n\t * Should the combobox have a search icon?\n\t */\n\thasSearchIcon?: boolean;\n\t/**\n\t * Should the combobox have a search shortcut?\n\t */\n\thasSearchShortcut?: boolean;\n\t/**\n\t * ID of the combobox\n\t */\n\tid: string;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Are the options in the process of being loaded?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Text to display when options are still loading.\n\t */\n\tloadingText?: string;\n\t/**\n\t * Field label.\n\t */\n\tlabel: string;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\tlabelStrings?: LabelStrings;\n\t/**\n\t * Message or description used to help clarify the usage of the input.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Text to display when there are no results.\n\t */\n\tnoResultsText?: string;\n\t/**\n\t * onChange event handler.\n\t */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n\t/**\n\t * onBlur event handler.\n\t */\n\tonBlur?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * Callback when the input is cleared.\n\t */\n\tonClear?: () => void;\n\t/**\n\t * onFocus event handler.\n\t */\n\tonFocus?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * Callback when an option is selected. Returns the selected option object.\n\t */\n\tonOptionSelect?: (option: ComboboxOption) => void;\n\t/**\n\t * Array of options to display in the dropdown.\n\t */\n\toptions?: ComboboxOption[];\n\t/**\n\t * Optional placeholder text to display when the input field is empty.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Value attribute of input\n\t */\n\tvalue?: string;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Combobox UI component\n */\nexport const Combobox = forwardRef(\n\t(\n\t\t{\n\t\t\tdefaultValue,\n\t\t\tdisabled = false,\n\t\t\thasClearButton = true,\n\t\t\thasDropdownTrigger = false,\n\t\t\thasSearchIcon = true,\n\t\t\thasSearchShortcut = false,\n\t\t\tid,\n\t\t\tinputWidth,\n\t\t\tisLoading = false,\n\t\t\tlabel,\n\t\t\tlabelStrings = {\n\t\t\t\tclearButton: 'Clear input text',\n\t\t\t\tinputInstructions: 'Type to search options',\n\t\t\t\tsearchShortcut: 'Press / to focus the search field',\n\t\t\t\ttriggerButton: 'Toggle dropdown menu',\n\t\t\t},\n\t\t\tloadingText = 'Loading results...',\n\t\t\tmessage,\n\t\t\tnoResultsText = 'No results found',\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonClear,\n\t\t\tonFocus,\n\t\t\tonOptionSelect,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\trequired = false,\n\t\t\tshowLabel = true,\n\t\t\ttooltipText = null,\n\t\t\tvalue: comboboxInputValue,\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: ComboboxProps,\n\t\tref: Ref<HTMLSpanElement>,\n\t) => {\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-combobox';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t\t// Set decorators.\n\t\tlet decorator = null;\n\t\tif (hasSearchIcon) {\n\t\t\tdecorator = 'search';\n\t\t}\n\t\tif (validationStatus === 'error') {\n\t\t\tdecorator = 'error';\n\t\t}\n\t\tif (validationStatus === 'success') {\n\t\t\tdecorator = 'success';\n\t\t}\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Determine if the input is controlled.\n\t\tconst isControlled = typeof comboboxInputValue != 'undefined';\n\n\t\t// When a component is not controlled, it can have a defaultValue.\n\t\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t\t// Function to get label from value.\n\t\tconst getLabelFromValue = (value: string) => {\n\t\t\tconst option = options.find((option) => option.value === value);\n\t\t\treturn option ? option.label : '';\n\t\t};\n\n\t\t// Set up state.\n\t\tconst [isOpen, setIsOpen] = useState(false);\n\t\tconst [activeIndex, setActiveIndex] = useState(null);\n\t\tconst [internalValue, setInternalValue] = useState(\n\t\t\thasDefaultValue ? getLabelFromValue(defaultValue) : '',\n\t\t);\n\t\tconst [filteredOptions, setFilteredOptions] = useState([]);\n\n\t\tconst inputValue = isControlled ? comboboxInputValue : internalValue;\n\n\t\t// Initiate refs.\n\t\tconst listRef = useRef([]);\n\n\t\t// FUI config\n\t\tconst { context, refs } = useFloating({\n\t\t\topen: isOpen,\n\t\t\tonOpenChange: setIsOpen,\n\t\t\twhileElementsMounted: autoUpdate,\n\t\t});\n\n\t\tconst role = useRole(context, { role: 'listbox' });\n\t\tconst dismiss = useDismiss(context);\n\t\tconst listNav = useListNavigation(context, {\n\t\t\tlistRef,\n\t\t\tactiveIndex,\n\t\t\tonNavigate: setActiveIndex,\n\t\t\tvirtual: true,\n\t\t\tloop: true,\n\t\t\tallowEscape: true,\n\t\t});\n\n\t\tconst { getReferenceProps, getFloatingProps, getItemProps } =\n\t\t\tuseInteractions([role, dismiss, listNav]);\n\n\t\t// FUI Transition styles.\n\t\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\t\tduration: {\n\t\t\t\topen: 300,\n\t\t\t\tclose: 150,\n\t\t\t},\n\t\t\tinitial: {\n\t\t\t\topacity: 0,\n\t\t\t},\n\t\t\topen: {\n\t\t\t\topacity: 1,\n\t\t\t},\n\t\t\tclose: {\n\t\t\t\topacity: 0,\n\t\t\t},\n\t\t});\n\n\t\t// Handle trigger button click.\n\t\tconst handleTriggerClick = () => {\n\t\t\tsetIsOpen(!isOpen);\n\t\t};\n\n\t\t// Handle clear input.\n\t\tconst handleClearInput = () => {\n\t\t\t!isControlled && setInternalValue('');\n\t\t\tsetActiveIndex(null);\n\t\t\tsetIsOpen(true);\n\t\t\t(refs.domReference.current as HTMLInputElement)?.focus();\n\n\t\t\tif (onClear) {\n\t\t\t\tonClear();\n\t\t\t}\n\t\t};\n\n\t\t// Handle input changes.\n\t\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n\t\t\tlet value = e.target.value;\n\n\t\t\tif (onChange) {\n\t\t\t\tonChange(e);\n\t\t\t}\n\n\t\t\tif (!isControlled) {\n\t\t\t\t// Trim whitespace from the beginning of the string.\n\t\t\t\tif (value.length > 0) {\n\t\t\t\t\tvalue = value.trimStart();\n\t\t\t\t}\n\n\t\t\t\tsetInternalValue(value);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tsetActiveIndex(null);\n\t\t\t\tsetIsOpen(true);\n\t\t\t} else {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t};\n\n\t\t// Handle input blur\n\t\tconst handleInputBlur = (e: FocusEvent<HTMLInputElement>) => {\n\t\t\tif (onBlur) {\n\t\t\t\tonBlur(e);\n\t\t\t}\n\t\t};\n\n\t\t// Handle input focus.\n\t\tconst handleInputFocus = (e: FocusEvent<HTMLInputElement>) => {\n\t\t\tif (onFocus) {\n\t\t\t\tonFocus(e);\n\t\t\t}\n\t\t};\n\n\t\t// Handle selection.\n\t\tconst handleSelection = (index: number) => {\n\t\t\tconst option = filteredOptions[index];\n\t\t\t!isControlled && setInternalValue(option.label);\n\t\t\tsetActiveIndex(null);\n\t\t\tsetIsOpen(false);\n\n\t\t\t// If onOptionSelect callback.\n\t\t\tif (onOptionSelect) {\n\t\t\t\tonOptionSelect(option);\n\t\t\t}\n\t\t};\n\n\t\t// Function to process options objects.\n\t\t// Duplicate the label as the value if no value is provided.\n\t\t// Add the label and value to the search index for each option.\n\t\tconst processOptions = (options: ComboboxOption[]) => {\n\t\t\tconst optionsProcessed = options.map((option) => {\n\t\t\t\tconst { label, optionDisplay, value, searchIndex, ...rest } = option;\n\t\t\t\tconst optionValue = value || label;\n\t\t\t\tconst optionSearchIndex = [label, value];\n\n\t\t\t\tif (searchIndex) {\n\t\t\t\t\toptionSearchIndex.push(...searchIndex);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tvalue: optionValue,\n\t\t\t\t\tsearchIndex: optionSearchIndex,\n\t\t\t\t\toptionDisplay: optionDisplay,\n\t\t\t\t\t...rest,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn optionsProcessed;\n\t\t};\n\n\t\t// Filter options based on input value.\n\t\tuseEffect(() => {\n\t\t\tconst optionsFiltered = processOptions(options).filter(\n\t\t\t\t(option: ComboboxOption) => {\n\t\t\t\t\tconst searchIndex = option.searchIndex?.map((index) =>\n\t\t\t\t\t\tindex.toLowerCase(),\n\t\t\t\t\t);\n\t\t\t\t\tconst inputValueLower = inputValue.toLowerCase();\n\n\t\t\t\t\treturn searchIndex.some((index) => index.includes(inputValueLower));\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tsetFilteredOptions(optionsFiltered);\n\t\t}, [inputValue, isLoading, options]);\n\n\t\t// Preprocess options markup.\n\t\tconst optionsMarkup = filteredOptions.map((option, index) => {\n\t\t\tconst { label, value, optionDisplay } = option;\n\n\t\t\treturn (\n\t\t\t\t<SelectOption\n\t\t\t\t\tkey={option}\n\t\t\t\t\t{...getItemProps({\n\t\t\t\t\t\tkey: value,\n\t\t\t\t\t\tref(node) {\n\t\t\t\t\t\t\tlistRef.current[index] = node;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\thandleSelection(index);\n\t\t\t\t\t\t\t(refs.domReference.current as HTMLInputElement)?.focus();\n\t\t\t\t\t\t},\n\t\t\t\t\t})}\n\t\t\t\t\ttabIndex={activeIndex === index ? 0 : -1}\n\t\t\t\t\tisActive={activeIndex === index}\n\t\t\t\t>\n\t\t\t\t\t{optionDisplay || label}\n\t\t\t\t</SelectOption>\n\t\t\t);\n\t\t});\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<InputLabel\n\t\t\t\t\tid={id}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t/>\n\n\t\t\t\t<span\n\t\t\t\t\tclassName={`${baseClass}__input-wrapper`}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tid={id}\n\t\t\t\t\taria-disabled={disabled ? true : null}\n\t\t\t\t\taria-required={required ? true : null}\n\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : null}\n\t\t\t\t\taria-describedby={processedMessage ? `${id}__message` : null}\n\t\t\t\t>\n\t\t\t\t\t{decorator && <InputDecorator variant={decorator} />}\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\t\tclassName={`${baseClass}__input`}\n\t\t\t\t\t\tid={`input-${id}`}\n\t\t\t\t\t\tautoComplete='off'\n\t\t\t\t\t\t{...getReferenceProps({\n\t\t\t\t\t\t\t'aria-autocomplete': 'list',\n\t\t\t\t\t\t\t'aria-label': labelStrings.inputInstructions,\n\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\t\tvalue: inputValue,\n\t\t\t\t\t\t\tonBlur: handleInputBlur,\n\t\t\t\t\t\t\tonChange: handleInputChange,\n\t\t\t\t\t\t\tonFocus: handleInputFocus,\n\t\t\t\t\t\t\tonKeyDown(e) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\te.key === 'Enter' &&\n\t\t\t\t\t\t\t\t\tactiveIndex != null &&\n\t\t\t\t\t\t\t\t\tfilteredOptions[activeIndex]\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\thandleSelection(activeIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{/* Clear button */}\n\t\t\t\t\t{inputValue && hasClearButton && (\n\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\tid={`input-${id}`}\n\t\t\t\t\t\t\tclearLabel={labelStrings.clearButton}\n\t\t\t\t\t\t\thandleClearInput={handleClearInput}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Search shortcut */}\n\t\t\t\t\t{hasSearchShortcut && !inputValue && (\n\t\t\t\t\t\t<SearchShortcut\n\t\t\t\t\t\t\tinputId={`input-${id}`}\n\t\t\t\t\t\t\tshortcutLabel={labelStrings.searchShortcut}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Dropdown trigger */}\n\t\t\t\t\t{hasDropdownTrigger && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\t\t\t{...getReferenceProps({\n\t\t\t\t\t\t\t\tonClick: handleTriggerClick,\n\t\t\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\t\t\ttype: 'button',\n\t\t\t\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t\t\t\t'aria-label': labelStrings.triggerButton,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__trigger-icon`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\n\t\t\t\t{isMounted && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div style={{ ...styles }}>\n\t\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__loading`}>{loadingText}</div>\n\t\t\t\t\t\t\t) : filteredOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t<ul role='group' className={`${baseClass}__options`}>{optionsMarkup}</ul>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__no-results`}>\n\t\t\t\t\t\t\t\t\t{noResultsText}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, { useState, useMemo, ComponentPropsWithoutRef } from 'react';\nimport { useCombobox, useMultipleSelection } from 'downshift';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport {\n\tinputCommonClasses,\n\tInputDecorator,\n\tInputLabel,\n\tgetInputWidthStyle,\n\tSelectOption,\n} from '../input-utilities';\n\nimport './combobox-multiselect.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tinputInstructions?: string;\n\ttriggerButton?: string;\n};\n\ninterface OptionProps {\n\tid: string;\n\tlabel: string;\n\tisAlreadySelected?: boolean;\n}\n\ntype DivProps = Omit<ComponentPropsWithoutRef<'div'>, 'onChange'>;\n\n/**\n * Prop types for ComboboxMultiselect\n */\nexport interface ComboboxMultiselectProps extends DivProps {\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID of the combobox multiselect\n\t */\n\tid: string;\n\t/**\n\t * Initially selected options\n\t */\n\tinitialSelectedItems?: OptionProps[];\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Are the options in the process of being loaded?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Text to display when options are still loading.\n\t */\n\tloadingText?: string;\n\t/**\n\t * Label for the combobox multiselect\n\t */\n\tlabel?: string;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\tlabelStrings?: LabelStrings;\n\t/**\n\t * Text to display when there are no results.\n\t */\n\tnoResultsText?: string;\n\t/**\n\t * Callback function to run when the selected items change\n\t */\n\tonChange?: (selectedItems: OptionProps[]) => void;\n\t/**\n\t * Array of all available options to select from\n\t */\n\toptions?: OptionProps[];\n\t/**\n\t * Placeholder text for the input\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\nexport const getFilteredOptions = (\n\toptions: OptionProps[],\n\tselectedItems: OptionProps[],\n\tinputValue: string,\n): OptionProps[] => {\n\tconst lowerCasedInputValue = inputValue.toLowerCase();\n\n\treturn options\n\t\t.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(lowerCasedInputValue),\n\t\t)\n\t\t.map((option) => ({\n\t\t\t...option,\n\t\t\tisAlreadySelected: selectedItems.some(\n\t\t\t\t(selectedOption) => selectedOption.id === option.id,\n\t\t\t),\n\t\t}));\n};\n\n/**\n * ComboboxMultiselect UI component\n */\nexport const ComboboxMultiselect = ({\n\tdisabled = false,\n\tid,\n\tinitialSelectedItems = [],\n\tinputWidth,\n\tisLoading = false,\n\tlabel = 'Lorem ipsum dolor sit:',\n\tlabelStrings = {\n\t\tinputInstructions: 'Type to search options',\n\t\ttriggerButton: 'Toggle dropdown menu',\n\t},\n\tloadingText = 'Loading results...',\n\tnoResultsText = 'No results found',\n\tonChange,\n\toptions,\n\tplaceholder = 'Filter',\n\trequired = false,\n\tshowLabel = true,\n\tclassName,\n\t...props\n}: ComboboxMultiselectProps) => {\n\t// Determine input width style.\n\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-combobox-multi';\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst requiredClass =\n\t\trequired && !disabled ? inputCommonClasses.required : null;\n\n\tconst [inputValue, setInputValue] = useState('');\n\tconst [selectedItems, setSelectedItems] = useState(initialSelectedItems);\n\tconst [lastMarkedItemIndex, setLastMarkedItemIndex] = useState<number | null>(\n\t\tnull,\n\t);\n\n\t// We memorize the filtered items to avoid unnecessary recalculations\n\tconst items = useMemo(\n\t\t() => getFilteredOptions(options, selectedItems, inputValue),\n\t\t[options, selectedItems, inputValue],\n\t);\n\n\tconst handleSelectedItemsChange = (newSelectedItems: OptionProps[]) => {\n\t\tsetSelectedItems(newSelectedItems);\n\t\tonChange?.(newSelectedItems);\n\t};\n\n\tconst { getSelectedItemProps, getDropdownProps, removeSelectedItem } =\n\t\tuseMultipleSelection({\n\t\t\tselectedItems,\n\t\t\tonStateChange: ({ selectedItems: newSelectedItems, type }) => {\n\t\t\t\tif (disabled) return;\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase useMultipleSelection.stateChangeTypes\n\t\t\t\t\t\t.SelectedItemKeyDownBackspace:\n\t\t\t\t\tcase useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:\n\t\t\t\t\tcase useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:\n\t\t\t\t\tcase useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:\n\t\t\t\t\t\thandleSelectedItemsChange(newSelectedItems || []);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\tconst {\n\t\tisOpen,\n\t\thighlightedIndex,\n\t\tselectedItem,\n\t\tgetToggleButtonProps,\n\t\tgetMenuProps,\n\t\tgetInputProps,\n\t\tgetItemProps,\n\t} = useCombobox({\n\t\titems,\n\t\titemToString: (item: OptionProps | null) => (item ? item.label : ''),\n\t\tselectedItem: null,\n\t\tinputValue,\n\t\tisOpen: disabled ? false : undefined,\n\t\tstateReducer: (state, { changes, type }) => {\n\t\t\tif (disabled) return state;\n\t\t\tswitch (type) {\n\t\t\t\tcase useCombobox.stateChangeTypes.InputKeyDownEnter:\n\t\t\t\tcase useCombobox.stateChangeTypes.ItemClick:\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...changes,\n\t\t\t\t\t\tisOpen: true,\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn changes;\n\t\t\t}\n\t\t},\n\t\tonStateChange: ({\n\t\t\tinputValue: newInputValue,\n\t\t\ttype,\n\t\t\tselectedItem: newSelectedItem,\n\t\t}) => {\n\t\t\tif (disabled) return;\n\t\t\tswitch (type) {\n\t\t\t\tcase useCombobox.stateChangeTypes.InputKeyDownEnter:\n\t\t\t\tcase useCombobox.stateChangeTypes.ItemClick:\n\t\t\t\tcase useCombobox.stateChangeTypes.InputBlur:\n\t\t\t\t\tif (newSelectedItem) {\n\t\t\t\t\t\tif (newSelectedItem.isAlreadySelected) {\n\t\t\t\t\t\t\thandleSelectedItemsChange(\n\t\t\t\t\t\t\t\tselectedItems.filter((item) => item.id !== newSelectedItem.id),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thandleSelectedItemsChange([...selectedItems, newSelectedItem]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetInputValue('');\n\t\t\t\t\t\tsetLastMarkedItemIndex(null);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase useCombobox.stateChangeTypes.InputChange:\n\t\t\t\t\tsetInputValue(newInputValue || '');\n\t\t\t\t\tsetLastMarkedItemIndex(null);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t});\n\n\tconst handleItemDeletion = () => {\n\t\tif (lastMarkedItemIndex === null) {\n\t\t\tsetLastMarkedItemIndex(selectedItems.length - 1);\n\t\t} else {\n\t\t\tconst newSelectedItems = [...selectedItems];\n\t\t\tnewSelectedItems.splice(lastMarkedItemIndex, 1);\n\t\t\thandleSelectedItemsChange(newSelectedItems);\n\t\t\tsetLastMarkedItemIndex(null);\n\t\t}\n\t};\n\n\tconst handleWrapperKeyDown = (event: React.KeyboardEvent) => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\t(event.key === 'Backspace' || event.key === 'Delete') &&\n\t\t\t!inputValue &&\n\t\t\tselectedItems.length > 0\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\thandleItemDeletion();\n\t\t}\n\n\t\tif (event.key === 'Enter' && lastMarkedItemIndex !== null) {\n\t\t\tevent.preventDefault();\n\t\t\thandleItemDeletion();\n\t\t}\n\n\t\tif (event.key === 'ArrowDown' && !isOpen) {\n\t\t\tevent.preventDefault();\n\t\t\tconst toggleEvent = event.nativeEvent as unknown as ToggleButtonEvent;\n\t\t\tgetToggleButtonProps().onClick?.(toggleEvent);\n\t\t}\n\t};\n\n\t// Handler to delete selected options using the backspace key\n\tconst inputProps = getInputProps({\n\t\t...getDropdownProps({\n\t\t\tpreventKeyAction: isOpen,\n\t\t}),\n\t\tdisabled,\n\t\tonKeyDown: handleWrapperKeyDown,\n\t});\n\n\t// Show counter for selected items\n\tconst selectedOptionsCounter =\n\t\tselectedItems.length === 2 ? (\n\t\t\t<span className={`${baseClass}__counter-item`}>\n\t\t\t\t{selectedItems.length - 1}\n\t\t\t</span>\n\t\t) : selectedItems.length === 3 ? (\n\t\t\t<>\n\t\t\t\t<span className={`${baseClass}__counter-layer`}></span>\n\t\t\t\t<span className={`${baseClass}__counter-item`}>\n\t\t\t\t\t{selectedItems.length - 1}\n\t\t\t\t</span>\n\t\t\t</>\n\t\t) : selectedItems.length > 3 ? (\n\t\t\t<>\n\t\t\t\t<span className={`${baseClass}__counter-layer`}></span>\n\t\t\t\t<span className={`${baseClass}__counter-layer`}></span>\n\t\t\t\t<span className={`${baseClass}__counter-item`}>\n\t\t\t\t\t{selectedItems.length - 1}\n\t\t\t\t</span>\n\t\t\t</>\n\t\t) : (\n\t\t\t''\n\t\t);\n\n\ttype ToggleButtonProps = ReturnType<typeof getToggleButtonProps>;\n\ttype ToggleButtonEvent = Parameters<\n\t\tNonNullable<ToggleButtonProps['onClick']>\n\t>[0];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tinputCommonClasses.base,\n\t\t\t\tbaseClass,\n\t\t\t\tdisabledClass,\n\t\t\t\trequiredClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t{...props}\n\t\t>\n\t\t\t<InputLabel\n\t\t\t\tid={id}\n\t\t\t\tlabel={label}\n\t\t\t\tshowLabel={showLabel}\n\t\t\t\trequired={required}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\taria-disabled={disabled ? true : null}\n\t\t\t\taria-required={required ? true : null}\n\t\t\t\tclassName={`${baseClass}__input-wrapper`}\n\t\t\t\ttabIndex={0}\n\t\t\t\tonKeyDown={handleWrapperKeyDown}\n\t\t\t>\n\t\t\t\t{selectedItems.length > 1 && (\n\t\t\t\t\t<div className={`${baseClass}__counter`}>\n\t\t\t\t\t\t<span className={`${baseClass}__counter-wrapper`}>\n\t\t\t\t\t\t\t{selectedOptionsCounter}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Selected items */}\n\t\t\t\t{selectedItems.length > 0 && (\n\t\t\t\t\t<div className={`${baseClass}__items-wrapper`}>\n\t\t\t\t\t\t{selectedItems.map((selectedItemForRender, index) => (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={`\n ${baseClass}__selected-item\n ${index === lastMarkedItemIndex ? `${baseClass}__selected-item--marked-for-deletion` : ''}\n `}\n\t\t\t\t\t\t\t\tkey={`selected-item-${index}`}\n\t\t\t\t\t\t\t\t{...getSelectedItemProps({\n\t\t\t\t\t\t\t\t\tselectedItem: selectedItemForRender,\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className={`${baseClass}__selected-item-text`}>\n\t\t\t\t\t\t\t\t\t{selectedItemForRender.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__selected-item-remove`}\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\tremoveSelectedItem(selectedItemForRender);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon iconName='xmark' />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Dropdown trigger */}\n\t\t\t\t<button\n\t\t\t\t\taria-label={labelStrings.triggerButton}\n\t\t\t\t\tclassName={`${baseClass}__trigger ${disabledClass}`}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\ttype='button'\n\t\t\t\t\t{...getToggleButtonProps()}\n\t\t\t\t>\n\t\t\t\t\t<Icon iconName='angleDown' className={`${baseClass}__trigger-icon`} />\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={`${baseClass}__dropdown ${!isOpen ? 'visually-hidden' : ''}`}\n\t\t\t\t{...getDropdownProps()}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__dropdown-input-wrapper`}>\n\t\t\t\t\t<InputDecorator variant='search' />\n\t\t\t\t\t<input\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tclassName={`${baseClass}__dropdown-input`}\n\t\t\t\t\t\taria-label={labelStrings.inputInstructions}\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<div className={`${baseClass}__loading`}>{loadingText}</div>\n\t\t\t\t) : items.length > 0 ? (\n\t\t\t\t\t<ul className={`${baseClass}__dropdown-list`} {...getMenuProps()}>\n\t\t\t\t\t\t{items.map((item, index) => (\n\t\t\t\t\t\t\t<SelectOption\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__dropdown-item \n ${highlightedIndex === index ? `${baseClass}__dropdown-item--highlighted` : ''} \n ${selectedItem === item ? `${baseClass}__dropdown-item--selected` : ''}\n ${item.isAlreadySelected ? `${baseClass}__dropdown-item--active` : ''}`}\n\t\t\t\t\t\t\t\tkey={`${item.id}-${index}`}\n\t\t\t\t\t\t\t\t{...getItemProps({ item, index })}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className={`${baseClass}__dropdown-item-label`}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t{item.isAlreadySelected && (\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticonName='check'\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__dropdown-item-icon`}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</SelectOption>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={`${baseClass}__no-results`}>{noResultsText}</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, {\n\tChangeEvent,\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tReactNode,\n\tRef,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\nimport { isSafari } from 'react-device-detect';\n\nimport {\n\tClearButton,\n\tInputDecorator,\n\tInputLabel,\n\tInputMessage,\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport { ValidationStatus } from '../input-types';\n\nimport './file-upload.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tchooseFile: string;\n\tclearButton: string;\n};\n\n// FileChangeEvent type.\ninterface FileChangeEvent extends ChangeEvent<HTMLInputElement> {\n\ttarget: HTMLInputElement & EventTarget & { files: FileList };\n}\n\n/**\n * Prop types for FileUpload\n */\nexport interface FileUploadProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * File types the input should accept. Leave null for all file types.\n\t */\n\taccept?: string;\n\t/**\n\t * Default value for the input field as a string that represents the path to a file.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Label to be rendered above the input field. Describes the fields purpose. Optional.\n\t */\n\tfieldLabel?: string;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Additional props for the `<input>` element.\n\t */\n\tinputProps?: ComponentPropsWithoutRef<'input'>;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\tlabelStrings?: LabelStrings;\n\t/**\n\t * Message or description used to help clarify the usage of the input.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Should the input accept multiple files?\n\t */\n\tmultiple?: boolean;\n\t/**\n\t * Callback function that will run when the clear button is clicked.\n\t */\n\tonClear?: () => void;\n\t/**\n\t * Callback function that will run when the file input changes.\n\t */\n\tonFileChange?: (files: FileList) => void;\n\t/**\n\t * Is the field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the full path of the file be displayed for the default value?\n\t */\n\tshowFullPath?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * FileUpload UI component\n */\nexport const FileUpload = forwardRef(\n\t(\n\t\t{\n\t\t\taccept,\n\t\t\tdefaultValue,\n\t\t\tdisabled = false,\n\t\t\tfieldLabel,\n\t\t\tid,\n\t\t\tinputProps,\n\t\t\tinputWidth,\n\t\t\tlabelStrings = {\n\t\t\t\tchooseFile: 'Choose file',\n\t\t\t\tclearButton: 'Clear selected file',\n\t\t\t},\n\t\t\tmessage,\n\t\t\tmultiple = false,\n\t\t\tonClear,\n\t\t\tonFileChange,\n\t\t\trequired = false,\n\t\t\tshowFullPath,\n\t\t\tshowLabel = true,\n\t\t\ttooltipText = null,\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: FileUploadProps,\n\t\tref: Ref<HTMLInputElement>,\n\t) => {\n\t\t// Set up state.\n\t\tconst [hasValue, setHasValue] = useState(false);\n\t\tconst [hasSafariDefault, setHasSafariDefault] = useState(\n\t\t\tisSafari && defaultValue ? true : false,\n\t\t);\n\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-file-upload';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\t\tconst safariClass = hasSafariDefault\n\t\t\t? `${baseClass}--safari-default`\n\t\t\t: null;\n\n\t\t// Set decorators.\n\t\tlet decorator = null;\n\t\tif (validationStatus === 'error') {\n\t\t\tdecorator = 'error';\n\t\t}\n\t\tif (validationStatus === 'success') {\n\t\t\tdecorator = 'success';\n\t\t}\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Define default file values.\n\t\tconst defaultFileContent = defaultValue ? [defaultValue] : null;\n\t\tconst defaultFileName = defaultValue ? defaultValue.split('/').pop() : null;\n\t\tconst defaultFilePath = showFullPath ? defaultValue : defaultFileName;\n\t\tconst defaultFile = defaultValue\n\t\t\t? new File(defaultFileContent, defaultFilePath)\n\t\t\t: null;\n\n\t\t// Provide default value if it exists.\n\t\tuseEffect(() => {\n\t\t\tconst dataTransfer = new DataTransfer();\n\n\t\t\tif (defaultFile) {\n\t\t\t\tdataTransfer.items.add(defaultFile);\n\t\t\t}\n\n\t\t\tif (dataTransfer.files.length > 0) {\n\t\t\t\t// Set the input value to the default file.\n\t\t\t\tconst inputElement = document.getElementById(\n\t\t\t\t\t`${id}--input`,\n\t\t\t\t) as HTMLInputElement;\n\t\t\t\tinputElement.files = dataTransfer.files;\n\n\t\t\t\t// Workaround for Safari to show the default file name.\n\t\t\t\tif (isSafari) {\n\t\t\t\t\tinputElement.dataset.file = `${defaultFilePath}`;\n\t\t\t\t}\n\n\t\t\t\t// Set hasValue state.\n\t\t\t\tsetHasValue(true);\n\t\t\t}\n\t\t}, [defaultValue, showFullPath]);\n\n\t\t// Function to restore the default file, as needed.\n\t\tconst restoreDefaultFile = () => {\n\t\t\tconst inputElement = document.getElementById(\n\t\t\t\t`${id}--input`,\n\t\t\t) as HTMLInputElement;\n\t\t\tif (!inputElement || !defaultValue) return;\n\n\t\t\tconst dataTransfer = new DataTransfer();\n\n\t\t\t// Add the default file to the input\n\t\t\tdataTransfer.items.add(defaultFile);\n\t\t\tinputElement.files = dataTransfer.files;\n\n\t\t\t// Update the state\n\t\t\tsetHasValue(true);\n\t\t};\n\n\t\t// Handle change function.\n\t\tconst handleChange = (e: FileChangeEvent) => {\n\t\t\t// If the user cancels the selection, restore the default value.\n\t\t\t// This is only necessary for non-Safari browsers,\n\t\t\t// as Safari does not clear the value when the user cancels the selection.\n\t\t\tif (e.target.files.length === 0) {\n\t\t\t\tif (defaultValue) {\n\t\t\t\t\trestoreDefaultFile();\n\t\t\t\t} else {\n\t\t\t\t\tsetHasValue(false);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a Safari user changes the file away from the default file,\n\t\t\t// set hasSafariDefault to false.\n\t\t\tif (isSafari && defaultValue) {\n\t\t\t\tif (defaultValue === e.target.value) {\n\t\t\t\t\tsetHasSafariDefault(true);\n\t\t\t\t} else {\n\t\t\t\t\tsetHasSafariDefault(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Run onFileChange function if it exists.\n\t\t\tif (onFileChange) {\n\t\t\t\tonFileChange(e.target.files);\n\t\t\t}\n\n\t\t\tsetHasValue(true);\n\t\t};\n\n\t\t// Handle reset function.\n\t\tconst handleClearValue = () => {\n\t\t\t// Get the input element.\n\t\t\tconst inputElement = document.getElementById(\n\t\t\t\t`${id}--input`,\n\t\t\t) as HTMLInputElement;\n\n\t\t\t// Clear the input value.\n\t\t\tinputElement.value = '';\n\n\t\t\t// Reset state for Safari users.\n\t\t\tif (isSafari) {\n\t\t\t\tsetHasSafariDefault(false);\n\t\t\t}\n\n\t\t\t// Run onClear function if it exists.\n\t\t\tif (onClear) {\n\t\t\t\tonClear();\n\t\t\t}\n\n\t\t\t// Update the state.\n\t\t\tsetHasValue(false);\n\n\t\t\t// Set focus to the input field.\n\t\t\tinputElement.focus();\n\t\t};\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsafariClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<InputLabel\n\t\t\t\t\tid={id}\n\t\t\t\t\tisPseudoLabel={true}\n\t\t\t\t\tlabel={fieldLabel}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t/>\n\n\t\t\t\t<span className={`${baseClass}__input-wrapper`} id={id}>\n\t\t\t\t\t{decorator && <InputDecorator variant={decorator} />}\n\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${id}--input`}\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\thasValue ? 'visually-hidden' : `${baseClass}__input-label`\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon iconName='paperclip' iconSize='sm' />\n\t\t\t\t\t\t{labelStrings.chooseFile}\n\t\t\t\t\t</label>\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tclassName={mergeClasses([`${baseClass}__input`])}\n\t\t\t\t\t\ttype='file'\n\t\t\t\t\t\tid={`${id}--input`}\n\t\t\t\t\t\taccept={accept ? accept : null}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : null}\n\t\t\t\t\t\taria-describedby={processedMessage ? `${id}__message` : null}\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{hasValue && (\n\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tclearLabel={labelStrings.clearButton}\n\t\t\t\t\t\t\thandleClearInput={handleClearValue}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\nimport { InputMessage } from '@components/inputs/input-utilities';\n\nimport './input-group.css';\n\n/**\n * Prop types for InputGroup\n */\nexport interface InputGroupProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Input and button elements\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * InputGroup UI component\n */\nexport const InputGroup = ({\n\tchildren,\n\tclassName,\n\t...props\n}: InputGroupProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-input-group';\n\n\t// Only render the first two children of the input group.\n\tconst childrenToRender = [children[0], children[1]];\n\n\t// If the input has a message, extract data from the component to recreate the message below the input group.\n\tconst inputId = children[0].props.id ?? null;\n\tconst inputMessage = children[0].props.message ?? null;\n\tconst inputValidationMessage = children[0].props.validationMessage ?? null;\n\tconst inputValidationStatus = children[0].props.validationStatus ?? null;\n\n\t// If there is a validation message, use that. Otherwise, use the message prop.\n\tconst processedMessage = inputValidationMessage || inputMessage;\n\n\t// If the input has a message, append a class to the component.\n\t// We can use this to hide the original message to prevent duplication.\n\tconst hasMessageClass = processedMessage ? `${baseClass}--has-message` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, hasMessageClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__inner`}>{childrenToRender}</div>\n\t\t\t{processedMessage && (\n\t\t\t\t<InputMessage\n\t\t\t\t\tforInputGroup\n\t\t\t\t\tid={inputId}\n\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\thasValidationMessage={inputValidationMessage ? true : false}\n\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\tvalidationStatus={inputValidationStatus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, {\n\tChangeEvent,\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseState,\n} from 'react';\n\nimport {\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n\tInputLabel,\n\tInputMessage,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\nimport { ValidationStatus } from '../input-types';\n\nimport './radio-group.css';\nexport interface RadioOption {\n\t/**\n\t * Option is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Unique ID for the option\n\t * @default ''\n\t */\n\tid?: string;\n\t/**\n\t * Option label\n\t */\n\tlabel: string | ReactNode;\n\t/**\n\t * Option value\n\t */\n\tvalue: string;\n}\n\nexport interface RadioGroupProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Optional default value\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Additional props for the `<fieldset>` element.\n\t */\n\tfieldsetProps?: ComponentPropsWithoutRef<'fieldset'>;\n\t/**\n\t * is the radio group disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Unique ID for the radio group\n\t */\n\tid: string;\n\t/**\n\t * Input width in rem\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Label for the radio group\n\t */\n\tlabel: string;\n\t/**\n\t * Input message\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t */\n\tonBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;\n\t/**\n\t * onChange event handler. Controlled inputs should use this to manage the input value. Uncontrolled inputs will manage their own state, but may still use this to access the event object.\n\t */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t */\n\tonValueChange?: (value: string) => void;\n\t/**\n\t * Array of radio options\n\t */\n\toptions: RadioOption[];\n\t/**\n\t * Is the radio group required\n\t * @default false\n\t */\n\trequired?: boolean;\n\t/**\n\t * Show the label\n\t * @default true\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Validation message\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Value of the radio group. Used to set the value of the field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n/**\n * RadioGroup UI component\n */\nexport const RadioGroup = ({\n\tdefaultValue,\n\tdisabled = false,\n\tfieldsetProps,\n\tid,\n\tinputWidth,\n\tlabel,\n\tmessage,\n\tonBlur,\n\tonChange,\n\tonValueChange,\n\toptions,\n\trequired = false,\n\tshowLabel = true,\n\ttooltipText = null,\n\tvalidationMessage,\n\tvalidationStatus,\n\tvalue,\n\tclassName,\n\t...props\n}: RadioGroupProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-radio-group';\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst requiredClass =\n\t\trequired && !disabled ? inputCommonClasses.required : null;\n\tconst errorClass =\n\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\tconst successClass =\n\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t// Determine if the input is controlled.\n\tconst isControlled = typeof value != 'undefined';\n\n\t// When a component is not controlled, it can have a defaultValue.\n\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t// If the input is uncontrolled, use state within the component to manage the value.\n\tconst [internalValue, setInternalValue] = useState(\n\t\thasDefaultValue ? defaultValue : '',\n\t);\n\n\t// If there is a validation message, use that. Otherwise, use the message prop.\n\tconst processedMessage = validationMessage || message;\n\n\t// Function to handle selection.\n\tconst handleSelection = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(e.target.value);\n\t\t}\n\n\t\tif (onChange) {\n\t\t\tonChange(e);\n\t\t}\n\n\t\tif (onValueChange) {\n\t\t\tonValueChange(e.target.value);\n\t\t}\n\t};\n\n\tconst handleOnBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n\t\tonBlur && onBlur(e);\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tdisabledClass,\n\t\t\t\trequiredClass,\n\t\t\t\terrorClass,\n\t\t\t\tsuccessClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tstyle={getInputWidthStyle(inputWidth)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{/* Input label */}\n\t\t\t<fieldset className={`${baseClass}__fieldset`} id={id} {...fieldsetProps}>\n\t\t\t\t<InputLabel\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tid={id}\n\t\t\t\t\tisLegend\n\t\t\t\t\trequired={required}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t/>\n\t\t\t\t<div className={`${baseClass}__options`}>\n\t\t\t\t\t{options.map((radio, idx) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__option`}\n\t\t\t\t\t\t\t\tkey={`${id}-option-${idx}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype='radio'\n\t\t\t\t\t\t\t\t\tid={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\tname={id}\n\t\t\t\t\t\t\t\t\tvalue={radio.value}\n\t\t\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\t\t\tdisabled={disabled || radio.disabled}\n\t\t\t\t\t\t\t\t\tonBlur={handleOnBlur}\n\t\t\t\t\t\t\t\t\tonChange={handleSelection}\n\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\tisControlled\n\t\t\t\t\t\t\t\t\t\t\t? value === radio.value\n\t\t\t\t\t\t\t\t\t\t\t: internalValue === radio.value\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<label htmlFor={radio.id ? radio.id : `${id}-option-${idx}`}>\n\t\t\t\t\t\t\t\t\t{radio.label}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t\t{/* Input message */}\n\t\t\t{processedMessage && (\n\t\t\t\t<InputMessage\n\t\t\t\t\tid={id}\n\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\thasValidationMessage={!!validationMessage}\n\t\t\t\t\tvalidationMessageHasDecorators\n\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, {\n\tChangeEvent,\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tforwardRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n\tInputLabel,\n\tHiddenLabel,\n\tInputMessage,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './switch.css';\n\ntype SwitchPlacement = 'right' | 'below';\n\n/**\n * Prop types for Switch\n */\nexport interface SwitchProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Is the field checked?\n\t */\n\tchecked?: boolean;\n\t/**\n\t * Initial value for the input field. Only valid if the input is uncontrolled. Cannot be used in conjunction with the `checked` prop.\n\t */\n\tdefaultChecked?: boolean;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Additional props for the `<input>` element.\n\t */\n\tinputProps?: ComponentPropsWithoutRef<'input'>;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Label of the switch field.\n\t */\n\tlabel: string;\n\t/**\n\t * Message or description used to help clarify the usage of the input.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * Status text for when switch is off.\n\t */\n\toffLabel?: string;\n\t/**\n\t * onChange event handler. Controlled inputs should use this to manage the input value. Uncontrolled inputs will manage their own state, but may still use this to access the event object.\n\t */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n\t/**\n\t * Status text for when switch is on.\n\t */\n\tonLabel?: string;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Show toggle status label next to switch. If false, icons will render and the text will still be available to screen readers.\n\t */\n\tshowStatusLabel?: boolean;\n\t/**\n\t * Determines switch placement, default set to `right`.\n\t */\n\tswitchPlacement?: SwitchPlacement;\n\t/**\n\t * Additional class names for input.\n\t */\n\tclassName?: string;\n}\n\nconst ToggleLabel = ({ toggleStatusLabel, id }) => {\n\treturn (\n\t\t<>\n\t\t\t<HiddenLabel label={toggleStatusLabel} />\n\t\t\t<label\n\t\t\t\thtmlFor={id}\n\t\t\t\tclassName='pds-switch__toggle-label'\n\t\t\t\taria-hidden='true'\n\t\t\t>\n\t\t\t\t{toggleStatusLabel}\n\t\t\t</label>\n\t\t</>\n\t);\n};\n\nconst IconContent = ({ toggleStatusLabel }) => (\n\t<>\n\t\t<HiddenLabel label={toggleStatusLabel} />\n\t\t<span\n\t\t\tclassName='pds-switch__input-decor'\n\t\t\tdata-switch-input-state='on'\n\t\t\taria-hidden='true'\n\t\t>\n\t\t\t<Icon iconName='check' iconSize='sm' />\n\t\t</span>\n\t\t<span\n\t\t\tclassName='pds-switch__input-decor'\n\t\t\tdata-switch-input-state='off'\n\t\t\taria-hidden='true'\n\t\t>\n\t\t\t<Icon iconName='xmark' iconSize='sm' />\n\t\t</span>\n\t</>\n);\n\nexport const Switch = forwardRef(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tdisabled = false,\n\t\t\tid,\n\t\t\tinputProps,\n\t\t\tinputWidth,\n\t\t\tlabel,\n\t\t\tswitchPlacement = 'right',\n\t\t\tmessage,\n\t\t\toffLabel = 'Off',\n\t\t\tonChange,\n\t\t\tonLabel = 'On',\n\t\t\trequired = false,\n\t\t\tshowLabel = true,\n\t\t\tshowStatusLabel = true,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: SwitchProps,\n\t\tref: React.Ref<HTMLInputElement>,\n\t) => {\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-switch';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\n\t\t// Determine if the input is controlled.\n\t\tconst isControlled = typeof checked != 'undefined';\n\n\t\t// Determines label location state.\n\t\tconst switchLabelBelow = switchPlacement == 'below';\n\t\tconst switchLabelRight = switchPlacement == 'right';\n\n\t\t// Use default value if provided and is not controlled else default to false.\n\t\tconst defaultValue =\n\t\t\t!isControlled && defaultChecked ? defaultChecked : false;\n\n\t\t// Uncontrolled state.\n\t\tconst [isChecked, setIsChecked] = useState(defaultValue);\n\n\t\tconst toggleStatusLabel = checked || isChecked ? onLabel : offLabel;\n\n\t\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetIsChecked(e.target.checked);\n\t\t\t}\n\n\t\t\tif (onChange) {\n\t\t\t\tonChange(e);\n\t\t\t}\n\t\t};\n\n\t\tconst switchContent = (\n\t\t\t<div className='pds-switch__content'>\n\t\t\t\t<label className='pds-switch__input'>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tname={id}\n\t\t\t\t\t\ttype='checkbox'\n\t\t\t\t\t\trole='switch'\n\t\t\t\t\t\tclassName='visually-hidden'\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tchecked={checked !== undefined ? checked : isChecked}\n\t\t\t\t\t\taria-describedby={message ? `${id}__message` : null}\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t/>\n\t\t\t\t\t{!showStatusLabel && (\n\t\t\t\t\t\t<IconContent toggleStatusLabel={toggleStatusLabel} />\n\t\t\t\t\t)}\n\t\t\t\t\t<span className='pds-switch__thumb' aria-hidden='true' />\n\t\t\t\t</label>\n\n\t\t\t\t{showStatusLabel && (\n\t\t\t\t\t<ToggleLabel toggleStatusLabel={toggleStatusLabel} id={id} />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\n\t\tconst LabelContainer = (\n\t\t\t<InputLabel\n\t\t\t\tid={id}\n\t\t\t\tlabel={label}\n\t\t\t\tshowLabel={showLabel}\n\t\t\t\trequired={required}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t'pds-input-label--disable-click',\n\t\t\t\t\t!message ? 'pds-input-label--switch-top-message' : '',\n\t\t\t\t])}\n\t\t\t/>\n\t\t);\n\n\t\tconst MessageContainer = message && (\n\t\t\t<InputMessage\n\t\t\t\tid={id}\n\t\t\t\tmessage={message}\n\t\t\t\thasValidationMessage={false}\n\t\t\t\tvalidationStatus={undefined}\n\t\t\t\tclassName='pds-input-message--switch'\n\t\t\t/>\n\t\t);\n\n\t\tlet content: ReactElement;\n\t\tlet switchPlacementModifierClass: string;\n\n\t\tif (switchLabelBelow) {\n\t\t\tcontent = (\n\t\t\t\t<>\n\t\t\t\t\t{LabelContainer}\n\t\t\t\t\t{MessageContainer}\n\t\t\t\t\t{switchContent}\n\t\t\t\t</>\n\t\t\t);\n\t\t} else if (switchLabelRight) {\n\t\t\tswitchPlacementModifierClass = 'pds-switch--placement-right';\n\t\t\tcontent = message ? (\n\t\t\t\t<>\n\t\t\t\t\t{LabelContainer}\n\t\t\t\t\t<div className='pds-switch__toggle-message-container'>\n\t\t\t\t\t\t{MessageContainer}\n\t\t\t\t\t\t<div>{switchContent}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t'pds-switch__label-switch-right',\n\t\t\t\t\t\t'pds-switch__label-switch-right--label-only',\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t{LabelContainer}\n\t\t\t\t\t{switchContent}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\tswitchPlacementModifierClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, {\n\tChangeEvent,\n\tComponentPropsWithoutRef,\n\tFocusEvent,\n\tforwardRef,\n\tReactNode,\n\tRef,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ValidationStatus } from '../input-types';\n\nimport {\n\tinputCommonClasses,\n\tCharacterCounter,\n\tInputLabel,\n\tInputMessage,\n\tgetInputWidthStyle,\n} from '../input-utilities';\n\nimport './textarea.css';\n\nexport type TranslationStringProps = {\n\tclearButton: string;\n\tcounterOverLimit?: string;\n\tsearchShortcut: string;\n\tvisibilityStatus: string;\n\tvisibilityToggleHide: string;\n\tvisibilityToggleShow: string;\n};\n\nexport interface TextareaProps {\n\t/**\n\t * Maximum character count for the character counter. Leave blank for no counter.\n\t */\n\tcounterMaxLength?: number;\n\t/**\n\t * Initial value for the input field. Setting this prop automatically makes the input uncontrolled. Cannot be used in conjunction with the `value` prop.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID of the textarea.\n\t */\n\tid: string;\n\t/**\n\t * Should the textarea be resizable by the user?\n\t */\n\tisResizable?: boolean;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Text label associated with the input field.\n\t */\n\tlabel: string;\n\t/**\n\t * Message or description used to help clarify the usage of the input.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * onBlur event handler.\n\t */\n\tonBlur?: (e: FocusEvent<HTMLTextAreaElement>) => void;\n\t/**\n\t * Function to help lift the state and retrieve the input's value.\n\t * Should accept one argument, the input's value\n\t */\n\tonChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n\t/**\n\t * onFocus event handler.\n\t */\n\tonFocus?: (e: FocusEvent<HTMLTextAreaElement>) => void;\n\t/**\n\t * Optional placeholder text to display when the input field is empty.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Is the field read-only?\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Is the field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Rows value to be given to the textarea type.\n\t */\n\trows?: number;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Additional props for the `<textarea>` element.\n\t */\n\ttextareaProps?: ComponentPropsWithoutRef<'textarea'>;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\ttranslationStrings?: TranslationStringProps;\n\t/**\n\t * Validation message for the textarea field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the textarea field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Value of the textarea field. Used to set the value of the textarea field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Textarea UI component\n */\nexport const Textarea = forwardRef(\n\t(\n\t\t{\n\t\t\tcounterMaxLength,\n\t\t\tdefaultValue,\n\t\t\tdisabled = false,\n\t\t\tid,\n\t\t\tinputWidth,\n\t\t\tisResizable = true,\n\t\t\tlabel,\n\t\t\tmessage,\n\t\t\tonBlur,\n\t\t\tonChange,\n\t\t\tonFocus,\n\t\t\tplaceholder,\n\t\t\treadonly = false,\n\t\t\trequired = false,\n\t\t\trows = 5,\n\t\t\tshowLabel,\n\t\t\ttextareaProps,\n\t\t\ttooltipText = null,\n\t\t\ttranslationStrings = {\n\t\t\t\tclearButton: 'Clear input text',\n\t\t\t\tcounterOverLimit: 'Character limit exceeded by',\n\t\t\t\tsearchShortcut: 'Press / to focus the search field',\n\t\t\t\tvisibilityStatus: 'The value of the input is',\n\t\t\t\tvisibilityToggleHide: 'Hide input value',\n\t\t\t\tvisibilityToggleShow: 'Show input value',\n\t\t\t},\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\tvalue,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: TextareaProps,\n\t\tref: Ref<HTMLTextAreaElement>,\n\t) => {\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-textarea';\n\t\tconst resizableClass = isResizable ? 'pds-is-resizable' : null;\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\t\tconst readonlyClass = readonly ? inputCommonClasses.readonly : null;\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Determine if the textarea is controlled.\n\t\tconst isControlled =\n\t\t\tvalue !== undefined && value !== null && onChange !== undefined;\n\n\t\t// When a component is not controlled, it can have a defaultValue.\n\t\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t\t// If the textarea is uncontrolled, use state within the component to manage the value.\n\t\tconst [internalValue, setInternalValue] = useState(\n\t\t\thasDefaultValue ? defaultValue : '',\n\t\t);\n\n\t\t// Determine if the textarea has a value either from props or internal state.\n\t\tconst hasValue = value || internalValue;\n\n\t\t// Handle change event.\n\t\tconst handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(e.target.value);\n\t\t\t}\n\n\t\t\tif (onChange) {\n\t\t\t\tonChange(e);\n\t\t\t}\n\t\t};\n\n\t\t// Handle blur event.\n\t\tconst handleBlur = (e: FocusEvent<HTMLTextAreaElement>) => {\n\t\t\tif (onBlur) {\n\t\t\t\tonBlur(e);\n\t\t\t}\n\t\t};\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\treadonlyClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__inputlabel-wrapper`}>\n\t\t\t\t\t<InputLabel\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={`${baseClass}__inputlabel`}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{/* Character counter */}\n\t\t\t\t\t{counterMaxLength && (\n\t\t\t\t\t\t<CharacterCounter\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tcurrentLength={hasValue.length}\n\t\t\t\t\t\t\tmaxLength={counterMaxLength}\n\t\t\t\t\t\t\toverLimitMessage={translationStrings.counterOverLimit}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t<div className={`${baseClass}__input-wrapper`}>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tclassName={mergeClasses([`${baseClass}--textarea`, resizableClass])}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tname={id}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\treadOnly={readonly}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tvalue={isControlled ? value : internalValue}\n\t\t\t\t\t\trows={rows}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : false}\n\t\t\t\t\t\taria-describedby={processedMessage ? `${id}__message` : null}\n\t\t\t\t\t\t{...textareaProps}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tvalidationMessageHasDecorators={true}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, {\n\tComponentPropsWithoutRef,\n\tChangeEvent,\n\tFocusEvent,\n\tReactNode,\n\tRef,\n\tforwardRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tinputCommonClasses,\n\tCharacterCounter,\n\tClearButton,\n\tInputDecorator,\n\tInputLabel,\n\tInputMessage,\n\tSearchShortcut,\n\tgetInputWidthStyle,\n\tstripUrlProtocol,\n} from '../input-utilities';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ValidationStatus } from '../input-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './text-input.css';\n\ntype TranslationStringProps = {\n\tclearButton: string;\n\tcounterOverLimit?: string;\n\tsearchShortcut: string;\n\tvisibilityStatus: string;\n\tvisibilityToggleHide: string;\n\tvisibilityToggleShow: string;\n};\n\ntype HtmlInputTypes =\n\t| 'text'\n\t| 'number'\n\t| 'email'\n\t| 'password'\n\t| 'tel'\n\t| 'url'\n\t| 'search';\n\n/**\n * Prop types for TextInput\n */\nexport interface TextInputProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Auto complete attribute for the input field. The attribute value is either the keyword `off` or `on`, or an ordered list of space-separated tokens. Password fields are automatically off.\n\t */\n\tautoComplete?: string;\n\t/**\n\t * Maximum character count for the character counter. Leave blank for no counter. Not valid for type `password`.\n\t */\n\tcounterMaxLength?: number;\n\t/**\n\t * Initial value for the input field. Setting this prop automatically makes the input uncontrolled. Cannot be used in conjunction with the `value` prop.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Does the input contain a clear button?\n\t */\n\thasClearButton?: boolean;\n\t/**\n\t * Does the input contain the search shortcut?\n\t * Only valid if the input type is `search`.\n\t */\n\thasSearchShortcut?: boolean;\n\t/**\n\t * Show a fixed \"https://\" prefix for URL inputs. Only valid if the input type is \"url\".\n\t */\n\thasUrlPrefix?: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Additional props for the `<input>` element.\n\t */\n\tinputProps?: ComponentPropsWithoutRef<'input'>;\n\t/**\n\t * Width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Input label.\n\t */\n\tlabel: string;\n\t/**\n\t * Input message. Used to provide supplemental text. Will be displayed below the input field.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * onBlur event handler.\n\t */\n\tonBlur?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * onChange event handler. Controlled inputs should use this to manage the input value. Uncontrolled inputs will manage their own state, but may still use this to access the event object.\n\t */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n\t/**\n\t * Function to clear the input field. Only necessary if the input is controlled. This functionality is built-in for uncontrolled inputs.\n\t */\n\tonClear?: () => void;\n\t/**\n\t * onFocus event handler.\n\t */\n\tonFocus?: (e: FocusEvent<HTMLInputElement>) => void;\n\t/**\n\t * Optional placeholder text to display when the input field is empty.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Is the field read-only?\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Icon to use when type is search.\n\t */\n\tsearchIcon?: 'search' | 'filter';\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Show Toggle visibility control for input. Valid for type `password` only.\n\t */\n\tshowVisibilityToggle?: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\ttranslationStrings?: TranslationStringProps;\n\t/**\n\t * Type of input field to use.\n\t */\n\ttype?: HtmlInputTypes;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n\t/**\n\t * Value of the input field. Used to set the value of the input field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n\t/**\n\t * Additional class names for input.\n\t */\n\tclassName?: string;\n}\n\n/**\n * URL Prefix component for TextInput\n */\nconst UrlPrefix = () => (\n\t<div className='pds-text-input__url-prefix'>https://</div>\n);\n\n/**\n * TextInput UI component\n */\nexport const TextInput = forwardRef(\n\t(\n\t\t{\n\t\t\tautoComplete,\n\t\t\tcounterMaxLength,\n\t\t\tdefaultValue,\n\t\t\tdisabled = false,\n\t\t\thasClearButton = false,\n\t\t\thasSearchShortcut = false,\n\t\t\thasUrlPrefix = false,\n\t\t\tid,\n\t\t\tinputProps,\n\t\t\tinputWidth,\n\t\t\tlabel,\n\t\t\tmessage,\n\t\t\tonBlur,\n\t\t\tonChange,\n\t\t\tonClear,\n\t\t\tonFocus,\n\t\t\tplaceholder,\n\t\t\treadonly = false,\n\t\t\trequired = false,\n\t\t\tsearchIcon = 'search',\n\t\t\tshowLabel = true,\n\t\t\tshowVisibilityToggle = false,\n\t\t\ttooltipText = null,\n\t\t\ttranslationStrings = {\n\t\t\t\tclearButton: 'Clear input text',\n\t\t\t\tcounterOverLimit: 'Character limit exceeded by',\n\t\t\t\tsearchShortcut: 'Press / to focus the search field',\n\t\t\t\tvisibilityStatus: 'The value of the input is',\n\t\t\t\tvisibilityToggleHide: 'Hide input value',\n\t\t\t\tvisibilityToggleShow: 'Show input value',\n\t\t\t},\n\t\t\ttype = 'text',\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\tvalue,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: TextInputProps,\n\t\tref: Ref<HTMLInputElement>,\n\t) => {\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-text-input';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\t\tconst readonlyClass = readonly ? inputCommonClasses.readonly : null;\n\t\tconst urlPrefixClass =\n\t\t\thasUrlPrefix && type === 'url' ? `${baseClass}--has-url-prefix` : null;\n\n\t\t// Set decorators.\n\t\tlet decorator = null;\n\t\tif (type === 'search') {\n\t\t\tdecorator = 'search';\n\t\t}\n\n\t\tif (type === 'search' && searchIcon === 'filter') {\n\t\t\tdecorator = 'filter';\n\t\t}\n\n\t\tif (validationStatus === 'error') {\n\t\t\tdecorator = 'error';\n\t\t}\n\t\tif (validationStatus === 'success') {\n\t\t\tdecorator = 'success';\n\t\t}\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Determine if the input is controlled.\n\t\tconst isControlled = typeof value != 'undefined';\n\n\t\t// When a component is not controlled, it can have a defaultValue.\n\t\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t\t// If the input is uncontrolled, use state within the component to manage the value.\n\t\tconst [internalValue, setInternalValue] = useState(\n\t\t\thasDefaultValue ? defaultValue : '',\n\t\t);\n\n\t\t// Determine if the input has a value either from props or internal state.\n\t\tconst hasValue = value || internalValue;\n\n\t\t// Handle blur event.\n\t\tconst handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n\t\t\tif (showVisibilityToggle && visibility) {\n\t\t\t\tsetVisibility(false);\n\t\t\t}\n\n\t\t\t// Process URL prefix if needed\n\t\t\tif (hasUrlPrefix && type === 'url') {\n\t\t\t\tconst processedValue = stripUrlProtocol(e.target.value);\n\n\t\t\t\tconst newEvent = {\n\t\t\t\t\t...e,\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\t...e.target,\n\t\t\t\t\t\tvalue: processedValue,\n\t\t\t\t\t},\n\t\t\t\t} as FocusEvent<HTMLInputElement>;\n\n\t\t\t\tif (onBlur) {\n\t\t\t\t\tonBlur(newEvent);\n\t\t\t\t}\n\t\t\t} else if (onBlur) {\n\t\t\t\tonBlur(e);\n\t\t\t}\n\t\t};\n\n\t\t// Handle change event.\n\t\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (hasUrlPrefix && type === 'url') {\n\t\t\t\tconst processedValue = stripUrlProtocol(e.target.value);\n\n\t\t\t\tconst newEvent = {\n\t\t\t\t\t...e,\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\t...e.target,\n\t\t\t\t\t\tvalue: processedValue,\n\t\t\t\t\t},\n\t\t\t\t} as ChangeEvent<HTMLInputElement>;\n\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalValue(processedValue);\n\t\t\t\t}\n\n\t\t\t\tif (onChange) {\n\t\t\t\t\tonChange(newEvent);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalValue(e.target.value);\n\t\t\t\t}\n\n\t\t\t\tif (onChange) {\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Handle clear button.\n\t\tconst handleClear = () => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue('');\n\t\t\t}\n\n\t\t\tif (onClear) {\n\t\t\t\tonClear();\n\t\t\t}\n\n\t\t\t// Set focus to the input field.\n\t\t\tconst element = document.getElementById(id);\n\t\t\tif (element) {\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t};\n\n\t\t// Set up state for visibility.\n\t\tconst [visibility, setVisibility] = useState(false);\n\n\t\t// Function to toggle visibility.\n\t\tconst handleShowVisibilityToggle = () => {\n\t\t\t// Toggle visibility.\n\t\t\tsetVisibility((previous) => {\n\t\t\t\treturn !previous;\n\t\t\t});\n\n\t\t\t// Set focus to the input field.\n\t\t\tconst element = document.getElementById(id);\n\t\t\tif (element) {\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t};\n\n\t\t// Get input type from props.\n\t\tlet processedType = type;\n\n\t\t// Toggle input type between `password` and `text`.\n\t\tif (showVisibilityToggle && type === 'password') {\n\t\t\tif (visibility) {\n\t\t\t\tprocessedType = 'text';\n\t\t\t} else {\n\t\t\t\tprocessedType = 'password';\n\t\t\t}\n\t\t}\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\treadonlyClass,\n\t\t\t\t\turlPrefixClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<InputLabel\n\t\t\t\t\tid={id}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t/>\n\n\t\t\t\t{/* Visually-hidden message for visibility status */}\n\t\t\t\t{showVisibilityToggle && type === 'password' && (\n\t\t\t\t\t<div className='visually-hidden' aria-live='polite'>\n\t\t\t\t\t\t{`${translationStrings.visibilityStatus} ${\n\t\t\t\t\t\t\tvisibility ? 'visible' : 'hidden'\n\t\t\t\t\t\t}.`}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__input-wrapper ${hasUrlPrefix && type === 'url' ? `${baseClass}__input-wrapper--has-prefix` : ''}`}\n\t\t\t\t>\n\t\t\t\t\t{decorator && <InputDecorator variant={decorator} />}\n\n\t\t\t\t\t{hasUrlPrefix && type === 'url' && <UrlPrefix />}\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tclassName={`${baseClass}__input ${hasUrlPrefix && type === 'url' ? `${baseClass}__input--has-prefix` : ''}`}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tname={id}\n\t\t\t\t\t\ttype={processedType}\n\t\t\t\t\t\tvalue={isControlled ? value : internalValue}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\treadOnly={readonly}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tautoComplete={type === 'password' ? 'off' : autoComplete}\n\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : null}\n\t\t\t\t\t\taria-describedby={processedMessage ? `${id}__message` : null}\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{/* Clear button */}\n\t\t\t\t\t{hasClearButton && hasValue && (\n\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tclearLabel={translationStrings.clearButton}\n\t\t\t\t\t\t\thandleClearInput={handleClear}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Visibility toggle button */}\n\t\t\t\t\t{showVisibilityToggle && type === 'password' && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\tclassName={`${baseClass}__visibility-toggle`}\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\tvisibility\n\t\t\t\t\t\t\t\t\t? translationStrings.visibilityToggleHide\n\t\t\t\t\t\t\t\t\t: translationStrings.visibilityToggleShow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-controls={id}\n\t\t\t\t\t\t\tonClick={handleShowVisibilityToggle}\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon iconName={visibility ? 'eyeSlash' : 'eye'} iconSize='md' />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Search shortcut */}\n\t\t\t\t\t{hasSearchShortcut && type === 'search' && !hasValue && (\n\t\t\t\t\t\t<SearchShortcut\n\t\t\t\t\t\t\tinputId={id}\n\t\t\t\t\t\t\tshortcutLabel={translationStrings.searchShortcut}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Character counter */}\n\t\t\t\t\t{counterMaxLength && type !== 'password' && (\n\t\t\t\t\t\t<CharacterCounter\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tcurrentLength={hasValue.length}\n\t\t\t\t\t\t\tmaxLength={counterMaxLength}\n\t\t\t\t\t\t\toverLimitMessage={translationStrings.counterOverLimit}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './link-new-window.css';\n\n/**\n * Prop types for LinkNewWindow\n */\nexport interface LinkNewWindowProps extends ComponentPropsWithoutRef<'a'> {\n\t/**\n\t * Content for the LinkNewWindow.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Optional font size for the LinkNewWindow. If not provided, the font size will be inherited from the parent element.\n\t */\n\tfontSize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Is the link in the process of loading?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Translation string for the \"opens in a new window\" message.\n\t */\n\tnewWindowText?: string;\n\t/**\n\t * URL where the component should link to.\n\t */\n\turl: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * LinkNewWindow UI component\n */\nexport const LinkNewWindow = ({\n\tchildren,\n\tfontSize,\n\tisLoading,\n\tnewWindowText = 'opens in a new window',\n\turl,\n\tclassName,\n\t...props\n}: LinkNewWindowProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-link-new-window';\n\tconst fontSizeClass = fontSize ? `${baseClass}--${fontSize}` : null;\n\n\t// Render the output\n\treturn isLoading ? (\n\t\t<span\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tfontSizeClass,\n\t\t\t\t`${baseClass}--loading pds-pulse`,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\taria-hidden='true'\n\t\t>\n\t\t\t{children}\n\t\t\t<Icon iconName='externalLink' className={`${baseClass}__icon`} />\n\t\t</span>\n\t) : (\n\t\t<a\n\t\t\thref={url}\n\t\t\trel='noopener noreferrer'\n\t\t\ttarget='_blank'\n\t\t\tclassName={mergeClasses([baseClass, fontSizeClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<span className='visually-hidden'>{`(${newWindowText})`}</span>\n\t\t\t<Icon iconName='externalLink' className={`${baseClass}__icon`} />\n\t\t</a>\n\t);\n};\n","import React, {\n\tuseState,\n\tuseEffect,\n\tComponentPropsWithoutRef,\n\tReactNode,\n} from 'react';\n\nimport {\n\tuseFloating,\n\tuseClick,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n\tuseTransitionStyles,\n\tFloatingFocusManager,\n\tFloatingOverlay,\n} from '@floating-ui/react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { CloseButton } from '@components/buttons/CloseButton/CloseButton';\n\nimport './modal.css';\n\nexport interface ModalProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aria label that describes the modal. Will default to the title if not provided.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Main content for modal.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Text for close button aria-label attribute. Only used if hasCloseButton is true.\n\t */\n\tcloseButtonLabel?: string;\n\t/**\n\t * Maximum height for the main content area -- excludes heading and footer areas.\n\t * Will enable scrolling if content exceeds this height.\n\t * Set in 'vh, 'rem', or 'px'.\n\t */\n\tcontentMaxHeight?: string;\n\t/**\n\t * If true, clicking outside the modal will not close it. This forces the user to interact with the modal.\n\t */\n\tdisableOutsideClick?: boolean;\n\t/**\n\t * Indicates if the built-in close button will be shown.\n\t */\n\thasCloseButton?: boolean;\n\t/**\n\t * Is the modal open?\n\t */\n\tmodalIsOpen?: boolean;\n\t/**\n\t * Function to set the modal open state.\n\t */\n\tsetModalIsOpen?: (isOpen: boolean) => void;\n\t/**\n\t * The width of the modal.\n\t */\n\tsize?: 'sm' | 'md' | 'lg' | 'xl';\n\t/**\n\t * Text for modal title\n\t */\n\ttitle: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Modal UI component\n */\nexport const Modal = ({\n\tariaLabel,\n\tchildren,\n\tcloseButtonLabel = 'Close modal',\n\tcontentMaxHeight,\n\tdisableOutsideClick,\n\thasCloseButton = true,\n\tmodalIsOpen = false,\n\tsetModalIsOpen = () => {},\n\tsize = 'md',\n\ttitle,\n\tclassName,\n\t...props\n}: ModalProps) => {\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst mainContent = slots['__unslotted'];\n\tconst footerContent = slots['footer'];\n\n\t// Set up classes.\n\tconst baseClass = 'pds-modal';\n\tconst sizeClass = size !== 'md' ? `${baseClass}--${size}` : null;\n\n\t// Max height style\n\tconst maxHeightStyle = contentMaxHeight\n\t\t? {\n\t\t\t\tmaxHeight: contentMaxHeight,\n\t\t\t\tpaddingInlineEnd: '1rem',\n\t\t\t\tmarginInlineEnd: '-1rem',\n\t\t\t\toverflowY: 'auto' as const,\n\t\t\t}\n\t\t: null;\n\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(modalIsOpen);\n\n\t// Update modalIsOpen when isOpen prop changes\n\tuseEffect(() => {\n\t\tsetIsOpen(modalIsOpen);\n\t}, [modalIsOpen]);\n\n\t// Update modalIsOpen when isOpen prop changes\n\tuseEffect(() => {\n\t\tsetModalIsOpen(isOpen);\n\t}, [isOpen]);\n\n\t// FUI Config.\n\tconst { refs, context, floatingStyles } = useFloating({\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t});\n\n\tconst click = useClick(context);\n\tconst dismiss = disableOutsideClick\n\t\t? undefined\n\t\t: useDismiss(context, {\n\t\t\t\toutsidePressEvent: 'mousedown',\n\t\t\t});\n\tconst role = useRole(context);\n\n\t// Merge all the interactions into prop getters.\n\tconst { getFloatingProps } = useInteractions([click, dismiss, role]);\n\n\t// Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 300,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t\ttransform: 'translateY(0)',\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t\ttransform: 'translateY(6rem)',\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t\ttransform: 'translateY(1rem)',\n\t\t},\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t{isMounted && (\n\t\t\t\t<FloatingOverlay\n\t\t\t\t\tlockScroll\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\tbackground: 'var(--pds-color-overlay)',\n\t\t\t\t\t\ttransition: 'var(--pds-animation-reveal-transition)',\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-modal)',\n\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<FloatingFocusManager context={context}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\t\taria-label={ariaLabel ? ariaLabel : title}\n\t\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t\t\tclassName={mergeClasses([baseClass, sizeClass, className])}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\t\t\t...styles,\n\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\ttop: '5%',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__close-wrapper`}>\n\t\t\t\t\t\t\t\t\t<CloseButton\n\t\t\t\t\t\t\t\t\t\tariaLabel={closeButtonLabel}\n\t\t\t\t\t\t\t\t\t\tonClick={() => setIsOpen(false)}\n\t\t\t\t\t\t\t\t\t\ticonSize='xl'\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t<div className={`${baseClass}__title`}>{title}</div>\n\t\t\t\t\t\t\t<div className={`${baseClass}__content`} style={maxHeightStyle}>\n\t\t\t\t\t\t\t\t{mainContent}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{footerContent && (\n\t\t\t\t\t\t\t\t<div className={`${baseClass}__footer`}>{footerContent}</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingOverlay>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tcloneElement,\n\tisValidElement,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './breadcrumb.css';\n\n/**\n * Prop types for Breadcrumb\n */\nexport interface BreadcrumbProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aria label for the breadcrumbs navigation.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Array of breadcrumb items.\n\t */\n\tcrumbs: ReactElement[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Breadcrumb UI component\n */\nexport const Breadcrumb = ({\n\tariaLabel = 'Breadcrumb',\n\tcrumbs,\n\tclassName,\n\t...props\n}: BreadcrumbProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-breadcrumb';\n\n\t// Get total number of crumbs.\n\tconst totalCrumbs = crumbs.length;\n\n\t// Prepare the crumbs.\n\tconst processedCrumbs = crumbs.map((crumb, index) => {\n\t\t// If this is not the last crumb return a link.\n\t\tif (index < totalCrumbs - 1) {\n\t\t\treturn (\n\t\t\t\t<li key={index} className={`${baseClass}__crumb`}>\n\t\t\t\t\t{crumb}\n\t\t\t\t</li>\n\t\t\t);\n\t\t} else {\n\t\t\t// If this is the last crumb, designate it as current.\n\t\t\tconst clonedCrumb = isValidElement(crumb)\n\t\t\t\t? cloneElement(crumb as ReactElement, {\n\t\t\t\t\t\t'aria-current': 'page',\n\t\t\t\t\t})\n\t\t\t\t: null;\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName={`${baseClass}__crumb ${baseClass}__crumb--current`}\n\t\t\t\t>\n\t\t\t\t\t{clonedCrumb}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t});\n\n\t// Render the output.\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ol className={`${baseClass}__crumbs`}>{processedCrumbs}</ol>\n\t\t</nav>\n\t);\n};\n","import React, {\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tisValidElement,\n} from 'react';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n/**\n * Recursively searches through navigation items to find the first active link\n * @param items - Array of navigation items to search through\n * @returns The active link element, or null if no active link is found or if the active item is a string\n * @example\n * const activeLink = getActiveLink(menuItems);\n */\nexport const getActiveLink = (items: NavigationItem[]): ReactElement | null => {\n\tif (!items) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < items.length; i++) {\n\t\tif (isActiveItem(items[i])) {\n\t\t\t// If the linkContent is a string, return null.\n\t\t\t// Otherwise, return the linkContent.\n\t\t\treturn typeof items[i].linkContent === 'string'\n\t\t\t\t? null\n\t\t\t\t: (items[i].linkContent as ReactElement);\n\t\t}\n\t\tif (items[i].links) {\n\t\t\tconst activeLink = getActiveLink(items[i].links);\n\t\t\tif (activeLink) {\n\t\t\t\treturn activeLink;\n\t\t\t}\n\t\t}\n\t}\n\t// If no active link is found, return null.\n\treturn null;\n};\n\n/**\n * Extracts a string representation from linkContent, whether it's a string or React element\n * @param linkContent - The link content to extract string from (string or React element)\n * @returns String representation of the link content\n * @example\n * const linkText = getLinkContentString(<Link>Home</Link>); // Returns \"Home\"\n * const linkText = getLinkContentString(\"About\"); // Returns \"About\"\n */\nexport const getLinkContentString = (\n\tlinkContent: ReactElement | string,\n): string => {\n\tlet linkContentString = linkContent as string;\n\n\t// If the link content is an object, get the label from the object.\n\tif (typeof linkContent === 'object') {\n\t\tlinkContentString = linkContent.props.children as string;\n\t}\n\n\treturn linkContentString;\n};\n\n/**\n * Determines if a navigation item is currently active\n * @param item - The navigation item to check\n * @returns True if the item is active, false otherwise\n * @description Checks for active state via:\n * - The `isActive` property on the item\n * - The presence of 'pds-isActive' class on the link element\n * - Returns false for string-based items\n * @example\n * const isActive = isActiveItem(navigationItem);\n */\nexport const isActiveItem = (item: NavigationItem): boolean => {\n\t// If the type is not a string, determine if the item is active.\n\tif (typeof item.linkContent !== 'string') {\n\t\t// Via the isActive property on the item.\n\t\tif (item.isActive) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Via the pds-isActive class on the link.\n\t\tif (\n\t\t\titem.linkContent.props.className &&\n\t\t\titem.linkContent.props.className.includes('pds-isActive')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If not active, return false.\n\t\treturn false;\n\t}\n\n\t// If the type is a string, return false.\n\treturn false;\n};\n\n/**\n * Determines if a navigation item or any of its children are in the active trail\n * @param item - The navigation item to check (including its children)\n * @returns True if the item or any child is active, false otherwise\n * @description Recursively checks the item and all child items for active state\n * @example\n * const inActiveTrail = isActiveTrail(parentItem); // True if parent or any child is active\n */\nexport const isActiveTrail = (item: NavigationItem): boolean => {\n\tif (isActiveItem(item)) {\n\t\treturn true;\n\t}\n\n\t// Repeat for child links.\n\tif (item.links) {\n\t\tfor (let i = 0; i < item.links.length; i++) {\n\t\t\tif (isActiveTrail(item.links[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Checks if the provided content is an interactive element (link, button, etc.)\n * @param content - The React content to examine\n * @returns True if the content is an interactive element, false otherwise\n * @description Currently detects:\n * - Native anchor elements (`<a>`)\n * - React Router Link components (by displayName)\n * @example\n * const isInteractive = isInteractiveElement(<Link to=\"/home\">Home</Link>); // true\n * const isInteractive = isInteractiveElement(<span>Label</span>); // false\n * const isInteractive = isInteractiveElement(\"Plain text\"); // false\n */\nexport const isInteractiveElement = (content: ReactNode): boolean => {\n\tif (isValidElement(content)) {\n\t\tconst elementType = content.type;\n\n\t\t// Check for native anchor elements\n\t\tif (\n\t\t\telementType === 'a' ||\n\t\t\t(typeof elementType === 'string' && elementType.toLowerCase() === 'a')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check for Link components by displayName (with proper type checking)\n\t\tif (typeof elementType === 'function' || typeof elementType === 'object') {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst typeWithDisplayName = elementType as any;\n\t\t\tif (typeWithDisplayName?.displayName === 'Link') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\treturn false;\n};\n\n/**\n * Processes navigation link content based on its type and available child links\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @returns Processed link content\n * @description\n * - If linkContent is a string and child links exist, clones the first child link with the string as label\n * - Otherwise returns the linkContent as-is\n * @example\n * // With string and child links - uses first child as template\n * const processed = processNavLinkContent(\"Home\", [{ linkContent: <Link to=\"/home\" /> }]);\n *\n * // With React element - returns as-is\n * const processed = processNavLinkContent(<Link to=\"/about\">About</Link>);\n */\nexport const processNavLinkContent = (\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n): ReactElement | string => {\n\tlet processedNavLink: ReactElement | string = null;\n\n\t// If the link content is a string and there are child links,\n\t// use the first child link with the string as the label.\n\tif (typeof linkContent === 'string' && links) {\n\t\t// Get the first child link.\n\t\tconst firstChildLink = links ? links[0].linkContent : null;\n\n\t\t// Check that the link is a valid React element.\n\t\tif (React.isValidElement(firstChildLink)) {\n\t\t\t// Clone the first child link and set the string as its children.\n\t\t\tprocessedNavLink = React.cloneElement(firstChildLink, {\n\t\t\t\t...(typeof linkContent === 'string' ? { children: linkContent } : {}),\n\t\t\t});\n\t\t}\n\t} else {\n\t\t// Otherwise, use the link content as-is.\n\t\tprocessedNavLink = linkContent;\n\t}\n\n\treturn processedNavLink;\n};\n\n/**\n * Processes side navigation global items with optional icons and specialized markup structure\n * @param baseClass - Base CSS class for styling\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @param icon - Optional PDS icon to include\n * @returns Processed navigation item with icon and proper markup structure, or null\n * @description\n * Creates a structured navigation item with:\n * - Icon support with proper CSS classes\n * - Consistent markup structure for global navigation\n * - Template behavior for string content with child links\n * @example\n * // String with icon and child links\n * const item = processSideNavGlobalLinkContent('nav', 'Home', childLinks, 'home');\n *\n * // React element with icon\n * const item = processSideNavGlobalLinkContent('nav', <Link to=\"/about\">About</Link>, null, 'info');\n */\nexport const processSideNavGlobalLinkContent = (\n\tbaseClass: string,\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n\ticon?: PDSIcon,\n) => {\n\t// Result will be a JSX element.\n\tlet processedSideNavGlobalItem: ReactElement = null;\n\n\t// If the linkContent is a string and has child links, create a link element from the first child link.\n\t// Append the icon if it exists.\n\t// Return null if the linkContent is a string and there are no child links.\n\tif (typeof linkContent === 'string') {\n\t\t// Prep new link children for strings with or without an icon.\n\t\tconst newLinkChildrenForString = icon\n\t\t\t? [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='md' />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t]\n\t\t\t: [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t];\n\n\t\tif (links) {\n\t\t\t// Get the first child link.\n\t\t\tconst firstChildLink = links[0].linkContent;\n\t\t\tif (isValidElement(firstChildLink)) {\n\t\t\t\tprocessedSideNavGlobalItem = cloneElement(firstChildLink, {\n\t\t\t\t\t...(typeof linkContent === 'string'\n\t\t\t\t\t\t? { children: newLinkChildrenForString }\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = null;\n\t\t}\n\t}\n\n\t// If the linkContent is a JSX element and has an icon, clone it and append the icon.\n\t// Return the linkContent as is if the linkContent is a JSX element but there is no icon.\n\tif (typeof linkContent === 'object') {\n\t\tif (icon) {\n\t\t\tprocessedSideNavGlobalItem = cloneElement(linkContent, {\n\t\t\t\t...linkContent.props,\n\t\t\t\tchildren: [\n\t\t\t\t\t<span key={icon} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='md' />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>\n\t\t\t\t\t\t\t{linkContent.props.children}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>,\n\t\t\t\t],\n\t\t\t});\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = linkContent;\n\t\t}\n\t}\n\n\treturn processedSideNavGlobalItem;\n};\n","import React, {\n\tComponentPropsWithRef,\n\tuseContext,\n\tuseRef,\n\tuseEffect,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport { isActiveTrail } from '../navigation-utilities';\n\n// Contexts.\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { SplitButton } from '@components/buttons/SplitButton/SplitButton';\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\nimport './button-nav.css';\n\n// Extend the NavigationItem type to not allow child links.\nexport type ButtonNavItem = Omit<NavigationItem, 'links'>;\n\n/**\n * Prop types for ButtonNav\n */\nexport interface ButtonNavProps extends ComponentPropsWithRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems?: ButtonNavItem[];\n\t/**\n\t * Size of the Buttons.\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ButtonNav UI component\n */\nexport const ButtonNav = ({\n\tariaLabel,\n\tmenuItems,\n\tsize = 'md',\n\tclassName,\n\t...props\n}: ButtonNavProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Reference to the navigation element\n\tconst navRef = useRef<HTMLElement>(null);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-button-nav';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\tconst sizeClass = size !== 'md' ? `${baseClass}--${size}` : null;\n\n\t// Handle keyboard navigation\n\tuseEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\t// Only process if not in mobile view\n\t\t\tif (isMobile) return;\n\n\t\t\t// Get all focusable elements within the navigation\n\t\t\tconst nav = navRef.current;\n\t\t\tif (!nav) return;\n\n\t\t\t// Find all focusable elements within the navigation\n\t\t\tconst focusableElements = Array.from(\n\t\t\t\tnav.querySelectorAll('a, button, [tabindex]:not([tabindex=\"-1\"])'),\n\t\t\t) as HTMLElement[];\n\n\t\t\t// If no focusable elements, return\n\t\t\tif (focusableElements.length === 0) return;\n\n\t\t\t// Get the currently focused element\n\t\t\tconst focusedElement = document.activeElement as HTMLElement;\n\t\t\tconst currentIndex = focusableElements.indexOf(focusedElement);\n\n\t\t\t// Only process if one of our navigation elements has focus\n\t\t\tif (currentIndex === -1) return;\n\n\t\t\t// Handle arrow keys\n\t\t\tif (event.key === 'ArrowRight') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = (currentIndex + 1) % focusableElements.length;\n\t\t\t\tfocusableElements[nextIndex].focus();\n\t\t\t} else if (event.key === 'ArrowLeft') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst prevIndex =\n\t\t\t\t\t(currentIndex - 1 + focusableElements.length) %\n\t\t\t\t\tfocusableElements.length;\n\t\t\t\tfocusableElements[prevIndex].focus();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown);\n\t\t};\n\t}, [isMobile]);\n\n\t// Render each menu item for the default view.\n\tconst ButtonMenuItem = ({ isActive, linkContent }: ButtonNavItem) => {\n\t\t// Define item class.\n\t\tconst itemClass = `${baseClass}__item`;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{linkContent}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess the default menu markup.\n\tconst defaultMarkup =\n\t\tmenuItems.length > 0 ? (\n\t\t\t<ul className={`${baseClass}__menu`}>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ButtonMenuItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t) : null;\n\n\t// Process the mobile menu items.\n\tconst mobileMenuItems = [];\n\n\tmenuItems.map((item) => {\n\t\tif (item.linkContent) {\n\t\t\tif (!isActiveTrail(item)) {\n\t\t\t\tmobileMenuItems.push({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tmobileMenuItems.unshift({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// Preprocess the mobile markup.\n\tconst mobileMarkup =\n\t\tmobileMenuItems.length > 0 ? (\n\t\t\t<SplitButton\n\t\t\t\tid='mobile-nav-split-button'\n\t\t\t\tactionItems={mobileMenuItems}\n\t\t\t\tvariant='secondary'\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t) : null;\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\tref={navRef}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tsizeClass,\n\t\t\t\tmobileClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileMarkup : defaultMarkup}\n\t\t</nav>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport './skiplink.css';\n\ninterface SkiplinkProps extends ComponentPropsWithoutRef<'a'> {\n\t/**\n\t * The ID of the element to skip to.\n\t */\n\tdestination: string;\n\t/**\n\t * The text of the skip link.\n\t */\n\ttext: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Skiplink UI component\n */\nexport const Skiplink = ({\n\tdestination = 'main',\n\ttext = 'Skip to main content',\n\tclassName,\n\t...props\n}: SkiplinkProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-skiplink';\n\n\t// Render the output\n\treturn (\n\t\t<a\n\t\t\thref={`#${destination}`}\n\t\t\tclassName={[baseClass, className].join(' ').trim().replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{text}\n\t\t</a>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { useMeasure } from '@reactuses/core';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Skiplink } from '@components/Skiplink/Skiplink';\n\n// Set up dashboard-specific context.\nexport const DashboardContext = createContext(null);\n\nimport './dashboard-global.css';\n\n/**\n * Prop types for DashboardGlobal\n */\ninterface DashboardGlobalProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Is the dashboard in admin mode?\n\t */\n\tisAdmin?: boolean;\n\t/**\n\t * Is the sidebar expanded?\n\t */\n\tisSidebarExpanded?: boolean;\n\t/**\n\t * Function to set the sidebar expanded state.\n\t */\n\tsetIsSidebarExpanded?: (isOpen: boolean) => void;\n\t/**\n\t * Whether to include a sidebar toggle button.\n\t */\n\thasSidebarToggle?: boolean;\n\t/**\n\t * A fully-formed link element using the router of your choice. The link text will be used as the aria-label. If the logo should not be a link, set to `null`.\n\t */\n\tlogoLinkContent?: ReactNode;\n\t/**\n\t * Width of the sidebar when collapsed in rems. This should not need to be modified.\n\t */\n\tsidebarCollapsedWidth?: number;\n\t/**\n\t * Width of the sidebar when expanded in rems. This should not need to be modified, unless slightly to accommodate longer top-level navigation items.\n\t */\n\tsidebarExpandedWidth?: number;\n\t/**\n\t * Translatable string for sidebar toggle button.\n\t */\n\tsidebarToggleLabel?: string;\n\t/**\n\t * Translatable string for skiplink.\n\t */\n\tskiplinkText?: string;\n\t/**\n\t * Additional class names. Will be merged with existing component root classes.\n\t */\n\tclassName?: string;\n}\n\n/**\n * DashboardGlobal UI component\n */\nexport const DashboardGlobal = ({\n\tchildren,\n\thasSidebarToggle = true,\n\tisAdmin,\n\tlogoLinkContent,\n\tsidebarCollapsedWidth = 2.125,\n\tsidebarExpandedWidth = 12,\n\tsidebarToggleLabel = 'Toggle sidebar',\n\tskiplinkText = 'Skip to main content',\n\tisSidebarExpanded,\n\tsetIsSidebarExpanded = () => {},\n\tclassName,\n\t...props\n}: DashboardGlobalProps) => {\n\t// Get responsive context.\n\tconst { isMobile, windowWidth } = useContext(ResponsiveContext);\n\n\t// State.\n\tconst [isOpen, setIsOpen] = useState(() => {\n\t\tif (isSidebarExpanded !== undefined) {\n\t\t\treturn isSidebarExpanded;\n\t\t}\n\t\treturn windowWidth > 1440;\n\t});\n\n\t// Get width of the navbar.\n\tconst navbarRef = useRef();\n\tconst [rect] = useMeasure(navbarRef);\n\tconst navbarWidth = rect.width;\n\n\t// Update isOpen when isSidebarExpanded prop changes\n\tuseEffect(() => {\n\t\tif (isSidebarExpanded !== undefined) {\n\t\t\tsetIsOpen(isSidebarExpanded);\n\t\t}\n\t}, [isSidebarExpanded]);\n\n\t// Update isSidebarExpanded when isOpen state changes\n\tuseEffect(() => {\n\t\tsetIsSidebarExpanded(isOpen);\n\t}, [isOpen, setIsSidebarExpanded]);\n\n\t// Set up dashboard context values.\n\tconst dashboardContextValues = {\n\t\tisSidebarExpanded: isMobile ? true : isOpen,\n\t\tlogoLinkContent: logoLinkContent,\n\t\tnavbarWidth: navbarWidth,\n\t\tisAdmin,\n\t};\n\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-global';\n\tconst adminClass = isAdmin ? `${baseClass}--isAdmin` : null;\n\tconst mobileClass = isMobile\n\t\t? `${baseClass}--isMobile`\n\t\t: `${baseClass}--notMobile`;\n\tconst sidebarClass = isMobile\n\t\t? null\n\t\t: isOpen\n\t\t\t? `${baseClass}--sidebarExpanded`\n\t\t\t: `${baseClass}--sidebarCollapsed`;\n\n\t// Sidebar width for non-mobile.\n\tconst sidebarWidth = isOpen\n\t\t? `${sidebarExpandedWidth}rem`\n\t\t: `${sidebarCollapsedWidth}rem`;\n\n\t// Sidebar styles for non-mobile.\n\tconst sidebarStyles = {\n\t\twidth: sidebarWidth,\n\t\ttransition: 'width 200ms ease-in-out',\n\t};\n\n\t// Container styles.\n\tconst containerRightStyles = isMobile\n\t\t? {}\n\t\t: {\n\t\t\t\twidth: `calc(100% - ${sidebarWidth})`,\n\t\t\t\ttransition: 'width 200ms ease-in-out',\n\t\t\t};\n\n\t// Handle sidebar toggle.\n\tconst handleSidebarToggle = () => {\n\t\tsetIsOpen(!isOpen);\n\t};\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst headerContent = slots['header'];\n\tconst sidebarContent = slots['sidebar'];\n\tconst mainContent = slots['main'];\n\tconst footerContent = slots['footer'];\n\n\t// Preprocess mobile markup.\n\tconst mobileContent = (\n\t\t<>\n\t\t\t{headerContent}\n\t\t\t<aside className={`${baseClass}__sidebar`}>{sidebarContent}</aside>\n\t\t\t<main id='main' className={`${baseClass}__main`}>\n\t\t\t\t{mainContent}\n\t\t\t</main>\n\t\t\t{footerContent && (\n\t\t\t\t<footer className={`${baseClass}__footer`}>{footerContent}</footer>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Preprocess default markup.\n\tconst defaultContent = (\n\t\t<>\n\t\t\t<aside className={`${baseClass}__sidebar`} style={sidebarStyles}>\n\t\t\t\t{hasSidebarToggle && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`${baseClass}__sidebar-toggle-button`}\n\t\t\t\t\t\tonClick={handleSidebarToggle}\n\t\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\t\taria-label={sidebarToggleLabel}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className={`${baseClass}__sidebar-toggle-icon`}>\n\t\t\t\t\t\t\t<Icon iconName='angleLeft' iconSize='sm' />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t<div className={`${baseClass}__sidebar-inner`}>{sidebarContent}</div>\n\t\t\t</aside>\n\t\t\t<div\n\t\t\t\tref={navbarRef}\n\t\t\t\tclassName={`${baseClass}__right`}\n\t\t\t\tstyle={containerRightStyles}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__header`}>{headerContent}</div>\n\t\t\t\t<div className={`${baseClass}__inner`}>\n\t\t\t\t\t<main id='main' className={`${baseClass}__main`}>\n\t\t\t\t\t\t{mainContent}\n\t\t\t\t\t</main>\n\t\t\t\t\t{footerContent && (\n\t\t\t\t\t\t<footer className={`${baseClass}__footer`}>{footerContent}</footer>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<DashboardContext.Provider value={dashboardContextValues}>\n\t\t\t<Skiplink text={skiplinkText} destination='main' />\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tadminClass,\n\t\t\t\t\tmobileClass,\n\t\t\t\t\tsidebarClass,\n\t\t\t\t\t'pds-typography--product',\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isMobile ? mobileContent : defaultContent}\n\t\t\t</div>\n\t\t</DashboardContext.Provider>\n\t);\n};\n","export const ANIMATION_TRANSITION_DEFAULT_DURATION = 200;\nexport const ANIMATION_TRANSITION_DEFAULT_DELAY = 0;\nexport const ANIMATION_TRANSITION_DEFAULT_TIMING_FUNCTION = 'ease-in-out';\nexport const ANIMATION_TRANSITION_REVEAL_DURATION = 300;\nexport const ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION = 'ease-out';\n","import React, { MouseEvent, useState } from 'react';\n\n// Floating UI utilities.\nimport {\n\tuseFloating,\n\tautoUpdate,\n\toffset,\n\tflip,\n\tsafePolygon,\n\tshift,\n\tuseHover,\n\tuseFocus,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n} from '@floating-ui/react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tisActiveTrail,\n\tgetLinkContentString,\n\tprocessSideNavGlobalLinkContent,\n} from '../navigation-utilities';\n\n// Constants.\nimport { SPACING_S } from '@vars/spacing';\nimport {\n\t// ANIMATION_TRANSITION_REVEAL_DURATION,\n\tANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n} from '@vars/animation';\n\n// Set the animation duration to 0 for now.\nconst ANIMATION_TRANSITION_REVEAL_DURATION = 0;\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n// Components.\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './dashboard-nav.css';\n\n// Extend the NavigationItem type.\nexport type DashboardNavItemProps = NavigationItem & {\n\t/**\n\t * Icon to display next to the link content.\n\t */\n\ticon?: PDSIcon;\n\t/**\n\t * Flag indicating whether the sidebar is expanded.\n\t */\n\tisSidebarExpanded?: boolean;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n};\n\n/**\n * DashboardNavItem UI component\n */\nexport const DashboardNavItem = ({\n\ticon,\n\tisActive,\n\tisSidebarExpanded,\n\tlabels,\n\tlinkContent,\n\tlinks,\n}: DashboardNavItemProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-nav';\n\tconst itemClass = `${baseClass}__item`;\n\tconst menuClass = `${baseClass}__menu`;\n\n\t// Preprocess top-level content without children.\n\tconst topLevelWithoutChildren = (\n\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t{processSideNavGlobalLinkContent(baseClass, linkContent, links, icon)}\n\t\t</div>\n\t);\n\n\t// Preprocess second level menu content.\n\tconst secondLevelMenu = (links: NavigationItem[], classModifier: string) => (\n\t\t<ul\n\t\t\tclassName={mergeClasses([\n\t\t\t\tmenuClass,\n\t\t\t\t`${menuClass}--${classModifier}`,\n\t\t\t\tisActive ? `${menuClass}--expanded` : null,\n\t\t\t])}\n\t\t>\n\t\t\t{links.map((secondLevelItem, index) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t`${itemClass}--${classModifier}`,\n\t\t\t\t\t\tisActiveTrail(secondLevelItem) ? `${itemClass}--active` : null,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t{secondLevelItem.linkContent}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n\n\t// State for flyout menu instances.\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// FUI config.\n\tconst { refs, floatingStyles, context } = useFloating({\n\t\tplacement: 'right-start',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(12), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst hover = useHover(context, {\n\t\tmove: false,\n\t\thandleClose: safePolygon(),\n\t});\n\tconst focus = useFocus(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\n\t// Merge all FUI interactions into prop getters\n\tconst { getReferenceProps, getFloatingProps } = useInteractions([\n\t\thover,\n\t\tfocus,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\t// Handle the expand/collapse of nested menus.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Control menu classes\n\t\tconst button = e.currentTarget;\n\t\tconst menu = button.parentElement?.nextElementSibling as HTMLElement;\n\t\tif (!menu) return;\n\n\t\tconst isExpanding = button.getAttribute('aria-expanded') === 'false';\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`, isExpanding);\n\t\tbutton.setAttribute('aria-expanded', isExpanding ? 'true' : 'false');\n\n\t\tif (isExpanding) {\n\t\t\texpandMenu(menu);\n\t\t} else {\n\t\t\tcollapseMenu(menu);\n\t\t}\n\t};\n\n\tconst expandMenu = (menu: HTMLElement) => {\n\t\tmenu.style.display = 'flex'; // Initially set display: flex to calculate height correctly\n\t\tmenu.style.height = 'auto';\n\t\tconst menuHeight = `${menu.scrollHeight}px`;\n\n\t\tmenu.style.marginBlockStart = '0';\n\n\t\tmenu.animate(\n\t\t\t[\n\t\t\t\t{ height: '0px', opacity: '0', marginBlockStart: '0' },\n\t\t\t\t{\n\t\t\t\t\theight: menuHeight,\n\t\t\t\t\topacity: '1',\n\t\t\t\t\tmarginBlockStart: `${SPACING_S}rem`,\n\t\t\t\t},\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t},\n\t\t).onfinish = () => {\n\t\t\tObject.assign(menu.style, {\n\t\t\t\theight: 'auto',\n\t\t\t\topacity: '1',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tmarginBlockStart: `${SPACING_S}rem`,\n\t\t\t});\n\t\t\tmenu.classList.add(`${menuClass}--expanded`);\n\t\t};\n\t};\n\n\tconst collapseMenu = (menu: HTMLElement) => {\n\t\tconst menuHeight = `${menu.scrollHeight}px`;\n\n\t\tconst animation = menu.animate(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\theight: menuHeight,\n\t\t\t\t\topacity: '1',\n\t\t\t\t\tmarginBlockStart: `${SPACING_S}rem`,\n\t\t\t\t},\n\t\t\t\t{ height: '0px', opacity: '0', marginBlockStart: '0' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t},\n\t\t);\n\n\t\tanimation.onfinish = () => {\n\t\t\tmenu.classList.remove(`${menuClass}--expanded`);\n\t\t\tObject.assign(menu.style, {\n\t\t\t\topacity: '0',\n\t\t\t\theight: '', // Clean height from inline style\n\t\t\t\tdisplay: 'none', // Use display none to hide the menu and make it unclickable\n\t\t\t\tmarginBlockStart: '0',\n\t\t\t});\n\t\t};\n\t};\n\n\treturn (\n\t\t<li\n\t\t\tclassName={mergeClasses([\n\t\t\t\titemClass,\n\t\t\t\t`${itemClass}--top-level`,\n\t\t\t\tlinks ? `${itemClass}--has-children` : null,\n\t\t\t\t!isSidebarExpanded ? `${itemClass}--collapsed` : null,\n\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t])}\n\t\t\tref={!isSidebarExpanded ? refs.setReference : null}\n\t\t\t{...getReferenceProps()}\n\t\t>\n\t\t\t{links ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t\t\t\t{processSideNavGlobalLinkContent(\n\t\t\t\t\t\t\tbaseClass,\n\t\t\t\t\t\t\tlinkContent,\n\t\t\t\t\t\t\tlinks,\n\t\t\t\t\t\t\ticon,\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{/* Only show the toggle button if the sidebar is expanded. */}\n\t\t\t\t\t\t{isSidebarExpanded && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\taria-expanded={isActive}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t\t\t\t\tisActive ? `${baseClass}__toggle--expanded` : null,\n\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon iconName='angleDown' iconSize='md' />\n\t\t\t\t\t\t\t\t<span className='visually-hidden'>{`${labels.toggle} ${getLinkContentString(linkContent)} ${labels.submenu}`}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Only allow the secondary menu to show below if sidebar is expanded. */}\n\t\t\t\t\t{isSidebarExpanded && secondLevelMenu(links, 'second-level')}\n\n\t\t\t\t\t{/* Provide flyout option for second-level menu if sidebar is collapsed. */}\n\t\t\t\t\t{!isSidebarExpanded && isOpen && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${baseClass}__flyout`}\n\t\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`${baseClass}__flyout-heading`}>\n\t\t\t\t\t\t\t\t{getLinkContentString(linkContent)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{secondLevelMenu(links, 'second-level-flyout')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{/* Else if the item does not have child links */}\n\t\t\t\t\t{/* If the sidebar is expanded, show the top-level item as is. */}\n\t\t\t\t\t{/* Otherwise show it with a tooltip */}\n\t\t\t\t\t{isSidebarExpanded ? (\n\t\t\t\t\t\ttopLevelWithoutChildren\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tcontent={getLinkContentString(linkContent)}\n\t\t\t\t\t\t\tcustomTrigger={topLevelWithoutChildren}\n\t\t\t\t\t\t\toffsetValue={{\n\t\t\t\t\t\t\t\tmainAxis: -4,\n\t\t\t\t\t\t\t\tcrossAxis: -12,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tpreferredPlacement='right'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</li>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tKeyboardEvent,\n\tReactElement,\n\tcloneElement,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tautoUpdate,\n\tuseFloating,\n\tuseClick,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseTransitionStyles,\n\tuseTypeahead,\n} from '@floating-ui/react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport { getActiveLink, processNavLinkContent } from '../navigation-utilities';\n\n// Types.\nimport {\n\tFlattenedNavigationItem,\n\tNavigationItem,\n} from '@components/navigation/navigation-types';\n\n// Components.\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './dropdown-menu.css';\n\n/**\n * Prop types for DropdownMenu\n */\nexport interface DropdownMenuProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Heading text. If a string is passed, it will be rendered as a heading. If a link is passed, it will be rendered as a link.\n\t */\n\theadingText?: string | ReactElement;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems: NavigationItem[];\n\t/**\n\t * Text to display in the mobile menu trigger button when no active link is found.\n\t */\n\tselectTextFallback: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * DropdownMenu UI component\n */\nexport const DropdownMenu = ({\n\theadingText,\n\tmenuItems,\n\tselectTextFallback = 'Navigate to...',\n\tclassName,\n\t...props\n}: DropdownMenuProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-dropdown-menu';\n\n\t// State\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState(null);\n\n\t// Get the label for the active link and use it as the trigger button text for the mobile menu.\n\tconst activeLink = getActiveLink(menuItems);\n\tconst activeLabel = activeLink\n\t\t? activeLink.props.children\n\t\t: selectTextFallback;\n\n\t// Icon for active link in mobile menu.\n\tconst activeIcon = (\n\t\t<Icon\n\t\t\ticonName='check'\n\t\t\ticonSize='md'\n\t\t\tclassName={`${baseClass}__active-icon`}\n\t\t/>\n\t);\n\n\t// Function to handle selection of a mobile list item if return key is pressed.\n\tconst handleSelection = (e: KeyboardEvent<HTMLLIElement>) => {\n\t\tif (e.key === 'Enter') {\n\t\t\tlistRef.current[activeIndex].querySelector('a')?.click();\n\t\t}\n\t};\n\n\t// Close the mobile dropdown menu when a link is clicked.\n\t// The is necessary for client-side routing.\n\tconst handleOpenMobileClick = (e: Event) => {\n\t\t// If the target is a link, close the menu.\n\t\tif ((e.target as Element).nodeName === 'A') {\n\t\t\tsetIsOpen(false);\n\t\t}\n\t};\n\n\t// Apply event listeners to the menu when the mobile menu is open.\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tconst dropdown = document.querySelector('.pds-dropdown-menu__dropdown');\n\t\t\tdropdown.addEventListener('click', handleOpenMobileClick);\n\t\t\treturn () => {\n\t\t\t\tdropdown.removeEventListener('click', handleOpenMobileClick);\n\t\t\t};\n\t\t}\n\t}, [isOpen]);\n\n\t// Function to flatten a menu item.\n\t// Clone the linkContent and set tabIndex to -1 to prevent tab-based focus.\n\tconst flatMenuItem = ({\n\t\titem,\n\t\tlevel,\n\t}: {\n\t\titem: NavigationItem;\n\t\tlevel: FlattenedNavigationItem['level'];\n\t}): FlattenedNavigationItem => {\n\t\treturn {\n\t\t\t...item,\n\t\t\tlevel: level,\n\t\t\tlinkContent: cloneElement(\n\t\t\t\tprocessNavLinkContent(item.linkContent, item.links) as ReactElement,\n\t\t\t\t{\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t},\n\t\t\t),\n\t\t};\n\t};\n\n\t// Flatten the menu items array.\n\tconst flattenedMenuItems = (\n\t\titems: NavigationItem[],\n\t): FlattenedNavigationItem[] => {\n\t\tconst flatItems: FlattenedNavigationItem[] = [];\n\t\titems.forEach((item) => {\n\t\t\tif (item.links) {\n\t\t\t\tflatItems.push(flatMenuItem({ item, level: 'top-level' }));\n\t\t\t\titem.links.forEach((link) => {\n\t\t\t\t\tif (link.links) {\n\t\t\t\t\t\tflatItems.push(flatMenuItem({ item: link, level: 'second-level' }));\n\t\t\t\t\t\tlink.links.forEach((subLink) => {\n\t\t\t\t\t\t\tif (subLink.links) {\n\t\t\t\t\t\t\t\tflatItems.push(\n\t\t\t\t\t\t\t\t\tflatMenuItem({ item: subLink, level: 'third-level' }),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubLink.links.forEach((subSubLink) => {\n\t\t\t\t\t\t\t\t\tflatItems.push(\n\t\t\t\t\t\t\t\t\t\tflatMenuItem({ item: subSubLink, level: 'fourth-level' }),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tflatItems.push(\n\t\t\t\t\t\t\t\tflatMenuItem({ item: subLink, level: 'third-level' }),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tflatItems.push(flatMenuItem({ item: link, level: 'second-level' }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tflatItems.push(flatMenuItem({ item, level: 'top-level' }));\n\t\t\t}\n\t\t});\n\t\treturn flatItems;\n\t};\n\n\t// FUI config.\n\tconst { refs, context } = useFloating({\n\t\tplacement: 'bottom-start',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst listRef = useRef([]);\n\n\tconst listNav = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t\topenOnArrowKeyDown: true,\n\t\tfocusItemOnHover: true,\n\t});\n\n\tconst click = useClick(context, { event: 'mousedown' });\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\n\tconst typeahead = useTypeahead(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tselectedIndex: null,\n\t\tonMatch: (index) => {\n\t\t\tif (isOpen) {\n\t\t\t\tsetActiveIndex(index);\n\t\t\t} else {\n\t\t\t\tsetIsOpen(true);\n\t\t\t\tsetActiveIndex(index);\n\t\t\t}\n\t\t},\n\t\tfindMatch: (list, typedString) => {\n\t\t\tconst lowerTyped = typedString.toLowerCase();\n\t\t\treturn list.find((item) => {\n\t\t\t\tconst label =\n\t\t\t\t\t(item as unknown as HTMLElement)?.textContent?.trim().toLowerCase() ??\n\t\t\t\t\t'';\n\t\t\t\treturn label.startsWith(lowerTyped);\n\t\t\t});\n\t\t},\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[dismiss, role, click, listNav, typeahead],\n\t);\n\n\t// Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 300,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{headingText && (\n\t\t\t\t<h2 className={`${baseClass}__heading pds-ts-m`}>{headingText}</h2>\n\t\t\t)}\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\tref={refs.setReference}\n\t\t\t\ttype='button'\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t<span className={`${baseClass}__active-label`}>{activeLabel}</span>\n\t\t\t\t<Icon\n\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\ticonSize='md'\n\t\t\t\t\tclassName={`${baseClass}__trigger-icon`}\n\t\t\t\t/>\n\t\t\t</button>\n\t\t\t{isMounted && (\n\t\t\t\t<ul\n\t\t\t\t\tclassName={`${baseClass}__dropdown ${baseClass}__menu ${baseClass}__menu--top-level`}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...styles,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t{flattenedMenuItems(menuItems).map((item, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tonKeyDown={handleSelection}\n\t\t\t\t\t\t\tclassName={`${baseClass}__item ${baseClass}__item--${\n\t\t\t\t\t\t\t\titem.level\n\t\t\t\t\t\t\t} ${item.isActive === true ? `${baseClass}__item--active` : ''}`}\n\t\t\t\t\t\t\ttabIndex={activeIndex === index ? 0 : -1}\n\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\tlistRef.current[index] = node;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t{...getItemProps()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.linkContent}\n\t\t\t\t\t\t\t{item.isActive === true && activeIcon}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React from 'react';\n\nexport const logoFull = (\n\t<svg\n\t\txmlns='http://www.w3.org/2000/svg'\n\t\trole='img'\n\t\tviewBox='0 0 165 50'\n\t\theight='3.052rem'\n\t\tfill='none'\n\t\taria-hidden='true'\n\t\tpreserveAspectRatio='xMidYMid meet'\n\t\tfocusable='false'\n\t>\n\t\t<path\n\t\t\td='M2.2 0L6.6 10.6H1L2.8 15.2H14.2L2.2 0Z'\n\t\t\tfill='var(--pds-color-brand-secondary-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M17.1 38.5L15.2 33.9H12.6L7.20001 20.8H4.90001L10.3 33.9H3.70001L15.9 49.1L11.5 38.5H17.1Z'\n\t\t\tfill='var(--pds-color-brand-secondary-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 29.2H11.5L13 32.8H18.6C18.7 32.8 19.1 32.6 19.1 31C19 29.4 18.7 29.2 18.6 29.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M19.3 24.9H9.79999L11.3 28.5H19.3C19.4 28.5 19.8 28.3 19.8 26.7C19.7 25.1 19.4 24.9 19.3 24.9Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 19.9C18.7 19.9 19.1 19.7 19.1 18.1C19.1 16.5 18.8 16.3 18.6 16.3H10.8L12.3 19.9H18.6Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M14 24.2H19.2C19.3 24.2 19.7 24 19.7 22.4C19.7 20.8 19.4 20.6 19.2 20.6H12.5L14 24.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 29.2H11.5L13 32.8H18.6C18.7 32.8 19.1 32.6 19.1 31C19 29.4 18.7 29.2 18.6 29.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M19.3 24.9H9.79999L11.3 28.5H19.3C19.4 28.5 19.8 28.3 19.8 26.7C19.7 25.1 19.4 24.9 19.3 24.9Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M5.4 24.2L3.7 19.9H7.6L9.4 24.2H13.1L9.8 16.3H1.7C1.1 16.3 0.7 16.3 0.4 17.2C0.0999996 18.3 0 20.4 0 24.5C0 28.6 -3.8743e-07 30.7 0.4 31.8C0.7 32.7 1 32.7 1.7 32.7H8.8L5.4 24.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M49 16.35H44.6L38.2 32.65H42.7L43.8 29.85H49.6L50.7 32.65H55.2L49 16.35ZM45 26.65L46.7 21.45L48.4 26.65H45Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M32.3 16.35H25.8V32.75H30.2V27.15H32.4C36.1 27.15 38.2 25.55 38.2 21.75C38.2 17.95 35.8 16.35 32.3 16.35ZM30.8 23.95H30.3V19.95H30.8C32.4 19.95 33.8 19.95 33.8 21.95C33.8 23.95 32.3 23.95 30.8 23.95Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M114.9 26.25L119.2 26.35V22.75H114.9V19.95H120.8V16.35H110.5V32.65H120.8V28.65H114.9V26.25Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M76.6 20.75H80.5L80.6 32.65H84.9V20.75H88.9V16.35H76.6V20.75Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M102.5 22.75H96.5V16.35H92.1V32.65H96.5V26.25H102.5V32.65H106.9V16.35H102.5V22.75Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M131.4 20.75C133.5 20.75 135.2 22.45 135.2 24.55C135.2 26.65 133.5 28.35 131.4 28.35C129.3 28.35 127.6 26.65 127.6 24.55C127.6 22.45 129.3 20.75 131.4 20.75ZM131.4 16.35C126.9 16.35 123.2 20.05 123.2 24.55C123.2 29.05 126.9 32.75 131.4 32.75C135.9 32.75 139.6 29.05 139.6 24.55C139.6 20.05 135.9 16.35 131.4 16.35Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M153.9 25.45L146.9 16.35H142.8V32.65H147.2V23.55L153.9 32.65H158.3V16.35H154L153.9 25.45Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M69 25.45L61.9 16.35H57.8V32.65H62.2V23.55L68.9 32.65H73.4V16.35H69V25.45Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M161.5 16.65H161V16.35H162.5V16.65H162V18.25H161.6V16.65H161.5ZM163.6 18.25L163.1 16.75V18.25H162.7V16.35H163.3L163.8 17.85L164.3 16.35H164.9V18.25H164.5V16.75L164 18.25H163.6Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t</svg>\n);\n\nexport const logoIcon = (\n\t<svg\n\t\txmlns='http://www.w3.org/2000/svg'\n\t\trole='img'\n\t\tviewBox='0 0 20 50'\n\t\theight='3.052rem'\n\t\tfill='none'\n\t\taria-hidden='true'\n\t\tpreserveAspectRatio='xMidYMid meet'\n\t\tfocusable='false'\n\t>\n\t\t<path\n\t\t\td='M2.2 0L6.6 10.6H1L2.8 15.2H14.2L2.2 0Z'\n\t\t\tfill='var(--pds-color-brand-secondary-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M17.1 38.5L15.2 33.9H12.6L7.20001 20.8H4.90001L10.3 33.9H3.70001L15.9 49.1L11.5 38.5H17.1Z'\n\t\t\tfill='var(--pds-color-brand-secondary-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 29.2H11.5L13 32.8H18.6C18.7 32.8 19.1 32.6 19.1 31C19 29.4 18.7 29.2 18.6 29.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M19.3 24.9H9.79999L11.3 28.5H19.3C19.4 28.5 19.8 28.3 19.8 26.7C19.7 25.1 19.4 24.9 19.3 24.9Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 19.9C18.7 19.9 19.1 19.7 19.1 18.1C19.1 16.5 18.8 16.3 18.6 16.3H10.8L12.3 19.9H18.6Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M14 24.2H19.2C19.3 24.2 19.7 24 19.7 22.4C19.7 20.8 19.4 20.6 19.2 20.6H12.5L14 24.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M18.6 29.2H11.5L13 32.8H18.6C18.7 32.8 19.1 32.6 19.1 31C19 29.4 18.7 29.2 18.6 29.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M19.3 24.9H9.79999L11.3 28.5H19.3C19.4 28.5 19.8 28.3 19.8 26.7C19.7 25.1 19.4 24.9 19.3 24.9Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M5.4 24.2L3.7 19.9H7.6L9.4 24.2H13.1L9.8 16.3H1.7C1.1 16.3 0.7 16.3 0.4 17.2C0.0999996 18.3 0 20.4 0 24.5C0 28.6 -3.8743e-07 30.7 0.4 31.8C0.7 32.7 1 32.7 1.7 32.7H8.8L5.4 24.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t</svg>\n);\n\nexport const logoWordmark = (\n\t<svg\n\t\txmlns='http://www.w3.org/2000/svg'\n\t\trole='img'\n\t\tviewBox='0 0 140 17'\n\t\theight='1rem'\n\t\tfill='none'\n\t\taria-hidden='true'\n\t\tpreserveAspectRatio='xMidYMid meet'\n\t\tfocusable='false'\n\t>\n\t\t<path\n\t\t\td='M23.2 0H18.8L12.4 16.3H16.9L18 13.5H23.8L24.9 16.3H29.4L23.2 0ZM19.2 10.3L20.9 5.1L22.6 10.3H19.2Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M6.5 0H0V16.4H4.4V10.8H6.6C10.3 10.8 12.4 9.2 12.4 5.4C12.4 1.6 10 0 6.5 0ZM5 7.6H4.5V3.6H5C6.6 3.6 8 3.6 8 5.6C8 7.6 6.5 7.6 5 7.6Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M89.1 9.9L93.4 10V6.4H89.1V3.6H95V0H84.7V16.3H95V12.3H89.1V9.9Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M50.8 4.4H54.7L54.8 16.3H59.1V4.4H63.1V0H50.8V4.4Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M76.7 6.4H70.7V0H66.3V16.3H70.7V9.9H76.7V16.3H81.1V0H76.7V6.4Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M105.6 4.4C107.7 4.4 109.4 6.1 109.4 8.2C109.4 10.3 107.7 12 105.6 12C103.5 12 101.8 10.3 101.8 8.2C101.8 6.1 103.5 4.4 105.6 4.4ZM105.6 0C101.1 0 97.4 3.7 97.4 8.2C97.4 12.7 101.1 16.4 105.6 16.4C110.1 16.4 113.8 12.7 113.8 8.2C113.8 3.7 110.1 0 105.6 0Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M128.1 9.1L121.1 0H117V16.3H121.4V7.2L128.1 16.3H132.5V0H128.2L128.1 9.1Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M43.2 9.1L36.1 0H32V16.3H36.4V7.2L43.1 16.3H47.6V0H43.2V9.1Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t\t<path\n\t\t\td='M135.7 0.299999H135.2V0H136.7V0.299999H136.2V1.9H135.8V0.299999H135.7ZM137.8 1.9L137.3 0.4V1.9H136.9V0H137.5L138 1.5L138.5 0H139.1V1.9H138.7V0.4L138.2 1.9H137.8Z'\n\t\t\tfill='var(--pds-color-fg-default)'\n\t\t/>\n\t</svg>\n);\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { logoFull, logoIcon, logoWordmark } from './pantheon-logo-data';\n\nimport './pantheon-logo.css';\n\nexport type PantheonLogoDisplayType =\n\t| 'full'\n\t| 'icon'\n\t| 'wordmark'\n\t| 'sub-brand'\n\t| 'sub-brand-small';\n\n/**\n * Prop types for PantheonLogo\n */\nexport interface PantheonLogoProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Color type. Use 'default' unless the logo is used on an approved dark background.\n\t */\n\tcolorType?: 'default' | 'reverse';\n\t/**\n\t * Display type\n\t */\n\tdisplayType?: PantheonLogoDisplayType;\n\t/**\n\t * A fully-formed link element using the router of your choice. The link text will be used as the aria-label. If the logo should not be a link, set to `null`.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Accepts a fully-formed link or a string (if a static site name is desired). Will only render if the `display-type` is set to 'sub-brand'.\n\t */\n\tsubBrand?: ReactNode | string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * PantheonLogo UI component\n */\nexport const PantheonLogo = ({\n\tcolorType = 'default',\n\tdisplayType = 'full',\n\tlinkContent,\n\tsubBrand,\n\tclassName,\n\t...props\n}: PantheonLogoProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-pantheon-logo';\n\tconst displayClass =\n\t\tdisplayType && displayType !== 'full'\n\t\t\t? `${baseClass}--${displayType}`\n\t\t\t: null;\n\tconst colorClass =\n\t\tcolorType && colorType !== 'default' ? `${baseClass}--${colorType}` : null;\n\n\t// Alter logo markup based on displayType.\n\tlet logoMarkup: ReactNode;\n\n\tswitch (displayType) {\n\t\tcase 'full':\n\t\t\tlogoMarkup = logoFull;\n\t\t\tbreak;\n\t\tcase 'icon':\n\t\t\tlogoMarkup = logoIcon;\n\t\t\tbreak;\n\t\tcase 'wordmark':\n\t\t\tlogoMarkup = logoWordmark;\n\t\t\tbreak;\n\t\tcase 'sub-brand':\n\t\t\tlogoMarkup = logoIcon;\n\t\t\tbreak;\n\t\tcase 'sub-brand-small':\n\t\t\tlogoMarkup = logoIcon;\n\t}\n\n\t// Process link markup using the linkContent prop value.\n\t// Use the original linkContent string as the aria-label.\n\tconst linkText: string =\n\t\tReact.isValidElement(linkContent) &&\n\t\ttypeof linkContent.props.children === 'string'\n\t\t\t? linkContent.props.children\n\t\t\t: '';\n\n\tconst linkMarkup = React.isValidElement(linkContent)\n\t\t? cloneElement(linkContent as ReactElement, {\n\t\t\t\tchildren: logoMarkup,\n\t\t\t\t'aria-label': linkText ? linkText : null,\n\t\t\t})\n\t\t: linkContent;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tdisplayClass,\n\t\t\t\tcolorClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{linkContent ? linkMarkup : logoMarkup}\n\t\t\t{subBrand && (\n\t\t\t\t<>\n\t\t\t\t\t<div className='pds-pantheon-logo__separator' />\n\t\t\t\t\t<div className='pds-pantheon-logo__sub-brand-wordmark'>\n\t\t\t\t\t\t{subBrand}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useContext } from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tisActiveTrail,\n\tprocessSideNavGlobalLinkContent,\n} from '../navigation-utilities';\n\n// Contexts.\nimport { DashboardContext } from '@layouts/DashboardGlobal/DashboardGlobal';\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { DashboardNavItem, DashboardNavItemProps } from './DashboardNavItem';\nimport { DropdownMenu } from '../DropdownMenu/DropdownMenu';\nimport { PantheonLogo } from '@components/PantheonLogo/PantheonLogo';\n\nimport './dashboard-nav.css';\n\n/**\n * Prop types for DashboardNav\n */\nexport interface DashboardNavProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems: DashboardNavItemProps[];\n\t/**\n\t * Text to display in the mobile menu trigger button when no active link is found.\n\t */\n\tmobileMenuSelectTextFallback?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * DashboardNav UI component\n */\nexport const DashboardNav = ({\n\tariaLabel,\n\tlabels = {\n\t\tsubmenu: 'submenu',\n\t\ttoggle: 'Toggle',\n\t},\n\tmenuItems,\n\tmobileMenuSelectTextFallback = 'Navigate to...',\n\tclassName,\n\t...props\n}: DashboardNavProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Get dashboard context.\n\tconst dashboardContext = useContext(DashboardContext);\n\tlet isSidebarExpanded = true;\n\tlet logoLinkContent = null;\n\n\tif (dashboardContext) {\n\t\tisSidebarExpanded = dashboardContext.isSidebarExpanded;\n\t\tlogoLinkContent = dashboardContext.logoLinkContent;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-nav';\n\tconst widthClass = isSidebarExpanded\n\t\t? `${baseClass}--expanded`\n\t\t: `${baseClass}--collapsed`;\n\n\t// Preprocess markup for the desktop display\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t{menuItems.length > 0 && (\n\t\t\t\t<ul className={`${baseClass}__menu ${baseClass}__menu--top-level`}>\n\t\t\t\t\t{menuItems.map((item, index) => (\n\t\t\t\t\t\t<DashboardNavItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\ticon={item.icon}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t\tisSidebarExpanded={isSidebarExpanded}\n\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t\tlinks={item.links}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Append icon to menu items for mobile display.\n\tconst menuItemsWithIcons = menuItems.map((item) => ({\n\t\t...item,\n\t\tlinkContent: processSideNavGlobalLinkContent(\n\t\t\tbaseClass,\n\t\t\titem.linkContent,\n\t\t\titem.links,\n\t\t\titem.icon,\n\t\t),\n\t}));\n\n\t// Preprocess markup for the isMobile display\n\tconst mobileMarkup = (\n\t\t<DropdownMenu\n\t\t\tmenuItems={menuItemsWithIcons}\n\t\t\tselectTextFallback={mobileMenuSelectTextFallback}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, widthClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!isMobile && (\n\t\t\t\t<PantheonLogo\n\t\t\t\t\tclassName={`${baseClass}__logo`}\n\t\t\t\t\tdisplayType={isSidebarExpanded ? 'full' : 'icon'}\n\t\t\t\t\tlinkContent={logoLinkContent}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{isMobile ? mobileMarkup : defaultMarkup}\n\t\t</nav>\n\t);\n};\n","import { ReactNode } from 'react';\nimport { PDSIcon } from '@components/icons/Icon/Icon';\n\n// Badge color options.\nexport type BadgeColor =\n\t| 'success'\n\t| 'critical'\n\t| 'info'\n\t| 'warning'\n\t| 'neutral'\n\t| 'brand'\n\t| 'silver'\n\t| 'gold'\n\t| 'platinum'\n\t| 'diamond';\n\n// Common button types.\nexport type ButtonDisplayType = 'label-only' | 'icon-start' | 'icon-end';\n\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'subtle'\n\t| 'brand'\n\t| 'brand-secondary'\n\t| 'critical'\n\t| 'navbar'\n\t| 'inline';\n\n// Standard container width options.\nexport type ContainerWidth = 'narrow' | 'standard' | 'wide' | 'x-wide' | 'full';\n\nexport type Display =\n\t| 'block'\n\t| 'inline'\n\t| 'inline-block'\n\t| 'flex'\n\t| 'inline-flex'\n\t| 'grid'\n\t| 'inline-grid'\n\t| 'flow-root'\n\t| 'none'\n\t| 'contents'\n\t| 'table'\n\t| 'table-row'\n\t| 'table-cell'\n\t| 'table-caption'\n\t| 'table-column'\n\t| 'table-column-group'\n\t| 'table-footer-group'\n\t| 'table-header-group'\n\t| 'table-row-group'\n\t| 'list-item'\n\t| 'inherit'\n\t| 'initial'\n\t| 'revert'\n\t| 'unset';\n\n// Floating UI component offset options.\nexport type FuiOffset =\n\t| number\n\t| {\n\t\t\tmainAxis?: number;\n\t\t\tcrossAxis?: number;\n\t\t\talignmentAxis?: number | null;\n\t };\n\n// Floating UI placement options.\nexport type FuiPlacement =\n\t| 'top'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'right'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'bottom'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'left'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type HeadingItemType = {\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n\t/**\n\t * Is the item a heading?\n\t */\n\tisHeading: boolean;\n};\n\n// Heading levels for Hx component.\nexport type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span';\nexport type HeadingLevelCommon = Exclude<HeadingLevel, 'h1' | 'h5' | 'h6'>;\n\nexport type LinkItemType = {\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Is the item a link?\n\t */\n\tisLink: boolean;\n\t/**\n\t * The content of the link.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type MenuItemType = {\n\t/**\n\t * (optional) Callback function to execute when menu item is activated\n\t */\n\tcallback?: () => void;\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Optional ID value for this item.\n\t */\n\tid?: string;\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type NodeItemType = {\n\t/**\n\t * Is the item a node?\n\t */\n\tisNode: boolean;\n\t/**\n\t * The content of the node.\n\t */\n\tnodeContent?: ReactNode;\n};\n\nexport type SeparatorItemType = {\n\t/**\n\t * Is the item a separator?\n\t */\n\tisSeparator: boolean;\n};\n\n// Site plan level options.\nexport type SitePlanLevel =\n\t| 'sandbox'\n\t| 'basic'\n\t| 'performance-small'\n\t| 'performance-medium'\n\t| 'performance-large'\n\t| 'performance-xl'\n\t| 'performance-2xl'\n\t| 'elite';\n\nexport const SitePlanLevelLabel: Record<SitePlanLevel, string> = {\n\tsandbox: 'Sandbox',\n\tbasic: 'Basic',\n\t'performance-small': 'Performance Small',\n\t'performance-medium': 'Performance Medium',\n\t'performance-large': 'Performance Large',\n\t'performance-xl': 'Performance XL',\n\t'performance-2xl': 'Performance 2XL',\n\telite: 'Elite',\n};\n\n// Site status options.\nexport type SiteStatus = 'active' | 'frozen';\n\n// Site type options.\nexport type SiteType = 'drupal' | 'wordpress' | 'gatsby' | 'nextjs';\n\nexport const SiteTypeLabel: Record<SiteType, string> = {\n\tdrupal: 'Drupal',\n\twordpress: 'WordPress',\n\tgatsby: 'Gatsby',\n\tnextjs: 'Next.js',\n};\n\nexport const SiteTypeIcon: Record<SiteType, PDSIcon> = {\n\tdrupal: 'drupal',\n\twordpress: 'wordpress',\n\tgatsby: 'bolt',\n\tnextjs: 'bolt',\n};\n\nexport type SpacingScaleOptions =\n\t| '6xs'\n\t| '5xs'\n\t| '4xs'\n\t| '3xs'\n\t| '2xs'\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl';\n\nexport type TypeScaleOptions =\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl'\n\t| '9xl';\n","import React, { ComponentPropsWithoutRef, useRef } from 'react';\nimport { useMeasure } from '@reactuses/core';\n\nimport { mergeClasses } from '@libs/components/utils';\n\n// Components.\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { StatusBadge } from '@components/badges/StatusBadge/StatusBadge';\n\n// Types.\nimport { SiteStatus, SiteType, SiteTypeIcon } from '@libs/types/custom-types';\n\n// SiteOption Item type.\nexport type SiteOption = {\n\t/**\n\t * ID of the site.\n\t */\n\tid: string;\n\t/**\n\t * Machine name of the site.\n\t */\n\tmachineName?: string;\n\t/**\n\t * Name of the site.\n\t */\n\tname: string;\n\t/**\n\t * Site active status.\n\t */\n\tstatus?: SiteStatus;\n\t/**\n\t * Site type.\n\t */\n\ttype?: SiteType;\n};\n\n/** Site option display props. */\nexport interface SiteOptionDisplayProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Site option to display.\n\t */\n\toption: SiteOption;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * UI component to display site options.\n */\nexport const SiteOptionDisplay = ({\n\toption,\n\tclassName,\n\t...props\n}: SiteOptionDisplayProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-search';\n\n\tconst iconType = option.type ? SiteTypeIcon[option.type] : 'bolt';\n\n\t// Get the width of the component.\n\tconst optionRef = useRef();\n\tconst [rect] = useMeasure(optionRef);\n\n\t// Calculate label truncation based on the width of the component.\n\tconst labelMaxWidth = rect.width / 16 - 7.5;\n\n\treturn (\n\t\t<div\n\t\t\tref={optionRef}\n\t\t\tclassName={mergeClasses([\n\t\t\t\t`${baseClass}__option-display`,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\ttitle={option.name}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={`${baseClass}__option-inner`}\n\t\t\t\tstyle={{ pointerEvents: 'none' }}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__option-icon`}>\n\t\t\t\t\t<Icon iconName={iconType} />\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__option-label`}\n\t\t\t\t\tstyle={{ maxWidth: `${labelMaxWidth}rem` }}\n\t\t\t\t>\n\t\t\t\t\t{option.name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName={`${baseClass}__option-status`}\n\t\t\t\tstyle={{ pointerEvents: 'none' }}\n\t\t\t>\n\t\t\t\t<StatusBadge\n\t\t\t\t\tcolor='neutral'\n\t\t\t\t\thasStatusIndicator\n\t\t\t\t\tlabel={option.status === 'frozen' ? 'Frozen' : 'Active'}\n\t\t\t\t\tstatusType={option.status === 'frozen' ? 'frozen' : 'success'}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { DashboardContext } from '@layouts/DashboardGlobal/DashboardGlobal';\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { SiteOptionDisplay, SiteOption } from './SiteOptionDisplay';\nimport { Combobox } from '@components/inputs/Combobox/Combobox';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './dashboard-search.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tclearButton?: string;\n\tinputInstructions?: string;\n\topenSearchButton?: string;\n};\n\n/**\n * Prop types for DashboardSearch\n */\nexport interface DashboardSearchProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Is the search input disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID for the component.\n\t */\n\tid?: string;\n\t/**\n\t * Is the site data still loading?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Label for the input. Will be rendered as an aria-label.\n\t */\n\tlabel?: string;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\tlabelStrings?: LabelStrings;\n\t/**\n\t * Text to display when site options are still loading.\n\t */\n\tloadingText?: string;\n\t/**\n\t * Text to display when no results are found.\n\t */\n\tnoResultsText?: string;\n\t/**\n\t * Optional callback function when the search input field is focused.\n\t */\n\tonFocus?: () => void;\n\t/**\n\t * Callback when an option is selected. Returns the selected option object.\n\t */\n\tonOptionSelect?: (option: SiteOption) => void;\n\t/**\n\t * Optional placeholder text to display when the input field is empty.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Array of sites to search through.\n\t */\n\tsiteList?: SiteOption[];\n\t/**\n\t * Offset for the starting right position for the search input in rems.\n\t */\n\thorizontalOffset?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * DashboardSearch UI component\n */\nexport const DashboardSearch = ({\n\tdisabled = false,\n\tid,\n\tisLoading = false,\n\tlabel = 'Search sites',\n\tlabelStrings = {\n\t\tclearButton: 'Clear input text',\n\t\tinputInstructions: 'Type to search options',\n\t\topenSearchButton: 'Open search field',\n\t},\n\tloadingText = 'Loading results...',\n\tnoResultsText = 'No results found',\n\tonFocus,\n\tonOptionSelect,\n\tplaceholder = 'Search sites',\n\tsiteList,\n\thorizontalOffset = 0,\n\tclassName,\n\t...props\n}: DashboardSearchProps) => {\n\t// Set up state.\n\tconst [isExpanded, setIsExpanded] = useState(false);\n\tconst [comboboxValue, setComboboxValue] = useState(null);\n\n\t// Initialize ref.\n\tconst comboboxRef = useRef(null);\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set default navbar width to null if dashboard context not available.\n\tlet navbarWidth = null;\n\tlet isAdmin = false;\n\t// Get dashboard context.\n\tconst dashboardContext = useContext(DashboardContext);\n\tif (dashboardContext) {\n\t\tnavbarWidth = dashboardContext.navbarWidth;\n\t\tisAdmin = dashboardContext.isAdmin;\n\t}\n\n\t// Determine the width of the expanded search input based on the navbar width.\n\tconst widthCollapsed = 2.25;\n\tconst widthExpanded = 22;\n\tconst startingRightPosition = isAdmin ? 14.5 : 9.625;\n\tconst widthFlexible =\n\t\tnavbarWidth > 900\n\t\t\t? widthExpanded\n\t\t\t: navbarWidth / 16 -\n\t\t\t\t(startingRightPosition + horizontalOffset) -\n\t\t\t\twidthCollapsed * 0.675;\n\n\tlet searchWidth = widthCollapsed;\n\tif (isExpanded && !navbarWidth) {\n\t\tsearchWidth = widthExpanded;\n\t}\n\tif (isExpanded && navbarWidth) {\n\t\tsearchWidth = widthFlexible;\n\t}\n\n\t// Set styles for the search.\n\tconst searchStyles = {\n\t\tright: `${startingRightPosition + horizontalOffset}rem`,\n\t\twidth: `${searchWidth}rem`,\n\t};\n\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-search';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Handle expanding the search input.\n\tconst handleExpand = () => {\n\t\tsetIsExpanded(true);\n\n\t\t// Focus on the input after a short delay.\n\t\tsetTimeout(() => {\n\t\t\tcomboboxRef.current.querySelector('input').focus();\n\t\t}, 500);\n\t};\n\n\t// Handle collapsing the search input.\n\tconst handleCollapse = () => {\n\t\tsetTimeout(() => {\n\t\t\tsetIsExpanded(false);\n\t\t}, 150);\n\t};\n\n\t// Handle selecting an option.\n\tconst handleSelect = (option) => {\n\t\t// Selected value should persist in the input.\n\t\tsetComboboxValue(option.value);\n\n\t\t// If an onOptionSelect function is provided, call it.\n\t\tif (onOptionSelect) {\n\t\t\tonOptionSelect(option);\n\t\t}\n\t};\n\n\t// Add event listener to detect clicks outside the combobox.\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (\n\t\t\t\tcomboboxRef.current &&\n\t\t\t\t!comboboxRef.current.contains(event.target as Node)\n\t\t\t) {\n\t\t\t\tsetIsExpanded(false);\n\t\t\t}\n\t\t};\n\n\t\tconst handleKeyboardNavigation = (event: KeyboardEvent) => {\n\t\t\t// Check if the Tab or Shift + Tab keys were pressed, and if the combobox is open and focused\n\t\t\tconst comboboxInput = comboboxRef.current?.querySelector('input');\n\n\t\t\tif (\n\t\t\t\tevent.key === 'Tab' &&\n\t\t\t\tisExpanded &&\n\t\t\t\tcomboboxInput === document.activeElement\n\t\t\t) {\n\t\t\t\tsetIsExpanded(false);\n\t\t\t}\n\t\t};\n\n\t\tif (isExpanded) {\n\t\t\t// Add event listeners for mouse click and keyboard events\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t\tdocument.addEventListener('keydown', handleKeyboardNavigation);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t\t\tdocument.removeEventListener('keydown', handleKeyboardNavigation);\n\t\t\t};\n\t\t}\n\t}, [isExpanded]);\n\n\t// Preprocess the site list into combobox options.\n\tconst siteOptions = siteList.map((site) => {\n\t\tconst { id: siteId, machineName, name } = site;\n\t\treturn {\n\t\t\tid: siteId,\n\t\t\tlabel: name,\n\t\t\tvalue: machineName ?? name,\n\t\t\toptionDisplay: <SiteOptionDisplay option={site} />,\n\t\t};\n\t});\n\n\t// Preprocess combobox.\n\tconst siteSearchCombobox = (\n\t\t<div ref={comboboxRef} className={`${baseClass}__combobox-wrapper`}>\n\t\t\t<Combobox\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasClearButton={false}\n\t\t\t\tid={`${id}-combobox`}\n\t\t\t\tdefaultValue={comboboxValue}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tlabel={label}\n\t\t\t\tlabelStrings={labelStrings}\n\t\t\t\tloadingText={loadingText}\n\t\t\t\tnoResultsText={noResultsText}\n\t\t\t\tonFocus={onFocus}\n\t\t\t\tonOptionSelect={handleSelect}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\toptions={siteOptions}\n\t\t\t\tshowLabel={false}\n\t\t\t\tclassName={`${baseClass}__combobox`}\n\t\t\t/>\n\t\t</div>\n\t);\n\n\t// Preprocess default markup.\n\tconst defaultMarkup = (\n\t\t<div className={`${baseClass}--inner`}>\n\t\t\t<span\n\t\t\t\tstyle={\n\t\t\t\t\tisExpanded ? { visibility: 'visible' } : { visibility: 'hidden' }\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{siteSearchCombobox}\n\t\t\t</span>\n\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__search-toggle`}\n\t\t\t\taria-label={labelStrings.openSearchButton}\n\t\t\t\tonClick={handleExpand}\n\t\t\t\ttype='button'\n\t\t\t\tstyle={\n\t\t\t\t\t!isExpanded ? { visibility: 'visible' } : { visibility: 'hidden' }\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<Tooltip\n\t\t\t\t\tcontent={labelStrings.openSearchButton}\n\t\t\t\t\tcustomTrigger={\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticonName='magnifyingGlass'\n\t\t\t\t\t\t\tclassName={`${baseClass}__search-toggle-icon`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</div>\n\t);\n\n\t// Preprocess mobile markup.\n\tconst mobileMarkup = (\n\t\t<div className={`${baseClass}--mobile-inner`}>{siteSearchCombobox}</div>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, mobileClass, className ?? ''])}\n\t\t\tid={id}\n\t\t\tstyle={!isMobile ? searchStyles : null}\n\t\t\tonKeyDown={\n\t\t\t\t!isMobile\n\t\t\t\t\t? (e) => {\n\t\t\t\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\t\t\t\thandleCollapse();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: null\n\t\t\t}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileMarkup : defaultMarkup}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport '../../utilities/container.css';\n\n/**\n * Prop types for Container\n */\ninterface ContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Width of the container.\n\t */\n\twidth?: ContainerWidth;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Container UI component\n */\nexport const Container = ({\n\tchildren,\n\twidth = 'standard',\n\tclassName,\n\t...props\n}: ContainerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-container';\n\tconst widthClass = width !== 'standard' ? `${baseClass}--${width}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, widthClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tcreateRef,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from 'react';\nimport FocusTrap from 'focus-trap-react';\n\n// Local utilities.\nimport {\n\tgetDescendants,\n\tinitiateSlots,\n\tmergeClasses,\n} from '@libs/components/utils';\n\n// Contexts.\nimport { DashboardContext } from '@layouts/DashboardGlobal/DashboardGlobal';\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { Container } from '@layouts/Container/Container';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport {\n\tPantheonLogo,\n\tPantheonLogoDisplayType,\n} from '@components/PantheonLogo/PantheonLogo';\n\n// Types.\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport './navbar.css';\n\n/**\n * Prop types for Navbar\n */\nexport interface NavbarProps extends ComponentPropsWithoutRef<'header'> {\n\t/**\n\t * Navbar content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Color type of the navbar.\n\t */\n\tcolorType?: 'default' | 'reverse' | 'reverse-transparent' | 'transparent';\n\t/**\n\t * PDS container width.\n\t */\n\tcontainerWidth?: ContainerWidth;\n\t/**\n\t * Hide the border at the bottom of the navbar.\n\t */\n\thideBorder?: boolean;\n\t/**\n\t * Hide the logo if it will be provided elsewhere in the layout. The logo will still be rendered in the mobile view.\n\t */\n\thideLogo?: boolean;\n\t/**\n\t * How should the Pantheon logo be displayed.\n\t */\n\tlogoDisplayType?: PantheonLogoDisplayType;\n\t/**\n\t * Where should the logo link to? A fully-formed link element.\n\t */\n\tlogoLinkContent?: ReactNode;\n\t/**\n\t * Logo image source. If provided, the Pantheon logo will not be rendered.\n\t */\n\tlogoSrc?: string;\n\t/**\n\t * Accepts a fully-formed link or a string (if a static site name is desired). Only necessary if logoDisplayType is `sub-brand`.\n\t */\n\tlogoSubBrand?: ReactNode | string;\n\t/**\n\t * Translation strings for accessibility.\n\t */\n\ttranslationStrings?: {\n\t\tcloseMobileNav: string;\n\t\topenMobileNav: string;\n\t};\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Navbar UI component\n */\nexport const Navbar = ({\n\tchildren,\n\tcolorType = 'default',\n\tcontainerWidth = 'x-wide',\n\thideBorder,\n\thideLogo = false,\n\tlogoDisplayType = 'full',\n\tlogoLinkContent,\n\tlogoSrc,\n\tlogoSubBrand,\n\ttranslationStrings = {\n\t\tcloseMobileNav: 'Close navigation area',\n\t\topenMobileNav: 'Open navigation area',\n\t},\n\tclassName,\n\t...props\n}: NavbarProps) => {\n\t// State\n\tconst [mobileNavOpen, setMobileNavOpen] = useState(false);\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Get dashboard context.\n\t// If the dashboard context is available, override the logoLinkContent prop.\n\tconst dashboardContext = useContext(DashboardContext);\n\tif (dashboardContext) {\n\t\tlogoLinkContent = dashboardContext.logoLinkContent;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-navbar';\n\tconst borderClass = hideBorder ? `${baseClass}--noBorder` : '';\n\tconst colorClass =\n\t\tcolorType !== 'default' ? `${baseClass}--${colorType}` : '';\n\tconst mobileClass = isMobile\n\t\t? `${baseClass}--isMobile`\n\t\t: `${baseClass}--notMobile`;\n\n\tconst handleKeyUp = (e: KeyboardEvent) => {\n\t\tconst key = e.key;\n\t\tlet flag = false;\n\n\t\tswitch (key) {\n\t\t\tcase 'Esc':\n\t\t\tcase 'Escape':\n\t\t\t\tsetMobileNavOpen(false);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// If something desired happened prevent default behavior.\n\t\tif (flag) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\t// Add keyup event listener.\n\tuseEffect(() => {\n\t\twindow.addEventListener('keyup', handleKeyUp);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keyup', handleKeyUp);\n\t\t};\n\t}, []);\n\n\t// Handle opening/closing of mobile menu via button.\n\tconst handleClick = () => setMobileNavOpen(!mobileNavOpen);\n\n\t// Adjust focus of menu items depending on visibility of the menu.\n\tconst parentRef = createRef<HTMLDivElement>();\n\n\tuseEffect(() => {\n\t\tif (isMobile) {\n\t\t\t// Get all child elements of the mobile menu.\n\t\t\tif (children) {\n\t\t\t\tconst childElements = getDescendants(\n\t\t\t\t\tdocument.querySelector('.pds-navbar__mobile'),\n\t\t\t\t);\n\n\t\t\t\t// Element types to remove focus.\n\t\t\t\tconst disableList = ['a', 'button', 'input', 'select', 'textarea'];\n\n\t\t\t\t// Remove focus from these types if mobile nav is closed.\n\t\t\t\tif (childElements) {\n\t\t\t\t\tif (!mobileNavOpen) {\n\t\t\t\t\t\t// Remove focus.\n\t\t\t\t\t\tchildElements.forEach((elem: any) => {\n\t\t\t\t\t\t\tif (disableList.includes(elem.nodeName.toLowerCase())) {\n\t\t\t\t\t\t\t\t(elem as HTMLElement).tabIndex = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// re-add focus.\n\t\t\t\t\t\tchildElements.forEach((elem: any) => {\n\t\t\t\t\t\t\tif (disableList.includes(elem.nodeName.toLowerCase())) {\n\t\t\t\t\t\t\t\t(elem as HTMLElement).tabIndex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [mobileNavOpen]);\n\n\t// Close the mobile menu when clicking the a link within it or the home link.\n\t// The is necessary for client-side routing.\n\tconst handleOpenMobileClick = (e: MouseEvent) => {\n\t\t// If the target is a link, close the menu.\n\t\tif ((e.target as HTMLElement).nodeName === 'A') {\n\t\t\tsetMobileNavOpen(false);\n\t\t}\n\t};\n\n\t// Add event listeners for mobile menu.\n\tuseEffect(() => {\n\t\tif (mobileNavOpen) {\n\t\t\tconst mobileNavbar = document.querySelector('.pds-navbar__bar-mobile');\n\t\t\tconst mobileMenu = document.querySelector('.pds-navbar__mobile');\n\n\t\t\tmobileNavbar.addEventListener('click', handleOpenMobileClick);\n\t\t\tmobileMenu.addEventListener('click', handleOpenMobileClick);\n\n\t\t\treturn () => {\n\t\t\t\tmobileNavbar.removeEventListener('click', handleOpenMobileClick);\n\t\t\t\tmobileMenu.removeEventListener('click', handleOpenMobileClick);\n\t\t\t};\n\t\t}\n\t}, [mobileNavOpen]);\n\n\t// Disallow all scrolling when mobile menu is open.\n\tuseEffect(() => {\n\t\tif (mobileNavOpen) {\n\t\t\tdocument.body.classList.add('pds-no-scroll');\n\t\t} else {\n\t\t\tdocument.body.classList.remove('pds-no-scroll');\n\t\t}\n\t}, [mobileNavOpen]);\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots for this component.\n\tconst itemsLeftContent = slots['items-left'];\n\tconst itemsRightContent = slots['items-right'];\n\n\t// Preprocess logo color type.\n\tlet logoColorType: 'default' | 'reverse' = 'default';\n\tif (colorType === 'reverse' || colorType === 'reverse-transparent') {\n\t\tlogoColorType = 'reverse';\n\t}\n\n\t// Get text from custom logo link if it exists.\n\tconst customLogoText = isValidElement(logoLinkContent)\n\t\t? logoLinkContent.props.children\n\t\t: null;\n\n\t// Preprocess custom logo\n\tconst customLogoMarkup =\n\t\tisValidElement(logoLinkContent) && customLogoText ? (\n\t\t\tcloneElement(logoLinkContent as ReactElement, {\n\t\t\t\tchildren: <img className={`${baseClass}__custom-logo`} src={logoSrc} />,\n\t\t\t\t'aria-label': customLogoText ? customLogoText : null,\n\t\t\t})\n\t\t) : (\n\t\t\t<img className={`${baseClass}__custom-logo`} src={logoSrc} alt='' />\n\t\t);\n\n\t// Function to render the logo based on the display type.\n\tconst renderLogoContent = () => {\n\t\tif (logoSrc) {\n\t\t\treturn customLogoMarkup;\n\t\t}\n\n\t\treturn (\n\t\t\t<PantheonLogo\n\t\t\t\tcolorType={logoColorType}\n\t\t\t\tdisplayType={logoDisplayType}\n\t\t\t\tlinkContent={logoLinkContent}\n\t\t\t\tsubBrand={logoSubBrand}\n\t\t\t/>\n\t\t);\n\t};\n\n\t// Render the toggle button.\n\tconst toggleButton = (\n\t\t<button\n\t\t\tclassName={`${baseClass}__menu-toggle`}\n\t\t\taria-label={\n\t\t\t\tmobileNavOpen\n\t\t\t\t\t? translationStrings.closeMobileNav\n\t\t\t\t\t: translationStrings.openMobileNav\n\t\t\t}\n\t\t\tonClick={handleClick}\n\t\t\ttype='button'\n\t\t>\n\t\t\t<Icon iconName={mobileNavOpen ? 'xmark' : 'bars'} iconSize='lg' />\n\t\t</button>\n\t);\n\n\t// Sort children based on mobile_order prop for mobile view.\n\tconst sortedChildren = React.Children.toArray(children).sort((a, b) => {\n\t\tconst aOrder = isValidElement(a)\n\t\t\t? parseInt(a.props['data-mobile-order'], 10) || Infinity\n\t\t\t: Infinity;\n\t\tconst bOrder = isValidElement(b)\n\t\t\t? parseInt(b.props['data-mobile-order'], 10) || Infinity\n\t\t\t: Infinity;\n\t\treturn aOrder - bOrder;\n\t});\n\n\t// Render the mobile menu.\n\tconst mobileNavOpenContents = (\n\t\t<div\n\t\t\tclassName={\n\t\t\t\tmobileNavOpen\n\t\t\t\t\t? `${baseClass}__mobile ${baseClass}__mobile--open`\n\t\t\t\t\t: `${baseClass}__mobile ${baseClass}__mobile--closed`\n\t\t\t}\n\t\t\tref={parentRef}\n\t\t>\n\t\t\t<Container>{sortedChildren}</Container>\n\t\t</div>\n\t);\n\n\t// Render the mobile markup.\n\tconst mobileMarkup = (\n\t\t<FocusTrap\n\t\t\tfocusTrapOptions={{\n\t\t\t\tclickOutsideDeactivates: true,\n\t\t\t\tinitialFocus: false,\n\t\t\t}}\n\t\t>\n\t\t\t<div>\n\t\t\t\t<Container className={`${baseClass}__bar-mobile`}>\n\t\t\t\t\t<div className={`${baseClass}__inner-mobile`}>\n\t\t\t\t\t\t{renderLogoContent()}\n\t\t\t\t\t\t{children && toggleButton}\n\t\t\t\t\t</div>\n\t\t\t\t</Container>\n\t\t\t\t<Container>{children && mobileNavOpenContents}</Container>\n\t\t\t</div>\n\t\t</FocusTrap>\n\t);\n\n\t// Render the wide markup.\n\tconst wideMarkup = (\n\t\t<Container width={containerWidth} className={`${baseClass}__inner`}>\n\t\t\t{!hideLogo && (\n\t\t\t\t<div className={`${baseClass}__logo`}>{renderLogoContent()}</div>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t{itemsLeftContent ? (\n\t\t\t\t\t<div className={`${baseClass}__items-left`}>{itemsLeftContent}</div>\n\t\t\t\t) : (\n\t\t\t\t\t<span></span>\n\t\t\t\t)}\n\t\t\t\t{itemsRightContent && (\n\t\t\t\t\t<div className={`${baseClass}__items-right`}>{itemsRightContent}</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Container>\n\t);\n\n\t// Render the output.\n\treturn (\n\t\t<header\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcolorClass,\n\t\t\t\tborderClass,\n\t\t\t\tmobileClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileMarkup : wideMarkup}\n\t\t</header>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useEffect, useState } from 'react';\n\nimport { MenuItem } from './NavMenu';\n\nimport {\n\tuseFloating,\n\tuseClick,\n\tuseDismiss,\n\tuseRole,\n\tuseHover,\n\tuseInteractions,\n\tautoUpdate,\n\tsafePolygon,\n} from '@floating-ui/react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\n/**\n * Prop types for NavMenuDropdown\n */\ninterface NavMenuDropdownProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Dropdown items.\n\t */\n\titems?: MenuItem[];\n\t/**\n\t * Dropdown label.\n\t */\n\tlabel?: string;\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n}\n\n/**\n * NavMenuDropdown UI component\n */\nexport const NavMenuDropdown = ({\n\titems,\n\tlabel,\n\tmobileMenuMaxWidth = 640,\n}: NavMenuDropdownProps) => {\n\t// State\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [windowWidth, setWindowWidth] = useState(0);\n\n\t// Add event listeners and get initial windowWidth.\n\tuseEffect(() => {\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\t// Handle responsiveness\n\tconst handleResize = () => {\n\t\tsetWindowWidth(window.innerWidth);\n\t};\n\n\t// Check if mobile.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-nav-menu';\n\n\t// FUI config\n\tconst { refs, context } = useFloating({\n\t\tplacement: 'bottom-start',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst click = useClick(context, { event: 'mousedown' });\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\n\t// Only hover on large breakpoint and above.\n\tlet hover;\n\tif (!isMobile) {\n\t\thover = useHover(context, {\n\t\t\thandleClose: safePolygon({\n\t\t\t\trequireIntent: false,\n\t\t\t\tbuffer: 10,\n\t\t\t\tblockPointerEvents: true,\n\t\t\t}),\n\t\t\tenabled: true,\n\t\t});\n\t} else {\n\t\thover = useHover(context, {\n\t\t\tenabled: false,\n\t\t});\n\t}\n\n\tconst { getReferenceProps, getFloatingProps } = useInteractions([\n\t\tdismiss,\n\t\trole,\n\t\tclick,\n\t\thover,\n\t]);\n\n\t// Function to determine if a link is active.\n\tconst isActiveItem = (item) => {\n\t\tif (item.isActive) {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\titem.linkContent &&\n\t\t\titem.linkContent.props.className &&\n\t\t\titem.linkContent.props.className.includes('pds-isActive')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\tref={refs.setReference}\n\t\t\t\ttype='button'\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t\t<Icon iconName='angleDown' className={`${baseClass}__trigger-icon`} />\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<ul\n\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t{items.map((item, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\trole={item.isSeparator ? 'separator' : 'menuitem'}\n\t\t\t\t\t\t\tclassName={`${baseClass}__item ${\n\t\t\t\t\t\t\t\titem.isSeparator\n\t\t\t\t\t\t\t\t\t? `${baseClass}__dropdown--separator`\n\t\t\t\t\t\t\t\t\t: `${baseClass}__item--second-level`\n\t\t\t\t\t\t\t} ${isActiveItem(item) ? `${baseClass}__item--active` : null}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!item.isSeparator && item.linkContent}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { createRandomID } from '@libs/components/utils';\n\nimport { NavMenuDropdown } from './NavMenuDropdown';\n\nimport './nav-menu.css';\n\n/**\n * Prop types for MenuItem\n */\nexport interface MenuItem {\n\tid?: string;\n\tlabel: string;\n\tlinks?: MenuItem[];\n\tlinkContent?: React.ReactNode;\n\tisActive?: boolean;\n\tisSeparator?: boolean;\n}\n\n/**\n * Prop types for NavMenu\n */\ninterface NavMenuProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Aria label for `nav` element.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Color scheme.\n\t */\n\tcolorType?: 'default' | 'reverse';\n\t/**\n\t * Menu Items.\n\t */\n\tmenuItems?: MenuItem[];\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * NavMenu UI component\n */\nexport const NavMenu = ({\n\tariaLabel = 'Main Navigation',\n\tcolorType = 'default',\n\tmenuItems,\n\tmobileMenuMaxWidth = 640,\n\tclassName,\n\t...props\n}: NavMenuProps) => {\n\t// State\n\tconst [windowWidth, setWindowWidth] = useState(1025);\n\tconst [dropdownIndex, setDropdownIndex] = useState(null);\n\tconst [activeIndex, setActiveIndex] = useState(-1);\n\tconst [navDirection, setNavDirection] = useState(null);\n\tconst [dropdownContainer, setDropdownContainer] = useState({\n\t\tcontainer: null as HTMLElement | null,\n\t\tcontainerChildren: [],\n\t});\n\n\t// Add event listeners and get initial windowWidth.\n\tuseEffect(() => {\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\t// Handle responsiveness.\n\tconst handleResize = () => {\n\t\tsetWindowWidth(window.innerWidth);\n\t};\n\n\t// Check if mobile.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Handle dropdown navigation.\n\tuseEffect(() => {\n\t\tif (dropdownContainer.containerChildren[dropdownIndex]) {\n\t\t\tif (\n\t\t\t\tdropdownContainer.containerChildren[dropdownIndex].classList.contains(\n\t\t\t\t\t'pds-nav-menu__dropdown--separator',\n\t\t\t\t) &&\n\t\t\t\tnavDirection == 'down'\n\t\t\t) {\n\t\t\t\tsetDropdownIndex(dropdownIndex + 1);\n\t\t\t} else if (\n\t\t\t\tdropdownContainer.containerChildren[dropdownIndex].classList.contains(\n\t\t\t\t\t'pds-nav-menu__dropdown--separator',\n\t\t\t\t) &&\n\t\t\t\tnavDirection == 'up'\n\t\t\t) {\n\t\t\t\tsetDropdownIndex(dropdownIndex - 1);\n\t\t\t} else {\n\t\t\t\tdropdownContainer.containerChildren[dropdownIndex].children[0].focus();\n\t\t\t}\n\t\t}\n\t}, [dropdownIndex]);\n\n\tuseEffect(() => {\n\t\tif (activeIndex == -1) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tnavRefs.current[activeIndex].children[0].blur();\n\t\t\tnavRefs.current[activeIndex].children[0].focus({\n\t\t\t\tfocusVisible: true,\n\t\t\t});\n\t\t}\n\t}, [activeIndex]);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-nav-menu';\n\tconst colorClass =\n\t\tcolorType !== 'default' ? `${baseClass}--${colorType}` : '';\n\tconst mobileClass = isMobile\n\t\t? `${baseClass}--isMobile`\n\t\t: `${baseClass}--notMobile`;\n\n\t// Set up ref to the nav items.\n\tconst navRefs = useRef([]);\n\n\t// Handle keyboard navigation.\n\tconst handleKeyNav = (e) => {\n\t\tconst count = navRefs.current.length - 1;\n\t\tconst nextTab = () => {\n\t\t\tsetDropdownIndex(-1);\n\t\t\tactiveIndex === -1\n\t\t\t\t? setActiveIndex(1)\n\t\t\t\t: activeIndex === count\n\t\t\t\t\t? setActiveIndex(0)\n\t\t\t\t\t: setActiveIndex(activeIndex + 1);\n\t\t};\n\t\tconst prevTab = () => {\n\t\t\tsetDropdownIndex(-1);\n\t\t\tactiveIndex === 0\n\t\t\t\t? setActiveIndex(count)\n\t\t\t\t: setActiveIndex(activeIndex - 1);\n\t\t};\n\n\t\tconst down = () => {\n\t\t\tsetNavDirection('down');\n\t\t\tconst downContainer = e.target.parentNode.children[1];\n\t\t\tconst downChildren =\n\t\t\t\te.target?.parentNode.children[1]?.children ||\n\t\t\t\te.target?.parentNode.parentNode.children[1]?.children;\n\t\t\tif (\n\t\t\t\tdropdownContainer.container != downContainer &&\n\t\t\t\tdownContainer != undefined\n\t\t\t) {\n\t\t\t\tsetDropdownContainer({\n\t\t\t\t\tcontainer: downContainer,\n\t\t\t\t\tcontainerChildren: [...downChildren],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (dropdownIndex === null) {\n\t\t\t\tsetDropdownIndex(0);\n\t\t\t} else if (\n\t\t\t\tdropdownIndex ==\n\t\t\t\tdropdownContainer.containerChildren.length - 1\n\t\t\t) {\n\t\t\t\tsetDropdownIndex(0);\n\t\t\t} else {\n\t\t\t\tsetDropdownIndex(parseInt(dropdownIndex) + 1);\n\t\t\t}\n\t\t};\n\n\t\tconst up = () => {\n\t\t\tsetNavDirection('up');\n\t\t\tif (dropdownIndex === 0) {\n\t\t\t\tsetDropdownIndex(dropdownContainer.containerChildren.length - 1);\n\t\t\t} else {\n\t\t\t\tsetDropdownIndex(parseInt(dropdownIndex) - 1);\n\t\t\t}\n\t\t};\n\n\t\tconst keyMap = {\n\t\t\tArrowRight: nextTab,\n\t\t\tArrowLeft: prevTab,\n\t\t\tArrowDown: down,\n\t\t\tArrowUp: up,\n\t\t};\n\n\t\tconst action = keyMap[e.code];\n\t\tif (action) {\n\t\t\taction();\n\t\t}\n\t};\n\n\t// Function to determine if a link is in the active trail.\n\tconst isActiveTrail = (item) => {\n\t\t// Via the isActive property on the item.\n\t\tif (item.isActive) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Via the pds-isActive class on the link.\n\t\tif (\n\t\t\titem.linkContent &&\n\t\t\titem.linkContent.props.className &&\n\t\t\titem.linkContent.props.className.includes('pds-isActive')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Repeat for child links.\n\t\tif (item.links) {\n\t\t\tfor (let i = 0; i < item.links.length; i++) {\n\t\t\t\tif (isActiveTrail(item.links[i])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t// Preprocess menu links\n\tconst processedMenuLinks = [];\n\n\tmenuItems.map((item, index) => {\n\t\t// If ID is not passed into menu item, generate one.\n\t\tconst fallbackItemID = `item-${createRandomID()}`;\n\t\tconst itemID = item.id ? item.id : fallbackItemID;\n\n\t\tif (item.links) {\n\t\t\tprocessedMenuLinks.push(\n\t\t\t\t<li\n\t\t\t\t\tkey={`${index}-dropdown`}\n\t\t\t\t\tid={itemID}\n\t\t\t\t\tref={(navLink) => (navRefs.current[index] = navLink)}\n\t\t\t\t\tclassName={`${baseClass}__item ${baseClass}__item--top-level ${baseClass}__item--has-children ${\n\t\t\t\t\t\tisActiveTrail(item) === true ? `${baseClass}__item--active` : ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t<NavMenuDropdown\n\t\t\t\t\t\tlabel={item.label}\n\t\t\t\t\t\titems={item.links}\n\t\t\t\t\t\tmobileMenuMaxWidth={mobileMenuMaxWidth}\n\t\t\t\t\t/>\n\t\t\t\t</li>,\n\t\t\t);\n\t\t} else {\n\t\t\tprocessedMenuLinks.push(\n\t\t\t\t<li\n\t\t\t\t\tkey={index}\n\t\t\t\t\tid={itemID}\n\t\t\t\t\tref={(navLink) => (navRefs.current[index] = navLink)}\n\t\t\t\t\tclassName={`${baseClass}__item ${baseClass}__item--top-level ${baseClass}__item--has-link ${\n\t\t\t\t\t\tisActiveTrail(item) === true ? `${baseClass}__item--active` : ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{item.linkContent}\n\t\t\t\t</li>,\n\t\t\t);\n\t\t}\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\tclassName={mergeClasses([baseClass, colorClass, mobileClass, className])}\n\t\t\taria-label={ariaLabel}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\thandleKeyNav(e);\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ul className={`${baseClass}__menu`}>{processedMenuLinks}</ul>\n\t\t</nav>\n\t);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n\tComponentPropsWithoutRef,\n\tisValidElement,\n\tMouseEvent,\n\tReactElement,\n\tcloneElement,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tgetLinkContentString,\n\tisActiveTrail,\n\tisInteractiveElement,\n\tprocessNavLinkContent,\n} from '../navigation-utilities';\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n// Components.\nimport { DropdownMenu } from '@components/navigation/DropdownMenu/DropdownMenu';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './side-nav.css';\n\n/**\n * Prop types for SideNav\n */\nexport interface SideNavProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Heading text. If a link is passed, it will be rendered as a link.\n\t */\n\theadingText?: string | ReactElement;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems: NavigationItem[];\n\t/**\n\t * Text to display in the mobile menu trigger button when no active link is found.\n\t */\n\tmobileMenuSelectTextFallback?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SideNav UI component\n */\nexport const SideNav = ({\n\tariaLabel,\n\theadingText,\n\tlabels = {\n\t\tsubmenu: 'submenu',\n\t\ttoggle: 'Toggle',\n\t},\n\tmenuItems,\n\tmobileMenuSelectTextFallback = 'Navigate to...',\n\tclassName,\n\t...props\n}: SideNavProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-side-nav';\n\tconst itemClass = `${baseClass}__item`;\n\tconst menuClass = `${baseClass}__menu`;\n\n\t// Handle the expand/collapse of nested menus.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Control menu classes and aria-expanded attribute.\n\t\tconst button = e.currentTarget as HTMLButtonElement;\n\n\t\t// Find the submenu.\n\t\tlet menu: HTMLElement | null = null;\n\n\t\t// For the single-button structure, the menu is the next sibling of the button.\n\t\t// For the wrapper structure, the menu is the next sibling of the wrapper.\n\t\tconst wrapper = button.parentElement;\n\t\tif (wrapper?.classList.contains(`${itemClass}-wrapper`)) {\n\t\t\t// Button is inside wrapper, menu is next sibling of wrapper.\n\t\t\tmenu = wrapper.nextElementSibling as HTMLElement;\n\t\t} else {\n\t\t\t// Button is direct child, menu is next sibling of button.\n\t\t\tmenu = button.nextElementSibling as HTMLElement;\n\t\t}\n\n\t\tif (!menu) return;\n\n\t\tconst shouldExpand = button.getAttribute('aria-expanded') === 'false';\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`, shouldExpand);\n\t\tbutton.setAttribute('aria-expanded', shouldExpand ? 'true' : 'false');\n\n\t\t// Toggle menu visibility using CSS classes.\n\t\tmenu.classList.toggle(`${menuClass}--expanded`, shouldExpand);\n\t};\n\n\t// Function to render a top-level menu item and its children.\n\tconst renderMenuItem = (item: NavigationItem, index: number) => {\n\t\tconst { linkContent, links } = item;\n\n\t\tconst isActive = isActiveTrail(item);\n\t\tconst isInteractive = isInteractiveElement(linkContent);\n\t\tconst isExpanded = isActive;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={index}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\t`${itemClass}--top-level`,\n\t\t\t\t\tlinks ? `${itemClass}--has-children` : null,\n\t\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{links ? (\n\t\t\t\t\tisInteractive ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t\t\t\t\t\t{processNavLinkContent(linkContent, links)}\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t\t\t\t\t\tisExpanded ? `${baseClass}__toggle--expanded` : null,\n\t\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon iconName='angleDown' iconSize='md' />\n\t\t\t\t\t\t\t\t\t<span className='visually-hidden'>{`${labels.toggle} ${getLinkContentString(linkContent)} ${labels.submenu}`}</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\tmenuClass,\n\t\t\t\t\t\t\t\t\t`${menuClass}--second-level`,\n\t\t\t\t\t\t\t\t\tisExpanded ? `${menuClass}--expanded` : null,\n\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{links.map((secondLevelItem, index) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t\t\t\t\t\t\t`${itemClass}--second-level`,\n\t\t\t\t\t\t\t\t\t\t\t\tisActiveTrail(secondLevelItem)\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `${itemClass}--active`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{processNavLinkContent(\n\t\t\t\t\t\t\t\t\t\t\t\tsecondLevelItem.linkContent,\n\t\t\t\t\t\t\t\t\t\t\t\tsecondLevelItem.links,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// For non-interactive elements (strings, spans), make the whole thing a button.\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t\t\t\t\t`${baseClass}__toggle--main`,\n\t\t\t\t\t\t\t\t\tisExpanded ? `${baseClass}__toggle--expanded` : null,\n\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{isValidElement(linkContent) && linkContent.type === 'span' ? (\n\t\t\t\t\t\t\t\t\t// If linkContent is already a span, clone it and add the toggle-content class.\n\t\t\t\t\t\t\t\t\tcloneElement(linkContent as ReactElement<any>, {\n\t\t\t\t\t\t\t\t\t\tclassName: mergeClasses([\n\t\t\t\t\t\t\t\t\t\t\t(linkContent.props as any).className,\n\t\t\t\t\t\t\t\t\t\t\t`${baseClass}__toggle-content`,\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t// For other content types, wrap in toggle-content span\n\t\t\t\t\t\t\t\t\t<span className={`${baseClass}__toggle-content`}>\n\t\t\t\t\t\t\t\t\t\t{linkContent}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Icon iconName='angleDown' iconSize='md' />\n\t\t\t\t\t\t\t\t<span className='visually-hidden'>{`${labels.toggle} ${getLinkContentString(linkContent)} ${labels.submenu}`}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\tmenuClass,\n\t\t\t\t\t\t\t\t\t`${menuClass}--second-level`,\n\t\t\t\t\t\t\t\t\tisExpanded ? `${menuClass}--expanded` : null,\n\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{links.map((secondLevelItem, index) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t\t\t\t\t\t\t`${itemClass}--second-level`,\n\t\t\t\t\t\t\t\t\t\t\t\tisActiveTrail(secondLevelItem)\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `${itemClass}--active`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{processNavLinkContent(\n\t\t\t\t\t\t\t\t\t\t\t\tsecondLevelItem.linkContent,\n\t\t\t\t\t\t\t\t\t\t\t\tsecondLevelItem.links,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t// If no top-level child links are present, render the link content as is.\n\t\t\t\t\tlinkContent\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess markup for the notMobile display\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t{headingText && (\n\t\t\t\t<h2 className={`${baseClass}__heading pds-ts-l`}>{headingText}</h2>\n\t\t\t)}\n\t\t\t{menuItems.length > 0 && (\n\t\t\t\t<ul className={`${baseClass}__menu ${baseClass}__menu--top-level`}>\n\t\t\t\t\t{menuItems.map((item, index) => renderMenuItem(item, index))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Preprocess markup for the isMobile display\n\tconst mobileMarkup = (\n\t\t<DropdownMenu\n\t\t\theadingText={headingText}\n\t\t\tmenuItems={menuItems}\n\t\t\tselectTextFallback={mobileMenuSelectTextFallback}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{defaultMarkup}\n\t\t\t{mobileMarkup}\n\t\t</nav>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tKeyboardEvent,\n\tMouseEvent,\n\tReactElement,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tisActiveTrail,\n\tgetLinkContentString,\n\tprocessNavLinkContent,\n} from '../navigation-utilities';\nimport { SPACING_2XS } from '@vars/spacing';\nimport {\n\t// ANIMATION_TRANSITION_REVEAL_DURATION,\n\tANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n} from '@vars/animation';\n\n// Set the animation duration to 0 for now.\nconst ANIMATION_TRANSITION_REVEAL_DURATION = 0;\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n// Components.\nimport { DropdownMenu } from '@components/navigation/DropdownMenu/DropdownMenu';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './side-nav-compact.css';\n\n// Extend the NavigationItem type.\nexport type SideNavCompactItem = NavigationItem & {\n\t/**\n\t * A boolean indicating whether the item is a submenu.\n\t */\n\tpath?: string;\n};\n\n/**\n * Prop types for SideNavCompact\n */\nexport interface SideNavCompactProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Whether the menu should be rendered as a mobile menu when the viewport is at or below the mobileMenuMaxWidth.\n\t */\n\thasMobileMenu?: boolean;\n\t/**\n\t * Heading text. If a link is passed, it will be rendered as a link.\n\t */\n\theadingText?: string | ReactElement;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems: SideNavCompactItem[];\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n\t/**\n\t * Text to display in the mobile menu trigger button when no active link is found.\n\t */\n\tmobileMenuSelectTextFallback?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SideNavCompact UI component\n */\nexport const SideNavCompact = ({\n\tariaLabel,\n\thasMobileMenu = true,\n\theadingText,\n\tlabels = {\n\t\tsubmenu: 'submenu',\n\t\ttoggle: 'Toggle',\n\t},\n\tmenuItems,\n\tmobileMenuMaxWidth = 640,\n\tmobileMenuSelectTextFallback = 'Navigate to...',\n\tclassName,\n\t...props\n}: SideNavCompactProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-side-nav-compact';\n\tconst itemClass = `${baseClass}__item`;\n\tconst menuClass = `${baseClass}__menu`;\n\n\t// State\n\tconst [windowWidth, setWindowWidth] = useState(1025);\n\tconst [isNavFocused, setIsNavFocused] = useState(false);\n\tconst [expandedMenus, setExpandedMenus] = useState<number[]>([]);\n\n\tconst navRef = useRef<HTMLElement>(null);\n\tconst headingAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\tconst focusableElementsRef = useRef<(HTMLElement | null)[]>([]);\n\tconst currentFocusIndex = useRef<number>(-1);\n\n\t// Add event listener and get initial windowWidth.\n\tuseEffect(() => {\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\t// Set up keyboard navigation\n\tuseEffect(() => {\n\t\t// Only set up keyboard navigation when not in mobile view\n\t\tif (!isMobile || !hasMobileMenu) {\n\t\t\tcollectFocusableElements();\n\t\t}\n\t}, [windowWidth, menuItems, expandedMenus]);\n\n\tuseEffect(() => {\n\t\tif (navRef.current) {\n\t\t\tconst headingAnchor = navRef.current.querySelector(\n\t\t\t\t'.pds-side-nav-compact__heading a',\n\t\t\t);\n\t\t\tif (headingAnchor) {\n\t\t\t\theadingAnchorRef.current = headingAnchor as HTMLAnchorElement;\n\t\t\t}\n\t\t}\n\t}, [headingText]);\n\n\t// Initialize the active menus when loading the component\n\tuseEffect(() => {\n\t\t// Finds the elements with the active trail and adds them to the expandedMenus state\n\t\tif (navRef.current && menuItems.length > 0) {\n\t\t\tconst activeItems = Array.from(\n\t\t\t\tnavRef.current.querySelectorAll(`.${itemClass}--active`),\n\t\t\t);\n\n\t\t\tconst activeItemIndices = activeItems\n\t\t\t\t.map((item) => {\n\t\t\t\t\tconst topLevelParent = item.closest(`.${itemClass}--top-level`);\n\t\t\t\t\tif (topLevelParent) {\n\t\t\t\t\t\treturn Array.from(\n\t\t\t\t\t\t\tnavRef.current?.querySelectorAll(`.${itemClass}--top-level`) ||\n\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t).indexOf(topLevelParent);\n\t\t\t\t\t}\n\t\t\t\t\treturn -1;\n\t\t\t\t})\n\t\t\t\t.filter((index) => index !== -1);\n\n\t\t\t// Remove duplicated indexes\n\t\t\tconst uniqueIndices = Array.from(new Set(activeItemIndices));\n\t\t\tsetExpandedMenus(uniqueIndices);\n\t\t}\n\t}, [menuItems]);\n\n\t// Handle responsiveness.\n\tconst handleResize = () => {\n\t\tsetWindowWidth(window.innerWidth);\n\t};\n\n\t// Check if mobile width.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Collect all focusable elements (links and toggle buttons)\n\tconst collectFocusableElements = () => {\n\t\tif (!navRef.current) return;\n\n\t\t// Find all links and buttons within the navigation\n\t\tconst elements = Array.from(\n\t\t\tnavRef.current.querySelectorAll(\n\t\t\t\t'.pds-side-nav-compact__menu a, button.pds-side-nav-compact__toggle',\n\t\t\t),\n\t\t) as HTMLElement[];\n\n\t\t// Filter out any elements that are not visible or in collapsed submenus\n\t\tfocusableElementsRef.current = elements.filter((element) => {\n\t\t\t// Check if the element is visible\n\t\t\tconst style = window.getComputedStyle(element);\n\t\t\tif (style.display === 'none') return false;\n\n\t\t\t// Check if this element is in a collapsed submenu\n\t\t\tconst submenu = element.closest(`.${menuClass}`);\n\t\t\tif (\n\t\t\t\tsubmenu &&\n\t\t\t\t!submenu.classList.contains(`${menuClass}--expanded`) &&\n\t\t\t\t!submenu.classList.contains(`${menuClass}--top-level`)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t};\n\n\t// Find the toggle button associated with a menu item\n\tconst findAssociatedToggleButton = (\n\t\telement: HTMLElement,\n\t): HTMLButtonElement | null => {\n\t\t// If it's a link, look for the toggle button in the same wrapper.\n\t\tconst wrapper = element.closest(`.${itemClass}-wrapper`);\n\t\tif (wrapper) {\n\t\t\treturn wrapper.querySelector(\n\t\t\t\t`.${baseClass}__toggle`,\n\t\t\t) as HTMLButtonElement;\n\t\t}\n\n\t\t// If not found, look for the button in the parent element\n\t\tconst parentItem = element.closest(`.${itemClass}`);\n\t\tif (parentItem) {\n\t\t\treturn parentItem.querySelector(\n\t\t\t\t`.${baseClass}__toggle`,\n\t\t\t) as HTMLButtonElement;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\t// Find the submenu item associated with an item\n\tconst findAssociatedSubmenu = (element: HTMLElement): HTMLElement | null => {\n\t\t// If it's a toggle button, the submenu is the next sibling element of the wrapper\n\t\tif (element.classList.contains(`${baseClass}__toggle`)) {\n\t\t\tconst wrapper = element.closest(`.${itemClass}-wrapper`);\n\t\t\treturn (wrapper?.nextElementSibling as HTMLElement) || null;\n\t\t}\n\n\t\t// If it's a link, find the submenu associated with the parent element\n\t\tconst parentItem = element.closest(`.${itemClass}`);\n\t\tif (parentItem) {\n\t\t\treturn parentItem.querySelector(`.${menuClass}`) as HTMLElement;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\t// Checks if an item is drop-down (has a submenu)\n\tconst isExpandable = (element: HTMLElement): boolean => {\n\t\tif (element.classList.contains(`${baseClass}__toggle`)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst wrapper = element.closest(`.${itemClass}-wrapper`);\n\t\tif (wrapper) {\n\t\t\tconst toggleButton = wrapper.querySelector(`.${baseClass}__toggle`);\n\t\t\treturn !!toggleButton;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\t// Handle keyboard navigation\n\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\tif (!isNavFocused) return;\n\n\t\t// Get the currently focused element\n\t\tconst currentElement =\n\t\t\tfocusableElementsRef.current[currentFocusIndex.current];\n\t\tif (!currentElement) return;\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown': {\n\t\t\t\te.preventDefault();\n\t\t\t\tnavigateFocus(1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowUp': {\n\t\t\t\te.preventDefault();\n\t\t\t\tnavigateFocus(-1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowRight': {\n\t\t\t\te.preventDefault();\n\t\t\t\t// Handle expansion regardless of whether the focus is on the toggle button or the link\n\t\t\t\tif (isExpandable(currentElement)) {\n\t\t\t\t\tconst toggleButton = currentElement.classList.contains(\n\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t)\n\t\t\t\t\t\t? (currentElement as HTMLButtonElement)\n\t\t\t\t\t\t: findAssociatedToggleButton(currentElement);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoggleButton &&\n\t\t\t\t\t\ttoggleButton.getAttribute('aria-expanded') === 'false'\n\t\t\t\t\t) {\n\t\t\t\t\t\thandleExpand({\n\t\t\t\t\t\t\tcurrentTarget: toggleButton,\n\t\t\t\t\t\t} as unknown as MouseEvent<HTMLButtonElement>);\n\n\t\t\t\t\t\t// Focus first element in the expanded submenu after animation completes\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcollectFocusableElements();\n\n\t\t\t\t\t\t\t// Find the first link in the expanded submenu\n\t\t\t\t\t\t\tconst expandedMenu = findAssociatedSubmenu(toggleButton);\n\t\t\t\t\t\t\tif (expandedMenu) {\n\t\t\t\t\t\t\t\tconst firstLink = expandedMenu.querySelector(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t) as HTMLElement;\n\t\t\t\t\t\t\t\tif (firstLink) {\n\t\t\t\t\t\t\t\t\tfirstLink.focus();\n\t\t\t\t\t\t\t\t\t// Update current focus index to match the newly focused element\n\t\t\t\t\t\t\t\t\tcurrentFocusIndex.current =\n\t\t\t\t\t\t\t\t\t\tfocusableElementsRef.current.indexOf(firstLink);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, ANIMATION_TRANSITION_REVEAL_DURATION + 50);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowLeft': {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// If it's a submenu, collapse only the current immediate menu\n\t\t\t\tconst submenu = currentElement.closest(`.${menuClass}`);\n\t\t\t\tif (submenu && !submenu.classList.contains(`${menuClass}--top-level`)) {\n\t\t\t\t\t// Find the direct parent item of the current submenu\n\t\t\t\t\tconst parentItem = submenu.parentElement;\n\t\t\t\t\tif (parentItem && parentItem.classList.contains(itemClass)) {\n\t\t\t\t\t\tconst toggleButton = parentItem.querySelector(\n\t\t\t\t\t\t\t`.${baseClass}__toggle`,\n\t\t\t\t\t\t) as HTMLButtonElement;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttoggleButton &&\n\t\t\t\t\t\t\ttoggleButton.getAttribute('aria-expanded') === 'true'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\thandleExpand({\n\t\t\t\t\t\t\t\tcurrentTarget: toggleButton,\n\t\t\t\t\t\t\t} as unknown as MouseEvent<HTMLButtonElement>);\n\n\t\t\t\t\t\t\t// After collapsing, focus on the parent item\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tcollectFocusableElements();\n\n\t\t\t\t\t\t\t\t// Find the link in the parent item or the toggle button\n\t\t\t\t\t\t\t\tconst parentLink = parentItem.querySelector('a');\n\t\t\t\t\t\t\t\tconst elementToFocus = parentLink || toggleButton;\n\n\t\t\t\t\t\t\t\tif (elementToFocus) {\n\t\t\t\t\t\t\t\t\telementToFocus.focus();\n\t\t\t\t\t\t\t\t\t// Update focus index\n\t\t\t\t\t\t\t\t\tcurrentFocusIndex.current =\n\t\t\t\t\t\t\t\t\t\tfocusableElementsRef.current.indexOf(elementToFocus);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, ANIMATION_TRANSITION_REVEAL_DURATION);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If we are in a dropdown element at the top level, collapse it\n\t\t\t\telse if (isExpandable(currentElement)) {\n\t\t\t\t\tconst toggleButton = currentElement.classList.contains(\n\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t)\n\t\t\t\t\t\t? (currentElement as HTMLButtonElement)\n\t\t\t\t\t\t: findAssociatedToggleButton(currentElement);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttoggleButton &&\n\t\t\t\t\t\ttoggleButton.getAttribute('aria-expanded') === 'true'\n\t\t\t\t\t) {\n\t\t\t\t\t\thandleExpand({\n\t\t\t\t\t\t\tcurrentTarget: toggleButton,\n\t\t\t\t\t\t} as unknown as MouseEvent<HTMLButtonElement>);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Navigate focus between elements\n\tconst navigateFocus = (direction: number) => {\n\t\tconst elements = focusableElementsRef.current;\n\t\tif (elements.length === 0) return;\n\n\t\t// Calculate next index\n\t\tlet nextIndex = currentFocusIndex.current + direction;\n\n\t\t// Handle wraparound\n\t\tif (nextIndex < 0) nextIndex = elements.length - 1;\n\t\tif (nextIndex >= elements.length) nextIndex = 0;\n\n\t\t// Update focus\n\t\tcurrentFocusIndex.current = nextIndex;\n\t\telements[nextIndex]?.focus();\n\t};\n\n\t// Handle tab key to manage component focus state\n\tconst handleTabKey = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Tab') {\n\t\t\t// If pressing Tab inside the navigation\n\t\t\tif (isNavFocused) {\n\t\t\t\tif (!e.shiftKey) {\n\t\t\t\t\t// Tab forward\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tsetIsNavFocused(false);\n\t\t\t\t\tcurrentFocusIndex.current = -1;\n\n\t\t\t\t\t// Find next tabbable element outside the navigation\n\t\t\t\t\tconst allTabbable = Array.from(\n\t\t\t\t\t\tdocument.querySelectorAll(\n\t\t\t\t\t\t\t'a, button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n\t\t\t\t\t\t),\n\t\t\t\t\t) as HTMLElement[];\n\n\t\t\t\t\tconst navIndex = allTabbable.indexOf(navRef.current as HTMLElement);\n\t\t\t\t\tif (navIndex !== -1 && navIndex < allTabbable.length - 1) {\n\t\t\t\t\t\tallTabbable[navIndex + 1].focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Handle the component receiving focus\n\tconst handleNavFocus = (e: React.FocusEvent) => {\n\t\t// If the nav itself receives focus (from tabbing)\n\t\tif (e.target === navRef.current && !isNavFocused) {\n\t\t\te.preventDefault();\n\t\t\tsetIsNavFocused(true);\n\t\t\tcollectFocusableElements();\n\n\t\t\t// Focus on the first focusable element\n\t\t\tif (focusableElementsRef.current.length > 0) {\n\t\t\t\tcurrentFocusIndex.current = 0;\n\t\t\t\tfocusableElementsRef.current[0]?.focus();\n\t\t\t}\n\t\t}\n\t\t// If an element inside the nav receives focus\n\t\telse if (e.target !== navRef.current && !isNavFocused) {\n\t\t\t// Check if the focused element is one of our focusable elements\n\t\t\tcollectFocusableElements();\n\t\t\tconst focusedIndex = focusableElementsRef.current.indexOf(\n\t\t\t\te.target as HTMLElement,\n\t\t\t);\n\t\t\tif (focusedIndex !== -1) {\n\t\t\t\tsetIsNavFocused(true);\n\t\t\t\tcurrentFocusIndex.current = focusedIndex;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Handle the expand/collapse of nested menus.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\tconst button = e.currentTarget;\n\t\tconst menu = button.parentElement?.nextElementSibling as HTMLElement;\n\t\tif (!menu) return;\n\n\t\tconst isExpanding = button.getAttribute('aria-expanded') === 'false';\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`, isExpanding);\n\t\tbutton.setAttribute('aria-expanded', isExpanding ? 'true' : 'false');\n\n\t\t// Find the menu item this button belongs to\n\t\tconst parentItem = button.closest(`.${itemClass}`);\n\t\tif (parentItem) {\n\t\t\t// Get index-based identifier\n\t\t\tconst itemIndex = Array.from(\n\t\t\t\tnavRef.current?.querySelectorAll(`.${itemClass}--top-level`) || [],\n\t\t\t).indexOf(parentItem);\n\n\t\t\t// Update expanded menus state\n\t\t\tsetExpandedMenus((prev) => {\n\t\t\t\tif (isExpanding && !prev.includes(itemIndex) && itemIndex !== -1) {\n\t\t\t\t\treturn [...prev, itemIndex];\n\t\t\t\t} else if (!isExpanding) {\n\t\t\t\t\treturn prev.filter((idx) => idx !== itemIndex);\n\t\t\t\t}\n\t\t\t\treturn prev;\n\t\t\t});\n\t\t}\n\n\t\tif (isExpanding) {\n\t\t\texpandMenu(menu);\n\t\t} else {\n\t\t\tcollapseMenu(menu);\n\t\t}\n\t};\n\n\tconst expandMenu = (menu: HTMLElement) => {\n\t\tmenu.style.display = 'flex'; // Initially set display: flex to calculate height correctly\n\t\tmenu.style.height = 'auto';\n\t\tconst menuHeight = `${menu.scrollHeight}px`;\n\n\t\tmenu.style.marginBlockStart = '0';\n\n\t\tmenu.animate(\n\t\t\t[\n\t\t\t\t{ height: '0px', opacity: '0', marginBlockStart: '0' },\n\t\t\t\t{\n\t\t\t\t\theight: menuHeight,\n\t\t\t\t\topacity: '1',\n\t\t\t\t\tmarginBlockStart: `${SPACING_2XS}rem`,\n\t\t\t\t},\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t},\n\t\t).onfinish = () => {\n\t\t\tObject.assign(menu.style, {\n\t\t\t\theight: 'auto',\n\t\t\t\topacity: '1',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tmarginBlockStart: `${SPACING_2XS}rem`,\n\t\t\t});\n\t\t\tmenu.classList.add(`${menuClass}--expanded`);\n\n\t\t\t// Update focusable elements after expanding menu\n\t\t\tcollectFocusableElements();\n\t\t};\n\t};\n\n\tconst collapseMenu = (menu: HTMLElement) => {\n\t\tconst menuHeight = `${menu.scrollHeight}px`;\n\n\t\tconst animation = menu.animate(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\theight: menuHeight,\n\t\t\t\t\topacity: '1',\n\t\t\t\t\tmarginBlockStart: `${SPACING_2XS}rem`,\n\t\t\t\t},\n\t\t\t\t{ height: '0px', opacity: '0', marginBlockStart: '0' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t},\n\t\t);\n\n\t\tanimation.onfinish = () => {\n\t\t\tmenu.classList.remove(`${menuClass}--expanded`);\n\t\t\tObject.assign(menu.style, {\n\t\t\t\topacity: '0',\n\t\t\t\theight: '', // Clean height from inline style\n\t\t\t\tdisplay: 'none', // Use display none to hide the menu and make it unclickable\n\t\t\t\tmarginBlockStart: '0',\n\t\t\t});\n\n\t\t\t// Update focusable elements after collapsing menu\n\t\t\tcollectFocusableElements();\n\t\t};\n\t};\n\n\t// Functionality to render a navigation levels beyond the top level.\n\tconst navigationLevels = { 2: 'second', 3: 'third', 4: 'fourth' };\n\ttype NavigationLevel = keyof typeof navigationLevels;\n\n\tconst renderMenuLevels = (\n\t\tcurrentLevel: NavigationLevel,\n\t\tparentItem: SideNavCompactItem,\n\t\t_links: SideNavCompactItem[],\n\t) => {\n\t\tconst levelString = navigationLevels[currentLevel];\n\t\tconst menuLevelClass = `${menuClass}--${levelString}-level`;\n\t\tconst itemLevelClass = `${itemClass}--${levelString}-level`;\n\t\tconst nextLevel = (currentLevel + 1) as NavigationLevel;\n\n\t\tconst isActive = isActiveTrail(parentItem);\n\n\t\t// Determines whether this menu should be initially expanded\n\t\t// Find the index of the top-level parent element\n\t\tlet isInitiallyExpanded = false;\n\t\tconst topLevelParent = navRef.current?.querySelector(\n\t\t\t`.${itemClass}--top-level[data-item-path=\"${parentItem.path}\"]`,\n\t\t);\n\t\tif (topLevelParent) {\n\t\t\tconst topLevelIndex = Array.from(\n\t\t\t\tnavRef.current?.querySelectorAll(`.${itemClass}--top-level`) || [],\n\t\t\t).indexOf(topLevelParent as HTMLElement);\n\t\t\tisInitiallyExpanded = expandedMenus.includes(topLevelIndex);\n\t\t} else {\n\t\t\t// For submenus, check if the direct parent is expanded\n\t\t\tisInitiallyExpanded = isActive;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-expanded={isActiveTrail(parentItem)}\n\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t\t\tisActiveTrail(parentItem)\n\t\t\t\t\t\t\t\t? `${baseClass}__toggle--expanded`\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t])}\n\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticonName='caretDown'\n\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\tverticalAlign='-0.0625rem'\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span className='visually-hidden'>{`${labels.toggle} ${getLinkContentString(parentItem.linkContent)} ${labels.submenu}`}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t{processNavLinkContent(parentItem.linkContent, parentItem.links)}\n\t\t\t\t</div>\n\t\t\t\t<ul\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\tmenuClass,\n\t\t\t\t\t\tmenuLevelClass,\n\t\t\t\t\t\tisInitiallyExpanded ? `${menuClass}--expanded` : null,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t{parentItem.links.map((nextLevelItem: SideNavCompactItem, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={`${index}-${levelString}`}\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t\t\titemLevelClass,\n\t\t\t\t\t\t\t\tisActiveTrail(nextLevelItem) ? `${itemClass}--active` : null,\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\tdata-item-path={nextLevelItem.path || ''}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nextLevelItem.links && nextLevel in navigationLevels\n\t\t\t\t\t\t\t\t? renderMenuLevels(\n\t\t\t\t\t\t\t\t\t\tnextLevel as NavigationLevel,\n\t\t\t\t\t\t\t\t\t\tnextLevelItem,\n\t\t\t\t\t\t\t\t\t\tnextLevelItem.links,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: nextLevelItem.linkContent}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t</>\n\t\t);\n\t};\n\n\t// Function to render a top-level menu item and its descendants.\n\tconst renderMenuItem = (item: SideNavCompactItem, index: number) => {\n\t\tconst { linkContent, links } = item;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={index}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\t`${itemClass}--top-level`,\n\t\t\t\t\tisActiveTrail(item) ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t\tdata-item-path={item.path || ''}\n\t\t\t>\n\t\t\t\t{links ? renderMenuLevels(2, item, links) : linkContent}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess markup for the notMobile display\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t{headingText && (\n\t\t\t\t<h2 className={`${baseClass}__heading pds-ts-l`}>{headingText}</h2>\n\t\t\t)}\n\t\t\t{menuItems.length > 0 && (\n\t\t\t\t<ul className={`${baseClass}__menu ${baseClass}__menu--top-level`}>\n\t\t\t\t\t{menuItems.map((item, index) => renderMenuItem(item, index))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Preprocess markup for the isMobile display\n\tconst mobileMarkup = (\n\t\t<DropdownMenu\n\t\t\theadingText={headingText}\n\t\t\tmenuItems={menuItems}\n\t\t\tselectTextFallback={mobileMenuSelectTextFallback}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\tref={navRef}\n\t\t\tonFocus={handleNavFocus}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\thandleKeyDown(e);\n\t\t\t\thandleTabKey(e);\n\t\t\t}}\n\t\t\ttabIndex={0}\n\t\t\trole='navigation'\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile && hasMobileMenu ? mobileMarkup : defaultMarkup}\n\t\t</nav>\n\t);\n};\n","import React, { MouseEvent, useState } from 'react';\n\n// Floating UI utilities.\nimport {\n\tuseFloating,\n\tautoUpdate,\n\toffset,\n\tflip,\n\tsafePolygon,\n\tshift,\n\tuseHover,\n\tuseFocus,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n} from '@floating-ui/react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tisActiveTrail,\n\tgetLinkContentString,\n\tprocessSideNavGlobalLinkContent,\n} from '../navigation-utilities';\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n// Components.\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './side-nav-global.css';\n\n// Extend the NavigationItem type.\nexport type SideNavGlobalItemProps = NavigationItem & {\n\t/**\n\t * Icon to display next to the link content.\n\t */\n\ticon?: PDSIcon;\n\t/**\n\t * Flag indicating whether the sidebar is collapsed.\n\t */\n\tisSidebarCollapsed?: boolean;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n};\n\n/**\n * SideNavGlobalItem UI component\n */\nexport const SideNavGlobalItem = ({\n\ticon,\n\tisActive,\n\tisSidebarCollapsed,\n\tlabels,\n\tlinkContent,\n\tlinks,\n}: SideNavGlobalItemProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-side-nav-global';\n\tconst itemClass = `${baseClass}__item`;\n\tconst menuClass = `${baseClass}__menu`;\n\n\t// Preprocess top-level content without children.\n\tconst topLevelWithoutChildren = (\n\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t{processSideNavGlobalLinkContent(baseClass, linkContent, links, icon)}\n\t\t</div>\n\t);\n\n\t// Preprocess second level menu content.\n\tconst secondLevelMenu = (links: NavigationItem[], classModifier: string) => (\n\t\t<ul\n\t\t\tclassName={mergeClasses([\n\t\t\t\tmenuClass,\n\t\t\t\t`${menuClass}--${classModifier}`,\n\t\t\t\tisActive ? `${menuClass}--expanded` : null,\n\t\t\t])}\n\t\t>\n\t\t\t{links.map((secondLevelItem, index) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t`${itemClass}--${classModifier}`,\n\t\t\t\t\t\tisActiveTrail(secondLevelItem) ? `${itemClass}--active` : null,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t{secondLevelItem.linkContent}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n\n\t// State for flyout menu instances.\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// FUI config.\n\tconst { refs, floatingStyles, context } = useFloating({\n\t\tplacement: 'right-start',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(8), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst hover = useHover(context, {\n\t\tmove: false,\n\t\thandleClose: safePolygon(),\n\t});\n\tconst focus = useFocus(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\n\t// Merge all FUI interactions into prop getters\n\tconst { getReferenceProps, getFloatingProps } = useInteractions([\n\t\thover,\n\t\tfocus,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\t// Handle the expand/collapse of nested menus.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Control menu classes\n\t\tconst button = e.currentTarget;\n\t\tconst menu = button.parentElement?.nextElementSibling as HTMLElement;\n\t\tif (!menu) return;\n\n\t\tconst shouldExpand = button.getAttribute('aria-expanded') === 'false';\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`, shouldExpand);\n\t\tbutton.setAttribute('aria-expanded', shouldExpand ? 'true' : 'false');\n\t\tmenu.classList.toggle(`${menuClass}--expanded`, shouldExpand);\n\t};\n\n\treturn (\n\t\t<li\n\t\t\tclassName={mergeClasses([\n\t\t\t\titemClass,\n\t\t\t\t`${itemClass}--top-level`,\n\t\t\t\tlinks ? `${itemClass}--has-children` : null,\n\t\t\t\tisSidebarCollapsed ? `${itemClass}--collapsed` : null,\n\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t])}\n\t\t\tref={isSidebarCollapsed ? refs.setReference : null}\n\t\t\t{...getReferenceProps()}\n\t\t>\n\t\t\t{links ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className={`${itemClass}-wrapper`}>\n\t\t\t\t\t\t{processSideNavGlobalLinkContent(\n\t\t\t\t\t\t\tbaseClass,\n\t\t\t\t\t\t\tlinkContent,\n\t\t\t\t\t\t\tlinks,\n\t\t\t\t\t\t\ticon,\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{/* Only show the toggle button if the sidebar is not collapsed. */}\n\t\t\t\t\t\t{!isSidebarCollapsed && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\taria-expanded={isActive}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t\t`${baseClass}__toggle`,\n\t\t\t\t\t\t\t\t\tisActive ? `${baseClass}__toggle--expanded` : null,\n\t\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon iconName='angleDown' iconSize='md' />\n\t\t\t\t\t\t\t\t<span className='visually-hidden'>{`${labels.toggle} ${getLinkContentString(linkContent)} ${labels.submenu}`}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Only allow the secondary menu to show below if sidebar is not collapsed. */}\n\t\t\t\t\t{!isSidebarCollapsed && secondLevelMenu(links, 'second-level')}\n\n\t\t\t\t\t{/* Provide flyout option for second-level menu if sidebar is collapsed. */}\n\t\t\t\t\t{isSidebarCollapsed && isOpen && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${baseClass}__flyout`}\n\t\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`${baseClass}__flyout-heading`}>\n\t\t\t\t\t\t\t\t{getLinkContentString(linkContent)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{secondLevelMenu(links, 'second-level-flyout')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{/* Else if the item does not have child links */}\n\t\t\t\t\t{/* If the sidebar is not collapsed, show the top-level item as is. */}\n\t\t\t\t\t{/* Otherwise show it with a tooltip */}\n\t\t\t\t\t{!isSidebarCollapsed ? (\n\t\t\t\t\t\ttopLevelWithoutChildren\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tcontent={getLinkContentString(linkContent)}\n\t\t\t\t\t\t\tcustomTrigger={topLevelWithoutChildren}\n\t\t\t\t\t\t\toffsetValue={{\n\t\t\t\t\t\t\t\tmainAxis: -4,\n\t\t\t\t\t\t\t\tcrossAxis: -12,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tpreferredPlacement='right'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</li>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tisActiveTrail,\n\tprocessSideNavGlobalLinkContent,\n} from '../navigation-utilities';\n\n// Components.\nimport { SideNavGlobalItem, SideNavGlobalItemProps } from './SideNavGlobalItem';\nimport { DropdownMenu } from '@components/navigation/DropdownMenu/DropdownMenu';\nimport { PantheonLogo } from '@components/PantheonLogo/PantheonLogo';\n\nimport './side-nav-global.css';\n\n/**\n * Prop types for SideNavGlobal\n */\nexport interface SideNavGlobalProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Should the Pantheon logo be displayed above the menu items?\n\t * It will not be displayed in the mobile view regardless of this value.\n\t */\n\thasLogo?: boolean;\n\t/**\n\t * Is the sidebar collapsed?\n\t */\n\tisSidebarCollapsed?: boolean;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tsubmenu: string;\n\t\ttoggle: string;\n\t};\n\t/**\n\t * Where should the logo link to? A fully-formed link element.\n\t * Only necessary if `hasLogo` is true.\n\t * If the logo should not be a link, leave blank.\n\t */\n\tlogoLinkContent?: ReactNode;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems?: SideNavGlobalItemProps[];\n\t/**\n\t * Text to display in the mobile menu trigger button when no active link is found.\n\t */\n\tmobileMenuSelectTextFallback?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SideNavGlobal UI component\n */\nexport const SideNavGlobal = ({\n\tariaLabel,\n\thasLogo,\n\tisSidebarCollapsed,\n\tlabels = {\n\t\tsubmenu: 'submenu',\n\t\ttoggle: 'Toggle',\n\t},\n\tlogoLinkContent,\n\tmenuItems,\n\tmobileMenuSelectTextFallback = 'Navigate to...',\n\tclassName,\n\t...props\n}: SideNavGlobalProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-side-nav-global';\n\tconst widthClass = isSidebarCollapsed\n\t\t? `${baseClass}--collapsed`\n\t\t: `${baseClass}--expanded`;\n\n\t// Preprocess markup for the desktop display\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t{hasLogo && (\n\t\t\t\t<div className={`${baseClass}__logo-wrapper`}>\n\t\t\t\t\t<PantheonLogo\n\t\t\t\t\t\tclassName={`${baseClass}__logo`}\n\t\t\t\t\t\tdisplayType={isSidebarCollapsed ? 'icon' : 'full'}\n\t\t\t\t\t\tlinkContent={logoLinkContent}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{menuItems.length > 0 && (\n\t\t\t\t<ul className={`${baseClass}__menu ${baseClass}__menu--top-level`}>\n\t\t\t\t\t{menuItems.map((item, index) => (\n\t\t\t\t\t\t<SideNavGlobalItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\ticon={item.icon}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t\tisSidebarCollapsed={isSidebarCollapsed}\n\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t\tlinks={item.links}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Append icon to menu items for mobile display.\n\tconst menuItemsWithIcons = menuItems.map((item) => ({\n\t\t...item,\n\t\tlinkContent: processSideNavGlobalLinkContent(\n\t\t\tbaseClass,\n\t\t\titem.linkContent,\n\t\t\titem.links,\n\t\t\titem.icon,\n\t\t),\n\t}));\n\n\t// Preprocess markup for the mobile display.\n\tconst mobileMarkup = (\n\t\t<DropdownMenu\n\t\t\tmenuItems={menuItemsWithIcons}\n\t\t\tselectTextFallback={mobileMenuSelectTextFallback}\n\t\t\tclassName={`${baseClass}__dropdown-menu`}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, widthClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{defaultMarkup}\n\t\t\t{mobileMarkup}\n\t\t</nav>\n\t);\n};\n","import React, { ChangeEvent, useEffect, useRef, useState } from 'react';\n\nimport {\n\tautoUpdate,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n} from '@floating-ui/react';\n\nimport { getLinkContentString } from '../navigation-utilities';\n\n// Components.\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { TextInput } from '@components/inputs/TextInput/TextInput';\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\nimport './tab-menu.css';\nimport { mergeClasses } from '@libs/components/utils';\n\n// HandleKeyDownMenuItemsEvent type.\ninterface HandleKeyDownMenuItemsEvent\n\textends React.KeyboardEvent<HTMLLIElement> {\n\tpreventDefault: () => void;\n\tkey: string;\n}\n\n// Dropdown content type.\nexport type TabMenuDropdownProps = {\n\t/**\n\t * Button label for the dropdown trigger.\n\t */\n\tbuttonLabel?: string;\n\t/**\n\t * Label for the dropdown filter. Leave null if no filter is needed.\n\t */\n\tfilterLabel?: string;\n\t/**\n\t * Placeholder for the dropdown filter.\n\t */\n\tfilterPlaceholder?: string;\n\t/**\n\t * Links to display in the dropdown.\n\t */\n\tlinks?: NavigationItem[];\n\t/**\n\t * Minimum number of items to enable filtering.\n\t */\n\tminFilterItems?: number;\n\t/**\n\t * Text to display when no results are found.\n\t */\n\tnoResultsText?: string;\n};\n\n/**\n * TabMenuDropdown UI component\n */\nexport const TabMenuDropdown = ({\n\tbuttonLabel = 'Toggle dropdown',\n\tfilterLabel = 'Filter items',\n\tfilterPlaceholder = 'Filter items...',\n\tlinks,\n\tminFilterItems = 5,\n\tnoResultsText = 'No results found',\n}: TabMenuDropdownProps) => {\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState(null);\n\tconst [filteredLinks, setFilteredLinks] = useState(links);\n\tconst [filterValue, setFilterValue] = useState('');\n\n\t// If the number of items is greater than the minimum, enable filtering.\n\tconst hasFilter = links.length >= minFilterItems;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tab-menu';\n\tconst menuClass = `${baseClass}__dropdown-menu`;\n\tconst scrollClass = hasFilter ? `${menuClass}--scroll` : null;\n\tconst itemClass = `${baseClass}__dropdown-item`;\n\n\t// Initiate refs.\n\tconst listRef = useRef([]);\n\n\t// FUI config\n\tconst { context, refs } = useFloating({\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst click = useClick(context, {\n\t\tevent: 'mousedown',\n\t});\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'listbox' });\n\tconst listNav = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t\tfocusItemOnHover: true,\n\t\tfocusItemOnOpen: false,\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[role, dismiss, listNav, click],\n\t);\n\n\t// FUI Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 150,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Function to handle menu item keydown events not already handled by FUI.\n\tconst handleKeyDownMenuItems = (e: HandleKeyDownMenuItemsEvent) => {\n\t\te.preventDefault();\n\n\t\tif (e.key === 'Enter') {\n\t\t\t// Simulate a click on the link within the list item.\n\t\t\t(listRef.current[activeIndex] as HTMLLIElement)\n\t\t\t\t.querySelector('a')\n\t\t\t\t?.click();\n\t\t}\n\n\t\t// If the filter exists, focus on that instead of first menu item.\n\t\tif (e.key === 'Tab') {\n\t\t\t// If shift and tab are pressed...\n\t\t\tif (e.shiftKey) {\n\t\t\t\tif (hasFilter) {\n\t\t\t\t\t// And filter is present, go to the filter input.\n\t\t\t\t\tdocument.getElementById('links-filter').focus();\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, close the dropdown.\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Helper function to handle filtering of links.\n\tconst filterLinks = (link: NavigationItem, valueToMatch: string) => {\n\t\treturn getLinkContentString(link.linkContent)\n\t\t\t.toLowerCase()\n\t\t\t.includes(valueToMatch.toLowerCase());\n\t};\n\n\t// Handle filtering of links.\n\tconst handleFilterChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value;\n\t\tsetFilterValue(value);\n\n\t\t// Filter links based on input value.\n\t\tconst filteredList = links.filter((link) => filterLinks(link, value));\n\t\tsetFilteredLinks(filteredList);\n\t};\n\n\t// Update filtered list when links data changes.\n\tuseEffect(() => {\n\t\tconst updatedList = links.filter((link) => filterLinks(link, filterValue));\n\t\tsetFilteredLinks(updatedList);\n\t}, [links]);\n\n\t// Handle clearing of filter input.\n\tconst clearFilter = () => {\n\t\tsetFilterValue('');\n\t\tsetFilteredLinks(links);\n\t};\n\n\t// Determine width of the longest link text.\n\tconst longestLink = links.reduce((a, b) =>\n\t\tgetLinkContentString(a.linkContent).length >\n\t\tgetLinkContentString(b.linkContent).length\n\t\t\t? a\n\t\t\t: b,\n\t);\n\tconst longestLinkLength = getLinkContentString(\n\t\tlongestLink.linkContent,\n\t).length;\n\n\t// Calculate width of the dropdown based on the longest link.\n\tconst dropdownWidth = {\n\t\tminWidth: '13rem',\n\t\twidth: `${longestLinkLength + 2}ch`,\n\t};\n\n\t// Icon for active item.\n\tconst activeIcon = (\n\t\t<Icon iconName='check' className={`${baseClass}__active-icon`} />\n\t);\n\n\t// Filter input.\n\tconst filterInput = hasFilter && (\n\t\t<div className={`${baseClass}__filter`}>\n\t\t\t<TextInput\n\t\t\t\thasClearButton={true}\n\t\t\t\tonClear={clearFilter}\n\t\t\t\tid='links-filter'\n\t\t\t\tlabel={filterLabel}\n\t\t\t\tonChange={handleFilterChange}\n\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\tshowLabel={false}\n\t\t\t\ttype='search'\n\t\t\t\tautoComplete='off'\n\t\t\t/>\n\t\t</div>\n\t);\n\n\t// Preprocess dropdown links for rendering.\n\tconst dropdownLinks = filteredLinks.map((link, index) => {\n\t\tconst activeItemClass = link.isActive ? `${itemClass}--active` : null;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={index}\n\t\t\t\tclassName={mergeClasses([itemClass, activeItemClass])}\n\t\t\t\tref={(node) => {\n\t\t\t\t\tlistRef.current[index] = node;\n\t\t\t\t}}\n\t\t\t\ttabIndex={index === activeIndex ? 0 : -1}\n\t\t\t\tonKeyDown={handleKeyDownMenuItems}\n\t\t\t\t{...getItemProps()}\n\t\t\t>\n\t\t\t\t{link.linkContent}\n\t\t\t\t{link.isActive && activeIcon}\n\t\t\t</li>\n\t\t);\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__dropdown-trigger`}\n\t\t\t\tref={refs.setReference}\n\t\t\t\t{...getReferenceProps({\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': buttonLabel,\n\t\t\t\t})}\n\t\t\t\ttype='button'\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\tclassName={`${baseClass}__dropdown-trigger-icon`}\n\t\t\t\t/>\n\t\t\t</button>\n\n\t\t\t{isMounted && (\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t\t\t...dropdownWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<div style={{ ...styles }}>\n\t\t\t\t\t\t{filterInput}\n\t\t\t\t\t\t<ul className={mergeClasses([menuClass, scrollClass])}>\n\t\t\t\t\t\t\t{dropdownLinks.length === 0 ? (\n\t\t\t\t\t\t\t\t<p className={`${baseClass}__no-results`}>{noResultsText}</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tdropdownLinks\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tuseContext,\n\tcloneElement,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\nimport { getActiveLink, isActiveTrail } from '../navigation-utilities';\n\n// Contexts.\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { TabMenuDropdown, TabMenuDropdownProps } from './TabMenuDropdown';\n\n// Types.\nimport { NavigationItem } from '@components/navigation/navigation-types';\n\n// Styles.\nimport './tab-menu.css';\n\n// DropdownSettings type.\ntype DropdownSettings = Omit<TabMenuDropdownProps, 'links'>;\n\n// Extend the NavigationItem type.\nexport type TabMenuItemProps = NavigationItem & {\n\t/**\n\t * Settings for dropdown menu. Leave null if no dropdown is needed.\n\t */\n\tdropdownSettings?: DropdownSettings;\n\t/**\n\t * Icon to display next to the link content.\n\t */\n\ticon?: PDSIcon;\n\t/**\n\t * Promote active child link to the top level.\n\t * If true, the top-level menu will display the active child link instead of the parent link. If using this approach, it is recommended to also include the parent link as the first child link.\n\t */\n\tpromoteActiveChildLink?: boolean;\n};\n\n/**\n * Prop types for TabMenu.\n */\nexport interface TabMenuProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems?: TabMenuItemProps[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * TabMenu UI component.\n */\nexport const TabMenu = ({\n\tariaLabel,\n\tmenuItems,\n\tclassName,\n\t...props\n}: TabMenuProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tab-menu';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Render tab menu item.\n\tconst TabMenuItem = ({\n\t\tdropdownSettings,\n\t\ticon,\n\t\tisActive,\n\t\tlinkContent,\n\t\tlinks,\n\t\tpromoteActiveChildLink = false,\n\t}: TabMenuItemProps) => {\n\t\t// Define item class.\n\t\tconst itemClass = `${baseClass}__item`;\n\n\t\t// Determine if there is an active child link.\n\t\tconst activeChildLink = getActiveLink(links);\n\n\t\t// Function to process the top-level content of a tab menu item.\n\t\tconst processTabMenuItem = (\n\t\t\tlinkContent: ReactElement | string,\n\t\t\ticon?: PDSIcon,\n\t\t) => {\n\t\t\t// Result will be a JSX element.\n\t\t\tlet processedTabMenuItem: ReactElement = null;\n\n\t\t\t// If the linkContent is a JSX element and has an icon, clone it and append the icon.\n\t\t\t// Return the linkContent as is if the linkContent is a JSX element but there is no icon.\n\t\t\tif (typeof linkContent === 'object') {\n\t\t\t\tif (icon) {\n\t\t\t\t\tprocessedTabMenuItem = cloneElement(linkContent, {\n\t\t\t\t\t\t...linkContent.props,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t<span key={icon} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticonName={icon}\n\t\t\t\t\t\t\t\t\ticonSize={isMobile ? 'sm' : 'md'}\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__item-icon`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{linkContent.props.children}\n\t\t\t\t\t\t\t</span>,\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tprocessedTabMenuItem = linkContent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn processedTabMenuItem;\n\t\t};\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{promoteActiveChildLink\n\t\t\t\t\t? processTabMenuItem(activeChildLink, icon)\n\t\t\t\t\t: processTabMenuItem(linkContent, icon)}\n\t\t\t\t{links && (\n\t\t\t\t\t<TabMenuDropdown\n\t\t\t\t\t\tlinks={links}\n\t\t\t\t\t\tbuttonLabel={dropdownSettings?.buttonLabel}\n\t\t\t\t\t\tfilterLabel={dropdownSettings?.filterLabel}\n\t\t\t\t\t\tfilterPlaceholder={dropdownSettings?.filterPlaceholder}\n\t\t\t\t\t\tminFilterItems={dropdownSettings?.minFilterItems}\n\t\t\t\t\t\tnoResultsText={dropdownSettings?.noResultsText}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess the menu markup.\n\tconst menuMarkup =\n\t\tmenuItems.length > 0 ? (\n\t\t\t<ul className={`${baseClass}__menu`}>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabMenuItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tdropdownSettings={item.dropdownSettings}\n\t\t\t\t\t\t\ticon={item.icon}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t\tlinks={item.links}\n\t\t\t\t\t\t\tpromoteActiveChildLink={item.promoteActiveChildLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t) : null;\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, mobileClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? (\n\t\t\t\t<div className={`${baseClass}__mobile-menu-wrapper`}>{menuMarkup}</div>\n\t\t\t) : (\n\t\t\t\tmenuMarkup\n\t\t\t)}\n\t\t</nav>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tKeyboardEvent,\n\tMouseEvent,\n\tReactNode,\n\tuseContext,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tautoUpdate,\n\tflip,\n\toffset,\n\tshift,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n} from '@floating-ui/react';\n\nimport { createRandomID, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Avatar } from '@components/Avatar/Avatar';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './user-menu.css';\n\n/**\n * Prop types for UserMenuItem\n */\n\nexport type UserMenuItem = {\n\t/**\n\t * Use if the menu item should perform an action. This should be a function to be called when the menu item is clicked. Do not use if `linkContent` is provided.\n\t */\n\tcallback?: () => void;\n\t/**\n\t * Is the menu item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Icon name for the menu item.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Unique ID for the menu item. Optional.\n\t */\n\tid?: string;\n\t/**\n\t * The text to be displayed as the menu item label if a `callback` is provided.\n\t */\n\tlabel?: string;\n\t/**\n\t * Use if the menu item should navigate to another location. This should be a fully-formed link using the router of your choice. Should be used in place of `callback` and `label`.\n\t */\n\tlinkContent?: ReactNode;\n};\n\n/**\n * Prop types for UserMenu\n */\nexport interface UserMenuProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Aria label for the user menu.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Array of menu items.\n\t */\n\tmenuItems?: UserMenuItem[];\n\t/**\n\t * User email address.\n\t */\n\tuserEmail?: string;\n\t/**\n\t * Image source for the user avatar.\n\t */\n\tuserImageSrc?: string;\n\t/**\n\t * User display name.\n\t */\n\tuserName?: string;\n\t/**\n\t * If true, the workspace selector will be styled and rendered to work with the mobile version of the navbar menu. Defaults to true.\n\t */\n\twithinNavbar?: boolean;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * UserMenu UI component\n */\nexport const UserMenu = ({\n\tariaLabel = 'User menu',\n\tmenuItems,\n\tuserEmail,\n\tuserImageSrc,\n\tuserName,\n\twithinNavbar = true,\n\tclassName,\n\t...props\n}: UserMenuProps) => {\n\t// State\n\tconst [activeIndex, setActiveIndex] = useState(null);\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// Non-state instance trackers\n\tconst menuItemIDs = useRef([]);\n\tconst focusableMenuItems = useRef([]);\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Is it used in a mobile navbar?\n\tconst isMobileNavbar = withinNavbar && isMobile;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-user-menu';\n\tconst mobileClass = isMobileNavbar ? `${baseClass}--isMobile` : null;\n\tconst menuClass = `${baseClass}__menu`;\n\n\t// FUI config\n\tconst { refs, floatingStyles, context } = useFloating({\n\t\tplacement: 'bottom-end',\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(12), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst click = useClick(context, { event: 'mousedown' });\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\tconst listRef = useRef([]);\n\n\tconst listNavigation = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t\topenOnArrowKeyDown: true,\n\t\tfocusItemOnOpen: false,\n\t\tfocusItemOnHover: true,\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[dismiss, role, click, listNavigation],\n\t);\n\n\t// FUI Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 150,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Avatar.\n\tconst avatarMarkup = (\n\t\t<Avatar\n\t\t\thasUserFallback={true}\n\t\t\timageSrc={userImageSrc}\n\t\t\tsize='sm'\n\t\t\tuniqueId={userEmail}\n\t\t\tclassName={`${baseClass}__avatar`}\n\t\t/>\n\t);\n\n\t// Trigger icon.\n\tconst triggerIcon = (\n\t\t<Icon iconName='angleDown' className={`${baseClass}__trigger-icon`} />\n\t);\n\n\t// User details block.\n\tconst userDetailsMarkup = (\n\t\t<li className={`${baseClass}__user-details`} role='presentation'>\n\t\t\t{!isMobileNavbar ? (\n\t\t\t\t<div className={`${baseClass}__user-name`}>{userName}</div>\n\t\t\t) : null}\n\n\t\t\t<div className={`${baseClass}__user-email`}>{userEmail}</div>\n\t\t</li>\n\t);\n\n\t// Populate array of menu item IDs.\n\tmenuItems.forEach((item) => {\n\t\tconst itemID = item.id ? item.id : createRandomID();\n\t\tmenuItemIDs.current.push(itemID);\n\t\tfocusableMenuItems.current.push(item);\n\t});\n\n\t// Functions for handling menu items.\n\tconst activateMenuItem = (itemID: string) => {\n\t\tconst itemIndex = menuItemIDs.current.indexOf(itemID);\n\t\tconst item = focusableMenuItems.current[itemIndex];\n\n\t\t// If there is linkContent, click on the link.\n\t\tif (item.linkContent && !item.disabled) {\n\t\t\tlistRef.current[itemIndex].querySelector('a').click();\n\n\t\t\t// Close the menu\n\t\t\tsetIsOpen(false);\n\t\t}\n\n\t\t// Only execute callback if there is one and the item is not disabled.\n\t\tif (item.callback && !item.disabled) {\n\t\t\titem.callback(item);\n\n\t\t\t// Close the menu\n\t\t\tsetIsOpen(false);\n\t\t}\n\t};\n\n\t// Function to handle menu item keydown events not already handled by FUI.\n\tconst handleKeyDownMenuItems = (e: KeyboardEvent) => {\n\t\te.preventDefault();\n\n\t\tif (e.key === 'Enter') {\n\t\t\tactivateMenuItem(e.currentTarget.id);\n\t\t}\n\t};\n\n\t// Handle menu item click.\n\tconst handleMenuItemClick = (e: MouseEvent<HTMLElement>) => {\n\t\tactivateMenuItem(e.currentTarget.id);\n\t};\n\n\t// Menu items.\n\tconst menuItemsMarkup = menuItems.map((item, index) => {\n\t\tconst itemID = menuItemIDs.current[index];\n\n\t\t// Item classes.\n\t\tconst itemClass = `${baseClass}__item`;\n\t\tconst disabledClass = item.disabled ? `${itemClass}--disabled` : null;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={itemID}\n\t\t\t\tid={itemID}\n\t\t\t\tclassName={mergeClasses([itemClass, disabledClass])}\n\t\t\t\trole='menuitem'\n\t\t\t\ttabIndex={activeIndex === index ? 0 : -1}\n\t\t\t\tref={(node) => {\n\t\t\t\t\tlistRef.current[index] = node;\n\t\t\t\t}}\n\t\t\t\tonKeyDown={handleKeyDownMenuItems}\n\t\t\t\t{...getItemProps({ onClick: (e) => handleMenuItemClick(e) })}\n\t\t\t>\n\t\t\t\t{item.iconName && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={item.iconName}\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonSize='sm'\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{item.linkContent ? item.linkContent : item.label}\n\t\t\t</li>\n\t\t);\n\t});\n\n\t// Preprocess default markup.\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tref={refs.setReference}\n\t\t\t\ttype='button'\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{avatarMarkup}\n\t\t\t</button>\n\t\t\t{isMounted && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t<div style={{ ...styles }}>\n\t\t\t\t\t\t<ul className={menuClass} role='menu'>\n\t\t\t\t\t\t\t{userDetailsMarkup}\n\t\t\t\t\t\t\t<li role='separator'></li>\n\t\t\t\t\t\t\t{menuItemsMarkup}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Accommodations for mobile navbar usage.\n\n\t// Handle the expand/collapse within mobile Navbar.\n\tconst handleExpand = (e: MouseEvent<HTMLElement>) => {\n\t\t// Control button classes and aria-expanded attribute.\n\t\tconst button = e.currentTarget;\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`);\n\t\tbutton.setAttribute(\n\t\t\t'aria-expanded',\n\t\t\tbutton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true',\n\t\t);\n\n\t\t// Control menu classes.\n\t\tconst menu = button.nextElementSibling as HTMLElement;\n\t\tmenu.classList.toggle(`${baseClass}__mobile-menu--expanded`);\n\t};\n\n\tconst mobileMarkup = (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__toggle`}\n\t\t\t\taria-expanded={false}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tonClick={handleExpand}\n\t\t\t>\n\t\t\t\t<span className={`${baseClass}__toggle-left`}>\n\t\t\t\t\t{avatarMarkup}\n\t\t\t\t\t{userName ? userName : userEmail}\n\t\t\t\t</span>\n\t\t\t\t{triggerIcon}\n\t\t\t</button>\n\t\t\t<div className={`${baseClass}__mobile-menu`}>\n\t\t\t\t<ul\n\t\t\t\t\tclassName={[menuClass, `${menuClass}--isMobile`].join(' ').trim()}\n\t\t\t\t\trole='menu'\n\t\t\t\t>\n\t\t\t\t\t{userDetailsMarkup}\n\t\t\t\t\t<li role='separator'></li>\n\t\t\t\t\t{menuItemsMarkup}\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([baseClass, mobileClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobileNavbar ? mobileMarkup : defaultMarkup}\n\t\t</span>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactElement,\n\tReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport {\n\tautoUpdate,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseInteractions,\n\tuseListNavigation,\n\tuseRole,\n\tuseTransitionStyles,\n} from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Avatar } from '@components/Avatar/Avatar';\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { IndicatorBadge } from '@components/badges/IndicatorBadge/IndicatorBadge';\nimport { TextInput } from '@components/inputs/TextInput/TextInput';\n\nimport './workspace-selector.css';\n\nconst tierLabels = {\n\tsilver: 'Silver',\n\tgold: 'Gold',\n\tplatinum: 'Platinum',\n\tdiamond: 'Diamond',\n};\n\nexport type PlanTiers = keyof typeof tierLabels;\n\nexport type WorkspaceSelectorItem = {\n\t/**\n\t * Name of the workspace.\n\t */\n\tdisplayName?: string;\n\t/**\n\t * Image src for the workspace.\n\t */\n\timageSrc?: string;\n\t/**\n\t * Is this the currently selected workspace?\n\t */\n\tisActive?: boolean;\n\t/**\n\t * This user does not have access to this workspace.\n\t */\n\tisUnprivileged?: boolean;\n\t/**\n\t * Account plan tier.\n\t */\n\tplanTier?: PlanTiers;\n\t/**\n\t * Id of the workspace.\n\t */\n\tworkspaceId?: string;\n\t/**\n\t * Link to the workspace. A link element via the router of your choice.\n\t */\n\tworkspaceLink?: ReactElement;\n};\n\n/**\n * Prop types for WorkspaceSelector\n */\nexport interface WorkspaceSelectorProps\n\textends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Aria label for the workspace selector menu.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Link to create a new workspace. A link element using the router of your choice.\n\t */\n\tcreateWorkspaceLink?: ReactNode;\n\t/**\n\t * Placeholder text for the filter input.\n\t */\n\tfilterPlaceholder?: string;\n\t/**\n\t * Label for the filter input.\n\t */\n\tfilterLabel?: string;\n\t/**\n\t * Heading for the workspace dropdown menu.\n\t */\n\tmenuHeading?: string;\n\t/**\n\t * Minimum number of items to enable filtering.\n\t */\n\tminFilterItems?: number;\n\t/**\n\t * Text to display when no results are found.\n\t */\n\tnoResultsText?: string;\n\t/**\n\t * Is this component located in the top nav? Only applies when using the Navbar component from this toolkit. Defaults to true per design.\n\t */\n\twithinNavbar?: boolean;\n\t/**\n\t * List of all workspaces for a user.\n\t */\n\tworkspaceList?: WorkspaceSelectorItem[];\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * WorkspaceSelector UI component\n */\nexport const WorkspaceSelector = ({\n\tariaLabel = 'Workspace selector menu',\n\tcreateWorkspaceLink,\n\tfilterPlaceholder = 'Find workspace...',\n\tfilterLabel = 'Filter workspaces',\n\tmenuHeading = 'Workspaces',\n\tminFilterItems = 8,\n\tnoResultsText = 'No results found',\n\twithinNavbar = true,\n\tworkspaceList,\n\tclassName,\n\t...props\n}: WorkspaceSelectorProps) => {\n\t// State\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState(null);\n\tconst [filteredWorkspaceList, setFilteredWorkspaceList] =\n\t\tuseState(workspaceList);\n\n\t// Initialize refs.\n\tconst listRef = useRef([]);\n\tconst createWorkspaceLinkRef = useRef(null);\n\n\t// If the number of items is greater than the minimum, enable filtering.\n\tconst hasFilter = workspaceList.length >= minFilterItems;\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Is it used in a mobile navbar?\n\tconst isMobileNavbar = withinNavbar && isMobile;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-workspace-selector';\n\tconst mobileClass = isMobileNavbar ? `${baseClass}--isMobile` : null;\n\tconst menuClass = `${baseClass}__menu`;\n\tconst scrollClass = hasFilter ? `${menuClass}--scroll` : null;\n\n\t// FUI config\n\tconst { refs, floatingStyles, context } = useFloating({\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst click = useClick(context, { event: 'mousedown' });\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'menu' });\n\n\tconst listNavigation = useListNavigation(context, {\n\t\tlistRef,\n\t\tactiveIndex,\n\t\tonNavigate: setActiveIndex,\n\t\tloop: true,\n\t\topenOnArrowKeyDown: true,\n\t\tfocusItemOnHover: true,\n\t\tfocusItemOnOpen: false,\n\t});\n\n\tconst { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n\t\t[dismiss, role, click, listNavigation],\n\t);\n\n\t// FUI Transition styles.\n\tconst { isMounted, styles } = useTransitionStyles(context, {\n\t\tduration: {\n\t\t\topen: 300,\n\t\t\tclose: 150,\n\t\t},\n\t\tinitial: {\n\t\t\topacity: 0,\n\t\t},\n\t\topen: {\n\t\t\topacity: 1,\n\t\t},\n\t\tclose: {\n\t\t\topacity: 0,\n\t\t},\n\t});\n\n\t// Find the active workspace to use as menu button.\n\tlet activeWorkspace = workspaceList.find((workspace) => workspace.isActive);\n\n\t// If no active workspace is found, use the first workspace in the list.\n\tif (!activeWorkspace) {\n\t\tactiveWorkspace = workspaceList[0];\n\t}\n\n\t// Handle filtering of workspaces.\n\tconst handleFilterChange = (e) => {\n\t\tconst { value } = e.target;\n\t\tconst filteredWorkspaceList = workspaceList.filter((workspace) => {\n\t\t\treturn workspace.displayName.toLowerCase().includes(value.toLowerCase());\n\t\t});\n\n\t\tsetFilteredWorkspaceList(filteredWorkspaceList);\n\t};\n\n\t// Update filtered list when workspaceList changes.\n\tuseEffect(() => {\n\t\tconst updatedList = workspaceList.map((workspace) => ({\n\t\t\t...workspace,\n\t\t\tisActive: workspace.isActive,\n\t\t}));\n\n\t\tsetFilteredWorkspaceList(updatedList);\n\t}, [workspaceList]);\n\n\t// Function to handle menu item keydown events not already handled by FUI.\n\tconst handleKeyDownMenuItems = (e) => {\n\t\te.preventDefault();\n\n\t\tif (e.key === 'Enter') {\n\t\t\t// Simulate a click on the link within the list item.\n\t\t\tlistRef.current[activeIndex].querySelector('a').click();\n\t\t}\n\n\t\tif (e.key === 'Tab') {\n\t\t\t// If shift and tab are pressed...\n\t\t\tif (e.shiftKey) {\n\t\t\t\tif (hasFilter) {\n\t\t\t\t\t// And filter is present, go to the filter input.\n\t\t\t\t\tdocument.getElementById('workspace-filter').focus();\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, close the dropdown.\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If only tab is pressed...\n\t\t\t\tif (createWorkspaceLink) {\n\t\t\t\t\t// And createWorkspaceLink is present, focus the link on Tab.\n\t\t\t\t\tcreateWorkspaceLinkRef.current.querySelector('a').focus();\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, close the dropdown.\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Button content.\n\tconst buttonContent = (\n\t\t<div className={`${baseClass}__button-content`}>\n\t\t\t<Avatar\n\t\t\t\tsize='sm'\n\t\t\t\tuniqueId={activeWorkspace.workspaceId}\n\t\t\t\timageSrc={activeWorkspace.imageSrc}\n\t\t\t\tclassName={`${baseClass}__avatar`}\n\t\t\t/>\n\t\t\t<span className={`${baseClass}__name`}>\n\t\t\t\t{activeWorkspace.displayName}\n\t\t\t</span>\n\t\t\t{activeWorkspace.planTier && (\n\t\t\t\t<IndicatorBadge\n\t\t\t\t\tsize='sm'\n\t\t\t\t\tcolor={activeWorkspace.planTier}\n\t\t\t\t\tlabel={tierLabels[activeWorkspace.planTier]}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n\n\t// Trigger icon.\n\tconst triggerIcon = (\n\t\t<Icon\n\t\t\ticonName='angleDown'\n\t\t\ticonSize='md'\n\t\t\tclassName={`${baseClass}__trigger-icon`}\n\t\t/>\n\t);\n\n\t// Filter input.\n\tconst filterInput = hasFilter && (\n\t\t<div className={`${baseClass}__filter`}>\n\t\t\t<TextInput\n\t\t\t\thasClearButton={true}\n\t\t\t\tonClear={() => setFilteredWorkspaceList(workspaceList)}\n\t\t\t\tid='workspace-filter'\n\t\t\t\tlabel={filterLabel}\n\t\t\t\tonChange={handleFilterChange}\n\t\t\t\tplaceholder={filterPlaceholder}\n\t\t\t\tshowLabel={false}\n\t\t\t\ttype='search'\n\t\t\t/>\n\t\t</div>\n\t);\n\n\t// Workspace menu items for dropdown.\n\tconst workspaceMenuItemsMarkup = filteredWorkspaceList.map(\n\t\t(workspace, index) => {\n\t\t\t// Menu item classes.\n\t\t\tconst workspaceItemClass = `${baseClass}__item`;\n\t\t\tconst activeWorkspaceClass = workspace.isActive\n\t\t\t\t? `${workspaceItemClass}--active`\n\t\t\t\t: null;\n\t\t\tconst unprivilegedWorkspaceClass = workspace.isUnprivileged\n\t\t\t\t? `${workspaceItemClass}--unprivileged`\n\t\t\t\t: null;\n\n\t\t\t// Icon for active workspace in menu.\n\t\t\tconst activeIcon = (\n\t\t\t\t<Icon iconName='check' className={`${baseClass}__active-icon`} />\n\t\t\t);\n\n\t\t\t// Provide id for each workspace item.\n\t\t\tconst itemId = workspace.workspaceId;\n\n\t\t\t// Set link element based on the type of link element passed in.\n\t\t\tconst LinkElement = workspace.workspaceLink.type;\n\n\t\t\t// Function to only set a ref if not unprivileged.\n\t\t\tconst processedRef = workspace.isUnprivileged\n\t\t\t\t? null\n\t\t\t\t: (node) => {\n\t\t\t\t\t\tlistRef.current[index] = node;\n\t\t\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={itemId}\n\t\t\t\t\tid={itemId}\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\tworkspaceItemClass,\n\t\t\t\t\t\tactiveWorkspaceClass,\n\t\t\t\t\t\tunprivilegedWorkspaceClass,\n\t\t\t\t\t])}\n\t\t\t\t\trole='menuitem'\n\t\t\t\t\ttabIndex={activeIndex === index ? 0 : -1}\n\t\t\t\t\tref={processedRef}\n\t\t\t\t\tonKeyDown={handleKeyDownMenuItems}\n\t\t\t\t\t{...getItemProps()}\n\t\t\t\t>\n\t\t\t\t\t<LinkElement\n\t\t\t\t\t\t{...workspace.workspaceLink.props}\n\t\t\t\t\t\tonClick={() => setIsOpen(false)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={`${baseClass}__item-content`}>\n\t\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\t\tuniqueId={workspace.workspaceId}\n\t\t\t\t\t\t\t\timageSrc={workspace.imageSrc}\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__list-avatar`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{workspace.displayName}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{workspace.isActive && activeIcon}\n\t\t\t\t\t</LinkElement>\n\t\t\t\t</li>\n\t\t\t);\n\t\t},\n\t);\n\n\t// Create workspace link.\n\tconst createWorkspaceLinkMarkup = createWorkspaceLink && (\n\t\t<div className={`${baseClass}__create-link`} ref={createWorkspaceLinkRef}>\n\t\t\t<ButtonLink\n\t\t\t\tdisplayType='icon-end'\n\t\t\t\ticonName='plus'\n\t\t\t\tlinkContent={createWorkspaceLink}\n\t\t\t\tvariant='subtle'\n\t\t\t\tonBlur={setIsOpen.bind(null, false)}\n\t\t\t\tonClick={setIsOpen.bind(null, false)}\n\t\t\t/>\n\t\t</div>\n\t);\n\n\t// Preprocess default markup.\n\tconst defaultMarkup = (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tref={refs.setReference}\n\t\t\t\ttype='button'\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{buttonContent}\n\t\t\t\t{triggerIcon}\n\t\t\t</button>\n\t\t\t{isMounted && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__dropdown`}\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t(floatingStyles as React.CSSProperties,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t<div style={{ ...styles }}>\n\t\t\t\t\t\t{filterInput}\n\t\t\t\t\t\t<ul className={mergeClasses([menuClass, scrollClass])} role='menu'>\n\t\t\t\t\t\t\t<li className={`${baseClass}__item-heading`} role='presentation'>\n\t\t\t\t\t\t\t\t{menuHeading}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t{workspaceMenuItemsMarkup.length === 0 ? (\n\t\t\t\t\t\t\t\t<p className={`${baseClass}__no-results`}>{noResultsText}</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tworkspaceMenuItemsMarkup\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t{createWorkspaceLinkMarkup}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// Accommodations for mobile navbar usage.\n\n\t// Handle the expand/collapse within mobile Navbar.\n\tconst handleExpand = (e) => {\n\t\t// Control button classes and aria-expanded attribute.\n\t\tconst button = e.target;\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`);\n\t\tbutton.setAttribute(\n\t\t\t'aria-expanded',\n\t\t\tbutton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true',\n\t\t);\n\n\t\t// Control menu classes.\n\t\tconst menu = button.nextElementSibling;\n\t\tmenu.classList.toggle(`${baseClass}__mobile-menu--expanded`);\n\t};\n\n\tconst mobileMarkup = (\n\t\t<>\n\t\t\t<button\n\t\t\t\tclassName={`${baseClass}__toggle`}\n\t\t\t\taria-expanded={false}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tonClick={handleExpand}\n\t\t\t\ttype='button'\n\t\t\t>\n\t\t\t\t{buttonContent}\n\t\t\t\t{triggerIcon}\n\t\t\t</button>\n\t\t\t<div className={`${baseClass}__mobile-menu`}>\n\t\t\t\t{filterInput}\n\t\t\t\t<ul\n\t\t\t\t\tclassName={[menuClass, `${menuClass}--isMobile`].join(' ').trim()}\n\t\t\t\t\trole='menu'\n\t\t\t\t>\n\t\t\t\t\t<li className={`${baseClass}__item-heading`} role='presentation'>\n\t\t\t\t\t\t{menuHeading}\n\t\t\t\t\t</li>\n\t\t\t\t\t{workspaceMenuItemsMarkup.length === 0 ? (\n\t\t\t\t\t\t<p className={`${baseClass}__no-results`}>{noResultsText}</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tworkspaceMenuItemsMarkup\n\t\t\t\t\t)}\n\t\t\t\t</ul>\n\t\t\t\t{createWorkspaceLinkMarkup}\n\t\t\t</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([baseClass, mobileClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobileNavbar ? mobileMarkup : defaultMarkup}\n\t\t</span>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { Z_INDEX_NOTIFICATIONS } from '@vars/z-index';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\n\nimport './banner.css';\n\nconst iconTypes: Record<'info' | 'warning' | 'critical', PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tcritical: 'diamondExclamation',\n};\n\ntype Banner = {\n\tid: string;\n\tisDismissible?: boolean;\n\tmessage: string | React.ReactNode;\n\tonDismiss?: () => void;\n\ttype?: 'info' | 'warning' | 'critical';\n};\n\n/**\n * Prop types for Banner\n */\nexport interface BannerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Array of banner objects\n\t */\n\tbanners: Banner[];\n\t/**\n\t * Label for the dismiss button\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Label for the next message button\n\t */\n\tlabelNext?: string;\n\t/**\n\t * Label for the previous message button\n\t */\n\tlabelPrevious?: string;\n\t/**\n\t * Type labels\n\t */\n\ttypeLabels?: {\n\t\tinfo: string;\n\t\twarning: string;\n\t\tcritical: string;\n\t};\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Banner UI component\n */\nexport const Banner = ({\n\tbanners,\n\tdismissLabel = 'Dismiss',\n\tlabelNext = 'Go to next message',\n\tlabelPrevious = 'Go to previous message',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t},\n\tclassName,\n\t...props\n}: BannerProps) => {\n\t// Set up state.\n\tconst [bannerGroup, setBannerGroup] = useState(banners);\n\n\t// Keep bannerGroup in sync with banners prop.\n\tuseEffect(() => {\n\t\tsetBannerGroup(banners);\n\t}, [banners]);\n\n\t// Find total number of banners.\n\tconst totalBanners = bannerGroup.length;\n\n\t// If totalBanners is 0, return null.\n\tif (totalBanners === 0) {\n\t\treturn null;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-banner';\n\tconst multipleClass =\n\t\ttotalBanners > 1 ? `${baseClass}-group--multiple` : null;\n\tconst typeClasses = {\n\t\tinfo: `${baseClass}--info`,\n\t\twarning: `${baseClass}--warning`,\n\t\tcritical: `${baseClass}--critical`,\n\t};\n\n\t// Get type of active banner and add class to parent element.\n\tconst activeBannerType = totalBanners > 0 ? bannerGroup[0].type : null;\n\tconst activeBannerTypeClass = activeBannerType\n\t\t? `${baseClass}-group--${activeBannerType}`\n\t\t: null;\n\n\t// Function to set the z-index style of the banner.\n\tconst setZIndex = (index: number) => {\n\t\treturn {\n\t\t\tzIndex: Z_INDEX_NOTIFICATIONS - index,\n\t\t};\n\t};\n\n\t// Function to disable tabbing on banners that are not the top banner.\n\tconst setTabIndex = (index: number) => {\n\t\treturn index === 0 ? 0 : -1;\n\t};\n\n\t// Function to find elements with the fading class and remove it.\n\tconst removeFadingClass = () => {\n\t\tconst fadingBanners = document.getElementsByClassName(\n\t\t\t`${baseClass}--fading`,\n\t\t);\n\t\twhile (fadingBanners.length) {\n\t\t\tfadingBanners[0].classList.remove(`${baseClass}--fading`);\n\t\t}\n\t};\n\n\t// Functions to navigate between banners.\n\tconst showNextBanner = () => {\n\t\t// Remove the fading class from any banners that currently have it.\n\t\tremoveFadingClass();\n\n\t\t// Apply fading class to the top banner.\n\t\tdocument\n\t\t\t.getElementById(bannerGroup[0].id)\n\t\t\t.classList.add(`${baseClass}--fading`);\n\n\t\t// Move the top banner to the end of the group.\n\t\tsetTimeout(() => {\n\t\t\tsetBannerGroup((prevBanners) => [\n\t\t\t\t...prevBanners.slice(1),\n\t\t\t\tprevBanners[0],\n\t\t\t]);\n\t\t}, 200);\n\t};\n\n\tconst showPreviousBanner = () => {\n\t\t// Remove the fading class from any banners that currently have it.\n\t\tremoveFadingClass();\n\n\t\t// Since we are going backwards through the array, we need to update the z-index of the first and last banner before fading out.\n\t\tdocument.getElementById(bannerGroup[0].id).style.zIndex = (\n\t\t\tZ_INDEX_NOTIFICATIONS + 2\n\t\t).toString();\n\t\tdocument.getElementById(bannerGroup[totalBanners - 1].id).style.zIndex = (\n\t\t\tZ_INDEX_NOTIFICATIONS + 1\n\t\t).toString();\n\n\t\tsetTimeout(() => {\n\t\t\t// Apply fading class to the top banner.\n\t\t\tdocument\n\t\t\t\t.getElementById(bannerGroup[0].id)\n\t\t\t\t.classList.add(`${baseClass}--fading`);\n\t\t}, 50);\n\n\t\tsetTimeout(() => {\n\t\t\t// Move the last banner to the top of the group.\n\t\t\tsetBannerGroup((prevBanners) => [\n\t\t\t\tprevBanners[prevBanners.length - 1],\n\t\t\t\t...prevBanners.slice(0, prevBanners.length - 1),\n\t\t\t]);\n\n\t\t\t// Remove the fading class after the animation.\n\t\t\tdocument\n\t\t\t\t.getElementById(bannerGroup[0].id)\n\t\t\t\t.classList.remove(`${baseClass}--fading`);\n\t\t}, 200);\n\t};\n\n\t// Function to render a banner.\n\tconst renderBanner = (banner: Banner, index: number) => {\n\t\tconst { id, isDismissible, message, onDismiss, type } = banner;\n\n\t\t// Configure role based on type.\n\t\tconst alertTypes = ['critical', 'warning'];\n\t\tconst roleType = alertTypes.includes(type) ? 'alert' : 'status';\n\n\t\t// Label by type.\n\t\tconst bannerTypeLabel = `${typeLabels[type]}: `;\n\n\t\t// Handle dismiss.\n\t\tconst handleDismiss = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t\te.preventDefault();\n\n\t\t\t// Add dismissing class to the banner.\n\t\t\tdocument.getElementById(id).classList.add(`${baseClass}--dismissing`);\n\n\t\t\t// Remove the banner after the animation.\n\t\t\tsetTimeout(() => {\n\t\t\t\t// Call onDismiss function if provided.\n\t\t\t\tonDismiss && banner.onDismiss();\n\n\t\t\t\t// If this is the last banner, clear the group.\n\t\t\t\tif (totalBanners === 1) {\n\t\t\t\t\tsetBannerGroup([]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Otherwise, remove the banner from the group.\n\t\t\t\tsetBannerGroup((prevBanners) =>\n\t\t\t\t\tprevBanners.filter((prevBanner) => prevBanner.id !== id),\n\t\t\t\t);\n\t\t\t}, 200);\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={id}\n\t\t\t\tid={id}\n\t\t\t\tclassName={mergeClasses([baseClass, typeClasses[type]])}\n\t\t\t\trole={roleType}\n\t\t\t\tstyle={{\n\t\t\t\t\tzIndex: setZIndex(index).zIndex,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={iconTypes[type]}\n\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--${banner.type}`}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={`${baseClass}__message`}>\n\t\t\t\t\t\t<span className='visually-hidden'>{bannerTypeLabel} </span>\n\t\t\t\t\t\t{message}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{isDismissible && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`${baseClass}__dismiss-button`}\n\t\t\t\t\t\tonClick={handleDismiss}\n\t\t\t\t\t\ttabIndex={setTabIndex(index)}\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t>\n\t\t\t\t\t\t{dismissLabel}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\t`${baseClass}-group`,\n\t\t\t\tactiveBannerTypeClass,\n\t\t\t\tmultipleClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{totalBanners > 1 ? (\n\t\t\t\t<div className={`${baseClass}__navigation`}>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName='angleLeft'\n\t\t\t\t\t\tsize='lg'\n\t\t\t\t\t\tclassName={`${baseClass}__nav-button ${baseClass}__nav-button--prev`}\n\t\t\t\t\t\tariaLabel={labelPrevious}\n\t\t\t\t\t\tonClick={showPreviousBanner}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName='angleRight'\n\t\t\t\t\t\tsize='lg'\n\t\t\t\t\t\tclassName={`${baseClass}__nav-button ${baseClass}__nav-button--next`}\n\t\t\t\t\t\tariaLabel={labelNext}\n\t\t\t\t\t\tonClick={showNextBanner}\n\t\t\t\t\t/>\n\t\t\t\t\t{bannerGroup.map((banner, index) => renderBanner(banner, index))}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\trenderBanner(bannerGroup[0], 0)\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './inline-message.css';\n\n/**\n * The type of message to display.\n */\nexport type InlineMessageType =\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'critical'\n\t| 'working';\n/**\n * Labels for each message type.\n */\ntype TypeLabels = Record<InlineMessageType, string>;\n\nexport interface InlineMessageProps\n\textends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n\t/**\n\t * Message body.\n\t */\n\tmessage?: ReactNode;\n\t/**\n\t * Title text.\n\t */\n\ttitle: ReactNode;\n\t/**\n\t * Message type.\n\t */\n\ttype: InlineMessageType;\n\t/**\n\t * Message type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: TypeLabels;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\nconst iconTypes: Record<Exclude<InlineMessageType, 'working'>, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tsuccess: 'circleCheck',\n\tcritical: 'diamondExclamation',\n};\n\n/**\n * InlineMessage UI component\n */\nexport const InlineMessage = ({\n\ttitle,\n\tmessage,\n\ttype,\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tworking: 'Working',\n\t},\n\tclassName,\n\t...props\n}: InlineMessageProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-inline-message';\n\tconst cssClasses = {\n\t\terror: `${baseClass}--error`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tinfo: `${baseClass}--info`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tworking: `${baseClass}--working`,\n\t};\n\n\t// Configure role based on type.\n\tconst alertTypes = ['critical', 'warning'];\n\tconst roleType = alertTypes.includes(type) ? 'alert' : 'status';\n\n\t// Label by type.\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Preprocess secondary text by prop type.\n\tconst processedMessage =\n\t\ttypeof message === 'string' ? <p>{message}</p> : message;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, cssClasses[type], className ?? ''])}\n\t\t\trole={roleType}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon-${type}`}>\n\t\t\t\t{type === 'working' ? (\n\t\t\t\t\t<Spinner colorType='monochromatic' size='lg' />\n\t\t\t\t) : (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\ticonSize='lg'\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t<div className={`${baseClass}__title`}>{title}</div>\n\t\t\t\t<div className={`${baseClass}__message`}>{processedMessage}</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tReactNode,\n\tuseRef,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './section-message.css';\n\nexport type SectionMessageType =\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'critical'\n\t| 'discovery';\n\ntype TypeLabels = Record<SectionMessageType, string>;\n\nconst iconTypes: Record<SectionMessageType, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tsuccess: 'circleCheck',\n\tcritical: 'diamondExclamation',\n\tdiscovery: 'squareQuestion',\n};\n\nexport interface SectionMessageProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Props for optional call to action button.\n\t * Can include any Button props except for size and variant.\n\t */\n\tctaButton?: ComponentPropsWithoutRef<typeof Button>;\n\t/**\n\t * Label for dismiss button. Provide a translation string if needed.\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Unique id of message.\n\t */\n\tid?: string;\n\t/**\n\t * Includes dismiss functionality.\n\t */\n\tisDismissible?: boolean;\n\t/**\n\t * Message text.\n\t */\n\tmessage: ReactNode;\n\t/**\n\t * Callback function when message is dismissed.\n\t */\n\tonDismiss?: (event: MouseEvent<HTMLButtonElement>, id: string) => void;\n\t/**\n\t * Message title.\n\t */\n\ttitle?: string;\n\t/**\n\t * Message type.\n\t */\n\ttype: SectionMessageType;\n\t/**\n\t * Message type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: TypeLabels;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * SectionMessage UI component\n */\nexport const SectionMessage = ({\n\tctaButton,\n\tdismissLabel = 'Dismiss',\n\tid,\n\tisDismissible,\n\tonDismiss,\n\tmessage,\n\ttitle,\n\ttype = 'info',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tdiscovery: 'Discovery',\n\t},\n\tclassName,\n\t...props\n}: SectionMessageProps) => {\n\tconst messageRef = useRef(null);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-section-message';\n\tconst cssClasses = {\n\t\terror: `${baseClass}--error`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tinfo: `${baseClass}--info`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tdiscovery: `${baseClass}--discovery`,\n\t\tdismissing: `${baseClass}--dismissing`,\n\t\tdismissed: `${baseClass}--dismissed`,\n\t};\n\tconst hasDismissClass = isDismissible ? `${baseClass}--hasDismiss` : null;\n\tconst hasTitleClass = title ? `${baseClass}--hasTitle` : null;\n\n\t// Configure role based on type.\n\tconst alertTypes = ['critical', 'warning'];\n\tconst roleType = alertTypes.includes(type) ? 'alert' : 'status';\n\n\t// Label by type.\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Preprocess message by prop type.\n\tconst processedMessage =\n\t\ttypeof message === 'string' ? <p>{message}</p> : message;\n\n\t// Set up dismiss functionality.\n\tconst dismissAnimationEndEventHandler = () => {\n\t\tmessageRef.current.addEventListener('animationend', triggerOnDismiss, {\n\t\t\tonce: true,\n\t\t});\n\t};\n\n\tconst triggerOnDismiss = (event) => {\n\t\tonDismiss(event, id);\n\t};\n\n\tconst handleDismiss = () => {\n\t\tdismissAnimationEndEventHandler();\n\t\tmessageRef.current.classList.toggle(cssClasses.dismissing);\n\n\t\tsetTimeout(() => {\n\t\t\tmessageRef.current.classList.toggle(cssClasses.dismissing);\n\t\t\tmessageRef.current.classList.toggle(cssClasses.dismissed);\n\t\t}, 400);\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcssClasses[type],\n\t\t\t\thasDismissClass,\n\t\t\t\thasTitleClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tid={id}\n\t\t\tref={messageRef}\n\t\t\trole={roleType}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon-${type}`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\ticonSize='lg'\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t\t{title && <div className={`${baseClass}__title`}>{title}</div>}\n\t\t\t\t\t<div className={`${baseClass}__message`}>{processedMessage}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{(ctaButton || isDismissible) && (\n\t\t\t\t<div className={`${baseClass}__actions`}>\n\t\t\t\t\t{ctaButton && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...ctaButton}\n\t\t\t\t\t\t\tclassName={`${baseClass}__cta`}\n\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\tvariant='secondary'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{isDismissible && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${baseClass}__dismiss`}\n\t\t\t\t\t\t\tonClick={handleDismiss}\n\t\t\t\t\t\t\taria-label={dismissLabel}\n\t\t\t\t\t\t\trole='button'\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon iconSize='lg' iconName='xmark' />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './toaster.css';\n\nconst iconTypes = {\n\tinfo: 'circleInfo',\n\tsuccess: 'check',\n\twarning: 'triangleExclamation',\n\tcritical: 'diamondExclamation',\n} as const;\n\ntype IconType = keyof typeof iconTypes;\n\nconst defaultTypeLabels = {\n\tinfo: 'Information',\n\tsuccess: 'Success',\n\twarning: 'Warning',\n\tcritical: 'Critical',\n\tworking: 'Working...',\n} as const;\n\n/**\n * Prop types for Toast\n */\ninterface ToastProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Toast message content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * ID of individual toast.\n\t */\n\tid?: string;\n\t/**\n\t * Type of toast to show.\n\t */\n\ttype?: IconType | 'working';\n\t/**\n\t * Toast type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: Partial<typeof defaultTypeLabels>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Toast UI component\n */\nexport const Toast = ({\n\tchildren,\n\tid,\n\ttype = 'info',\n\ttypeLabels = defaultTypeLabels,\n\tclassName,\n}: ToastProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toast';\n\tconst cssClasses = {\n\t\tinfo: `${baseClass}--info`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tworking: `${baseClass}--working`,\n\t\tdismissing: `${baseClass}--dismissing`,\n\t\tdismissed: `${baseClass}--dismissed`,\n\t\ttransition: `${baseClass}--transition`,\n\t};\n\n\t// Label by type.\n\tconst toastTypeLabel = `${typeLabels[type]} `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, cssClasses[type], className])}\n\t\t\tid={id}\n\t\t>\n\t\t\t<div className={`${baseClass}__icon-container`}>\n\t\t\t\t{type === 'working' ? (\n\t\t\t\t\t<Spinner colorType='monochromatic' size='lg' />\n\t\t\t\t) : (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--${type}`}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__message`}>\n\t\t\t\t<span className='visually-hidden'>{toastTypeLabel}</span>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Slide, ToastContainer } from 'react-toastify';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport './toaster.css';\n\n/**\n * Prop types for Toast\n */\ninterface ToasterProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Duration in milliseconds before the toast will auto-close.\n\t */\n\tautoCloseDuration?: number;\n\t/**\n\t * Maximum number of toasts that can be displayed at once.\n\t */\n\tlimit?: number;\n\t/**\n\t * Location toast objects will show in the UI.\n\t */\n\tposition?: 'bottom-right' | 'top-right';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Toaster UI component\n */\nexport const Toaster = ({\n\tautoCloseDuration = 5000,\n\tlimit = 5,\n\tposition = 'bottom-right',\n\tclassName,\n}: ToasterProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toaster';\n\tconst toasterClasses = mergeClasses([baseClass, className]);\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<ToastContainer\n\t\t\t\tclassName={toasterClasses}\n\t\t\t\tautoClose={autoCloseDuration}\n\t\t\t\tdraggable={false}\n\t\t\t\ticon={false}\n\t\t\t\tlimit={limit}\n\t\t\t\tnewestOnTop={true}\n\t\t\t\tposition={position}\n\t\t\t\trole='status'\n\t\t\t\ttransition={Slide}\n\t\t\t/>\n\t\t</>\n\t);\n};\n","import React, { ReactElement, ReactNode } from 'react';\nimport { cssTransition, toast as toastApi, ToastOptions } from 'react-toastify';\n\nimport { Toast } from './Toast';\n\nexport enum ToastType {\n\tCritical = 'critical',\n\tWarning = 'warning',\n\tWorking = 'working',\n\tSuccess = 'success',\n\tInfo = 'info',\n}\n\nexport const useToast = (): [\n\t(\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions?: ToastOptions,\n\t) => string | number,\n\ttypeof toastApi,\n\tReturnType<typeof cssTransition>,\n] => {\n\tconst addToast = (\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions: ToastOptions = {},\n\t): string | number => {\n\t\tconst toastContent: ReactNode = <Toast type={type}>{message}</Toast>;\n\n\t\tlet toastOptions: ToastOptions = {\n\t\t\t...options,\n\t\t};\n\n\t\tif (type === ToastType.Critical || type === ToastType.Warning) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\trole: 'alert',\n\t\t\t};\n\t\t}\n\n\t\tif (type === ToastType.Working) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\tcloseButton: false,\n\t\t\t\tcloseOnClick: false,\n\t\t\t};\n\t\t}\n\n\t\treturn toastApi(toastContent, toastOptions);\n\t};\n\n\tconst workingTransition = cssTransition({\n\t\tcollapse: false,\n\t\tenter: 'pds-toast--bounceInPlace',\n\t\texit: 'pds-toast--slideOut',\n\t});\n\n\treturn [addToast, toastApi, workingTransition];\n};\n","import { useMemo } from 'react';\n\nexport const ELLIPSIS = '...';\n\nconst range = (start: number, end: number) => {\n\tconst length = end - start + 1;\n\treturn Array.from({ length }, (_, index) => index + start);\n};\n\nexport const usePagination = ({\n\tbufferCount = 1,\n\tcurrentPage,\n\titemsPerPage,\n\ttotalItemCount,\n}) => {\n\tconst paginationRange = useMemo(() => {\n\t\t// Calculate the total number of pages.\n\t\tconst totalPageCount = Math.ceil(totalItemCount / itemsPerPage);\n\n\t\t// Set the total number of page numbers to show.\n\t\tconst totalPageNumbers = bufferCount + 5;\n\n\t\t// Set first/last page indices.\n\t\tconst firstPageIndex = 1;\n\t\tconst lastPageIndex = totalPageCount;\n\n\t\t// If the total number of pages is less than the number of pages we want to show, show all the page numbers.\n\t\tif (totalPageNumbers >= totalPageCount) {\n\t\t\treturn range(1, totalPageCount);\n\t\t}\n\n\t\t// If the total number of pages is greater, provide various cases for showing the page numbers with truncation ellipses.\n\n\t\t// Calculate left and right buffer indices.\n\t\tconst leftBufferIndex = Math.max(currentPage - bufferCount, 1);\n\t\tconst rightBufferIndex = Math.min(\n\t\t\tcurrentPage + bufferCount,\n\t\t\ttotalPageCount,\n\t\t);\n\n\t\t// Determine if/when we should show the ellipses.\n\t\tconst shouldShowLeftEllipse = leftBufferIndex > 2;\n\t\tconst shouldShowRightEllipse = rightBufferIndex < totalPageCount - 2;\n\n\t\t// If the current page is near the beginning, show the ellipsis on the right.\n\t\tif (!shouldShowLeftEllipse && shouldShowRightEllipse) {\n\t\t\tconst leftItemCount = 3 + 2 * bufferCount;\n\t\t\tconst leftRange = range(1, leftItemCount);\n\n\t\t\treturn [...leftRange, ELLIPSIS, totalPageCount];\n\t\t}\n\n\t\t// If the current page is near the end, show the ellipsis on the left.\n\t\tif (shouldShowLeftEllipse && !shouldShowRightEllipse) {\n\t\t\tconst rightItemCount = 3 + 2 * bufferCount;\n\t\t\tconst rightRange = range(\n\t\t\t\ttotalPageCount - rightItemCount + 1,\n\t\t\t\ttotalPageCount,\n\t\t\t);\n\t\t\treturn [firstPageIndex, ELLIPSIS, ...rightRange];\n\t\t}\n\n\t\t// If the current page is in the middle, show the ellipses on both sides.\n\t\tif (shouldShowLeftEllipse && shouldShowRightEllipse) {\n\t\t\tconst middleRange = range(leftBufferIndex, rightBufferIndex);\n\t\t\treturn [\n\t\t\t\tfirstPageIndex,\n\t\t\t\tELLIPSIS,\n\t\t\t\t...middleRange,\n\t\t\t\tELLIPSIS,\n\t\t\t\tlastPageIndex,\n\t\t\t];\n\t\t}\n\t}, [totalItemCount, itemsPerPage, bufferCount, currentPage]);\n\n\treturn paginationRange;\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { usePagination, ELLIPSIS } from './usePagination';\n\nimport './pagination.css';\n\n/**\n * Prop types for Pagination\n */\nexport interface PaginationProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Minimum number of page buttons to buffer on either side of the current page.\n\t * This will change the number of page buttons shown in total.\n\t */\n\tbufferCount?: number;\n\t/**\n\t * Current page number.\n\t */\n\tcurrentPage: number;\n\t/**\n\t * Heading level. Defaults to `h2`.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text for the pagination component. Will only be accessible to screen readers.\n\t */\n\theadingText?: string;\n\t/**\n\t * Number of items per page.\n\t */\n\titemsPerPage?: number;\n\t/**\n\t * Label strings for previous and next buttons.\n\t */\n\tlabelStrings?: {\n\t\tprevious: string;\n\t\tnext: string;\n\t};\n\t/**\n\t * Callback to handle page change.\n\t * Use a state hook to update the current page in a parent component.\n\t * For example: `onPageChange={(page) => setCurrentPage(page)}`\n\t */\n\tonPageChange?: (page: number) => void;\n\t/**\n\t * Total number of items to paginate.\n\t */\n\ttotalItemCount: number;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * Pagination UI component\n */\nexport const Pagination = ({\n\tbufferCount = 1,\n\tcurrentPage,\n\theadingLevel = 'h2',\n\theadingText = 'Pagination',\n\titemsPerPage = 10,\n\tlabelStrings = {\n\t\tprevious: 'Go to previous page',\n\t\tnext: 'Go to next page',\n\t},\n\tonPageChange,\n\ttotalItemCount,\n\tclassName,\n\t...props\n}: PaginationProps) => {\n\t// Get the pagination range from the usePagination hook.\n\tconst paginationRange = usePagination({\n\t\tcurrentPage,\n\t\ttotalItemCount,\n\t\tbufferCount,\n\t\titemsPerPage,\n\t});\n\n\t// Determine the index of the last page.\n\tconst lastPage = paginationRange[paginationRange.length - 1];\n\n\t// Set up event handlers.\n\tconst onNext = () => {\n\t\tonPageChange(currentPage + 1);\n\t};\n\n\tconst onPrevious = () => {\n\t\tonPageChange(currentPage - 1);\n\t};\n\n\t// Set up classes.\n\tconst baseClass = 'pds-pagination';\n\tconst itemClass = `${baseClass}__item`;\n\tconst currentClass = `${itemClass}--current`;\n\tconst disabledClass = `${itemClass}--disabled`;\n\n\t// If there are less than 2 times in pagination range don't render the component.\n\tif (currentPage === 0 || paginationRange.length < 2) {\n\t\treturn null;\n\t}\n\n\t// Otherwise render the output.\n\treturn (\n\t\t<nav\n\t\t\taria-labelledby='pagination'\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Hx\n\t\t\t\tid='pagination'\n\t\t\t\tbaseClass={baseClass}\n\t\t\t\tclassName='visually-hidden'\n\t\t\t\tlevel={headingLevel}\n\t\t\t>\n\t\t\t\t{headingText}\n\t\t\t</Hx>\n\t\t\t<ul className={`${baseClass}__list`}>\n\t\t\t\t{/* Render Previous button. */}\n\t\t\t\t<li\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t`${itemClass}--prev`,\n\t\t\t\t\t\tcurrentPage === 1 ? disabledClass : undefined,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-disabled={currentPage === 1 ? true : undefined}\n\t\t\t\t\t\taria-label={labelStrings.previous}\n\t\t\t\t\t\tonClick={currentPage === 1 ? undefined : onPrevious}\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon iconName='arrowLeft' />\n\t\t\t\t\t</button>\n\t\t\t\t</li>\n\n\t\t\t\t{/* Render Page buttons and ellipses */}\n\t\t\t\t{paginationRange.map((pageNumber, index) => {\n\t\t\t\t\tif (pageNumber === ELLIPSIS) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([itemClass, `${itemClass}--truncated`])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>…</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t\t\tcurrentPage === pageNumber ? currentClass : undefined,\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\taria-current={currentPage === pageNumber ? 'page' : undefined}\n\t\t\t\t\t\t\t\tonClick={() => onPageChange(Number(pageNumber))}\n\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{pageNumber}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\n\t\t\t\t{/* Render Next button. */}\n\t\t\t\t<li\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\titemClass,\n\t\t\t\t\t\t`${itemClass}--next`,\n\t\t\t\t\t\tcurrentPage === lastPage ? disabledClass : undefined,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-disabled={currentPage === lastPage ? true : undefined}\n\t\t\t\t\t\taria-label={labelStrings.next}\n\t\t\t\t\t\tonClick={currentPage === lastPage ? undefined : onNext}\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon iconName='arrowRight' />\n\t\t\t\t\t</button>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</nav>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseRef,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\nimport { createRandomID, mergeClasses } from '@libs/components/utils';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport {\n\t// ANIMATION_TRANSITION_REVEAL_DURATION,\n\tANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n} from '@vars/animation';\n\n// Set the animation duration to 0 for now.\nconst ANIMATION_TRANSITION_REVEAL_DURATION = 0;\n\nimport './expansion-panel.css';\n\n/**\n * Prop types for ExpansionPanel\n */\ninterface ExpansionPanelProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * The content of the expansion panel.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * The ID of the expansion panel. If not provided, a unique ID will be generated.\n\t */\n\tid?: string;\n\t/**\n\t * Whether the expansion panel is open or not.\n\t */\n\tisOpen?: boolean;\n\t/**\n\t * The summary label of the expansion panel.\n\t */\n\tsummary?: string | ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ExpansionPanel UI component\n */\nexport const ExpansionPanel = ({\n\tchildren,\n\tid,\n\tisOpen = false,\n\tsummary,\n\tclassName,\n\t...props\n}: ExpansionPanelProps) => {\n\tconst [isExpanded, setIsExpanded] = useState(isOpen);\n\n\t// Generate a short unique ID if one is not provided and\n\t// use a ref to store the processedID persistently across renders.\n\tconst processedIDRef = useRef(\n\t\tid ? id : `expansion-panel-${createRandomID()}`,\n\t);\n\tconst processedID = processedIDRef.current;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-expansion-panel';\n\n\tconst detailsRef = useRef<HTMLDetailsElement>(null);\n\tconst summaryRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\n\tuseEffect(() => {\n\t\tconst details = detailsRef.current;\n\t\tconst summary = summaryRef.current;\n\t\tconst content = contentRef.current;\n\n\t\tif (!details || !summary || !content) return;\n\n\t\tlet animation: Animation | null = null;\n\t\tlet isClosing = false;\n\t\tlet isExpanding = false;\n\n\t\tconst onClick = (e: Event) => {\n\t\t\te.preventDefault();\n\t\t\tdetails.style.overflow = 'hidden';\n\t\t\tif (isClosing || !details.open) {\n\t\t\t\topen();\n\t\t\t} else if (isExpanding || details.open) {\n\t\t\t\tshrink();\n\t\t\t}\n\t\t};\n\n\t\tconst shrink = () => {\n\t\t\tisClosing = true;\n\t\t\tsetIsExpanded(false);\n\t\t\tconst startHeight = `${details.offsetHeight}px`;\n\t\t\tconst endHeight = `${summary.offsetHeight}px`;\n\n\t\t\tif (animation) animation.cancel();\n\n\t\t\tanimation = details.animate(\n\t\t\t\t{ height: [startHeight, endHeight] },\n\t\t\t\t{\n\t\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t\t},\n\t\t\t);\n\t\t\tanimation.onfinish = () => onAnimationFinish(false);\n\t\t\tanimation.oncancel = () => (isClosing = false);\n\t\t};\n\n\t\tconst open = () => {\n\t\t\tdetails.style.height = `${details.offsetHeight}px`;\n\t\t\tdetails.open = true;\n\t\t\tsetIsExpanded(true);\n\t\t\trequestAnimationFrame(() => expand());\n\t\t};\n\n\t\tconst expand = () => {\n\t\t\tisExpanding = true;\n\t\t\tconst startHeight = `${details.offsetHeight}px`;\n\t\t\tconst endHeight = `${summary.offsetHeight + content.offsetHeight}px`;\n\n\t\t\tif (animation) animation.cancel();\n\n\t\t\tanimation = details.animate(\n\t\t\t\t{ height: [startHeight, endHeight] },\n\t\t\t\t{\n\t\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t\t},\n\t\t\t);\n\t\t\tanimation.onfinish = () => onAnimationFinish(true);\n\t\t\tanimation.oncancel = () => (isExpanding = false);\n\t\t};\n\n\t\tconst onAnimationFinish = (open: boolean) => {\n\t\t\tdetails.open = open;\n\t\t\tanimation = null;\n\t\t\tisClosing = false;\n\t\t\tisExpanding = false;\n\t\t\tdetails.style.height = details.style.overflow = '';\n\t\t};\n\n\t\tsummary.addEventListener('click', onClick);\n\t\treturn () => summary.removeEventListener('click', onClick);\n\t}, []);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t<details\n\t\t\t\tkey={processedID}\n\t\t\t\tid={processedID}\n\t\t\t\topen={isOpen}\n\t\t\t\tref={detailsRef}\n\t\t\t>\n\t\t\t\t<summary ref={summaryRef}>\n\t\t\t\t\t<span>{summary}</span>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${isExpanded ? 'rotated' : ''}`}\n\t\t\t\t\t/>\n\t\t\t\t</summary>\n\t\t\t\t<div className={`${baseClass}__content`} ref={contentRef}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './expansion-panel-group.css';\n\n/**\n * Prop types for ExpansionPanelGroup\n */\ninterface ExpansionPanelGroupProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * The content of the expansion panel group. This should be a series of ExpansionPanel components.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * The display type of the expansion panel group.\n\t */\n\tdisplayType?: 'standard' | 'no-border' | 'stacked';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ExpansionPanelGroup UI component\n */\nexport const ExpansionPanelGroup = ({\n\tchildren,\n\tdisplayType = 'standard',\n\tclassName,\n\t...props\n}: ExpansionPanelGroupProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-expansion-panel-group';\n\tconst displayTypeClass = `${baseClass}--${displayType}`;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, displayTypeClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport './panel.css';\n\nimport { GridGapOptions } from '@layouts/layout-types';\nimport { mergeClasses } from '@libs/components/utils';\n\ntype StatusType = 'info' | 'success' | 'warning' | 'critical' | 'neutral';\n\nexport interface PanelProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Panel content.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Should the panel show a status indicator.\n\t */\n\thasStatusIndicator?: boolean;\n\t/**\n\t * Padding for the panel.\n\t */\n\tpadding?: GridGapOptions;\n\t/**\n\t * Status type for panel. Only renders if `hasStatusIndicator` is true.\n\t */\n\tstatusType?: StatusType;\n\t/**\n\t * Which variant of panel to render\n\t */\n\tvariant?: 'default' | 'sunken' | 'raised' | 'overlay' | 'critical';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Panel UI component\n */\nexport const Panel = ({\n\tchildren,\n\thasStatusIndicator = false,\n\tpadding = 'standard',\n\tstatusType,\n\tvariant = 'default',\n\tclassName,\n\t...props\n}: PanelProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-panel';\n\tconst statusClass = hasStatusIndicator\n\t\t? `${baseClass}__status ${baseClass}__status-${statusType}`\n\t\t: null;\n\tconst variantClass = `${baseClass}--${variant}`;\n\tconst contentClass = `${baseClass}__content`;\n\tconst paddingClass =\n\t\tpadding !== 'standard' ? `${contentClass}--pad-${padding}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, variantClass, className ?? '']\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasStatusIndicator && statusType && (\n\t\t\t\t<span className={statusClass}></span>\n\t\t\t)}\n\t\t\t<div className={mergeClasses([contentClass, paddingClass])}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './panel-list.css';\n\nexport type PanelListBackground = 'default' | 'secondary' | 'transparent';\n\n/**\n * Prop types for PanelList\n */\nexport interface PanelListProps extends ComponentPropsWithoutRef<'ul'> {\n\t/**\n\t * Background color for the panel list.\n\t */\n\tbackground?: PanelListBackground;\n\t/**\n\t * Children components. These should be PanelRow components.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Whether to have an outside border. There will always be a border between rows.\n\t */\n\thasBorder?: boolean;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * PanelList UI component\n */\nexport const PanelList = ({\n\tbackground = 'default',\n\tchildren,\n\thasBorder = true,\n\tclassName,\n\t...props\n}: PanelListProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-panel-list';\n\tconst backgroundClass =\n\t\tbackground !== 'default' ? `${baseClass}--${background}` : null;\n\tconst borderClass = !hasBorder ? `${baseClass}--borderless` : null;\n\n\t// Render the output\n\treturn (\n\t\t<ul\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tbackgroundClass,\n\t\t\t\tborderClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</ul>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport {\n\t// ANIMATION_TRANSITION_REVEAL_DURATION,\n\tANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n} from '@vars/animation';\n\n// Set the animation duration to 0 for now.\nconst ANIMATION_TRANSITION_REVEAL_DURATION = 0;\n\nimport './panel-list.css';\n\n/**\n * Prop types for PanelRow\n */\nexport interface PanelRowProps extends ComponentPropsWithoutRef<'li'> {\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Whether the panel row is expandable.\n\t */\n\tisExpandable?: boolean;\n\t/**\n\t * Aria-label for the expand button.\n\t */\n\texpandButtonAriaLabel?: string;\n}\n\n/**\n * PanelRow UI component\n */\nexport const PanelRow = ({\n\tchildren,\n\tclassName,\n\tisExpandable = false,\n\texpandButtonAriaLabel,\n\t...props\n}: PanelRowProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-panel-row';\n\tconst [isExpanded, setIsExpanded] = useState(false);\n\tconst liRef = useRef<HTMLLIElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst itemsLeftSlot = slots['items-left'];\n\tconst itemsRightSlot = slots['items-right'];\n\tconst itemsBelowSlot = slots['items-below'];\n\n\tconst handleExpand = () => {\n\t\tconst content = contentRef.current;\n\t\tconst li = liRef.current;\n\t\tif (!content || !li) return;\n\n\t\tconst isExpanding = !isExpanded;\n\t\tsetIsExpanded(isExpanding);\n\n\t\tif (isExpanding) {\n\t\t\tcontent.style.display = 'block';\n\t\t\tcontent.style.height = 'auto';\n\t\t\tconst contentHeight = `${content.scrollHeight}px`;\n\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ height: '0px', opacity: '0' },\n\t\t\t\t\t{ height: contentHeight, opacity: '1' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t\t},\n\t\t\t).onfinish = () => {\n\t\t\t\tObject.assign(content.style, {\n\t\t\t\t\theight: 'auto',\n\t\t\t\t\topacity: '1',\n\t\t\t\t});\n\t\t\t\tli.classList.add('is-expanded');\n\t\t\t};\n\t\t} else {\n\t\t\tconst contentHeight = `${content.scrollHeight}px`;\n\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ height: contentHeight, opacity: '1' },\n\t\t\t\t\t{ height: '0px', opacity: '0' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: ANIMATION_TRANSITION_REVEAL_DURATION,\n\t\t\t\t\teasing: ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION,\n\t\t\t\t},\n\t\t\t).onfinish = () => {\n\t\t\t\tObject.assign(content.style, {\n\t\t\t\t\theight: '0',\n\t\t\t\t\topacity: '0',\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t});\n\t\t\t\tli.classList.remove('is-expanded');\n\t\t\t};\n\t\t}\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<li\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t\tref={liRef}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t`${baseClass}__main`,\n\t\t\t\t\tisExpandable ? 'is-expandable' : '',\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{itemsLeftSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--left`}>\n\t\t\t\t\t\t{itemsLeftSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{itemsRightSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--right`}>\n\t\t\t\t\t\t{itemsRightSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{isExpandable && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`${baseClass}__expand-button`}\n\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\taria-label={expandButtonAriaLabel}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\t\tclassName={`${baseClass}__expand-icon ${isExpanded ? 'rotated' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{isExpandable && itemsBelowSlot && (\n\t\t\t\t<div\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tclassName={`${baseClass}__items ${baseClass}__items--below`}\n\t\t\t\t\tstyle={{ display: 'none', height: '0', opacity: '0' }}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${baseClass}__items-inside`}>{itemsBelowSlot}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</li>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './picture.css';\n\n/**\n * Prop types for Picture\n */\nexport interface PictureProps extends ComponentPropsWithoutRef<'img'> {\n\t/**\n\t * The WebP image source (preferred for modern browsers)\n\t */\n\tsrcWebp: string;\n\t/**\n\t * The fallback image source (e.g., PNG or JPG)\n\t */\n\tsrcFallback: string;\n\t/**\n\t * Alt text for the image. Defaults to empty string for decorative images.\n\t */\n\talt?: string;\n\t/**\n\t * Optional width for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\twidth?: string | number;\n\t/**\n\t * Optional height for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\theight?: string | number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Picture UI component\n */\nexport const Picture = ({\n\tsrcWebp,\n\tsrcFallback,\n\talt = '',\n\twidth,\n\theight,\n\tclassName,\n\t...props\n}: PictureProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-picture';\n\n\t// Render the output\n\treturn (\n\t\t<picture className={mergeClasses([baseClass, className ?? ''])}>\n\t\t\t<source srcSet={srcWebp} type='image/webp' />\n\t\t\t<img\n\t\t\t\tsrc={srcFallback}\n\t\t\t\talt={alt}\n\t\t\t\twidth={width}\n\t\t\t\theight={height}\n\t\t\t\tclassName={`${baseClass}__img`}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</picture>\n\t);\n};\n","import React, {\n\tuseRef,\n\tuseState,\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseEffect,\n} from 'react';\n\nimport {\n\tuseFloating,\n\tautoUpdate,\n\toffset,\n\tflip,\n\tshift,\n\tuseClick,\n\tuseDismiss,\n\tuseRole,\n\tuseInteractions,\n\tuseTransitionStyles,\n\tFloatingArrow,\n\tFloatingFocusManager,\n\tFloatingPortal,\n\tarrow,\n} from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { CloseButton } from '@components/buttons/CloseButton/CloseButton';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport { FuiPlacement } from '@libs/types/custom-types';\n\nimport './popover.css';\n\ninterface PopoverProps\n\textends Omit<ComponentPropsWithoutRef<'div'>, 'content'> {\n\t/**\n\t * Content to display in the popover.\n\t */\n\tcontent?: ReactNode;\n\t/**\n\t * Text for close button aria-label attribute. Only used if hasCloseButton is true.\n\t */\n\tcloseButtonLabel?: string;\n\t/**\n\t * Text or HTML content to use as the trigger instead of an icon. Leave null to use the icon. This allows passing HTML content to customize the trigger appearance or functionality.\n\t */\n\tcustomTrigger?: ReactNode;\n\t/**\n\t * Indicates if close button will be shown.\n\t */\n\thasCloseButton?: boolean;\n\t/**\n\t * Additional spacing between the trigger and the popover. Only applies to popovers with a custom trigger. Icon triggers have a fixed spacing.\n\t */\n\toffsetValue?: number;\n\t/**\n\t * Callback function that triggers when closing Popover.\n\t */\n\tonClose?: () => void;\n\t/**\n\t * Preferred placement of the popover in relation to the trigger. Will be modified if there is not enough space.\n\t */\n\tplacement?: FuiPlacement;\n\t/**\n\t * Text for popover title.\n\t */\n\ttitle?: string;\n\t/**\n\t * The accessible text for the trigger. Only necessary when the trigger is an icon.\n\t */\n\ttriggerAccessibleText?: string;\n\t/**\n\t * The icon to use as the trigger.\n\t */\n\ttriggerIcon?: 'circleInfo' | 'circleQuestion';\n\t/**\n\t * Boolean to determine if the Popover is open by default.\n\t */\n\tpopoverIsOpen?: boolean;\n\t/**\n\t * Function to set Popover open state.\n\t */\n\tsetPopoverIsOpen?: (isOpen: boolean) => void;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Additional class names for the Popover Container.\n\t */\n\tclassNameContainer?: string;\n}\n\nconst ARROW_HEIGHT = 8;\nconst ARROW_WIDTH = 14;\nconst GAP = 6;\n\n/**\n * Popover UI component\n */\nexport const Popover = ({\n\tcontent,\n\tcloseButtonLabel = 'Close',\n\tcustomTrigger = false,\n\thasCloseButton = false,\n\toffsetValue = 0,\n\tonClose = () => {},\n\tplacement = 'top',\n\ttitle,\n\ttriggerIcon = 'circleInfo',\n\ttriggerAccessibleText = 'Show more information',\n\tpopoverIsOpen = false,\n\tsetPopoverIsOpen = () => {},\n\tclassName,\n\tclassNameContainer,\n\t...props\n}: PopoverProps) => {\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState<boolean>(popoverIsOpen);\n\n\t// Update isOpen state when popoverIsOpen prop changes\n\tuseEffect(() => {\n\t\tsetIsOpen(popoverIsOpen);\n\t}, [popoverIsOpen]);\n\n\t// Update popoverIsOpen when isOpen prop changes\n\tuseEffect(() => {\n\t\tsetPopoverIsOpen(isOpen);\n\t}, [isOpen]);\n\n\t// Get type of custom trigger.\n\tconst triggerType = typeof customTrigger;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-popover';\n\tconst triggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger-custom`,\n\t\ttriggerType === 'string' ? `${baseClass}__trigger-text` : '',\n\t]);\n\n\t// Preprocess offset value.\n\tconst processedOffsetValue = customTrigger ? offsetValue : 0;\n\n\t// FUI config.\n\tconst arrowRef = useRef(null);\n\n\tconst { refs, floatingStyles, context, middlewareData } = useFloating({\n\t\tplacement: placement,\n\t\topen: isOpen,\n\t\tonOpenChange(nextOpen) {\n\t\t\tsetIsOpen(nextOpen);\n\n\t\t\tif (!nextOpen) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t},\n\t\tmiddleware: [\n\t\t\toffset(ARROW_HEIGHT + GAP + processedOffsetValue),\n\t\t\tflip({ padding: 8 }),\n\t\t\tshift({ padding: 8 }),\n\t\t\tarrow({ element: arrowRef }),\n\t\t],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst handleClose = () => {\n\t\tsetIsOpen(false);\n\t\t// Call the onClose function when Popover closes\n\t\tif (onClose) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst click = useClick(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context);\n\n\tconst { getReferenceProps, getFloatingProps } = useInteractions([\n\t\tclick,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\tconst arrowX = middlewareData.arrow?.x ?? 0;\n\tconst arrowY = middlewareData.arrow?.y ?? 0;\n\tconst transformX = arrowX + ARROW_WIDTH / 2;\n\tconst transformY = arrowY + ARROW_HEIGHT;\n\n\tconst { isMounted } = useTransitionStyles(context, {\n\t\tinitial: {\n\t\t\ttransform: 'scale(0)',\n\t\t},\n\t\tcommon: ({ side }) => ({\n\t\t\ttransformOrigin: {\n\t\t\t\ttop: `${transformX}px calc(100% + ${ARROW_HEIGHT}px)`,\n\t\t\t\tbottom: `${transformX}px ${-ARROW_HEIGHT}px`,\n\t\t\t\tleft: `calc(100% + ${ARROW_HEIGHT}px) ${transformY}px`,\n\t\t\t\tright: `${-ARROW_HEIGHT}px ${transformY}px`,\n\t\t\t}[side],\n\t\t}),\n\t});\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t<span\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\tref={refs.setReference}\n\t\t\t\trole='button'\n\t\t\t\ttabIndex={0}\n\t\t\t\t{...getReferenceProps()}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{customTrigger ? (\n\t\t\t\t\t<span className={triggerClasses}>{customTrigger}</span>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className='visually-hidden'>{triggerAccessibleText}</span>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticonName={triggerIcon}\n\t\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t{isMounted && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager\n\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\tmodal={hasCloseButton}\n\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t\t\t`${baseClass}__container`,\n\t\t\t\t\t\t\t\tclassNameContainer,\n\t\t\t\t\t\t\t])}\n\t\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FloatingArrow\n\t\t\t\t\t\t\t\tref={arrowRef}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\theight={ARROW_HEIGHT}\n\t\t\t\t\t\t\t\twidth={ARROW_WIDTH}\n\t\t\t\t\t\t\t\ttipRadius={0}\n\t\t\t\t\t\t\t\tfill='var(--pds-color-bg-default)'\n\t\t\t\t\t\t\t\tstroke='var(--pds-color-border-default)'\n\t\t\t\t\t\t\t\tstrokeWidth={1}\n\t\t\t\t\t\t\t\tclassName={`${baseClass}__arrow`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className={`${baseClass}__container-inner`}>\n\t\t\t\t\t\t\t\t{title && <div className={`${baseClass}__title`}>{title}</div>}\n\t\t\t\t\t\t\t\t{content && (\n\t\t\t\t\t\t\t\t\t<div className={`${baseClass}__content`}>{content}</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t\t<div className={`${baseClass}__close-wrapper`}>\n\t\t\t\t\t\t\t\t\t\t<CloseButton\n\t\t\t\t\t\t\t\t\t\t\tariaLabel={closeButtonLabel}\n\t\t\t\t\t\t\t\t\t\t\tonClick={handleClose}\n\t\t\t\t\t\t\t\t\t\t\ticonSize='lg'\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { CSSProperties, ComponentPropsWithoutRef } from 'react';\n\nimport { createRandomID } from '@libs/components/utils';\n\nimport './progress-bar.css';\n\ninterface ProgressBarBreakpoint {\n\tcolorType: 'neutral' | 'info' | 'success' | 'warning' | 'critical';\n\tpercentage: number;\n}\n\ninterface ProgressBarProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Array of color breakpoints. Each breakpoint should have a `colorType` and `percentage` value.\n\t */\n\tcolorBreakpoints: ProgressBarBreakpoint[];\n\t/**\n\t * ID of the Progress Bar. If not provided, a unique ID will be generated.\n\t */\n\tid?: string;\n\t/**\n\t * Progress Bar label. Will be available to screen readers if `showLabel` is false.\n\t */\n\tlabel: string;\n\t/**\n\t * Message or description used to help clarify the usage of the progress bar.\n\t */\n\tmessage?: string;\n\t/**\n\t * Position of the message relative to the progress bar.\n\t */\n\tmessagePosition?: 'above' | 'below';\n\t/**\n\t * Percent complete.\n\t */\n\tpercentage: number;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Should the percentage label be visible?\n\t */\n\tshowPercentage?: boolean;\n\t/**\n\t * Size of the progress bar.\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\ninterface CSSVariables extends CSSProperties {\n\t[key: `--${string}`]: string | number;\n}\n\n// Map colorTypes to CSS variables.\nconst colorMap = {\n\tneutral: '--pds-color-semantic-neutral-utility',\n\tinfo: '--pds-color-status-info-foreground',\n\tsuccess: '--pds-color-status-success-foreground',\n\twarning: '--pds-color-status-warning-foreground',\n\tcritical: '--pds-color-status-critical-foreground',\n};\n\n/**\n * ProgressBar UI component\n */\nexport const ProgressBar = ({\n\tcolorBreakpoints = [\n\t\t{ colorType: 'info', percentage: 0 },\n\t\t{ colorType: 'success', percentage: 100 },\n\t],\n\tid,\n\tlabel,\n\tmessage,\n\tmessagePosition = 'below',\n\tpercentage,\n\tshowLabel = false,\n\tshowPercentage = false,\n\tsize = 'md',\n\tclassName,\n\t...props\n}: ProgressBarProps) => {\n\t// Generate a short unique ID if one is not provided.\n\tconst processedID = id ? id : createRandomID();\n\n\t// Set up classes.\n\tconst baseClass = 'pds-progress-bar';\n\tconst labelClasses = showLabel ? `${baseClass}__label` : 'visually-hidden';\n\tconst trackClasses = `${baseClass}__track ${baseClass}__track--${size}`;\n\n\t// The bar percentage has a max of 100, but label can go beyond and use actual percentage value.\n\tconst barPercentage = percentage > 100 ? 100 : percentage;\n\n\t// Determine the color of the bar based on the percentage.\n\tlet colorType: ProgressBarBreakpoint['colorType'] = 'neutral'; // Default color\n\tcolorBreakpoints.forEach((breakpoint) => {\n\t\tif (percentage >= breakpoint.percentage) {\n\t\t\tcolorType = breakpoint.colorType;\n\t\t}\n\t});\n\n\t// Prepare the message.\n\tconst messageMarkup = (\n\t\t<div className={`${baseClass}__message`}>{message}</div>\n\t);\n\n\t// Where to render the message if it exists.\n\tconst messageIsAbove = message && messagePosition === 'above';\n\tconst messageIsBelow = message && messagePosition === 'below';\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, className].join(' ').trim().replace(/\\s+/g, ' ')}\n\t\t\tstyle={{ '--bar-percentage': `${barPercentage}%` } as CSSVariables}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div id={processedID} className={labelClasses}>\n\t\t\t\t{label}\n\t\t\t</div>\n\n\t\t\t{(messageIsAbove || showPercentage) && (\n\t\t\t\t<div className={`${baseClass}__details`}>\n\t\t\t\t\t{messageIsAbove && messageMarkup}\n\t\t\t\t\t{showPercentage && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${baseClass}__percentage`}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tcolor: `hsl(from var(${colorMap[colorType]}) h s calc(l - 7))`,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{percentage}%\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__wrapper`}>\n\t\t\t\t<div\n\t\t\t\t\trole='progressbar'\n\t\t\t\t\taria-labelledby={processedID}\n\t\t\t\t\taria-valuenow={barPercentage}\n\t\t\t\t\tclassName={trackClasses}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__bar`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: `${barPercentage}%`,\n\t\t\t\t\t\t\tbackgroundColor: `var(${colorMap[colorType]})`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{messageIsBelow && messageMarkup}\n\t\t</div>\n\t);\n};\n","import React, {\n\tCSSProperties,\n\tComponentPropsWithoutRef,\n\tReactNode,\n} from 'react';\n\nimport { createRandomID } from '@libs/components/utils';\nimport { SPACING_5XL, SPACING_6XL, SPACING_7XL } from '@vars/spacing';\n\nimport './progress-ring.css';\n\ninterface ProgressRingProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * ID of the Progress Ring. If not provided, a unique ID will be generated.\n\t */\n\tid?: string;\n\t/**\n\t * Inner label for the Progress Ring. May be used for showing a percentage or a count of steps.\n\t */\n\tinnerLabel?: ReactNode;\n\t/**\n\t * Label for the Progress Ring. Will be available to screen readers if `showLabel` is false.\n\t */\n\tlabel: string;\n\t/**\n\t * Percentage of progress.\n\t */\n\tpercentage: number;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Should the percentage be visible? Will be overridden by `innerLabel` if one is provided.\n\t */\n\tshowPercentage?: boolean;\n\t/**\n\t * Size of the progress ring.\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\ninterface CSSVariables extends CSSProperties {\n\t[key: `--${string}`]: string | number;\n}\n\n/**\n * ProgressRing UI component\n */\nexport const ProgressRing = ({\n\tid,\n\tinnerLabel,\n\tlabel,\n\tpercentage,\n\tshowLabel = false,\n\tshowPercentage = false,\n\tsize = 'md',\n\tclassName,\n\t...props\n}: ProgressRingProps) => {\n\t// Generate a short unique ID if one is not provided.\n\tconst processedID = id ? id : createRandomID();\n\n\t// Set up classes.\n\tconst baseClass = 'pds-progress-ring';\n\tconst labelClasses = showLabel ? `${baseClass}__label` : 'visually-hidden';\n\tconst loadingTextClasses = `${baseClass}__loading-text ${baseClass}__loading-text--${size}`;\n\n\t// Size variables.\n\tconst ringInPx = (size) => {\n\t\treturn size * 16;\n\t};\n\n\tlet ringSize = ringInPx(SPACING_6XL);\n\tlet ringStrokeWidth = 7;\n\n\tif (size === 'sm') {\n\t\tringSize = ringInPx(SPACING_5XL);\n\t\tringStrokeWidth = ringStrokeWidth / 1.25;\n\t}\n\tif (size === 'lg') {\n\t\tringSize = ringInPx(SPACING_7XL);\n\t\tringStrokeWidth = ringStrokeWidth * 1.25;\n\t}\n\n\tconst ringRadius = ringSize / 2 - ringStrokeWidth / 2;\n\n\t// Calculate the percentage distance around the ring.\n\tconst dashArray = 2 * Math.PI * ringRadius;\n\tconst dashOffset = dashArray - (dashArray * percentage) / 100;\n\n\t// Preprocess the inner label.\n\tlet innerLabelText;\n\tif (innerLabel) {\n\t\tinnerLabelText = innerLabel;\n\t} else if (showPercentage) {\n\t\tinnerLabelText = `${percentage}%`;\n\t} else {\n\t\tinnerLabelText = '';\n\t}\n\n\t// Render the output.\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, className].join(' ').trim().replace(/\\s+/g, ' ')}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t'--ring-stroke-dashoffset': dashOffset,\n\t\t\t\t\t'--ring-stroke-dasharray': dashArray,\n\t\t\t\t} as CSSVariables\n\t\t\t}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div id={processedID} className={labelClasses}>\n\t\t\t\t{label}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={`${baseClass}__ring`}\n\t\t\t\trole='progressbar'\n\t\t\t\taria-labelledby={processedID}\n\t\t\t\taria-valuemin={0}\n\t\t\t\taria-valuemax={100}\n\t\t\t\taria-valuenow={percentage}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\theight={ringSize}\n\t\t\t\t\twidth={ringSize}\n\t\t\t\t\tviewBox={`0 0 ${ringSize} ${ringSize}`}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tclassName={`${baseClass}__track`}\n\t\t\t\t\t\tcx={ringSize / 2}\n\t\t\t\t\t\tcy={ringSize / 2}\n\t\t\t\t\t\tr={ringRadius}\n\t\t\t\t\t\tstrokeWidth={ringStrokeWidth}\n\t\t\t\t\t/>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tclassName={`${baseClass}__progress`}\n\t\t\t\t\t\tcx={ringSize / 2}\n\t\t\t\t\t\tcy={ringSize / 2}\n\t\t\t\t\t\tr={ringRadius}\n\t\t\t\t\t\tstrokeWidth={ringStrokeWidth}\n\t\t\t\t\t\tstrokeDasharray={dashArray}\n\t\t\t\t\t\tstrokeDashoffset={dashOffset}\n\t\t\t\t\t\ttransform={`rotate(-90 ${ringSize / 2} ${ringSize / 2})`}\n\t\t\t\t\t/>\n\t\t\t\t\t<text\n\t\t\t\t\t\tclassName={loadingTextClasses}\n\t\t\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t\t\t\tx='50%'\n\t\t\t\t\t\ty='51%'\n\t\t\t\t\t\ttextAnchor='middle'\n\t\t\t\t\t\tdominantBaseline='middle'\n\t\t\t\t\t\talignmentBaseline='middle'\n\t\t\t\t\t>\n\t\t\t\t\t\t{innerLabelText}\n\t\t\t\t\t</text>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './pull-quote.css';\n\ninterface Attribution {\n\tname: string;\n\ttitle: string;\n\torg: string;\n}\n\ninterface PullQuoteProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Attribution for the quote\n\t */\n\tattribution?: Attribution;\n\t/**\n\t * Image src. For stand-alone layout only, will not render for inline layout.\n\t */\n\timage?: string;\n\t/**\n\t * The layout type for the pull quote\n\t */\n\tlayoutType?: 'stand-alone' | 'inline';\n\t/**\n\t * The quote text\n\t */\n\tquote: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * PullQuote UI component\n */\nexport const PullQuote = ({\n\tattribution,\n\timage,\n\tlayoutType = 'stand-alone',\n\tquote,\n\tclassName,\n\t...props\n}: PullQuoteProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-pull-quote';\n\tconst layoutClass = `${baseClass}--${layoutType}`;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, layoutClass, className]\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{image && layoutType === 'stand-alone' && (\n\t\t\t\t<div className={`${baseClass}__image`}>\n\t\t\t\t\t<img src={image} alt='' />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className={`${baseClass}__quote-wrapper`}>\n\t\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon--before`}>\n\t\t\t\t\t<Icon iconName='quotesLeft' iconSize='4xl' />\n\t\t\t\t</div>\n\n\t\t\t\t<div className={`${baseClass}__text-wrapper`}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__quote pds-quote-text pds-quote-text--lg`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{quote}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={`${baseClass}__attribution`}>\n\t\t\t\t\t\t<span className={`${baseClass}__name`}>{attribution.name}</span>\n\t\t\t\t\t\t{attribution.title && (\n\t\t\t\t\t\t\t<span className={`${baseClass}__title`}>\n\t\t\t\t\t\t\t\t, {attribution.title}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{attribution.org && (\n\t\t\t\t\t\t\t<span className={`${baseClass}__org`}>, {attribution.org}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon--after`}>\n\t\t\t\t\t<Icon iconName='quotesRight' iconSize='4xl' />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useEffect, useState } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './refresh-checker.css';\n\n/**\n * Enum for RefreshChecker states\n */\nexport enum RefreshCheckerState {\n\tDEFAULT = 'default',\n\tWORKING = 'working',\n\tCHECKED = 'checked',\n}\n\n/**\n * Prop types for RefreshChecker\n */\ninterface RefreshCheckerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Alignment of the component. Default is left.\n\t */\n\talignment?: 'left' | 'right';\n\t/**\n\t * Custom width in rems for the component. This will override the default.\n\t */\n\tcomponentWidth?: number;\n\t/**\n\t * Internationalization props for labels.\n\t */\n\tlabelStrings?: {\n\t\tcheckForUpdates?: string;\n\t\tchecking?: string;\n\t\tchecked?: string;\n\t\ttooltipContent?: string;\n\t\tariaLabel?: string;\n\t};\n\t/**\n\t * Last checked timestamp\n\t */\n\tlastChecked?: null | Date;\n\t/**\n\t * Callback function when check is triggered\n\t */\n\tonCheck?: () => void;\n\t/**\n\t * State of the component\n\t */\n\tstate?: `${RefreshCheckerState}`;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * RefreshChecker UI component\n */\nexport const RefreshChecker = ({\n\talignment = 'left',\n\tcomponentWidth,\n\tlabelStrings = {},\n\tlastChecked,\n\tonCheck,\n\tstate,\n\tclassName,\n\t...props\n}: RefreshCheckerProps) => {\n\tconst [checkerState, setCheckerState] = useState<RefreshCheckerState>(\n\t\t(state as RefreshCheckerState) ?? RefreshCheckerState.DEFAULT,\n\t);\n\n\tuseEffect(() => {\n\t\tsetCheckerState(state as RefreshCheckerState);\n\t}, [state, setCheckerState]);\n\n\tconst defaultLabelStrings = {\n\t\tcheckForUpdates: 'Check for updates',\n\t\tchecking: 'Checking...',\n\t\tchecked: 'Last checked',\n\t\tariaLabel: 'Check for updates',\n\t\t...labelStrings,\n\t};\n\n\t// Generate label based on checker state and last checked time\n\tconst getLabel = () => {\n\t\tswitch (checkerState) {\n\t\t\tcase RefreshCheckerState.DEFAULT:\n\t\t\t\treturn defaultLabelStrings.checkForUpdates;\n\t\t\tcase RefreshCheckerState.WORKING:\n\t\t\t\treturn defaultLabelStrings.checking;\n\t\t\tcase RefreshCheckerState.CHECKED:\n\t\t\t\tif (lastChecked) {\n\t\t\t\t\tconst checkedDate =\n\t\t\t\t\t\tlastChecked instanceof Date ? lastChecked : new Date(lastChecked);\n\n\t\t\t\t\tconst timeDiff = Date.now() - checkedDate.getTime();\n\t\t\t\t\tconst seconds = Math.floor(timeDiff / 1000);\n\t\t\t\t\tconst minutes = Math.floor(seconds / 60);\n\t\t\t\t\tconst hours = Math.floor(minutes / 60);\n\t\t\t\t\tconst days = Math.floor(hours / 24);\n\n\t\t\t\t\tconst dateFormatOptions: Intl.DateTimeFormatOptions = {\n\t\t\t\t\t\tyear: 'numeric',\n\t\t\t\t\t\tmonth: 'short',\n\t\t\t\t\t\tday: 'numeric',\n\t\t\t\t\t};\n\n\t\t\t\t\tlet timeLabel = '';\n\t\t\t\t\tif (days > 7)\n\t\t\t\t\t\ttimeLabel = checkedDate.toLocaleDateString(\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tdateFormatOptions,\n\t\t\t\t\t\t);\n\t\t\t\t\telse if (days > 0 && days <= 7)\n\t\t\t\t\t\ttimeLabel = `${days} day${days !== 1 ? 's' : ''} ago`;\n\t\t\t\t\telse if (hours > 0)\n\t\t\t\t\t\ttimeLabel = `${hours} hour${hours !== 1 ? 's' : ''} ago`;\n\t\t\t\t\telse if (minutes > 0)\n\t\t\t\t\t\ttimeLabel = `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;\n\t\t\t\t\telse timeLabel = `${seconds} second${seconds !== 1 ? 's' : ''} ago`;\n\n\t\t\t\t\treturn `${defaultLabelStrings.checked} ${timeLabel}`;\n\t\t\t\t}\n\t\t\t\treturn defaultLabelStrings.checked;\n\t\t}\n\t};\n\n\tconst handleCheck = () => {\n\t\tonCheck?.();\n\t};\n\n\t// Set up classes\n\tconst baseClass = 'pds-refresh-checker';\n\tconst alignmentClass = `${baseClass}--${alignment}`;\n\tconst buttonClass = mergeClasses([\n\t\t`${baseClass}__button`,\n\t\tcheckerState === RefreshCheckerState.WORKING\n\t\t\t? `${baseClass}__button--spinning`\n\t\t\t: '',\n\t]);\n\n\t// Handle componentWidth\n\tconst computedWidth =\n\t\tcomponentWidth !== null && componentWidth > 0\n\t\t\t? `${componentWidth}rem`\n\t\t\t: '100%';\n\n\tconst tooltipIcon = (\n\t\t<span className={`${baseClass}__tooltip-icon`}>\n\t\t\t<Icon\n\t\t\t\ticonName='rotate'\n\t\t\t\ticonSize='md'\n\t\t\t\tclassName={`${baseClass}__icon ${checkerState === RefreshCheckerState.WORKING ? `${baseClass}__icon--spinning` : ''}`}\n\t\t\t/>\n\t\t</span>\n\t);\n\n\tconst buttonLabel = (\n\t\t<span className={`${baseClass}__label`}>{getLabel()}</span>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, alignmentClass, className ?? ''])}\n\t\t\tstyle={{ width: computedWidth }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<button\n\t\t\t\ttype='button'\n\t\t\t\tclassName={buttonClass}\n\t\t\t\tonClick={handleCheck}\n\t\t\t\taria-live='polite'\n\t\t\t\taria-label={defaultLabelStrings.ariaLabel}\n\t\t\t>\n\t\t\t\t{alignment === 'right' && buttonLabel}\n\t\t\t\t<Tooltip\n\t\t\t\t\tcontent={\n\t\t\t\t\t\tdefaultLabelStrings.tooltipContent || defaultLabelStrings.ariaLabel\n\t\t\t\t\t}\n\t\t\t\t\tcustomTrigger={tooltipIcon}\n\t\t\t\t\ttriggerIconColor='default'\n\t\t\t\t\ttriggerIconSize='sm'\n\t\t\t\t/>\n\t\t\t\t{alignment === 'left' && buttonLabel}\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\n// Components.\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { IndicatorBadge } from '@components/badges/IndicatorBadge/IndicatorBadge';\nimport { Popover } from '@components/Popover/Popover';\n\n// Types.\nimport {\n\tSitePlanLevel,\n\tSitePlanLevelLabel,\n\tSiteType,\n\tSiteTypeIcon,\n} from '@libs/types/custom-types';\n\n// Styles.\nimport './site-dashboard-heading.css';\n\n/**\n * Prop types for SiteDashboardHeading\n */\nexport interface SiteDashboardHeadingProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Function to handle upgrade click.\n\t */\n\thandleUpgradeClick?: () => void;\n\t/**\n\t * Function to handle popover content.\n\t */\n\tpopoverContent?: ReactNode;\n\t/**\n\t * Title for the popover.\n\t */\n\tpopoverTitle?: string;\n\t/**\n\t * Function to handle popover open state.\n\t */\n\tpopoverIsOpen?: boolean;\n\t/**\n\t * Function to set popover open state.\n\t */\n\tsetPopoverIsOpen?: (isOpen: boolean) => void;\n\t/**\n\t * Name of the site.\n\t */\n\tsiteName: string;\n\t/**\n\t * Site plan level.\n\t */\n\tsitePlanLevel?: SitePlanLevel;\n\t/**\n\t * Site type.\n\t */\n\tsiteType?: SiteType;\n\t/**\n\t * Additional props to pass to the trigger component.\n\t */\n\ttriggerProps?: Omit<\n\t\tComponentPropsWithoutRef<typeof Popover>,\n\t\t'content' | 'title' | 'placement' | 'triggerIcon'\n\t>;\n\t/**\n\t * Label for the upgrade button.\n\t */\n\tupgradeLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SiteDashboardHeading UI component\n */\nexport const SiteDashboardHeading = ({\n\tpopoverContent,\n\tpopoverIsOpen,\n\tpopoverTitle,\n\thandleUpgradeClick,\n\tsetPopoverIsOpen,\n\tsiteName,\n\tsitePlanLevel,\n\tsiteType,\n\ttriggerProps,\n\tupgradeLabel,\n\tclassName,\n\t...props\n}: SiteDashboardHeadingProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-site-dashboard-heading';\n\n\t// Get label for site plan level.\n\tconst sitePlanLevelLabel = SitePlanLevelLabel[sitePlanLevel];\n\n\t// Get icon type.\n\tconst iconType = siteType ? SiteTypeIcon[siteType] : 'bolt';\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t<Icon iconName={iconType} iconSize='2xl' />\n\t\t\t<h1 className='pds-ts-2xl'>{siteName}</h1>\n\t\t\t<span className={`${baseClass}__plan-level-badge`}>\n\t\t\t\t{sitePlanLevel === 'sandbox' ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisplayType='icon-start'\n\t\t\t\t\t\tvariant='brand'\n\t\t\t\t\t\tlabel={upgradeLabel}\n\t\t\t\t\t\tonClick={handleUpgradeClick}\n\t\t\t\t\t\ticonName='bolt'\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{sitePlanLevel && (\n\t\t\t\t\t\t\t<IndicatorBadge\n\t\t\t\t\t\t\t\tlabel={sitePlanLevelLabel}\n\t\t\t\t\t\t\t\tcolor='neutral'\n\t\t\t\t\t\t\t\tsize='md'\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{popoverContent && (\n\t\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\t\tplacement='bottom'\n\t\t\t\t\t\t\t\ttriggerIcon='circleInfo'\n\t\t\t\t\t\t\t\tcontent={popoverContent}\n\t\t\t\t\t\t\t\ttitle={popoverTitle}\n\t\t\t\t\t\t\t\tpopoverIsOpen={popoverIsOpen}\n\t\t\t\t\t\t\t\tsetPopoverIsOpen={setPopoverIsOpen}\n\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './social-links.css';\n\ninterface SocialLinksProps extends ComponentPropsWithoutRef<'ul'> {\n\t/**\n\t * Array of social media links\n\t */\n\tlinkItems?: (keyof typeof socialData)[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n// social platform data\nconst socialData: Record<\n\tstring,\n\t{ icon: PDSIcon; url: string; label: string }\n> = {\n\tbluesky: {\n\t\ticon: 'bluesky',\n\t\turl: 'https://bsky.app/profile/pantheon.io',\n\t\tlabel: 'Pantheon on BlueSky',\n\t},\n\tfacebook: {\n\t\ticon: 'facebook',\n\t\turl: 'https://www.facebook.com/getpantheon',\n\t\tlabel: 'Pantheon on Facebook',\n\t},\n\tinstagram: {\n\t\ticon: 'instagram',\n\t\turl: 'https://www.instagram.com/getpantheon',\n\t\tlabel: 'Pantheon on Instagram',\n\t},\n\tlinkedin: {\n\t\ticon: 'linkedin',\n\t\turl: 'https://www.linkedin.com/company/getpantheon',\n\t\tlabel: 'Pantheon on LinkedIn',\n\t},\n\ttwitter: {\n\t\ticon: 'twitter',\n\t\turl: 'https://twitter.com/getpantheon',\n\t\tlabel: 'Pantheon on Twitter',\n\t},\n\tx: {\n\t\ticon: 'xTwitter',\n\t\turl: 'https://x.com/getpantheon',\n\t\tlabel: 'Pantheon on X',\n\t},\n\tyoutube: {\n\t\ticon: 'youtube',\n\t\turl: 'https://www.youtube.com/user/GetPantheon',\n\t\tlabel: 'Pantheon on YouTube',\n\t},\n};\n\n/**\n * SocialLinks UI component\n */\nexport const SocialLinks = ({\n\tlinkItems = ['facebook', 'x', 'bluesky', 'linkedin', 'youtube', 'instagram'],\n\tclassName,\n\t...props\n}: SocialLinksProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-social-links';\n\n\t// Render the output.\n\treturn (\n\t\t<ul\n\t\t\tclassName={[baseClass, className].join(' ').trim().replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{linkItems.map((item, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<li key={index} className={`${baseClass}__item`}>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={socialData[item].url}\n\t\t\t\t\t\t\trel='noreferrer'\n\t\t\t\t\t\t\ttarget='_blank'\n\t\t\t\t\t\t\taria-label={socialData[item].label}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon iconName={socialData[item].icon} iconSize='xl' />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './status-indicator.css';\n\nexport interface StatusIndicatorProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Status label text\n\t */\n\tlabel: string;\n\t/**\n\t * Sets the size\n\t */\n\tsize?: 'sm' | 'md';\n\t/**\n\t * Sets status type\n\t */\n\ttype:\n\t\t| 'critical'\n\t\t| 'info'\n\t\t| 'neutral'\n\t\t| 'new'\n\t\t| 'success'\n\t\t| 'warning'\n\t\t| 'working';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * StatusIndicator UI component\n */\nexport const StatusIndicator = ({\n\tlabel = null,\n\tsize = 'md',\n\ttype = 'neutral',\n\tclassName,\n\t...props\n}: StatusIndicatorProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-status-indicator';\n\tconst typeClass = `${baseClass}--${type}`;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={[baseClass, typeClass, sizeClass, className ?? '']\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t{type === 'working' ? (\n\t\t\t\t<Spinner\n\t\t\t\t\tclassName={`${baseClass}__spinner`}\n\t\t\t\t\tcolorType='monochromatic'\n\t\t\t\t\tsize='md'\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<span className={`${baseClass}__icon`} role='img' aria-hidden='true' />\n\t\t\t)}\n\n\t\t\t{label && <span className='pds-status-indicator__label'>{label}</span>}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useRef, CSSProperties } from 'react';\nimport { useMeasure } from '@reactuses/core';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { ProgressRing } from '@components/progress-indicators/ProgressRing/ProgressRing';\n\nimport './stepper.css';\n\ninterface Step {\n\t/**\n\t * Callback function to return to a previously completed step.\n\t */\n\tcallback?: (step: Step) => void;\n\t/**\n\t * If the step has an error.\n\t */\n\thasError?: boolean;\n\t/**\n\t * Id for the step.\n\t */\n\tid?: string;\n\t/**\n\t * If the step has been completed.\n\t * Optional. If not provided, completed state is determined by the current step.\n\t */\n\tisComplete?: boolean;\n\t/**\n\t * If the step is the current active step.\n\t */\n\tisCurrent?: boolean;\n\t/**\n\t * The label for the step.\n\t */\n\tlabel: string;\n}\n\ninterface TranslatableLabels {\n\tstep: string;\n\tcompleted: string;\n\thasError: string;\n\tnext: string;\n}\n\ninterface StepperProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * An array of step objects\n\t */\n\tsteps: Step[];\n\t/**\n\t * Translatable strings for visually-hidden text.\n\t */\n\ttranslatableLabels?: TranslatableLabels;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\ninterface CustomCSSProperties extends CSSProperties {\n\t'--pds-color-status-info-foreground'?: string;\n}\n\n/**\n * Stepper UI component\n */\nexport const Stepper = ({\n\tsteps,\n\ttranslatableLabels = {\n\t\tstep: 'Step',\n\t\tcompleted: 'completed',\n\t\thasError: 'has an error',\n\t\tnext: 'Next',\n\t},\n\tclassName,\n\t...props\n}: StepperProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-stepper';\n\tconst mobileBaseClass = 'pds-stepper-mobile';\n\n\t// Get the width of the steps list.\n\tconst listRef = useRef();\n\tconst [rect] = useMeasure(listRef);\n\tconst stepsListWidth = rect.width;\n\n\t// Set fixed values for step width.\n\tconst stepContentWidth =\n\t\tNumber(\n\t\t\tgetComputedStyle(document.body)\n\t\t\t\t.getPropertyValue('--pds-stepper-step-content-width')\n\t\t\t\t.replace('rem', ''),\n\t\t) * 16;\n\tconst connectorOffset = -40;\n\n\t// Define min and max number of steps allowed.\n\tconst minStepCount = 2;\n\tconst maxStepCount = 5;\n\n\t// Get total step count.\n\tconst totalSteps = steps.length;\n\n\t// Find the current step.\n\tconst currentStepIndex = steps\n\t\t.map((step) => step.isCurrent)\n\t\t.lastIndexOf(true);\n\n\t// Pre-render each step for default view.\n\tconst stepItems = steps.map((step, index) => {\n\t\tconst stepNumber = index + 1;\n\t\tconst currentStep = index === currentStepIndex;\n\t\tconst isComplete = step.isComplete || index < currentStepIndex;\n\t\tconst hasError = step.hasError && currentStep;\n\n\t\t// Determine step width based on number of steps.\n\t\tconst totalGapWidth = stepsListWidth - totalSteps * stepContentWidth;\n\t\tconst gapPerSide = totalGapWidth / (totalSteps + (totalSteps - 2));\n\t\tconst stepWidthInner = stepContentWidth + gapPerSide * 2;\n\t\tconst stepWidthEnd = stepContentWidth + gapPerSide;\n\t\tconst connectorWidth = gapPerSide + connectorOffset * -1;\n\n\t\tconst isFirstStep = index === 0;\n\t\tconst isLastStep = index === totalSteps - 1;\n\n\t\tlet stepWidth = stepWidthInner;\n\t\tif (isFirstStep || isLastStep) {\n\t\t\tstepWidth = stepWidthEnd;\n\t\t}\n\n\t\t// Set up step classes.\n\t\tconst stepClass = `${baseClass}__step`;\n\t\tconst stepClasses = [stepClass];\n\t\tif (currentStep) {\n\t\t\tstepClasses.push(`${stepClass}--current`);\n\t\t}\n\t\tif (isComplete) {\n\t\t\tstepClasses.push(`${stepClass}--complete`);\n\t\t}\n\t\tif (hasError) {\n\t\t\tstepClasses.push(`${stepClass}--error`);\n\t\t}\n\n\t\t// Set up aria label.\n\t\tlet ariaLabel = `${translatableLabels.step} ${stepNumber}`;\n\t\tif (isComplete) {\n\t\t\tariaLabel = `${translatableLabels.step} ${stepNumber}, ${translatableLabels.completed}`;\n\t\t}\n\t\tif (hasError) {\n\t\t\tariaLabel = `${translatableLabels.step} ${stepNumber}, ${translatableLabels.hasError}`;\n\t\t}\n\n\t\t// Step indicator markup.\n\t\tconst stepIndicator = isComplete ? (\n\t\t\t<div aria-hidden='true' className={`${baseClass}__step-indicator`}>\n\t\t\t\t<Icon\n\t\t\t\t\ticonName='check'\n\t\t\t\t\ticonSize='md'\n\t\t\t\t\tclassName={`${baseClass}__step-complete-icon`}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : (\n\t\t\t<div aria-hidden='true' className={`${baseClass}__step-indicator`}></div>\n\t\t);\n\n\t\t// Step label markup.\n\t\tconst stepLabel = (\n\t\t\t<div className={`${baseClass}__step-label`}>{step.label}</div>\n\t\t);\n\n\t\t// Set step markup.\n\t\tlet stepContent = (\n\t\t\t<div className={`${baseClass}__step-content`}>\n\t\t\t\t{stepLabel}\n\t\t\t\t{stepIndicator}\n\t\t\t</div>\n\t\t);\n\n\t\t// If step has been completed and has a callback, provide button to return to that step.\n\t\tif (isComplete && step.callback) {\n\t\t\tconst handleButtonClick = (event) => {\n\t\t\t\tstep.callback(step);\n\t\t\t\tevent.preventDefault();\n\t\t\t};\n\n\t\t\tstepContent = (\n\t\t\t\t<button\n\t\t\t\t\tclassName={`${baseClass}__step-content`}\n\t\t\t\t\tonClick={handleButtonClick}\n\t\t\t\t\ttype='button'\n\t\t\t\t>\n\t\t\t\t\t{stepLabel}\n\t\t\t\t\t{stepIndicator}\n\t\t\t\t</button>\n\t\t\t);\n\t\t}\n\n\t\t// Render each step as a list item.\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={step.id}\n\t\t\t\tid={step.id}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\taria-posinset={stepNumber}\n\t\t\t\taria-setsize={totalSteps}\n\t\t\t\taria-current={currentStep ? 'step' : null}\n\t\t\t\tclassName={mergeClasses(stepClasses)}\n\t\t\t\tstyle={{ width: stepWidth }}\n\t\t\t>\n\t\t\t\t{!isFirstStep && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={`${baseClass}__connector ${baseClass}__connector--before`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: connectorWidth,\n\t\t\t\t\t\t\tmarginRight: connectorOffset,\n\t\t\t\t\t\t}}\n\t\t\t\t\t></span>\n\t\t\t\t)}\n\t\t\t\t{stepContent}\n\t\t\t\t{!isLastStep && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={`${baseClass}__connector ${baseClass}__connector--after`}\n\t\t\t\t\t\tstyle={{ width: connectorWidth, marginLeft: connectorOffset }}\n\t\t\t\t\t></span>\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t});\n\n\t// Pre-render steps for mobile view.\n\tconst stepItemsMobile = steps.map((step, index) => {\n\t\tconst stepNumber = index + 1;\n\t\tconst currentStep = index === currentStepIndex;\n\t\tconst isLastStep = index === totalSteps - 1;\n\t\tconst hasError = step.hasError && currentStep;\n\t\tconst nextStepLabel = steps[currentStepIndex + 1]\n\t\t\t? steps[currentStepIndex + 1].label\n\t\t\t: null;\n\n\t\t// Process and render current step.\n\t\tif (currentStep) {\n\t\t\t// Set up progress ring values.\n\t\t\tconst innerLabel = (\n\t\t\t\t<>\n\t\t\t\t\t<span className='visually-hidden'>{translatableLabels.step} </span>\n\t\t\t\t\t{stepNumber} of {totalSteps}\n\t\t\t\t</>\n\t\t\t);\n\n\t\t\tconst ringPercentage = (stepNumber / totalSteps) * 100;\n\n\t\t\t// Change ring color if step has an error.\n\t\t\tconst stepStyles: CustomCSSProperties = hasError\n\t\t\t\t? {\n\t\t\t\t\t\t'--pds-color-status-info-foreground':\n\t\t\t\t\t\t\t'var(--pds-color-status-critical-foreground)',\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\t'--pds-color-status-info-foreground':\n\t\t\t\t\t\t\t'var(--pds-color-brand-primary-default)',\n\t\t\t\t\t};\n\n\t\t\t// Visually-hidden label if error.\n\t\t\tconst errorLabel = (\n\t\t\t\t<div className='visually-hidden'>\n\t\t\t\t\t{translatableLabels.step} {stepNumber}, {translatableLabels.hasError}\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={step.id}\n\t\t\t\t\tid={`${step.id}--mobile`}\n\t\t\t\t\tclassName={`${mobileBaseClass}__step`}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${mobileBaseClass}__progress-indicator`}>\n\t\t\t\t\t\t<ProgressRing\n\t\t\t\t\t\t\tlabel='Step progress'\n\t\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\t\tpercentage={ringPercentage}\n\t\t\t\t\t\t\tinnerLabel={innerLabel}\n\t\t\t\t\t\t\tstyle={stepStyles}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={`${mobileBaseClass}__step-text`}>\n\t\t\t\t\t\t<div className={`${mobileBaseClass}__step-label`}>\n\t\t\t\t\t\t\t{hasError && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{errorLabel}\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticonName='diamondExclamation'\n\t\t\t\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\t\t\t\tclassName={`${mobileBaseClass}__error-icon`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{step.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!isLastStep && (\n\t\t\t\t\t\t\t<div className={`${mobileBaseClass}__next-step`}>\n\t\t\t\t\t\t\t\t{`${translatableLabels.next}: ${nextStepLabel}`}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t});\n\n\t// Render the output\n\t// Only return the component if it has an allowed number of steps.\n\tif (totalSteps >= minStepCount && totalSteps <= maxStepCount) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{/* Default view */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={mergeClasses([baseClass, className])}\n\t\t\t\t\tdata-steps={totalSteps}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<ol className={`${baseClass}__steps`} ref={listRef}>\n\t\t\t\t\t\t{stepItems}\n\t\t\t\t\t</ol>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Mobile view */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={[mobileBaseClass, className]\n\t\t\t\t\t\t.join(' ')\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t\t\tdata-steps={totalSteps}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${mobileBaseClass}__steps`}>{stepItemsMobile}</div>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './vertical-stepper.css';\n\n/**\n * Prop types for VerticalStep\n */\nexport interface VerticalStepProps extends ComponentPropsWithoutRef<'li'> {\n\t/**\n\t * Props for the back button.\n\t * Can include any props except for size and variant.\n\t * Not available for the first step.\n\t */\n\tbackButton?: ComponentPropsWithoutRef<typeof Button>;\n\t/**\n\t * Props for the forward button.\n\t * Can include any props except for size and variant.\n\t * Not available for the last step.\n\t */\n\tforwardButton?: ComponentPropsWithoutRef<typeof Button>;\n\t/**\n\t * Whether the step has an error.\n\t */\n\thasError?: boolean;\n\t/**\n\t * Id for the step.\n\t */\n\tid?: string;\n\t/**\n\t * Has the step been completed.\n\t */\n\tisComplete?: boolean;\n\t/**\n\t * Is this the current active step?\n\t */\n\tisCurrent?: boolean;\n\t/**\n\t * Step label.\n\t */\n\tlabel: string | ReactNode;\n\t/**\n\t * The content for the step.\n\t */\n\tstepContent?: ReactNode;\n\t/**\n\t * Is this the first step? Internal prop.\n\t */\n\t_isFirstStep?: boolean;\n}\n\n/**\n * VerticalStepper UI component\n */\nexport const VerticalStep = ({\n\tbackButton,\n\tforwardButton,\n\thasError,\n\tid,\n\tisCurrent,\n\tlabel,\n\tstepContent,\n\tisComplete,\n\t_isFirstStep,\n\t...props\n}: VerticalStepProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-vert-stepper';\n\tconst stepClass = `${baseClass}__step`;\n\tconst stepClasses = [stepClass];\n\tif (isCurrent) {\n\t\tstepClasses.push(`${stepClass}--current`);\n\t}\n\tif (isComplete) {\n\t\tstepClasses.push(`${stepClass}--complete`);\n\t}\n\tif (hasError) {\n\t\tstepClasses.push(`${stepClass}--error`);\n\t}\n\n\treturn (\n\t\t<li id={id} className={mergeClasses([...stepClasses])} {...props}>\n\t\t\t<div className={`${baseClass}__step-header`}>\n\t\t\t\t<div aria-hidden='true' className={`${baseClass}__step-indicator`}>\n\t\t\t\t\t{isComplete && (\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticonName='check'\n\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\tclassName={`${baseClass}__step-complete-icon`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__step-label`}>{label}</div>\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__step-content`}>\n\t\t\t\t<div className={`${baseClass}__step-content-inner`}>\n\t\t\t\t\t{stepContent}\n\t\t\t\t\t{(backButton || forwardButton) && (\n\t\t\t\t\t\t<div className={`${baseClass}__step-buttons`}>\n\t\t\t\t\t\t\t{backButton && !_isFirstStep && (\n\t\t\t\t\t\t\t\t<Button {...backButton} size='sm' variant='secondary' />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{forwardButton && (\n\t\t\t\t\t\t\t\t<Button {...forwardButton} size='sm' variant='primary' />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</li>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { VerticalStep, VerticalStepProps } from './VerticalStep';\n\nimport './vertical-stepper.css';\n\n/**\n * Prop types for VerticalStepper\n */\nexport interface VerticalStepperProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Object with translatable strings.\n\t */\n\tlabelStrings?: {\n\t\tcompleted: string;\n\t\thasError: string;\n\t\tstep: string;\n\t};\n\t/**\n\t * The steps to display in the stepper.\n\t */\n\tsteps?: VerticalStepProps[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * VerticalStepper UI component\n */\nexport const VerticalStepper = ({\n\tlabelStrings = {\n\t\tstep: 'Step',\n\t\tcompleted: 'completed',\n\t\thasError: 'has an error',\n\t},\n\tsteps,\n\tclassName,\n\t...props\n}: VerticalStepperProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-vert-stepper';\n\n\t// Define min and max number of steps allowed.\n\tconst minStepCount = 2;\n\tconst maxStepCount = 6;\n\n\t// Get total step count.\n\tconst totalSteps = steps.length;\n\n\t// Find the current step. Return -1 if none is found (no current step).\n\tconst currentStepIndex = (() => {\n\t\tconst index = steps.findIndex((step) => step.isCurrent);\n\t\treturn index;\n\t})();\n\n\t// Pre-render each step.\n\tconst stepItems = steps.map((step, index) => {\n\t\tconst stepNumber = index + 1;\n\t\tconst currentStep = index === currentStepIndex;\n\t\tconst firstStep = index === 0;\n\t\tconst completedStep = step.isComplete || false;\n\t\tconst hasError = step.hasError && currentStep;\n\n\t\t// Set up aria labels for each step.\n\t\tlet ariaLabel = `${labelStrings.step} ${stepNumber}`;\n\t\tif (completedStep) {\n\t\t\tariaLabel = `${labelStrings.step} ${stepNumber}, ${labelStrings.completed}`;\n\t\t}\n\t\tif (hasError) {\n\t\t\tariaLabel = `${labelStrings.step} ${stepNumber}, ${labelStrings.hasError}`;\n\t\t}\n\n\t\treturn (\n\t\t\t<VerticalStep\n\t\t\t\tkey={`s${stepNumber}`}\n\t\t\t\tlabel={step.label}\n\t\t\t\tstepContent={step.stepContent}\n\t\t\t\tid={step.id}\n\t\t\t\tbackButton={step.backButton}\n\t\t\t\tforwardButton={step.forwardButton}\n\t\t\t\thasError={hasError}\n\t\t\t\tisCurrent={currentStep}\n\t\t\t\tisComplete={completedStep}\n\t\t\t\t_isFirstStep={firstStep}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\taria-posinset={stepNumber}\n\t\t\t\taria-setsize={totalSteps}\n\t\t\t\taria-current={currentStep ? 'step' : null}\n\t\t\t/>\n\t\t);\n\t});\n\n\t// Render the output.\n\t// Only return the component if it has an allowed number of steps.\n\tif (totalSteps >= minStepCount && totalSteps <= maxStepCount) {\n\t\treturn (\n\t\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t\t<ol className={`${baseClass}__steps`}>{steps && stepItems}</ol>\n\t\t\t</div>\n\t\t);\n\t}\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './table.css';\n\n/**\n * Prop types for Table\n */\ninterface TableProps extends ComponentPropsWithoutRef<'table'> {\n\t/**\n\t * Table headers\n\t */\n\theaders?: Array<{ title: string; sortable?: boolean }>;\n\t/**\n\t * Table row data\n\t */\n\trowData?: ReactNode[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Table UI component\n */\nexport const Table = ({\n\theaders,\n\trowData,\n\tclassName,\n\t...props\n}: TableProps) => {\n\tconst [tableHeaders] = useState(headers);\n\tconst [tableCells, setTableCells] = useState(rowData);\n\tconst [order, setOrder] = useState({ order: 'asc', key: '' });\n\n\t// Sorting Methods\n\tconst ascSort = (index) => {\n\t\tsetTableCells(tableCells.sort((a, b) => a[index].localeCompare(b[index])));\n\n\t\tsetOrder({ order: 'desc', key: index });\n\t};\n\t// Sorting Methods\n\tconst descSort = (index) => {\n\t\tsetTableCells(tableCells.sort((a, b) => b[index].localeCompare(a[index])));\n\t\tsetOrder({ order: 'asc', key: index });\n\t};\n\t// Sorting Methods checks direction of sort\n\tconst handleSort = (event, index) => {\n\t\tsetOrder({ ...order, key: index });\n\t\torder.order === 'asc' ? ascSort(index) : descSort(index);\n\t};\n\n\tconst tableRow = (data, id) => {\n\t\treturn (\n\t\t\t<tr id={id} key={`table-row-${id}`}>\n\t\t\t\t{data.map((cell, i) => (\n\t\t\t\t\t<td key={`${id}-cell-${i}`}>\n\t\t\t\t\t\t<span>{cell}</span>\n\t\t\t\t\t</td>\n\t\t\t\t))}\n\t\t\t</tr>\n\t\t);\n\t};\n\tconst baseClass = 'pds-table';\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<table className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{tableHeaders.map((header, i) => (\n\t\t\t\t\t\t\t<th key={`header-${i}`}>\n\t\t\t\t\t\t\t\t{header.sortable ? (\n\t\t\t\t\t\t\t\t\t<div className={`${baseClass}__sort-wrapper`}>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__sort-header`}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => handleSort(event, i)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{header.title}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__sort-button`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={`Sort by ${header.title}`}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => handleSort(event, i)}\n\t\t\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__sort-button-top ${\n\t\t\t\t\t\t\t\t\t\t\t\t\ti != Number(order.key) && order.key !== ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'pds-table__sort-innactive'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: Number(order.key) == i\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? order.order\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'asc'\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon iconName='caretUp' iconSize='sm' />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__sort-button-bottom ${\n\t\t\t\t\t\t\t\t\t\t\t\t\tNumber(order.key) == i ? order.order : 'asc'\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon iconName='caretDown' iconSize='sm' />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span>{header.title}</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>{tableCells.map((item, i) => tableRow(item, i))}</tbody>\n\t\t\t</table>\n\t\t</>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\nimport { createRandomID } from '@libs/components/utils';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './table-of-contents.css';\n\n/**\n * Prop types for TOCList\n */\ninterface TOCListProps {\n\theadings: Array<{\n\t\tid: string;\n\t\ttitle: string;\n\t\titems: Array<{\n\t\t\tid: string;\n\t\t\ttitle: string;\n\t\t}>;\n\t}>;\n\tactiveID: string;\n}\n\n/**\n * Prop types for TableOfContents\n */\ninterface TableOfContentsProps extends ComponentPropsWithoutRef<'nav'> {\n\t/**\n\t * Whether to append the id to the URL when a link is clicked.\n\t */\n\tappendIds?: boolean;\n\t/**\n\t * aria-label for the TOC.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Whether the heading should be visible or not. If not visible it will still be presented to screen readers.\n\t */\n\tshowHeading?: boolean;\n\t/**\n\t * Heading level for TOC heading.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Text for the TOC heading.\n\t */\n\theadingText?: string;\n\t/**\n\t * Class name for designating headers to ignore.\n\t */\n\tignoreClass?: string;\n\t/**\n\t * ID name of content region to be indexed.\n\t */\n\tsourceID?: string;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n}\n\n/**\n * TableOfContents UI component\n */\nexport const TableOfContents = ({\n\tappendIds = false,\n\tariaLabel = 'Table of contents',\n\theadingLevel = 'h2',\n\theadingText = 'Table of contents',\n\tignoreClass = 'pds-toc-ignore',\n\tshowHeading = false,\n\tsourceID = 'pds-toc-source',\n\tclassName,\n\t...props\n}: TableOfContentsProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toc';\n\n\t// Characters to remove in heading ids.\n\tconst escapedCharacters = [\n\t\t' ',\n\t\t'/',\n\t\t'.',\n\t\t':',\n\t\t';',\n\t\t',',\n\t\t'?',\n\t\t'!',\n\t\t'@',\n\t\t'$',\n\t\t'%',\n\t\t'&',\n\t\t'*',\n\t\t'+',\n\t\t'=',\n\t\t'|',\n\t\t'~',\n\t];\n\n\t// Headings to find.\n\tconst validHeadings = `#${sourceID} h2:not(.${ignoreClass}), h3:not(.${ignoreClass})`;\n\n\t// Function to find all valid headings.\n\tconst useHeadingsData = () => {\n\t\tconst [nestedHeadings, setNestedHeadings] = useState([]);\n\n\t\tuseEffect(() => {\n\t\t\tconst headingElements = Array.from(\n\t\t\t\tdocument.querySelectorAll(validHeadings),\n\t\t\t);\n\n\t\t\t// If header ids have one of the escape characters, replace with dash.\n\t\t\theadingElements.map((element) => {\n\t\t\t\tescapedCharacters.forEach((char) => {\n\t\t\t\t\tif (element.id.includes(char)) {\n\t\t\t\t\t\telement.id = element.id.replaceAll(char, '-');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// If headers do not have an id, generate one.\n\t\t\theadingElements.map((element) => {\n\t\t\t\tconst fallbackItemID = `item-${createRandomID()}`;\n\n\t\t\t\tif (!element.id) {\n\t\t\t\t\telement.id = fallbackItemID;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst newNestedHeadings = getNestedHeadings(headingElements);\n\t\t\tsetNestedHeadings(newNestedHeadings);\n\t\t}, []);\n\n\t\treturn { nestedHeadings };\n\t};\n\n\t// Function to nest headings correctly.\n\tconst getNestedHeadings = (headingElements) => {\n\t\tconst nestedHeadings = [];\n\n\t\theadingElements.forEach((heading) => {\n\t\t\tconst { innerText: title, id } = heading;\n\n\t\t\tif (heading.nodeName === 'H2') {\n\t\t\t\tnestedHeadings.push({ id, title, items: [] });\n\t\t\t} else if (heading.nodeName === 'H3' && nestedHeadings.length > 0) {\n\t\t\t\tnestedHeadings[nestedHeadings.length - 1].items.push({\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn nestedHeadings;\n\t};\n\n\tconst { nestedHeadings } = useHeadingsData();\n\n\t// Find \"active\" heading.\n\tconst [activeID, setActiveID] = useState();\n\n\tconst useIntersectionObserver = (setActiveID) => {\n\t\tconst headingElementsRef = useRef({});\n\t\tuseEffect(() => {\n\t\t\tconst callback = (headings) => {\n\t\t\t\t// eslint-disable-next-line react/prop-types\n\t\t\t\theadingElementsRef.current = headings.reduce((map, headingElement) => {\n\t\t\t\t\tmap[headingElement.target.id] = headingElement;\n\t\t\t\t\treturn map;\n\t\t\t\t}, headingElementsRef.current);\n\n\t\t\t\tconst visibleHeadings = [];\n\t\t\t\tObject.keys(headingElementsRef.current).forEach((key) => {\n\t\t\t\t\tconst headingElement = headingElementsRef.current[key];\n\t\t\t\t\tif (headingElement.isIntersecting)\n\t\t\t\t\t\tvisibleHeadings.push(headingElement);\n\t\t\t\t});\n\n\t\t\t\tconst getIndexFromId = (id) =>\n\t\t\t\t\theadingElements.findIndex((heading) => heading.id === id);\n\n\t\t\t\tif (visibleHeadings.length === 1) {\n\t\t\t\t\tsetActiveID(visibleHeadings[0].target.id);\n\t\t\t\t} else if (visibleHeadings.length > 1) {\n\t\t\t\t\tconst sortedVisibleHeadings = visibleHeadings.sort(\n\t\t\t\t\t\t(a, b) => getIndexFromId(a.target.id) - getIndexFromId(b.target.id),\n\t\t\t\t\t);\n\t\t\t\t\tsetActiveID(sortedVisibleHeadings[0].target.id);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst observer = new IntersectionObserver(callback, {\n\t\t\t\trootMargin: '0px 0px -20% 0px',\n\t\t\t});\n\n\t\t\tconst headingElements = Array.from(\n\t\t\t\tdocument.querySelectorAll(validHeadings),\n\t\t\t);\n\n\t\t\theadingElements.forEach((element) => observer.observe(element));\n\n\t\t\treturn () => observer.disconnect();\n\t\t}, [setActiveID]);\n\t};\n\n\tuseIntersectionObserver(setActiveID);\n\n\t// Function to append id to url.\n\tconst appendIdToURL = (id) => {\n\t\t// Check if the window exists.\n\t\tif (typeof window !== 'undefined') {\n\t\t\t// Check if the hash is already set to the id.\n\t\t\tif (window.location.hash !== `#${id}`) {\n\t\t\t\twindow.history.pushState({}, '', `#${id}`);\n\t\t\t}\n\t\t}\n\t};\n\n\t// Function to scroll to heading.\n\tconst scrollToHeading = (id) => {\n\t\tdocument.querySelector(`#${id}`).scrollIntoView({\n\t\t\tbehavior: 'smooth',\n\t\t\tblock: 'start',\n\t\t});\n\t};\n\n\t// Function to handle the link click.\n\tconst handleLinkClick = (e, id) => {\n\t\te.preventDefault();\n\t\tif (appendIds) {\n\t\t\tappendIdToURL(id);\n\t\t}\n\t\tscrollToHeading(id);\n\t};\n\n\t// Build TOC list from headings.\n\tconst TOCList = ({ headings }: TOCListProps) => (\n\t\t<ul className={`${baseClass}__list ${baseClass}__list--top-level`}>\n\t\t\t{headings.map((heading) => (\n\t\t\t\t<li key={heading.id} className={`${baseClass}__list-item`}>\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\theading.id === activeID\n\t\t\t\t\t\t\t\t? `${baseClass}__link ${baseClass}__link--active`\n\t\t\t\t\t\t\t\t: `${baseClass}__link`\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={`#${heading.id}`}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\thandleLinkClick(e, heading.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{heading.title}\n\t\t\t\t\t</a>\n\t\t\t\t\t{heading.items.length > 0 && (\n\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\tclassName={`${baseClass}__list ${baseClass}__list--second-level`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{heading.items.map((child) => (\n\t\t\t\t\t\t\t\t<li key={child.id} className={`${baseClass}__list-item`}>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tchild.id === activeID\n\t\t\t\t\t\t\t\t\t\t\t\t? `${baseClass}__link ${baseClass}__link--active`\n\t\t\t\t\t\t\t\t\t\t\t\t: `${baseClass}__link`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thref={`#${child.id}`}\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\thandleLinkClick(e, child.id);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{child.title}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t)}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n\n\t// Render the output.\n\treturn (\n\t\t<nav\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{headingText && (\n\t\t\t\t<Hx\n\t\t\t\t\tbaseClass={baseClass}\n\t\t\t\t\tclassName={`${showHeading ? '' : 'visually-hidden'}`}\n\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t>\n\t\t\t\t\t{headingText}\n\t\t\t\t</Hx>\n\t\t\t)}\n\t\t\t<TOCList headings={nestedHeadings} activeID={activeID} />\n\t\t</nav>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tally } from '@components/badges/Tally/Tally';\n\nimport './tabs.css';\n\ninterface Tabs {\n\t/**\n\t * Is the tab disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Sets optional tab icon.\n\t */\n\ticon?: PDSIcon;\n\t/**\n\t * Sets content inside tab\n\t */\n\tpanelContent: ReactNode;\n\t/**\n\t * Sets tab label\n\t */\n\ttabLabel: string | ReactNode;\n\t/**\n\t * Sets id for tab.\n\t */\n\ttabId?: string;\n\t/**\n\t * Sets optional tab tally.\n\t */\n\ttally?: {\n\t\tlabel: string | number;\n\t\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t};\n}\n\ninterface TabsProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Function to call when the active tab changes\n\t */\n\tonActiveTabChange?: (activeTabIndex: number) => void;\n\t/**\n\t * Sets tabset aria label\n\t */\n\tariaLabel: string;\n\t/**\n\t * Sets default selected tab using a zero-based index, defaults to 0\n\t */\n\tdefaultSelected?: number;\n\t/**\n\t * Sets currently selected tab using a zero-based index\n\t */\n\tselectedTab?: number;\n\t/**\n\t * Array of objects for tab data\n\t */\n\ttabs: Tabs[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Tabs UI component\n */\nexport const Tabs = ({\n\tariaLabel,\n\tdefaultSelected = 0,\n\tonActiveTabChange = () => {},\n\tselectedTab,\n\ttabs,\n\tclassName,\n\t...props\n}: TabsProps) => {\n\t// Set up classes\n\tconst baseClass = 'pds-tabs';\n\n\t// Set up state\n\tconst [activeTab, updateActiveTab] = useState(selectedTab ?? defaultSelected);\n\n\t// Update activeTab when selectedTab changes\n\tuseEffect(() => {\n\t\tif (selectedTab !== undefined) {\n\t\t\tupdateActiveTab(selectedTab);\n\t\t}\n\t}, [selectedTab]);\n\n\tconst toggleTab = (e) => {\n\t\tconst tab = e.currentTarget.getAttribute('data-tabnumber');\n\t\tif (tab) {\n\t\t\tconst newActiveTab = parseInt(tab, 10);\n\t\t\tupdateActiveTab(newActiveTab);\n\t\t}\n\t};\n\t// to store ref to the tab element\n\tconst tabRefs = useRef([]);\n\n\t// Call onActiveTabChange function when the active tab changes\n\tuseEffect(() => {\n\t\tonActiveTabChange(activeTab);\n\t}, [activeTab, onActiveTabChange]);\n\n\tuseEffect(() => {\n\t\tconst indexLength = tabRefs.current.length - 1;\n\t\tif (activeTab > indexLength) {\n\t\t\tupdateActiveTab(0);\n\t\t\treturn;\n\t\t} else if (activeTab < 0) {\n\t\t\tupdateActiveTab(indexLength);\n\t\t\treturn;\n\t\t}\n\t}, [activeTab]);\n\n\t// Selected tab update helper\n\tconst setIndex = (index: number, dir?: 'next' | 'prev') => {\n\t\tconst intTab = activeTab;\n\t\tlet tab =\n\t\t\ttabRefs.current[\n\t\t\t\tdir === 'next'\n\t\t\t\t\t? intTab + 1 < tabRefs.current.length\n\t\t\t\t\t\t? intTab + 1\n\t\t\t\t\t\t: 0\n\t\t\t\t\t: intTab - 1 >= 0\n\t\t\t\t\t\t? intTab - 1\n\t\t\t\t\t\t: tabRefs.current.length - 1\n\t\t\t];\n\t\tif (tab) {\n\t\t\t// focus() will call the state setter\n\t\t\t// to display the associated tabpanel\n\n\t\t\ttab.focus();\n\t\t}\n\t\t// set to account for disabled tabs in any order\n\t\telse {\n\t\t\ttab =\n\t\t\t\tdir == 'next'\n\t\t\t\t\t? tabRefs.current[index + 1] == undefined\n\t\t\t\t\t\t? tabRefs.current[0]\n\t\t\t\t\t\t: tabRefs.current[index + 1]\n\t\t\t\t\t: tabRefs.current[index - 1];\n\n\t\t\ttab.focus();\n\t\t}\n\t};\n\n\tconst onKeyDown = (e) => {\n\t\tconst count = tabRefs.current.length;\n\t\tconst nextTab = () => {\n\t\t\tsetIndex((activeTab + 1) % count, 'next');\n\t\t\tupdateActiveTab(activeTab + 1);\n\t\t};\n\t\tconst prevTab = () => {\n\t\t\tsetIndex((activeTab - 1 + count) % count, 'prev');\n\t\t\tupdateActiveTab(activeTab - 1);\n\t\t};\n\t\tconst firstTab = () => {\n\t\t\tsetIndex(0);\n\t\t\tupdateActiveTab(0);\n\t\t};\n\t\tconst lastTab = () => {\n\t\t\tsetIndex(count - 1);\n\t\t\tupdateActiveTab(count - 1);\n\t\t};\n\n\t\tconst focusTab = () => {\n\t\t\ttabRefs.current[activeTab].focus();\n\t\t};\n\n\t\tconst keyMap = {\n\t\t\tArrowRight: nextTab,\n\t\t\tArrowLeft: prevTab,\n\t\t\tHome: firstTab,\n\t\t\tEnd: lastTab,\n\t\t\tSpace: focusTab,\n\t\t\tEnter: focusTab,\n\t\t};\n\n\t\tconst action = keyMap[e.code];\n\t\tif (action) {\n\t\t\te.preventDefault();\n\t\t\taction();\n\t\t}\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<div className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__tablist`}\n\t\t\t\t\trole='tablist'\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-orientation='horizontal'\n\t\t\t\t>\n\t\t\t\t\t{tabs.map(({ disabled, icon, tabId, tabLabel, tally }, i) => (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${baseClass}__tab`}\n\t\t\t\t\t\t\taria-selected={i == activeTab ? true : false}\n\t\t\t\t\t\t\tdata-tabnumber={i}\n\t\t\t\t\t\t\trole='tab'\n\t\t\t\t\t\t\tid={tabId}\n\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tonKeyDown(e);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tref={(button) =>\n\t\t\t\t\t\t\t\tdisabled ? null : (tabRefs.current[i] = button)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-controls={`${baseClass}__tab--${i}`}\n\t\t\t\t\t\t\ttabIndex={activeTab === i ? 0 : -1}\n\t\t\t\t\t\t\taria-disabled={disabled ? true : false}\n\t\t\t\t\t\t\tonClick={disabled ? null : toggleTab}\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div key={icon} className={`${baseClass}__tab-label`}>\n\t\t\t\t\t\t\t\t{icon ? <Icon iconName={icon} iconSize='md' /> : null}{' '}\n\t\t\t\t\t\t\t\t{tabLabel}\n\t\t\t\t\t\t\t\t{tabs[i].tally ? (\n\t\t\t\t\t\t\t\t\t<Tally label={tally.label} type={tally.type} />\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{tabs.map(({ disabled, icon, panelContent, tabLabel, tally }, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`${baseClass}__panel`}\n\t\t\t\t\t\trole='tabpanel'\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tid={`${baseClass}__tab--${i}`}\n\t\t\t\t\t\taria-labelledby={`${baseClass}__tab--${i}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\t\t\t\taria-selected={i == activeTab ? true : false}\n\t\t\t\t\t\t\trole='tab'\n\t\t\t\t\t\t\tdata-tabnumber={i}\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tonKeyDown={onKeyDown}\n\t\t\t\t\t\t\taria-disabled={disabled ? true : false}\n\t\t\t\t\t\t\taria-controls={`tabpanel_${i}`}\n\t\t\t\t\t\t\ttabIndex={activeTab === i ? 1 : -1}\n\t\t\t\t\t\t\tonClick={disabled ? null : toggleTab}\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div key={icon} className={`${baseClass}__tab-label`}>\n\t\t\t\t\t\t\t\t{icon ? <Icon iconSize='md' iconName={icon} /> : null}{' '}\n\t\t\t\t\t\t\t\t{tabLabel}\n\t\t\t\t\t\t\t\t{tabs[i].tally ? (\n\t\t\t\t\t\t\t\t\t<Tally label={tally.label} type={tally.type} />\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{i == activeTab ? (\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticonName='angleUp'\n\t\t\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__panel-content`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__panel-content`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<section\n\t\t\t\t\t\t\tclassName={`${baseClass}__panel-content`}\n\t\t\t\t\t\t\thidden={i == activeTab ? false : true}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{panelContent}\n\t\t\t\t\t\t</section>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n","import hashSum from 'hash-sum';\nimport React, {\n\tuseState,\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tisValidElement,\n\tElementType,\n} from 'react';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './tag.css';\n\nexport const tagColors = [\n\t'color-1',\n\t'color-2',\n\t'color-3',\n\t'color-4',\n\t'color-5',\n\t'color-6',\n\t'color-7',\n\t'color-8',\n\t'color-9',\n\t'color-10',\n\t'color-11',\n\t'color-12',\n\t'color-13',\n\t'color-14',\n\t'color-15',\n\t'color-16',\n\t'color-17',\n\t'color-18',\n\t'color-19',\n\t'color-20',\n];\n\ntype TagColor = (typeof tagColors)[number];\n\ninterface TagProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Should the tag be a link? If yes, provide a link element.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Should the tag be removable?\n\t */\n\tisRemovable?: boolean;\n\t/**\n\t * Function to execute when the tag is removed.\n\t */\n\tonRemove?: () => void;\n\t/**\n\t * Label for the remove button. Tag text will be appended to this label.\n\t */\n\tremoveLabel?: string;\n\t/**\n\t * Tag color. Will use random color if not selected.\n\t */\n\ttagColor?: TagColor;\n\t/**\n\t * Tag text\n\t */\n\ttagLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n// Creates consistent color based on the content on children\nconst labelToColor = (tagLabel: string): TagColor => {\n\tconst pos = parseInt(hashSum(tagLabel), 16);\n\tconst color: TagColor = tagColors[pos % tagColors.length];\n\treturn color;\n};\n\n// Function to truncate strings\nconst truncateString = (str: string, maxLength: number) => {\n\tif (str.length > maxLength) {\n\t\treturn str.slice(0, maxLength) + ' ...';\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/**\n * Tag UI component\n */\nexport const Tag = ({\n\tlinkContent,\n\tisRemovable,\n\tonRemove,\n\tremoveLabel = 'Remove tag',\n\ttagColor,\n\ttagLabel,\n\tclassName,\n\t...props\n}: TagProps) => {\n\t// Set up state.\n\tconst [visible, setVisible] = useState(true);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tag';\n\tconst colorClass = tagColor\n\t\t? `${baseClass}--${tagColor}`\n\t\t: `${baseClass}--${labelToColor(tagLabel)}`;\n\tconst visibleClass = visible ? null : 'pds-tag--hide';\n\n\t// Remove the tag, if it is removable.\n\tconst removeElement = () => {\n\t\tsetVisible((prev) => !prev);\n\t};\n\n\t// Deconstruct linkContent so we can wrap it around the tag.\n\tlet TagElement: string | ElementType;\n\tlet linkAttribute: string | null;\n\tlet linkUrl: string | null;\n\n\tif (linkContent && !isRemovable && isValidElement(linkContent)) {\n\t\tTagElement = linkContent.type;\n\t\tlinkAttribute = linkContent.props.href ? 'href' : 'to';\n\t\tlinkUrl =\n\t\t\tlinkAttribute === 'href' ? linkContent.props.href : linkContent.props.to;\n\t} else {\n\t\tTagElement = 'span';\n\t\tlinkAttribute = null;\n\t\tlinkUrl = null;\n\t}\n\n\t// Render the output.\n\treturn (\n\t\t<TagElement\n\t\t\thref={linkAttribute === 'href' ? linkUrl : null}\n\t\t\tto={linkAttribute === 'to' ? linkUrl : null}\n\t\t\tclassName={[baseClass, colorClass, visibleClass, className]\n\t\t\t\t.join(' ')\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className={`${baseClass}__label`} title={tagLabel}>\n\t\t\t\t{truncateString(tagLabel, 20)}\n\t\t\t</span>\n\t\t\t{isRemovable ? (\n\t\t\t\t<button\n\t\t\t\t\ttype='button'\n\t\t\t\t\tclassName={`${baseClass}__remove`}\n\t\t\t\t\taria-label={`${removeLabel}: ${tagLabel}`}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tremoveElement();\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName='xmark'\n\t\t\t\t\t\tclassName={`${baseClass}__remove-icon`}\n\t\t\t\t\t\ticonSize='md'\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t) : null}\n\t\t</TagElement>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useState, useEffect } from 'react';\n\nimport { MenuButton } from '@components/buttons/MenuButton/MenuButton';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './theme-switcher.css';\n\n/**\n * Prop types for ThemeSwitcher\n */\nexport interface ThemeSwitcherProps\n\textends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {\n\t/**\n\t * The current theme\n\t */\n\ttheme?: 'light' | 'dark' | 'system';\n\t/**\n\t * Callback triggered when the theme changes\n\t */\n\tonChange?: (theme: 'light' | 'dark' | 'system') => void;\n\t/**\n\t * Translation strings for theme options\n\t */\n\ttranslations?: {\n\t\tlight: string;\n\t\tdark: string;\n\t\tsystem: string;\n\t\ttooltip?: string;\n\t};\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\nimport { MenuItemType } from '@libs/types/custom-types';\n\n/**\n * ThemeSwitcher UI component\n */\nexport const ThemeSwitcher = ({\n\ttheme = 'light',\n\tonChange,\n\ttranslations = { light: 'Light', dark: 'Dark', system: 'System' },\n\tclassName,\n\t...props\n}: ThemeSwitcherProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-theme-switcher';\n\tconst [currentTheme, setCurrentTheme] = useState(theme ?? 'light');\n\n\tuseEffect(() => {\n\t\tsetCurrentTheme(theme ?? 'system');\n\t}, [theme]);\n\n\tconst menuOptions: MenuItemType[] = [\n\t\t{\n\t\t\tlabel: translations.light,\n\t\t\ticonName: 'sun',\n\t\t\tcallback: () => {\n\t\t\t\tsetCurrentTheme('light');\n\t\t\t\tonChange?.('light');\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlabel: translations.dark,\n\t\t\ticonName: 'moon',\n\t\t\tcallback: () => {\n\t\t\t\tsetCurrentTheme('dark');\n\t\t\t\tonChange?.('dark');\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlabel: translations.system,\n\t\t\ticonName: 'desktop',\n\t\t\tcallback: () => {\n\t\t\t\tsetCurrentTheme('system');\n\t\t\t\tonChange?.('system');\n\t\t\t},\n\t\t},\n\t];\n\n\tconst menuIcon = (() => {\n\t\tswitch (currentTheme) {\n\t\t\tcase 'dark':\n\t\t\t\treturn 'moon';\n\t\t\tcase 'system':\n\t\t\t\treturn 'desktop';\n\t\t\tdefault:\n\t\t\t\treturn 'sun';\n\t\t}\n\t})();\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t<Tooltip\n\t\t\t\tcontent={translations.tooltip ?? 'change theme'}\n\t\t\t\tpreferredPlacement='top'\n\t\t\t\toffsetValue={0}\n\t\t\t\tcustomTrigger={\n\t\t\t\t\t<MenuButton\n\t\t\t\t\t\tid='theme-switcher-menu'\n\t\t\t\t\t\taria-label={translations.tooltip ?? 'change theme'}\n\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\ticonName={menuIcon}\n\t\t\t\t\t\tmenuItems={menuOptions}\n\t\t\t\t\t\tdisplayType='icon-only'\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tFragment,\n\tReactElement,\n\tReactNode,\n\tcloneElement,\n\tisValidElement,\n} from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport '../tiles-common.css';\nimport './avatar-tile-list.css';\n\nexport type AvatarTileListItem = {\n\timage?: string;\n\talt?: string;\n\tname?: string;\n\ttitle?: string;\n\torg?: string;\n\tlinkContent?: ReactNode;\n};\n\n/**\n * Prop types for AvatarTileList\n */\nexport interface AvatarTileListProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * List of items for each tile.\n\t */\n\tlistItems: AvatarTileListItem[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * AvatarTileList UI component\n */\nexport const AvatarTileList = ({\n\tlistItems,\n\tclassName,\n\t...props\n}: AvatarTileListProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-avatar-tile-list';\n\tconst tileClass = 'pds-tile-list';\n\n\t// Tile content.\n\tconst TileContent = ({\n\t\timage,\n\t\talt,\n\t\tname,\n\t\ttitle,\n\t\torg,\n\t}: AvatarTileListItem) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{image && (\n\t\t\t\t\t<div className={`${tileClass}__image ${tileClass}__image--avatar`}>\n\t\t\t\t\t\t{<img src={image} alt={alt} />}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{name && <div className={`${tileClass}__name`}>{name}</div>}\n\t\t\t\t{title && <div className={`${tileClass}__title`}>{title}</div>}\n\t\t\t\t{org && <div className={`${tileClass}__org`}>{org}</div>}\n\t\t\t</>\n\t\t);\n\t};\n\n\t// Function to render a single tile.\n\tconst renderTile = (tile: AvatarTileListItem) => {\n\t\t// Wrap the tile content in a link if it exists.\n\t\tconst renderedTileContent = isValidElement(tile.linkContent) ? (\n\t\t\tcloneElement(tile.linkContent as ReactElement, {\n\t\t\t\tchildren: <TileContent {...tile} />,\n\t\t\t\tclassName: `${tileClass}__item`,\n\t\t\t})\n\t\t) : (\n\t\t\t<span className={`${tileClass}__item`}>\n\t\t\t\t<TileContent {...tile} />\n\t\t\t</span>\n\t\t);\n\n\t\treturn renderedTileContent;\n\t};\n\n\t// Render a list of tiles.\n\tconst renderTiles = () => {\n\t\treturn listItems.map((item, index) => {\n\t\t\treturn (\n\t\t\t\t<Fragment key={`tile-${index}`}>\n\t\t\t\t\t{renderTile(item)}\n\t\t\t\t\t<div className='pds-tile__separator'></div>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t});\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\t`${tileClass}--avatar`,\n\t\t\t\ttileClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderTiles()}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Hx } from '@libs/components/utility-components';\nimport { CTALink } from '@components/CTALink/CTALink';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './../tiles-common.css';\nimport './tile.css';\n\nexport type TileDisplayType = 'border' | 'clean' | 'clean-static';\n\n/**\n * Prop types for Tile\n */\nexport interface TileProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Display type.\n\t */\n\tdisplayType?: TileDisplayType;\n\t/**\n\t * Heading level or `span`.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Heading text.\n\t */\n\theadingText?: string;\n\t/**\n\t * Image source.\n\t */\n\timageSrc?: string;\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Summary paragraph.\n\t */\n\tsummary?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Tile UI component\n */\nexport const Tile = ({\n\tdisplayType = 'border',\n\theadingLevel = 'span',\n\theadingText,\n\timageSrc,\n\tlinkContent,\n\tsummary,\n\tclassName,\n\t...props\n}: TileProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-tile';\n\tconst displayTypeClass = `${baseClass}--${displayType}`;\n\n\t// Render the output\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([baseClass, displayTypeClass, className ?? ''])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{imageSrc && (\n\t\t\t\t\t<div className={`${baseClass}__image`}>\n\t\t\t\t\t\t<img src={imageSrc} alt='' />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{headingText && (\n\t\t\t\t\t<Hx\n\t\t\t\t\t\tbaseClass={baseClass}\n\t\t\t\t\t\tclassName={'pds-ts-xl'}\n\t\t\t\t\t\tlevel={headingLevel}\n\t\t\t\t\t>\n\t\t\t\t\t\t{headingText}\n\t\t\t\t\t</Hx>\n\t\t\t\t)}\n\n\t\t\t\t{summary && (\n\t\t\t\t\t<div className={`${baseClass}__summary`}>\n\t\t\t\t\t\t<p>{summary}</p>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{linkContent && (displayType == 'border' || displayType == 'clean') && (\n\t\t\t\t\t<CTALink\n\t\t\t\t\t\tlinkContent={linkContent}\n\t\t\t\t\t\tsize='sm'\n\t\t\t\t\t\tclassName={`${baseClass}__cta`}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<span className={`${baseClass}__separator`}></span>\n\t\t</>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Tile, TileDisplayType, TileProps } from '@components/tiles/Tile/Tile';\n\nimport { HeadingLevelCommon } from '@libs/types/custom-types';\n\nimport './../tiles-common.css';\n\n/**\n * Prop types for TileGrid\n */\nexport interface TileGridProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Display type.\n\t */\n\tdisplayType?: TileDisplayType;\n\t/**\n\t * Heading level or `span`. All tiles in the grid will use this heading level.\n\t */\n\theadingLevel?: HeadingLevelCommon;\n\t/**\n\t * Array of Tiles.\n\t */\n\ttiles: TileProps[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * TileGrid UI component\n */\nexport const TileGrid = ({\n\tdisplayType = 'border',\n\theadingLevel = 'h2',\n\ttiles,\n\tclassName,\n\t...props\n}: TileGridProps) => {\n\t// Collect the number of tiles.\n\tconst tileCount = tiles.length;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tile-grid';\n\tconst displayTypeClass = `${baseClass}--${displayType}`;\n\t// If the tile count is 2 or 4 we can use a two-column layout, all other counts will use the default three-column layout.\n\tconst tileCountClass =\n\t\ttileCount === 2 || tileCount === 4 ? `${baseClass}--two-column` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tdisplayTypeClass,\n\t\t\t\ttileCountClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{tiles.map((tile, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Tile\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tdisplayType={displayType}\n\t\t\t\t\t\theadingLevel={headingLevel}\n\t\t\t\t\t\theadingText={tile.headingText}\n\t\t\t\t\t\timageSrc={tile.imageSrc}\n\t\t\t\t\t\tlinkContent={tile.linkContent}\n\t\t\t\t\t\tsummary={tile.summary}\n\t\t\t\t\t\tclassName={tile.className}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tcreateElement,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport './app-layout.css';\n\n/**\n * Prop types for AppLayout\n */\ninterface AppLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Children to render in the layout.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * PDS container width.\n\t */\n\tcontainerWidth?: ContainerWidth;\n\t/**\n\t * Is the sidebar able to be collapsed and expanded by the user?\n\t * If false or not provided, the sidebar will always be expanded.\n\t */\n\thasSidebarToggle?: boolean;\n\t/**\n\t * Is the sidebar collapsed?\n\t * This is only relevant if `hasSidebarToggle` is true.\n\t */\n\tisSidebarCollapsed?: boolean;\n\t/**\n\t * Labels for translatable strings.\n\t */\n\tlabels?: {\n\t\tcollapseSidebar: string;\n\t\texpandSidebar: string;\n\t};\n\t/**\n\t * Element type for the main content area.\n\t */\n\tmainContentElement: 'div' | 'main';\n\t/**\n\t * Additional props for the main content element.\n\t */\n\tmainContentProps?:\n\t\t| ComponentPropsWithoutRef<'div'>\n\t\t| ComponentPropsWithoutRef<'main'>;\n\t/**\n\t * Callback function to handle sidebar toggle.\n\t * If not provided, the sidebar will use an internal function to manage collapsed state.\n\t */\n\tonSidebarToggle?: () => void;\n\t/**\n\t * Width of the sidebar when collapsed in rems. This should not need to be modified.\n\t */\n\tsidebarCollapsedWidth?: number;\n\t/**\n\t * Width of the sidebar when expanded as a percentage.\n\t * This is also the width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarExpandedWidth?: string;\n\t/**\n\t * Minimum width of the sidebar when expanded in rems.\n\t * This is also the min-width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarExpandedWidthMin?: number;\n\t/**\n\t * Additional props for the sidebar `<div>` element.\n\t */\n\tsidebarProps?: ComponentPropsWithoutRef<'div'>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * AppLayout UI component\n */\nexport const AppLayout = ({\n\tchildren,\n\tcontainerWidth = 'x-wide',\n\thasSidebarToggle,\n\tisSidebarCollapsed,\n\tlabels = {\n\t\tcollapseSidebar: 'Collapse sidebar',\n\t\texpandSidebar: 'Expand sidebar',\n\t},\n\tmainContentElement = 'main',\n\tmainContentProps,\n\tonSidebarToggle,\n\tsidebarCollapsedWidth = 3.5,\n\tsidebarExpandedWidth = '15%',\n\tsidebarExpandedWidthMin = 13,\n\tsidebarProps,\n\tclassName,\n\t...props\n}: AppLayoutProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext) as {\n\t\tisMobile: boolean;\n\t};\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up internal state for sidebar collapsed control.\n\tconst [sidebarCollapsedInternal, setSidebarCollapsedInternal] = useState(\n\t\tisSidebarCollapsed || false,\n\t);\n\n\t// Update sidebar collapsed state if prop changes.\n\tuseEffect(() => {\n\t\tsetSidebarCollapsedInternal(isSidebarCollapsed || false);\n\t}, [isSidebarCollapsed]);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-app-layout';\n\tconst containerClass = `pds-container pds-container--${containerWidth}`;\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Sidebar width for non-mobile.\n\tconst sidebarWidth = sidebarCollapsedInternal\n\t\t? `${sidebarCollapsedWidth}rem`\n\t\t: `${sidebarExpandedWidth}`;\n\n\t// Sidebar styles for non-mobile.\n\tconst sidebarStyles = {\n\t\twidth: sidebarWidth,\n\t\tminWidth: sidebarCollapsedInternal\n\t\t\t? `${sidebarCollapsedWidth}rem`\n\t\t\t: `${sidebarExpandedWidthMin}rem`,\n\t\ttransition: 'all 200ms ease-in-out',\n\t};\n\n\t// Handle sidebar toggle.\n\tconst handleSidebarToggle = () => {\n\t\tif (onSidebarToggle) {\n\t\t\tonSidebarToggle();\n\t\t\treturn;\n\t\t}\n\n\t\t// Toggle sidebar collapsed state.\n\t\tsetSidebarCollapsedInternal(!sidebarCollapsedInternal);\n\t};\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst mainContent = slots['__unslotted'];\n\tconst sidebarContent = slots['sidebar'];\n\n\t// Create main content element.\n\tconst mainContentMarkup = createElement(\n\t\tmainContentElement,\n\t\t{\n\t\t\t...mainContentProps,\n\t\t\tclassName: mergeClasses([\n\t\t\t\t`${baseClass}__main`,\n\t\t\t\tmainContentProps?.className,\n\t\t\t]),\n\t\t},\n\t\tmainContent,\n\t);\n\n\t// Prepare mobile markup.\n\tconst mobileContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<div\n\t\t\t\t\t{...sidebarProps}\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t`${baseClass}__sidebar`,\n\t\t\t\t\t\tsidebarProps?.className,\n\t\t\t\t\t])}\n\t\t\t\t>\n\t\t\t\t\t{sidebarContent}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{mainContentMarkup}\n\t\t</>\n\t);\n\n\t// Prepare default markup.\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<div\n\t\t\t\t\t{...sidebarProps}\n\t\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t\t`${baseClass}__sidebar`,\n\t\t\t\t\t\tsidebarProps?.className,\n\t\t\t\t\t])}\n\t\t\t\t\tstyle={sidebarStyles}\n\t\t\t\t>\n\t\t\t\t\t{hasSidebarToggle && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${baseClass}__sidebar-toggle-button`}\n\t\t\t\t\t\t\tonClick={handleSidebarToggle}\n\t\t\t\t\t\t\taria-expanded={!sidebarCollapsedInternal}\n\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\tsidebarCollapsedInternal\n\t\t\t\t\t\t\t\t\t? labels.expandSidebar\n\t\t\t\t\t\t\t\t\t: labels.collapseSidebar\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\tsidebarCollapsedInternal\n\t\t\t\t\t\t\t\t\t? labels.expandSidebar\n\t\t\t\t\t\t\t\t\t: labels.collapseSidebar\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className={`${baseClass}__sidebar-toggle-icon`}>\n\t\t\t\t\t\t\t\t<Icon iconName='angleLeft' iconSize='sm' verticalAlign='-1px' />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={`${baseClass}__sidebar-inner`}>{sidebarContent}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{mainContentMarkup}\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tmobileClass,\n\t\t\t\tcontainerClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileContent : defaultContent}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport './dashboard-inner.css';\n\n/**\n * Prop types for DashboardInner\n */\ninterface DashboardInnerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Whether to apply bottom spacing to the second-to-last content child.\n\t * This prop provides flexibility for different dashboard layouts:\n\t * - When true: Adds consistent spacing between content sections while preventing\n\t * unnecessary spacing after the last element\n\t * - When false: Removes all content spacing for layouts that require custom spacing\n\t * @default false\n\t */\n\thasContentSpacing?: boolean;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * DashboardInner UI component\n */\nexport const DashboardInner = ({\n\tchildren,\n\thasContentSpacing,\n\tclassName,\n\t...props\n}: DashboardInnerProps) => {\n\t// Get responsive context.\n\tconst { isMobile } = useContext(ResponsiveContext);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-dashboard-inner';\n\tconst mobileClass = isMobile\n\t\t? `${baseClass}--isMobile`\n\t\t: `${baseClass}--notMobile`;\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst headerLeftContent = slots['header-left'];\n\tconst headerRightContent = slots['header-right'];\n\tconst content = slots['content'];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, mobileClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{(headerLeftContent || headerRightContent) && (\n\t\t\t\t<div className={`${baseClass}__header`}>\n\t\t\t\t\t{headerLeftContent && (\n\t\t\t\t\t\t<div className={`${baseClass}__header-left`}>\n\t\t\t\t\t\t\t{headerLeftContent}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{headerRightContent && (\n\t\t\t\t\t\t<div className={`${baseClass}__header-right`}>\n\t\t\t\t\t\t\t{headerRightContent}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{content && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={\n\t\t\t\t\t\thasContentSpacing\n\t\t\t\t\t\t\t? `${baseClass}__content ${baseClass}__content--with-spacing`\n\t\t\t\t\t\t\t: `${baseClass}__content`\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport './docs-layout.css';\n\n/**\n * Prop types for DocsLayout\n */\ninterface DocsLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Children to render in the layout.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Width of the sidebar when expanded as a percentage.\n\t * This is also the width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarWidth?: string;\n\t/**\n\t * Minimum width of the sidebar when expanded in rems.\n\t * This is also the min-width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarMinWidth?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * DocsLayout UI component\n */\nexport const DocsLayout = ({\n\tchildren,\n\tsidebarWidth = '18%',\n\tsidebarMinWidth = 14.5,\n\tclassName,\n\t...props\n}: DocsLayoutProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext) as {\n\t\tisMobile: boolean;\n\t};\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-docs-layout';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Sidebar styles for non-mobile.\n\tconst sidebarStyles = {\n\t\twidth: sidebarWidth,\n\t\tminWidth: `${sidebarMinWidth}rem`,\n\t};\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst mainContent = slots['__unslotted'] || slots['content'];\n\tconst sidebarContent = slots['sidebar'];\n\n\t// Prepare mobile markup.\n\tconst mobileContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`}>{sidebarContent}</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Prepare default markup.\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`} style={sidebarStyles}>\n\t\t\t\t\t<div className={`${baseClass}__sidebar-inner`}>{sidebarContent}</div>\n\t\t\t\t</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tmobileClass,\n\t\t\t\t'pds-container pds-container--x-wide',\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileContent : defaultContent}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth';\n\nimport { GridGapOptions } from '@layouts/layout-types';\n\nimport './flex-container.css';\n\ntype FlexAlignContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'stretch';\n\ntype FlexAlignItems =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'stretch'\n\t| 'baseline';\n\ntype FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\ntype FlexJustifyContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'space-evenly';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\ntype FlexGapOptions = GridGapOptions | 'minimal' | 'none';\n\ninterface FlexContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aligns content when there is extra space in the cross-axis.\n\t */\n\talignContent?: FlexAlignContent;\n\t/**\n\t * Aligns items on the cross axis.\n\t */\n\talignItems?: FlexAlignItems;\n\t/**\n\t * Establishes the main-axis, thus defining the direction flex items are placed in the flex container.\n\t */\n\tflexDirection?: FlexDirection;\n\t/**\n\t * If the items do not fit in one line (row or column, depending on flexDirection), how should they wrap.\n\t */\n\tflexWrap?: FlexWrap;\n\t/**\n\t * Gap between items.\n\t */\n\tgap?: FlexGapOptions;\n\t/**\n\t * Alignment along the main axis.\n\t */\n\tjustifyContent?: FlexJustifyContent;\n\t/**\n\t * Align content on mobile. If not set, will default to the same value as `alignContent`.\n\t */\n\tmobileAlignContent?: FlexAlignContent;\n\t/**\n\t * Align items on mobile. If not set, will default to the same value as `alignItems`.\n\t */\n\tmobileAlignItems?: FlexAlignItems;\n\t/**\n\t * Flex direction for mobile.\n\t */\n\tmobileFlexDirection?: FlexDirection;\n\t/**\n\t * Flex wrap for mobile. If not set, will default to the same value as `flexWrap`.\n\t */\n\tmobileFlexWrap?: FlexWrap;\n\t/**\n\t * Gap between items on mobile. If not set, will default to the same value as `gap`.\n\t */\n\tmobileGap?: FlexGapOptions;\n\t/**\n\t * Justify content for mobile. If not set, will default to the same value as `justifyContent`.\n\t */\n\tmobileJustifyContent?: FlexJustifyContent;\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Flex Container UI component\n */\nexport const FlexContainer = ({\n\talignContent = 'flex-start',\n\talignItems = 'stretch',\n\tflexDirection = 'row',\n\tflexWrap = 'nowrap',\n\tgap = 'standard',\n\tjustifyContent = 'flex-start',\n\tmobileAlignItems,\n\tmobileAlignContent,\n\tmobileFlexDirection = 'column',\n\tmobileFlexWrap,\n\tmobileGap,\n\tmobileJustifyContent,\n\tchildren,\n\tclassName,\n\t...props\n}: FlexContainerProps) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Set isMobile fallback.\n\tlet isMobile = windowWidth <= 640;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-flex';\n\tconst containerClass = `${baseClass}-container`;\n\tconst mobileClass = isMobile ? `${containerClass}--mobile` : null;\n\n\tlet flexDirectionClass = null;\n\tif (isMobile) {\n\t\tflexDirectionClass = `${baseClass}-direction--${mobileFlexDirection}`;\n\t} else {\n\t\tif (flexDirection !== 'row') {\n\t\t\tflexDirectionClass = `${baseClass}-direction--${flexDirection}`;\n\t\t}\n\t}\n\n\tlet flexWrapClass = null;\n\tif (isMobile) {\n\t\t// If mobileFlexWrap is set, use that value.\n\t\tif (mobileFlexWrap) {\n\t\t\tif (mobileFlexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${mobileFlexWrap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileFlexWrap is not set, default to flexWrap value.\n\t\t\tif (flexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (flexWrap !== 'nowrap') {\n\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t}\n\t}\n\n\tlet justifyContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileJustifyContent is set, use that value.\n\t\tif (mobileJustifyContent) {\n\t\t\tif (mobileJustifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${mobileJustifyContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileJustifyContent is not set, default to justifyContent value.\n\t\t\tif (justifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (justifyContent !== 'flex-start') {\n\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t}\n\t}\n\n\tlet alignItemsClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignItems is set, use that value.\n\t\tif (mobileAlignItems) {\n\t\t\tif (mobileAlignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${mobileAlignItems}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignItems is not set, default to alignItems value.\n\t\t\tif (alignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignItems !== 'stretch') {\n\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t}\n\t}\n\n\tlet alignContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignContent is set, use that value.\n\t\tif (mobileAlignContent) {\n\t\t\tif (mobileAlignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${mobileAlignContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignContent is not set, default to alignContent value.\n\t\t\tif (alignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignContent !== 'flex-start') {\n\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t}\n\t}\n\n\tlet gapClass = null;\n\tif (isMobile) {\n\t\t// If mobileGap is set, use that value.\n\t\tif (mobileGap) {\n\t\t\tif (mobileGap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${mobileGap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileGap is not set, default to gap value.\n\t\t\tif (gap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (gap !== 'none') {\n\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t}\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tcontainerClass,\n\t\t\t\tmobileClass,\n\t\t\t\tflexDirectionClass,\n\t\t\t\tflexWrapClass,\n\t\t\t\tjustifyContentClass,\n\t\t\t\talignItemsClass,\n\t\t\t\talignContentClass,\n\t\t\t\tgapClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React from 'react';\n\nimport { ResponsiveContextProvider } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n/**\n * Prop types for GlobalWrapper\n */\ninterface GlobalWrapperProps {\n\t/**\n\t * Child components\n\t */\n\tchildren: React.ReactNode;\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n}\n\n/**\n * GlobalWrapper wrapper component.\n */\nexport const GlobalWrapper = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}: GlobalWrapperProps) => {\n\treturn (\n\t\t<ResponsiveContextProvider mobileMenuMaxWidth={mobileMenuMaxWidth}>\n\t\t\t{children}\n\t\t</ResponsiveContextProvider>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { GridGapOptions } from '@layouts/layout-types';\n\n/**\n * Prop types for SidebarLayout\n */\ninterface SidebarLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Children to render in the layout. All children must be assigned to a named slot — either 'sidebar' or 'content'.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Gap between grid items\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Sidebar location.\n\t */\n\tsidebarLocation?: 'left' | 'right';\n\t/**\n\t * Sidebar location on mobile.\n\t */\n\tsidebarMobileLocation?: 'before' | 'after';\n\t/**\n\t * Sidebar width.\n\t */\n\tsidebarWidth?: 'narrow' | 'standard' | 'wide';\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * SidebarLayout UI component\n */\nexport const SidebarLayout = ({\n\tchildren,\n\tgridGap = 'standard',\n\tsidebarLocation = 'right',\n\tsidebarMobileLocation = 'after',\n\tsidebarWidth = 'standard',\n\tclassName,\n\t...props\n}: SidebarLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-sidebar-layout';\n\tconst gapClass = `pds-grid pds-grid--${gridGap}`;\n\tconst widthClass = `${baseClass}--${sidebarWidth}`;\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign grid classes based on sidebarWidth prop.\n\tlet contentWidthClasses =\n\t\t'pds-grid-item pds-grid-item--md-8 pds-grid-item--lg-9 pds-grid-item--xl-10';\n\tlet sidebarWidthClasses =\n\t\t'pds-grid-item pds-grid-item--md-4 pds-grid-item--lg-3 pds-grid-item--xl-2';\n\n\tif (sidebarWidth === 'narrow') {\n\t\tcontentWidthClasses =\n\t\t\t'pds-grid-item pds-grid-item--md-9 pds-grid-item--lg-10';\n\t\tsidebarWidthClasses =\n\t\t\t'pds-grid-item pds-grid-item--md-3 pds-grid-item--lg-2';\n\t}\n\n\tif (sidebarWidth === 'wide') {\n\t\tcontentWidthClasses =\n\t\t\t'pds-grid-item pds-grid-item--md-7 pds-grid-item--lg-8';\n\t\tsidebarWidthClasses =\n\t\t\t'pds-grid-item pds-grid-item--md-5 pds-grid-item--lg-4';\n\t}\n\n\t// Assign content to named slots.\n\tconst mainContentSlot = (\n\t\t<div\n\t\t\tkey='content'\n\t\t\tclassName={`${baseClass}__main ${!isMobile ? contentWidthClasses : 'pds-grid-item'}`}\n\t\t>\n\t\t\t{slots['content']}\n\t\t</div>\n\t);\n\tconst sidebarSlot = (\n\t\t<div\n\t\t\tkey='sidebar'\n\t\t\tclassName={`${baseClass}__side ${!isMobile ? sidebarWidthClasses : 'pds-grid-item'}`}\n\t\t>\n\t\t\t{slots['sidebar']}\n\t\t</div>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgapClass,\n\t\t\t\twidthClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? (\n\t\t\t\tsidebarMobileLocation === 'before' ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{sidebarSlot}\n\t\t\t\t\t\t{mainContentSlot}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{mainContentSlot}\n\t\t\t\t\t\t{sidebarSlot}\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t) : sidebarLocation === 'left' ? (\n\t\t\t\t<>\n\t\t\t\t\t{sidebarSlot}\n\t\t\t\t\t{mainContentSlot}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{mainContentSlot}\n\t\t\t\t\t{sidebarSlot}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ReactNode, useRef } from 'react';\nimport { useMeasure } from '@reactuses/core';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { Container } from '@layouts/Container/Container';\n\nimport './stepper-layout.css';\n\n/**\n * Prop types for StepperLayout\n */\ninterface StepperLayoutProps {\n\t/**\n\t * Layout content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * StepperLayout UI component\n */\nexport const StepperLayout = ({\n\tchildren,\n\tclassName,\n\t...props\n}: StepperLayoutProps) => {\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst stepperContent = slots['stepper'];\n\tconst formContent = slots['form'];\n\n\t// Get width of the main container and use it set the button container width.\n\tconst stepperContainerRef = useRef();\n\tconst [rect] = useMeasure(stepperContainerRef);\n\tconst stepperContainerWidth = rect.width;\n\n\tdocument.documentElement.style.setProperty(\n\t\t'--stepper-layout-max-width',\n\t\tstepperContainerWidth + 'px',\n\t);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-stepper-layout';\n\n\t// Render the output\n\treturn (\n\t\t<Container className={mergeClasses([baseClass, className])} {...props}>\n\t\t\t{stepperContent && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__stepper-container`}\n\t\t\t\t\tref={stepperContainerRef}\n\t\t\t\t>\n\t\t\t\t\t{stepperContent}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{formContent && (\n\t\t\t\t<div className={`${baseClass}__form-container`}>{formContent}</div>\n\t\t\t)}\n\t\t</Container>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@layouts/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './three-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * ThreeItemLayout UI component.\n */\nexport const ThreeItemLayout = ({\n\tchildren,\n\tgridGap = 'standard',\n\tverticalAlign = 'start',\n\tclassName,\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-three-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\tconst columns = [\n\t\tslots['first-item'],\n\t\tslots['second-item'],\n\t\tslots['third-item'],\n\t];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{columns.map((column, idx) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={idx}\n\t\t\t\t\tclassName='pds-grid-item pds-grid-item--sm-12 pds-grid-item--md-4 pds-grid-item--lg-4'\n\t\t\t\t>\n\t\t\t\t\t{column}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@layouts/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './two-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Layout variant for column widths.\n\t */\n\tlayoutVariant?: 'equal' | 'one-third-start' | 'one-third-end';\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * TwoItemLayout UI component.\n */\nexport const TwoItemLayout = ({\n\tchildren,\n\tgridGap = 'standard',\n\tlayoutVariant = 'equal',\n\tverticalAlign = 'start',\n\tclassName,\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-two-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Pre-defined class arrays based on column width.\n\tconst halfClasses = ['pds-grid-item--md-6'];\n\tconst oneThirdClasses = ['pds-grid-item--md-4', 'pds-grid-item--lg-3'];\n\tconst twoThirdsClasses = ['pds-grid-item--md-8', 'pds-grid-item--lg-9'];\n\n\t// Base classes array.\n\tconst itemBaseClasses = ['pds-grid-item', 'pds-grid-item--sm-4'];\n\n\t// Establish vars for each item's classes array.\n\tinterface ItemClasses {\n\t\tfirstItemClasses: string[];\n\t\tsecondItemClasses: string[];\n\t}\n\n\tlet firstItemClasses: ItemClasses['firstItemClasses'];\n\tlet secondItemClasses: ItemClasses['secondItemClasses'];\n\n\t// Alter items' class arrays based on layoutVariant.\n\tswitch (layoutVariant) {\n\t\tcase 'equal':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-start':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-end':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t}\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots for this component.\n\tconst firstItemContent = slots['first-item'];\n\tconst secondItemContent = slots['second-item'];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={firstItemClasses.join(' ').trim()}>\n\t\t\t\t{firstItemContent}\n\t\t\t</div>\n\t\t\t<div className={secondItemClasses.join(' ').trim()}>\n\t\t\t\t{secondItemContent}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useState, useEffect, useCallback } from 'react';\n\nexport const useKeyPress = (\n\ttargetKey: string,\n\tcallback?: (event: KeyboardEvent) => void,\n) => {\n\tconst [keyPressed, setKeyPressed] = useState(false);\n\n\t// Memoized handler for key down events\n\tconst downHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\t// Check if the pressed key matches the target key\n\t\t\tif (event.key === targetKey) {\n\t\t\t\tsetKeyPressed(true);\n\n\t\t\t\t// Execute optional callback if provided\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(event);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[targetKey, callback],\n\t);\n\n\t// Memoized handler for key up events\n\tconst upHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (event.key === targetKey) {\n\t\t\t\tsetKeyPressed(false);\n\t\t\t}\n\t\t},\n\t\t[targetKey],\n\t);\n\n\tuseEffect(() => {\n\t\t// Add event listeners when the component mounts\n\t\twindow.addEventListener('keydown', downHandler);\n\t\twindow.addEventListener('keyup', upHandler);\n\n\t\t// Cleanup function to remove event listeners when component unmounts\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', downHandler);\n\t\t\twindow.removeEventListener('keyup', upHandler);\n\t\t};\n\t}, [downHandler, upHandler]);\n\n\t// Return whether the key is currently pressed\n\treturn keyPressed;\n};\n"],"names":["createRandomID","getDescendants","node","collect","i","initiateSlots","children","slots","unslotted","Children","child","isValidElement","slotName","mergeClasses","styles","isValidImageSrc","uri","Icon","_a","_b","display","iconName","iconSize","verticalAlign","className","props","__objRest","iconClasses","iconWidth","svgData","iconSizes","React","__spreadValues","iconList","gradients","uniqueIdToGradient","uniqueId","pos","hashSum","Avatar","ariaLabel","hasUserFallback","imageSrc","linkContent","size","baseClass","sizeClass","hasImageClass","doesImageHaveError","setImageHaveError","useState","fallbackStyles","imageContent","staticContent","interactiveContent","cloneElement","__spreadProps","IndicatorBadge","label","color","colorClass","StatusBadge","hasStatusIndicator","statusIndicatorText","statusType","statusClass","statusClassMod","Tally","type","typeLabels","messageTypeLabel","Z_INDEX_NOTIFICATIONS","Z_INDEX_OVERLAY","Tooltip","content","customTrigger","offsetValue","preferredPlacement","triggerAccessibleText","triggerIcon","triggerIconColor","triggerIconSize","zIndex","isOpen","setIsOpen","triggerType","customTriggerClasses","iconTriggerClasses","refs","floatingStyles","context","useFloating","offset","flip","shift","autoUpdate","hover","useHover","focus","useFocus","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","FloatingPortal","BranchDiff","isLoading","loadingText","numberAhead","numberAheadDescription","numberBehind","numberBehindDescription","componentWidth","loadingClass","pulseClass","computedWidth","sanitizedNumberAhead","sanitizedNumberBehind","maxCommits","widthBehind","widthAhead","minPercentage","tooltipText","Hx","id","level","headingClass","createElement","extractText","inputCommonClasses","getInputWidthStyle","inputWidth","stripUrlProtocol","value","RequiredIcon","InputLabel","showLabel","required","disabled","isLegend","isPseudoLabel","labelClasses","labelContent","InputMessage","forInputGroup","message","hasValidationMessage","validationMessageHasDecorators","validationStatus","InputDecorator","iconVariants","variant","SearchShortcut","inputId","shortcutLabel","useHotkeys","e","element","ClearButton","clearLabel","handleClearInput","CharacterCounter","currentLength","maxLength","overLimitMessage","isOverLimit","overLimitCount","overLimitClass","HiddenLabel","isOptionGroup","option","SelectOption","forwardRef","ref","isActive","useId","activeClass","Spinner","colorType","isInline","displayClass","Button","buttonType","displayType","isFullWidth","isSplitButton","onClick","variantClass","fullWidthClass","setIconSize","renderedIcon","buttonContent","buttonElement","ButtonLink","buttonBaseClass","buttonModifierClasses","linkText","linkLabel","processedLink","useClipboard","text","options","isCopied","setIsCopied","duration","useEffect","__async","IconButton","hasTooltip","icon2Name","animationClasses","setOffsetValue","isAnimated","icon1Ref","useRef","icon2Ref","handleAnimation","handleClick","ClipboardButton","clipboardText","_isCopied","CloseButton","useWindowWidth","isBrowser","windowWidth","setWindowWidth","handleResize","ResponsiveContext","createContext","ResponsiveContextProvider","mobileMenuMaxWidth","isMobile","contextValue","isSeparatorItemType","item","isHeadingItemType","isLinkItemType","isNodeItemType","MenuButton","menuItems","menuPosition","testId","undefinedLabel","withinNavbar","responsiveContext","useContext","isMobileNavbar","mobileClass","navbarClass","triggerID","listboxID","activeIndex","setActiveIndex","openedViaKeyboard","nodeRef","listRef","groupIDs","disabledIndicesRef","buildDisabledIndices","indices","focusableIdx","menuContainer","click","useClick","listNav","useListNavigation","typeahead","useTypeahead","index","list","typedString","lowerTyped","getItemProps","wrappedGetReferenceProps","isMounted","transitionStyles","useTransitionStyles","handleItemActivation","linkElement","renderMenuItemsGrouped","items","menuItemBreaks","groupedItems","breakItem","group","renderItem","itemIndex","focusableIndex","groupID","groupHeadingID","groupIDString","fallbackItemID","itemID","isFocused","itemLabel","itemDescription","itemContent","LinkElement","itemProps","renderMenuItems","haveBreaks","listboxClasses","groupedItemsData","groupIndex","currentGroupID","hasHeading","keyID","groupLabel","isFocusable","currentFocusableIndex","menuButtonDisplayType","labelText","handleExpand","button","menu","MobileMenuItems","menuButtonMobileDisplayType","buttonVariant","mobileButtonClasses","expandedClass","SegmentedButton","defaultValue","onChange","disabledClass","isControlled","hasDefaultValue","internalValue","setInternalValue","handleSelection","radio","idx","isChecked","optionClass","checkedClass","SplitButton","actionItems","moreActionsLabel","primaryAction","moreActions","primaryActionElement","UtilityButton","buttonProps","isCritical","isWorking","isMonospace","criticalClass","workingClass","monospaceClass","iconTypes","Callout","title","typeClass","calloutTypeLabel","Card","background","padding","backgroundClass","paddingClass","imageSlot","mainSlot","CardHeading","fontSize","fontWeight","weightClass","CardSelectGroup","labelDisplay","layout","legendClass","currentSelection","setCurrentSelection","event","numberOfOptions","oneAcross","twoAcross","threeAcross","gridItemClasses","EmptyStateCard","headingLevel","headingText","isLinkExternal","summary","LinksCard","linkItems","cardContents","linkItem","PlatformIcon","platformType","platformClass","processedIcon","iconPair","badgeTypes","NewSiteCard","badge","icon","newWindowString","subtitle","selectionLink","supplementalLinks","SelectionLinkElement","LinkType","PaymentIcon","paymentType","PaymentCard","cardType","cardNumber","cardholderName","expDate","cardUsage","detailsLabel","detailsCallback","selectionCallback","ComparisonList","listItems","listLabel","moreLink","renderTypeLabels","SelectOptionGroup","Select","labelStrings","onBlur","onFocus","onOptionSelect","validationMessage","inputWidthStyle","requiredClass","errorClass","successClass","decorator","processedMessage","flatOptions","acc","curr","getIndexFromValue","controlledValueIndex","internalValueIndex","startingValueIndex","selectedIndex","setSelectedIndex","selectedItemLabel","selectedItemValue","placement","availableHeight","elements","handleBlur","handleFocus","focusInput","renderOptions","currentIndex","groupOptions","groupOption","optionIndex","PricingCard","actionPrimary","actionSecondary","hasComparisonList","onTierChange","planDescription","planName","planPricingData","statusBadgeLabels","selectLabel","statusBadgeType","containerClass","listClass","labelToId","multiplePlanOptions","selectedPlan","setSelectedPlan","primaryActionLabel","setPrimaryActionLabel","pricingData","listData","dataHideClass","findCustomActionLabel","planToCompare","planSelect","result","actionPrimaryElement","actionSecondaryElement","SiteCard","gotoText","siteImage","siteLink","siteName","sitePlan","siteStatus","siteStatusLabel","siteStatusType","statusBadge","processedSiteLink","_self","Prism","lang","plainTextGrammar","_","encode","tokens","Token","o","obj","deepClone","visited","clone","key","v","m","language","err","src","scripts","defaultActivation","no","classList","redef","inside","before","insert","root","grammar","ret","token","newToken","old","DFS","callback","objId","property","propertyType","async","container","env","parent","code","insertHighlightedCode","highlightedCode","worker","evt","rest","tokenList","LinkedList","addAfter","matchGrammar","toArray","name","hooks","callbacks","alias","matchedStr","stringify","s","aliases","attributes","matchPattern","pattern","lookbehind","match","lookbehindLength","startNode","startPos","rematch","patterns","j","patternObj","greedy","flags","currentNode","str","removeCount","from","to","p","k","matchStr","after","reach","removeFrom","removeRange","wrapped","nestedRematch","head","tail","next","newNode","count","array","immediateClose","script","highlightAutomaticallyCallback","readyState","module","global","pdsDark","pdsLight","SPACING_6XS","SPACING_5XS","SPACING_4XS","SPACING_3XS","SPACING_2XS","SPACING_XS","SPACING_S","SPACING_M","SPACING_L","SPACING_XL","SPACING_2XL","SPACING_3XL","SPACING_4XL","SPACING_5XL","SPACING_6XL","SPACING_7XL","SPACING_8XL","SPACING","TYPE_SCALE_XS","TYPE_SCALE_S","TYPE_SCALE_M","TYPE_SCALE_L","TYPE_SCALE_XL","TYPE_SCALE_2XL","TYPE_SCALE_3XL","TYPE_SCALE_4XL","TYPE_SCALE_5XL","TYPE_SCALE_6XL","TYPE_SCALE_7XL","TYPE_SCALE_8XL","TYPE_SCALE_9XL","TYPE_SCALE","Skeleton","shape","textIsJustified","textLineCount","textSize","shapeClass","textBasedShapes","processedHeight","processedWidth","computedSize","defaultOutput","sanitizedTextLineCount","rowGap","columnGap","getTextBlockWidth","lineNumber","getPrefixWidth","getCodeBlockOpacity","halfwayPoint","fadeStartPoint","fadeZoneLength","positionInFadeZone","opacityRange","fadeProgress","opacity","textBlockOutput","envVars","commandAfterHeredoc","insideString","toBeCopied","PREFIXES","prefix","CodeBlock","copyButtonLabel","hasCopyButton","hasLineNumbers","hasPrompt","height","loadingLineCount","maxHeight","promptSymbol","renderAsLegacy","shouldWrap","wrapClass","blockStyles","prismTheme","extraLanguages","loadingSkeleton","getClipboardText","htmlContent","tempDiv","br","processHtmlForLineNumbers","line","processHtmlForPrompt","lineContent","ReactCodeBlock","withLineNumbers","withPrompt","CTALink","CTASlice","backgroundColor","containerWidth","leadText","primaryLinkContent","secondaryLinkContent","containerClasses","DashboardStat","status","stat","statusIcons","CompactEmptyState","heading","VideoEmbed","platform","videoId","videoTitle","wistiaFrame","vimeoFrame","youTubeFrame","frameToRender","HorizontalEmptyState","alignment","ctaRegion","image","isWithinPanel","video","imageWidth","imageMarginLeft","alignmentClass","panelClass","videoClass","imageContainerStyle","videoMarkup","VerticalEmptyState","imageHeight","FileDiff","additions","deletions","totalChanges","widthDeletions","widthAdditions","FlowSteps","contentAlignment","layoutDirection","steps","contentAlignmentClass","layoutDirectionClass","processedSteps","header","numberMarkup","headerMarkup","contentMarkup","stepClass","FooterHeading","FooterLinks","SiteFooter","hasTopBorder","legalLinks","borderClass","currentYear","privacy","dataSubjectRequest","cookiePolicy","termsOfUse","acceptableUse","accessibilityStatement","Checkbox","checked","defaultChecked","indeterminate","inputProps","nestingLevel","indentClass","hasDefaultChecked","isInternalChecked","setIsInternalChecked","handleChange","boxClass","indeterminateClass","CheckboxIcon","useCallback","CheckboxFieldset","fieldsetProps","CheckboxGroup","onGroupBlur","onValueChange","initialCheckedOptions","checkbox","checkedOptions","setCheckedOptions","handleCheckboxChange","updatedOptions","handleGroupBlur","Combobox","hasClearButton","hasDropdownTrigger","hasSearchIcon","hasSearchShortcut","noResultsText","onClear","placeholder","comboboxInputValue","getLabelFromValue","filteredOptions","setFilteredOptions","inputValue","handleTriggerClick","handleInputChange","handleInputBlur","handleInputFocus","processOptions","optionDisplay","searchIndex","optionValue","optionSearchIndex","optionsFiltered","inputValueLower","optionsMarkup","getFilteredOptions","selectedItems","lowerCasedInputValue","selectedOption","ComboboxMultiselect","initialSelectedItems","setInputValue","setSelectedItems","lastMarkedItemIndex","setLastMarkedItemIndex","useMemo","handleSelectedItemsChange","newSelectedItems","getSelectedItemProps","getDropdownProps","removeSelectedItem","useMultipleSelection","highlightedIndex","selectedItem","getToggleButtonProps","getMenuProps","getInputProps","useCombobox","state","changes","newInputValue","newSelectedItem","handleItemDeletion","handleWrapperKeyDown","toggleEvent","selectedOptionsCounter","selectedItemForRender","FileUpload","accept","fieldLabel","multiple","onFileChange","showFullPath","hasValue","setHasValue","hasSafariDefault","setHasSafariDefault","isSafari","safariClass","defaultFileContent","defaultFileName","defaultFilePath","defaultFile","dataTransfer","inputElement","restoreDefaultFile","handleClearValue","InputGroup","childrenToRender","inputMessage","inputValidationMessage","_c","inputValidationStatus","_d","hasMessageClass","RadioGroup","handleOnBlur","ToggleLabel","toggleStatusLabel","IconContent","Switch","switchPlacement","offLabel","onLabel","showStatusLabel","switchLabelBelow","switchLabelRight","setIsChecked","switchContent","LabelContainer","MessageContainer","switchPlacementModifierClass","Textarea","counterMaxLength","isResizable","readonly","rows","textareaProps","translationStrings","resizableClass","readonlyClass","UrlPrefix","TextInput","autoComplete","hasUrlPrefix","searchIcon","showVisibilityToggle","urlPrefixClass","visibility","setVisibility","processedValue","newEvent","handleClear","handleShowVisibilityToggle","previous","processedType","LinkNewWindow","newWindowText","url","fontSizeClass","Modal","closeButtonLabel","contentMaxHeight","disableOutsideClick","hasCloseButton","modalIsOpen","setModalIsOpen","mainContent","footerContent","maxHeightStyle","FloatingOverlay","FloatingFocusManager","Breadcrumb","crumbs","totalCrumbs","processedCrumbs","crumb","clonedCrumb","getActiveLink","isActiveItem","activeLink","getLinkContentString","linkContentString","isActiveTrail","isInteractiveElement","elementType","typeWithDisplayName","processNavLinkContent","links","processedNavLink","firstChildLink","processSideNavGlobalLinkContent","processedSideNavGlobalItem","newLinkChildrenForString","ButtonNav","navRef","handleKeyDown","nav","focusableElements","focusedElement","nextIndex","prevIndex","ButtonMenuItem","itemClass","defaultMarkup","mobileMenuItems","mobileMarkup","Skiplink","destination","DashboardContext","DashboardGlobal","hasSidebarToggle","isAdmin","logoLinkContent","sidebarCollapsedWidth","sidebarExpandedWidth","sidebarToggleLabel","skiplinkText","isSidebarExpanded","setIsSidebarExpanded","navbarRef","rect","useMeasure","navbarWidth","dashboardContextValues","adminClass","sidebarClass","sidebarWidth","sidebarStyles","containerRightStyles","handleSidebarToggle","headerContent","sidebarContent","mobileContent","defaultContent","ANIMATION_TRANSITION_REVEAL_TIMING_FUNCTION","ANIMATION_TRANSITION_REVEAL_DURATION","DashboardNavItem","labels","menuClass","topLevelWithoutChildren","secondLevelMenu","classModifier","secondLevelItem","safePolygon","isExpanding","expandMenu","collapseMenu","menuHeight","animation","DropdownMenu","selectTextFallback","activeLabel","activeIcon","handleOpenMobileClick","dropdown","flatMenuItem","flattenedMenuItems","flatItems","link","subLink","subSubLink","logoFull","logoIcon","logoWordmark","PantheonLogo","subBrand","logoMarkup","linkMarkup","DashboardNav","mobileMenuSelectTextFallback","dashboardContext","widthClass","menuItemsWithIcons","SitePlanLevelLabel","SiteTypeLabel","SiteTypeIcon","SiteOptionDisplay","iconType","optionRef","labelMaxWidth","DashboardSearch","siteList","horizontalOffset","isExpanded","setIsExpanded","comboboxValue","setComboboxValue","comboboxRef","widthCollapsed","widthExpanded","startingRightPosition","widthFlexible","searchWidth","searchStyles","handleCollapse","handleSelect","handleClickOutside","handleKeyboardNavigation","comboboxInput","siteOptions","site","siteId","machineName","siteSearchCombobox","Container","width","Navbar","hideBorder","hideLogo","logoDisplayType","logoSrc","logoSubBrand","mobileNavOpen","setMobileNavOpen","handleKeyUp","flag","parentRef","createRef","childElements","disableList","elem","mobileNavbar","mobileMenu","itemsLeftContent","itemsRightContent","logoColorType","customLogoText","customLogoMarkup","renderLogoContent","toggleButton","sortedChildren","a","b","aOrder","bOrder","mobileNavOpenContents","FocusTrap","wideMarkup","NavMenuDropdown","NavMenu","dropdownIndex","setDropdownIndex","navDirection","setNavDirection","dropdownContainer","setDropdownContainer","navRefs","handleKeyNav","action","downContainer","downChildren","processedMenuLinks","navLink","SideNav","wrapper","shouldExpand","renderMenuItem","isInteractive","SideNavCompact","hasMobileMenu","isNavFocused","setIsNavFocused","expandedMenus","setExpandedMenus","headingAnchorRef","focusableElementsRef","currentFocusIndex","collectFocusableElements","headingAnchor","activeItemIndices","topLevelParent","uniqueIndices","submenu","findAssociatedToggleButton","parentItem","findAssociatedSubmenu","isExpandable","currentElement","navigateFocus","expandedMenu","firstLink","elementToFocus","direction","handleTabKey","allTabbable","navIndex","handleNavFocus","focusedIndex","prev","navigationLevels","renderMenuLevels","currentLevel","_links","levelString","menuLevelClass","itemLevelClass","nextLevel","isInitiallyExpanded","topLevelIndex","nextLevelItem","SideNavGlobalItem","isSidebarCollapsed","SideNavGlobal","hasLogo","TabMenuDropdown","buttonLabel","filterLabel","filterPlaceholder","minFilterItems","filteredLinks","setFilteredLinks","filterValue","setFilterValue","hasFilter","scrollClass","handleKeyDownMenuItems","filterLinks","valueToMatch","handleFilterChange","filteredList","updatedList","clearFilter","longestLink","dropdownWidth","filterInput","dropdownLinks","activeItemClass","TabMenu","TabMenuItem","dropdownSettings","promoteActiveChildLink","activeChildLink","processTabMenuItem","processedTabMenuItem","menuMarkup","UserMenu","userEmail","userImageSrc","userName","menuItemIDs","focusableMenuItems","listNavigation","avatarMarkup","userDetailsMarkup","activateMenuItem","handleMenuItemClick","menuItemsMarkup","tierLabels","WorkspaceSelector","createWorkspaceLink","menuHeading","workspaceList","filteredWorkspaceList","setFilteredWorkspaceList","createWorkspaceLinkRef","activeWorkspace","workspace","workspaceMenuItemsMarkup","workspaceItemClass","activeWorkspaceClass","unprivilegedWorkspaceClass","itemId","processedRef","createWorkspaceLinkMarkup","Banner","banners","dismissLabel","labelNext","labelPrevious","bannerGroup","setBannerGroup","totalBanners","multipleClass","typeClasses","activeBannerType","activeBannerTypeClass","setZIndex","setTabIndex","removeFadingClass","fadingBanners","showNextBanner","prevBanners","showPreviousBanner","renderBanner","banner","isDismissible","onDismiss","roleType","bannerTypeLabel","handleDismiss","prevBanner","InlineMessage","cssClasses","SectionMessage","ctaButton","messageRef","hasDismissClass","hasTitleClass","dismissAnimationEndEventHandler","triggerOnDismiss","defaultTypeLabels","Toast","toastTypeLabel","Toaster","autoCloseDuration","limit","position","toasterClasses","ToastContainer","Slide","ToastType","useToast","addToast","toastContent","toastOptions","toastApi","workingTransition","cssTransition","ELLIPSIS","range","start","end","length","usePagination","bufferCount","currentPage","itemsPerPage","totalItemCount","totalPageCount","totalPageNumbers","firstPageIndex","lastPageIndex","leftBufferIndex","rightBufferIndex","shouldShowLeftEllipse","shouldShowRightEllipse","leftItemCount","rightItemCount","rightRange","middleRange","Pagination","onPageChange","paginationRange","lastPage","onNext","onPrevious","currentClass","pageNumber","ExpansionPanel","processedID","detailsRef","summaryRef","contentRef","details","isClosing","open","shrink","startHeight","endHeight","onAnimationFinish","expand","ExpansionPanelGroup","displayTypeClass","Panel","contentClass","PanelList","hasBorder","PanelRow","expandButtonAriaLabel","liRef","itemsLeftSlot","itemsRightSlot","itemsBelowSlot","li","contentHeight","Picture","srcWebp","srcFallback","alt","ARROW_HEIGHT","ARROW_WIDTH","GAP","Popover","onClose","popoverIsOpen","setPopoverIsOpen","classNameContainer","triggerClasses","processedOffsetValue","arrowRef","middlewareData","nextOpen","arrow","handleClose","arrowX","arrowY","transformX","transformY","side","FloatingArrow","colorMap","ProgressBar","colorBreakpoints","messagePosition","percentage","showPercentage","trackClasses","barPercentage","breakpoint","messageMarkup","messageIsAbove","messageIsBelow","ProgressRing","innerLabel","loadingTextClasses","ringInPx","ringSize","ringStrokeWidth","ringRadius","dashArray","dashOffset","innerLabelText","PullQuote","attribution","layoutType","quote","layoutClass","RefreshCheckerState","RefreshChecker","lastChecked","onCheck","checkerState","setCheckerState","defaultLabelStrings","getLabel","checkedDate","timeDiff","seconds","minutes","hours","days","dateFormatOptions","timeLabel","handleCheck","buttonClass","tooltipIcon","SiteDashboardHeading","popoverContent","popoverTitle","handleUpgradeClick","sitePlanLevel","siteType","triggerProps","upgradeLabel","sitePlanLevelLabel","socialData","SocialLinks","StatusIndicator","Stepper","translatableLabels","mobileBaseClass","stepsListWidth","stepContentWidth","connectorOffset","minStepCount","maxStepCount","totalSteps","currentStepIndex","step","stepItems","stepNumber","currentStep","isComplete","hasError","gapPerSide","stepWidthInner","stepWidthEnd","connectorWidth","isFirstStep","isLastStep","stepWidth","stepClasses","stepIndicator","stepLabel","stepContent","handleButtonClick","stepItemsMobile","nextStepLabel","ringPercentage","stepStyles","errorLabel","VerticalStep","backButton","forwardButton","isCurrent","_isFirstStep","VerticalStepper","firstStep","completedStep","Table","headers","rowData","tableHeaders","tableCells","setTableCells","order","setOrder","ascSort","descSort","handleSort","tableRow","data","cell","TableOfContents","appendIds","ignoreClass","showHeading","sourceID","escapedCharacters","validHeadings","useHeadingsData","nestedHeadings","setNestedHeadings","headingElements","char","newNestedHeadings","getNestedHeadings","activeID","setActiveID","headingElementsRef","headings","map","headingElement","visibleHeadings","getIndexFromId","sortedVisibleHeadings","observer","appendIdToURL","scrollToHeading","handleLinkClick","TOCList","Tabs","defaultSelected","onActiveTabChange","selectedTab","tabs","activeTab","updateActiveTab","toggleTab","tab","newActiveTab","tabRefs","indexLength","setIndex","dir","intTab","onKeyDown","nextTab","prevTab","firstTab","lastTab","focusTab","tabId","tabLabel","tally","panelContent","tagColors","labelToColor","tagLabel","truncateString","Tag","isRemovable","onRemove","removeLabel","tagColor","visible","setVisible","visibleClass","removeElement","TagElement","linkAttribute","linkUrl","ThemeSwitcher","theme","translations","currentTheme","setCurrentTheme","menuOptions","menuIcon","AvatarTileList","tileClass","TileContent","org","renderTile","tile","renderTiles","Fragment","Tile","TileGrid","tiles","tileCount","tileCountClass","AppLayout","mainContentElement","mainContentProps","onSidebarToggle","sidebarExpandedWidthMin","sidebarProps","sidebarCollapsedInternal","setSidebarCollapsedInternal","mainContentMarkup","DashboardInner","hasContentSpacing","headerLeftContent","headerRightContent","DocsLayout","sidebarMinWidth","FlexContainer","alignContent","alignItems","flexDirection","flexWrap","gap","justifyContent","mobileAlignItems","mobileAlignContent","mobileFlexDirection","mobileFlexWrap","mobileGap","mobileJustifyContent","flexDirectionClass","flexWrapClass","justifyContentClass","alignItemsClass","alignContentClass","gapClass","GlobalWrapper","SidebarLayout","gridGap","sidebarLocation","sidebarMobileLocation","contentWidthClasses","sidebarWidthClasses","mainContentSlot","sidebarSlot","StepperLayout","stepperContent","formContent","stepperContainerRef","stepperContainerWidth","ThreeItemLayout","gridGapClass","vertAlignClass","columns","column","TwoItemLayout","layoutVariant","halfClasses","oneThirdClasses","twoThirdsClasses","itemBaseClasses","firstItemClasses","secondItemClasses","firstItemContent","secondItemContent","useKeyPress","targetKey","keyPressed","setKeyPressed","downHandler","upHandler"],"mappings":"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","x_google_ignoreList":[39,45,46]}
|