@atom-learning/components 6.0.0-beta.3 → 6.0.0-beta.4

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.
Files changed (54) hide show
  1. package/dist/components/action-icon/ActionIcon.d.ts +1 -1
  2. package/dist/components/action-icon/ActionIcon.js +1 -1
  3. package/dist/components/action-icon/ActionIcon.js.map +1 -1
  4. package/dist/components/banner/banner-regular/BannerRegular.d.ts +10 -10
  5. package/dist/components/banner/banner-regular/BannerRegularDismiss.d.ts +2 -2
  6. package/dist/components/banner/banner-slim/BannerSlim.d.ts +10 -10
  7. package/dist/components/banner/banner-slim/BannerSlimDismiss.d.ts +2 -2
  8. package/dist/components/chip/Chip.js +1 -1
  9. package/dist/components/chip/Chip.js.map +1 -1
  10. package/dist/components/combobox/ComboboxInput.js +1 -1
  11. package/dist/components/combobox/ComboboxInput.js.map +1 -1
  12. package/dist/components/combobox/ComboboxPopover.js +1 -1
  13. package/dist/components/combobox/ComboboxPopover.js.map +1 -1
  14. package/dist/components/create-password-field/CreatePasswordField.js +1 -1
  15. package/dist/components/data-table/DataTable.d.ts +27 -10
  16. package/dist/components/data-table/DataTable.js +1 -1
  17. package/dist/components/data-table/DataTable.js.map +1 -1
  18. package/dist/components/data-table/DataTable.types.d.ts +8 -0
  19. package/dist/components/data-table/DataTable.types.js.map +1 -1
  20. package/dist/components/data-table/DataTableBulkActionsFloating.d.ts +12 -0
  21. package/dist/components/data-table/DataTableBulkActionsFloating.js +2 -0
  22. package/dist/components/data-table/DataTableBulkActionsFloating.js.map +1 -0
  23. package/dist/components/data-table/DataTableBulkActionsSelectedRowActions.d.ts +6 -0
  24. package/dist/components/data-table/DataTableBulkActionsSelectedRowActions.js +2 -0
  25. package/dist/components/data-table/DataTableBulkActionsSelectedRowActions.js.map +1 -0
  26. package/dist/components/data-table/DataTableContext.js +1 -1
  27. package/dist/components/data-table/DataTableContext.js.map +1 -1
  28. package/dist/components/data-table/DataTableHead.d.ts +2 -1
  29. package/dist/components/data-table/DataTableHead.js +1 -1
  30. package/dist/components/data-table/DataTableHead.js.map +1 -1
  31. package/dist/components/data-table/DataTableTable.d.ts +2 -1
  32. package/dist/components/data-table/DataTableTable.js +1 -1
  33. package/dist/components/data-table/DataTableTable.js.map +1 -1
  34. package/dist/components/heading/Heading.js +1 -1
  35. package/dist/components/heading/Heading.js.map +1 -1
  36. package/dist/components/number-input/NumberInputStepper.d.ts +2 -2
  37. package/dist/components/pagination/PaginationNextButton.d.ts +2 -2
  38. package/dist/components/pagination/PaginationPreviousButton.d.ts +2 -2
  39. package/dist/components/section-message/SectionMessage.js +1 -1
  40. package/dist/components/section-message/SectionMessage.js.map +1 -1
  41. package/dist/components/sortable/Handle.d.ts +2 -2
  42. package/dist/components/stepper/Stepper.js +1 -1
  43. package/dist/components/table/Table.d.ts +1 -4
  44. package/dist/components/table/Table.js +1 -1
  45. package/dist/components/table/Table.js.map +1 -1
  46. package/dist/components/table/TableStickyColumnsContainer.js +1 -1
  47. package/dist/components/table/TableStickyColumnsContainer.js.map +1 -1
  48. package/dist/components/top-bar/TopBar.d.ts +2 -2
  49. package/dist/components/top-bar/TopBar.js +1 -1
  50. package/dist/components/top-bar/TopBar.js.map +1 -1
  51. package/dist/docgen.json +1 -1
  52. package/dist/index.cjs.js +1 -1
  53. package/dist/index.cjs.js.map +1 -1
  54. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/stitches.ts","../src/utilities/create-theme-variants/createThemeVariants.ts","../src/components/box/Box.tsx","../src/utilities/css-wrapper/CSSWrapper.tsx","../src/utilities/no-overflow-wrapper/NoOverflowWrapper.tsx","../src/utilities/style/capsize.ts","../src/utilities/style/encode-background-icon.ts","../src/utilities/style/focus-visible-style-block.ts","../src/utilities/style/keyframe-animations.ts","../src/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../src/utilities/style/get-icon-size.ts","../src/utilities/style/disabledStyle.ts","../src/components/accordion/AccordionContent.tsx","../src/components/accordion/AccordionItem.tsx","../src/experiments/color-scheme/stitches.colorscheme.config.ts","../src/experiments/color-scheme/ColorScheme.tsx","../src/components/icon/Icon.tsx","../src/components/accordion/AccordionTrigger.tsx","../src/components/accordion/Accordion.tsx","../src/constants/zIndices.ts","../src/components/tooltip/TooltipContent.tsx","../src/components/tooltip/Tooltip.tsx","../src/utilities/optional-tooltip-wrapper/OptionalTooltipWrapper.tsx","../src/utilities/uri/index.ts","../src/components/action-icon/ActionIcon.constants.ts","../src/components/action-icon/ActionIcon.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialog.tsx","../src/utilities/hooks/useIsMountedRef.ts","../src/components/flex/Flex.tsx","../src/components/loader/Loader.tsx","../src/components/button/Button.tsx","../src/components/heading/Heading.tsx","../src/components/text/Text.tsx","../src/components/alert-dialog/alert-context/AlertDialogIcon.tsx","../src/components/alert-dialog/alert-context/AlertDialog.tsx","../src/components/alert-dialog/alert-context/reducer.ts","../src/components/alert-dialog/alert-context/AlertContext.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/image/Image.tsx","../src/components/avatar/AvatarPlaceholder.tsx","../src/components/avatar/AvatarInitial.tsx","../src/components/avatar/AvatarImage.tsx","../src/components/avatar/Avatar.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/badge/Badge.context.tsx","../src/components/badge/BadgeIcon.tsx","../src/utilities/hooks/useResizeObserver.ts","../src/components/badge/BadgeText.tsx","../src/components/badge/stitches.badge.colorscheme.config.ts","../src/components/badge/Badge.tsx","../src/components/dismissible/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../src/components/banner/BannerContext.tsx","../src/components/banner/Banner.tsx","../src/components/banner/banner-regular/BannerRegularButton.tsx","../src/components/banner/banner-regular/BannerRegularActions.tsx","../src/components/banner/BannerContainer.tsx","../src/components/banner/banner-regular/BannerRegularContainer.tsx","../src/components/banner/banner-regular/BannerRegularContent.tsx","../src/components/banner/banner-regular/BannerRegularDismiss.tsx","../src/components/banner/banner-regular/BannerRegularHeading.tsx","../src/components/banner/banner-regular/BannerRegularImage.tsx","../src/components/banner/banner-regular/BannerRegularText.tsx","../src/components/banner/banner-regular/BannerRegular.tsx","../src/components/banner/banner-slim/BannerSlimActions.tsx","../src/components/banner/banner-slim/BannerSlimButton.tsx","../src/components/banner/banner-slim/BannerSlimContainer.tsx","../src/components/banner/banner-slim/BannerSlimContent.tsx","../src/components/banner/banner-slim/BannerSlimDismiss.tsx","../src/components/banner/banner-slim/BannerSlimImage.tsx","../src/components/banner/banner-slim/BannerSlimText.tsx","../src/components/banner/banner-slim/BannerSlim.tsx","../src/components/carousel/CarouselArrows.tsx","../src/components/carousel/CarouselPagination.tsx","../src/components/carousel/CarouselSlide.tsx","../src/components/carousel/CarouselSlider.tsx","../src/components/carousel/Carousel.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox-group/context/CheckboxGroupMounted.context.tsx","../src/components/checkbox-group/context/CheckboxGroupChecked.context.tsx","../src/components/checkbox-group/CheckboxGroupAllItem.tsx","../src/components/checkbox-group/CheckboxGroupItem.tsx","../src/components/checkbox-group/CheckboxGroupSub.tsx","../src/components/checkbox-group/CheckboxGroup.tsx","../src/components/tree/TreeListItem.tsx","../src/components/tree/TreeCollapsible.tsx","../src/components/tree/TreeList.tsx","../src/components/tree/TreeCollapsibleContent.tsx","../src/components/tree/TreeIcon.tsx","../src/components/tree/TreeText.tsx","../src/components/tree/TreeItemContent.tsx","../src/components/tree/TreeCollapsibleTrigger.tsx","../src/components/tree/TreeItem.tsx","../src/components/tree/Tree.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsible.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleContent.tsx","../src/components/checkbox-tree/CheckboxTreeItemContent.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleTrigger.tsx","../src/components/checkbox-tree/CheckboxTreeItem.tsx","../src/components/checkbox-tree/CheckboxTree.tsx","../src/components/inline-message/InlineMessage.config.ts","../src/components/inline-message/InlineMessage.tsx","../src/components/label/Label.tsx","../src/components/list/List.tsx","../src/components/markdown-content/components/MarkdownCode.tsx","../src/components/markdown-content/components/MarkdownEmphasis.tsx","../src/components/markdown-content/components/MarkdownHeading.tsx","../src/components/markdown-content/components/MarkdownInlineCode.tsx","../src/components/markdown-content/components/MarkdownImage.tsx","../src/components/markdown-content/components/MarkdownLink.tsx","../src/components/markdown-content/components/MarkdownList.tsx","../src/components/markdown-content/components/MarkdownListItem.tsx","../src/components/markdown-content/components/MarkdownParagraph.tsx","../src/components/markdown-content/components/MarkdownStrong.tsx","../src/components/markdown-content/components/MarkdownText.tsx","../src/components/divider/Divider.tsx","../src/components/markdown-content/components/MarkdownThematicBreak.tsx","../src/components/link/Link.tsx","../src/components/field-wrapper/FieldDescription.tsx","../src/components/field-wrapper/FieldWrapper.tsx","../src/components/radio-button/RadioButton.tsx","../src/components/radio-button/RadioButtonGroup.tsx","../src/components/field-wrapper/InlineFieldWrapper.tsx","../src/components/form/useFormCustomContext.ts","../src/components/form/Form.tsx","../src/components/form/useFieldError.ts","../src/components/checkbox-field/CheckboxField.tsx","../src/components/chip/Chip.tsx","../src/components/chip/ChipGroup.tsx","../src/components/dismissible-group/DismissibleGroupRoot.tsx","../src/components/dismissible-group/DismissibleGroupItem.tsx","../src/components/dismissible-group/index.ts","../src/components/chip-dismissible-group/ChipDismissibleGroupItem.tsx","../src/components/chip-dismissible-group/ChipDismissibleGroupRoot.tsx","../src/components/chip-dismissible-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupItem.tsx","../src/utilities/radix-overrides/toggle-group/ToggleGroupRoot.tsx","../src/utilities/radix-overrides/toggle-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupRoot.tsx","../src/components/chip-toggle-group/index.ts","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxOption.tsx","../src/components/combobox/ComboboxPopover.tsx","../src/components/combobox/Combobox.tsx","../src/components/input/Input.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.tsx","../src/components/create-password-field/CreatePasswordField.tsx","../src/components/data-table/DataTable.types.ts","../src/components/data-table/getNewAsyncData.ts","../src/components/data-table/usePagination.ts","../src/components/data-table/useSorting.ts","../src/components/data-table/DataTableContext.tsx","../src/components/table/TableRow.tsx","../src/components/table/TableBody.tsx","../src/components/table/TableCell.tsx","../src/components/table/TableFooter.tsx","../src/components/table/TableFooterCell.tsx","../src/components/table/TableHeaderCell.tsx","../src/components/table/TableHeader.tsx","../src/components/table/useStickyColumnsCss.ts","../src/components/table/TableStickyColumnsContainer.tsx","../src/components/table/Table.tsx","../src/components/data-table/DataTableBody.tsx","../src/components/data-table/DataTableBulkActions.tsx","../src/components/data-table/DataTableDataCell.tsx","../src/components/empty-state/EmptyState.context.tsx","../src/components/empty-state/EmptyStateBody.tsx","../src/components/empty-state/EmptyStateImage.tsx","../src/components/empty-state/EmptyStateTitle.tsx","../src/components/empty-state/EmptyState.tsx","../src/components/data-table/DataTableEmptyState.tsx","../src/components/data-table/DataTableError.tsx","../src/utilities/optional-visually-hidden-wrapper/OptionalVisuallyHiddenWrapper.tsx","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.tsx","../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx","../src/components/data-table/DataTableHead.tsx","../src/components/data-table/DataTableHeaderCell.tsx","../src/components/data-table/DataTableLoading.tsx","../src/components/data-table/DataTableMetaData.tsx","../src/components/data-table/DataTableRowSelectionCheckbox.tsx","../src/components/data-table/DataTableRow.tsx","../src/components/data-table/DataTableTable.tsx","../src/components/sortable/Handle.tsx","../src/components/sortable/SortableHandle.tsx","../src/components/sortable/SortableItem.tsx","../src/components/sortable/SortableRoot.tsx","../src/components/sortable/index.ts","../src/components/data-table/drag-and-drop/DragAndDropTableRow.tsx","../src/components/data-table/drag-and-drop/DragAndDropTableBody.tsx","../src/components/data-table/drag-and-drop/DragAndDropTable.tsx","../src/components/pagination/pagination.constants.ts","../src/components/pagination/pagination.helper.ts","../src/components/pagination/pagination-context/PaginationContext.tsx","../src/components/pagination/usePagination.tsx","../src/components/pagination/PaginationNextButton.tsx","../src/components/pagination/PaginationPage.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/PaginationItems.tsx","../src/components/pagination/Pagination.tsx","../src/components/data-table/pagination/Pagination.tsx","../src/components/data-table/DataTable.tsx","../src/components/calendar/constants.ts","../src/components/calendar/Day.tsx","../src/components/calendar/Calendar.tsx","../src/components/popover/PopoverContent.tsx","../src/components/popover/Popover.tsx","../src/components/date-input/constants.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/utilities/style/backdrop-overlay.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogFooter.tsx","../src/components/dialog/DialogHeading.tsx","../src/components/dialog/Dialog.tsx","../src/components/drawer/Drawer.context.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerOverlay.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/Drawer.styles.ts","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerMain.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/Drawer.tsx","../src/components/dropdown-menu/DropdownMenuContent.tsx","../src/components/dropdown-menu/DropdownMenuItem.tsx","../src/components/dropdown-menu/DropdownMenuLinkItem.tsx","../src/components/dropdown-menu/DropdownMenuSeparator.tsx","../src/components/dropdown-menu/DropdownMenuTrigger.tsx","../src/components/dropdown-menu/DropdownMenu.tsx","../src/components/file-input/FileInput.tsx","../src/components/grid/Grid.tsx","../src/components/input-field/InputField.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/utilities/event/preventEvent.ts","../src/components/navigation/NavigationMenuDropdownContent.tsx","../src/components/navigation/NavigationMenu.styles.ts","../src/components/navigation/NavigationMenuDropdownTrigger.tsx","../src/components/navigation/NavigationMenuDropdown.tsx","../src/components/navigation/NavigationMenuLink.tsx","../src/components/navigation/NavigationMenuDropdownItem.tsx","../src/components/navigation/stitches.navigationMenu.colorscheme.config.ts","../src/components/navigation/NavigationMenu.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordion.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalList.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.tsx","../src/utilities/style/reset.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.styles.ts","../src/components/navigation-menu-vertical/NavigationMenuVerticalIcon.tsx","../src/components/side-bar/SideBarComponents.tsx","../src/components/side-bar/SideBarContext.tsx","../src/components/side-bar/SideBar.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalText.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx","../src/components/navigation-menu-vertical/stitches.navigationMenuVertical.colorscheme.config.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.tsx","../src/components/notification-badge/NotificationBadge.tsx","../src/components/number-input/NumberInputStepper.tsx","../src/components/number-input/NumberInput.tsx","../src/components/number-input-field/NumberInputField.tsx","../src/components/progress-bar/ProgressBar.tsx","../src/components/radio-button-field/RadioField.tsx","../src/components/radio-button-field/RadioButtonField.tsx","../src/components/radio-card/RadioCard.tsx","../src/components/radio-card/RadioCardGroup.tsx","../src/components/search-field/SearchField.tsx","../src/components/section-message/SectionMessageContext.tsx","../src/components/section-message/SectionMessageDescription.tsx","../src/components/section-message/SectionMessageDismiss.tsx","../src/components/section-message/SectionMessageIcon.tsx","../src/components/section-message/SectionMessageLayout.tsx","../src/components/section-message/SectionMessageTitle.tsx","../src/components/section-message/SectionMessage.tsx","../src/components/select/Select.tsx","../src/components/select-field/SelectField.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.tsx","../src/components/spacer/Spacer.tsx","../src/components/stepper/stepper-context/StepperContext.tsx","../src/components/stepper/StepperStepBack.tsx","../src/components/stepper/StepperStepForward.tsx","../src/components/stepper/StepperStepBullet.tsx","../src/components/stepper/StepperStepContainer.tsx","../src/components/stepper/StepperStepLabel.tsx","../src/components/stepper/types.ts","../src/components/stepper/StepperSteps.tsx","../src/components/stepper/Stepper.tsx","../src/components/switch/Switch.tsx","../src/components/tabs/TabsContent.tsx","../src/components/tabs/TabsTrigger.tsx","../src/utilities/hooks/useScrollPosition.ts","../src/utilities/hooks/useSize.ts","../src/components/tabs/TabsTriggerList.tsx","../src/components/tabs/Tabs.tsx","../src/components/textarea/Textarea.tsx","../src/components/textarea-field/TextareaField.tsx","../src/components/tile/Tile.tsx","../src/components/tile/TileGroup.tsx","../src/components/tile-interactive/TileInteractive.tsx","../src/components/tile-toggle-group/TileToggleGroupItem.tsx","../src/components/tile-toggle-group/TileToggleGroupRoot.tsx","../src/components/tile-toggle-group/index.ts","../src/components/toast/ToastProvider.tsx","../src/components/toast/ToastCloseButton.tsx","../src/components/toast/ToastIcon.tsx","../src/components/toast/Toast.tsx","../src/components/toggle-group/ToggleGroupItem.tsx","../src/components/toggle-group/ToggleGroupButton.tsx","../src/components/toggle-group/ToggleGroupRoot.tsx","../src/components/toggle-group/index.ts","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/stitches.topBar.colorscheme.config.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/video/Video.tsx","../src/components/keyboard-shortcut/KeyboardShortcut.tsx","../src/components/keyboard-shortcut/index.ts","../src/components/segmented-control/SegmentedControlContext.tsx","../src/components/segmented-control/SegmentedControlBadge.tsx","../src/components/segmented-control/SegmentedControlContent.tsx","../src/components/segmented-control/SegmentedControlDescription.tsx","../src/components/segmented-control/SegmentedControlHeading.tsx","../src/components/segmented-control/SegmentedControlIcon.tsx","../src/components/segmented-control/SegmentedControlItem.tsx","../src/components/segmented-control/SegmentedControlItemList.tsx","../src/components/segmented-control/SegmentedControlRoot.tsx","../src/components/segmented-control/SegmentedControl.tsx","../src/components/file-drop/FileDropContext.ts","../src/components/file-drop/FileDrop.tsx","../src/components/file-drop/useFileDrop.ts"],"sourcesContent":["import type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@atom-learning/stitches-react'\nimport { createStitches, defaultThemeMap } from '@atom-learning/stitches-react'\nimport type { Theme } from '@atom-learning/theme/lib/theme-atom'\nimport * as atomTheme from '@atom-learning/theme/lib/theme-atom'\nimport { themeMap } from '@atom-learning/theme/theme-map'\n\nexport const utils = {\n bg: (value: PropertyValue<'background'>) => ({\n background: value\n }),\n\n size: (value: ScaleValue<'size'> | number | string) => ({\n height: value,\n width: value\n }),\n\n p: (value: ScaleValue<'space'> | number | string) => ({\n padding: value\n }),\n pt: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value\n }),\n pr: (value: ScaleValue<'space'> | number | string) => ({\n paddingRight: value\n }),\n pb: (value: ScaleValue<'space'> | number | string) => ({\n paddingBottom: value\n }),\n pl: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value\n }),\n px: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value,\n paddingRight: value\n }),\n py: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value,\n paddingBottom: value\n }),\n\n m: (value: ScaleValue<'space'> | number | string) => ({\n margin: value\n }),\n mt: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value\n }),\n mr: (value: ScaleValue<'space'> | number | string) => ({\n marginRight: value\n }),\n mb: (value: ScaleValue<'space'> | number | string) => ({\n marginBottom: value\n }),\n ml: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value\n }),\n mx: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value,\n marginRight: value\n }),\n my: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value,\n marginBottom: value\n })\n}\n\nexport const media = {\n sm: '(min-width: 550px)',\n md: '(min-width: 800px)',\n lg: '(min-width: 1100px)',\n xl: '(min-width: 1350px)',\n reducedMotion: '(prefers-reduced-motion)',\n allowMotion: '(prefers-reduced-motion: no-preference)',\n hover: '(hover: hover)'\n}\n\nconst stitchesConfig = createStitches({\n theme: atomTheme as Theme,\n themeMap: {\n ...defaultThemeMap,\n ...themeMap\n },\n utils,\n media\n})\n\nexport const {\n css,\n getCssText,\n createTheme,\n globalCss,\n keyframes,\n styled,\n theme\n} = stitchesConfig\n\nexport type CSS = StitchesCSS<typeof stitchesConfig>\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { CSS, theme } from '../../stitches'\n\n/**\n * Generates a Stitches variants object based on keys in our theme.\n * You can use the string `$key` in your CSS object, which will be replaced\n * with the token from our theme.\n *\n *\n * @example\n * ```ts\n * createThemeVariants('space', { p: '$key' })\n *\n * // Result:\n * // {\n * // 0: { p: '$space$0' },\n * // 1: { p: '$space$1' },\n * // 2: { p: '$space$2' },\n * // ...etc\n * // }\n * ```\n */\nexport const createThemeVariants = <ThemeProperty extends keyof Theme>(\n themeProperty: ThemeProperty,\n styles: CSS\n): Record<keyof typeof theme[ThemeProperty], CSS> =>\n Object.keys(theme[themeProperty]).reduce(\n (acc, key) => ({\n ...acc,\n [key]: JSON.parse(\n JSON.stringify(styles).replace(/\\$key/g, `$${themeProperty}$${key}`)\n )\n }),\n {}\n ) as Record<keyof typeof theme[ThemeProperty], CSS>\n","import { styled } from '~/stitches'\n\nexport const Box = styled('div', {})\n\nBox.displayName = 'Box'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport type { CSS } from '~/stitches'\n\ntype CssWrapperProps = {\n css?: CSS\n children: React.ReactNode\n}\n\nexport const CSSWrapper = ({\n css,\n children\n}: CssWrapperProps): React.ReactElement =>\n css ? (\n <Box css={css}>{children}</Box>\n ) : (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n )\n\nCSSWrapper.displayName = 'CSSWrapper'\n","import { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nexport const noOverflowStyleBlock = (): {\n size: string\n borderRadius: string\n overflow: string\n} => {\n return {\n size: '100%',\n borderRadius: 'inherit',\n overflow: 'hidden'\n }\n}\n\nexport const NoOverflowWrapper = styled(Box, noOverflowStyleBlock())\n\nNoOverflowWrapper.displayName = 'NoOverflowWrapper'\n","import { CSS } from '~/stitches'\n\n/**\n * https://seek-oss.github.io/capsize/\n *\n * Capsize is an online tool (or npm package) that allows us to trim the whitespace above capital letters and below the baseline.\n * The following utility returns pseudo elements for use in a `styled()` function.\n * Using the tool above, choose a font, pass a font-size and line-height, and get a value to use as an offset for the whitespace. e.g.\n *\n * styled('p', {\n * fontFamily: 'Inter',\n * fontSize: 16,\n * lineHeight: 1.5,\n * ...capsize('-0.3864em') // this value is a result of the font family, size and line-height\n * })\n *\n */\nexport const capsize = (\n before: number,\n after?: number\n): Record<string, CSS> => ({\n '&::before': {\n content: \"''\",\n mb: `-${before}em`,\n display: 'table'\n },\n '&::after': {\n content: \"''\",\n mt: `-${after || before}em`,\n display: 'table'\n }\n})\n","import { toHex } from 'color2k'\n\ntype Icons = keyof typeof icons\n\nconst icons = {\n chevron: (color: string): string =>\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" stroke=\"${color}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" color=\"${color}\"><polyline points=\"6 10 12 16 18 10\"/></svg>`,\n search: (color: string): string =>\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" stroke=\"${color}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" color=\"${color}\"><path d=\"M14.4121122,14.4121122 L20,20\"></path><circle cx=\"10\" cy=\"10\" r=\"6\"></circle></svg>`\n}\n\n// convert hsl theme value to hex\n// svg doesn't support hsl in attributes\n// encode icon and return as data uri\nexport const encodeBackgroundIcon = (color: string, icon: Icons): string =>\n `url(data:image/svg+xml;charset=US-ASCII,${encodeURIComponent(\n icons[icon](toHex(color))\n )})`\n","/*\n Focus styling for block element.\n*/\n\ntype focusVisibleStyleBlockPropsType = {\n position?: 'relative' | 'absolute' | 'fixed' | 'sticky'\n zIndex?: number\n boxShadow?: string\n}\n\ntype focusVisibleStyleBlockReturnType = {\n outline: 'none'\n position: string\n zIndex: number\n boxShadow: string\n}\n\nexport const focusVisibleStyleBlock = ({\n position = 'relative',\n zIndex = 1,\n boxShadow = ''\n}: focusVisibleStyleBlockPropsType = {}): focusVisibleStyleBlockReturnType => {\n return {\n outline: 'none',\n position: ['relative', 'absolute', 'fixed', 'sticky'].includes(position)\n ? position\n : 'relative',\n zIndex: zIndex > 1 ? zIndex : 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px${\n boxShadow ? `, ${boxShadow}` : ''\n }`\n }\n}\n","import { keyframes } from '~/stitches'\n\nexport const slideUpAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideRightAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(-2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\nexport const slideDownAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(-2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideLeftAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\n\nexport const fadeIn = keyframes({\n '0%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\nexport const fadeOut = keyframes({\n '0%': { opacity: 1 },\n '100%': { opacity: 0 }\n})\n\nexport const slideInOut = ({\n outPosition = { x: 0, y: 0 },\n inPosition = { x: 0, y: 0 }\n}: {\n outPosition?: { x: string | number; y: string | number }\n inPosition?: { x: string | number; y: string | number }\n}): {\n in: ReturnType<typeof keyframes>\n out: ReturnType<typeof keyframes>\n} => {\n const slideIn = keyframes({\n '0%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n },\n '100%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n }\n })\n\n const slideOut = keyframes({\n '0%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n },\n '100%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n }\n })\n\n return {\n in: slideIn,\n out: slideOut\n }\n}\n","/*\n * Utility function to allow for overriding responsive variants using logic provided via the `overrideFunction` argument.\n *\n * It was developed out of a design requirement to override and pass through size properties to the <Icon /> component; depending\n * on the size of its parent component. It could be used for various other props where we want to tweak the value but\n * maintain the flexibility of a stitches variant property (which allows for use either via a string or a breakpoint object)\n * Documentation on stitches responsive variants: https://stitches.dev/docs/breakpoints#responsive-variants\n *\n */\nexport const overrideStitchesVariantValue = (\n prop: any,\n overrideFunction: (any) => any\n) => {\n let overrideValue\n switch (typeof prop) {\n case 'object':\n overrideValue = {}\n Object.keys(prop).forEach((breakpoint) => {\n const propAtBreakpoint = prop[breakpoint]\n overrideValue[breakpoint] = propAtBreakpoint\n ? overrideFunction(propAtBreakpoint)\n : propAtBreakpoint\n })\n break\n default:\n overrideValue = overrideFunction(prop)\n }\n\n return overrideValue\n}\n","import { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst toIconSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const getFieldIconSize = (size: any) =>\n overrideStitchesVariantValue(size, (s) => toIconSize[s])\n","/* \n Disabled styling for elements.\n*/\n\nimport type { CSS } from '~/stitches'\n\nexport const disabledStyle = {\n opacity: 0.3,\n cursor: 'not-allowed'\n} as CSS\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities'\n\nconst open = keyframes({\n from: { height: 0 },\n to: { height: 'var(--radix-accordion-content-height)' }\n})\n\nconst close = keyframes({\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: 0 }\n})\n\nconst StyledContent = styled(Content, {\n border: 0,\n width: '100%',\n bg: '$base1',\n overflow: 'hidden',\n '&[data-state=\"open\"]': { borderRadius: '0 0 $0 $0' },\n\n '@allowMotion': {\n '&[data-state=\"open\"]': { animation: `${open} 300ms ease-out` },\n '&[data-state=\"closed\"]': { animation: `${close} 300ms ease-out` }\n }\n})\n\nexport const AccordionContent = ({\n children,\n css,\n ...remainingProps\n}: React.ComponentProps<typeof StyledContent>) => (\n <StyledContent {...remainingProps}>\n <CSSWrapper css={css}>{children}</CSSWrapper>\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const AccordionItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { createTheme } from '~/stitches'\n\nexport const colorSchemes = {}\n\nconst generateColors = ({ prefix, colorName, color0 = '' }) => {\n const colors = {}\n let i = 1\n if (color0) {\n colors[`${prefix}${i}`] = color0\n i++\n }\n let k = 1\n for (i; i <= 11; i++) {\n colors[`${prefix}${i}`] = `$${colorName}${k * 100}`\n k++\n }\n return colors\n}\n\ncolorSchemes['interactive-loContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n} as unknown as Theme)\n\ncolorSchemes['interactive-hiContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n} as unknown as Theme)\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme({\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n } as unknown as Theme)\n }\n )\n}\n\nexport const accents = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme({\n colors: generateColors({ prefix: 'accent', colorName, color0 })\n })\n }\n )\n}\n\ngenerateBase()\ngenerateAccent()\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { accents, bases, colorSchemes } from './stitches.colorscheme.config'\n\nexport type TcolorScheme = {\n base?: keyof typeof bases\n accent?: keyof typeof accents\n interactive?: 'loContrast' | 'hiContrast'\n}\n\ntype TColorSchemeOwnProps = TcolorScheme & {\n asChild?: boolean\n}\n\nconst StyledColorScheme = styled('div')\n\ntype TColorSchemeProps = React.ComponentProps<typeof StyledColorScheme> &\n TColorSchemeOwnProps\n\n/**\n * @experimental Component has not been finalised. Further design input required. Use with caution.\n */\nexport const ColorScheme: React.ForwardRefExoticComponent<TColorSchemeProps> =\n React.forwardRef(\n (\n {\n base = '',\n accent = '',\n interactive = '',\n className,\n asChild = false,\n ...rest\n },\n ref\n ) => {\n const c = [\n className,\n colorSchemes[`interactive-${interactive}`],\n colorSchemes[`accent-${accent}`],\n colorSchemes[`base-${base}`]\n ]\n .filter(Boolean)\n .join(' ')\n\n const Component = asChild ? Slot : StyledColorScheme\n return <Component ref={ref} className={c} {...rest} />\n }\n )\n\nColorScheme.displayName = 'ColorScheme'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nexport const StyledIcon = styled('svg', {\n display: 'inline-block',\n fill: 'none',\n flexShrink: 0,\n stroke: 'currentcolor',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n verticalAlign: 'middle',\n variants: {\n size: {\n sm: { size: '$1', strokeWidth: '1.5' },\n md: { size: '$2', strokeWidth: '1.75' },\n lg: { size: '$3', strokeWidth: '2' }\n }\n }\n})\n\ntype IconProps = Override<\n React.ComponentProps<typeof StyledIcon>,\n {\n is: React.FC<React.SVGProps<SVGSVGElement>>\n as?: never\n }\n>\n\nexport const Icon: React.ForwardRefExoticComponent<IconProps> =\n React.forwardRef(({ is: SVG, size = 'md', ...remainingProps }, ref) => (\n <StyledIcon\n size={size}\n aria-hidden=\"true\"\n {...remainingProps}\n as={SVG}\n ref={ref}\n />\n ))\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nimport { Icon } from '../icon'\n\nconst RotatingIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n },\n '[data-state=\"closed\"] > &': {\n transform: 'rotate(0deg)'\n }\n})\n\nconst StyledTrigger = styled(Trigger, {\n border: 0,\n py: '$3',\n px: '$4',\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n bg: '$interactive2',\n color: '$interactiveForeground',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:active, &:hover, &:focus-visible': {\n bg: '$interactive3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&[data-state=\"open\"]': {\n borderRadius: '$0 $0 0 0'\n },\n '&[data-state=\"closed\"]': {\n borderRadius: '$0'\n },\n variants: {\n arrowPosition: {\n left: {\n flexDirection: 'row-reverse',\n gap: '$2',\n justifyContent: 'flex-end'\n },\n right: {}\n }\n }\n})\n\nexport const AccordionTrigger = ({\n children,\n colorScheme = {},\n asChild,\n arrowPosition = 'right',\n ...remainingProps\n}: React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger\n asChild={asChild}\n arrowPosition={arrowPosition}\n {...remainingProps}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <RotatingIcon is={ChevronDown} data-testid=\"accordion-chevron\" />\n </>\n )}\n </StyledTrigger>\n </ColorScheme>\n)\n","import { Root } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AccordionContent } from './AccordionContent'\nimport { AccordionItem } from './AccordionItem'\nimport { AccordionTrigger } from './AccordionTrigger'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\ntype AccordionProps = React.ComponentProps<typeof StyledRoot> & {\n type: 'single' | 'multiple'\n}\n\ntype AccordionType = React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Content: typeof AccordionContent\n Trigger: typeof AccordionTrigger\n}\n\nexport const Accordion = React.forwardRef(\n ({ type = 'single', children, ...remainingProps }, ref) => (\n // eslint-disable-next-line\n // @ts-ignore TODO: Radix has an TS error that throws a warning if you pass multiple in. Needs to be fixed by the owner\n <StyledRoot ref={ref} type={type} {...remainingProps}>\n {children}\n </StyledRoot>\n )\n) as AccordionType\n\nAccordion.Item = AccordionItem\nAccordion.Content = AccordionContent\nAccordion.Trigger = AccordionTrigger\n\nAccordion.displayName = 'Accordion'\n","const MAX_Z_INDEX = 2147483647\nconst DIALOG_Z_INDEX = 1147483646\nconst DROPDOWN_Z_INDEX = 10\nconst TOOLTIP_Z_INDEX = 10\nconst POPOVER_Z_INDEX = 10\n\nexport {\n MAX_Z_INDEX,\n DIALOG_Z_INDEX,\n DROPDOWN_Z_INDEX,\n POPOVER_Z_INDEX,\n TOOLTIP_Z_INDEX\n}\n","import { Arrow, Content } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { TOOLTIP_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nconst StyledContent = styled(Content, {\n backgroundColor: '$grey900',\n borderRadius: '$0',\n boxShadow: '$0',\n color: 'white',\n fontFamily: '$body',\n fontSize: '$sm',\n lineHeight: 1.5,\n whiteSpace: 'normal',\n px: '$3',\n py: '$2',\n zIndex: TOOLTIP_Z_INDEX,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"delayed-open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '100px' },\n md: { maxWidth: '250px' },\n lg: { maxWidth: '400px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: '$grey900',\n '[data-align=\"end\"] &': { mr: '$2' },\n '[data-align=\"start\"] &': { ml: '$2' }\n})\n\ntype TooltipContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content>\n\nexport const TooltipContent = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}: TooltipContentProps) => (\n <StyledContent\n side={side}\n sideOffset={sideOffset}\n size={size}\n {...remainingProps}\n >\n {children}\n <StyledArrow />\n </StyledContent>\n)\n","import { Portal, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TooltipContent } from './TooltipContent'\n\ntype TooltipProps = React.ComponentProps<typeof Root>\n\nconst TooltipComponent = ({\n children,\n delayDuration = 350,\n ...remainingProps\n}: TooltipProps) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nexport const Tooltip = Object.assign(TooltipComponent, {\n Content: TooltipContent,\n Trigger: styled(Trigger, {}),\n Portal: Portal,\n Provider: Provider\n})\n\nTooltipComponent.displayName = 'Tooltip'\n","import * as React from 'react'\n\nimport { Tooltip } from '~/components/tooltip'\n\nexport type TOptionalTooltipWrapperProps = {\n hasTooltip?: boolean\n label?: React.ReactNode\n tooltipSide?: React.ComponentProps<typeof Tooltip.Content>['side']\n}\n\nexport const OptionalTooltipWrapper = ({\n hasTooltip,\n label,\n tooltipSide,\n children\n}: React.PropsWithChildren<TOptionalTooltipWrapperProps>) => {\n if (hasTooltip) {\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content side={tooltipSide}>{label}</Tooltip.Content>\n </Tooltip>\n )\n }\n\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>\n}\n\nOptionalTooltipWrapper.displayName = 'OptionalTooltipWrapper'\n","export const isExternalUrl = (url?: string) => {\n if (typeof window === 'undefined' || !url) return false\n\n const isAbsoluteUrl = /^https?:\\/\\//.test(url)\n return isAbsoluteUrl && new URL(url).origin !== window.location.origin\n}\n\nexport const getExternalAnchorProps = (url?: string) =>\n isExternalUrl(url) ? { target: '_blank', rel: 'noopener noreferrer' } : {}\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport type { TOptionalTooltipWrapperProps } from '~/utilities/optional-tooltip-wrapper'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { Icon } from '../icon/Icon'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'simple',\n css: {\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst getSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': { bg: active }\n }\n})\n\nconst getOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$1',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n neutral: {},\n primary: {},\n success: {},\n warning: {},\n danger: {}\n },\n appearance: {\n simple: {},\n outline: {},\n solid: {}\n },\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' }\n },\n isRounded: {\n true: {\n borderRadius: '$round'\n }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getSimpleVariant('neutral', '$grey700', '$primary900', '$primary1000'),\n getSimpleVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSimpleVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSimpleVariant('success', '$success', '$successMid', '$successDark'),\n getSimpleVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSimpleVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n\n getSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSolidVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSolidVariant('success', '$success', '$successMid', '$successDark'),\n getSolidVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n\n getOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getOutlineVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getOutlineVariant('success', '$success', '$successMid', '$successDark'),\n getOutlineVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getOutlineVariant('danger', '$danger', '$dangerMid', '$dangerDark')\n ]\n})\n\ntype ActionIconProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: string | React.ReactNode\n children: React.ReactNode\n label: string\n } & Omit<TOptionalTooltipWrapperProps, 'label'> &\n NavigatorActions\n>\n\nexport const ActionIcon: React.ForwardRefExoticComponent<ActionIconProps> =\n React.forwardRef(\n (\n {\n children,\n theme = 'primary',\n appearance = 'simple',\n size = 'sm',\n label,\n href,\n disabled,\n hasTooltip = true,\n tooltipSide,\n ...remainingProps\n },\n ref\n ) => {\n const INVALID_CHILDREN_MESSAGE = `A single ${Icon.displayName} component is permitted as a child of ${ActionIcon.displayName}`\n\n invariant(React.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE)\n\n const optionalLinkProps = href\n ? ({\n as: 'a',\n href: disabled ? null : href,\n onClick: undefined,\n 'aria-disabled': !!disabled\n } as const)\n : ({ type: 'button' } as const)\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\n {...getExternalAnchorProps(href)}\n {...remainingProps}\n aria-label={label}\n theme={theme}\n appearance={appearance}\n size={size}\n ref={ref}\n disabled={disabled}\n >\n {React.Children.map(children, (child) => {\n // TS needs this check for any following code to access child.type\n // even with optional chaining\n if (!React.isValidElement(child)) {\n throw new Error(INVALID_CHILDREN_MESSAGE)\n }\n\n invariant(\n child.type === Icon,\n `Children of type ${child?.type} aren't permitted. Only an ${Icon.displayName} component is allowed in ${ActionIcon.displayName}`\n )\n\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n }\n )\n })}\n </StyledButton>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nActionIcon.displayName = 'ActionIcon'\n","import { Content, Overlay, Portal } from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledAlertDialogOverlay = styled(Overlay, {\n backgroundColor: '$alpha600',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'fixed',\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n})\n\nconst StyledAlertDialogContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n '&:focus': {\n outline: 'none'\n },\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n sm: { width: '380px' },\n md: { width: '480px' },\n lg: { width: '600px' }\n }\n }\n})\n\nexport const AlertDialogContent = ({\n size = 'sm',\n ...remainingProps\n}: React.ComponentProps<typeof StyledAlertDialogContent>) => (\n <Portal>\n <StyledAlertDialogOverlay />\n <StyledAlertDialogContent size={size} {...remainingProps} />\n </Portal>\n)\n","import {\n Action,\n Cancel,\n Description,\n Root,\n Title,\n Trigger\n} from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AlertDialogContent } from './AlertDialogContent'\n\nconst StyledAlertDialog = styled(Root, {})\n\nexport const AlertDialog = Object.assign(StyledAlertDialog, {\n Description: Description,\n Title: Title,\n Action: Action,\n Cancel: Cancel,\n Content: AlertDialogContent,\n Trigger: Trigger\n})\n\nAlertDialog.displayName = 'AlertDialog'\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMountedRef = () => {\n const isMountedRef = useRef<boolean>()\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n })\n\n return isMountedRef\n}\n","import { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\n\nconst createVariants = <T extends GlobalValue[]>(\n variants: T,\n fn: (string: T[number]) => CSS\n) => {\n return variants.reduce(\n (prev, variant) => ({ ...prev, [variant]: fn(variant) }),\n {} as Record<T[number], CSS>\n )\n}\n\nconst globalValues = [\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset'\n] as const\n\n/*\n * The following type is partially a hack to get the rest of the createVariants array parameter to be recognised as const.\n * Thus giving is the correct types generated for these generated variant props.\n * No clue how we can do it cleaner.\n * Mad props to: Elliot for getting this to working as is.\n *\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype GlobalValue = typeof globalValues[number] | (string & {})\n\nexport const Flex = styled('div', {\n display: 'flex',\n variants: {\n direction: createVariants(\n [...globalValues, 'row', 'row-reverse', 'column', 'column-reverse'],\n (v) => {\n return { flexDirection: v }\n }\n ),\n wrap: createVariants(\n [...globalValues, 'nowrap', 'wrap', 'wrap-reverse'],\n (v) => {\n return { flexWrap: v }\n }\n ),\n // Why is both `start` and `flex-start` valid values? Answer: https://csslayout.news/whats-the-difference-between-the-alignment-values-of-start-flex-start-and-self-start/\n justify: createVariants(\n [\n ...globalValues,\n 'normal',\n 'unsafe',\n 'safe',\n 'start',\n 'center',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch'\n ],\n (v) => {\n return { justifyContent: v }\n }\n ),\n align: createVariants(\n [\n ...globalValues,\n 'normal',\n 'unsafe',\n 'safe',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch'\n ],\n (v) => {\n return { alignItems: v }\n }\n ),\n gap: createThemeVariants('space', { gap: '$key' })\n }\n})\n\nFlex.displayName = 'Flex'\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { CSS, keyframes, styled } from '~/stitches'\n\nconst FadeInOut = keyframes({\n '0%': { opacity: 0 },\n '30%': { opacity: 1 },\n '50%': { opacity: 1 },\n '80%': { opacity: 0 },\n '100%': { opacity: 0 }\n})\n\nconst Dot = styled('div', {\n animationName: `${FadeInOut}`,\n animationDuration: '1s',\n animationFillMode: 'both',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n '&:nth-child(1)': {\n animationDelay: '-300ms'\n },\n '&:nth-child(2)': {\n animationDelay: '-150ms'\n },\n '&:nth-child(3)': {\n animationDelay: 0\n },\n\n variants: {\n size: {\n sm: { size: '4px', mx: '2px' },\n md: { size: '6px', mx: '2px' },\n lg: { size: '8px', mx: '3px' }\n }\n }\n})\n\ntype LoaderProps = {\n message?: string\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n}\n\nexport const Loader = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}: LoaderProps) => (\n <Flex\n css={{\n justifyContent: 'center',\n // Stitches doesn't recognise CSS as the right type here. The Modulz team doesn't know why.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(css as any)\n }}\n role=\"alert\"\n {...props}\n >\n <VisuallyHidden.Root>{message}</VisuallyHidden.Root>\n <Dot size={size} />\n <Dot size={size} />\n <Dot size={size} />\n </Flex>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { StyledIcon } from '~/components/icon'\nimport { Loader } from '~/components/loader'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nconst getButtonOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': disabledStyle,\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n textDecoration: 'none',\n color: interact\n },\n '&:not([disabled]):active': { color: active }\n }\n})\n\nconst getButtonSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: text,\n '&[disabled]': disabledStyle,\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n bg: interact,\n color: text\n },\n '&:not([disabled]):active': { bg: active }\n }\n})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$1',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 600,\n justifyContent: 'center',\n p: 'unset',\n textDecoration: 'none',\n transition: 'all 100ms ease-out',\n whiteSpace: 'nowrap',\n width: 'max-content',\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n primary: {},\n secondary: {},\n success: {},\n warning: {},\n danger: {},\n neutral: {}\n },\n appearance: {\n solid: {},\n outline: {}\n },\n size: {\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n height: '$3',\n px: '$4',\n gap: '$2',\n [`& ${StyledIcon}`]: { size: 16 }\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 20 }\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 22 }\n },\n xl: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$6',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 22 }\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getButtonSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonSolidVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonSolidVariant('success', '$success', '$successMid', '$successDark'),\n getButtonSolidVariant('warning', '$warning', '$warningMid', '$warningDark', '$grey900'),\n getButtonSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getButtonSolidVariant('neutral', 'white', opacify('white', -0.1), opacify('white', -0.25), '$primary800'),\n getButtonOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonOutlineVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonOutlineVariant('neutral', 'white', opacify('white', -0.2), opacify('white', -0.35))\n ],\n\n defaultVariants: {\n appearance: 'solid',\n size: 'md',\n theme: 'primary'\n }\n})\n\nconst LoaderContentsWrapper = styled('span', {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n visibility: 'hidden',\n variants: {\n size: {\n sm: { gap: '$2' },\n md: { gap: '$3' },\n lg: { gap: '$3' },\n xl: { gap: '$3' }\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst WithLoader = ({\n size,\n children\n}: React.ComponentProps<typeof LoaderContentsWrapper>) => (\n <>\n <Loader css={{ position: 'absolute' }} />\n <LoaderContentsWrapper size={size}>{children}</LoaderContentsWrapper>\n </>\n)\n\ntype ButtonProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: React.ComponentType | React.ElementType\n children: React.ReactNode\n href?: string\n isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button: React.ForwardRefExoticComponent<ButtonProps> =\n React.forwardRef(\n ({ children, as, href, isLoading = false, onClick, ...rest }, ref) => (\n <StyledButton\n as={as || (href ? 'a' : undefined)}\n href={href}\n isLoading={isLoading}\n onClick={!isLoading ? onClick : undefined}\n type={!href ? 'button' : undefined}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n >\n {isLoading ? (\n <WithLoader size={rest.size}>{children}</WithLoader>\n ) : (\n children\n )}\n </StyledButton>\n )\n )\n\nButton.displayName = 'Button'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const StyledHeading = styled('h2', {\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontFamily: '$body',\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2078)\n },\n md: {\n fontFamily: '$body',\n fontSize: '$xl',\n lineHeight: 1.14,\n ...capsize(0.2078)\n },\n lg: {\n fontFamily: '$display',\n fontSize: '$2xl',\n lineHeight: 1.08,\n letterSpacing: '0.01em',\n ...capsize(0.1405, 0.2405)\n },\n xl: {\n fontFamily: '$display',\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.16, 0.26)\n },\n xxl: {\n fontFamily: '$display',\n fontSize: '$4xl',\n lineHeight: 1,\n ...capsize(0.1, 0.2)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n },\n weight: {\n medium: { fontWeight: 500 },\n bold: { fontWeight: 700 }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentProps<typeof StyledHeading>,\n {\n as?:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Heading: React.ForwardRefExoticComponent<HeadingProps> =\n React.forwardRef(\n ({ size = 'md', weight = 'bold', ...remainingProps }, ref) => (\n <StyledHeading\n ref={ref}\n size={size}\n weight={weight}\n {...remainingProps}\n />\n )\n )\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const textVariants = {\n size: {\n xs: { fontSize: '$xs', lineHeight: 1.6, ...capsize(0.4364) },\n sm: { fontSize: '$sm', lineHeight: 1.53, ...capsize(0.4056) },\n md: { fontSize: '$md', lineHeight: 1.5, ...capsize(0.3864) },\n lg: { fontSize: '$lg', lineHeight: 1.52, ...capsize(0.3983) },\n xl: { fontSize: '$xl', lineHeight: 1.42, ...capsize(0.3506) }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n }\n}\n\nexport const getTextVariant: (options: {\n size: keyof typeof textVariants.size\n noCapsize?: boolean\n}) => CSS = ({ size, noCapsize }) => ({\n ...textVariants.size[size],\n ...textVariants.noCapsize[`${noCapsize}`]\n})\n\nexport const StyledText = styled('p', {\n m: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: {\n ...textVariants,\n weight: {\n normal: { fontWeight: 400 },\n bold: { fontWeight: 600 }\n },\n family: {\n body: { fontFamily: '$body' },\n display: { fontFamily: '$display' },\n mono: { fontFamily: '$mono' }\n }\n }\n})\n\ntype TextProps = Override<\n React.ComponentProps<typeof StyledText>,\n {\n as?:\n | 'blockquote'\n | 'caption'\n | 'dd'\n | 'dt'\n | 'figcaption'\n | 'li'\n | 'p'\n | 'span'\n | 'legend'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Text: React.ForwardRefExoticComponent<TextProps> =\n React.forwardRef(\n ({ size = 'md', family = 'body', ...remainingProps }, ref) => (\n <StyledText size={size} family={family} {...remainingProps} ref={ref} />\n )\n )\n\nText.displayName = 'Text'\n","import { Danger, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../../icon'\n\nexport type AlertDialogTheme = 'info' | 'warning' | 'danger' | 'success'\n\nconst StyledIcon = styled(Icon, {\n alignSelf: 'flex-start',\n variants: {\n theme: {\n info: { color: '$info' },\n warning: { color: '$warningMid' },\n danger: { color: '$danger', transform: 'rotate(180deg)' },\n success: { color: '$success' }\n }\n }\n})\n\nconst iconMap: Record<\n AlertDialogTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n info: Info,\n warning: Danger,\n danger: Info,\n success: OkCircle\n}\n\nexport const AlertDialogIcon = ({ theme }: { theme: AlertDialogTheme }) => (\n <StyledIcon theme={theme} is={iconMap[theme]} />\n)\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Flex } from '../../flex'\nimport { Heading } from '../../heading'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport { AlertDialogIcon } from './AlertDialogIcon'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert = ({\n title,\n size,\n theme,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n confirmElement,\n cancelElement,\n ...remainingProps\n}: AlertDialogContentProps) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n size={size}\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n css={{\n display: 'flex',\n flexDirection: 'column',\n maxHeight: '90vh',\n gap: '$5'\n }}\n {...remainingProps}\n >\n <Flex css={{ alignItems: 'center', gap: '$2' }}>\n {theme && <AlertDialogIcon theme={theme} />}\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mr: '$4' }}>\n {title}\n </Heading>\n </Flex>\n {description && (\n <Text\n as={AlertDialog.Description}\n css={{ display: 'flex', overflowY: 'auto' }}\n >\n {description}\n </Text>\n )}\n <Flex gap=\"2\" justify=\"end\" wrap=\"wrap\">\n <AlertDialog.Cancel asChild>\n {cancelElement ||\n (cancelActionText && (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n onClick={() => onAction?.(false)}\n >\n {cancelActionText}\n </Button>\n ))}\n </AlertDialog.Cancel>\n <AlertDialog.Action asChild>\n {confirmElement || (\n <Button size=\"sm\" onClick={() => onAction?.(true)}>\n {confirmActionText}\n </Button>\n )}\n </AlertDialog.Action>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog>\n)\n","import { uid } from 'uid'\n\nimport { alert } from './types'\n\ntype State = alert[]\ntype Action =\n | { type: 'ADD'; payload: alert }\n | { type: 'REMOVE'; payload: string }\n\nexport const initialState = []\n\nexport const reducer = (state: State, action: Action): alert[] => {\n switch (action.type) {\n case 'ADD':\n return [...state, { ...action.payload, id: uid() }]\n case 'REMOVE':\n return state.filter(({ id }) => id !== action.payload)\n default:\n return state\n }\n}\n","import * as React from 'react'\n\nimport { useIsMountedRef } from '~/utilities/hooks/useIsMountedRef'\n\nimport { Alert } from './AlertDialog'\nimport { initialState, reducer } from './reducer'\nimport type { alert } from './types'\n\ntype context = {\n showAlert: (data: alert) => void\n}\n\nconst AlertContext = React.createContext<context>({\n showAlert: () => null\n})\n\nexport const AlertProvider = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const [alerts, dispatch] = React.useReducer(reducer, initialState)\n const isMountedRef = useIsMountedRef()\n\n return (\n <AlertContext.Provider\n value={{\n showAlert: (content: alert) =>\n dispatch({\n payload: content,\n type: 'ADD'\n })\n }}\n >\n {Boolean(alerts.length) && (\n <Alert\n {...alerts[0]}\n key={alerts[0].id}\n onClose={() => {\n if (isMountedRef.current)\n dispatch({\n payload: alerts[0].id,\n type: 'REMOVE'\n })\n }}\n />\n )}\n {children}\n </AlertContext.Provider>\n )\n}\n\nexport const useAlert = (): context => {\n const context = React.useContext(AlertContext)\n\n if (context === undefined) {\n throw new Error('useAlert must be used within a AlertProvider')\n }\n\n return context\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\nimport { AvatarRootContext } from './Avatar'\n\nconst toIconSize = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg',\n xxl: 'lg'\n}\n\nexport const AvatarIcon = ({ is }: { is: typeof Icon }) => {\n const rootContext = React.useContext(AvatarRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return <Icon size={iconSize} is={is} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\nexport const StyledImage = styled('img', {\n verticalAlign: 'middle',\n maxWidth: '100%',\n variants: {\n fluid: {\n true: {\n '&[width]': {\n width: 'auto'\n },\n '&[width][height]': {\n height: 'auto'\n },\n '&[src$=\".svg\"]': {\n width: '100%',\n height: 'auto',\n maxWidth: 'none'\n }\n }\n }\n }\n})\n\ntype ImageProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledImage>,\n {\n as?: never\n }\n>\n\nexport const Image = (props: ImageProps) => <StyledImage {...props} />\n\nImage.displayName = 'Image'\n","import { User } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Box } from '../box'\nimport { Icon } from '../icon'\n\nexport const AvatarPlaceholder = () => {\n return (\n <Box css={{ position: 'relative', size: '100%' }}>\n <Icon is={User} css={{ size: '100%' }} />\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Text } from '../text'\nimport { AvatarRootContext } from './Avatar'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst toTextSize = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n xl: 'md',\n xxl: 'lg'\n}\n\nexport const AvatarInitial = () => {\n const rootContext = React.useContext(AvatarRootContext)\n const { name, size } = rootContext\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n if (!name) {\n return <AvatarPlaceholder />\n }\n\n return (\n <Text size={textSize} css={{ color: '$grey800' }}>\n {name[0].toUpperCase()}\n </Text>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { AvatarInitial } from './AvatarInitial'\n\nconst StyledImage = styled(Image, {\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const AvatarImage = ({ src, alt }: { src: string; alt: string }) => {\n if (!src) {\n return <AvatarInitial />\n }\n\n return <StyledImage src={src} alt={alt} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nimport { AvatarIcon } from './AvatarIcon'\nimport { AvatarImage } from './AvatarImage'\nimport { AvatarInitial } from './AvatarInitial'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst avatarRootStyles = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '$grey800',\n borderRadius: '$round',\n border: '2px solid $grey200',\n backgroundColor: '$white',\n overflow: 'hidden',\n variants: {\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' },\n xl: { size: '$6' },\n xxl: { size: '$7' }\n }\n }\n}\n\nconst StyledDiv = styled('div', avatarRootStyles)\nconst StyledButton = styled('button', {\n all: 'unset',\n ...avatarRootStyles,\n '&:not([disabled])': {\n '&:hover': {\n borderColor: '$grey800',\n backgroundColor: '$grey100'\n },\n '&:active': {\n borderColor: '$primary800',\n backgroundColor: '$grey200'\n },\n '&:focus-visible': focusVisibleStyleBlock()\n },\n '&[disabled]': {\n opacity: '30%',\n cursor: 'not-allowed'\n }\n})\n\ntype TAvatarProps = React.ComponentProps<\n typeof StyledDiv | typeof StyledButton\n> & { name?: string } & (\n | {\n onClick: React.MouseEventHandler<HTMLButtonElement>\n disabled?: boolean\n }\n | { onClick?: never; disabled?: never }\n )\n\nexport type TAvatarRootContext = {\n name?: TAvatarProps['name']\n size: TAvatarProps['size']\n}\n\nexport const AvatarRootContext = React.createContext<TAvatarRootContext>({\n name: undefined,\n size: 'lg'\n})\n\nexport const AvatarRootProvider = ({ children, name, size }: TAvatarProps) => {\n const value = React.useMemo<TAvatarRootContext>(\n () => ({ name, size }),\n [name, size]\n )\n\n return (\n <AvatarRootContext.Provider value={value}>\n {children}\n </AvatarRootContext.Provider>\n )\n}\n\nexport const AvatarRoot = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}: TAvatarProps) => (\n <AvatarRootProvider name={name} size={size}>\n {onClick ? (\n <StyledButton\n size={size}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}\n css={{ cursor: disabled ? 'auto' : 'pointer' }}\n >\n {children}\n </StyledButton>\n ) : (\n <StyledDiv size={size}>{children}</StyledDiv>\n )}\n </AvatarRootProvider>\n)\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Image: AvatarImage,\n Initial: AvatarInitial,\n Placeholder: AvatarPlaceholder,\n Icon: AvatarIcon\n})\n\nAvatarRoot.displayName = 'Avatar'\n","import * as React from 'react'\n\nexport const useCallbackRef: () => [\n React.MutableRefObject<HTMLElement | null>,\n (HTMLElement) => void\n] = () => {\n const elRef = React.useRef<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) elRef.current = el\n }, [])\n\n return [elRef, setElRefCallback]\n}\n\nexport const useCallbackRefState: () => [\n HTMLElement | null,\n (HTMLElement) => void\n] = () => {\n const [elRef, setElRef] = React.useState<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) setElRef(el)\n }, [])\n\n return [elRef, setElRefCallback]\n}\n","import * as React from 'react'\n\nimport type { TBadgeProps } from './Badge'\n\ntype TBadgeProviderProps = {\n size?: TBadgeProps['size']\n overflow?: TBadgeProps['overflow']\n}\n\ntype TBadgeContext = TBadgeProviderProps & {\n isOverflowing?: boolean\n setIsOverflowing?: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BadgeContext = React.createContext<TBadgeContext>({})\n\nexport const BadgeProvider = ({\n size,\n overflow,\n children\n}: React.PropsWithChildren<TBadgeProviderProps>) => {\n const [isOverflowing, setIsOverflowing] = React.useState(false)\n\n const value = React.useMemo<TBadgeContext>(\n () => ({ size, overflow, isOverflowing, setIsOverflowing }),\n [size, overflow, isOverflowing, setIsOverflowing]\n )\n return <BadgeContext.Provider value={value}>{children}</BadgeContext.Provider>\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledBadgeIcon = styled(Icon)\n\nexport const BadgeIcon = (\n props: React.ComponentProps<typeof StyledBadgeIcon>\n) => <StyledBadgeIcon size=\"sm\" {...props} />\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\ntype TUseResizeObserverOptions = {\n elements: (HTMLElement | undefined | null)[]\n onResize: (entries: ResizeObserverEntry[]) => void\n delay?: number\n}\n\ntype TUseResizeObserverOutput = ResizeObserver | null\n\nconst createResizeObserver = (\n callback: (entries: ResizeObserverEntry[]) => void\n) => {\n try {\n return new ResizeObserver(callback)\n } catch {\n return null\n }\n}\n\nexport const useResizeObserver = ({\n delay = 500,\n elements,\n onResize\n}: TUseResizeObserverOptions): TUseResizeObserverOutput => {\n const observer = React.useMemo(\n () => createResizeObserver(debounce(delay, onResize)),\n [delay, onResize]\n )\n\n React.useEffect(() => {\n elements.forEach((element) => {\n if (element) {\n observer?.observe(element)\n }\n })\n\n return () => {\n elements.forEach((element) => element && observer?.unobserve(element))\n }\n }, [observer, elements])\n\n return observer\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useResizeObserver } from '~/utilities/hooks/useResizeObserver'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BadgeContext } from './Badge.context'\n\n/*\n * Instead of sticking a resize observer on every `BadgeText`\n * regardless of overflow type, split the resize logic into a component.\n * Basically call the hook conditionally, only for the version with\n * the `overflow === 'ellipsis'` which needs it.\n * This saves us from initialising a resize observer for any badge which doesn't need it.\n */\nconst ObserveBadgeTextOverflow: React.VFC<{ elRef: HTMLElement | null }> = ({\n elRef\n}) => {\n const { setIsOverflowing } = React.useContext(BadgeContext)\n\n useResizeObserver({\n delay: 0,\n elements: [elRef],\n onResize: () => {\n if (!elRef?.scrollWidth || !elRef?.clientWidth) return\n setIsOverflowing?.(elRef.scrollWidth > elRef.clientWidth)\n }\n })\n\n return null\n}\n\nconst StyledBadgeText = styled(Text, {\n py: '$0',\n variants: {\n overflow: {\n ellipsis: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n },\n wrap: {\n whiteSpace: 'wrap'\n }\n }\n }\n})\n\ntype TBadgeTextProps = React.ComponentProps<typeof StyledBadgeText>\n\nconst toTextSize = {\n xs: 'sm',\n sm: 'md',\n md: 'md'\n}\n\nexport const BadgeText = ({\n children,\n ...rest\n}: TBadgeTextProps): JSX.Element => {\n // We need the return type here. Otherwise typsecript breaks when this type is used in Badge. Do not remove unless you want to tackle that issue again.\n const { size: badgeSize, overflow } = React.useContext(BadgeContext)\n\n const size = React.useMemo(\n () => overrideStitchesVariantValue(badgeSize, (s) => toTextSize[s]),\n [badgeSize]\n )\n\n const [elRef, setElRef] = useCallbackRefState()\n\n return (\n <>\n {overflow === 'ellipsis' && <ObserveBadgeTextOverflow elRef={elRef} />}\n <StyledBadgeText\n noCapsize\n size={size}\n overflow={overflow}\n ref={setElRef}\n {...rest}\n >\n {children}\n </StyledBadgeText>\n </>\n )\n}\n","import { createTheme } from '~/stitches'\n\n/*\n * Semantic themes\n */\n\nconst info = createTheme({\n colors: {\n textSubtle: '$infoMid',\n backgroundSubtle: '$infoLight',\n textBold: '#FFF',\n backgroundBold: '$info',\n textOnWhite: '$info'\n }\n})\n\nconst neutral = createTheme({\n colors: {\n textSubtle: '$grey900',\n backgroundSubtle: '$grey100',\n textBold: '#FFF',\n backgroundBold: '$grey800',\n textOnWhite: '$grey800'\n }\n})\n\nconst success = createTheme({\n colors: {\n textSubtle: '$successMid',\n backgroundSubtle: '$successLight',\n textBold: '#FFF',\n backgroundBold: '$success',\n textOnWhite: '$success'\n }\n})\n\nconst danger = createTheme({\n colors: {\n textSubtle: '$dangerMid',\n backgroundSubtle: '$dangerLight',\n textBold: '#FFF',\n backgroundBold: '$danger',\n textOnWhite: '$danger'\n }\n})\n\nconst warning = createTheme({\n colors: {\n textSubtle: '$warningText',\n backgroundSubtle: '$warningLight',\n textBold: '$grey1000',\n backgroundBold: '$warning',\n textOnWhite: '$warning'\n }\n})\n\n/*\n * Non-semantic themes\n */\nconst primary = createTheme({\n colors: {\n textSubtle: '$primary1000',\n backgroundSubtle: '$primary200',\n textSubtleHover: '$primary1100',\n backgroundSubtleHover: '$primary300',\n\n textBold: 'white',\n backgroundBold: '$primary800',\n backgroundBoldHover: '$primary900',\n\n textOnWhite: '$primary800'\n }\n})\n\nconst grey = createTheme({\n colors: {\n textSubtle: '$grey1000',\n backgroundSubtle: '$grey200',\n textSubtleHover: '$grey1100',\n backgroundSubtleHover: '$grey300',\n\n textBold: '#FFF',\n backgroundBold: '$grey800',\n backgroundBoldHover: '$grey900',\n\n textOnWhite: '$grey800'\n }\n})\n\nconst blue = createTheme({\n colors: {\n textSubtle: '$blue1000',\n backgroundSubtle: '$blue200',\n textSubtleHover: '$blue1100',\n backgroundSubtleHover: '$blue300',\n\n textBold: '#FFF',\n backgroundBold: '$blue800',\n backgroundBoldHover: '$blue900',\n\n textOnWhite: '$blue800'\n }\n})\n\nconst pink = createTheme({\n colors: {\n textSubtle: '$pink1000',\n backgroundSubtle: '$pink200',\n textSubtleHover: '$pink1100',\n backgroundSubtleHover: '$pink300',\n\n textBold: '#FFF',\n backgroundBold: '$pink800',\n backgroundBoldHover: '$pink900',\n\n textOnWhite: '$pink800'\n }\n})\n\nconst purple = createTheme({\n colors: {\n textSubtle: '$purple1000',\n backgroundSubtle: '$purple200',\n textSubtleHover: '$purple1100',\n backgroundSubtleHover: '$purple300',\n\n textBold: '#FFF',\n backgroundBold: '$purple800',\n backgroundBoldHover: '$purple900',\n\n textOnWhite: '$purple700'\n }\n})\n\nconst cyan = createTheme({\n colors: {\n textSubtle: '$cyan1000',\n backgroundSubtle: '$cyan200',\n textSubtleHover: '$cyan1100',\n backgroundSubtleHover: '$cyan300',\n\n textBold: '#FFF',\n backgroundBold: '$cyan800',\n backgroundBoldHover: '$cyan900',\n\n textOnWhite: '$cyan800'\n }\n})\n\nconst green = createTheme({\n colors: {\n textSubtle: '$green1000',\n backgroundSubtle: '$green200',\n textSubtleHover: '$green1100',\n backgroundSubtleHover: '$green300',\n\n textBold: '#FFF',\n backgroundBold: '$green800',\n backgroundBoldHover: '$green900',\n\n textOnWhite: '$green800'\n }\n})\n\nconst magenta = createTheme({\n colors: {\n textSubtle: '$magenta1000',\n backgroundSubtle: '$magenta200',\n textSubtleHover: '$magenta1100',\n backgroundSubtleHover: '$magenta300',\n\n textBold: '#FFF',\n backgroundBold: '$magenta800',\n backgroundBoldHover: '$magenta900',\n\n textOnWhite: '$magenta800'\n }\n})\n\nconst red = createTheme({\n colors: {\n textSubtle: '$red1000',\n backgroundSubtle: '$red200',\n textSubtleHover: '$red1100',\n backgroundSubtleHover: '$red400',\n\n textBold: '#FFF',\n backgroundBold: '$red800',\n backgroundBoldHover: '$red900',\n\n textOnWhite: '$red800'\n }\n})\n\nconst teal = createTheme({\n colors: {\n textSubtle: '$teal1000',\n backgroundSubtle: '$teal200',\n textSubtleHover: '$teal1100',\n backgroundSubtleHover: '$teal300',\n\n textBold: '#FFF',\n backgroundBold: '$teal800',\n backgroundBoldHover: '$teal900',\n\n textOnWhite: '$teal800'\n }\n})\n\nconst orange = createTheme({\n colors: {\n textSubtle: '$orange1000',\n backgroundSubtle: '$orange200',\n textSubtleHover: '$orange1100',\n backgroundSubtleHover: '$orange300',\n\n textBold: '$grey1200',\n backgroundBold: '$orange600',\n backgroundBoldHover: '$orange700',\n\n textOnWhite: '$orange1000'\n }\n})\n\nconst yellow = createTheme({\n colors: {\n textSubtle: '$yellow1000',\n backgroundSubtle: '$yellow200',\n textSubtleHover: '$yellow1100',\n backgroundSubtleHover: '$yellow300',\n\n textBold: '$grey1200',\n backgroundBold: '$yellow500',\n backgroundBoldHover: '$yellow600',\n\n textOnWhite: '$yellow900'\n }\n})\n\nconst lime = createTheme({\n colors: {\n textSubtle: '$lime1000',\n backgroundSubtle: '$lime200',\n textSubtleHover: '$lime1100',\n backgroundSubtleHover: '$lime300',\n\n textBold: '$grey1200',\n backgroundBold: '$lime600',\n backgroundBoldHover: '$lime700',\n\n textOnWhite: '$lime900'\n }\n})\n\nconst lapis = createTheme({\n colors: {\n textSubtle: '$lapis1000',\n backgroundSubtle: '$lapis200',\n textSubtleHover: '$lapis1100',\n backgroundSubtleHover: '$lapis300',\n\n textBold: 'white',\n backgroundBold: '$lapis700',\n backgroundBoldHover: '$lapis900',\n\n textOnWhite: '$lapis700'\n }\n})\n\nconst maroon = createTheme({\n colors: {\n textSubtle: '$maroon1000',\n backgroundSubtle: '$maroon200',\n textSubtleHover: '$maroon1100',\n backgroundSubtleHover: '$maroon300',\n\n textBold: 'white',\n backgroundBold: '$maroon800',\n backgroundBoldHover: '$maroon900',\n\n textOnWhite: '$maroon700'\n }\n})\n\nconst marsh = createTheme({\n colors: {\n textSubtle: '$marsh1000',\n backgroundSubtle: '$marsh200',\n textSubtleHover: '$marsh1100',\n backgroundSubtleHover: '$marsh300',\n\n textBold: 'white',\n backgroundBold: '$marsh800',\n backgroundBoldHover: '$marsh900',\n\n textOnWhite: '$marsh700'\n }\n})\n\nexport const badgeSemanticNames = [\n 'info',\n 'neutral',\n 'success',\n 'danger',\n 'warning'\n]\n\nexport const colorSchemes = {\n info,\n neutral,\n success,\n danger,\n warning,\n primary,\n grey,\n blue,\n pink,\n purple,\n cyan,\n green,\n magenta,\n red,\n teal,\n orange,\n yellow,\n lime,\n lapis,\n maroon,\n marsh\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\n\nimport { BadgeContext, BadgeProvider } from './Badge.context'\nimport { BadgeIcon } from './BadgeIcon'\nimport { BadgeText } from './BadgeText'\nimport {\n badgeSemanticNames,\n colorSchemes as badgeColorSchemes\n} from './stitches.badge.colorscheme.config'\n\nconst StyledBadge = styled(Flex, {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n minWidth: 0,\n border: '1px solid #FFFFFF',\n fontFamily: '$body',\n '& > *:not(:last-child)': {\n mr: '$1'\n },\n variants: {\n emphasis: {\n white: {\n color: '$textOnWhite',\n background: 'white'\n },\n subtle: {\n color: '$textSubtle',\n background: '$backgroundSubtle'\n },\n bold: {\n color: '$textBold',\n background: '$backgroundBold'\n }\n },\n size: {\n xs: {\n px: '$1'\n },\n sm: {\n px: '$1',\n py: '$0'\n },\n md: {\n px: '$2',\n py: '$1'\n }\n },\n\n isClickable: {\n true: {\n cursor: 'pointer'\n }\n },\n highlighted: {\n true: {}\n }\n },\n compoundVariants: [\n {\n isClickable: true,\n emphasis: 'white',\n css: {\n '&:hover': {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'subtle',\n css: {\n '&:hover': {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'bold',\n css: {\n '&:hover': {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n },\n {\n emphasis: 'white',\n highlighted: true,\n css: {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n },\n {\n emphasis: 'subtle',\n highlighted: true,\n css: {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n },\n {\n emphasis: 'bold',\n highlighted: true,\n css: {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n ]\n})\n\nexport type TBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n theme?: keyof typeof badgeColorSchemes\n overflow?: React.ComponentProps<typeof BadgeText>['overflow']\n}\n\ntype TBadgeInnerProps = Omit<TBadgeProps, 'size' | 'overflow'>\n\nconst BadgeInner: React.ForwardRefExoticComponent<TBadgeInnerProps> =\n React.forwardRef(\n ({ theme = 'info', emphasis = 'subtle', children, ...rest }, ref) => {\n const { size, overflow, isOverflowing } = React.useContext(BadgeContext)\n const [badgeElRef, setBadgeElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => badgeElRef as HTMLDivElement)\n\n const label = badgeElRef?.textContent\n\n const isInfoOnly = badgeSemanticNames.includes(theme)\n\n const isClickable =\n Object.keys(rest).includes('onClick') ||\n Object.keys(rest).includes('href')\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={overflow === 'ellipsis' && isOverflowing}\n label={label}\n >\n <StyledBadge\n role=\"status\"\n emphasis={emphasis}\n size={size}\n {...rest}\n className={badgeColorSchemes[theme]}\n ref={setBadgeElRef}\n isClickable={isClickable && !isInfoOnly}\n >\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <BadgeText>{child}</BadgeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <BadgeIcon {...child.props} />\n }\n return child\n })}\n </StyledBadge>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nconst BadgeComponent: React.ForwardRefExoticComponent<TBadgeProps> =\n React.forwardRef(({ size = 'sm', overflow = 'wrap', ...rest }, ref) => {\n return (\n <BadgeProvider size={size} overflow={overflow}>\n <BadgeInner {...rest} ref={ref} />\n </BadgeProvider>\n )\n })\n\nexport const Badge = Object.assign(BadgeComponent, {\n Icon: BadgeIcon,\n Text: BadgeText\n})\n\nBadgeComponent.displayName = 'Badge'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nexport interface IDismissibleRootContext {\n disabled?: boolean\n isDismissed: boolean\n setIsDismissed: (boolean) => void\n onDismiss: () => void\n}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => undefined,\n onDismiss: () => undefined\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n dismissed?: boolean\n onDismiss?: () => void\n}\n\nexport const DismissibleRootProvider = ({\n dismissed: controlledIsDismissed,\n children,\n disabled,\n onDismiss = () => null\n}: React.PropsWithChildren<IDismissibleRootProps>) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n\n const value = React.useMemo<IDismissibleRootContext>(() => {\n const isControlled = typeof controlledIsDismissed === 'boolean'\n return {\n disabled,\n isDismissed: isControlled\n ? (controlledIsDismissed as boolean)\n : isDismissed,\n setIsDismissed: isControlled ? () => null : setIsDismissed,\n onDismiss\n }\n }, [disabled, isDismissed, onDismiss, controlledIsDismissed])\n\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleRootInternalProps {\n asChild?: boolean\n}\n\nconst DismissibleRootInternal = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleRootInternalProps>) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n if (isDismissed) return null\n\n const props = { ...(disabled && { [`data-disabled`]: '' }), ...rest }\n const Component = asChild ? Slot : 'div'\n return <Component {...props} />\n}\n\nexport const DismissibleRoot = ({\n disabled = false,\n dismissed,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<\n IDismissibleRootInternalProps & IDismissibleRootProps\n>) => (\n <DismissibleRootProvider\n dismissed={dismissed}\n disabled={disabled}\n onDismiss={onDismiss}\n >\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\n\nDismissibleRoot.displayName = 'Dismissible'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { DismissibleRootContext } from './DismissibleRoot'\n\nexport interface IDismissibleTriggerProps {\n asChild?: boolean\n}\n\nconst DefaultTrigger = (props) => (\n <button type=\"button\" {...props}>\n Dismiss\n </button>\n)\n\nexport const DismissibleTrigger = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleTriggerProps>) => {\n const context = React.useContext(DismissibleRootContext)\n if (context === undefined) {\n throw new Error(\n 'Dismissible.Trigger can only be used within a Dismissible.Item'\n )\n }\n\n const { setIsDismissed, disabled, onDismiss } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\n onDismiss?.()\n }\n\n const props = {\n disabled: disabled,\n onClick: handleDismiss,\n ...rest\n }\n\n const Component = asChild ? Slot : DefaultTrigger\n return <Component {...props} />\n}\n","import { DismissibleRoot } from './DismissibleRoot'\nimport { DismissibleTrigger } from './DismissibleTrigger'\n\nexport const Dismissible = Object.assign(DismissibleRoot, {\n Trigger: DismissibleTrigger\n})\n","import * as React from 'react'\n\nimport { TBannerContainerProps } from './BannerContainer'\n\nexport type TBannerProviderProps = Pick<\n TBannerContainerProps,\n 'size' | 'emphasis'\n>\n\ntype TBannerContextValue = TBannerProviderProps & {\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BannerContext = React.createContext<TBannerContextValue>({\n emphasis: 'minimal',\n size: {\n '@initial': 'sm',\n '@md': 'md'\n },\n hasDismiss: false,\n setHasDismiss: () => null\n})\n\nexport const useBannerContext = (): TBannerContextValue => {\n const context = React.useContext(BannerContext)\n\n if (context === undefined) {\n throw new Error('useBannerContext must be used within a BannerProvider')\n }\n\n return context\n}\n\nexport const BannerProvider = ({\n emphasis = 'minimal',\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n children\n}: React.PropsWithChildren<TBannerProviderProps>) => {\n const [hasDismiss, setHasDismiss] = React.useState(false)\n const value = React.useMemo<TBannerContextValue>(\n () => ({ emphasis, size, hasDismiss, setHasDismiss }),\n [emphasis, size, hasDismiss, setHasDismiss]\n )\n return (\n <BannerContext.Provider value={value}>{children}</BannerContext.Provider>\n )\n}\n\nBannerProvider.displayName = 'Banner'\n","import { Dismissible } from '../dismissible'\nimport { BannerProvider } from './BannerContext'\n\nexport const Banner = Object.assign(BannerProvider, {\n Dismiss: Dismissible.Trigger\n})\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerRegularButton = (\n props: React.ComponentProps<typeof Button>\n) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size={size}\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n {...props}\n />\n )\n}\n\nBannerRegularButton.displayName = 'BannerRegularButton'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\nimport { BannerRegularButton } from './BannerRegularButton'\n\nconst MAX_ALLOWED_CHILDREN = 2\n\nconst toGap = {\n sm: 2,\n md: 4\n}\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nexport const BannerRegularActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[s]),\n [size]\n )\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n invariant(\n React.Children.count(children) <= MAX_ALLOWED_CHILDREN,\n `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`\n )\n\n return (\n <Flex gap={gap} direction={direction} {...props}>\n {React.Children.map(children, (child, index) => {\n // if child is undefined or null, React.isValidElement returns false and hence error is thrown.\n // This line will prevent that from happening\n if (child == null) return child\n\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to ${BannerRegularActions.displayName} is not a valid element`\n )\n }\n\n invariant(\n child.type === BannerRegularButton,\n `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`\n )\n\n const propsToInject: Partial<\n React.ComponentProps<typeof BannerRegularButton>\n > = {\n // Override button appearance - make the second button outlined\n appearance: index > 0 ? 'outline' : undefined\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof BannerRegularButton>\n >,\n propsToInject\n )\n })}\n </Flex>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\n","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport { useBannerContext } from './BannerContext'\n\nconst StyledBannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$3',\n overflow: 'hidden',\n color: '$foreground',\n '--banner-heading-color': '$colors$foreground',\n '--banner-text-color': '$colors$grey900',\n variants: {\n emphasis: {\n bold: {\n background: '$base11',\n color: '$foreground7plus',\n '--banner-heading-color': '$colors$foreground7plus',\n '--banner-text-color': '$colors$grey100'\n },\n subtle: {\n background: '$base3'\n },\n minimal: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<\n typeof StyledBannerContainer\n> & {\n colorScheme?: TcolorScheme\n} & React.ComponentProps<typeof Dismissible>\n\nexport const BannerContainer = ({\n colorScheme = {},\n onDismiss,\n dismissed,\n ...props\n}: TBannerContainerProps): JSX.Element => {\n const { emphasis } = useBannerContext()\n\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild onDismiss={onDismiss} dismissed={dismissed}>\n <StyledBannerContainer role=\"banner\" emphasis={emphasis} {...props} />\n </Dismissible>\n </ColorScheme>\n )\n}\n","import * as React from 'react'\n\nimport { BannerContainer } from '../BannerContainer'\n\ntype TBannerRegularContainerProps = Omit<\n React.ComponentProps<typeof BannerContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerRegularContainer = (props: TBannerRegularContainerProps) => (\n <BannerContainer {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n width: '62%',\n flexGrow: 1,\n variants: {\n size: {\n sm: {\n p: '$4'\n },\n md: {\n p: '$24',\n pr: '$5'\n }\n }\n }\n})\n\nexport const BannerRegularContent = (\n props: React.ComponentProps<typeof Container>\n) => {\n const { size } = useBannerContext()\n\n return <Container size={size} {...props} />\n}\n\nBannerRegularContent.displayName = 'BannerRegularContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst toActionIconSize = {\n sm: 'md',\n md: 'sm'\n}\n\nconst StyledDismiss = styled(ActionIcon, {\n zIndex: 1,\n position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\ntype BannerRegularDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerRegularDismiss = ({\n label = 'dismiss',\n ...rest\n}: BannerRegularDismissProps) => {\n const { size, setHasDismiss } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n const actionIconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toActionIconSize[s]),\n [size]\n )\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size={actionIconSize}\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n appearance=\"solid\"\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerRegularDismiss.displayName = 'BannerRegularDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Heading } from '../../heading'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledHeading = styled(Heading, {\n mb: '$4',\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularHeading = (\n props: React.ComponentProps<typeof Heading>\n) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"md\"\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularHeading.displayName = 'BannerRegularHeading'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n position: 'relative',\n overflow: 'hidden',\n width: '38%',\n variants: {\n size: {\n sm: {\n display: 'none'\n },\n md: {\n display: 'block'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n position: 'absolute',\n maxWidth: 'auto',\n width: '100%',\n height: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerRegularImage = (\n props: React.ComponentProps<typeof Image>\n) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerRegularImage.displayName = 'BannerRegularImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-text-color)',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularText.displayName = 'BannerRegularText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerRegularActions } from './BannerRegularActions'\nimport { BannerRegularButton } from './BannerRegularButton'\nimport { BannerRegularContainer } from './BannerRegularContainer'\nimport { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nconst BannerRegularComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof BannerRegularContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerRegularContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerRegular = Object.assign(BannerRegularComponent, {\n Content: BannerRegularContent,\n Heading: BannerRegularHeading,\n Text: BannerRegularText,\n Actions: BannerRegularActions,\n Image: BannerRegularImage,\n Button: BannerRegularButton,\n Dismiss: BannerRegularDismiss\n})\n\nBannerRegularComponent.displayName = 'BannerRegular'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledBannerSlimActions = styled(Flex, {\n variants: {\n size: {\n sm: { width: '100%' },\n md: { width: 'auto' }\n }\n }\n})\n\nexport const BannerSlimActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n return (\n <StyledBannerSlimActions size={size} gap={4} {...props}>\n {children}\n </StyledBannerSlimActions>\n )\n}\n\nBannerSlimActions.displayName = 'BannerSlimActions'\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerSlimButton = ({\n css,\n ...props\n}: React.ComponentProps<typeof Button>) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size=\"md\"\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n css={{ ml: 'auto', ...css }}\n {...props}\n />\n )\n}\n\nBannerSlimButton.displayName = 'BannerSlimButton'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BannerContainer } from '../BannerContainer'\nimport { useBannerContext } from '../BannerContext'\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nconst toAlign = {\n sm: 'flex-start',\n md: 'center'\n}\n\nconst toWrap = {\n sm: 'wrap',\n md: 'nowrap'\n}\n\nconst StyledBannerSlimContainer = styled(BannerContainer, {\n p: '$4',\n variants: {\n sizeWorkaround: {\n sm: {},\n md: {\n px: '$24'\n }\n }\n }\n})\n\ntype TBannerSlimContainerProps = Omit<\n React.ComponentProps<typeof StyledBannerSlimContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerSlimContainer = (\n props: TBannerSlimContainerProps\n): JSX.Element => {\n const { size } = useBannerContext()\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n const align = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toAlign[s]),\n [size]\n )\n\n const wrap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toWrap[s]),\n [size]\n )\n\n return (\n <StyledBannerSlimContainer\n direction={direction}\n align={align}\n sizeWorkaround={size}\n gap={4}\n wrap={wrap}\n {...props}\n />\n )\n}\n\nBannerSlimContainer.displayName = 'BannerSlimContainer'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\n\nconst StyledBannerSlimContent = styled(Flex, {\n width: '100%'\n})\n\nexport const BannerSlimContent = (\n props: React.ComponentProps<typeof StyledBannerSlimContent>\n) => <StyledBannerSlimContent align=\"center\" gap={4} {...props} />\n\nBannerSlimContent.displayName = 'BannerSlimContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledDismiss = styled(ActionIcon, {\n variants: {\n emphasis: {\n bold: {\n color: 'white !important'\n }\n },\n containerSize: {\n sm: { position: 'absolute', top: '$4', right: '$4' },\n md: { position: 'static' }\n }\n }\n})\n\ntype TBannerSlimDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerSlimDismiss = ({\n label = 'dismiss',\n ...rest\n}: TBannerSlimDismissProps): JSX.Element => {\n const { size, setHasDismiss, emphasis } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size=\"md\"\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n containerSize={size}\n emphasis={emphasis as TBannerSlimDismissProps['emphasis']}\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerSlimDismiss.displayName = 'BannerSlimDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n overflow: 'hidden',\n borderRadius: '$round',\n alignSelf: 'flex-start',\n flexShrink: 0,\n variants: {\n size: {\n sm: {\n size: '$4'\n },\n md: {\n size: '$5'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n maxWidth: 'auto',\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerSlimImage = (props: React.ComponentProps<typeof Image>) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerSlimImage.displayName = 'BannerSlimImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerSlimText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size=\"md\"\n weight=\"bold\"\n containerSize={size}\n hasDismiss={hasDismiss}\n noCapsize\n {...props}\n />\n )\n}\n\nBannerSlimText.displayName = 'BannerSlimText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerContainer } from '../BannerContainer'\nimport { BannerSlimActions } from './BannerSlimActions'\nimport { BannerSlimButton } from './BannerSlimButton'\nimport { BannerSlimContainer } from './BannerSlimContainer'\nimport { BannerSlimContent } from './BannerSlimContent'\nimport { BannerSlimDismiss } from './BannerSlimDismiss'\nimport { BannerSlimImage } from './BannerSlimImage'\nimport { BannerSlimText } from './BannerSlimText'\n\nconst BannerSlimComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof Banner> &\n React.ComponentProps<typeof BannerContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerSlimContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerSlim = Object.assign(BannerSlimComponent, {\n Content: BannerSlimContent,\n Text: BannerSlimText,\n Image: BannerSlimImage,\n Button: BannerSlimButton,\n Dismiss: BannerSlimDismiss,\n Actions: BannerSlimActions\n})\n\nBannerSlimComponent.displayName = 'BannerSlim'\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport {\n ButtonBack as BaseButtonBack,\n ButtonNext as BaseButtonNext\n} from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { CSS, styled } from '~/stitches'\n\nconst buttonStyles = {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n size: '$5',\n top: '50%',\n transform: 'translateY(-50%)',\n transition: 'color 0.15s ease-in-out',\n '&:hover': {\n color: '$primary900'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&:disabled': {\n color: '$grey200'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious = (props: { css: CSS }) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext = (props: { css: CSS }) => (\n <StyledButtonNext {...props}>\n <Icon is={ChevronRight} />\n </StyledButtonNext>\n)\n","import { DotGroup } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselPagination = styled(DotGroup, {\n justifyContent: 'center',\n '& button': {\n bg: '$grey600',\n border: 'none',\n borderRadius: '50%',\n cursor: 'pointer',\n mx: '$1',\n p: '$1',\n size: '$space$3',\n transition: 'all 100ms ease-in',\n '&[class*=\"selected\"]': {\n bg: '$primary800'\n },\n '&:hover, &:focus': {\n bg: '$primary900'\n }\n }\n})\n","import { Slide as BaseSlide } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nconst StyledSlide = styled(BaseSlide, {})\n\nexport const CarouselSlide = ({\n children,\n ...remainingProps\n}: React.ComponentProps<typeof StyledSlide> & { index: number }) => (\n <StyledSlide {...remainingProps} tag=\"div\">\n {/* padding to create the gap between slides */}\n <Box css={{ px: '$3' }}>{children}</Box>\n </StyledSlide>\n)\n","import { Slider as BaseSlider } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselSlider = styled(BaseSlider, {\n cursor: 'grab',\n ml: '50%',\n overflow: 'hidden',\n transform: 'translateX(-50%)',\n '& [class*=\"sliderTray_\"]': {\n p: 'unset',\n m: 'unset',\n transition: 'transform .5s cubic-bezier(.645,.045,.355,1)'\n },\n '& [class*=\"slide_\"]': {\n float: 'left',\n pb: '0 !important'\n },\n '& [class*=\"slideInner\"]': {\n display: 'flex',\n justifyContent: 'center'\n },\n variants: {\n overflow: {\n true: {\n overflow: 'visible'\n }\n }\n }\n})\n","import { CarouselContext, CarouselProvider } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { CSSWrapper } from '~/utilities'\n\nimport { CarouselArrowNext, CarouselArrowPrevious } from './CarouselArrows'\nimport { CarouselPagination } from './CarouselPagination'\nimport { CarouselSlide } from './CarouselSlide'\nimport { CarouselSlider } from './CarouselSlider'\n\ntype CarouselProps = {\n slideHeight: number\n slideWidth: number\n numSlides: number\n}\n\nexport const CarouselComponent = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}: CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>) => (\n <CSSWrapper css={css}>\n <CarouselProvider\n naturalSlideWidth={slideWidth}\n naturalSlideHeight={slideHeight}\n totalSlides={numSlides}\n {...props}\n >\n {children}\n </CarouselProvider>\n </CSSWrapper>\n)\n\n/**\n * Documentation about the hook usage\n * https://github.com/express-labs/pure-react-carousel#hooks-and-usecontext\n */\nexport const useCarousel = () => React.useContext(CarouselContext)\n\nexport const Carousel = Object.assign(CarouselComponent, {\n ArrowNext: CarouselArrowNext,\n ArrowPrevious: CarouselArrowPrevious,\n Pagination: CarouselPagination,\n Slide: CarouselSlide,\n Slider: CarouselSlider\n})\n\nCarouselComponent.displayName = 'Carousel'\n","import { Minus, Ok } from '@atom-learning/icons'\nimport * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\n\nconst StyledIndicator = styled(RadixCheckbox.Indicator, {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n})\n\nconst StyledCheckbox = styled(RadixCheckbox.Root, {\n appearance: 'none',\n position: 'relative',\n backgroundColor: 'transparent',\n border: '1px solid $colors$grey800',\n borderRadius: '3px',\n color: 'white',\n cursor: 'pointer',\n size: '$1',\n p: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 50ms ease-out',\n flexShrink: 0,\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[disabled]': disabledStyle,\n variants: {\n state: {\n error: {\n borderColor: '$danger'\n }\n },\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n }\n})\n\nconst toIconSize = {\n md: 'sm',\n lg: 'md'\n}\n\nexport const Checkbox: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledCheckbox>\n> = React.forwardRef(({ size = 'md', checked, ...rest }, ref) => {\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return (\n <StyledCheckbox ref={ref} checked={checked} size={size} {...rest}>\n <StyledIndicator asChild>\n <Icon\n is={checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3'\n }}\n size={iconSize}\n />\n </StyledIndicator>\n </StyledCheckbox>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupMountedContextValue = {\n mounted: CheckboxGroupItemValue[]\n handleItemMountedChange: (\n newItemMounted: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\nexport const CheckboxGroupMountedContext =\n React.createContext<CheckboxGroupMountedContextValue>({\n mounted: [],\n handleItemMountedChange: () => null\n })\n\nexport const CheckboxGroupMountedProvider = (props) => {\n const { handleItemMountedChange: handleItemMountedChangeFurtherUpContext } =\n React.useContext(CheckboxGroupMountedContext)\n\n const [mounted, setMounted] = React.useState<CheckboxGroupItemValue[]>([])\n const handleItemMountedChange = React.useCallback(\n (newItemMounted, itemValue) => {\n handleItemMountedChangeFurtherUpContext?.(newItemMounted, itemValue)\n setMounted((prevMounted) => {\n const newMountedSet = new Set(prevMounted)\n newItemMounted\n ? newMountedSet.add(itemValue)\n : newMountedSet.delete(itemValue)\n const newMounted = Array.from(newMountedSet)\n return newMounted\n })\n },\n [handleItemMountedChangeFurtherUpContext]\n )\n\n const value = React.useMemo<CheckboxGroupMountedContextValue>(\n () => ({ mounted, handleItemMountedChange }),\n [mounted, handleItemMountedChange]\n )\n\n return <CheckboxGroupMountedContext.Provider value={value} {...props} />\n}\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupCheckedContextValue = {\n checked: CheckboxGroupItemValue[]\n handleItemCheckedChange: (\n newItemChecked: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\ntype CheckboxGroupCheckedContextProps = {\n checked?: CheckboxGroupCheckedContextValue['checked']\n defaultChecked?: CheckboxGroupCheckedContextValue['checked']\n onCheckedChange?: (\n checked: CheckboxGroupCheckedContextValue['checked']\n ) => void\n}\n\nexport const CheckboxGroupCheckedContext =\n React.createContext<CheckboxGroupCheckedContextValue>({\n checked: [],\n handleItemCheckedChange: () => null\n })\n\nconst generateNewCheckedFn = (\n currentChecked: CheckboxGroupCheckedContextValue['checked']\n) => {\n return (newItemChecked, itemValue) => {\n const newCheckedSet = new Set(currentChecked)\n newItemChecked\n ? newCheckedSet.add(itemValue)\n : newCheckedSet.delete(itemValue)\n const newChecked = Array.from(newCheckedSet)\n return newChecked\n }\n}\n\nexport const CheckboxGroupCheckedProvider = ({\n checked: controlledChecked,\n defaultChecked = [],\n onCheckedChange,\n ...rest\n}: React.PropsWithChildren<CheckboxGroupCheckedContextProps>) => {\n const [checked, setChecked] = React.useState(defaultChecked)\n\n const handleItemControlledCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n if (!controlledChecked) return () => null\n const newCheckedFn = generateNewCheckedFn(controlledChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n },\n [onCheckedChange, controlledChecked]\n )\n\n const handleItemCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n setChecked((prevChecked) => {\n const newCheckedFn = generateNewCheckedFn(prevChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n return newChecked\n })\n },\n [onCheckedChange]\n )\n\n const value = React.useMemo<CheckboxGroupCheckedContextValue>(() => {\n const isControlled = Array.isArray(controlledChecked)\n return {\n checked: isControlled\n ? (controlledChecked as CheckboxGroupCheckedContextValue['checked']) // We're literally JUST checking it above but TS still flags it, wrongly, so casting\n : checked,\n handleItemCheckedChange: isControlled\n ? handleItemControlledCheckedChange\n : handleItemCheckedChange\n }\n }, [\n checked,\n handleItemCheckedChange,\n handleItemControlledCheckedChange,\n controlledChecked\n ])\n\n return <CheckboxGroupCheckedContext.Provider value={value} {...rest} />\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupAllItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'checked' | 'defaultChecked'\n>\n\nexport const CheckboxGroupAllItem = ({\n onCheckedChange,\n title = 'all',\n ...rest\n}: CheckboxGroupAllItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { mounted: mountedItems } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n mountedItems.forEach((value) => {\n handleItemCheckedChangeContext(newChecked, value)\n })\n onCheckedChange?.(newChecked)\n }\n\n const isAllChecked = (() => {\n if (!checkedItems.length || !mountedItems.length) return false\n\n if (mountedItems.every((mountedItem) => checkedItems.includes(mountedItem)))\n return true\n\n if (mountedItems.some((mountedItem) => checkedItems.includes(mountedItem)))\n return 'indeterminate'\n\n return false\n })()\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={isAllChecked}\n title={title}\n {...rest}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'onCheckedChange' | 'checked' | 'defaultChecked'\n> & {\n onCheckedChange?: (newChecked: boolean) => void\n}\n\nexport const CheckboxGroupItem = ({\n value,\n title,\n onCheckedChange,\n ...rest\n}: CheckboxGroupItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { handleItemMountedChange } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n handleItemCheckedChangeContext(newChecked, value)\n onCheckedChange?.(newChecked)\n }\n\n React.useEffect(() => {\n handleItemMountedChange(true, value)\n return () => {\n handleItemMountedChange(false, value)\n }\n }, [handleItemMountedChange, value])\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={checkedItems.includes(value)}\n title={title ?? String(value)}\n {...rest}\n />\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { CheckboxGroupMountedProvider } from './CheckboxGroup.context'\n\ntype CheckboxGroupSubProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n}\nconst StyledSlot = styled(Slot)\n\nexport const CheckboxGroupSub = ({\n asChild = false,\n ...rest\n}: CheckboxGroupSubProps): JSX.Element => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport {\n CheckboxGroupCheckedProvider,\n CheckboxGroupMountedProvider\n} from './CheckboxGroup.context'\nimport type { CheckboxGroupItemValue } from './CheckboxGroup.types'\nimport { CheckboxGroupAllItem } from './CheckboxGroupAllItem'\nimport { CheckboxGroupItem } from './CheckboxGroupItem'\nimport { CheckboxGroupSub } from './CheckboxGroupSub'\n\ntype CheckboxGroupRootProps = Omit<\n React.ComponentProps<typeof Box>,\n 'defaultChecked'\n> & {\n checked?: CheckboxGroupItemValue[]\n onCheckedChange?: (checked: CheckboxGroupItemValue[]) => void\n defaultChecked?: CheckboxGroupItemValue[]\n asChild?: boolean\n}\n\nconst StyledSlot = styled(Slot)\n\nconst CheckboxGroupRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n asChild = false,\n ...rest\n}: CheckboxGroupRootProps) => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupCheckedProvider\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n >\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n </CheckboxGroupCheckedProvider>\n )\n}\n\nexport const CheckboxGroup = Object.assign(CheckboxGroupRoot, {\n Item: CheckboxGroupItem,\n AllItem: CheckboxGroupAllItem,\n Sub: CheckboxGroupSub\n})\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\ntype TreeListItemProps = React.ComponentProps<typeof Flex>\n\nconst StyledTreeListItem = styled(Flex, {\n '&:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const TreeListItem = React.forwardRef(\n (\n props: TreeListItemProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <StyledTreeListItem\n as=\"li\"\n gap={2}\n align=\"center\"\n {...props}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"li\"`\n ref={ref}\n role=\"treeitem\"\n />\n )\n }\n)\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeCollapsibleContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const TreeCollapsibleContext =\n React.createContext<TreeCollapsibleContextValue>({})\nconst TreeCollapsibleProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <TreeCollapsibleContext.Provider value={{ triggerRef, setTriggerRef }}>\n {children}\n </TreeCollapsibleContext.Provider>\n )\n}\n\nconst StyledCollapsibleTreeItemRoot = styled(Root, {\n width: '100%'\n})\n\ntype TreeCollapsibleProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof StyledCollapsibleTreeItemRoot>\nexport const TreeCollapsible = React.forwardRef(\n (\n props: TreeCollapsibleProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <TreeListItem ref={ref}>\n <TreeCollapsibleProvider>\n <StyledCollapsibleTreeItemRoot {...props} />\n </TreeCollapsibleProvider>\n </TreeListItem>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(Flex, {\n width: '100%',\n p: 0,\n m: 0,\n listStyle: 'none',\n '& &': {\n pl: '$space$4'\n }\n})\n\ntype TreeListProps = Omit<React.ComponentProps<typeof Flex>, 'direction'>\n\nexport const TreeList: React.ForwardRefExoticComponent<TreeListProps> =\n React.forwardRef((props, ref) => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"ul\"`\n <StyledList as=\"ul\" ref={ref} {...props} direction=\"column\" />\n ))\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeList } from './TreeList'\n\nconst StyledTreeCollapsibleContent = styled(Content, {\n '&[data-state=\"open\"]': {},\n '&[data-state=\"closed\"]': {\n display: 'none'\n }\n})\n\ntype TreeCollapsibleContentProps = React.ComponentProps<\n typeof StyledTreeCollapsibleContent\n> &\n React.ComponentProps<typeof TreeList>\n\nexport const TreeCollapsibleContent: React.ForwardRefExoticComponent<TreeCollapsibleContentProps> =\n React.forwardRef(({ children, ...rest }, ref): JSX.Element => {\n const { triggerRef } = React.useContext(TreeCollapsibleContext)\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledTreeCollapsibleContent\n onKeyDown={handleOnKeydown}\n {...rest}\n asChild\n >\n <TreeList ref={ref} role=\"group\">\n {children}\n </TreeList>\n </StyledTreeCollapsibleContent>\n )\n })\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledTreeIcon = styled(Icon, {\n flexShrink: 0,\n alignSelf: 'start',\n my: '$1'\n})\nexport const TreeIcon = (\n props: React.ComponentProps<typeof StyledTreeIcon>\n): JSX.Element => <StyledTreeIcon size=\"md\" {...props} />\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\ntype TStyledTreeTextProps = React.ComponentProps<typeof Text>\n\nconst StyledTreeText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n py: '$0',\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n})\n\nexport const TreeText = (props: TStyledTreeTextProps): JSX.Element => {\n return <StyledTreeText size=\"md\" as=\"span\" {...props} noCapsize />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeIcon } from './TreeIcon'\nimport { TreeText } from './TreeText'\n\nconst StyledItemContent = styled(Flex, {\n width: '100%',\n position: 'relative',\n minHeight: '$3',\n pl: '$6'\n})\n\ntype TreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const TreeItemContent = React.forwardRef(\n (\n { children, ...rest }: TreeItemContentProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ): JSX.Element => {\n return (\n <StyledItemContent gap={2} align=\"center\" ref={ref} {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <TreeText>{child}</TreeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <TreeIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n }\n)\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon, StyledIcon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeItemContent } from './TreeItemContent'\n\nconst StyledTreeCollapsibleTrigger = styled(TreeItemContent, {\n cursor: 'pointer'\n})\n\nconst StyledActionIcon = styled(ActionIcon, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none',\n [`${StyledIcon}`]: {\n transition: 'transform 300ms'\n },\n [`&[data-state=\"closed\"] > ${StyledIcon}`]: {\n transform: 'rotate(-90deg)'\n },\n [`&[data-state=\"open\"] > ${StyledIcon}`]: {\n transform: 'rotate(0deg)'\n }\n})\n\ntype TNavigationMenuCollapsibleTriggerProps = React.ComponentProps<\n typeof TreeItemContent\n> & {\n label: string\n}\n\nexport const TreeCollapsibleTrigger = ({\n children,\n label,\n ...rest\n}: TNavigationMenuCollapsibleTriggerProps) => {\n const { setTriggerRef, triggerRef } = React.useContext(TreeCollapsibleContext)\n\n return (\n <StyledTreeCollapsibleTrigger\n {...rest}\n onClick={(event) => {\n rest.onClick?.(event)\n triggerRef?.current?.click()\n }}\n >\n <Trigger asChild>\n <StyledActionIcon\n size=\"sm\"\n ref={setTriggerRef}\n label={label}\n theme=\"neutral\"\n hasTooltip={false}\n onClick={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon is={ChevronDown} />\n </StyledActionIcon>\n </Trigger>\n {children}\n </StyledTreeCollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { TreeItemContent } from './TreeItemContent'\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeItemProps = React.ComponentProps<typeof TreeItemContent>\n\nexport const TreeItem = ({ children, ...rest }: TreeItemProps): JSX.Element => {\n return (\n <TreeListItem>\n <TreeItemContent {...rest}>{children}</TreeItemContent>\n </TreeListItem>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsible } from './TreeCollapsible'\nimport { TreeCollapsibleContent } from './TreeCollapsibleContent'\nimport { TreeCollapsibleTrigger } from './TreeCollapsibleTrigger'\nimport { TreeIcon } from './TreeIcon'\nimport { TreeItem } from './TreeItem'\nimport { TreeList } from './TreeList'\nimport { TreeText } from './TreeText'\n\nconst StyledRoot = styled(TreeList, {})\n\ntype TreeProps = React.ComponentProps<typeof StyledRoot>\n\nexport const TreeRoot: React.ForwardRefExoticComponent<TreeProps> =\n React.forwardRef(({ children, ...rest }, ref) => {\n return (\n <StyledRoot {...rest} ref={ref} role=\"tree\">\n {children}\n </StyledRoot>\n )\n })\n\nexport const Tree = Object.assign(TreeRoot, {\n Collapsible: TreeCollapsible,\n CollapsibleContent: TreeCollapsibleContent,\n CollapsibleTrigger: TreeCollapsibleTrigger,\n Item: TreeItem,\n Icon: TreeIcon,\n Text: TreeText\n})\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleProps = Omit<\n React.ComponentProps<typeof Tree.Collapsible> &\n React.ComponentProps<typeof CheckboxGroup.Sub>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsible = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.Collapsible {...rest}>{children}</Tree.Collapsible>\n </CheckboxGroup.Sub>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleContentProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleContent>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleContent = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleContentProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.CollapsibleContent {...rest} forceMount>\n {children}\n </Tree.CollapsibleContent>\n </CheckboxGroup.Sub>\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Tree } from '~/components/tree'\nimport { styled } from '~/stitches'\n\nconst StyledItemContent = styled(Flex, {\n maxWidth: '100%'\n})\n\ntype CheckboxTreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const CheckboxTreeItemContent = ({\n children,\n ...rest\n}: CheckboxTreeItemContentProps): JSX.Element => {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"label\"`\n <StyledItemContent gap={2} align=\"center\" as=\"label\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Tree.Text>{child}</Tree.Text>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <Tree.Icon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxGroupCollapsibleTriggerProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleTrigger> &\n React.ComponentProps<typeof CheckboxGroup.AllItem>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleTrigger = ({\n onCheckedChange,\n title,\n label,\n children,\n disabled,\n ...rest\n}: CheckboxGroupCollapsibleTriggerProps): JSX.Element => {\n const treeCollapsibleTriggerProps = { label }\n const checkboxAllItemProps = { onCheckedChange, title, disabled }\n return (\n <Tree.CollapsibleTrigger {...treeCollapsibleTriggerProps} {...rest}>\n <CheckboxTreeItemContent\n onClick={\n // Don't propagate click and don't open/close the collapsible when the label/checkbox are clicked\n (e) => e.stopPropagation()\n }\n >\n <CheckboxGroup.AllItem {...checkboxAllItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.CollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxTreeItemProps = Omit<\n React.ComponentProps<typeof Tree.Item> &\n React.ComponentProps<typeof CheckboxGroup.Item>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeItem = ({\n value,\n title,\n onCheckedChange,\n children,\n disabled,\n ...rest\n}: CheckboxTreeItemProps): JSX.Element => {\n const checkboxItemProps = { value, title, onCheckedChange, disabled }\n return (\n <Tree.Item {...rest}>\n <CheckboxTreeItemContent>\n <CheckboxGroup.Item {...checkboxItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.Item>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeCollapsible } from './CheckboxTreeCollapsible'\nimport { CheckboxTreeCollapsibleContent } from './CheckboxTreeCollapsibleContent'\nimport { CheckboxTreeCollapsibleTrigger } from './CheckboxTreeCollapsibleTrigger'\nimport { CheckboxTreeItem } from './CheckboxTreeItem'\n\ntype CheckboxTreeRootProps = Omit<\n React.ComponentProps<typeof CheckboxGroup> &\n React.ComponentProps<typeof Tree>,\n 'asChild'\n>\n\nexport const CheckboxTreeRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n ...rest\n}: CheckboxTreeRootProps) => {\n const checkboxGroupProps = { checked, defaultChecked, onCheckedChange }\n return (\n <CheckboxGroup {...checkboxGroupProps} asChild>\n <Tree {...rest} />\n </CheckboxGroup>\n )\n}\n\nexport const CheckboxTree = Object.assign(CheckboxTreeRoot, {\n Collapsible: CheckboxTreeCollapsible,\n CollapsibleContent: CheckboxTreeCollapsibleContent,\n CollapsibleTrigger: CheckboxTreeCollapsibleTrigger,\n Item: CheckboxTreeItem\n})\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nexport const INLINE_MESSAGE_THEMES: Record<InlineMessageTheme, CSS> = {\n success: { color: '$success' },\n warning: { color: '$warningText', '& svg': { color: '$warningDark' } },\n info: { color: '$info' },\n neutral: { color: '$grey800' },\n error: { color: '$danger' }\n}\n\nexport const INLINE_MESSAGE_ICONS: Record<\n InlineMessageTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n success: OkCircle,\n warning: Danger,\n info: Info,\n neutral: Info,\n error: Error\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport {\n INLINE_MESSAGE_ICONS,\n INLINE_MESSAGE_THEMES\n} from './InlineMessage.config'\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nconst InlineMessageContainer = styled(Flex, {\n variants: {\n theme: INLINE_MESSAGE_THEMES\n }\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}: TInlineMessageProps) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <Icon\n css={{ mr: '$2' }}\n size=\"sm\"\n is={INLINE_MESSAGE_ICONS[theme as InlineMessageTheme]}\n />\n )}\n <Text as=\"span\" size={size} css={{ transform: 'translateY($space$0)' }}>\n {children}\n </Text>\n </InlineMessageContainer>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities/types'\n\nimport { getTextVariant } from '../text'\n\nconst StyledLabel = styled('label', {\n color: '$grey900',\n fontFamily: '$body',\n m: 0,\n variants: {\n size: {\n sm: getTextVariant({ size: 'sm' }),\n md: getTextVariant({ size: 'md' })\n },\n type: {\n block: {\n display: 'block',\n fontWeight: 600\n },\n inline: {\n display: 'flex',\n fontWeight: 400,\n maxWidth: 'max-content'\n }\n },\n align: { start: {}, center: {} },\n direction: { reverse: {}, row: {} },\n appearance: { standard: {}, modern: {} }\n },\n compoundVariants: [\n {\n type: 'inline',\n align: 'start',\n css: { alignItems: 'flex-start' }\n },\n {\n type: 'inline',\n align: 'center',\n css: { alignItems: 'center' }\n },\n {\n type: 'inline',\n direction: 'reverse',\n css: { flexDirection: 'row-reverse' }\n },\n {\n type: 'inline',\n direction: 'row',\n css: { flexDirection: 'row' }\n },\n {\n type: 'block',\n appearance: 'modern',\n css: { fontWeight: 400 }\n }\n ]\n})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\nexport type LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}: LabelProps) => (\n <StyledLabel\n as={as}\n size={size}\n type={type}\n align={align}\n direction={direction}\n {...rest}\n >\n {children}\n {required && <StyledAsterisk aria-hidden>*</StyledAsterisk>}\n </StyledLabel>\n)\n\nLabel.displayName = 'Label'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { textVariants } from '../text'\n\nexport const StyledLi = styled('li', {})\n\nexport const StyledList = styled('ul', {\n listStylePosition: 'inside',\n fontFamily: '$body',\n m: 'unset',\n p: 'unset',\n [`& > ${StyledLi}`]: {\n '&:not(:last-child)': { mb: '$2' },\n '&:last-child': { mb: 0 }\n },\n variants: {\n ...textVariants,\n as: {\n ol: {\n pl: '$4',\n listStyleType: 'decimal',\n [`& > ${StyledLi}`]: {\n pl: '$1',\n '&::marker': { fontSize: '.875em', fontWeight: 'bold' }\n }\n },\n ul: {\n pl: '$3',\n [`& > ${StyledLi}`]: {\n pl: '$2',\n '&::marker': { content: '• ', fontWeight: 'bold' }\n }\n }\n },\n theme: {\n primary: {\n [`& > ${StyledLi}`]: {\n '&::marker': { color: '$primary800' }\n }\n }\n }\n }\n})\n\ntype ListProps = React.ComponentProps<typeof StyledList> & {\n ordered?: boolean\n}\n\ntype ListType = React.ForwardRefExoticComponent<ListProps> & {\n Item: typeof StyledLi\n}\n\nexport const List = React.forwardRef(\n ({ size = 'md', noCapsize = true, ordered, ...remainingProps }, ref) => (\n <StyledList\n ref={ref}\n as={ordered ? 'ol' : 'ul'}\n size={size}\n noCapsize={noCapsize}\n {...remainingProps}\n />\n )\n) as ListType\n\nList.Item = StyledLi\n","import type { Code } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownCodeProps = {\n node: Code\n}\n\nconst StyledMarkdownCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$1',\n color: '$grey1000',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode = ({ node }: MarkdownCodeProps) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import type { Content, Emphasis } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownEmphasisProps = {\n node: Emphasis\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const StyledMarkdownEmphasis = styled('em', { fontStyle: 'italic' })\n\nexport const MarkdownEmphasis = ({\n node,\n handleNode\n}: MarkdownEmphasisProps) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import type { Content, Heading as HeadingType } from 'mdast'\nimport * as React from 'react'\n\nimport { Heading, HeadingProps } from '../../heading/Heading'\n\ntype MarkdownHeadingProps = {\n node: HeadingType\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst getHeadingProps = (depth: number): HeadingProps => {\n switch (depth) {\n case 1:\n return { size: 'xl', as: 'h1' }\n case 2:\n return { size: 'lg', as: 'h2' }\n case 3:\n return { size: 'md', as: 'h3' }\n case 4:\n return { size: 'sm', as: 'h4' }\n case 5:\n return { size: 'xs', as: 'h5' }\n default:\n return { size: 'xs', as: 'h6' }\n }\n}\n\nexport const MarkdownHeading = ({\n node,\n handleNode,\n ...rest\n}: MarkdownHeadingProps) => {\n const { as, size } = getHeadingProps(node.depth)\n\n return (\n <Heading as={as} size={size} {...rest}>\n {node.children?.map(handleNode)}\n </Heading>\n )\n}\n","import type { InlineCode } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownInlineCodeProps = {\n node: InlineCode\n}\n\nconst StyledMarkdownInlineCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$0',\n color: '$grey1000',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode = ({ node }: MarkdownInlineCodeProps) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n css?: CSS\n}\n\nexport const MarkdownImage = ({ node, css }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { List } from '../../list'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n css?: CSS\n}\n\nexport const MarkdownList = ({ node, handleNode, css }: MarkdownListProps) => (\n <List\n css={\n {\n '& p': { display: 'inline' },\n '& p:before, & p:after': { display: 'none' },\n ...css\n } as CSS\n }\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import type { Content, ListItem } from 'mdast'\nimport * as React from 'react'\n\nimport { List } from '../../list'\n\ntype MarkdownListItemProps = {\n node: ListItem\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownListItem = ({\n node,\n handleNode\n}: MarkdownListItemProps) => (\n <List.Item>{node.children?.map(handleNode)}</List.Item>\n)\n","import type { Content, Paragraph } from 'mdast'\nimport * as React from 'react'\n\nimport { Text } from '../../text'\n\ntype MarkdownParagraphProps = {\n node: Paragraph\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownParagraph = ({\n node,\n handleNode,\n ...rest\n}: MarkdownParagraphProps) => (\n <Text {...rest}>{node.children?.map(handleNode)}</Text>\n)\n","import type { Content, Strong } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownStrongProps = {\n node: Strong\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst StyledMarkdownStrong = styled('strong', { fontWeight: 600 })\n\nexport const MarkdownStrong = ({ node, handleNode }: MarkdownStrongProps) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import type { Text as TextType } from 'mdast'\nimport * as React from 'react'\n\ntype MarkdownTextProps = {\n node: TextType\n}\n\nexport const MarkdownText = ({ node }: MarkdownTextProps): React.ReactNode =>\n node.value\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledDivider = styled('hr', {\n border: 0,\n bg: '$grey200',\n variants: {\n orientation: {\n horizontal: { height: 1, width: '100%' },\n vertical: { height: '100%', width: 1, minHeight: '$3' }\n }\n }\n})\n\nexport const Divider: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledDivider>\n> = React.forwardRef(({ orientation = 'horizontal', ...rest }, ref) => {\n return <StyledDivider ref={ref} orientation={orientation} {...rest} />\n})\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Divider } from '../../divider'\n\ntype MarkdownThematicBreakProps = {\n css?: CSS\n}\n\nexport const MarkdownThematicBreak = ({ css }: MarkdownThematicBreakProps) => (\n <Divider css={{ width: '100%', ...css }} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledLi } from '../list/List'\nimport { StyledMarkdownEmphasis } from '../markdown-content/components'\nimport { StyledText, textVariants } from '../text/Text'\n\nexport const StyledLink = styled('a', {\n bg: 'unset',\n border: 'unset',\n p: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primary900',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&[disabled]': {\n ...disabledStyle,\n pointerEvents: 'none'\n },\n\n [`${StyledText} > &, ${StyledHeading} > &, ${StyledLi} > &, ${StyledMarkdownEmphasis} > &`]:\n {\n fontSize: '100%',\n lineHeight: 1,\n '&::before, &::after': {\n content: 'none'\n }\n },\n variants: textVariants,\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions & { disabled?: boolean }\n>\n\nexport const Link: React.ForwardRefExoticComponent<LinkProps> =\n React.forwardRef(({ as, disabled, href, ...rest }, ref) => (\n <StyledLink\n as={as || (!href ? 'button' : undefined)}\n noCapsize={!href ? true : undefined}\n href={href}\n {...(disabled && { disabled: true })}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n />\n ))\n\nLink.displayName = 'Link'\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\n\ntype DescriptionProps = {\n css?: CSS\n}\n\nexport const Description = ({\n children,\n css\n}: React.PropsWithChildren<DescriptionProps>) => (\n <Text size=\"sm\" css={{ color: '$grey700', maxWidth: '80ch', ...css }}>\n {children}\n </Text>\n)\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { ValidationOptions } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { Link } from '~/components/link'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\nimport { type LabelProps } from '../label/Label'\n\nexport type FieldWrapperProps = {\n css?: CSS\n error?: string\n fieldId: string\n label: string\n prompt?: { link?: string; label: string; onClick?: () => void }\n description?: string\n required?: boolean\n hideLabel?: boolean\n appearance?: LabelProps['appearance']\n}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel,\n appearance\n}: React.PropsWithChildren<FieldWrapperProps>) => {\n const LabelContainer = hideLabel ? VisuallyHidden.Root : Flex\n\n return (\n <Box css={css}>\n <LabelContainer\n css={{\n justifyContent: 'space-between',\n alignItems: 'center',\n mb: '$3'\n }}\n >\n <Label htmlFor={fieldId} required={required} appearance={appearance}>\n {label}\n </Label>\n {prompt && (\n <Link href={prompt?.link} onClick={prompt?.onClick} size=\"sm\">\n {prompt.label}\n </Link>\n )}\n </LabelContainer>\n {description && (\n <Description css={{ mb: '$3' }}>{description}</Description>\n )}\n {children}\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Box>\n )\n}\n\nFieldWrapper.displayName = 'FieldWrapper'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledRadioButton = styled(RadioGroup.Item, {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '$round',\n color: 'white',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 0,\n size: '$1',\n variants: {\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n },\n transition: 'all 50ms ease-out',\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n borderColor: '$grey800',\n color: '$grey800',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledIndicator = styled(RadioGroup.Indicator, {\n size: '6px',\n borderRadius: '$round',\n backgroundColor: 'currentcolor',\n position: 'absolute',\n variants: {\n size: {\n md: {\n size: '6px'\n },\n lg: {\n size: '12px'\n }\n }\n }\n})\n\ntype RadioButtonProps = Override<\n React.ComponentProps<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton = ({ size, ...props }: RadioButtonProps) => {\n return (\n <StyledRadioButton {...props} size={size}>\n <StyledIndicator size={size} />\n </StyledRadioButton>\n )\n}\n\nRadioButton.displayName = 'RadioButton'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\n\nimport { styled } from '~/stitches'\n\nexport const RadioButtonGroup = styled(RadioGroup.Root, {\n display: 'flex',\n flexWrap: 'wrap',\n variants: {\n direction: {\n row: {\n flexDirection: 'row',\n '& > *:not(:last-child)': { mr: '$5' }\n },\n column: { flexDirection: 'column' }\n }\n }\n})\n\nRadioButtonGroup.displayName = 'RadioButtonGroup'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Checkbox } from '~/components/checkbox'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButton } from '~/components/radio-button'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\n\ntype InlineFieldWrapperProps = {\n css?: CSS\n error?: string\n label: string\n required?: boolean\n align?: 'start' | 'center'\n direction?: 'row' | 'reverse'\n description?: string\n}\n\nexport const InlineFieldWrapper = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}: React.PropsWithChildren<InlineFieldWrapperProps>) => (\n <Box css={css}>\n <Label\n align={align}\n direction={direction}\n required={required}\n type=\"inline\"\n >\n {React.Children.map(children, (child: any) => (\n <Box\n css={{\n [direction === 'reverse' ? 'ml' : 'mr']: '$3',\n // provide offset for specific child components\n ...((child?.type === Checkbox || child?.type === RadioButton) && {\n transform: 'translateY($space$1)'\n })\n }}\n >\n {child}\n </Box>\n ))}\n {label}\n </Label>\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n {description && (\n <Description\n css={{\n mt: '$2',\n // calc required to get correct offset value\n [direction === 'reverse' ? 'mr' : 'ml']: 'calc($space$3 + $sizes$1)'\n }}\n >\n {description}\n </Description>\n )}\n </Box>\n)\n\nInlineFieldWrapper.displayName = 'InlineFieldWrapper'\n","import * as React from 'react'\nimport { InputField } from '../input-field'\n\nexport type FormCustomContextType =\n | {\n appearance?: React.ComponentProps<typeof InputField>['appearance']\n }\n | undefined\n\nexport const FormCustomContext = React.createContext<FormCustomContextType>({\n appearance: 'standard'\n})\n\nexport const useFormCustomContext = () => React.useContext(FormCustomContext)\n","import * as React from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Mode,\n SubmitErrorHandler,\n SubmitHandler,\n UseFormMethods\n} from 'react-hook-form'\nimport { FormProvider, useForm } from 'react-hook-form'\n\nimport { styled } from '~/stitches'\nimport {\n type FormCustomContextType,\n FormCustomContext\n} from './useFormCustomContext'\n\nconst StyledForm = styled('form', {})\n\ntype StyledFormProps = Omit<\n React.ComponentPropsWithoutRef<typeof StyledForm>,\n 'onSubmit' | 'onError'\n>\n\ninterface FormProps<TFormData extends FieldValues> extends StyledFormProps {\n defaultValues?: DefaultValues<TFormData>\n validationMode?: Mode\n onSubmit: SubmitHandler<TFormData>\n onError?: SubmitErrorHandler<TFormData>\n children:\n | React.ReactNode\n | ((methods: UseFormMethods<TFormData>) => React.ReactNode)\n}\n\nexport const Form = <TFormData extends FieldValues>(\n props: FormProps<TFormData> & FormCustomContextType\n) => {\n const {\n children,\n defaultValues,\n validationMode = 'onBlur',\n onSubmit,\n onError,\n appearance,\n ...rest\n } = props\n\n const methods = useForm<TFormData>({\n defaultValues,\n mode: validationMode\n })\n\n return (\n <FormProvider {...methods}>\n <FormCustomContext.Provider value={{ appearance }}>\n <StyledForm\n aria-label=\"form\"\n onSubmit={methods.handleSubmit(onSubmit, onError)}\n {...rest}\n >\n {typeof children === 'function' ? children(methods) : children}\n </StyledForm>\n </FormCustomContext.Provider>\n </FormProvider>\n )\n}\n\nForm.displayName = 'Form'\n","import delve from 'dlv'\nimport { useFormContext } from 'react-hook-form'\n\nexport const useFieldError = (fieldName: string) => {\n const { errors } = useFormContext()\n\n // in case of migration to a newer version of react-hook-form the path needs to updated to account for dynamic fields naming convention\n const fieldPath = fieldName.split(/[,[\\].]+?/).filter(Boolean)\n\n const getErrors = () => delve(errors, fieldPath)\n\n return {\n error: getErrors()?.message\n }\n}\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { Checkbox } from '~/components/checkbox'\nimport {\n FieldElementWrapperProps,\n InlineFieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}: React.ComponentProps<typeof Checkbox> & FieldElementWrapperProps) => {\n const { control } = useFormContext()\n const { error } = useFieldError(name)\n const {\n field: { ref, onChange, value: innerChecked, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue: defaultChecked\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner checked to match what is passed in.\n if (typeof checked !== 'undefined') onChange(checked)\n }, [checked])\n\n return (\n <InlineFieldWrapper\n css={css}\n description={description}\n error={error}\n label={label}\n required={Boolean(validation?.required)}\n >\n <Checkbox\n ref={ref}\n name={innerName}\n {...remainingProps}\n onCheckedChange={(newChecked) => {\n onChange(newChecked)\n onCheckedChange?.(newChecked)\n }}\n value={innerChecked ? CheckboxValue.ON : CheckboxValue.OFF}\n checked={innerChecked}\n {...(error && { state: 'error' })}\n />\n </InlineFieldWrapper>\n )\n}\n\nCheckboxField.displayName = 'CheckboxField'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { getTextVariant } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst overflowElipsis = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}\nexport const StyledChipContent = styled('span', {\n display: 'inline-flex',\n alignItems: 'center',\n px: '$1',\n flexGrow: 1,\n ...overflowElipsis,\n '& > *:not(:last-child)': {\n mr: '$1'\n }\n})\n\nconst toIconSize = { sm: 'sm', md: 'sm', lg: 'md' }\n\nexport const ChipIcon = (props: React.ComponentProps<typeof Icon>) => {\n const rootContext = React.useContext(ChipRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n return <Icon {...props} size={iconSize} />\n}\n\nconst ChipContent = ({ children, ...rest }) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n return (\n <StyledChipContent {...rest}>\n {\n childrenArray.map((child, index) => {\n if (!isSingleChild && typeof child === 'string')\n return (\n <Box as=\"span\" css={overflowElipsis} key={child}>\n {child}\n </Box>\n )\n if (React.isValidElement(child) && child.type === Icon) {\n return <ChipIcon key={`icon-${index}`} {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledChipContent>\n )\n}\n\nexport const StyledRoot = styled(Flex, {\n px: '$2',\n border: '1px solid',\n borderRadius: '$0',\n alignItems: 'center',\n fontFamily: '$body',\n maxWidth: '100%',\n borderColor: '$primary800',\n color: '$primary900',\n bg: '$primary100',\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n sm: {\n height: '$2',\n ...getTextVariant({ size: 'sm' })\n },\n md: {\n height: '$3',\n ...getTextVariant({ size: 'sm' })\n },\n lg: {\n height: '$4',\n ...getTextVariant({ size: 'md' })\n }\n }\n }\n})\n\nexport type TChipRootContext = React.ComponentProps<typeof StyledRoot>\nexport type TChipRootProviderProps = TChipRootContext\n\nexport const ChipRootContext = React.createContext<TChipRootContext>({})\n\nexport const ChipRootProvider = ({\n size,\n children\n}: TChipRootProviderProps) => {\n const value = React.useMemo<TChipRootContext>(() => ({ size }), [size])\n return (\n <ChipRootContext.Provider value={value}>\n {children}\n </ChipRootContext.Provider>\n )\n}\n\nexport type TChipRootProps = TChipRootProviderProps\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\nexport const Chip = Object.assign(ChipRoot, {\n Content: ChipContent,\n Icon: ChipIcon\n})\n\nChipRoot.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Flex> & { as?: any }\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => (\n <Flex direction=\"row\" wrap=\"wrap\" gap={gap} {...rest} ref={ref} />\n))\n","import * as React from 'react'\n\nexport interface IDismissibleGroupContext {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\nexport const DismissibleGroupContext =\n React.createContext<IDismissibleGroupContext>({\n onDismiss: () => null\n })\n\nexport interface IDismissibleGroupProps {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\n\nexport const DismissibleGroupProvider = ({\n children,\n disabled,\n onDismiss\n}: React.PropsWithChildren<IDismissibleGroupProps>) => {\n const value = React.useMemo<IDismissibleGroupContext>(\n () => ({ disabled, onDismiss }),\n [disabled, onDismiss]\n )\n return (\n <DismissibleGroupContext.Provider value={value}>\n {children}\n </DismissibleGroupContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupRootProps extends IDismissibleGroupProps {\n as?: React.ElementType\n}\n\nexport const DismissibleGroupRoot = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<IDismissibleGroupRootProps>) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\n\nDismissibleGroupRoot.displayName = 'DismissibleGroup'\n","import * as React from 'react'\n\nimport { Dismissible } from '~/components/dismissible'\n\nimport { DismissibleGroupContext } from './DismissibleGroupRoot'\n\nexport type TDismissibleGroupItemProps = React.ComponentProps<\n typeof Dismissible\n> & {\n value: React.ReactText\n disabled?: boolean\n}\n\nexport const DismissibleGroupItem = ({\n children,\n value,\n disabled: itemDisabled = false,\n ...rest\n}: React.PropsWithChildren<TDismissibleGroupItemProps>) => {\n const groupContext = React.useContext(DismissibleGroupContext)\n if (groupContext === undefined) {\n throw new Error(\n 'DismissibleGroup.Item can only be used within a DismissibleGroup'\n )\n }\n const { onDismiss, disabled: groupDisabled } = groupContext\n return (\n <Dismissible\n disabled={groupDisabled || itemDisabled}\n {...rest}\n onDismiss={() => onDismiss(value)}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\nexport const DismissibleGroup = Object.assign(DismissibleGroupRoot, {\n Item: DismissibleGroupItem,\n Trigger: DismissibleTrigger\n})\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledChipDismissibleGroupItem = styled(Chip, { px: '$1' })\n\nexport type TChipDismissibleGroupItem = React.ComponentProps<\n typeof DismissibleGroup.Item\n> &\n React.ComponentProps<typeof StyledChipDismissibleGroupItem> & {\n dismissActionLabel: string\n }\n\nexport const ChipDismissibleGroupItem = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}: TChipDismissibleGroupItem) => {\n return (\n <DismissibleGroup.Item asChild {...rest}>\n <StyledChipDismissibleGroupItem size={size}>\n <Chip.Content>{children}</Chip.Content>\n <DismissibleGroup.Trigger asChild>\n <ActionIcon\n label={dismissActionLabel}\n css={{ color: '$grey600' }}\n size={size === 'sm' ? 'xs' : 'sm'}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DismissibleGroup.Trigger>\n </StyledChipDismissibleGroupItem>\n </DismissibleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\n\ntype TChipDismissibleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof DismissibleGroup>\n\nexport const ChipDismissibleGroupRoot: React.ForwardRefExoticComponent<TChipDismissibleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return <ChipGroup as={DismissibleGroup} ref={ref} {...props} />\n })\n","import { ChipDismissibleGroupItem } from './ChipDismissibleGroupItem'\nimport { ChipDismissibleGroupRoot } from './ChipDismissibleGroupRoot'\n\ntype TChipDismissibleGroup = typeof ChipDismissibleGroupRoot & {\n Item: typeof ChipDismissibleGroupItem\n}\n\nexport const ChipDismissibleGroup =\n ChipDismissibleGroupRoot as TChipDismissibleGroup\nChipDismissibleGroup.Item = ChipDismissibleGroupItem\nChipDismissibleGroup.displayName = 'ChipDismissibleGroup'\n","import { Ok } from '@atom-learning/icons'\nimport * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nconst StyledChipToggleIcon = styled(Icon, {\n display: 'none'\n})\n\nconst StyledChipToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$grey200',\n color: '$grey1000',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: 'white',\n color: '$primary1000'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$grey800',\n bg: 'white',\n borderColor: '$grey600'\n },\n '&[data-state=\"on\"]': {\n [`& ${StyledChipToggleIcon}`]: {\n display: 'block'\n }\n }\n})\n\ntype TChipToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledChipToggleGroupItem>\n\nexport const ChipToggleGroupItem = ({\n size = 'md',\n children,\n ...rest\n}: TChipToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem as=\"button\">\n <StyledChipToggleIcon is={Ok} size={size === 'lg' ? 'md' : 'sm'} />\n <Chip.Content>{children}</Chip.Content>\n </StyledChipToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\ntype RootType = {\n disableDeselect?: boolean\n}\n\ntype ToggleGroupRootProps = React.ComponentProps<typeof ToggleGroup.Root> &\n RootType\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<ToggleGroupRootProps> =\n React.forwardRef(\n (\n { disableDeselect = false, onValueChange, defaultValue, ...rest },\n ref\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<ToggleGroupRootProps['value']>(defaultValue)\n const handleValueChange: ToggleGroupRootProps['onValueChange'] = (\n newValue\n ) => {\n if (disableDeselect && (newValue === '' || newValue?.length === 0))\n return\n setInternalValue(newValue)\n onValueChange?.(newValue)\n }\n\n return (\n // eslint-disable-next-line\n // @ts-ignore Radix types complain on properties depending on whether `type=\"single\"` or `\"multiple\"`. Works correctly so muting.\n <ToggleGroup.Root\n ref={ref}\n onValueChange={handleValueChange}\n value={internalValue}\n {...rest}\n />\n )\n }\n )\n","import { ToggleGroupRoot } from './ToggleGroupRoot'\n\nexport const ToggleGroup = {\n Root: ToggleGroupRoot\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot: React.ForwardRefExoticComponent<TChipToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return (\n <ChipGroup\n ref={ref}\n as={ToggleGroup.Root}\n orientation=\"horizontal\"\n {...props}\n />\n )\n })\n","import { ChipToggleGroupItem } from './ChipToggleGroupItem'\nimport { ChipToggleGroupRoot } from './ChipToggleGroupRoot'\n\ntype TChipToggleGroup = typeof ChipToggleGroupRoot & {\n Item: typeof ChipToggleGroupItem\n}\n\nexport const ChipToggleGroup = ChipToggleGroupRoot as TChipToggleGroup\nChipToggleGroup.Item = ChipToggleGroupItem\nChipToggleGroup.displayName = 'ChipToggleGroupItem'\n","import { ComboboxInput as BaseComboboxInput } from '@reach/combobox'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nexport const StyledComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundRepeat: 'no-repeat, repeat',\n backgroundSize: '20px auto, 100%',\n border: '1px solid $grey700',\n borderRadius: '$0',\n boxSizing: 'border-box',\n color: '$grey1000',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n height: '$4',\n pl: '$3',\n pr: '$6',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n variants: {\n size: {\n sm: {\n height: '$3',\n fontSize: '$sm',\n lineHeight: 1.7\n },\n md: {\n height: '$4',\n fontSize: '$md',\n lineHeight: 2\n },\n lg: {\n height: '$5',\n fontSize: '$md',\n lineHeight: 2\n }\n },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type ComboboxInputProps = React.ComponentProps<\n typeof StyledComboboxInput\n>\n\nexport const ComboboxInput: React.ForwardRefExoticComponent<ComboboxInputProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => (\n <StyledComboboxInput size={size} {...rest} ref={ref} />\n ))\n","import { ComboboxList as BaseComboboxList } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxList = styled(BaseComboboxList, {\n listStyle: 'none',\n m: 0,\n p: 0,\n userSelect: 'none'\n})\n","import { ComboboxOption as BaseComboboxOption } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxOption = styled(BaseComboboxOption, {\n color: '$grey900',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$grey100',\n borderRadius: '$0'\n },\n '[data-user-value]': {\n color: '$primary800'\n }\n})\n","import { ComboboxPopover as BaseComboboxPopover } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxPopover = styled(BaseComboboxPopover, {\n bg: 'white',\n border: 'solid 1px $grey200',\n borderRadius: '$0',\n boxShadow: '$1',\n boxSizing: 'border-box',\n fontFamily: '$body',\n fontSize: '$md',\n outline: 'none',\n p: '$1',\n transform: 'translateY($space$2)'\n})\n","import { Combobox as BaseCombobox, ComboboxOptionText } from '@reach/combobox'\n\nimport { globalCss, styled } from '~/stitches'\n\nimport { ComboboxInput } from './ComboboxInput'\nimport { ComboboxList } from './ComboboxList'\nimport { ComboboxOption } from './ComboboxOption'\nimport { ComboboxPopover } from './ComboboxPopover'\n\nglobalCss({ ':root': { '--reach-combobox': 1 } })()\n\nexport const Combobox = Object.assign(styled(BaseCombobox, {}), {\n displayName: 'Combobox',\n Option: ComboboxOption,\n Input: ComboboxInput,\n Popover: ComboboxPopover,\n List: ComboboxList,\n OptionText: ComboboxOptionText\n})\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../flex'\nimport { Text } from '../text'\n\nexport const InputBackground = styled(Flex, {\n color: '$grey1000',\n transition: 'background 100ms ease-out, borderColor 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n borderRadius: '$1',\n '&:focus-within': {\n borderColor: '$blue800'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n borderRadius: '$1',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n size: {\n sm: { height: '$3' },\n md: { height: '$4' },\n lg: { height: '$5' },\n xl: { height: '$6' }\n },\n disabled: {\n true: disabledStyle\n },\n state: {\n error: {}\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nInputBackground.displayName = 'InputBackground'\n\nconst StyledInputText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text as unknown as 'input', {\n // unsets\n appearance: 'none',\n border: 'none',\n background: 'none',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n '&:focus': {\n outline: 'none'\n },\n //\n px: '$3',\n size: '100%'\n})\n\nexport type InputTextProps = Omit<\n React.ComponentProps<typeof StyledInputText>,\n 'size' | 'type' | 'as'\n> & {\n size: React.ComponentProps<typeof Text>['size']\n // override default 'type' property to prevent Input from being used to render\n // checkboxes, radios etc — we have dedicated components for them\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n as?: never\n}\n\nconst toTextSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg'\n}\n\nexport const InputText: React.ForwardRefExoticComponent<InputTextProps> =\n React.forwardRef(({ type = 'text', css, size, ...rest }, ref) => {\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n return (\n <StyledInputText\n ref={ref}\n as=\"input\"\n type={type === 'number' ? 'text' : type}\n inputMode={type === 'number' ? 'numeric' : undefined}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n size={textSize}\n {...rest}\n />\n )\n })\n\nInputText.displayName = 'InputText'\n\ntype InputBackgroundProps = React.ComponentProps<typeof InputBackground>\nexport type InputProps = Omit<\n React.ComponentProps<typeof InputText>,\n 'size' | 'state' | 'appearance'\n> & {\n size?: InputBackgroundProps['size']\n state?: InputBackgroundProps['state']\n appearance?: InputBackgroundProps['appearance']\n}\n\nexport const Input: React.ForwardRefExoticComponent<InputProps> =\n React.forwardRef(\n (\n {\n className,\n size = 'md',\n appearance = 'standard',\n state,\n disabled,\n css,\n ...rest\n },\n ref\n ) => {\n return (\n <InputBackground\n size={size}\n appearance={appearance}\n disabled={disabled}\n state={state}\n css={css}\n className={className}\n >\n <InputText size={size} ref={ref} disabled={disabled} {...rest} />\n </InputBackground>\n )\n }\n )\n\nInput.displayName = 'Input'\n","import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport type { InputProps } from '~/components/input'\nimport { Input } from '~/components/input'\nimport type { CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps> =\n React.forwardRef(\n (\n {\n css,\n hidePasswordText = 'Hide password',\n showPasswordText = 'Show password',\n size = 'md',\n ...restProps\n },\n ref\n ) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState<boolean>(false)\n const togglePasswordVisibility = () =>\n setIsPasswordVisible((currentState) => !currentState)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', ...css } as CSS}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n css={{ pr: '$sizes$2' }}\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n css={{\n bottom: size === 'lg' ? '4px' : 0,\n position: 'absolute',\n right: 0\n }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </Box>\n )\n }\n )\n\nPasswordInput.displayName = 'PasswordInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { PasswordInput } from '~/components/password-input'\nimport { CSS } from '~/stitches'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n css = {},\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n ...remainingProps\n}: PasswordFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' } as CSS}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\nimport { throttle } from 'throttle-debounce'\n\nimport type { CSS } from '~/stitches'\nimport { Override } from '~/utilities'\n\nimport { Box } from '../box'\nimport { FieldElementWrapperProps } from '../field-wrapper'\nimport { Flex } from '../flex'\nimport { InlineMessage } from '../inline-message'\nimport { PasswordField } from '../password-field'\nimport { PasswordInput } from '../password-input'\n\ntype ValidationResult = Record<string, boolean>\n\ntype CreatePasswordFieldProps = Override<\n React.ComponentProps<typeof PasswordInput> & FieldElementWrapperProps,\n {\n label?: string\n name?: string\n validate: (\n password: string\n ) => Promise<ValidationResult | undefined> | ValidationResult\n defaultValidation: ValidationResult\n messageDirection?: CSS['flexDirection']\n }\n>\n\nexport const CreatePasswordField = ({\n validate,\n defaultValidation,\n messageDirection = 'row',\n label = 'Create a password',\n name = 'password',\n css,\n validation,\n appearance,\n ...remainingProps\n}: CreatePasswordFieldProps) => {\n const { formState, control } = useFormContext()\n const [isFocused, setIsFocused] = React.useState<boolean>(false)\n const [validationResult, setValidationResult] =\n React.useState<ValidationResult>(defaultValidation)\n\n const touched: boolean = formState.touched[name]\n const error =\n formState.errors[name]?.type === 'validate' ||\n Object.values(validationResult).every((isValid) => !isValid)\n\n const validatePassword = React.useCallback(\n async (password: string) => {\n const result = await validate(password)\n\n if (result) {\n invariant(\n typeof result === 'object',\n 'The validate function must return an object'\n )\n\n setValidationResult(result)\n return Object.values(result).every((isValid) => isValid)\n }\n\n return false\n },\n [setValidationResult]\n )\n\n const handleChange = React.useCallback(throttle(500, validatePassword), [\n validatePassword\n ])\n\n const getMessageTheme = (result: boolean, isFocused: boolean) => {\n if (result) return 'success'\n\n return isFocused ? 'neutral' : 'error'\n }\n\n const showValidation: boolean =\n (control.mode.isOnBlur && (isFocused || touched)) ||\n (control.mode.isOnSubmit && (isFocused || (formState.isSubmitted && error)))\n\n return (\n <Box css={css}>\n <PasswordField\n label={label}\n name={name}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n validation={{ ...validation, validate: validatePassword }}\n appearance={appearance}\n {...remainingProps}\n />\n {showValidation && (\n <Flex\n css={{\n mt: '$2',\n gap: '$2',\n flexWrap: 'wrap',\n flexDirection: messageDirection\n }}\n >\n {Object.entries(validationResult).map(([message, result]) => (\n <InlineMessage\n key={message}\n theme={getMessageTheme(result, isFocused)}\n >\n {message}\n </InlineMessage>\n ))}\n </Flex>\n )}\n </Box>\n )\n}\n\nCreatePasswordField.displayName = 'CreatePasswordField'\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\n Row,\n RowSelectionState,\n RowSelectionTableState,\n SortDirection,\n SortingTableState,\n Table,\n VisibilityTableState\n} from '@tanstack/react-table'\nimport * as React from 'react'\nexport enum AsyncDataState {\n NONE = 'none',\n PENDING = 'pending',\n FULFILLED = 'fulfilled',\n REJECTED = 'rejected'\n}\n\nexport type TAsyncDataResult = {\n total: number\n results: TableData\n}\n\nexport type TAsyncDataOptions = {\n pageIndex: number\n pageSize: number\n sortBy?: string\n sortDirection?: SortDirection\n globalFilter?: string\n}\n\nexport type TGetAsyncData = (\n options: TAsyncDataOptions\n) => Promise<TAsyncDataResult | undefined>\n\nexport type DataTableContextType<T = unknown> = Table<T> & {\n setIsSortable: React.Dispatch<React.SetStateAction<boolean>>\n applyPagination: () => void\n getTotalRows: () => number\n isSortable: boolean\n asyncDataState?: AsyncDataState\n runAsyncData?: (options: Partial<TAsyncDataOptions>) => Promise<void>\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n rowSelection: RowSelectionState\n data: TAsyncDataResult\n columns: any\n tableId: string\n /**\n * Directly update the data array that the table rows are built from.\n * This is useful when re-ordering rows, but is high-risk if you're not sure what you're doing!\n *\n * Note in particular that this value is also updated if you update the value of the `DataTable`'s `data` prop\n * — it's probably best to only use one of those two methods for any given table.\n */\n setData: React.Dispatch<React.SetStateAction<TAsyncDataResult>>\n}\n\nexport type TableData = Array<Record<string, unknown>>\n\nexport type InitialState = Partial<\n VisibilityTableState &\n ColumnOrderTableState &\n ColumnPinningTableState &\n FiltersTableState &\n SortingTableState &\n ExpandedTableState &\n GroupingTableState &\n ColumnSizingTableState &\n PaginationTableState &\n RowSelectionTableState\n>\n\nexport type TDefaultSort = { column: string; direction: SortDirection }\n","import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n","import type { PaginationState } from '@tanstack/react-table'\nimport React from 'react'\n\nconst defaultPaginationState: PaginationState = { pageIndex: 0, pageSize: 10 }\nexport const usePagination = (\n initialPaginationState: PaginationState | undefined\n) => {\n const [isPaginated, setIsPaginated] = React.useState<boolean>(\n !!initialPaginationState\n )\n\n const [paginationState, setPaginationState] = React.useState<\n PaginationState | undefined\n >({\n ...defaultPaginationState,\n ...(initialPaginationState || {})\n })\n\n const applyPagination = React.useCallback(() => {\n setIsPaginated(true)\n }, [])\n\n return {\n isPaginated,\n paginationState,\n setPaginationState,\n applyPagination\n }\n}\n","import type { SortingState } from '@tanstack/react-table'\nimport React from 'react'\n\nimport { TDefaultSort } from './DataTable.types'\nexport const useSortByColumn = (defaultSort: TDefaultSort | undefined) => {\n const [isSortable, setIsSortable] = React.useState<boolean>(false)\n\n const [sorting, setSorting] = React.useState<SortingState>(\n defaultSort\n ? [\n {\n id: defaultSort.column,\n desc: defaultSort.direction === 'desc'\n }\n ]\n : []\n )\n\n return { isSortable, setIsSortable, sorting, setSorting }\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n OnChangeFn,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n disabledRows,\n enableRowSelection,\n onRowSelectionChange,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: (updaterOrValue) => {\n if (onRowSelectionChange) onRowSelectionChange(updaterOrValue)\n setRowSelection(updaterOrValue)\n },\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const isSubRow = row.depth > 0\n\n if (isSubRow) return true\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n disabledRows,\n enableRowSelection,\n rowSelection,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledRow = styled('tr', {\n bg: 'unset'\n})\n\nexport const TableRow: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRow>\n> = React.forwardRef((props, ref) => <StyledRow {...props} ref={ref} />)\n\nTableRow.displayName = 'TableRow'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { StyledRow } from './TableRow'\n\nconst StyledTableBody = styled('tbody', {\n variants: {\n striped: {\n true: {\n [`${StyledRow}`]: {\n '&:nth-child(odd)': { bg: 'white' },\n '&:nth-child(even)': { bg: '$grey100' }\n }\n },\n false: {\n [`${StyledRow}`]: {\n bg: 'white'\n }\n }\n }\n }\n})\n\ntype TableBodyProps = React.ComponentProps<typeof StyledTableBody>\n\nexport const TableBody = ({ striped = true, ...rest }: TableBodyProps) => (\n <StyledTableBody striped={striped} {...rest} />\n)\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderBottom: '1px solid $grey200',\n boxSizing: 'border-box',\n color: '$grey800',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: '600' }\n})\n\nTableCell.displayName = 'TableCell'\n","import { styled } from '~/stitches'\n\nexport const TableFooter = styled('tfoot', {})\n\nTableFooter.displayName = 'TableFooter'\n","import { styled } from '~/stitches'\n\nexport const TableFooterCell = styled('td', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n textAlign: 'left',\n verticalAlign: 'middle'\n})\n\nTableFooterCell.displayName = 'TableFooterCell'\n","import { styled } from '~/stitches'\n\nexport const TableHeaderCell = styled('th', {\n borderBottom: '1px solid $grey200',\n color: 'white',\n fontFamily: '$body',\n fontWeight: 600,\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&[colspan]': {\n textAlign: 'center'\n }\n})\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TableHeaderCell } from './TableHeaderCell'\n\nexport const TABLE_HEADER_THEMES = {\n PRIMARY: 'primary',\n PRIMARY_DARK: 'primaryDark',\n PRIMARY_LIGHT: 'primaryLight',\n LIGHT: 'light',\n WHITE: 'white'\n} as const\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary800'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary1000'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary200',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$grey100',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.WHITE]: {\n [`${TableHeaderCell}`]: {\n bg: 'white',\n color: '$grey1000'\n }\n }\n },\n isSticky: {\n true: {\n position: 'sticky',\n top: 0,\n zIndex: 3\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader = ({\n theme = 'primaryDark',\n isSticky = false,\n ...rest\n}: TableHeaderProps) => {\n return <StyledTableHeader theme={theme} isSticky={isSticky} {...rest} />\n}\n\nTableHeader.displayName = 'TableHeader'\n","import * as React from 'react'\n\nimport { CSS } from '../../stitches'\n\ninterface IUseStickyColumnsCss {\n columnsCss: CSS\n}\n\nexport const useStickyColumnsCss = ({\n numberOfStickyColumns,\n wrapperRef\n}: {\n numberOfStickyColumns: number\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n}): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n const generateColumnsCss = React.useCallback(() => {\n let accWidth = 0\n\n // Getting the table header cells elements to use their width to set the left position in the sticky columns.\n const tableHeaderCells = wrapperRef.current?.querySelectorAll('th')\n const tableHeaderElements = Array.from(tableHeaderCells || [])\n\n // Getting only the number of sticky columns from the elements array that is what we are interested in.\n const stickyColumns = tableHeaderElements.slice(0, numberOfStickyColumns)\n\n const newColumnsCss = stickyColumns.reduce((acc: CSS, column, index) => {\n const elementNumber = index + 1\n const cssObject = {\n ...acc,\n [`& td:nth-of-type(${elementNumber}), th:nth-of-type(${elementNumber})`]:\n {\n position: 'sticky',\n left: `${accWidth}px`,\n minWidth: `${column.offsetWidth}px`, // fixing width for sticky columns\n zIndex: '2'\n }\n }\n\n accWidth += tableHeaderCells?.item(index).clientWidth || 0\n\n return cssObject\n }, {} as CSS)\n\n return newColumnsCss\n }, [numberOfStickyColumns, wrapperRef])\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n const newColumnsCss = generateColumnsCss()\n\n setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef, generateColumnsCss])\n\n return {\n columnsCss\n }\n}\n","import React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Box } from '../box'\nimport { useStickyColumnsCss } from './useStickyColumnsCss'\n\nexport const TableStickyColumnsContainer = ({\n children,\n numberOfStickyColumns = 0,\n css,\n ...restProps\n}: React.PropsWithChildren<{\n numberOfStickyColumns?: number\n css?: CSS\n}>) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const wrapperRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss({\n numberOfStickyColumns,\n wrapperRef\n })\n\n const handleScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const newHasScroll =\n event.currentTarget.scrollWidth > event.currentTarget.clientWidth\n if (newHasScroll !== hasScroll) {\n setHasScroll(newHasScroll)\n }\n }\n\n return (\n <Box\n onScroll={handleScroll}\n role=\"scrollbar\"\n ref={wrapperRef}\n css={{\n overflow: 'auto',\n maxWidth: '100%',\n ...columnsCss,\n [`& td:nth-child(${numberOfStickyColumns}), th:nth-child(${numberOfStickyColumns})`]:\n {\n ...(hasScroll && {\n boxShadow: '$colors$alpha200 -2px -3px 9px 1px',\n clipPath: 'inset(0px -10px 0px 0px)'\n })\n },\n '& td': {\n bg: 'inherit'\n },\n ...css\n }}\n {...restProps}\n >\n {children}\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { TableBody } from './TableBody'\nimport { TableCell } from './TableCell'\nimport { TableFooter } from './TableFooter'\nimport { TableFooterCell } from './TableFooterCell'\nimport { TableHeader } from './TableHeader'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { StyledRow, TableRow } from './TableRow'\nimport { TableStickyColumnsContainer } from './TableStickyColumnsContainer'\n\nconst StyledTable = styled('table', {\n borderCollapse: 'separate',\n borderSpacing: 0,\n fontFamily: '$sans',\n fontSize: '$sm',\n width: '100%',\n variants: {\n size: {\n md: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$4',\n padding: '$1 $3'\n }\n },\n lg: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$5',\n padding: '$2 $3'\n }\n },\n xl: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$6',\n padding: '$4 $3'\n }\n }\n },\n corners: {\n round: {\n [`${TableHeaderCell}`]: {\n '&:first-of-type': { borderTopLeftRadius: '$0' },\n '&:last-of-type': { borderTopRightRadius: '$0' }\n },\n [`${StyledRow}:last-child`]: {\n [`${TableCell}:first-child`]: { borderBottomLeftRadius: '$0' },\n [`${TableCell}:last-child`]: { borderBottomRightRadius: '$0' }\n }\n },\n square: {}\n }\n }\n})\n\ntype TableProps = React.ComponentProps<typeof StyledTable> & {\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n scrollContainerkey?: string\n maxRowDepth?: number\n}\n\nconst TableComponent = ({\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n scrollContainerCss,\n scrollContainerkey,\n ...rest\n}: TableProps) => {\n const tableComponent = <StyledTable size={size} corners={corners} {...rest} />\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n key={scrollContainerkey}\n css={scrollContainerCss}\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n}\n\nexport const Table = Object.assign(TableComponent, {\n Body: TableBody,\n Cell: TableCell,\n Footer: TableFooter,\n FooterCell: TableFooterCell,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Row: TableRow,\n StickyColumnsContainer: TableStickyColumnsContainer\n})\n\nTableComponent.displayName = 'Table'\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & {\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nexport const DataTableBody = ({\n striped = false,\n rowAction,\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return <DataTable.Row row={row} key={row.id} rowAction={rowAction} />\n })}\n </Table.Body>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '~/components/button'\nimport { Divider } from '~/components/divider'\nimport { CSS, styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\nconst StyledContainer = styled(Flex, {\n p: '$2',\n width: '100%',\n mb: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '$6',\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0',\n variants: {\n isRowSelected: {\n true: {\n bg: '$primary100'\n }\n }\n }\n})\n\nconst BulkActionsDefaultActions = ({\n children\n}: {\n children: React.ReactElement\n}): React.ReactElement | null => {\n const { rowSelection } = useDataTable()\n\n if (Object.keys(rowSelection || {}).length > 0) return null\n\n return children\n}\n\nconst BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n children\n}: {\n cancelLabel?: string\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n\nexport const DataTableBulkActions = Object.assign(\n ({\n children,\n ...rest\n }: {\n css?: CSS\n children:\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n | [\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >,\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n ]\n }) => {\n const { rowSelection } = useDataTable()\n\n const isRowSelected = Object.keys(rowSelection || {}).length > 0\n\n return (\n <StyledContainer isRowSelected={isRowSelected} {...rest}>\n <DataTable.MetaData />\n\n <Flex css={{ justifyContent: 'flex-end', alignItems: 'center' }}>\n {children}\n </Flex>\n </StyledContainer>\n )\n },\n {\n DefaultActions: BulkActionsDefaultActions,\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import type { Cell } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\n\ntype DataTableDataCellProps = {\n cell: Cell<Record<string, unknown>, unknown>\n}\n\nexport const DataTableDataCell = ({ cell }: DataTableDataCellProps) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import * as React from 'react'\n\nimport type { EmptyStateProps } from './EmptyState'\n\ntype EmptyStateProviderProps = {\n size?: EmptyStateProps['size']\n}\n\ntype EmptyStateContextValue = EmptyStateProviderProps\n\nexport const EmptyStateContext = React.createContext<EmptyStateContextValue>({})\n\nexport const EmptyStateProvider = ({\n size,\n children\n}: React.PropsWithChildren<EmptyStateProviderProps>) => {\n const value = React.useMemo<EmptyStateContextValue>(() => ({ size }), [size])\n return (\n <EmptyStateContext.Provider value={value}>\n {children}\n </EmptyStateContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateBody = styled(Text, {\n color: '$grey800',\n fontWeight: 400,\n variants: {\n size: {\n xs: {\n fontSize: '$sm',\n mb: '$4'\n },\n sm: {\n fontSize: '$sm',\n mb: '$4'\n },\n md: {\n fontSize: '$sm',\n mb: '$4'\n },\n lg: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n },\n xl: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateBodyProps = React.ComponentProps<typeof StyledEmptyStateBody> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateBody = (props: EmptyStateBodyProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateBody size={size} {...props} />\n}\n","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateImage = styled(Image, {\n variants: {\n size: {\n xs: {\n maxWidth: '56px',\n maxHeight: '32px',\n mb: '$4'\n },\n sm: {\n maxWidth: '84px',\n maxHeight: '48px',\n mb: '$4'\n },\n md: {\n maxWidth: '126px',\n maxHeight: '72px',\n mb: '$4'\n },\n lg: {\n maxWidth: '190px',\n maxHeight: '142px',\n mb: 'calc($4 + $2)'\n },\n xl: {\n maxWidth: '285px',\n maxHeight: '213px',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateImageProps = React.ComponentProps<typeof StyledEmptyStateImage>\n\nexport const EmptyStateImage = (props: EmptyStateImageProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateImage size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateTitle = styled('h2', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n m: 0,\n variants: {\n size: {\n xs: {\n fontSize: '$md',\n mb: '$3'\n },\n sm: {\n fontSize: '$md',\n mb: '$3'\n },\n md: {\n fontSize: '$md',\n mb: '$3'\n },\n lg: {\n fontSize: '$lg',\n mb: '$4'\n },\n xl: {\n fontSize: '$lg',\n mb: '$4'\n }\n }\n }\n})\n\ntype EmptyStateTitleProps = React.ComponentProps<\n typeof StyledEmptyStateTitle\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateTitle = (props: EmptyStateTitleProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateTitle size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateProvider } from './EmptyState.context'\nimport { EmptyStateBody } from './EmptyStateBody'\nimport { EmptyStateImage } from './EmptyStateImage'\nimport { EmptyStateTitle } from './EmptyStateTitle'\n\nconst EmptyStateContainer = styled(Flex, {\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n '& > *:last-child': {\n mb: 0\n },\n variants: {\n size: {\n xs: {\n p: '$2'\n },\n sm: {\n p: '$3'\n },\n md: {\n p: '$4'\n },\n lg: {\n p: '$5'\n },\n xl: {\n p: '$6'\n }\n }\n }\n})\n\nexport type EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nconst EmptyStateComponent = ({ size = 'sm', ...rest }: EmptyStateProps) => (\n <EmptyStateProvider size={size}>\n <EmptyStateContainer size={size} {...rest} />\n </EmptyStateProvider>\n)\n\nexport const EmptyState = Object.assign(EmptyStateComponent, {\n Image: EmptyStateImage,\n Title: EmptyStateTitle,\n Body: EmptyStateBody\n})\n\nEmptyStateComponent.displayName = 'EmptyState'\n","import * as React from 'react'\n\nimport { EmptyState } from '../empty-state'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableEmptyStateProps = React.ComponentProps<typeof EmptyState>\n\nexport const DataTableEmptyState = ({\n children,\n ...rest\n}: DataTableEmptyStateProps) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (!isEmpty) return null\n\n return <EmptyState {...rest}>{children}</EmptyState>\n}\n","import * as React from 'react'\n\nimport { AsyncDataState, DataTableContextType } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableError = ({\n children\n}: {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}) => {\n const { asyncDataState, runAsyncData } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.REJECTED) return null\n\n return children(runAsyncData)\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nexport const OptionalVisuallyHiddenWrapper = ({\n children,\n hidden = false\n}: React.PropsWithChildren<{\n hidden?: boolean\n}>) => {\n if (hidden) return <VisuallyHidden.Root>{children}</VisuallyHidden.Root>\n\n return children ? (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n ) : null\n}\n\nOptionalVisuallyHiddenWrapper.displayName = 'OptionalVisuallyHiddenWrapper'\n","import { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { Input, InputBackground, InputText } from '~/components/input'\nimport { CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n value?: string\n defaultValue?: string\n onValueChange?: (newValue: string) => void\n clearText?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nenum INPUT_ICON {\n SEARCH = 'SEARCH',\n CLEAR = 'CLEAR'\n}\n\nconst StyledIcon = styled(Icon, {\n color: '$grey700',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n right: '$2',\n size: '$1'\n },\n md: {\n right: 10,\n size: 20\n },\n lg: {\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInputText = styled(InputText, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.ForwardRefExoticComponent<SearchInputProps> =\n React.forwardRef(\n (\n {\n size = 'md',\n appearance = 'standard',\n css,\n value,\n defaultValue = '',\n onValueChange,\n clearText = 'Clear',\n onChange,\n ...remainingProps\n },\n ref\n ) => {\n const [inputElRef, setInputElRef] = useCallbackRef()\n const [innerValue, setInnerValue] = React.useState(defaultValue)\n const [activeIcon, setActiveIcon] = React.useState<INPUT_ICON>(\n defaultValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH\n )\n React.useEffect(() => {\n if (typeof value === 'undefined') return\n setInnerValue(value)\n setActiveIcon(value ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }, [value])\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n React.useImperativeHandle(\n ref,\n () => inputElRef.current as HTMLInputElement\n )\n\n const handleClear = () => {\n const inputEl = inputElRef.current\n if (!inputEl) return\n\n // https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call?.(inputEl, '')\n const ev2 = new Event('input', {\n bubbles: true\n })\n inputEl.dispatchEvent(ev2)\n inputEl.focus()\n onValueChange?.('')\n }\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n\n const newValue = event.target.value\n setInnerValue(newValue)\n onValueChange?.(newValue)\n setActiveIcon(newValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }\n\n const getIcon = () => {\n if (activeIcon === INPUT_ICON.SEARCH)\n return (\n <StyledIcon\n is={Search}\n size={size}\n css={{\n size: size == 'sm' ? '$1' : 20,\n top: '50%',\n transform: 'translateY(-50%)'\n }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={iconSize}\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '$1'\n }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <InputBackground\n css={{ position: 'relative', width: 'auto', ...css }}\n size={size}\n appearance={appearance}\n >\n <StyledSearchInputText\n ref={setInputElRef}\n size={size}\n type=\"search\"\n {...remainingProps}\n value={innerValue}\n onChange={handleOnChange}\n css={{ pr: size === 'sm' ? '$5' : '$6' }}\n />\n {getIcon()}\n </InputBackground>\n )\n }\n )\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionalVisuallyHiddenWrapper } from '../../utilities/optional-visually-hidden-wrapper'\nimport { Label } from '../label'\nimport { SearchInput } from '../search-input'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableSearchProps = React.ComponentProps<typeof SearchInput> & {\n label: string\n hideLabel?: boolean\n}\nexport const DataTableGlobalFilter = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}: DataTableSearchProps) => {\n const {\n setGlobalFilter,\n getState,\n resetPagination,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n const { globalFilter } = getState()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n const handleChange = debounce(250, (event) => {\n const {\n target: { value }\n } = event\n\n onChange?.(event)\n resetPagination()\n setGlobalFilter(value)\n })\n\n return (\n <>\n <OptionalVisuallyHiddenWrapper hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionalVisuallyHiddenWrapper>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n isSticky?: boolean\n headerCss?: CSS\n}\n\nexport const DataTableHead = ({\n sortable = true,\n theme = 'light',\n isSticky = false,\n css,\n ...props\n}: DataTableHeadProps) => {\n const {\n getHeaderGroups,\n setIsSortable,\n enableRowSelection,\n getCanSomeRowsExpand\n } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n return (\n <Table.Header\n theme={theme}\n isSticky={isSticky}\n css={{\n '& tr:not(:last-child) > th': {\n borderBottom: 'none'\n },\n '& tr:not(:first-child) > th': {\n borderRadius: '0 !important'\n },\n ...css\n }}\n {...props}\n >\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row key={headerGroup.id}>\n {getCanSomeRowsExpand() && (\n <Table.HeaderCell css={{ width: '$4' }} />\n )}\n {enableRowSelection && (\n <Table.HeaderCell css={{ width: '$4' }}>\n <DataTableSelectAllRowsCheckbox />\n </Table.HeaderCell>\n )}\n {headerGroup.headers.map((header) => (\n <DataTable.HeaderCell header={header} key={header.id} />\n ))}\n </Table.Row>\n )\n })}\n </Table.Header>\n )\n}\n","import { ArrowDown, ArrowUp } from '@atom-learning/icons'\nimport { styled } from '@atom-learning/stitches-react'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\nimport { useHover } from 'react-aria'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\ntype DataTableHeaderProps = React.ComponentProps<typeof Table.HeaderCell> & {\n header: Header<Record<string, unknown>, unknown>\n}\n\nconst StyledTableHeaderCell = styled(Table.HeaderCell, {\n variants: {\n isSortable: {\n true: {\n cursor: 'pointer',\n position: 'relative',\n '& > *': {\n position: 'relative'\n },\n '&:before': {\n content: '',\n position: 'absolute',\n inset: 0,\n opacity: 0,\n backgroundColor: '$primary100',\n transition: 'opacity 0.2s ease'\n },\n '&:hover:before': {\n opacity: 0.5\n }\n }\n }\n }\n})\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown\n}\n\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1', stroke: '$primary900' }}\n />\n)\n\nexport const DataTableHeaderCell = ({\n header,\n children,\n css,\n ...props\n}: DataTableHeaderProps) => {\n const sortDirection = header.column.getIsSorted()\n const { isSortable: isSortableTable } = useDataTable()\n // false for display columns, e.g. \"Actions\"\n const isDataColumn = header.column.getCanSort()\n\n const { hoverProps, isHovered } = useHover({})\n\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLTableCellElement>,\n callback: (event: unknown) => void | undefined\n ) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n callback(event as unknown)\n }\n }\n\n const headerSortingHandler = header.column.getToggleSortingHandler()\n\n return (\n <StyledTableHeaderCell\n isSortable={isSortableTable && isDataColumn}\n colSpan={header.colSpan}\n onClick={\n isSortableTable && isDataColumn && headerSortingHandler\n ? headerSortingHandler\n : undefined\n }\n onKeyDown={(event) =>\n isSortableTable &&\n isDataColumn &&\n headerSortingHandler &&\n handleKeyDown(event, headerSortingHandler)\n }\n tabIndex={isSortableTable && isDataColumn ? 0 : -1}\n {...hoverProps}\n css={css}\n {...props}\n >\n <Flex\n align=\"center\"\n justify={header.colSpan > 1 ? 'center' : 'flex-start'}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex\n align=\"center\"\n css={{\n position: 'relative',\n width: '24px',\n height: '24px',\n ml: '$2',\n bg: isHovered ? '$primary200' : '$primary100',\n borderRadius: '$0'\n }}\n >\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n </Flex>\n </StyledTableHeaderCell>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Loader } from '../loader'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nconst PendingState = styled(Loader, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 1\n})\n\nexport const DataTableLoading = (\n props: React.ComponentProps<typeof PendingState>\n) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData = ({\n copy,\n css\n}: {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}) => {\n const { getState, columns, getRowModel, rowSelection } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.length\n\n const selectedRows = Object.keys(rowSelection || {}).length\n\n const copyMerged = { ...defaultCopy, ...copy }\n\n const getColumnDisplayName = (id: string) => {\n const sortedColumn = columns.find((col) => col.id === id)\n return sortedColumn?.header || id\n }\n\n const getSortingString = (sorting) => {\n return `${copyMerged.separator} ${\n copyMerged.sorted_by\n } ${getColumnDisplayName(sorting[0].id)} ${\n sorting[0].desc ? copyMerged.descending : copyMerged.ascending\n }`\n }\n\n return (\n <Text weight=\"bold\" css={css}>{`${selectedRows || totalRows} ${\n (selectedRows || totalRows) === 1 ? 'item' : 'items'\n } ${selectedRows ? 'selected' : ''} ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableRowSelectionCheckbox = ({\n row,\n checked,\n onCheckedChange,\n label = `Row ${row.id} selection`\n}: {\n row: Row<Record<string, unknown>>\n checked: boolean | 'indeterminate'\n onCheckedChange: (value: boolean) => void\n label?: string\n}): React.ReactElement => {\n const { tableId } = useDataTable()\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_row_${row.id}_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n <Checkbox\n css={{ ml: row.depth ? `$${row.depth * 2}` : 0 }}\n checked={checked}\n onCheckedChange={onCheckedChange}\n name={`${tableId}_row_${row.id}_selection`}\n disabled={!row.getCanSelect()}\n />\n </>\n )\n}\n","import { ChevronDown, ChevronRight } from '@atom-learning/icons'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\n\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nconst StyledRow = styled(Table.Row, {\n bg: 'initial',\n variants: {\n isSelected: {\n true: {\n // the !important rule is needed because the bg property is set elsewhere and it's more specific than this one would be without the !important modifier.\n bg: '$primary100 !important'\n }\n },\n isDisabled: {\n true: {\n opacity: '30%'\n }\n },\n isFocusable: {\n true: {\n '&:focus': {\n outline: '2px solid $primary500',\n outlineOffset: '-4px',\n '& td': {\n bg: 'transparent'\n }\n }\n }\n }\n }\n})\n\nconst isElementInteractive = (element: Element | null): boolean => {\n if (!element) return false\n if (element.closest('button, a, input, select, textarea')) return true\n if (element.getAttribute('role') === 'button') return true\n return false\n}\n\nexport const DataTableRow = ({ row, rowAction }: DataTableRowProps) => {\n const { enableRowSelection, disabledRows, getCanSomeRowsExpand } =\n useDataTable()\n\n const isDisabled = !!disabledRows?.[row.id]\n\n const toggleExpandHandler = row.getToggleExpandedHandler()\n const toggleSelectHandler = row.getToggleSelectedHandler()\n\n const getCheckedState = (): boolean | 'indeterminate' => {\n if (row.getIsSomeSelected()) return 'indeterminate'\n return row.getIsSelected()\n }\n\n const handleRowClick = (\n rowData: Row<Record<string, unknown>>,\n event: React.MouseEvent<HTMLTableRowElement>\n ) => {\n if (!rowAction) return\n\n // Skip if clicking on an interactive element\n const rowElement = (event.target as Element).closest('tr')\n if (!rowElement || isElementInteractive(event.target as Element)) {\n return\n }\n\n rowAction(rowData.original, event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n if (isElementInteractive(event.target as Element)) {\n return\n }\n event.preventDefault()\n handleRowClick(\n row,\n event as unknown as React.MouseEvent<HTMLTableRowElement>\n )\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const nextRow = currentRow?.nextElementSibling as HTMLElement\n if (nextRow && nextRow.tagName === 'TR') {\n nextRow.focus()\n }\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const previousRow = currentRow?.previousElementSibling as HTMLElement\n if (previousRow && previousRow.tagName === 'TR') {\n previousRow.focus()\n }\n }\n }\n\n return (\n <StyledRow\n isSelected={row.getIsSelected()}\n isDisabled={isDisabled}\n isFocusable={!!rowAction && !isDisabled}\n {...(rowAction && {\n onClick: (event) => handleRowClick(row, event),\n tabIndex: 0,\n css: { cursor: 'pointer' },\n onKeyDown: handleKeyDown\n })}\n >\n {getCanSomeRowsExpand() && (\n <Table.Cell\n data-testid={`expand-icon-${row.id}`}\n css={{ width: '$4', cursor: row.getCanExpand() ? 'pointer' : 'auto' }}\n onClick={toggleExpandHandler}\n >\n {row.getCanExpand() && (\n <Icon is={row.getIsExpanded() ? ChevronDown : ChevronRight} />\n )}\n </Table.Cell>\n )}\n\n {enableRowSelection && (\n <Table.Cell css={{ width: '$4' }}>\n <DataTableRowSelectionCheckbox\n row={row}\n checked={getCheckedState()}\n onCheckedChange={toggleSelectHandler}\n />\n </Table.Cell>\n )}\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </StyledRow>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n headerCss?: CSS\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme,\n css,\n scrollOptions = {\n numberOfStickyColumns: 0,\n hasStickyHeader: false\n },\n rowAction,\n ...props\n}: DataTableTableProps) => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n enableRowSelection,\n tableId\n } = useDataTable()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n\n <Table\n {...props}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCss={scrollOptions.scrollContainerCss}\n scrollContainerkey={buildScrollContainerKey()}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n css={scrollOptions.headerCss}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n </>\n )\n}\n","import { DragHandle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nexport const StyledHandle = styled(ActionIcon, {\n color: 'inherit !important',\n fill: 'currentColor',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n ['*']: {\n pointerEvents: 'none'\n }\n },\n variants: {\n isDragging: {\n true: {\n cursor: 'grabbing'\n },\n false: {\n cursor: 'grab'\n }\n }\n }\n})\n\nexport type THandleProps = Omit<\n React.ComponentProps<typeof StyledHandle>,\n 'children'\n> &\n Pick<React.ComponentProps<typeof Icon>, 'size'>\n\nexport const Handle: React.ForwardRefExoticComponent<THandleProps> =\n React.forwardRef(({ isDragging, size, ...rest }, ref) => {\n return (\n <StyledHandle\n ref={ref}\n isDragging={isDragging}\n appearance=\"simple\"\n hasTooltip={false}\n size={size}\n {...rest}\n >\n <Icon is={DragHandle} />\n </StyledHandle>\n )\n })\n\nHandle.displayName = 'Handle'\n","import { useSortable } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Handle as DragHandle, THandleProps } from './Handle'\n\nexport type TSortableHandleProps = {\n targetId: React.ReactText\n disabled?: boolean\n label?: string\n} & Omit<THandleProps, 'label'>\n\nexport const SortableHandle = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}: TSortableHandleProps) => {\n const { attributes, listeners, isDragging, setActivatorNodeRef } =\n useSortable({ id: targetId })\n\n return (\n <DragHandle\n ref={setActivatorNodeRef}\n isDragging={isDragging}\n label={label}\n disabled={disabled}\n {...(!disabled ? listeners : {})}\n {...(!disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableHandle.displayName = 'SortableHandle'\n","import type { UniqueIdentifier } from '@dnd-kit/core'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport type TSortableItemProps = {\n id: UniqueIdentifier\n asChild?: boolean\n isDragHandle?: boolean\n disabled?: boolean\n css?: CSS\n}\n\nconst StyledSlot = styled(Slot)\n\nexport const SortableItem = ({\n id,\n asChild = false,\n css,\n isDragHandle = false,\n disabled,\n ...rest\n}: React.PropsWithChildren<TSortableItemProps>) => {\n const { transform, setNodeRef, isDragging, listeners, attributes } =\n useSortable({ id })\n\n const Component = asChild ? StyledSlot : Box\n return (\n <Component\n ref={setNodeRef}\n css={{\n ['--scale']: 1,\n transform:\n 'translateX(calc(var(--translate-x) * 1px)) translateY(calc(var(--translate-y) * 1px)) scale(var(--scale))',\n zIndex: isDragging ? 5 : undefined,\n ['--translate-x']: transform?.x || 0,\n ['--translate-y']: transform?.y || 0,\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n ['*']: {\n pointerEvents: 'none'\n }\n },\n ...(isDragHandle ? { cursor: isDragging ? 'grabbing' : 'grab' } : {}),\n ...css\n }}\n data-dragging={isDragging}\n data-disabled={disabled}\n {...(isDragHandle && !disabled ? listeners : {})}\n {...(isDragHandle && !disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableItem.displayName = 'SortableItem'\n","import type { DragEndEvent, UniqueIdentifier } from '@dnd-kit/core'\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates\n} from '@dnd-kit/sortable'\nimport * as React from 'react'\n\ntype TSortableRootProps = {\n sortableIds: React.ReactText[]\n onSortChange: (onSortChangeData: {\n order: UniqueIdentifier[]\n oldIndex: number\n newIndex: number\n }) => void\n}\n\nexport const SortableRoot = ({\n sortableIds,\n onSortChange,\n children\n}: React.PropsWithChildren<TSortableRootProps>) => {\n const [order, setOrder] = React.useState<React.ReactText[]>(sortableIds)\n React.useEffect(() => {\n setOrder(sortableIds)\n }, [sortableIds])\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n )\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (active.id && over?.id && active.id !== over?.id) {\n setOrder((order) => {\n const oldIndex = order.indexOf(active.id)\n const newIndex = order.indexOf(over.id)\n const newOrder = arrayMove(order, oldIndex, newIndex)\n onSortChange({ order: newOrder, oldIndex, newIndex })\n return newOrder\n })\n }\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={order}>{children}</SortableContext>\n </DndContext>\n )\n}\n\nSortableRoot.displayName = 'SortableRoot'\n","import { SortableHandle as Handle } from './SortableHandle'\nimport { SortableItem as Item } from './SortableItem'\nimport { SortableRoot as Root } from './SortableRoot'\n\nexport const Sortable = { Root, Item, Handle }\n","import type { Row } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Sortable } from '~/components/sortable'\n\nimport { Table } from '../../table'\nimport { DataTableDataCell } from '../DataTableDataCell'\nexport type DataTableDraggableRowProps = React.ComponentProps<\n typeof Table.Row\n> & {\n row: Row<Record<string, unknown>>\n idColumn?: string\n}\n\nexport const DragAndDropTableRow = ({\n row,\n idColumn = 'id'\n}: DataTableDraggableRowProps) => {\n const rowId = row.original[idColumn] as React.ReactText\n return (\n <Sortable.Item id={rowId} asChild>\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n if (i === 0) {\n return (\n <Table.Cell key={cell.id}>\n <Sortable.Handle\n targetId={rowId}\n css={{ display: 'inline-block' }}\n />\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n }\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n </Sortable.Item>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../../table'\nimport { useDataTable } from '../DataTableContext'\nimport { DragAndDropTableRow } from './DragAndDropTableRow'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & { idColumn?: string }\n\nexport const DragAndDropTableBody = ({\n striped = false,\n idColumn = 'id',\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return (\n <DragAndDropTableRow row={row} key={row.id} idColumn={idColumn} />\n )\n })}\n </Table.Body>\n )\n}\n","import { arrayMove } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Sortable } from '../../sortable'\nimport { Table } from '../../table'\nimport { DataTable } from '../DataTable'\nimport { AsyncDataState, TAsyncDataResult } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DataTableLoading } from '../DataTableLoading'\nimport type { DataTableTableProps } from '../DataTableTable'\nimport { DragAndDropTableBody } from './DragAndDropTableBody'\n\ntype DragAndDropTableProps = DataTableTableProps & {\n idColumn?: string\n onDragAndDrop?: (onDragAndDropData: {\n oldIndex: number\n newIndex: number\n newData: TAsyncDataResult\n }) => void\n}\n\nexport const DragAndDropTable = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}: DragAndDropTableProps) => {\n const { asyncDataState, data, setData } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n\n const rowIds = React.useMemo(\n () =>\n data.results.map((row) => {\n return row[idColumn] as React.ReactText\n }),\n [data]\n )\n const handleSortChange = React.useCallback(\n ({ oldIndex, newIndex }) => {\n const sortedResults = arrayMove(data.results, oldIndex, newIndex)\n const newData = { results: sortedResults, total: data.total }\n setData({ results: sortedResults, total: data.total })\n onDragAndDrop?.({ oldIndex, newIndex, newData })\n },\n [data, onDragAndDrop]\n )\n\n return (\n <Sortable.Root onSortChange={handleSortChange} sortableIds={rowIds}>\n <DataTableLoading />\n <Table\n {...props}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head theme={theme} sortable={sortable} />\n <DragAndDropTableBody striped={striped} idColumn={idColumn} />\n </Table>\n </Sortable.Root>\n )\n}\n","export enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n\nexport const VIEW_ALL_POPOVER = 'VIEW_ALL_POPOVER'\nexport const GO_TO_PREVIOUS_PAGE = 'GO_TO_PREVIOUS_PAGE'\nexport const GO_TO_NEXT_PAGE = 'GO_TO_NEXT_PAGE'\n","import {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationItemsToRender } from './types'\n\nexport const getPaginationElementsToRender = (\n currentPage: number,\n pagesCount: number,\n visibleElementsCount: number\n): PaginationItemsToRender => {\n const paginationPages = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n /*\n * As we always show the `<` `>` arrows,\n * subtract 2 from `visibleElementsCount` (one for each of the GO_TO_PREVIOUS/NEXT_PAGE arrows)\n * to get the `visiblePagesCount`\n */\n let visiblePagesCount = visibleElementsCount - 2\n const withPreviousNextPageArrows = (paginationPages) => [\n GO_TO_PREVIOUS_PAGE,\n ...paginationPages,\n GO_TO_NEXT_PAGE\n ]\n\n /**\n * If fewer pages than threshold for truncating render them all.\n *\n * pagesCount: 6\n * visibleElementsCount: >=6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, 3, 4, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | 3 | | 4 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (pagesCount <= visiblePagesCount) {\n return withPreviousNextPageArrows(paginationPages)\n }\n\n /**\n * If current page is either at the very start or at the very end of the pages\n */\n const canFitEdgePage = visibleElementsCount >= 5\n const canFitViewAllPopover = visibleElementsCount >= 4\n const canFitPages = visibleElementsCount >= 3\n\n if (canFitViewAllPopover) {\n // Subtract one from visiblePagesCount to accomodate for us adding the `[…]` VIEW_ALL_POPOVER\n visiblePagesCount -= 1\n }\n\n if (canFitEdgePage) {\n // Subtract one more from visiblePagesCount to accomodate for us adding the GO_TO_PREVIOUS/NEXT_PAGE arrows\n visiblePagesCount -= 1\n }\n\n const firstPage = paginationPages[0]\n const lastPage = paginationPages[paginationPages.length - 1]\n\n /**\n * If we're truncating and current page is at the start of the page list,\n * render the initial truncated page list, e.g.\n *\n * pagesCount: 8\n * currentPage: 1/2\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | … | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage < visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitPages) {\n newPaginationItems.push(...paginationPages.slice(0, visiblePagesCount))\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitEdgePage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page is towards the end of the\n * page list (depending on visibleElementsCount),\n * render a truncated page list from the end, e.g.\n *\n * pagesCount: 8\n * currentPage: 7/8\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, VIEW_ALL_POPOVER, 7, 8, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | … | | 7 | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage > pagesCount - visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitEdgePage) {\n newPaginationItems.push(firstPage)\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitPages) {\n newPaginationItems.push(\n ...paginationPages.slice(pagesCount - visiblePagesCount, pagesCount)\n )\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page doesn't meet any of the previous conditions\n * (we're in the middle)\n * render a truncated page list from a specific index relative to `currentPage`, e.g.\n *\n * currentPage: 4\n * visibleElementsCount: 6 // VisibleElementsAmount.LESS\n * returns [GO_TO_PREVIOUS_PAGE, 3, 4, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 3 | | 4 | | … | | 6 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n * currentPage: 6\n * visibleElementsCount: 8 // VisibleElementsAmount.MORE\n * returns [GO_TO_PREVIOUS_PAGE, 4, 5, 6, 7, VIEW_ALL_POPOVER, 10, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 4 | | 5 | | 6 | | 7 | | … | | 10 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n */\n const canFitCurrentPage = canFitPages\n const canFitCurrentPageAndPreviousPage = visibleElementsCount >= 6\n const canFitCurrentPageAndPreviousPageAndNextPage = visibleElementsCount >= 7\n const canFitLastPage = canFitEdgePage\n\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitCurrentPageAndPreviousPageAndNextPage) {\n newPaginationItems.push(\n ...paginationPages.slice(\n currentPage + 1 - visiblePagesCount,\n currentPage + 1\n )\n )\n } else if (canFitCurrentPageAndPreviousPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - visiblePagesCount, currentPage)\n )\n } else if (canFitCurrentPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - 1, currentPage - 1 + 1)\n )\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitLastPage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[],\n pagesCount: number\n): number | undefined => {\n if (startPage > pagesCount) return\n let nextPage = startPage\n while (disabledPages.includes(nextPage)) {\n nextPage++\n }\n return nextPage\n}\n\nexport const findPreviousAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number | undefined => {\n if (startPage < 1) return\n let previousPage = startPage\n while (disabledPages.includes(previousPage)) {\n previousPage--\n }\n return previousPage\n}\n","import * as React from 'react'\n\nimport { VisibleElementsAmount } from '../pagination.constants'\nimport {\n findNextAvailablePage,\n findPreviousAvailablePage,\n getPaginationElementsToRender\n} from '../pagination.helper'\nimport type { PaginationContextValue, PaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<PaginationContextValue>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n pagesCount: 0,\n onItemHover: () => null,\n paginationItems: [],\n labels: {},\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}: React.PropsWithChildren<PaginationProviderProps>) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n\n const currentPage = selectedPage || internalCurrentPage\n\n const goToPage = React.useCallback(\n (pageNumber: number) => {\n setInternalCurrentPage(pageNumber)\n onSelectedPageChange?.(pageNumber)\n },\n [onSelectedPageChange]\n )\n\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n const goToPreviousPage = React.useCallback(() => {\n if (previousAvailablePage) goToPage(previousAvailablePage)\n }, [goToPage, previousAvailablePage])\n\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(\n nextPage,\n disabledPages,\n pagesCount\n )\n const goToNextPage = React.useCallback(() => {\n if (nextAvailablePage) goToPage(nextAvailablePage)\n }, [goToPage, nextAvailablePage])\n\n const paginationItems = getPaginationElementsToRender(\n currentPage,\n pagesCount,\n visibleElementsCount\n )\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n paginationItems,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n indicatedPages,\n paginationItems,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n ])\n\n return (\n <PaginationContext.Provider value={value}>\n {children}\n </PaginationContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { PaginationContext } from './pagination-context/PaginationContext'\nimport type { PaginationContextValue } from './types'\n\nexport const usePagination = (): PaginationContextValue => {\n const context = React.useContext(PaginationContext)\n\n if (!context) {\n throw new Error(\n 'Ensure that you wrap any components with the PaginationProvider component'\n )\n }\n\n return context\n}\n","import { ChevronRight } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n ml: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationNextButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToNextPage, labels, nextAvailablePage } = usePagination()\n\n const isDisabled = !nextAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToNextPage}\n disabled={isDisabled}\n {...props}\n label={labels?.nextPageButtonLabel || 'Next page'}\n >\n <Icon is={ChevronRight} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport { disabledStyle, focusVisibleStyleBlock } from '~/utilities'\n\nimport { styled } from '../../stitches'\nimport type { PaginationPageProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: '1px solid transparent',\n borderRadius: '$0',\n cursor: 'pointer',\n fontFamily: '$body',\n justifyContent: 'center',\n whiteSpace: 'nowrap',\n width: 'max-content',\n display: 'flex',\n flexDirection: 'column',\n p: '0',\n fontWeight: 400,\n color: '$textSubtle',\n bg: '$base1',\n position: 'relative',\n\n '&:not(:disabled)': {\n '&:hover': {\n color: '$textRegular',\n bg: '$base2'\n },\n '&:active': {\n color: '$textBold',\n bg: '$base3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&[disabled]': {\n ...disabledStyle,\n pointerEvents: 'none'\n },\n variants: {\n size: {\n md: {\n width: '$4',\n height: '$4'\n }\n },\n selected: {\n true: {\n border: '1px solid $accent9',\n color: '$accent9',\n fontWeight: 600,\n '&:not(:disabled)': {\n '&:hover': {\n borderColor: '$accent10',\n color: '$accent10'\n },\n '&:active': {\n borderColor: '$accent11',\n fontColor: '$accent11'\n }\n }\n }\n },\n indicated: {\n true: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n },\n\n compoundVariants: [\n {\n selected: true,\n indicated: true,\n css: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n boxShadow: '$colors$accent9 0px 0px 0px 1px',\n '&:not(:focus-visible)': {\n borderColor: 'white !important'\n },\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n ]\n})\n\nexport const PaginationPage = ({\n pageNumber,\n css,\n onClick\n}: PaginationPageProps) => {\n const { currentPage, goToPage, indicatedPages, disabledPages, onItemHover } =\n usePagination()\n\n const isIndicated = indicatedPages.includes(pageNumber)\n const isDisabled = disabledPages.includes(pageNumber)\n\n const isSelected = currentPage === pageNumber\n\n const handleOnHover = () => {\n if (isSelected || isDisabled) return\n onItemHover?.(pageNumber)\n }\n\n const handleOnClick = (pageNumber) => {\n onClick?.()\n goToPage(pageNumber)\n }\n\n return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => handleOnClick(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {pageNumber}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Flex, Icon, Popover } from '..'\nimport { PaginationPage } from './PaginationPage'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n const [isOpen, setIsOpen] = React.useState<boolean>(false)\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen} defaultOpen={false}>\n <Popover.Trigger asChild>\n {children || (\n <ActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n label={labels?.popoverTriggerLabel || 'Open pagination popover'}\n data-testid=\"pagination_popover_trigger\"\n >\n <Icon is={Ellypsis} />\n </ActionIcon>\n )}\n </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Flex\n css={{\n p: '$4',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '$1',\n justifyContent: 'center'\n }}\n >\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationPage\n key={pageNumber}\n pageNumber={pageNumber}\n onClick={() => setIsOpen(false)}\n />\n )\n })}\n </Flex>\n </Popover.Content>\n </Popover>\n )\n}\n","import { ChevronLeft } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n mr: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationPreviousButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToPreviousPage, labels, previousAvailablePage } = usePagination()\n\n const isDisabled = !previousAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToPreviousPage}\n disabled={isDisabled}\n {...props}\n label={labels?.previousPageButtonLabel || 'Previous page'}\n >\n <Icon is={ChevronLeft} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPage } from './PaginationPage'\nimport { PaginationPopover } from './PaginationPopover'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport { usePagination } from './usePagination'\n\nexport const PaginationItems = (): JSX.Element => {\n const { paginationItems } = usePagination()\n\n return (\n <>\n {paginationItems.map((paginationItem, i) => {\n switch (paginationItem) {\n case VIEW_ALL_POPOVER:\n return <PaginationPopover key={paginationItem + i} />\n case GO_TO_PREVIOUS_PAGE:\n return <PaginationPreviousButton key={paginationItem} />\n case GO_TO_NEXT_PAGE:\n return <PaginationNextButton key={paginationItem} />\n default:\n return (\n <PaginationPage\n key={paginationItem}\n pageNumber={paginationItem}\n />\n )\n }\n })}\n </>\n )\n}\n","import * as React from 'react'\n\nimport { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '../flex'\nimport { VisibleElementsAmount } from './pagination.constants'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationItems } from './PaginationItems'\nimport { PaginationPopover } from './PaginationPopover'\nimport type { PaginationProps, PaginationProviderProps } from './types'\n\nconst PaginationComponent = ({\n colorScheme,\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children,\n ...rest\n}: PaginationProps) => {\n if (!pagesCount) return null\n\n const paginationProviderProps: PaginationProviderProps = {\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount,\n pagesCount,\n indicatedPages,\n disabledPages,\n onItemHover,\n labels\n }\n\n return (\n <PaginationProvider {...paginationProviderProps}>\n <ColorScheme base=\"grey1\" accent=\"primary1\" {...colorScheme} asChild>\n <Flex gap={1} {...rest}>\n {children || <PaginationItems />}\n </Flex>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums',\n flexWrap: 'wrap',\n width: '100%',\n gap: '$4',\n mt: '$4',\n '@md': {\n flexDirection: 'row'\n }\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n","import { DataTableBody } from './DataTableBody'\nimport { DataTableBulkActions } from './DataTableBulkActions'\nimport { DataTableProvider } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableEmptyState } from './DataTableEmptyState'\nimport { DataTableError } from './DataTableError'\nimport { DataTableGlobalFilter } from './DataTableGlobalFilter'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableHeaderCell } from './DataTableHeaderCell'\nimport { DataTableLoading } from './DataTableLoading'\nimport { DataTableMetaData } from './DataTableMetaData'\nimport { DataTableRow } from './DataTableRow'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\n/** Context provider for DataTable state and logic.\n *\n * Children can call `useDataTable` to access everything provided by `@tanstack/react-table` plus\n * the functionality we've built on top.\n */\nexport const DataTable = Object.assign(DataTableProvider, {\n /** Default table body implementation for `DataTable`.\n *\n * Can be configured with alternating colours of rows. If you need more customisation options,\n * you can build your own implementation with `useDataTable()` and the UI-only `Table` components.\n */\n Body: DataTableBody,\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: DataTableDataCell,\n\n /**\n * Used in place of `DataTable.Table` to render a table with rows that the user can sort by drag-and-drop\n */\n DragAndDropTable: DragAndDropTable,\n\n /** Default global search implementation for `DataTable`\n *\n * If you need more customisation options, you can compose your own implementation with our UI-only input components and `useDataTable`.\n */\n GlobalFilter: DataTableGlobalFilter,\n\n /** Default table head implementation\n *\n * Can be configured to be sortable and with different visual themes.\n * If you need more customisation options, you can build your own implementation\n * with `useDataTable` and the UI-only `Table` components.\n */\n Head: DataTableHead,\n\n /** Default header implementation for `DataTable`\n *\n * Can be configured to make the column sortable. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n HeaderCell: DataTableHeaderCell,\n\n /** Default pagination implementation for `DataTable`\n *\n * Can navigate forward, backward, or to any specific page. If you need more customisation options,\n * you can build your own implementation with `useDataTable` and other UI components.\n *\n */\n MetaData: DataTableMetaData,\n\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n Pagination: Pagination,\n\n /** Default row implementation for `DataTable`\n *\n * Renders all visible cells as `Table.Cell`. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n Row: DataTableRow,\n\n /** Default table implementation for `DataTable`.\n *\n * Can be configured with sortable columns and different visual themes.\n *\n * If you need more customisation options, you can compose your own implementation with\n * lower-level `DataTable` components or build the whole thing from\n * scratch with `useDataTable` and the UI-only `Table` components.\n *\n */\n Table: DataTableTable,\n\n /** Default loading implementation for remote data\n *\n * Renders a loading component while fetching the paginated data using `getAsyncData`.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState`\n * can be retrieved from `useDataTable`\n */\n Loading: DataTableLoading,\n\n /** Default error implementation for remote data\n *\n * Renders an error component when `getAsyncData` promise rejects.\n * Children are rendered as a function, it exposes a `runAsyncData` function to the children component.\n * `runAsyncData()` can be used to retry fetching the paginated data with the current pageIndex, pageSize\n * and sorting parameters or your own custom paginated options.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState` and `runAsyncData()`\n * can be retrieved from `useDataTable`\n *\n */\n Error: DataTableError,\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: DataTableEmptyState,\n\n /** Empty state implementation for `DataTable`.\n *\n * Renders a checkbox on the header, allowing for bulk selection/deselection of all selectable rows\n */\n SelectAllRowsCheckbox: DataTableSelectAllRowsCheckbox,\n\n /** Empty state implementation for `DataTable`.\n *\n * Renders a checkbox on the header, allowing for individual selection/deselection of any selectable row\n */\n RowSelectionCheckbox: DataTableRowSelectionCheckbox,\n\n /** Empty state implementation for `DataTable`.\n *\n * Renders a checkbox on the header, allowing for individual selection/deselection of any selectable row\n */\n BulkActions: DataTableBulkActions\n})\n","export const monthNamesShort = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n\nexport const weekdayNamesShort = [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n]\n\nexport const DEFAULT_LABELS = {\n open: 'Open calendar',\n next: 'Next month',\n previous: 'Previous month',\n nextYear: 'Next year',\n previousYear: 'Previous year'\n}\n","import { styled } from '~/stitches'\n\nexport const Day = styled('button', {\n bg: 'transparent',\n border: 'none',\n borderRadius: '$round',\n color: '$grey900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$grey200'\n },\n '&:active': {\n color: 'white',\n bg: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: '0.3',\n cursor: 'default'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary800',\n color: 'white',\n '&:hover': { bg: '$primary800' }\n }\n },\n isToday: {\n true: { bg: '$grey200' }\n },\n isOutsideMonth: {\n true: { color: '$grey600' }\n }\n }\n})\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport { useDayzed } from 'dayzed'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Button } from '~/components/button'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { DEFAULT_LABELS, monthNamesShort, weekdayNamesShort } from './constants'\nimport { Day } from './Day'\n\nconst Grid = styled('div', {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gridGap: '$1 $2'\n})\n\nconst StyledButton = styled(Button, {\n color: '$grey1000',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$grey1000 !important',\n fontWeight: 400,\n '&:hover': {\n bg: '$grey200 !important',\n color: '$grey1000 !important'\n },\n '&[disabled]': { bg: 'white !important' }\n }\n }\n }\n})\n\nexport type CalendarTranslationProps = {\n monthNames?: string[]\n weekdayNames?: string[]\n labels?: {\n open: string\n next: string\n previous: string\n nextYear: string\n previousYear: string\n }\n}\n\ntype CalendarProps = DayzedInterface &\n CalendarTranslationProps & {\n css?: CSS\n refDateToday?: React.RefObject<HTMLButtonElement>\n refDateSelected?: React.RefObject<HTMLButtonElement>\n setYear: (date: Date) => Promise<void>\n }\n\nconst offsetWeekdayNames = (\n weekdayNames: string[],\n firstDayOfWeek: number\n): string[] => {\n const start = weekdayNames.slice(0, firstDayOfWeek)\n const end = weekdayNames.slice(firstDayOfWeek)\n return end.concat(start)\n}\n\nexport const Calendar = ({\n css,\n refDateSelected,\n refDateToday,\n firstDayOfWeek = 0,\n monthNames = monthNamesShort,\n weekdayNames = weekdayNamesShort,\n labels = DEFAULT_LABELS,\n date = new Date(),\n minDate,\n maxDate,\n setYear,\n ...remainingProps\n}: CalendarProps) => {\n const [showYears, setShowYears] = React.useState<boolean>(false)\n const [currentYear, setCurrentYear] = React.useState<number>(\n date?.getFullYear()\n )\n\n const handleSetYear = (year: number): void => {\n const newDate = date\n newDate.setFullYear(year)\n setYear(newDate)\n setShowYears(false)\n }\n\n const isAtMinYear = minDate && currentYear - 16 <= minDate.getFullYear()\n const isAtMaxYear = maxDate && currentYear >= maxDate.getFullYear()\n\n const yearList = Array.from({ length: 16 }, (_, i) => {\n const year = currentYear - i\n if (\n (maxDate && year > maxDate.getFullYear()) ||\n (minDate && year < minDate.getFullYear())\n )\n return 0\n return year\n })\n\n const { calendars, getBackProps, getForwardProps, getDateProps } = useDayzed({\n firstDayOfWeek,\n showOutsideDays: true,\n date,\n minDate,\n maxDate,\n ...remainingProps\n })\n\n if (!calendars.length) return null\n\n return (\n <Box\n css={{ position: 'relative', width: 'min-content', mt: '-$1', ...css }}\n >\n <Flex css={{ position: 'absolute', top: 0, right: '-$1' }}>\n <ActionIcon\n label={labels[showYears ? 'previousYear' : 'previous']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getBackProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear - 16)\n })}\n disabled={showYears && isAtMinYear}\n >\n <Icon is={ChevronLeft} />\n </ActionIcon>\n <ActionIcon\n label={labels[showYears ? 'nextYear' : 'next']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getForwardProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear + 16)\n })}\n disabled={showYears && isAtMaxYear}\n >\n <Icon is={ChevronRight} />\n </ActionIcon>\n </Flex>\n {showYears && (\n <Grid\n css={{\n gridTemplateColumns: 'repeat(4, 1fr)',\n pt: '$7',\n direction: 'rtl',\n gridGap: '$3 $1'\n }}\n >\n {yearList.map((year, i) => {\n const isCurrentYear = year === date.getFullYear()\n if (!year)\n return <Box key={i} css={{ width: '$6', height: '$4' }} />\n\n return (\n <StyledButton\n key={`${year}${i}`}\n theme={isCurrentYear ? 'primary' : 'neutral'}\n onClick={() => handleSetYear(year)}\n selected={isCurrentYear}\n >\n {year}\n </StyledButton>\n )\n })}\n </Grid>\n )}\n {!showYears &&\n calendars.map(({ month, year, weeks }) => (\n <Box key={`${month}${year}`}>\n <Flex css={{ height: '$4', alignItems: 'center', mb: '$4' }}>\n <Button\n theme=\"neutral\"\n css={{ px: '0', color: '$grey1000' }}\n onClick={() => setShowYears(true)}\n >\n {monthNames[month]} {year}\n </Button>\n </Flex>\n <Grid css={{ mb: '$3' }}>\n {offsetWeekdayNames(weekdayNames, firstDayOfWeek).map(\n (weekday) => (\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"bold\"\n key={`${month}${year}${weekday}`}\n css={{ textAlign: 'center' }}\n >\n {weekday}\n </Text>\n )\n )}\n </Grid>\n <Grid>\n {weeks.map((week, weekIndex) =>\n week.map((dateObj, index) => {\n const key = `${month}${year}${weekIndex}${index}`\n\n if (!dateObj) return <div key={key} />\n\n const { date, selected, today, prevMonth, nextMonth } =\n dateObj\n\n return (\n <Day\n isOutsideMonth={prevMonth || nextMonth}\n isSelected={selected}\n isToday={today}\n key={key}\n ref={\n selected ? refDateSelected : today ? refDateToday : null\n }\n {...getDateProps({ dateObj })}\n type=\"button\"\n >\n {date.getDate()}\n </Day>\n )\n })\n )}\n </Grid>\n </Box>\n ))}\n </Box>\n )\n}\n\nCalendar.displayName = 'Calendar'\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Arrow, Close, Content } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { POPOVER_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nconst StyledContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\n boxShadow: '$2',\n maxWidth: '90vw',\n p: '$sizes$2',\n pr: '$6',\n position: 'relative',\n zIndex: POPOVER_Z_INDEX,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '200px' },\n md: { maxWidth: '400px' },\n lg: { maxWidth: '600px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: 'white',\n zIndex: 1,\n '[data-align=\"end\"] &': { mr: '$sizes$2' },\n '[data-align=\"start\"] &': { ml: '$sizes$2' }\n})\n\ntype PopoverContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content> & {\n closePopoverText?: string\n showCloseButton?: boolean\n }\n\nexport const PopoverContent = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}: PopoverContentProps) => (\n <StyledContent\n size={size}\n side={side}\n sideOffset={sideOffset}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$0', top: '$0' }}\n label={closePopoverText}\n size=\"md\"\n hasTooltip={false}\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {children}\n <StyledArrow width={16} height={8} />\n </StyledContent>\n)\n","import { Portal, Root, Trigger } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { PopoverContent } from './PopoverContent'\n\nconst StyledRoot = styled(Root, {})\n\nexport const Popover = Object.assign(StyledRoot, {\n Content: PopoverContent,\n Portal: Portal,\n Trigger: Trigger\n})\n\nStyledRoot.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import { CalendarEvent } from '@atom-learning/icons'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Box } from '../box/Box'\nimport { Calendar, CalendarTranslationProps } from '../calendar/Calendar'\nimport { DEFAULT_LABELS } from '../calendar/constants'\nimport { Icon } from '../icon/Icon'\nimport { Input } from '../input/Input'\nimport { Popover } from '../popover/Popover'\nimport { DEFAULT_DATE_FORMAT } from './constants'\ndayjs.extend(customParseFormat)\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md' | 'lg'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nconst formatDateToString = (date?: Date, dateFormat = DEFAULT_DATE_FORMAT) =>\n date ? dayjs(date).format(dateFormat) : ''\n\nexport const DateInput: React.ForwardRefExoticComponent<DateInputProps> =\n React.forwardRef(\n (\n {\n initialDate,\n dateFormat = DEFAULT_DATE_FORMAT,\n firstDayOfWeek = 1,\n disabled,\n monthNames,\n weekdayNames,\n size = 'md',\n labels,\n revalidate,\n onChange,\n minDate,\n maxDate,\n ...remainingProps\n },\n ref\n ) => {\n const [date, setDate] = React.useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n\n const [inputElRef, setInputElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => inputElRef as HTMLInputElement)\n\n const dateString = formatDateToString(date, dateFormat)\n\n const handleInputChange = React.useCallback(\n (event) => {\n const newDateString = event.target.value\n const parsedInputDate = dayjs(newDateString, dateFormat)\n const newDate = parsedInputDate.isValid()\n ? parsedInputDate.toDate()\n : undefined\n setDate(newDate)\n onChange?.(newDate)\n },\n [dateFormat, onChange]\n )\n\n const handleCalendarChange = React.useCallback(\n (newDate) => {\n setDate(newDate)\n\n const mirrorChangeToInputElement = () => {\n if (!inputElRef) return\n\n // Call the `set` function on the input value directly to mirror the change.\n // Props to: https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(\n inputElRef,\n formatDateToString(newDate, dateFormat)\n )\n const event = new Event('input', { bubbles: true })\n inputElRef.dispatchEvent(event)\n }\n mirrorChangeToInputElement()\n },\n [dateFormat, inputElRef]\n )\n\n const updatedLabels = {\n ...DEFAULT_LABELS,\n ...labels\n }\n\n const [calendarOpen, setCalendarOpen] = React.useState(false)\n\n const refDateToday = React.useRef<HTMLButtonElement>(null)\n const refDateSelected = React.useRef<HTMLButtonElement>(null)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', height: 'max-content' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={handleInputChange}\n ref={setInputElRef}\n defaultValue={dateString}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '0'\n }}\n disabled={disabled}\n label={updatedLabels.open}\n size={iconSize}\n theme=\"neutral\"\n hasTooltip={false}\n >\n <Icon is={CalendarEvent} />\n </ActionIcon>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n css={{ pr: '$sizes$2', zIndex: DIALOG_Z_INDEX }}\n side=\"bottom\"\n align=\"end\"\n showCloseButton={false}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n if (date) {\n refDateSelected.current?.focus()\n } else {\n refDateToday.current?.focus()\n }\n }}\n >\n <Calendar\n date={date || new Date()}\n selected={date}\n onDateSelected={async (date) => {\n setCalendarOpen(false)\n await handleCalendarChange(date.date)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await handleCalendarChange(date)\n if (revalidate) revalidate()\n }}\n minDate={minDate}\n maxDate={maxDate}\n refDateToday={refDateToday}\n refDateSelected={refDateSelected}\n firstDayOfWeek={firstDayOfWeek}\n monthNames={monthNames}\n weekdayNames={weekdayNames}\n labels={updatedLabels}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover>\n </Box>\n )\n }\n )\n\nDateInput.displayName = 'DateInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { DateInput, DateInputProps } from '~/components/date-input'\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\ntype DateFieldProps = DateInputProps & FieldElementWrapperProps\n\nexport const DateField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: DateFieldProps) => {\n const { register, trigger } = useFormContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={appearance}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\n appearance={appearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n revalidate={trigger}\n />\n </FieldWrapper>\n )\n}\n\nDateField.displayName = 'DateField'\n","import { styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport const DialogBackground = styled(Box, { width: '100vw', height: '100vh' })\n","import { Close } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DialogClose = styled(Close, {})\n","import { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nexport const backdropOverlay = {\n backgroundColor: '$alpha600',\n position: 'fixed',\n inset: 0,\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n}\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { DialogBackground } from './DialogBackground'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\nconst modalOverlayId = 'modal_overlay'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledDialogOverlay = styled(Overlay, backdropOverlay)\n\nconst sizeReset = {\n width: 'auto',\n height: 'auto',\n maxWidth: 'auto',\n maxHeight: 'auto',\n '@supports (height: 100svh)': {\n height: 'auto',\n maxHeight: 'auto'\n }\n}\nconst StyledDialogContent = styled(Content, {\n bg: 'white',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n maxHeight: '90vh',\n overflowY: 'auto',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n zIndex: DIALOG_Z_INDEX,\n '&:focus': {\n outline: 'none'\n },\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n xs: {\n ...sizeReset,\n borderRadius: '$1',\n width: '380px'\n },\n sm: {\n ...sizeReset,\n borderRadius: '$1',\n width: '480px'\n },\n md: {\n ...sizeReset,\n borderRadius: '$1',\n width: '600px'\n },\n lg: {\n ...sizeReset,\n borderRadius: '$1',\n width: '800px'\n },\n xl: {\n ...sizeReset,\n borderRadius: '$1',\n width: '1100px'\n },\n fullscreen: {\n width: '100vw',\n height: '100vh',\n maxWidth: '100vw',\n maxHeight: '100vh',\n '@supports (height: 100svh)': {\n height: '100svh',\n maxHeight: '100svh'\n }\n }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}: DialogContentProps) => (\n <Portal>\n <StyledDialogOverlay id={modalOverlayId}>\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type === DialogBackground && child\n )}\n <StyledDialogContent\n size={size}\n aria-label=\"Dialog\"\n onPointerDownOutside={(event) => {\n const element = event.target as HTMLElement\n if (element?.id !== modalOverlayId) {\n event.preventDefault()\n }\n }}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$4', top: '$4', size: '$5' }}\n label={closeDialogText}\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type !== DialogBackground && child\n )}\n </StyledDialogContent>\n </StyledDialogOverlay>\n </Portal>\n)\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\n\nexport const DialogFooter = ({\n css,\n ...props\n}: React.ComponentProps<typeof Flex>) => (\n <Flex justify=\"end\" gap={3} css={{ pt: '$4', ...css }} {...props} />\n)\n","import * as React from 'react'\n\nimport { Heading } from '../heading'\n\nexport const DialogHeading = ({\n css,\n ...props\n}: React.ComponentProps<typeof Heading>) => (\n <Heading\n size=\"sm\"\n css={{\n borderBottom: '1px solid $grey200',\n p: `0 $5 $5 $5`,\n mb: '$5',\n mx: '-$5',\n boxSizing: 'content-box',\n ...css\n }}\n {...props}\n />\n)\n","import { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\nimport { DialogFooter } from './DialogFooter'\nimport { DialogHeading } from './DialogHeading'\n\nconst StyledDialog = styled(Root, {})\n\nexport const Dialog = Object.assign(StyledDialog, {\n Background: DialogBackground,\n Close: DialogClose,\n Content: DialogContent,\n Heading: DialogHeading,\n Footer: DialogFooter,\n\n Description: Description,\n Title: Title,\n Trigger: Trigger\n})\n\nDialog.displayName = 'Dialog'\n","import * as React from 'react'\n\nimport { StyledContent } from './DrawerContent'\n\ntype TDrawerProviderProps = {\n position?: React.ComponentProps<typeof StyledContent>['position']\n}\n\ntype TDrawerContext = TDrawerProviderProps\n\nexport const DrawerContext = React.createContext<TDrawerContext>({\n position: 'left'\n})\n\nexport const DrawerProvider = ({\n position = 'left',\n ...rest\n}: React.PropsWithChildren<TDrawerProviderProps>): JSX.Element => {\n const value = React.useMemo<TDrawerContext>(() => ({ position }), [position])\n return <DrawerContext.Provider value={value} {...rest} />\n}\n","import { Close } from '@atom-learning/icons'\nimport { Close as DialogClose } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nexport const DrawerClose = (\n props: Omit<React.ComponentProps<typeof ActionIcon>, 'children'>\n) => (\n <DialogClose asChild>\n <ActionIcon\n theme=\"neutral\"\n appearance=\"simple\"\n size=\"md\"\n hasTooltip={false}\n {...props}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nexport const DrawerOverlay = styled(Overlay, backdropOverlay)\n","import { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { ColorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { slideInOut } from '~/utilities'\n\nimport { DrawerContext } from './Drawer.context'\nimport { DrawerOverlay } from './DrawerOverlay'\n\nconst animationTop = slideInOut({ outPosition: { x: 0, y: '-100%' } })\nconst animationRight = slideInOut({ outPosition: { x: '100%', y: 0 } })\nconst animationBottom = slideInOut({ outPosition: { x: 0, y: '100%' } })\nconst animationLeft = slideInOut({ outPosition: { x: '-100%', y: 0 } })\nconst setupAnimation = (animation: ReturnType<typeof slideInOut>) => {\n return {\n '&[data-state=\"open\"]': {\n animationName: animation.in\n },\n '&[data-state=\"closed\"]': {\n animationName: animation.out\n }\n }\n}\n\nconst positionY = {\n left: 0,\n width: '100%',\n maxHeight: '85%'\n}\n\nconst positionX = {\n top: 0,\n height: '100%',\n width: 'var(--drawer-content-width, 100%)',\n maxWidth: '100%'\n}\n\nexport const StyledContent = styled(Content, {\n bg: '$base1',\n boxShadow: '$2',\n position: 'fixed',\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n animationTimingFunction: 'ease-out',\n animationDuration: '250ms'\n },\n variants: {\n position: {\n top: {\n top: 0,\n ...positionY,\n ...setupAnimation(animationTop)\n },\n right: {\n right: 0,\n ...positionX,\n ...setupAnimation(animationRight)\n },\n bottom: {\n bottom: 0,\n ...positionY,\n ...setupAnimation(animationBottom)\n },\n left: {\n left: 0,\n ...positionX,\n ...setupAnimation(animationLeft)\n }\n },\n size: {\n xs: {\n '--drawer-content-width': '240px'\n },\n sm: {\n '--drawer-content-width': '256px'\n },\n md: {\n '--drawer-content-width': '288px'\n },\n lg: {\n '--drawer-content-width': '304px'\n },\n xl: {\n '--drawer-content-width': '320px'\n },\n '2xl': {\n '--drawer-content-width': '720px'\n },\n '3xl': {\n '--drawer-content-width': '1000px'\n }\n }\n }\n})\n\nexport const DrawerContent = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledContent>) => {\n const { position } = React.useContext(DrawerContext)\n\n return (\n <Portal>\n <DrawerOverlay />\n <ColorScheme base=\"grey1\" accent=\"primary1\" asChild>\n <StyledContent size=\"lg\" position={position} {...rest} asChild>\n <Flex direction=\"column\">{children}</Flex>\n </StyledContent>\n </ColorScheme>\n </Portal>\n )\n}\n","export const drawerSection = {\n p: '$4',\n width: '100%'\n}\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerFooter = styled('div', {\n ...drawerSection,\n borderTop: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerHeader = styled('div', {\n ...drawerSection,\n minHeight: '$6', // At least the height of the TopBar\n borderBottom: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerMain = styled('div', {\n ...drawerSection,\n flexGrow: 1,\n overflowY: 'auto'\n})\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DrawerTrigger = styled(Trigger, {})\n","import { Root } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { DrawerProvider } from './Drawer.context'\nimport { DrawerClose } from './DrawerClose'\nimport { DrawerContent } from './DrawerContent'\nimport { DrawerFooter } from './DrawerFooter'\nimport { DrawerHeader } from './DrawerHeader'\nimport { DrawerMain } from './DrawerMain'\nimport { DrawerTrigger } from './DrawerTrigger'\n\ntype TDrawerProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof DrawerProvider>\n\nexport const Drawer = ({\n children,\n position,\n ...rest\n}: TDrawerProps): JSX.Element => {\n return (\n <DrawerProvider position={position}>\n <Root {...rest}>{children}</Root>\n </DrawerProvider>\n )\n}\n\nDrawer.Close = DrawerClose\nDrawer.Content = DrawerContent\nDrawer.Main = DrawerMain\nDrawer.Header = DrawerHeader\nDrawer.Footer = DrawerFooter\nDrawer.Trigger = DrawerTrigger\n","import { Content } from '@radix-ui/react-dropdown-menu'\n\nimport { DROPDOWN_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nexport const DropdownMenuContent = styled(Content, {\n bg: 'white',\n borderRadius: '$0',\n boxShadow: '$0',\n py: '$2',\n zIndex: DROPDOWN_Z_INDEX,\n '@allowMotion': {\n animationDuration: '250ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n }\n})\n","import { Item } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nexport const itemStyles = {\n alignItems: 'center',\n color: '$grey1000',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 400,\n position: 'relative',\n px: '$3',\n py: '$2',\n '&[disabled]': { ...disabledStyle, pointerEvents: 'none' },\n '&[aria-current=\"page\"], &:focus': {\n '&::before': {\n borderLeft: '2px solid currentColor',\n content: '',\n height: '$2',\n left: 0,\n outline: 'none',\n position: 'absolute',\n transform: 'scale(1)'\n }\n },\n '&:focus': {\n color: '$primary900',\n outline: 'none'\n },\n '&:hover': { textDecoration: 'underline' }\n}\n\nexport const DropdownMenuItem = styled(Item, itemStyles)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem = ({\n children,\n href,\n ...props\n}: React.ComponentProps<typeof DropdownMenuItem> & { href: string }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\" {...getExternalAnchorProps(href)}>\n {children}\n </StyledLink>\n </DropdownMenuItem>\n)\n","import { Separator } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuSeparator = styled(Separator, {\n height: '1px',\n backgroundColor: '$grey600',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nexport const DropdownMenuTrigger = styled(Trigger, {\n '&[disabled]': disabledStyle\n})\n","import { Portal, Root as DropdownMenuRoot } from '@radix-ui/react-dropdown-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DropdownMenuContent } from './DropdownMenuContent'\nimport { DropdownMenuItem } from './DropdownMenuItem'\nimport { DropdownMenuLinkItem } from './DropdownMenuLinkItem'\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator'\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger'\n\nconst Root = styled(DropdownMenuRoot, {})\n\nexport const DropdownMenu = Object.assign(Root, {\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n Portal: Portal,\n Separator: DropdownMenuSeparator,\n Trigger: DropdownMenuTrigger\n})\n","import { Upload } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\nexport type FileInputProps = React.ComponentProps<typeof Button> & {\n onFileSelect: (selection: FileList | null) => void\n accept?: string\n multiple?: boolean\n}\n\nexport const FileInput = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}: FileInputProps) => {\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target\n\n onFileSelect(files)\n }\n\n return (\n <Button as=\"label\" {...rest}>\n <Icon is={Upload} />\n {children}\n <input\n type=\"file\"\n onChange={handleFileSelect}\n accept={accept}\n multiple={multiple}\n hidden\n />\n </Button>\n )\n}\n\nFileInput.displayName = 'FileInput'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\n\nconst GridContainer = styled('div', {\n display: 'grid',\n variants: {\n gap: createThemeVariants('space', { gap: '$key' })\n }\n})\n\ntype GridProps = React.ComponentProps<typeof GridContainer> & {\n minItemSize?: string\n maxItemSize?: string\n} & {\n css?: CSS\n as?: any\n} // (!) `css` and `as` are both props that come from `stitches`. It would be better to figure out and export the appropriate type for them in stitches!\n\nexport const Grid = ({\n css,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}: GridProps) => (\n <GridContainer\n css={{\n ...(minItemSize && {\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemSize}, ${maxItemSize}))`\n }),\n ...(css as any)\n }}\n gap={gap}\n {...remainingProps}\n />\n)\n\nGrid.displayName = 'Grid'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n hideLabel,\n appearance,\n ...remainingProps\n}: InputFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex/Flex'\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledList } from '../list/List'\nimport { StyledText } from '../text'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n [`& > ${StyledHeading}`]: {\n maxWidth: '65ch'\n },\n [`& > ${StyledText}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledList}`]: {\n maxWidth: '75ch'\n }\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n css\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} css={css}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n","import React from 'react'\n\ninterface NavigationMenuContextValue {\n onNodeUpdate: (\n trigger: HTMLButtonElement,\n itemValue: string\n ) => HTMLButtonElement\n}\n\nexport const NavigationMenuContext = React.createContext<\n NavigationMenuContextValue | undefined\n>(undefined)\n\nexport const useNavigationMenuContext = (): NavigationMenuContextValue => {\n const context = React.useContext(NavigationMenuContext)\n\n if (context === undefined) {\n throw new Error(\n 'useNavigationMenuContext must be used within a NavigationMenuContextProvider'\n )\n }\n\n return context\n}\n","/*\nUsed to block default radix hover to open menu behaviour\nProps: https://github.com/radix-ui/primitives/issues/1630\n*/\nexport const preventEvent = (\n event: React.PointerEvent | Event | React.SyntheticEvent\n): void => {\n const e = event as Event\n e.preventDefault()\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nconst StyledList = styled('ul', {\n listStyle: 'none',\n m: 0,\n p: 0\n})\n\nconst StyledContent = styled(NavigationMenuPrimitive.Content, {\n p: '$3',\n bg: '$dropdownBackground',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\ntype NavigationMenuDropdownContentProps = React.ComponentProps<\n typeof StyledContent\n>\n\nexport const NavigationMenuDropdownContent = ({\n children,\n ...rest\n}: NavigationMenuDropdownContentProps) => (\n <StyledContent\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n {...rest}\n >\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$text',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$text',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n background: '$background',\n '&:hover': { background: '$backgroundHover', color: '$textHover' },\n '&:active': {\n background: '$backgroundActive',\n color: '$textActive'\n },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary800'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: 600,\n color: '$itemTextSelected',\n '&::after': {\n backgroundColor: '$itemBackgroundSelected',\n borderRadius: '$1',\n bottom: 0,\n content: '',\n display: 'block',\n height: '2px',\n left: '50%',\n position: 'absolute',\n transform: 'translate(-50%,0)',\n width: '$2'\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(\n NavigationMenuPrimitive.Trigger,\n navigationMenuBaseItemStyles,\n {\n display: 'flex',\n alignItems: 'center',\n borderRadius: '$1',\n justifyContent: 'space-between',\n '&[data-state=\"open\"]': {\n background: '$triggerBackgroundOpen'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledTrigger>\n> = React.forwardRef(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n >\n {children}\n <Icon\n is={ChevronDown}\n css={{\n ml: '$1',\n '[data-state=open] &': { transform: 'rotate(-180deg)' },\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'transform .2s ease'\n }\n }}\n size=\"sm\"\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React, { ComponentProps, ReactElement } from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { useNavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\n\ntype NavigationMenuDropdownProps = {\n active?: boolean\n css?: CSS\n id: string\n} & React.HTMLProps<HTMLButtonElement>\n\ntype DropdownTriggerProps = ComponentProps<typeof NavigationMenuDropdownTrigger>\n\nexport const NavigationMenuDropdown = ({\n children,\n id,\n ...props\n}: NavigationMenuDropdownProps) => {\n const { onNodeUpdate } = useNavigationMenuContext()\n\n return (\n <NavigationMenuPrimitive.Item value={id}>\n {React.Children.map(children, (child) => {\n const isTrigger =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownTrigger\n const isContent =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownContent\n\n if (!isTrigger && !isContent) {\n throw new Error(\n 'Only NavigationMenu.Trigger and NavigationMenu.Content can be the passed as a \"children\" of NavigationMenu.Dropdown'\n )\n }\n return isTrigger\n ? React.cloneElement(\n child as ReactElement<DropdownTriggerProps>,\n {\n ...props,\n ref: (node: HTMLButtonElement) => onNodeUpdate(node, id)\n } as React.PropsWithRef<DropdownTriggerProps>\n )\n : child\n })}\n </NavigationMenuPrimitive.Item>\n )\n}\n\nNavigationMenuDropdown.displayName = 'NavigationMenuDropdown'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles,\n navigationMenuDisabledItemStyles\n} from './NavigationMenu.styles'\n\nconst DisabledButton = styled('button', {\n ...navigationMenuBaseItemStyles,\n ...navigationMenuDisabledItemStyles\n})\n\nconst ListItem = styled(NavigationMenuPrimitive.Item)\n\nconst StyledLink = styled(\n NavigationMenuPrimitive.Link,\n navigationMenuBaseItemStyles,\n {\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1,\n variants: {\n elementType: {\n dropdownItem: {\n '&[data-active]': {\n background: '$backgroundSelected',\n color: '$textSelected',\n '&:hover': {\n background: '$backgroundSelectedHover',\n color: '$textSelectedHover'\n },\n '&:active': {\n background: '$backgroundSelectedPressed',\n color: '$textSelectedPressed'\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary800',\n color: '$textSelectedFocus'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\nexport const NavigationMenuLink: React.ForwardRefExoticComponent<\n Omit<React.ComponentProps<typeof StyledLink>, 'elementType'> & {\n disabled?: boolean\n variant?: React.ComponentProps<typeof StyledLink>['elementType']\n }\n> = React.forwardRef(\n (\n { children, href, disabled, css, variant = 'link', ref, ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled css={css}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\n {...getExternalAnchorProps(href)}\n {...props}\n >\n {children}\n </StyledLink>\n )}\n </ListItem>\n )\n)\n\nNavigationMenuLink.displayName = 'NavigationMenuLink'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nexport const NavigationMenuDropdownItem: React.ForwardRefExoticComponent<\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n> = React.forwardRef((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$grey900',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$textSubtle',\n background: 'white',\n backgroundHover: '$grey100',\n textHover: '$grey1000',\n backgroundActive: '$grey200',\n textActive: '$grey1000',\n backgroundSelected: '$primary100',\n textSelected: '$primary800',\n textSelectedHover: '$primary800',\n textSelectedPressed: '$primary800',\n textSelectedFocus: '$primary800',\n backgroundSelectedHover: '$grey100',\n backgroundSelectedPressed: '$grey200',\n itemTextSelected: '$grey900',\n itemBackgroundSelected: '$grey900',\n triggerBackgroundOpen: '$grey200',\n dropdownBackground: 'white'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { fadeOut } from '~/utilities/style/keyframe-animations'\n\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\nimport { colorSchemes as navigationMenuColorSchemes } from './stitches.navigationMenu.colorscheme.config'\n\nconst delayedFadeIn = keyframes({\n '0%, 50%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n display: 'flex',\n justifyContent: 'center',\n position: 'relative'\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n all: 'unset',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '$1',\n listStyle: 'none'\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n zIndex: MAX_Z_INDEX\n})\n\nconst ViewportPosition = styled('div', {\n position: 'absolute',\n left: 0,\n top: '100%',\n width: '100%',\n display: 'flex',\n justifyContent: 'center'\n})\n\nconst NavigationMenuComponent = ({\n children,\n css,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n const fadeDuration = 200\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), fadeDuration)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n css={css}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n css={{\n '--navigation-menu-viewport-offset': `${offset || 0}px`,\n transform: `translateX(${offset || 0}px)`,\n '&[data-state=\"open\"]': {\n animation: `${delayedFadeIn} ${fadeDuration}ms ease`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} ${fadeDuration}ms ease-out`\n }\n }}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n","import { Item } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalItem = styled(Item, {})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the `value` prop does nothing, so removing it from typescript\n */\ntype TNavigationMenuVerticalItemProps = Omit<\n React.ComponentProps<typeof StyledNavigationMenuVerticalItem>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => <StyledNavigationMenuVerticalItem {...props} />\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\n\ntype TNavigationMenuVerticalAccordionContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const NavigationMenuVerticalAccordionContext =\n React.createContext<TNavigationMenuVerticalAccordionContextValue>({})\nconst NavigationMenuVerticalAccordionProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <NavigationMenuVerticalAccordionContext.Provider\n value={{ triggerRef, setTriggerRef }}\n >\n {children}\n </NavigationMenuVerticalAccordionContext.Provider>\n )\n}\n\ntype TNavigationMenuVerticalAccordionProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof NavigationMenuVerticalItem>\nexport const NavigationMenuVerticalAccordion = ({\n defaultOpen,\n open,\n onOpenChange,\n disabled,\n ...rest\n}: TNavigationMenuVerticalAccordionProps): JSX.Element => {\n const collapsibleProps = { defaultOpen, open, onOpenChange, disabled }\n return (\n <NavigationMenuVerticalAccordionProvider>\n <Root {...collapsibleProps} asChild>\n <NavigationMenuVerticalItem {...rest} />\n </Root>\n </NavigationMenuVerticalAccordionProvider>\n )\n}\n","import { List } from '@radix-ui/react-navigation-menu'\n\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(List, {\n p: 0,\n m: 0,\n listStyle: 'none',\n '--navigation-menu-vertical-item-pl': '$space$4',\n '& &': {\n '--navigation-menu-vertical-item-pl': '$space$5'\n },\n '& & &': {\n '--navigation-menu-vertical-item-pl': '$space$7'\n },\n '& & & &': {\n '--navigation-menu-vertical-item-pl': '$space$8'\n },\n '& > *:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const NavigationMenuVerticalList = StyledList\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\n\nconst StyledNavigationMenuVerticalAccordionContent = styled(Content, {})\n\ntype TNavigationMenuVerticalAccordionContentProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionContent\n> &\n React.ComponentProps<typeof NavigationMenuVerticalList>\n\nexport const NavigationMenuVerticalAccordionContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalAccordionContentProps): JSX.Element => {\n const { triggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledNavigationMenuVerticalAccordionContent\n onKeyDown={handleOnKeydown}\n {...rest}\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledNavigationMenuVerticalAccordionContent>\n )\n}\n","export const resetButtonStyles = {\n p: 0,\n border: 'none',\n outline: 'none',\n font: 'inherit',\n color: 'inherit',\n background: 'none',\n textAlign: 'inherit'\n}\n\nexport const resetLinkStyles = {\n textDecoration: 'unset',\n color: 'inherit'\n}\n","import { focusVisibleStyleBlock } from '~/utilities'\nimport { resetButtonStyles, resetLinkStyles } from '~/utilities/style/reset'\n\nexport const navigationMenuVerticalItemStyles = {\n ...resetButtonStyles,\n ...resetLinkStyles,\n cursor: 'pointer',\n borderRadius: '$2',\n display: 'flex',\n alignItems: 'center',\n p: '$2',\n pl: `var(--navigation-menu-vertical-item-pl)`,\n width: '100%',\n color: '$text',\n bg: '$background',\n '--navigation-menu-vertical-item-font-weight': 400,\n '&[data-active]': {\n bg: '$backgroundSelected',\n color: '$textSelected',\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[data-state=open]': {\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover': {\n bg: '$backgroundHover'\n },\n '&:active': {\n bg: '$backgroundActive'\n },\n '&:focus-visible': focusVisibleStyleBlock()\n },\n variants: {\n size: {\n md: {\n minHeight: '$4'\n },\n lg: {\n minHeight: '$5'\n }\n }\n }\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalIcon = styled(Icon, {\n alignSelf: 'start'\n})\nexport const NavigationMenuVerticalIcon = (\n props: React.ComponentProps<typeof StyledNavigationMenuVerticalIcon>\n): JSX.Element => <StyledNavigationMenuVerticalIcon size=\"md\" {...props} />\n","import { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const SideBarHeader = styled('div', {\n borderBottom: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBody = styled('div', {\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarFooter = styled('div', {\n borderTop: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBrand = styled('a', {\n alignItems: 'flex-end',\n color: '$text',\n display: 'flex',\n gap: '$4',\n textDecoration: 'none',\n '&:hover, &:focus': {\n textDecoration: 'none'\n }\n})\n\nexport const SideBarBrandLogo = Image\n\nexport const SideBarBrandName = styled(Text, {\n color: '$text',\n whiteSpace: 'nowrap'\n})\n","import * as React from 'react'\n\nexport const SideBarContext = React.createContext<{\n isExpanded?: boolean\n}>({\n isExpanded: undefined\n})\n\nexport const useSidebarState = () => React.useContext(SideBarContext)\n","import React from 'react'\nimport { useFocusWithin, useHover, useInteractOutside } from 'react-aria'\n\nimport { createTheme, styled } from '~/stitches'\n\nimport {\n SideBarBody,\n SideBarBrand,\n SideBarBrandLogo,\n SideBarBrandName,\n SideBarFooter,\n SideBarHeader\n} from './SideBarComponents'\nimport { SideBarContext } from './SideBarContext'\n\nconst SIZE_COLLAPSED = '5.5rem'\nconst SIZE_EXPANDED = '16rem'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n text: '$grey800',\n border: '$grey200'\n }\n})\n\nconst Root = styled('div', {\n position: 'sticky',\n zIndex: 1,\n variants: {\n type: {\n static: {},\n expandable: { width: SIZE_COLLAPSED }\n }\n }\n})\n\nconst Content = styled('div', {\n bg: '$background',\n borderRight: '1px solid $border',\n boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0)',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflow: 'hidden',\n willChange: 'width',\n '@allowMotion': {\n transition: 'width 125ms ease-out, box-shadow 125ms ease-out'\n },\n variants: {\n type: {\n static: {},\n expandable: {}\n },\n isExpanded: {\n true: { width: SIZE_EXPANDED },\n false: { width: SIZE_COLLAPSED }\n }\n },\n compoundVariants: [\n {\n isExpanded: true,\n type: 'expandable',\n css: { boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0.1)' }\n }\n ]\n})\n\nconst PointerBlocker = styled('div', {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transition: 'all',\n variants: {\n isVisible: {\n true: { visibility: 'visible', transitionDelay: '0s' },\n false: { visibility: 'hidden', transitionDelay: '50ms' }\n }\n }\n})\n\ntype SideBarProps = React.ComponentProps<typeof Root> & {\n offset?: number | string\n}\n\nexport const SideBar = ({\n className = light,\n children,\n type = 'expandable',\n offset = '0px',\n css,\n ...rest\n}: SideBarProps) => {\n const [isExpanded, setIsExpanded] = React.useState(type === 'static')\n const ref = React.useRef<HTMLDivElement>(null)\n\n useInteractOutside({\n ref,\n onInteractOutside: () => setIsExpanded(false)\n })\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => setIsExpanded(true),\n onBlurWithin: () => setIsExpanded(false)\n })\n const { hoverProps, isHovered } = useHover({\n onHoverStart: () => setIsExpanded(true),\n onHoverEnd: () => setIsExpanded(false)\n })\n const touchProps = {\n onTouchEnd: () => setIsExpanded(true)\n }\n\n const expandableProps =\n type === 'expandable'\n ? {\n ...focusWithinProps,\n ...hoverProps,\n ...touchProps,\n ref\n }\n : {}\n\n return (\n <SideBarContext.Provider value={{ isExpanded }}>\n <Root\n {...rest}\n className={className}\n css={{ height: `calc(100svh - ${offset})`, top: offset, ...css }}\n type={type}\n >\n <Content {...expandableProps} isExpanded={isExpanded} type={type}>\n {children}\n {/**\n * When the SideBar is collapsed, ensure that the initial tap event\n * is used to expand the nav first before making the items available\n */}\n {type === 'expandable' && (\n <PointerBlocker isVisible={!isHovered && !isExpanded} />\n )}\n </Content>\n </Root>\n </SideBarContext.Provider>\n )\n}\n\nSideBar.Brand = SideBarBrand\nSideBar.BrandLogo = SideBarBrandLogo\nSideBar.BrandName = SideBarBrandName\nSideBar.Header = SideBarHeader\nSideBar.Body = SideBarBody\nSideBar.Footer = SideBarFooter\n\nSideBar.displayName = 'SideBar'\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { useSidebarState } from '../side-bar'\n\nconst SIZE_EXPANDED_MAX = '10rem'\n\nconst StyledNavigationMenuVerticalText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n fontWeight: 'var(--navigation-menu-vertical-item-font-weight)',\n lineHeight: 1.2,\n width: 'max-content',\n maxWidth: SIZE_EXPANDED_MAX,\n variants: {\n isExpanded: {\n true: {\n opacity: 1,\n '@allowMotion': {\n transform: 'translate(0)',\n transition: 'opacity 125ms ease-out, transform 125ms ease-out'\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n transform: 'translate(8px)',\n transition: 'opacity 125ms ease-out, transform 0ms ease-out 125ms'\n }\n }\n }\n }\n})\n\ntype TStyledNavigationMenuVerticalTextProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalText\n>\n\nexport const NavigationMenuVerticalText = (\n props: TStyledNavigationMenuVerticalTextProps\n): JSX.Element => {\n const { isExpanded } = useSidebarState()\n return (\n <StyledNavigationMenuVerticalText\n size=\"md\"\n as=\"span\"\n {...props}\n isExpanded={isExpanded}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => {\n return (\n <Flex gap={2} align=\"center\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <NavigationMenuVerticalText>{child}</NavigationMenuVerticalText>\n )\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <NavigationMenuVerticalIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n )\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalAccordionTrigger = styled(\n Trigger,\n navigationMenuVerticalItemStyles\n)\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\ntype TNavigationMenuAccordionTriggerProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionTrigger\n>\n\nexport const NavigationMenuVerticalAccordionTrigger = ({\n children,\n ...rest\n}: TNavigationMenuAccordionTriggerProps) => {\n const { setTriggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n return (\n <Link asChild>\n <StyledNavigationMenuVerticalAccordionTrigger size=\"lg\" {...rest} asChild>\n <Flex\n as=\"button\"\n type=\"button\"\n align=\"center\"\n justify=\"space-between\"\n gap={3}\n ref={setTriggerRef}\n >\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n <StyledIcon size=\"sm\" is={ChevronDown} />\n </Flex>\n </StyledNavigationMenuVerticalAccordionTrigger>\n </Link>\n )\n}\n","import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(\n Link,\n navigationMenuVerticalItemStyles\n)\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const Component = as || (href ? 'a' : 'button')\n const componentProps = as\n ? {}\n : href\n ? getExternalAnchorProps(href)\n : { type: 'button' }\n\n return (\n <NavigationMenuVerticalItem>\n <StyledNavigationMenuVerticalLink\n size=\"lg\"\n href={href}\n {...rest}\n {...componentProps}\n onSelect={preventEvent}\n asChild // ?: Can't use `as` for this as we lose `data-active` etc. attributes when we try to. Using `asChild` and `Component` as a workaround.\n >\n <Component>\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n </Component>\n </StyledNavigationMenuVerticalLink>\n </NavigationMenuVerticalItem>\n )\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$foreground',\n background: '$base1',\n backgroundHover: '$base2',\n backgroundActive: '$base3',\n textSelected: '$accent9',\n backgroundSelected: '$accent2'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import { Root } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordion } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalAccordionContent } from './NavigationMenuVerticalAccordionContent'\nimport { NavigationMenuVerticalAccordionTrigger } from './NavigationMenuVerticalAccordionTrigger'\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\nimport { NavigationMenuVerticalLink } from './NavigationMenuVerticalLink'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\nimport { colorSchemes as navigationMenuVerticalColorSchemes } from './stitches.navigationMenuVertical.colorscheme.config'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the below `value` based props and `Trigger`/`Content`\n * animations do nothing, so removing them from typescript\n */\ntype TNavigationVerticalProps = Omit<\n React.ComponentProps<typeof StyledRoot>,\n | 'delayDuration'\n | 'skipDelayDuration'\n | 'defaultValue'\n | 'value'\n | 'onValueChange'\n>\n\nexport const NavigationMenuVertical = Object.assign(\n ({ children, ...rest }: TNavigationVerticalProps) => (\n <StyledRoot\n className={navigationMenuVerticalColorSchemes['light']}\n {...rest}\n orientation=\"vertical\"\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledRoot>\n ),\n {\n Link: NavigationMenuVerticalLink,\n Accordion: NavigationMenuVerticalAccordion,\n AccordionContent: NavigationMenuVerticalAccordionContent,\n AccordionTrigger: NavigationMenuVerticalAccordionTrigger,\n Item: NavigationMenuVerticalItem,\n ItemContent: NavigationMenuVerticalItemContent,\n Icon: NavigationMenuVerticalIcon,\n Text: NavigationMenuVerticalText\n }\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nconst StyledWrapper = styled(Box, {\n position: 'relative'\n})\n\nconst StyledBadge = styled(Flex, {\n fontFamily: '$body',\n fontSize: '$sm',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translate(calc($sizes$2 / 2), -50%)',\n borderRadius: '$round',\n p: '$2',\n height: '$2',\n minWidth: '$2',\n textAlign: 'center',\n color: '#fff',\n bg: '$primary800'\n})\n\ntype NotificationBadgeProps = {\n value: number | string\n}\n\nexport const NotificationBadge = ({\n value,\n children\n}: React.PropsWithChildren<NotificationBadgeProps>) => (\n <StyledWrapper>\n {!!value && <StyledBadge role=\"status\">{value}</StyledBadge>}\n {children}\n </StyledWrapper>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\n\nconst StyledSpan = styled('span', { zIndex: 1 })\n\nconst StyledStepperButton = styled(ActionIcon, {\n borderRadius: '$1',\n zIndex: 1,\n height: '100% !important',\n '&:hover': {\n bg: '$grey100',\n svg: { color: '$grey800' }\n },\n svg: {\n color: '$grey700'\n },\n '&:active': {\n bg: '$grey200',\n svg: { color: '$grey900' }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n },\n variants: {\n fieldAppearance: {\n standard: {\n backgroundColor: 'white',\n borderColor: '$grey800 !important'\n },\n modern: {\n backgroundColor: '$grey100',\n borderColor: '$grey100 !important'\n }\n }\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> &\n Omit<React.ComponentProps<typeof StyledStepperButton>, 'children'> & {\n icon: React.FC<React.SVGProps<SVGSVGElement>>\n showTooltip?: boolean\n disabledTooltipContent?: string\n }\n\nexport const NumberInputStepper: React.ForwardRefExoticComponent<NumberInputStepperProps> =\n React.forwardRef((props, forwardedRef) => {\n const {\n icon,\n disabledTooltipContent,\n showTooltip,\n fieldAppearance = 'standard',\n ...rest\n } = props\n\n /**\n * Focus has been removed from the button\n * as the increment and decrement buttons should be keyboard accessible via arrow keys.\n * see MDN docs https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/spinbutton_role\n */\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>\n <StyledSpan tabIndex={-1}>\n <StyledStepperButton\n hasTooltip={false}\n tabIndex={-1}\n appearance=\"outline\"\n fieldAppearance={fieldAppearance}\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </StyledStepperButton>\n </StyledSpan>\n </Tooltip.Trigger>\n {showTooltip && (\n <Tooltip.Content>{disabledTooltipContent}</Tooltip.Content>\n )}\n </Tooltip>\n )\n })\n","import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled, type CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nconst NumberInputContainer = styled(Flex, {\n variants: {\n appearance: {\n standard: {},\n modern: { gap: '1px' }\n }\n }\n})\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport {\n useFieldError,\n useFormCustomContext,\n ValidationOptions\n} from '~/components/form'\nimport type { CSS } from '~/stitches'\n\nimport type { NumberInputProps } from '../number-input/NumberInput'\nimport { NumberInput } from '../number-input/NumberInput'\n\nexport interface NumberInputFieldProps extends NumberInputProps {\n css?: CSS\n hideLabel?: boolean\n description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField = ({\n css,\n defaultValue = 0,\n hideLabel,\n value,\n prompt,\n description,\n label,\n name,\n validation,\n onValueChange,\n appearance,\n ...remainingProps\n}: NumberInputFieldProps) => {\n const { control } = useFormContext()\n const context = useFormCustomContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n const formAppearance = context?.appearance || appearance\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <NumberInput\n id={name}\n name={innerName}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n appearance={formAppearance}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledProgressBar = styled(Progress.Root, {\n borderRadius: '$round',\n background: '$grey200',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n size: {\n sm: { height: '4px' },\n md: { height: '$0' }\n },\n theme: {\n primary: { color: '$primary800' },\n info: { color: '$info' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' },\n neutral: { color: '$grey800', bg: '$grey400' }\n }\n }\n})\n\nconst StyledIndicator = styled(Progress.Indicator, {\n backgroundColor: 'currentcolor',\n borderRadius: '$round',\n boxSizing: 'border-box',\n height: '100%',\n position: 'absolute',\n transition: 'all 300ms ease-out'\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n style={{\n width: '100%',\n transform: `translateX(-${100 - ((value || 0) / max) * 100}%)`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n","import * as React from 'react'\n\nimport { InlineFieldWrapper } from '~/components/field-wrapper'\nimport { ValidationOptions } from '~/components/form'\nimport { RadioButton } from '~/components/radio-button'\nimport { CSS } from '~/stitches'\n\ntype RadioFieldProps = {\n css?: CSS\n defaultChecked?: boolean\n error?: string\n label: string\n validation?: ValidationOptions\n} & React.ComponentProps<typeof RadioButton>\n\nexport const RadioField = ({\n css,\n label,\n value,\n ...remainingProps\n}: RadioFieldProps) => (\n <InlineFieldWrapper css={css} label={label}>\n <RadioButton value={value} {...remainingProps} />\n </InlineFieldWrapper>\n)\n\nRadioField.displayName = 'RadioField'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldElementWrapperProps } from '~/components/field-wrapper'\nimport { Description as FieldDescription } from '~/components/field-wrapper/FieldDescription'\nimport { useFieldError } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButtonGroup } from '~/components/radio-button'\nimport { styled } from '~/stitches'\n\nimport { RadioField } from './RadioField'\n\nconst Fieldset = styled('fieldset', {\n all: 'unset'\n})\n\ntype RadioButtonFieldProps = React.ComponentProps<typeof RadioButtonGroup> &\n FieldElementWrapperProps\n\nconst RadioButtonFieldComponent = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}: RadioButtonFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <Fieldset css={css}>\n <Label\n as=\"legend\"\n css={{ p: 0, mb: '$3' }}\n required={Boolean(validation?.required)}\n >\n {label}\n </Label>\n {description && (\n <FieldDescription css={{ mb: '$3' }}>{description}</FieldDescription>\n )}\n\n <RadioButtonGroup\n ref={ref}\n direction={direction}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n {...remainingProps}\n >\n {children}\n </RadioButtonGroup>\n\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Fieldset>\n )\n}\n\nexport const RadioButtonField = Object.assign(RadioButtonFieldComponent, {\n Item: RadioField\n})\n\nRadioButtonFieldComponent.displayName = 'RadioButtonField'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box/Box'\n\nexport const StyledRadioCard = styled(RadioGroup.Item, {\n alignItems: 'center',\n bg: 'white',\n border: '1px solid $grey600',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary800',\n outlineOffset: '-2px'\n },\n variants: {\n align: {\n left: { flexDirection: 'row' },\n right: { flexDirection: 'row-reverse' }\n },\n size: {\n md: { px: '$4', py: '$3' },\n lg: { px: '$5', py: '$4' }\n },\n isFullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n }\n})\n\nconst RadioButton = styled('div', {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey900',\n borderRadius: '$round',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 0,\n size: '$1',\n transition: 'all 50ms ease-out',\n '[data-state=\"checked\"] &': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n variants: {\n containerIsFullWidth: {\n true: {},\n false: {}\n },\n align: {\n left: { mr: '$4' },\n right: {}\n }\n },\n\n compoundVariants: [\n {\n containerIsFullWidth: true,\n align: 'right',\n css: { ml: 'auto' }\n },\n {\n containerIsFullWidth: false,\n align: 'right',\n css: { ml: '$4' }\n }\n ]\n})\n\nconst Indicator = styled(RadioGroup.Indicator, {\n backgroundColor: 'white',\n borderRadius: '$round',\n position: 'absolute',\n size: '6px'\n})\n\ntype RadioCardProps = React.ComponentProps<typeof StyledRadioCard>\n\nexport const RadioCard = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}: RadioCardProps) => (\n <StyledRadioCard\n {...rest}\n align={align}\n isFullWidth={isFullWidth}\n size={size}\n >\n <RadioButton align={align} containerIsFullWidth={isFullWidth}>\n <Indicator />\n </RadioButton>\n <Box>{children}</Box>\n </StyledRadioCard>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Flex>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <Flex direction=\"row\" justify={justify} gap={gap} wrap=\"wrap\" css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof RadioCard>>,\n { size, isFullWidth, align }\n )\n }\n return child\n })}\n </Flex>\n </RadioGroup.Root>\n)\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SearchFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nSearchField.displayName = 'SearchField'\n","import React from 'react'\n\nimport type { SectionMessageTheme } from './SectionMessage'\n\nexport type SectionMessageContextValue = {\n theme: SectionMessageTheme\n hasIcon: boolean\n setHasIcon: React.Dispatch<React.SetStateAction<boolean>>\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\nexport type SectionMessageProviderProps = {\n theme: SectionMessageTheme\n children: React.ReactNode\n}\n\nexport const SectionMessageContext =\n React.createContext<SectionMessageContextValue | null>(null)\n\nexport const SectionMessageProvider = ({\n theme = 'info',\n children\n}: SectionMessageProviderProps): JSX.Element => {\n const [hasIcon, setHasIcon] = React.useState(false)\n const [hasDismiss, setHasDismiss] = React.useState(false)\n\n const value = React.useMemo<SectionMessageContextValue>(\n () => ({ theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss }),\n [theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss]\n )\n\n return (\n <SectionMessageContext.Provider value={value}>\n {children}\n </SectionMessageContext.Provider>\n )\n}\n\nexport const useSectionMessageContext = (): SectionMessageContextValue => {\n const context = React.useContext(SectionMessageContext)\n\n if (!context) {\n throw new Error(\n 'useSectionMessageContext must be used within a SectionMessageProvider'\n )\n }\n\n return context\n}\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageDescription = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n color: '$grey900',\n ...css\n }}\n size=\"sm\"\n {...rest}\n />\n)\n","import { Close } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Dismissible } from '../dismissible'\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nexport const SectionMessageDismiss = ({\n label = 'Dismiss',\n css,\n ...rest\n}: React.ComponentProps<typeof ActionIcon>): JSX.Element => {\n const { setHasDismiss } = useSectionMessageContext()\n\n useEffect(() => {\n setHasDismiss(true)\n return () => setHasDismiss(false)\n }, [setHasDismiss])\n\n return (\n <Dismissible.Trigger asChild>\n <ActionIcon\n label={label}\n css={{\n m: 'auto',\n position: 'absolute',\n top: '$2',\n right: '$2',\n ...css\n }}\n size=\"sm\"\n appearance=\"simple\"\n theme=\"neutral\"\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n </Dismissible.Trigger>\n )\n}\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nconst themeIcons = {\n success: OkCircle,\n warning: Danger,\n error: Error,\n neutral: Info,\n info: Info\n}\n\ntype SectionMessageIconProps = Partial<React.ComponentProps<typeof Icon>>\n\nexport const SectionMessageIcon = ({\n css,\n is,\n ...rest\n}: SectionMessageIconProps): JSX.Element => {\n const { theme, setHasIcon } = useSectionMessageContext()\n\n useEffect(() => {\n setHasIcon(true)\n return () => setHasIcon(false)\n }, [setHasIcon])\n\n return (\n <Icon\n css={{\n m: 'auto',\n position: 'absolute',\n left: '$4',\n top: '$4',\n color: 'currentColor',\n ...css\n }}\n is={is || themeIcons[theme]}\n size=\"sm\"\n {...rest}\n />\n )\n}\n","import React from 'react'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nexport const SectionMessageContent = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Box>): JSX.Element => (\n <Box\n css={{\n maxWidth: '100%',\n flexShrink: 0,\n paddingTop: '$0',\n ['& > *:not(:last-child)']: { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Flex>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Flex wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = (\n props: React.ComponentProps<typeof Text>\n): JSX.Element => <Text size=\"md\" weight=\"bold\" {...props} />\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport {\n SectionMessageProvider,\n useSectionMessageContext\n} from './SectionMessageContext'\nimport { SectionMessageDescription } from './SectionMessageDescription'\nimport { SectionMessageDismiss } from './SectionMessageDismiss'\nimport { SectionMessageIcon } from './SectionMessageIcon'\nimport {\n SectionMessageActions,\n SectionMessageContent\n} from './SectionMessageLayout'\nimport { SectionMessageTitle } from './SectionMessageTitle'\n\nconst StyledSectionMessage = styled(Dismissible, {\n position: 'relative',\n borderRadius: '$0',\n display: 'flex',\n minHeight: '$5',\n p: '$4',\n border: '1px solid white',\n variants: {\n theme: {\n success: {\n bg: '$successLight',\n color: '$successDark'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n error: {\n bg: '$dangerLight',\n color: '$dangerDark'\n },\n neutral: {\n bg: '$grey100',\n color: '$grey1000'\n },\n info: {\n bg: '$infoLight',\n color: '$infoDark'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst SectionMessageRoot = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledSectionMessage>): JSX.Element => {\n const { theme, hasIcon, hasDismiss } = useSectionMessageContext()\n\n return (\n <StyledSectionMessage\n {...rest}\n theme={theme}\n hasIcon={hasIcon}\n hasDismiss={hasDismiss}\n >\n <Flex gap={3} justify=\"space-between\" css={{ flexGrow: 1 }}>\n {children}\n </Flex>\n </StyledSectionMessage>\n )\n}\n\nexport type SectionMessageTheme =\n | 'success'\n | 'warning'\n | 'error'\n | 'neutral'\n | 'info'\n\nexport interface SectionMessageProps\n extends React.ComponentProps<typeof SectionMessageRoot> {\n theme?: SectionMessageTheme\n}\n\nexport const SectionMessage = ({\n theme = 'info',\n ...rest\n}: SectionMessageProps): JSX.Element => {\n return (\n <TooltipProvider>\n <SectionMessageProvider theme={theme}>\n <SectionMessageRoot {...rest} />\n </SectionMessageProvider>\n </TooltipProvider>\n )\n}\n\nSectionMessage.Title = SectionMessageTitle\nSectionMessage.Description = SectionMessageDescription\nSectionMessage.Icon = SectionMessageIcon\nSectionMessage.Dismiss = SectionMessageDismiss\nSectionMessage.Content = SectionMessageContent\nSectionMessage.Actions = SectionMessageActions\n","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { disabledStyle, encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n borderRadius: '$1',\n color: '$grey1000',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': disabledStyle,\n variants: {\n size: {\n sm: {\n backgroundPosition: 'right $space$2 top 50%, 0 0',\n backgroundSize: '18px auto, 100%',\n fontSize: '$sm',\n height: '$3',\n pl: '$2',\n pr: '$5'\n },\n md: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$4',\n pl: '$3',\n pr: '$6'\n },\n lg: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$5',\n pl: '$3',\n pr: '$6'\n }\n },\n state: {\n error: {}\n },\n appearance: {\n standard: {\n backgroundColor: 'white',\n border: '1px solid $grey700',\n '&:focus': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n backgroundColor: '$grey100',\n border: 'none',\n '&:focus': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n backgroundColor: '$dangerLight',\n '&:focus': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type SelectProps = Override<\n React.ComponentProps<typeof StyledSelect>,\n {\n as?: never\n placeholder?: string\n }\n // TODO: figure out why uncommenting this causes TS errors in\n // component declaration\n // & (\n // | { id: string; 'aria-label'?: string }\n // | { 'aria-label': string; id?: string }\n // )\n>\n\nexport const Select: React.ForwardRefExoticComponent<SelectProps> =\n React.forwardRef(\n (\n {\n placeholder,\n children,\n size = 'md',\n appearance = 'standard',\n ...remainingProps\n },\n ref\n ) => {\n const props = { size, appearance, ref, ...remainingProps }\n\n if (\n [remainingProps.value, remainingProps.defaultValue].every(\n (value) => value === undefined\n )\n ) {\n props.defaultValue = ''\n }\n\n return (\n <StyledSelect {...props}>\n {placeholder && (\n <option disabled hidden value=\"\">\n {placeholder}\n </option>\n )}\n {children}\n </StyledSelect>\n )\n }\n )\n\nSelect.displayName = 'Select'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField = ({\n css = undefined,\n hideLabel,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SelectFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Select\n name={name}\n id={name}\n appearance={formAppearance}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n height: '$space$3',\n mt: '$3',\n position: 'relative',\n width: '100%'\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n css={{\n position: 'absolute',\n color: '$grey700'\n }}\n style={{\n left: `${getPercentValue(step.value, min, max)}%`,\n transform: `translateX(-${getTransformValue(\n step.value,\n min,\n max\n )}%)`\n }}\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text css={{ mt: '$4', color: '$grey700', width: '100%' }}>\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n","import { Range, Root, Thumb, Track } from '@radix-ui/react-slider'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { CSSWrapper, disabledStyle } from '~/utilities'\n\nimport { SliderSteps } from './SliderSteps'\nimport { SliderValue } from './SliderValue'\n\nconst StyledTrack = styled(Track, {\n borderRadius: '$round',\n flexGrow: 1,\n position: 'relative',\n '&[data-orientation=\"horizontal\"]': { height: '$space$1' },\n '&[data-orientation=\"vertical\"]': { width: '$space$1' }\n})\n\nconst StyledSlider = styled(Root, {\n alignItems: 'center',\n display: 'flex',\n position: 'relative',\n touchAction: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n '&[data-orientation=\"horizontal\"]': {\n height: '$1'\n },\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$1'\n },\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n light: {\n [`${StyledTrack}`]: { bg: '#fff' }\n },\n tonal: {\n [`${StyledTrack}`]: { bg: '$grey600' }\n }\n }\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary800',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[disabled]': disabledStyle\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primary900',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primary1000'\n },\n '&:focus': {\n outline: '2px solid $primary900',\n outlineOffset: '2px'\n },\n '&[disabled]': disabledStyle\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider>\n\ntype SliderType = React.ForwardRefExoticComponent<SliderProps> & {\n Value: typeof SliderValue\n Steps: typeof SliderSteps\n}\n\nexport const Slider: SliderType = React.forwardRef(\n (\n {\n value,\n defaultValue,\n min = 0,\n max = 100,\n theme = 'tonal',\n css,\n children,\n ...remainingProps\n },\n ref\n ) => {\n const values = value || defaultValue\n return (\n <CSSWrapper css={css}>\n <StyledSlider\n theme={theme}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n","import React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { Slider, SliderProps } from '~/components/slider'\nimport { SliderStepsType } from '~/components/slider/SliderSteps'\n\nimport { SliderValueType } from '../slider/SliderValue'\n\ntype SliderFieldProps = SliderProps &\n SliderStepsType &\n SliderValueType &\n FieldElementWrapperProps\n\nexport const SliderField = ({\n css,\n hideLabel,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}: SliderFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (value?.length) onChange(value)\n }, [JSON.stringify(value)])\n\n return (\n <FieldWrapper css={css} fieldId={name} label={label} hideLabel={hideLabel}>\n <Slider\n ref={ref}\n name={innerName}\n onValueChange={onChange}\n value={innerValue}\n min={min}\n max={max}\n {...remainingProps}\n >\n <Slider.Steps min={min} max={max} steps={steps} />\n\n <Slider.Value value={innerValue} outputLabel={outputLabel} />\n </Slider>\n </FieldWrapper>\n )\n}\n\nSliderField.displayName = 'SliderField'\n","import { styled } from '~/stitches'\n\n/**\n * A flexible flex spacer that expands along the major axis of its containing flex layout.\n * It renders a `div` by default, and takes up any available space.\n */\nexport const Spacer = styled('div', {\n flex: 1,\n justifySelf: 'stretch',\n alignSelf: 'stretch'\n})\n\nSpacer.displayName = 'Spacer'\n","import * as React from 'react'\n\nimport { Context, StepperProviderProps } from '../types'\n\nconst StepperContext = React.createContext<Context>({\n steps: [],\n goToPreviousStep: () => null,\n goToNextStep: () => null,\n goToStep: () => null,\n activeStep: 0,\n viewedSteps: [],\n allowSkip: false,\n direction: 'horizontal',\n hideLabels: false,\n completedSteps: [],\n showCompletedIcons: false\n})\n\nexport const StepperProvider = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}: React.PropsWithChildren<StepperProviderProps>) => {\n const [activeStep, setActiveStep] = React.useState(0)\n\n const [viewedSteps, setviewedSteps] = React.useState<number[]>([0])\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([])\n\n const isControlled = !stepCount\n\n React.useEffect(() => {\n setviewedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n\n onStepChange?.(activeStep)\n }, [activeStep, onStepChange])\n\n const goToNextStep = () => {\n const isCompleted = onComplete && activeStep === stepCount - 1\n const isNextStep = activeStep < stepCount - 1\n\n if (onComplete || isNextStep) {\n setCompletedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n }\n\n if (isCompleted) {\n return onComplete?.()\n }\n if (isNextStep) {\n return setActiveStep((current) => current + 1)\n }\n }\n\n const goToPreviousStep = () => {\n setActiveStep((current) => current - 1)\n }\n\n const goToStep = (index: number) => {\n setActiveStep(index)\n }\n\n return (\n <StepperContext.Provider\n value={{\n steps: steps || Array(stepCount).fill(''),\n goToPreviousStep: isControlled ? undefined : goToPreviousStep,\n goToNextStep: isControlled ? undefined : goToNextStep,\n goToStep: isControlled ? undefined : goToStep,\n activeStep,\n viewedSteps,\n completedSteps,\n allowSkip,\n direction,\n hideLabels,\n showCompletedIcons\n }}\n >\n {children}\n </StepperContext.Provider>\n )\n}\n\nexport const useStepper = (): Context => {\n const context = React.useContext(StepperContext)\n if (!context)\n throw new Error(\n 'Ensure that you wrap any components with the root component Stepper'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepBack = ({\n label,\n children,\n ...rest\n}: IStepperNavigateProps & React.ComponentProps<typeof Button>) => {\n const { activeStep, goToPreviousStep } = useStepper()\n return (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n {...rest}\n disabled={activeStep === 0}\n onClick={goToPreviousStep}\n >\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepForward = ({\n label,\n children,\n onClick,\n ...rest\n}: IStepperNavigateProps & Partial<React.ComponentProps<typeof Button>>) => {\n const { goToNextStep, activeStep } = useStepper()\n\n const handleClick = () => {\n if (onClick) {\n return onClick(() => goToNextStep?.())\n }\n goToNextStep?.()\n }\n\n return (\n <Button size=\"sm\" {...rest} onClick={handleClick} css={{ ml: 'auto' }}>\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepBullet = styled(Flex, {\n position: 'relative',\n p: '$2',\n justifyContent: 'center',\n alignItems: 'center',\n size: '$3',\n borderRadius: '50%',\n border: 'none',\n bg: '$grey200',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$grey200', color: '$grey700' },\n active: {\n bg: 'white',\n color: '$primary900',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $grey600',\n color: '$grey1000'\n },\n completed: { bg: '$primary800', color: 'white' },\n reviewed: { bg: '$primary900', color: 'white' },\n success: { bg: '$success', color: 'white' }\n }\n }\n})\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepContainer = styled(Flex, {\n position: 'relative',\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n alignItems: 'center',\n '&:not(:last-child)::after': {\n content: '',\n position: 'absolute'\n },\n '&:focus-visible': {\n outline: 'none'\n },\n variants: {\n canInteract: { true: {} },\n direction: {\n vertical: {\n py: '$3',\n flexDirection: 'row',\n '&:not(:last-child)::after': {\n height: '100%',\n width: '4px',\n left: '14px',\n top: '50%'\n }\n },\n horizontal: {\n px: '$2',\n flexDirection: 'column',\n '&:not(:last-child)::after': {\n width: '100%',\n height: '4px',\n left: '50%',\n top: '14px'\n }\n }\n },\n separator: {\n default: { '&:not(:last-child)::after': { bg: '$grey200' } },\n active: { '&:not(:last-child)::after': { bg: '$primary800' } },\n success: { '&:not(:last-child)::after': { bg: '$success' } },\n viewed: { '&:not(:last-child)::after': { bg: '$grey600' } }\n },\n status: {\n completed: {},\n active: {},\n default: {},\n viewed: {},\n success: {},\n reviewed: {}\n }\n },\n compoundVariants: [\n {\n canInteract: true,\n status: 'completed',\n css: {\n '&:hover': {\n '& :first-child': { bg: '$primary900', color: 'white !important' },\n '& :last-child': { color: '$primary900' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'reviewed',\n css: {\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n }\n ]\n})\n","import { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport const StepperStepLabel = styled(Text, {\n fontWeight: 600,\n variants: {\n direction: {\n vertical: { ml: '$3', textAlign: 'left' },\n horizontal: { mt: '$3', textAlign: 'center' }\n },\n status: {\n default: { color: '$grey700', fontWeight: 400 },\n active: {\n color: '$primary900'\n },\n viewed: { color: '$grey1000' },\n completed: { color: '$primary800' },\n success: { color: '$success' },\n reviewed: {}\n }\n }\n})\n","import { CSS } from '~/stitches'\n\nexport enum Status {\n ACTIVE = 'active',\n VIEWED = 'viewed',\n SUCCESS = 'success',\n DEFAULT = 'default',\n COMPLETED = 'completed',\n REVIEWED = 'reviewed'\n}\nexport interface Step {\n label?: string\n status: `${Status}`\n}\n\nexport type Direction = 'vertical' | 'horizontal'\n\nexport type Context = {\n steps: Step[]\n goToPreviousStep?: () => void\n goToNextStep?: () => void\n goToStep?: (index: number) => void\n activeStep: number\n viewedSteps: number[]\n completedSteps: number[]\n allowSkip?: boolean\n direction?: Direction\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport type StepperProviderProps = {\n stepCount: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps: Step[]\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport interface IStepperProps {\n css?: CSS\n stepCount?: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps?: Step[]\n hideLabels?: boolean\n showCompletedIcons?: boolean\n}\n\nexport interface IStepperNavigateProps {\n label?: (currentStep?: number) => string\n onClick?: (next: () => void) => void\n}\n\nexport interface IStepperStepsProps {\n css?: CSS\n}\n","import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n justifyContent: 'space-between',\n variants: {\n direction: {\n vertical: { flexDirection: 'column' },\n horizontal: { flexDirection: 'row' }\n }\n }\n})\n\nexport const StepperSteps = ({ css }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer css={css} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n css={\n direction === 'horizontal'\n ? { width: `calc(100% / ${steps.length})` }\n : { height: `calc(100% / ${steps.length})` }\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n css={{\n cursor:\n allowSkip && viewedSteps.includes(index) ? 'pointer' : 'auto'\n }}\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Box } from '../box/Box'\nimport { StepperProvider } from './stepper-context/StepperContext'\nimport { StepperStepBack } from './StepperStepBack'\nimport { StepperStepForward } from './StepperStepForward'\nimport { StepperSteps } from './StepperSteps'\nimport { IStepperProps } from './types'\n\nconst StepperComponent = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}: React.PropsWithChildren<IStepperProps>) => {\n invariant(\n !(stepCount && steps),\n '`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.'\n )\n\n const count = steps?.length || stepCount || 0\n\n return (\n <StepperProvider\n stepCount={count}\n allowSkip={allowSkip}\n onComplete={onComplete}\n onStepChange={stepCount ? onStepChange : undefined}\n direction={direction}\n steps={steps || Array(count).fill('')}\n hideLabels={hideLabels}\n showCompletedIcons={showCompletedIcons}\n >\n <Box\n aria-label=\"progress\"\n css={{\n width: '100%',\n ...css\n }}\n >\n {children}\n </Box>\n </StepperProvider>\n )\n}\n\nexport const Stepper = Object.assign(StepperComponent, {\n StepBack: StepperStepBack,\n StepForward: StepperStepForward,\n Steps: StepperSteps\n})\n\nStepperComponent.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$grey600',\n border: 'none',\n borderRadius: '$round',\n cursor: 'pointer',\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 50ms ease-out',\n '&:hover': {\n backgroundColor: '$grey700'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800'\n },\n '&[data-state=\"checked\"]:hover': {\n backgroundColor: '$primary900'\n },\n '&[disabled]': disabledStyle,\n variants: {\n size: {\n md: {\n p: '$0',\n width: '$4'\n },\n lg: {\n p: '$1',\n width: '$6'\n }\n }\n }\n})\n\nconst StyledThumb = styled(RadixSwitch.Thumb, {\n backgroundColor: 'white',\n borderRadius: '$round',\n display: 'block',\n transition: 'transform 50ms',\n willChange: 'transform',\n variants: {\n size: {\n md: {\n size: '$1',\n '&[data-state=\"checked\"]': {\n transform: 'translateX(calc($sizes$2 - $space$1))'\n }\n },\n lg: {\n size: '$2',\n '&[data-state=\"checked\"]': {\n transform: 'translateX($space$5)'\n }\n }\n }\n }\n})\n\ntype SwitchProps = React.ComponentProps<typeof StyledSwitch>\n\nexport const Switch = ({ size = 'md', ...rest }: SwitchProps) => (\n <StyledSwitch size={size} {...rest}>\n <StyledThumb size={size} />\n </StyledSwitch>\n)\n\nSwitch.displayName = 'Switch'\n","import { Content } from '@radix-ui/react-tabs'\n\nimport { styled } from '~/stitches'\n\nconst StyledTabsContent = styled(Content, {\n flexGrow: 1,\n fontFamily: '$body'\n})\n\nexport const TabsContent = StyledTabsContent\n\nTabsContent.displayName = 'TabsContent'\n","import { Trigger } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle, focusVisibleStyleBlock } from '~/utilities'\n\nimport { Text } from '../text'\n\nconst StyledTabsTriggerHoverBackground = styled('div', {\n position: 'absolute',\n inset: 0,\n height: 'calc(100% + 2px)',\n opacity: 0,\n bg: '$interactive1'\n})\n\nconst StyledTabsTrigger = styled(Trigger, {\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n flexShrink: 0,\n p: '$4',\n userSelect: 'none',\n borderBottom: '2px solid transparent',\n position: 'relative',\n '&[data-state=\"active\"]': {\n color: '$interactive1',\n fontWeight: 600,\n letterSpacing: '-0.005em',\n borderColor: 'currentColor'\n },\n '&[disabled]': disabledStyle,\n '&:not([disabled])': {\n '&:hover, &:focus-visible': {\n color: '$interactive2',\n [`& ${StyledTabsTriggerHoverBackground}`]: {\n opacity: 0.07\n }\n },\n '&:active': {\n color: '$interactive3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n }\n})\n\nexport const TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTabsTrigger> & { value: string }\n>(({ children, ...rest }, ref) => (\n <StyledTabsTrigger {...rest} ref={ref}>\n <Text size=\"sm\" as=\"span\">\n {children}\n </Text>\n <StyledTabsTriggerHoverBackground />\n </StyledTabsTrigger>\n))\n\nTabsTrigger.displayName = 'TabsTrigger'\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseScrollPositionOptions = {\n element?: HTMLElement | null\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseScrollPositionOutput = {\n left: number\n top: number\n}\n\nexport const useScrollPosition = ({\n element,\n delay = 500,\n delayMethod = 'throttle'\n}: TUseScrollPositionOptions): TUseScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ left: 0, top: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n if (!element) return\n\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ left: element.scrollLeft, top: element.scrollTop })\n })\n\n element.addEventListener('scroll', handleScroll)\n\n return () => {\n element.removeEventListener('scroll', handleScroll)\n }\n }, [element, delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\n\ninterface Size {\n width: number | undefined\n height: number | undefined\n}\n\nexport const useSize = ({\n element,\n delay = 500\n}: {\n element?: HTMLElement | null\n delay?: number\n}): Size => {\n const [size, setSize] = useState<Size>({\n width: undefined,\n height: undefined\n })\n\n const handleResize = useCallback(() => {\n setSize({\n width: element?.clientWidth,\n height: element?.clientHeight\n })\n }, [element])\n\n const elements = useMemo(() => [element], [element])\n\n useResizeObserver({\n delay,\n elements: elements,\n onResize: handleResize\n })\n\n return size\n}\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport { List } from '@radix-ui/react-tabs'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useScrollPosition } from '~/utilities/hooks/useScrollPosition'\nimport { useSize } from '~/utilities/hooks/useSize'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledContainer = styled(ColorScheme, {\n position: 'relative',\n borderBottom: '1px solid $base4',\n width: '100%'\n})\n\nconst StyledTriggerList = styled(List, {\n flexShrink: 0,\n display: 'flex',\n width: '100%',\n overflowX: 'auto',\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none'\n})\n\nconst StyledChevronActionIcon = styled(ActionIcon, {\n height: '100% !important',\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'pointer',\n background: '$base1 !important',\n color: '$interactive1 !important',\n borderRadius: 0,\n opacity: 0.9\n})\n\nconst SCROLL_STEP = 0.8 // Used to scroll 80% of clientWidth\n\nexport const TabsTriggerList = ({\n children,\n colorScheme = {},\n ...rest\n}: React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n}) => {\n const [listRef, setListRefCallback] = useCallbackRefState()\n\n const { width } = useSize({ element: listRef, delay: 500 })\n const { left } = useScrollPosition({\n element: listRef,\n delay: 100,\n delayMethod: 'debounce'\n })\n\n const canScrollXAxis = React.useMemo(() => {\n if (!listRef) return false\n return listRef.scrollWidth > listRef.clientWidth\n }, [width, listRef])\n\n const canScrollLeft = React.useMemo(() => {\n if (!canScrollXAxis) return false\n return left > 0\n }, [left, canScrollXAxis])\n\n const canScrollRight = React.useMemo(() => {\n if (!listRef || !canScrollXAxis) return false\n return listRef.scrollWidth - left - listRef.clientWidth > 1 // 1 rather than 0 to account for sub-pixel widths and calculations\n }, [listRef, left, canScrollXAxis])\n\n const scrollList = React.useCallback(\n (stepModifier) => {\n if (!listRef) return\n listRef.scroll({\n left: listRef.scrollLeft + listRef.clientWidth * stepModifier,\n behavior: 'smooth'\n })\n },\n [listRef]\n )\n\n return (\n <StyledContainer\n base=\"grey1\"\n accent=\"primary1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronRight} />\n </StyledChevronActionIcon>\n )}\n </StyledContainer>\n )\n}\n\nTabsTriggerList.displayName = 'TabsTriggerList'\n","import { Root } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TabsContent } from './TabsContent'\nimport { TabsTrigger } from './TabsTrigger'\nimport { TabsTriggerList } from './TabsTriggerList'\n\ntype TabsProps = React.ComponentProps<typeof StyledRoot>\n\nconst StyledRoot = styled(Root, { width: '100%' })\n\nexport const Tabs = Object.assign(StyledRoot, {\n TriggerList: TabsTriggerList,\n Trigger: TabsTrigger,\n Content: TabsContent\n})\n\nStyledRoot.displayName = 'Tabs'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTextarea = styled('textarea', {\n boxShadow: 'none', // remove iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n m: 0,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n width: '100%',\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n state: {\n error: {}\n }\n },\n defaultVariants: {\n appearance: 'standard'\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.ForwardRefExoticComponent<TextareaProps> =\n React.forwardRef((props, ref) => <StyledTextarea {...props} ref={ref} />)\n\nTextarea.displayName = 'Textarea'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField = ({\n css = undefined,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: TextareaFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nexport const StyledTile = styled('div', {\n all: 'unset', // important for buttons etc\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative', // for pseudo-elements\n border: '1px solid',\n bg: '$base1',\n color: '$foreground',\n borderColor: 'transparent',\n variants: {\n borderRadius: {\n sm: { borderRadius: '$0' },\n md: { borderRadius: '$1' },\n lg: { borderRadius: '$3' }\n },\n border: {\n true: { borderColor: '$base3' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $base1 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n }\n }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n colorScheme?: TcolorScheme\n}\n\nexport const Tile: React.ForwardRefExoticComponent<TTileProps> =\n React.forwardRef(\n ({ children, borderRadius = 'lg', colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"primary2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} borderRadius={borderRadius} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n )\n\nTile.displayName = 'Tile'\n","import { Flex } from '~/components/flex'\n\nexport const TileGroup = Flex\n","import React from 'react'\n\nimport { Tile } from '~/components/tile'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nconst StyledTileInteractive = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Tile, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n cursor: 'pointer',\n transform: 'translateY(0)',\n transition: 'transform 250ms ease',\n '&::after': {\n content: '',\n position: 'absolute',\n inset: 0,\n boxShadow: '$2',\n opacity: 0,\n transition: 'opacity 250ms ease-out',\n borderRadius: 'inherit',\n pointerEvents: 'none'\n },\n '&:hover': {\n transform: 'translateY(-$space$0)',\n '&::after': {\n opacity: 1\n }\n },\n '&:active': {\n bg: '$base2'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n }\n})\n\ntype TTileInteractiveProps = React.ComponentProps<\n typeof StyledTileInteractive\n> & {\n as?: React.ComponentType | React.ElementType\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\n NavigatorActions\n\nexport const TileInteractive: React.ForwardRefExoticComponent<TTileInteractiveProps> =\n React.forwardRef(({ onClick, href, type = 'button', as, ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n as: as || ('a' as React.ElementType),\n href,\n onClick: undefined\n }\n : { as: as || ('button' as React.ElementType), type, onClick }\n\n return (\n <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\n )\n })\n\nTileInteractive.displayName = 'TileInteractive'\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileInteractive } from '~/components/tile-interactive'\nimport { styled } from '~/stitches'\n\nconst StyledTileToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(TileInteractive, {\n '&:not([disabled])': {\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$interactive2'\n },\n '&:active': {\n bg: '$interactive3'\n }\n }\n },\n '&[data-state=\"on\"]': {\n bg: '$interactive1',\n borderColor: '$accent8',\n '&::before': {\n content: '',\n position: 'absolute',\n inset: -1, // account for 1px Tile border\n boxShadow: 'inset $colors$accent8 0px 0px 0px 2px',\n borderRadius: 'inherit',\n zIndex: 1 // so it's over anything nested which touches sides\n }\n }\n})\n\ntype TTileToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledTileToggleGroupItem>\n\nexport const TileToggleGroupItem = ({\n children,\n ...rest\n}: TTileToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem as=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TTileToggleGroupRootProps = React.ComponentProps<typeof TileGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal'\n ? 'row'\n : orientation === 'vertical'\n ? 'column'\n : undefined\n\nexport const TileToggleGroupRoot: React.ForwardRefExoticComponent<TTileToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n gap=\"2\"\n wrap=\"wrap\"\n {...props}\n />\n )\n })\n","import { TileToggleGroupItem } from './TileToggleGroupItem'\nimport { TileToggleGroupRoot } from './TileToggleGroupRoot'\n\ntype TTileToggleGroup = typeof TileToggleGroupRoot & {\n Item: typeof TileToggleGroupItem\n}\n\nexport const TileToggleGroup = TileToggleGroupRoot as TTileToggleGroup\nTileToggleGroup.Item = TileToggleGroupItem\nTileToggleGroup.displayName = 'TileToggleGroup'\n","import { Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { CSS, keyframes, styled } from '~/stitches'\nexport { default as toast } from 'react-hot-toast'\nimport type { Toast as ToastType } from 'react-hot-toast/dist/core/types'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nimport { Flex } from '../flex'\nimport { Spacer } from '../spacer'\nimport { Text } from '../text'\nimport { Toast } from './Toast'\n\nconst DEFAULT_OFFSET = '$2'\nconst TOAST_WIDTH = 400\n\nconst ToastProviderBase = styled('div', {\n position: 'fixed',\n zIndex: MAX_Z_INDEX,\n inset: DEFAULT_OFFSET,\n pointerEvents: 'none',\n '@sm': {\n top: '$3'\n }\n})\n\nconst slideIn = keyframes({\n '0%': { transform: 'translateY(-100%)', opacity: 0 },\n '100%': { transform: `translateY(0)`, opacity: 1 }\n})\n\nconst slideOut = keyframes({\n '0%': { transform: `translateY(0)`, opacity: 1 },\n '100%': { transform: `translateY(-100%)`, opacity: 0 }\n})\n\nconst ToastWrapper = styled('div', {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n boxSizing: 'border-box',\n minHeight: '$5',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst ToastContext = React.createContext<Pick<\n ToastType,\n 'type' | 'id' | 'message'\n> | null>(null)\n\nexport const ToastProvider = ({\n children,\n css\n}: React.PropsWithChildren<{ css?: CSS }>) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <ToastProviderBase\n onMouseEnter={startPause}\n onMouseLeave={endPause}\n css={css}\n >\n {toasts.map((toast) => {\n const { message: children } = toast\n\n const offset = calculateOffset(toast.id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el: HTMLDivElement | null) => {\n if (el && toast.height === undefined) {\n updateHeight(toast.id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastWrapper\n key={toast.id}\n ref={ref}\n visible={toast.visible}\n role={toast.role}\n aria-live={toast.ariaLive}\n css={{ top: offset }}\n >\n <ToastContext.Provider value={toast}>\n {typeof children === 'function' ? (\n children(toast)\n ) : React.isValidElement(children) ? (\n children\n ) : (\n <Toast css={{ width: TOAST_WIDTH }}>\n {toast.type === 'error' && <Toast.Icon is={Error} />}\n <Text>{children}</Text>\n <Spacer />\n <Toast.Close />\n </Toast>\n )}\n </ToastContext.Provider>\n </ToastWrapper>\n )\n })}\n </ToastProviderBase>\n {children}\n </>\n )\n}\n\nexport const useToastContext = () => {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastContext must be used within a ToastProvider')\n }\n\n return context\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast } from 'react-hot-toast/dist/core/types'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { useToastContext } from './ToastProvider'\n\nexport interface ToastCloseButtonProps\n extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {\n onDismiss?: () => void\n label?: string\n}\n\nexport const ToastCloseButton = ({\n onDismiss,\n label = 'Close alert',\n ...rest\n}: ToastCloseButtonProps): JSX.Element => {\n const { id } = useToastContext()\n\n return (\n <ActionIcon\n css={{\n color: 'white',\n mr: '-$2',\n '&:hover,&:focus': { color: 'white', opacity: 0.8 }\n }}\n label={label}\n onClick={() => {\n toast.dismiss(id)\n onDismiss?.()\n }}\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n}\n","import React from 'react'\n\nimport { Icon } from '../icon'\n\nexport const ToastIcon = (\n props: React.ComponentProps<typeof Icon>\n): JSX.Element => (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { ToastCloseButton } from './ToastCloseButton'\nimport { ToastIcon } from './ToastIcon'\nimport { useToastContext } from './ToastProvider'\n\nconst toastVariants = {\n loading: { bg: '$info' },\n blank: { bg: '$info' },\n success: { bg: '$success' },\n error: { bg: '$danger' }\n} as const\n\nexport const StyledToast = styled(Flex, {\n pointerEvents: 'auto',\n borderRadius: '$3',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n minHeight: '$5',\n position: 'relative',\n px: '$4',\n py: '$1',\n transition: 'background-color 50ms ease-out',\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n type: toastVariants\n }\n})\n\ntype ToastProps = Omit<React.ComponentProps<typeof StyledToast>, 'type'> & {\n type?: keyof typeof toastVariants\n}\n\nexport const Toast = (props: ToastProps): JSX.Element => {\n const { type } = useToastContext()\n return <StyledToast align=\"center\" type={props.type || type} {...props} />\n}\n\nToast.Icon = ToastIcon\nToast.Close = ToastCloseButton\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\n\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nexport const StyledItem = styled(ToggleGroup.Item, {\n cursor: 'pointer',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n standard: {\n bg: 'white',\n color: '$grey800',\n border: '1px solid $grey600',\n '&::before': {\n background: '$grey600'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible, &[data-state=\"on\"]': {\n '&::before': {\n background: 'none'\n }\n },\n '&:hover': {\n borderColor: 'currentColor !important',\n color: '$primary900'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$primary800',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n },\n modern: {\n bg: '$grey200',\n borderRadius: '$1',\n overflow: 'hidden',\n border: '0',\n '&:not([disabled])': {\n '&:hover': {\n color: '$primary900'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$grey800',\n border: '1px solid $grey200 !important',\n bg: 'white',\n boxShadow: 'none !important'\n }\n }\n }\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { StyledItem } from './ToggleGroupItem'\n\nconst minHeight = {\n sm: '32px',\n md: '40px',\n lg: '48px'\n}\n\nconst px = {\n sm: '$4',\n md: '$5',\n lg: '$5'\n}\n\nconst spacingBetweenElements = {\n sm: '$2',\n md: '$3',\n lg: '$3'\n}\n\nconst getSizeVariant = (size: string) => ({\n fontSize: `$${size}`,\n px: px[size],\n minHeight: minHeight[size],\n '& > *:not(:last-child)': {\n mr: spacingBetweenElements[size]\n }\n})\n\nexport const StyledButton = styled(StyledItem, {\n flexGrow: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n lineHeight: 1,\n py: '$1',\n variants: {\n size: {\n sm: getSizeVariant('sm'),\n md: getSizeVariant('md'),\n lg: getSizeVariant('lg')\n },\n isIconOnly: {\n true: {}\n },\n theme: {\n standard: {},\n modern: {}\n }\n },\n compoundVariants: [\n {\n isIconOnly: true,\n size: 'sm',\n css: {\n minWidth: minHeight.sm,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n css: {\n minWidth: minHeight.md,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n css: {\n minWidth: minHeight.lg,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'sm',\n theme: 'modern',\n css: {\n minWidth: minHeight.md,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n theme: 'modern',\n css: {\n minWidth: minHeight.lg,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n theme: 'modern',\n css: {\n minWidth: '60px',\n p: 0\n }\n }\n ]\n})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(\n ({ size = 'md', theme = 'standard', children, ...rest }, ref) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n const isIconOnly =\n isSingleChild &&\n React.isValidElement(childrenArray[0]) &&\n childrenArray[0]?.type === Icon\n\n return (\n <StyledButton\n ref={ref}\n size={size}\n isIconOnly={isIconOnly}\n theme={theme}\n {...rest}\n >\n {\n childrenArray.map((child) => {\n if (\n !isSingleChild &&\n (typeof child === 'string' || typeof child === 'number')\n )\n return <span key={child}>{child}</span>\n if (React.isValidElement(child)) {\n if (child?.type === Icon)\n return React.cloneElement(child, { ...child.props, size })\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledButton>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n isFullWidth?: boolean\n}\n\nexport const StyledRoot = styled(ToggleGroup.Root, {\n width: 'fit-content',\n variants: {\n isFullWidth: {\n true: {\n width: '100%',\n [`& ${StyledItem}`]: {\n flexBasis: 0,\n flexGrow: 1\n }\n },\n false: {\n width: 'auto'\n }\n },\n hasGap: {\n true: {\n [`& ${StyledItem}`]: {\n borderRadius: '$0'\n }\n },\n false: {\n borderRadius: '$1',\n [`& ${StyledItem}`]: {\n position: 'relative',\n '&:not(:last-child)::before': {\n content: '',\n position: 'absolute'\n }\n }\n }\n },\n direction: {\n column: {},\n row: {}\n },\n theme: {\n standard: {},\n modern: { bg: '$grey200' }\n }\n },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\n theme: 'standard',\n css: {\n [`& ${StyledItem}`]: {\n '&:not(:last-child)::before': {\n top: '-1px',\n height: 'calc(100% + 2px)',\n width: '1px',\n right: '0',\n transform: 'translateX(150%)'\n },\n '&:not(:first-child)': {\n borderLeftColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderRightColor: 'transparent'\n },\n '&:first-child': {\n borderTopLeftRadius: '$1',\n borderBottomLeftRadius: '$1'\n },\n '&:last-child': {\n borderTopRightRadius: '$1',\n borderBottomRightRadius: '$1'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\n theme: 'standard',\n css: {\n [`& ${StyledItem}`]: {\n '&:not(:last-child)::before': {\n bottom: 0,\n left: '-1px',\n height: '1px',\n width: 'calc(100% + 2px)',\n transform: 'translateY(150%)'\n },\n '&:first-child': {\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0'\n },\n '&:last-child': {\n borderBottomLeftRadius: '$0',\n borderBottomRightRadius: '$0'\n },\n '&:not(:first-child)': {\n borderTopColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderBottomColor: 'transparent'\n }\n }\n }\n },\n {\n hasGap: false,\n theme: 'modern',\n css: {}\n },\n {\n hasGap: false,\n theme: 'standard',\n css: {\n bg: 'white',\n [`& ${StyledItem}`]: {\n bg: 'transparent',\n borderRadius: 0\n }\n }\n }\n ]\n})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n Pick<React.ComponentProps<typeof Flex>, 'gap' | 'wrap'> &\n React.ComponentProps<typeof StyledRoot> &\n RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap,\n isFullWidth,\n children,\n theme = 'standard',\n wrap,\n ...rest\n },\n ref\n ) => {\n const hasGap = typeof gap === 'number'\n const direction = orientationToDirection(orientation)\n return (\n <StyledRoot\n ref={ref}\n direction={direction}\n hasGap={hasGap}\n isFullWidth={isFullWidth}\n orientation={orientation}\n theme={theme}\n {...rest}\n >\n <Flex\n direction={direction}\n gap={hasGap ? gap : undefined}\n wrap={wrap || 'nowrap'}\n >\n {\n React.Children.toArray(children).map((child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { ...child.props, theme })\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n </StyledRoot>\n )\n }\n)\n","import { ToggleGroupButton as Button } from './ToggleGroupButton'\nimport { ToggleGroupItem as Item } from './ToggleGroupItem'\nimport { ToggleGroupRoot as Root } from './ToggleGroupRoot'\nexport const ToggleGroup = { Item, Button, Root }\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseWindowScrollPositionOptions = {\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseWindowScrollPositionOutput = {\n x: number\n y: number\n}\n\nexport const useWindowScrollPosition = ({\n delay = 500,\n delayMethod = 'throttle'\n}: TUseWindowScrollPositionOptions = {}): TUseWindowScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ x: window.scrollX, y: window.scrollY })\n })\n\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n divider: '$grey200',\n borderBottom: '$grey200'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import React from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\ntype TopBarActionIconProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'size' | 'children'\n> & { icon: React.FC<React.SVGProps<SVGSVGElement>>; label: string }\n\nexport const TopBarActionIcon: React.ForwardRefExoticComponent<TopBarActionIconProps> =\n React.forwardRef(({ icon, ...rest }, forwardedRef) => {\n return (\n <ActionIcon\n size=\"md\"\n appearance=\"simple\"\n theme=\"neutral\"\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </ActionIcon>\n )\n })\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: Pick<\n React.ComponentProps<typeof Image>,\n 'src' | 'alt' | 'css'\n>): JSX.Element => {\n return (\n <Image\n src={src}\n alt={alt}\n css={{\n height: '$3',\n mr: '$3',\n width: 'auto',\n ...css\n }}\n />\n )\n}\n\nexport const TopBarBrandName = styled(Text, {\n color: '$grey800'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$grey800',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { useWindowScrollPosition } from '~/utilities/hooks/useWindowScrollPosition'\n\nimport { Divider } from '../divider'\nimport { Flex } from '../flex'\nimport { colorSchemes as topBarColorSchemes } from './stitches.topBar.colorscheme.config'\nimport { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$divider' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: '$background',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n\n zIndex: 1,\n transition: 'box-shadow .2s ease-out',\n variants: {\n hasScrolled: {\n true: { boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1);' }\n },\n size: {\n md: { height: '$6' },\n lg: { height: '$7' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $background 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n },\n appearance: {\n standard: {\n width: '100vw',\n top: '0',\n borderBottom: '1px solid $borderBottom'\n },\n rounded: {\n width: '100%',\n top: '$2',\n p: '$2',\n border: '1px solid #ffffff',\n borderRadius: '$round'\n }\n }\n }\n})\n\nconst Container = styled(Flex, {\n alignItems: 'center',\n height: '$4',\n mx: '$4',\n width: '100%',\n '@md': {\n mx: '$5'\n }\n})\n\ntype StyledRootProps = React.ComponentProps<typeof StyledRoot>\n\ntype TopBarProps = StyledRootProps & {\n css?: CSS\n className?: string\n}\n\nconst TopBarComponent = ({\n size = 'md',\n diffused,\n className = topBarColorSchemes['light'],\n appearance = 'standard',\n ...props\n}: React.PropsWithChildren<TopBarProps>) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot\n className={className}\n hasScrolled={!!scrollPositionY}\n diffused={diffused}\n appearance={appearance}\n size={size}\n >\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nexport const TopBar = Object.assign(TopBarComponent, {\n Brand: TopBarBrand,\n BrandLogo: TopBarBrandLogo,\n BrandName: TopBarBrandName,\n ActionIcon: TopBarActionIcon,\n Divider: TopBarDivider\n})\n\nTopBarComponent.displayName = 'TopBar'\n","import * as React from 'react'\n// Note: Only loading vimeo to reduce the bundle size https://www.npmjs.com/package/react-player\nimport ReactPlayer from 'react-player/vimeo'\n\nimport { Box } from '~/components/box'\nimport { CSS, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\nimport { Override } from '~/utilities/types'\n\nconst StyledVideo = styled(ReactPlayer, {})\n\ntype VideoProps = Override<\n React.ComponentProps<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video: React.ForwardRefExoticComponent<VideoProps> =\n React.forwardRef(({ id, ratio = 9 / 16, css, ...remainingProps }, ref) => (\n <CSSWrapper css={css}>\n <Box\n css={{\n borderRadius: '$0',\n position: 'relative',\n paddingTop: `${ratio * 100}%`,\n overflow: 'hidden',\n height: 0,\n width: '100%'\n }}\n >\n <StyledVideo\n {...remainingProps}\n role=\"figure\"\n url={`https://player.vimeo.com/video/${id}`}\n height=\"100%\"\n width=\"100%\"\n css={{ position: 'absolute', top: 0, left: 0 }}\n ref={ref}\n />\n </Box>\n </CSSWrapper>\n ))\n\nVideo.displayName = 'Video'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { Box } from '../box'\nimport { Text } from '../text'\n\nconst StyledSlot = styled(Slot)\n\ntype KeyboardEventWindowOrElement =\n | KeyboardEvent\n | React.KeyboardEvent<HTMLDivElement>\ntype ShortcutConfig = Partial<KeyboardEvent>\n\ntype KeyboardShortcutProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n config: {\n shortcut: ShortcutConfig\n action: ({\n event,\n shortcut\n }: {\n event: KeyboardEvent | React.KeyboardEvent<HTMLDivElement>\n shortcut: ShortcutConfig\n }) => void\n }[]\n targetWindow?: boolean\n onKeyDown?: (e: KeyboardEventWindowOrElement) => void\n}\n\nexport const KeyboardShortcut: React.ForwardRefExoticComponent<KeyboardShortcutProps> =\n React.forwardRef(\n ({ asChild, config, targetWindow = false, onKeyDown, ...rest }, ref) => {\n const [targetElRef, setTargetElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => targetElRef as HTMLDivElement)\n\n const handleOnKeydown = React.useCallback(\n (e: KeyboardEventWindowOrElement) => {\n config.forEach(({ shortcut, action }) => {\n if (\n Object.entries(shortcut).every(([key, value]) => e[key] === value)\n )\n action({ event: e, shortcut })\n })\n onKeyDown?.(e)\n },\n [config, onKeyDown]\n )\n\n React.useEffect(() => {\n if (targetWindow) window.addEventListener('keydown', handleOnKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleOnKeydown)\n }\n }, [targetWindow, handleOnKeydown])\n\n const Component = asChild ? StyledSlot : Box\n\n return (\n <Component\n onKeyDown={targetWindow ? undefined : handleOnKeydown}\n ref={setTargetElRef}\n {...rest}\n />\n )\n }\n )\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\nconst StyledKeyboardShortcutIndicator = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n bg: '$grey100',\n color: '$textSubtle',\n px: '$2',\n py: '$0',\n minWidth: '$2',\n minHeight: '$2',\n fontWeight: 400,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$1',\n flexShrink: 0\n})\n\ntype KeyboardShortcutIndicatorProps = React.ComponentProps<\n typeof StyledKeyboardShortcutIndicator\n>\n\nexport const KeyboardShortcutIndicator = (\n props: KeyboardShortcutIndicatorProps\n) => {\n return <StyledKeyboardShortcutIndicator size=\"sm\" as=\"kbd\" {...props} />\n}\n\nKeyboardShortcutIndicator.displayName = 'KeyboardShortcut'\n","import {\n KeyboardShortcut as KeyboardShortcutComponent,\n KeyboardShortcutIndicator\n} from './KeyboardShortcut'\n\nexport const KeyboardShortcut = Object.assign(KeyboardShortcutComponent, {\n Indicator: KeyboardShortcutIndicator\n})\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport type { SegmentedControlRootProps } from './SegmentedControlRoot'\n\nexport interface SegmentedControlContextValue\n extends Pick<\n React.ComponentProps<typeof Tabs>,\n 'defaultValue' | 'value' | 'onValueChange'\n > {\n size: SegmentedControlRootProps['size']\n theme: SegmentedControlTheme\n}\n\nexport const SegmentedControlContext =\n React.createContext<SegmentedControlContextValue>({\n size: 'md',\n theme: 'primary',\n defaultValue: '',\n value: '',\n onValueChange: () => null\n })\n","import * as React from 'react'\n\nimport { Badge } from '../badge'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst badgeSizeMap = {\n sm: 'xs',\n md: 'xs',\n lg: 'sm'\n}\n\nexport const SegmentedControlBadge = ({\n css,\n ...props\n}: Omit<React.ComponentProps<typeof Badge>, 'size'>): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return (\n <Badge\n {...props}\n css={{ border: 'none', ...css, fontWeight: 'normal' }}\n size={badgeSizeMap[size as string]}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\n\nexport const SegmentedControlContent = Tabs.Content\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(Text, {\n fontFamily: '$body',\n color: '$textSubtle',\n fontWeight: 400,\n variants: {\n size: {\n sm: {\n fontSize: '$xs'\n },\n md: {\n fontSize: '$sm'\n },\n lg: {\n fontSize: '$md'\n }\n }\n }\n})\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(Text, {\n fontFamily: '$body',\n color: '$textRegular',\n variants: {\n size: {\n sm: {\n fontSize: '$sm'\n },\n md: {\n fontSize: '$md'\n },\n lg: {\n fontSize: '$lg'\n }\n }\n }\n})\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { Icon } from '../icon'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst sizeMap = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const SegmentedControlIcon = (\n props: Omit<React.ComponentProps<typeof Icon>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <Icon {...props} size={sizeMap[size as string]} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledItem = styled(Tabs.Trigger, {\n position: 'relative',\n bg: 'transparent',\n borderRadius: '$2',\n p: 0,\n zIndex: 2,\n minWidth: '140px',\n border: '2px solid transparent',\n variants: {\n theme: {\n primary: {\n '&[data-state=inactive]:hover': {\n bg: '$primary300'\n },\n '&:focus-visible': {\n borderColor: '$primary800'\n }\n },\n marsh: {\n '&[data-state=inactive]:hover': {\n bg: '$marsh300'\n },\n '&:focus-visible': {\n borderColor: '$marsh800'\n }\n }\n },\n size: {\n sm: {\n flex: 'unset',\n p: '$4 $24',\n gap: '$3'\n },\n md: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n },\n lg: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n }\n }\n },\n '& > div': { display: 'none' },\n '& > span': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n '&[data-state=active]': {\n boxShadow: 'none',\n border: '2px solid transparent',\n fontWeight: 600,\n color: '$textBold',\n '&:focus-visible': {\n boxShadow: 'none',\n borderColor: '$primary800'\n }\n },\n '&[data-state=inactive]': {\n fontWeight: 400,\n color: '$grey900'\n },\n '&[disabled]': {\n opacity: 0.3\n }\n})\n\nexport const SegmentedControlItem = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentProps<typeof StyledItem>, 'size'>\n>(({ children, ...props }, ref) => {\n const { size, theme } = React.useContext(SegmentedControlContext)\n\n return (\n <StyledItem {...props} theme={theme} size={size} ref={ref}>\n {children}\n </StyledItem>\n )\n})\n\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Box } from '../box'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\nimport { SegmentedControlItem } from './SegmentedControlItem'\n\nconst StyledTriggerList = styled(Tabs.TriggerList, {\n position: 'relative',\n p: '$1',\n borderRadius: '$3',\n overflow: 'hidden',\n variants: {\n theme: {\n primary: { bg: '$primary200' },\n marsh: { bg: '$marsh200' }\n }\n },\n '& > div[role=\"tablist\"]': {\n position: 'relative'\n },\n '& > button': {\n zIndex: 2\n }\n})\n\nconst SelectionIndicator = styled(Box, {\n content: '',\n position: 'absolute',\n bg: 'white',\n borderRadius: '$2',\n variants: {\n interacted: {\n true: {\n transition: 'all 0.3s ease'\n },\n false: {\n transition: 'none'\n }\n }\n }\n})\n\nexport const SegmentedControlItemList = (\n props: React.ComponentProps<typeof Tabs.TriggerList>\n): JSX.Element => {\n const { theme, defaultValue, value } = React.useContext(\n SegmentedControlContext\n )\n\n const tabsRef = React.useRef<(HTMLElement | null)[]>([])\n\n const selectedIndex = React.Children.toArray(props.children).findIndex(\n (child) => (child as React.ReactElement)?.props.value === value\n )\n\n const [indicatorStyles, setIndicatorStyles] = React.useState({\n left: 0,\n height: 0,\n width: 0\n })\n const [hasInteracted, setHasInteracted] = React.useState(false)\n\n const updateIndicatorPosition = React.useCallback(() => {\n const currentTab = tabsRef.current[selectedIndex]\n if (!currentTab) return\n\n const { width, height } = currentTab.getBoundingClientRect()\n setIndicatorStyles({ left: currentTab.offsetLeft, height, width })\n }, [selectedIndex])\n\n React.useEffect(() => {\n const resizeObserver = new ResizeObserver(updateIndicatorPosition)\n const currentTabs = tabsRef.current\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.observe(tab)\n })\n\n return () => {\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.unobserve(tab)\n })\n resizeObserver.disconnect()\n }\n }, [selectedIndex, updateIndicatorPosition])\n\n React.useEffect(() => {\n window.addEventListener('resize', updateIndicatorPosition)\n return () => {\n window.removeEventListener('resize', updateIndicatorPosition)\n }\n }, [updateIndicatorPosition])\n\n React.useEffect(() => {\n updateIndicatorPosition()\n }, [selectedIndex, updateIndicatorPosition])\n\n return (\n <StyledTriggerList theme={theme} defaultValue={defaultValue} {...props}>\n <SelectionIndicator\n css={{\n ...indicatorStyles\n }}\n interacted={hasInteracted}\n />\n {React.Children.map(props.children, (child, index) => {\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to SegmentedControlItemList is not a valid element`\n )\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof SegmentedControlItem>\n >,\n {\n onClick: (e) => {\n setHasInteracted(true)\n if (child.props.onClick) child.props.onClick(e)\n },\n ref: (el) => (tabsRef.current[index] = el)\n }\n )\n })}\n </StyledTriggerList>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledSegmentedControlRoot = styled(Tabs, {\n '& > div': { border: 'none' },\n variants: {\n size: {\n sm: {\n width: 'unset'\n },\n md: {},\n lg: {}\n }\n }\n})\n\nexport interface SegmentedControlRootProps\n extends React.ComponentProps<typeof StyledSegmentedControlRoot> {\n theme?: SegmentedControlTheme\n}\n\nexport const SegmentedControlRoot = ({\n size,\n theme = 'primary',\n defaultValue,\n children,\n ...props\n}: React.PropsWithChildren<SegmentedControlRootProps>): React.JSX.Element => {\n const isControlled = props.value !== undefined\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n\n const currentValue = isControlled ? props.value : internalValue\n const handleValueChange = isControlled\n ? props.onValueChange\n : setInternalValue\n\n React.useEffect(() => {\n if (!isControlled && defaultValue) {\n setInternalValue(defaultValue)\n }\n }, [defaultValue, isControlled])\n\n const value = React.useMemo(\n () => ({\n size,\n theme,\n defaultValue,\n onValueChange: handleValueChange,\n value: currentValue\n }),\n [size, theme, defaultValue, handleValueChange, currentValue]\n )\n\n return (\n <SegmentedControlContext.Provider value={value}>\n <StyledSegmentedControlRoot\n size={size}\n value={currentValue}\n onValueChange={handleValueChange}\n {...props}\n >\n {children}\n </StyledSegmentedControlRoot>\n </SegmentedControlContext.Provider>\n )\n}\n","import { SegmentedControlBadge } from './SegmentedControlBadge'\nimport { SegmentedControlContent } from './SegmentedControlContent'\nimport { SegmentedControlDescription } from './SegmentedControlDescription'\nimport { SegmentedControlHeading } from './SegmentedControlHeading'\nimport { SegmentedControlIcon } from './SegmentedControlIcon'\nimport { SegmentedControlItem } from './SegmentedControlItem'\nimport { SegmentedControlItemList } from './SegmentedControlItemList'\nimport { SegmentedControlRoot } from './SegmentedControlRoot'\n\nexport const SegmentedControl = {\n Root: SegmentedControlRoot,\n Item: SegmentedControlItem,\n Heading: SegmentedControlHeading,\n Description: SegmentedControlDescription,\n Icon: SegmentedControlIcon,\n Content: SegmentedControlContent,\n Badge: SegmentedControlBadge,\n ItemList: SegmentedControlItemList\n}\n","import React from 'react'\n\nimport { FileDropContextValue } from './types'\n\nexport const FileDropContext = React.createContext<FileDropContextValue>({\n isDragging: false,\n files: []\n})\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\nimport { FileDropContext } from './FileDropContext'\nimport { type FileDropContextValue } from './types'\n\ninterface FileDropProps\n extends Omit<React.ComponentProps<typeof Flex>, 'onDrop'> {\n onDrop: (files: File[]) => void\n children?:\n | React.ReactNode\n | ((value: FileDropContextValue) => React.ReactNode)\n accept?: React.InputHTMLAttributes<HTMLInputElement>['accept']\n multiple?: React.InputHTMLAttributes<HTMLInputElement>['multiple']\n}\n\nexport const FileDrop = ({\n css,\n children,\n accept,\n multiple,\n onDrop,\n ...props\n}: FileDropProps): JSX.Element => {\n const [isDragging, setIsDragging] = React.useState(false)\n const [files, setFiles] = React.useState<File[]>([])\n const fileUploadInputRef = React.useRef<HTMLInputElement>(null)\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleDragLeave = () => setIsDragging(false)\n\n const handleDrop = (fileList: FileList | null) => {\n if (!fileList) return\n\n setIsDragging(false)\n\n const files = Array.from(fileList)\n onDrop(files)\n setFiles(files)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (['Space', 'Enter'].includes(event.key)) {\n fileUploadInputRef.current?.click()\n }\n }\n\n const value: FileDropContextValue = { isDragging, files }\n\n return (\n <FileDropContext.Provider value={value}>\n <Flex\n direction=\"column\"\n gap=\"24\"\n align=\"center\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={(event) => {\n event.preventDefault()\n handleDrop(event.dataTransfer.files)\n }}\n onClick={() => fileUploadInputRef.current?.click()}\n css={{\n border: '1px dashed $grey500',\n p: '$5 $7',\n borderRadius: '$1',\n cursor: 'pointer',\n '& *': { pointerEvents: 'none' },\n ...css\n }}\n role=\"button\"\n onKeyDown={handleKeyDown}\n tabIndex={0}\n {...props}\n >\n {typeof children === 'function' ? children(value) : children}\n <input\n type=\"file\"\n ref={fileUploadInputRef}\n style={{ visibility: 'hidden' }}\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n handleDrop(event.target.files)\n }}\n />\n </Flex>\n </FileDropContext.Provider>\n )\n}\n\nFileDrop.displayName = 'FileDrop'\n","import React from 'react'\n\nimport { FileDropContext } from './FileDropContext'\nimport { FileDropContextValue } from './types'\n\nexport const useFileDrop = (): FileDropContextValue =>\n React.useContext(FileDropContext)\n"],"names":["utils","value","media","stitchesConfig","createStitches","atomTheme","defaultThemeMap","themeMap","css","getCssText","createTheme","globalCss","keyframes","styled","theme","createThemeVariants","themeProperty","styles","acc","key","Box","CSSWrapper","children","React","noOverflowStyleBlock","NoOverflowWrapper","capsize","before","after","icons","color","encodeBackgroundIcon","icon","toHex","focusVisibleStyleBlock","position","zIndex","boxShadow","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInOut","outPosition","inPosition","slideIn","slideOut","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","getFieldIconSize","size","s","disabledStyle","open","close","StyledContent","Content","AccordionContent","remainingProps","AccordionItem","Item","colorSchemes","generateColors","prefix","colorName","color0","colors","i","k","bases","generateBase","name","themeName","accents","generateAccent","StyledColorScheme","ColorScheme","base","accent","interactive","className","asChild","rest","ref","c","Slot","StyledIcon","Icon","SVG","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","arrowPosition","ChevronDown","StyledRoot","Root","Accordion","type","MAX_Z_INDEX","DIALOG_Z_INDEX","DROPDOWN_Z_INDEX","TOOLTIP_Z_INDEX","POPOVER_Z_INDEX","StyledArrow","Arrow","TooltipContent","side","sideOffset","TooltipComponent","delayDuration","Tooltip","Portal","Provider","OptionalTooltipWrapper","hasTooltip","label","tooltipSide","isExternalUrl","url","getExternalAnchorProps","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","createVariants","variants","fn","prev","variant","globalValues","Flex","v","FadeInOut","Dot","Loader","message","props","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","LoaderContentsWrapper","WithLoader","Button","as","isLoading","onClick","StyledHeading","Heading","weight","textVariants","getTextVariant","noCapsize","StyledText","Text","family","iconMap","Info","Danger","OkCircle","AlertDialogIcon","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","confirmElement","cancelElement","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","BadgeContext","BadgeProvider","overflow","isOverflowing","setIsOverflowing","StyledBadgeIcon","BadgeIcon","createResizeObserver","callback","useResizeObserver","delay","elements","onResize","observer","debounce","element","ObserveBadgeTextOverflow","StyledBadgeText","BadgeText","badgeSize","info","neutral","success","danger","warning","primary","grey","blue","pink","purple","cyan","green","magenta","red","teal","orange","yellow","lime","lapis","maroon","marsh","badgeSemanticNames","StyledBadge","BadgeInner","emphasis","badgeElRef","setBadgeElRef","isInfoOnly","isClickable","badgeColorSchemes","BadgeComponent","Badge","DismissibleRootContext","DismissibleRootProvider","controlledIsDismissed","onDismiss","isDismissed","setIsDismissed","isControlled","DismissibleRootInternal","DismissibleRoot","dismissed","DefaultTrigger","DismissibleTrigger","Dismissible","BannerContext","useBannerContext","BannerProvider","hasDismiss","setHasDismiss","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","toDirection","BannerRegularActions","gap","direction","index","propsToInject","StyledBannerContainer","BannerContainer","BannerRegularContainer","Container","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","Close","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegularComponent","BannerRegular","StyledBannerSlimActions","BannerSlimActions","BannerSlimButton","toAlign","toWrap","StyledBannerSlimContainer","BannerSlimContainer","align","wrap","StyledBannerSlimContent","BannerSlimContent","BannerSlimDismiss","BannerSlimImage","BannerSlimText","BannerSlimComponent","BannerSlim","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","CarouselComponent","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","Carousel","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","checked","Minus","Ok","CheckboxGroupMountedContext","CheckboxGroupMountedProvider","handleItemMountedChangeFurtherUpContext","mounted","setMounted","handleItemMountedChange","newItemMounted","itemValue","prevMounted","newMountedSet","CheckboxGroupCheckedContext","generateNewCheckedFn","currentChecked","newItemChecked","newCheckedSet","CheckboxGroupCheckedProvider","controlledChecked","defaultChecked","onCheckedChange","setChecked","handleItemControlledCheckedChange","newChecked","handleItemCheckedChange","prevChecked","CheckboxGroupAllItem","checkedItems","handleItemCheckedChangeContext","mountedItems","isAllChecked","mountedItem","CheckboxGroupItem","StyledSlot","CheckboxGroupSub","CheckboxGroupRoot","CheckboxGroup","StyledTreeListItem","TreeListItem","TreeCollapsibleContext","TreeCollapsibleProvider","triggerRef","setTriggerRef","StyledCollapsibleTreeItemRoot","TreeCollapsible","StyledList","TreeList","StyledTreeCollapsibleContent","TreeCollapsibleContent","StyledTreeIcon","TreeIcon","StyledTreeText","propName","TreeText","StyledItemContent","TreeItemContent","StyledTreeCollapsibleTrigger","StyledActionIcon","TreeCollapsibleTrigger","event","_a","_b","TreeItem","TreeRoot","Tree","CheckboxTreeCollapsible","CheckboxTreeCollapsibleContent","CheckboxTreeItemContent","CheckboxTreeCollapsibleTrigger","treeCollapsibleTriggerProps","checkboxAllItemProps","CheckboxTreeItem","checkboxItemProps","CheckboxTreeRoot","CheckboxTree","INLINE_MESSAGE_THEMES","INLINE_MESSAGE_ICONS","Error","InlineMessageContainer","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","required","StyledLi","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","Link","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","StyledDivider","Divider","orientation","MarkdownThematicBreak","StyledLink","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","FormCustomContext","useFormCustomContext","StyledForm","Form","defaultValues","validationMode","onSubmit","onError","methods","useForm","FormProvider","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","control","onChange","innerChecked","innerName","useController","overflowElipsis","StyledChipContent","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","ChipRootProvider","ChipRoot","Chip","ChipGroup","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ToggleGroupRoot","disableDeselect","onValueChange","defaultValue","internalValue","setInternalValue","handleValueChange","newValue","ChipToggleGroupRoot","ChipToggleGroup","StyledComboboxInput","BaseComboboxInput","ComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","Combobox","BaseCombobox","ComboboxOptionText","InputBackground","StyledInputText","InputText","Input","PasswordInput","hidePasswordText","showPasswordText","restProps","isPasswordVisible","setIsPasswordVisible","useState","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","register","formAppearance","CreatePasswordField","validate","defaultValidation","messageDirection","formState","isFocused","setIsFocused","validationResult","setValidationResult","touched","isValid","validatePassword","password","result","handleChange","throttle","getMessageTheme","showValidation","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","params","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","disabledRows","enableRowSelection","onRowSelectionChange","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","row","updaterOrValue","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledRow","TableRow","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TableHeaderCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","isSticky","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","generateColumnsCss","accWidth","tableHeaderCells","column","elementNumber","cssObject","newColumnsCss","TableStickyColumnsContainer","hasScroll","setHasScroll","newHasScroll","StyledTable","TableComponent","corners","scrollContainerCss","scrollContainerkey","tableComponent","Table","DataTableBody","rowAction","getRowModel","DataTable","StyledContainer","BulkActionsDefaultActions","BulkActionsSelectedRowActions","cancelLabel","toggleAllPageRowsSelected","handleDeselectAllPageRows","DataTableBulkActions","isRowSelected","DataTableDataCell","cell","flexRender","EmptyStateContext","EmptyStateProvider","StyledEmptyStateBody","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","StyledEmptyStateTitle","EmptyStateTitle","EmptyStateContainer","EmptyStateComponent","EmptyState","DataTableEmptyState","DataTableError","OptionalVisuallyHiddenWrapper","hidden","INPUT_ICON","StyledSearchInputText","SearchInput","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","DataTableSelectAllRowsCheckbox","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getCheckedState","updateCheckedState","DataTableHead","sortable","getHeaderGroups","getCanSomeRowsExpand","headerGroup","header","StyledTableHeaderCell","sortIcons","ArrowUp","ArrowDown","SortIcon","DataTableHeaderCell","sortDirection","isSortableTable","isDataColumn","hoverProps","isHovered","useHover","handleKeyDown","headerSortingHandler","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","totalRows","selectedRows","copyMerged","getColumnDisplayName","sortedColumn","col","DataTableRowSelectionCheckbox","isElementInteractive","DataTableRow","isDisabled","toggleExpandHandler","toggleSelectHandler","handleRowClick","rowData","currentRow","nextRow","previousRow","DataTableTable","scrollOptions","isPending","isEmpty","buildScrollContainerKey","controlColumnCount","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","SortableItem","isDragHandle","transform","setNodeRef","SortableRoot","sortableIds","onSortChange","order","setOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","Sortable","DragAndDropTableRow","idColumn","rowId","DragAndDropTableBody","DragAndDropTable","onDragAndDrop","rowIds","handleSortChange","sortedResults","VisibleElementsAmount","_","VIEW_ALL_POPOVER","GO_TO_PREVIOUS_PAGE","GO_TO_NEXT_PAGE","getPaginationElementsToRender","currentPage","pagesCount","visibleElementsCount","paginationPages","visiblePagesCount","withPreviousNextPageArrows","canFitEdgePage","canFitViewAllPopover","canFitPages","firstPage","lastPage","newPaginationItems","canFitCurrentPage","canFitCurrentPageAndPreviousPage","canFitCurrentPageAndPreviousPageAndNextPage","canFitLastPage","findNextAvailablePage","startPage","disabledPages","nextPage","findPreviousAvailablePage","previousPage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","indicatedPages","onItemHover","labels","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","previousAvailablePage","goToPreviousPage","nextAvailablePage","goToNextPage","paginationItems","PaginationNextButton","PaginationPage","isIndicated","isSelected","handleOnHover","handleOnClick","PaginationPopover","isOpen","setIsOpen","Popover","Ellypsis","PaginationPreviousButton","PaginationItems","paginationItem","PaginationComponent","Pagination","StyledNav","getPageCount","setPageIndex","showPagination","recordsCountFrom","recordsCountTo","setPage","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","date","minDate","maxDate","setYear","showYears","setShowYears","currentYear","setCurrentYear","handleSetYear","year","newDate","isAtMinYear","isAtMaxYear","yearList","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","isCurrentYear","month","weeks","weekday","week","weekIndex","dateObj","selected","today","prevMonth","nextMonth","PopoverContent","closePopoverText","showCloseButton","CloseIcon","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","formatDateToString","dateFormat","DateInput","initialDate","revalidate","setDate","dateString","handleInputChange","newDateString","parsedInputDate","handleCalendarChange","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","trigger","DialogBackground","DialogClose","backdropOverlay","modalOverlayId","StyledDialogOverlay","sizeReset","StyledDialogContent","DialogContent","closeDialogText","DialogFooter","DialogHeading","StyledDialog","Dialog","DrawerContext","DrawerProvider","DrawerClose","DrawerOverlay","animationTop","animationRight","animationBottom","animationLeft","setupAnimation","animation","positionY","positionX","DrawerContent","drawerSection","DrawerFooter","DrawerHeader","DrawerMain","DrawerTrigger","Drawer","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledMarkdownContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventEvent","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","light","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenuComponent","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","fadeDuration","timer","listCenter","triggerOffsetRight","navigationMenuColorSchemes","NavigationMenu","StyledNavigationMenuVerticalItem","NavigationMenuVerticalItem","NavigationMenuVerticalAccordionContext","NavigationMenuVerticalAccordionProvider","NavigationMenuVerticalAccordion","defaultOpen","onOpenChange","NavigationMenuVerticalList","StyledNavigationMenuVerticalAccordionContent","NavigationMenuVerticalAccordionContent","resetButtonStyles","resetLinkStyles","navigationMenuVerticalItemStyles","StyledNavigationMenuVerticalIcon","NavigationMenuVerticalIcon","SideBarHeader","SideBarBody","SideBarFooter","SideBarBrand","SideBarBrandLogo","SideBarBrandName","SideBarContext","useSidebarState","SIZE_COLLAPSED","SIZE_EXPANDED","PointerBlocker","SideBar","isExpanded","setIsExpanded","useInteractOutside","focusWithinProps","useFocusWithin","expandableProps","SIZE_EXPANDED_MAX","StyledNavigationMenuVerticalText","NavigationMenuVerticalText","NavigationMenuVerticalItemContent","StyledNavigationMenuVerticalAccordionTrigger","NavigationMenuVerticalAccordionTrigger","StyledNavigationMenuVerticalLink","NavigationMenuVerticalLink","componentProps","NavigationMenuVertical","navigationMenuVerticalColorSchemes","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","fieldAppearance","NumberInputContainer","NumberInput","min","max","step","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonFieldComponent","FieldDescription","RadioButtonField","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","justify","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","StyledSelect","Select","placeholder","SelectField","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","Spacer","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","StepperComponent","count","Stepper","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","handleScroll","useSize","setSize","handleResize","useCallback","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","StyledTile","Tile","borderRadius","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","orientationToDirection","TileToggleGroupRoot","TileToggleGroup","DEFAULT_OFFSET","TOAST_WIDTH","ToastProviderBase","ToastWrapper","ToastContext","ToastProvider","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","toast","Toast","useToastContext","ToastCloseButton","ToastIcon","toastVariants","StyledToast","StyledItem","ToggleGroupItem","minHeight","px","spacingBetweenElements","getSizeVariant","ToggleGroupButton","isIconOnly","hasGap","useWindowScrollPosition","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","TopBarComponent","diffused","topBarColorSchemes","scrollPositionY","TopBar","StyledVideo","ReactPlayer","Video","ratio","KeyboardShortcut","config","targetWindow","targetElRef","setTargetElRef","handleOnKeydown","shortcut","StyledKeyboardShortcutIndicator","KeyboardShortcutIndicator","KeyboardShortcutComponent","SegmentedControlContext","badgeSizeMap","SegmentedControlBadge","SegmentedControlContent","SegmentedControlDescription","SegmentedControlHeading","sizeMap","SegmentedControlIcon","SegmentedControlItem","SelectionIndicator","SegmentedControlItemList","tabsRef","selectedIndex","indicatorStyles","setIndicatorStyles","hasInteracted","setHasInteracted","updateIndicatorPosition","currentTab","height","resizeObserver","currentTabs","tab","StyledSegmentedControlRoot","SegmentedControlRoot","currentValue","SegmentedControl","FileDropContext","FileDrop","onDrop","setIsDragging","setFiles","fileUploadInputRef","handleDragOver","handleDragLeave","handleDrop","fileList","useFileDrop"],"mappings":"mnEAUO,MAAMA,GAAQ,CACnB,GAAKC,IAAwC,CAC3C,WAAYA,CACd,GAEA,KAAOA,IAAiD,CACtD,OAAQA,EACR,MAAOA,CACT,GAEA,EAAIA,IAAkD,CACpD,QAASA,CACX,GACA,GAAKA,IAAkD,CACrD,WAAYA,CACd,GACA,GAAKA,IAAkD,CACrD,aAAcA,CAChB,GACA,GAAKA,IAAkD,CACrD,cAAeA,CACjB,GACA,GAAKA,IAAkD,CACrD,YAAaA,CACf,GACA,GAAKA,IAAkD,CACrD,YAAaA,EACb,aAAcA,CAChB,GACA,GAAKA,IAAkD,CACrD,WAAYA,EACZ,cAAeA,CACjB,GAEA,EAAIA,IAAkD,CACpD,OAAQA,CACV,GACA,GAAKA,IAAkD,CACrD,UAAWA,CACb,GACA,GAAKA,IAAkD,CACrD,YAAaA,CACf,GACA,GAAKA,IAAkD,CACrD,aAAcA,CAChB,GACA,GAAKA,IAAkD,CACrD,WAAYA,CACd,GACA,GAAKA,IAAkD,CACrD,WAAYA,EACZ,YAAaA,CACf,GACA,GAAKA,IAAkD,CACrD,UAAWA,EACX,aAAcA,CAChB,EACF,EAEaC,GAAQ,CACnB,GAAI,qBACJ,GAAI,qBACJ,GAAI,sBACJ,GAAI,sBACJ,cAAe,2BACf,YAAa,0CACb,MAAO,gBACT,EAEMC,GAAiBC,GAAAA,eAAe,CACpC,MAAOC,GACP,SAAU,CACR,GAAGC,GAAAA,gBACH,GAAGC,GACL,QAAA,EACA,MAAAP,GACA,MAAAE,EACF,CAAC,EAEY,CACX,IAAAM,GACA,WAAAC,GACA,YAAAC,EACA,UAAAC,GACA,UAAAC,EACA,OAAAC,EACA,MAAAC,EACF,EAAIX,GC1ESY,GAAsB,CACjCC,EACAC,IAEA,OAAO,KAAKH,GAAME,EAAc,EAAE,OAChC,CAACE,EAAKC,KAAS,CACb,GAAGD,EACH,CAACC,GAAM,KAAK,MACV,KAAK,UAAUF,CAAM,EAAE,QAAQ,SAAU,IAAID,KAAiBG,GAAK,CACrE,CACF,GACA,CACF,CAAA,ECjCWC,EAAMP,EAAO,MAAO,CAAE,CAAA,EAEnCO,EAAI,YAAc,MCML,MAAAC,GAAa,CAAC,CACzB,IAAAb,EACA,SAAAc,CACF,IACEd,EACEe,EAAA,cAACH,EAAA,CAAI,IAAKZ,GAAMc,CAAS,EAKzBC,EAAA,cAAAA,EAAA,SAAA,KAAGD,CAAS,EAGhBD,GAAW,YAAc,aCpBlB,MAAMG,GAAuB,KAK3B,CACL,KAAM,OACN,aAAc,UACd,SAAU,QACZ,GAGWC,GAAoBZ,EAAOO,EAAKI,GAAqB,CAAC,EAEnEC,GAAkB,YAAc,oBCAnB,MAAAC,GAAU,CACrBC,EACAC,KACyB,CACzB,YAAa,CACX,QAAS,KACT,GAAI,IAAID,MACR,QAAS,OACX,EACA,WAAY,CACV,QAAS,KACT,GAAI,IAAIC,GAASD,MACjB,QAAS,OACX,CACF,GC3BME,GAAQ,CACZ,QAAUC,GACR,kGAAkGA,yFAA6FA,iDACjM,OAASA,GACP,kGAAkGA,yFAA6FA,iGACnM,EAKaC,GAAuB,CAACD,EAAeE,IAClD,2CAA2C,mBACzCH,GAAMG,GAAMC,GAAAA,MAAMH,CAAK,CAAC,CAC1B,KCAWI,GAAyB,CAAC,CACrC,SAAAC,EAAW,WACX,OAAAC,EAAS,EACT,UAAAC,EAAY,EACd,EAAqC,MAC5B,CACL,QAAS,OACT,SAAU,CAAC,WAAY,WAAY,QAAS,QAAQ,EAAE,SAASF,CAAQ,EACnEA,EACA,WACJ,OAAQC,EAAS,EAAIA,EAAS,EAC9B,UAAW,4DACTC,EAAY,KAAKA,IAAc,IAEnC,GC7BWC,GAAiB1B,EAAU,CACtC,KAAM,CAAE,QAAS,EAAG,UAAW,iBAAkB,EACjD,OAAQ,CAAE,QAAS,EAAG,UAAW,eAAgB,CACnD,CAAC,EACY2B,GAAoB3B,EAAU,CACzC,KAAM,CAAE,QAAS,EAAG,UAAW,kBAAmB,EAClD,OAAQ,CAAE,QAAS,EAAG,UAAW,eAAgB,CACnD,CAAC,EACY4B,GAAmB5B,EAAU,CACxC,KAAM,CAAE,QAAS,EAAG,UAAW,kBAAmB,EAClD,OAAQ,CAAE,QAAS,EAAG,UAAW,eAAgB,CACnD,CAAC,EACY6B,GAAmB7B,EAAU,CACxC,KAAM,CAAE,QAAS,EAAG,UAAW,iBAAkB,EACjD,OAAQ,CAAE,QAAS,EAAG,UAAW,eAAgB,CACnD,CAAC,EAEY8B,GAAS9B,EAAU,CAC9B,KAAM,CAAE,QAAS,CAAE,EACnB,OAAQ,CAAE,QAAS,CAAE,CACvB,CAAC,EACY+B,GAAU/B,EAAU,CAC/B,KAAM,CAAE,QAAS,CAAE,EACnB,OAAQ,CAAE,QAAS,CAAE,CACvB,CAAC,EAEYgC,GAAa,CAAC,CACzB,YAAAC,EAAc,CAAE,EAAG,EAAG,EAAG,CAAE,EAC3B,WAAAC,EAAa,CAAE,EAAG,EAAG,EAAG,CAAE,CAC5B,IAMK,CACH,MAAMC,EAAUnC,EAAU,CACxB,KAAM,CACJ,UAAW,cAAciC,EAAY,iBAAiBA,EAAY,IACpE,EACA,OAAQ,CACN,UAAW,cAAcC,EAAW,iBAAiBA,EAAW,IAClE,CACF,CAAC,EAEKE,EAAWpC,EAAU,CACzB,KAAM,CACJ,UAAW,cAAckC,EAAW,iBAAiBA,EAAW,IAClE,EACA,OAAQ,CACN,UAAW,cAAcD,EAAY,iBAAiBA,EAAY,IACpE,CACF,CAAC,EAED,MAAO,CACL,GAAIE,EACJ,IAAKC,CACP,CACF,ECnDaC,EAA+B,CAC1CC,EACAC,IACG,CACH,IAAIC,EACJ,OAAQ,OAAOF,OACR,SACHE,EAAgB,CAAA,EAChB,OAAO,KAAKF,CAAI,EAAE,QAASG,GAAe,CACxC,MAAMC,EAAmBJ,EAAKG,GAC9BD,EAAcC,GAAcC,GACxBH,EAAiBG,CAAgB,CAEvC,CAAC,EACD,cAEAF,EAAgBD,EAAiBD,CAAI,EAGzC,OAAOE,CACT,EC3BMG,GAAa,CACjB,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEaC,GAAoBC,GAC/BR,EAA6BQ,EAAOC,GAAMH,GAAWG,EAAE,ECH5CC,EAAgB,CAC3B,QAAS,GACT,OAAQ,aACV,ECHMC,GAAOhD,EAAU,CACrB,KAAM,CAAE,OAAQ,CAAE,EAClB,GAAI,CAAE,OAAQ,uCAAwC,CACxD,CAAC,EAEKiD,GAAQjD,EAAU,CACtB,KAAM,CAAE,OAAQ,uCAAwC,EACxD,GAAI,CAAE,OAAQ,CAAE,CAClB,CAAC,EAEKkD,GAAgBjD,EAAOkD,GAAAA,QAAS,CACpC,OAAQ,EACR,MAAO,OACP,GAAI,SACJ,SAAU,SACV,uBAAwB,CAAE,aAAc,WAAY,EAEpD,eAAgB,CACd,uBAAwB,CAAE,UAAW,GAAGH,mBAAsB,EAC9D,yBAA0B,CAAE,UAAW,GAAGC,mBAAuB,CACnE,CACF,CAAC,EAEYG,GAAmB,CAAC,CAC/B,SAAA1C,EACA,IAAAd,KACGyD,CACL,IACE1C,EAAAA,QAAA,cAACuC,GAAA,CAAe,GAAGG,CAAAA,EACjB1C,EAAAA,QAAA,cAACF,GAAA,CAAW,IAAKb,CAAMc,EAAAA,CAAS,CAClC,EC/BW4C,GAAgBrD,EAAOsD,GAAM,KAAA,CACxC,MAAO,OAEP,qBAAsB,CACpB,GAAI,IACN,CACF,CAAC,ECPYC,GAAe,CAAC,EAEvBC,GAAiB,CAAC,CAAE,OAAAC,EAAQ,UAAAC,EAAW,OAAAC,EAAS,EAAG,IAAM,CAC7D,MAAMC,EAAS,CACf,EAAA,IAAIC,EAAI,EACJF,IACFC,EAAO,GAAGH,IAASI,KAAOF,EAC1BE,KAEF,IAAIC,EAAI,EACR,IAAKD,EAAGA,GAAK,GAAIA,IACfD,EAAO,GAAGH,IAASI,KAAO,IAAIH,IAAYI,EAAI,MAC9CA,IAEF,OAAOF,CACT,EAEAL,GAAa,0BAA4B1D,EAAY,CACnD,OAAQ,CACN,sBAAuB,cACvB,aAAc,WACd,aAAc,WACd,aAAc,UAChB,CACF,CAAqB,EAErB0D,GAAa,0BAA4B1D,EAAY,CACnD,OAAQ,CACN,sBAAuB,mBACvB,aAAc,WACd,aAAc,YACd,aAAc,WAChB,CACF,CAAqB,EAOd,MAAMkE,GAAQ,CACnB,SAAU,CAAE,UAAW,UAAW,OAAQ,SAAU,EACpD,SAAU,CAAE,UAAW,SAAU,EACjC,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,OAAQ,CAAE,UAAW,QAAS,OAAQ,SAAU,EAChD,OAAQ,CAAE,UAAW,OAAQ,EAC7B,SAAU,CAAE,UAAW,UAAW,OAAQ,SAAU,EACpD,SAAU,CAAE,UAAW,SAAU,EACjC,KAAM,CAAE,UAAW,MAAO,OAAQ,SAAU,EAC5C,KAAM,CAAE,UAAW,KAAM,EACzB,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,CAC7B,EACMC,GAAe,IAAM,CACzB,OAAO,QAAQD,EAAK,EAAE,QACpB,CAAC,CAACE,EAAM,CAAE,UAAAP,EAAW,OAAAC,EAAS,EAAG,CAAC,IAA6B,CAC7D,MAAMO,EAAY,QAAQD,IAC1BV,GAAaW,GAAarE,EAAY,CACpC,OAAQ,CACN,WAAY,YACZ,gBAAiB,UACjB,GAAG2D,GAAe,CAAE,OAAQ,OAAQ,UAAAE,EAAW,OAAAC,CAAO,CAAC,CACzD,CACF,CAAqB,CACvB,CACF,CACF,EAEaQ,GAAU,CACrB,SAAU,CAAE,UAAW,UAAW,OAAQ,SAAU,EACpD,SAAU,CAAE,UAAW,SAAU,EACjC,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,OAAQ,CAAE,UAAW,QAAS,OAAQ,SAAU,EAChD,OAAQ,CAAE,UAAW,OAAQ,EAC7B,SAAU,CAAE,UAAW,UAAW,OAAQ,SAAU,EACpD,SAAU,CAAE,UAAW,SAAU,EACjC,KAAM,CAAE,UAAW,MAAO,OAAQ,SAAU,EAC5C,KAAM,CAAE,UAAW,KAAM,EACzB,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,EAC3B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,QAAS,CAAE,UAAW,SAAU,OAAQ,SAAU,EAClD,QAAS,CAAE,UAAW,QAAS,EAC/B,MAAO,CAAE,UAAW,OAAQ,OAAQ,SAAU,EAC9C,MAAO,CAAE,UAAW,MAAO,CAC7B,EACMC,GAAiB,IAAM,CAC3B,OAAO,QAAQD,EAAO,EAAE,QACtB,CAAC,CAACF,EAAM,CAAE,UAAAP,EAAW,OAAAC,EAAS,EAAG,CAAC,IAA6B,CAC7D,MAAMO,EAAY,UAAUD,IAC5BV,GAAaW,GAAarE,EAAY,CACpC,OAAQ2D,GAAe,CAAE,OAAQ,SAAU,UAAAE,EAAW,OAAAC,CAAO,CAAC,CAChE,CAAC,CACH,CACF,CACF,EAEAK,GAAa,EACbI,GAAe,EC9Gf,MAAMC,GAAoBrE,EAAO,KAAK,EAQzBsE,GACX5D,EAAM,WACJ,CACE,CACE,KAAA6D,EAAO,GACP,OAAAC,EAAS,GACT,YAAAC,EAAc,GACd,UAAAC,EACA,QAAAC,EAAU,MACPC,CACL,EACAC,IACG,CACH,MAAMC,EAAI,CACRJ,EACAnB,GAAa,eAAekB,KAC5BlB,GAAa,UAAUiB,KACvBjB,GAAa,QAAQgB,IACvB,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EAGX,OAAO7D,EAAA,cADWiE,EAAUI,GAAAA,KAAOV,GAC3B,CAAU,IAAKQ,EAAK,UAAWC,EAAI,GAAGF,CAAAA,CAAM,CACtD,CACF,EAEFN,GAAY,YAAc,cC/Cb,MAAAU,GAAahF,EAAO,MAAO,CACtC,QAAS,eACT,KAAM,OACN,WAAY,EACZ,OAAQ,eACR,cAAe,QACf,eAAgB,QAChB,cAAe,SACf,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,KAAM,KAAM,YAAa,KAAM,EACrC,GAAI,CAAE,KAAM,KAAM,YAAa,MAAO,EACtC,GAAI,CAAE,KAAM,KAAM,YAAa,GAAI,CACrC,CACF,CACF,CAAC,EAUYiF,EACXvE,EAAM,WAAW,CAAC,CAAE,GAAIwE,EAAK,KAAAtC,EAAO,QAASQ,CAAe,EAAGyB,IAC7DnE,EAAA,cAACsE,GACC,CAAA,KAAMpC,EACN,cAAY,OACX,GAAGQ,EACJ,GAAI8B,EACJ,IAAKL,EACP,CACD,EC7BGM,GAAenF,EAAOiF,EAAM,CAChC,WAAY,kBACZ,0BAA2B,CACzB,UAAW,gBACb,EACA,4BAA6B,CAC3B,UAAW,cACb,CACF,CAAC,EAEKG,GAAgBpF,EAAOqF,GAAAA,QAAS,CACpC,OAAQ,EACR,GAAI,KACJ,GAAI,KACJ,MAAO,OACP,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,OAAQ,UACR,GAAI,gBACJ,MAAO,yBACP,cAAe,CACb,QAAS,GACT,OAAQ,aACV,EACA,oBAAqB,CACnB,qCAAsC,CACpC,GAAI,eACN,EACA,kBAAmB,CACjB,GAAGhE,GAAuB,CAC5B,CACF,EACA,uBAAwB,CACtB,aAAc,WAChB,EACA,yBAA0B,CACxB,aAAc,IAChB,EACA,SAAU,CACR,cAAe,CACb,KAAM,CACJ,cAAe,cACf,IAAK,KACL,eAAgB,UAClB,EACA,MAAO,CACT,CAAA,CACF,CACF,CAAC,EAEYiE,GAAmB,CAAC,CAC/B,SAAA7E,EACA,YAAA8E,EAAc,CAAC,EACf,QAAAZ,EACA,cAAAa,EAAgB,WACbpC,CACL,IAGE1C,EAAAA,QAAA,cAAC4D,GAAA,CAAY,QAAO,GAAC,OAAO,QAAQ,YAAY,aAAc,GAAGiB,CAAAA,EAC/D7E,EAAAA,QAAA,cAAC0E,GAAA,CACC,QAAST,EACT,cAAea,EACd,GAAGpC,CAEHuB,EAAAA,EACClE,EAEAC,EAAAA,QAAA,cAAAA,EAAAA,QAAA,SACGD,KAAAA,EACDC,EAAAA,QAAA,cAACyE,GAAA,CAAa,GAAIM,EAAAA,YAAa,cAAY,mBAAoB,CAAA,CACjE,CAEJ,CACF,EC5EIC,GAAa1F,EAAO2F,GAAAA,KAAM,CAC9B,MAAO,MACT,CAAC,EAYYC,GAAYlF,UAAM,WAC7B,CAAC,CAAE,KAAAmF,EAAO,SAAU,SAAApF,KAAa2C,CAAe,EAAGyB,IAGjDnE,UAAA,cAACgF,GAAA,CAAW,IAAKb,EAAK,KAAMgB,EAAO,GAAGzC,CACnC3C,EAAAA,CACH,CAEJ,EAEAmF,GAAU,KAAOvC,GACjBuC,GAAU,QAAUzC,GACpByC,GAAU,QAAUN,GAEpBM,GAAU,YAAc,YCrCxB,MAAME,GAAc,WACdC,GAAiB,WACjBC,GAAmB,GACnBC,GAAkB,GAClBC,GAAkB,GCQlBjD,GAAgBjD,EAAOkD,GAAAA,QAAS,CACpC,gBAAiB,WACjB,aAAc,KACd,UAAW,KACX,MAAO,QACP,WAAY,QACZ,SAAU,MACV,WAAY,IACZ,WAAY,SACZ,GAAI,KACJ,GAAI,KACJ,OAAQ+C,GACR,eAAgB,CACd,kBAAmB,OACnB,wBAAyB,gCACzB,WAAY,qBACZ,+BAAgC,CAC9B,qBAAsB,CAAE,cAAetE,EAAiB,EACxD,uBAAwB,CAAE,cAAeC,EAAiB,EAC1D,wBAAyB,CAAE,cAAeH,EAAe,EACzD,sBAAuB,CAAE,cAAeC,EAAkB,CAC5D,CACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,SAAU,OAAQ,EACxB,GAAI,CAAE,SAAU,OAAQ,EACxB,GAAI,CAAE,SAAU,OAAQ,CAC1B,CACF,CACF,CAAC,EAEKyE,GAAcnG,EAAOoG,GAAAA,MAAO,CAChC,KAAM,WACN,uBAAwB,CAAE,GAAI,IAAK,EACnC,yBAA0B,CAAE,GAAI,IAAK,CACvC,CAAC,EAKYC,GAAiB,CAAC,CAC7B,SAAA5F,EACA,KAAA6F,EAAO,MACP,WAAAC,EAAa,EACb,KAAA3D,EAAO,QACJQ,CACL,IACE1C,EAAA,cAACuC,GAAA,CACC,KAAMqD,EACN,WAAYC,EACZ,KAAM3D,EACL,GAAGQ,CAEH3C,EAAAA,EACDC,EAAA,cAACyF,GAAA,IAAY,CACf,EC3DIK,GAAmB,CAAC,CACxB,SAAA/F,EACA,cAAAgG,EAAgB,OACbrD,CACL,IACE1C,EAAA,cAACiF,GAAAA,KAAA,CAAK,cAAec,EAAgB,GAAGrD,CAAAA,EACrC3C,CACH,EAGWiG,GAAU,OAAO,OAAOF,GAAkB,CACrD,QAASH,GACT,QAASrG,EAAOqF,GAAAA,QAAS,CAAA,CAAE,EAC3B,OAAQsB,UACR,SAAUC,GAAAA,QACZ,CAAC,EAEDJ,GAAiB,YAAc,UChBxB,MAAMK,GAAyB,CAAC,CACrC,WAAAC,EACA,MAAAC,EACA,YAAAC,EACA,SAAAvG,CACF,IACMqG,EAEApG,EAAA,cAACgG,GAAA,KACChG,EAAA,cAACgG,GAAQ,QAAR,CAAgB,QAAO,EAAA,EAAEjG,CAAS,EACnCC,EAAA,cAACgG,GAAQ,QAAR,CAAgB,KAAMM,CAAcD,EAAAA,CAAM,CAC7C,EAOGrG,EAAA,cAAAA,EAAA,SAAGD,KAAAA,CAAS,EAGrBoG,GAAuB,YAAc,yBC/B9B,MAAMI,GAAiBC,GACxB,OAAO,OAAW,KAAe,CAACA,EAAY,GAE5B,eAAe,KAAKA,CAAG,GACrB,IAAI,IAAIA,CAAG,EAAE,SAAW,OAAO,SAAS,OAGrDC,GAA0BD,GACrCD,GAAcC,CAAG,EAAI,CAAE,OAAQ,SAAU,IAAK,qBAAsB,EAAI,CAAC,ECR9DE,GAAoB,CAC/B,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,ECSMC,GAAmB,CACvBpH,EACAsE,EACA+C,EACAC,KACI,CACJ,MAAAtH,EACA,WAAY,SACZ,IAAK,CACH,GAAI,cACJ,MAAOsE,EACP,iDAAkD,CAAE,MAAO+C,CAAS,EACpE,0BAA2B,CAAE,MAAOC,CAAO,CAC7C,CACF,GAEMC,GAAkB,CACtBvH,EACAsE,EACA+C,EACAC,KACI,CACJ,MAAAtH,EACA,WAAY,QACZ,IAAK,CACH,GAAIsE,EACJ,MAAO,QACP,iDAAkD,CAChD,GAAI+C,EACJ,MAAO,OACT,EACA,0BAA2B,CAAE,GAAIC,CAAO,CAC1C,CACF,GAEME,GAAoB,CACxBxH,EACAsE,EACA+C,EACAC,KACI,CACJ,MAAAtH,EACA,WAAY,UACZ,IAAK,CACH,OAAQ,YACR,YAAa,eACb,MAAOsE,EACP,iDAAkD,CAAE,MAAO+C,CAAS,EACpE,0BAA2B,CAAE,MAAOC,CAAO,CAC7C,CACF,GAEMG,GAAe1H,EAAO,SAAU,CACpC,WAAY,SACZ,WAAY,OACZ,GAAI,QACJ,OAAQ,QACR,aAAc,KACd,UAAW,aACX,OAAQ,UACR,QAAS,OACT,WAAY,EACZ,eAAgB,SAChB,EAAG,QACH,WAAY,qBACZ,cAAe8C,EACf,SAAU,CACR,MAAO,CACL,QAAS,CAAA,EACT,QAAS,GACT,QAAS,GACT,QAAS,CAAA,EACT,OAAQ,CACV,CAAA,EACA,WAAY,CACV,OAAQ,CAAC,EACT,QAAS,CAAA,EACT,MAAO,EACT,EACA,KAAM,CACJ,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,CACnB,EACA,UAAW,CACT,KAAM,CACJ,aAAc,QAChB,CACF,CACF,EAGA,iBAAkB,CAChBuE,GAAiB,UAAW,WAAY,cAAe,cAAc,EACrEA,GAAiB,UAAW,cAAe,cAAe,cAAc,EACxEA,GAAiB,cAAe,eAAgB,eAAgB,cAAc,EAC9EA,GAAiB,UAAW,WAAY,cAAe,cAAc,EACrEA,GAAiB,UAAW,WAAY,cAAe,cAAc,EACrEA,GAAiB,SAAU,UAAW,aAAc,aAAa,EAEjEG,GAAgB,UAAW,cAAe,cAAe,cAAc,EACvEA,GAAgB,cAAe,eAAgB,eAAgB,cAAc,EAC7EA,GAAgB,UAAW,WAAY,cAAe,cAAc,EACpEA,GAAgB,UAAW,WAAY,cAAe,cAAc,EACpEA,GAAgB,SAAU,UAAW,aAAc,aAAa,EAEhEC,GAAkB,UAAW,cAAe,cAAe,cAAc,EACzEA,GAAkB,cAAe,eAAgB,eAAgB,cAAc,EAC/EA,GAAkB,UAAW,WAAY,cAAe,cAAc,EACtEA,GAAkB,UAAW,WAAY,cAAe,cAAc,EACtEA,GAAkB,SAAU,UAAW,aAAc,aAAa,CACpE,CACF,CAAC,EAYYE,EACXjH,EAAM,WACJ,CACE,CACE,SAAAD,EACA,MAAAR,EAAQ,UACR,WAAA2H,EAAa,SACb,KAAAhF,EAAO,KACP,MAAAmE,EACA,KAAAc,EACA,SAAAC,EACA,WAAAhB,EAAa,GACb,YAAAE,KACG5D,CACL,EACAyB,IACG,CACH,MAAMkD,EAA2B,YAAY9C,EAAK,oDAAoD0C,EAAW,cAEjH,OAAAK,GAAAA,QAAUtH,EAAM,SAAS,MAAMD,CAAQ,IAAM,EAAGsH,CAAwB,EAYtErH,EAAA,cAACmG,GAAA,CACC,WAAYC,EACZ,MAAOC,EACP,YAAaC,CAEbtG,EAAAA,EAAA,cAACgH,GAAA,CACE,GAhBmBG,EACrB,CACC,GAAI,IACJ,KAAMC,EAAW,KAAOD,EACxB,QAAS,OACT,gBAAiB,CAAC,CAACC,CACrB,EACC,CAAE,KAAM,QAAS,EAUf,GAAGX,GAAuBU,CAAI,EAC9B,GAAGzE,EACJ,aAAY2D,EACZ,MAAO9G,EACP,WAAY2H,EACZ,KAAMhF,EACN,IAAKiC,EACL,SAAUiD,CAETpH,EAAAA,EAAM,SAAS,IAAID,EAAWwH,GAAU,CAGvC,GAAI,CAACvH,EAAM,eAAeuH,CAAK,EAC7B,MAAM,IAAI,MAAMF,CAAwB,EAG1C,OAAAC,GAAAA,QACEC,EAAM,OAAShD,EACf,oBAAoBgD,GAAA,KAAA,OAAAA,EAAO,kCAAkChD,EAAK,uCAAuC0C,EAAW,aACtH,EAEOjH,EAAM,aACXuH,EACA,CACE,KAAMb,GAAkBxE,GACxB,IAAK,CAAE,GAAIqF,EAAM,MAAM,IAAMA,EAAM,MAAM,IAAM,EAAI,CACrD,CACF,CACF,CAAC,CACH,CACF,CAEJ,CACF,EAEFN,EAAW,YAAc,aC7MzB,MAAMO,GAAkB,6BAClBC,GAAmB,6BAEnBjG,GAAUnC,EAAU,CACxB,KAAM,CAAE,UAAWoI,EAAiB,EACpC,OAAQ,CAAE,UAAWD,EAAgB,CACvC,CAAC,EACK/F,GAAWpC,EAAU,CACzB,KAAM,CAAE,UAAWmI,EAAgB,EACnC,OAAQ,CAAE,UAAWC,EAAiB,CACxC,CAAC,EAEKC,GAA2BpI,EAAOqI,WAAS,CAC/C,gBAAiB,YACjB,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,EACN,SAAU,QACV,OAAQtC,GACR,eAAgB,CACd,uBAAwB,CACtB,UAAW,GAAGlE,mBAChB,EACA,yBAA0B,CACxB,UAAW,GAAGC,mBAChB,CACF,CACF,CAAC,EAEKwG,GAA2BtI,EAAOkD,GAAAA,QAAS,CAC/C,GAAI,QACJ,aAAc,KACd,UAAW,KACX,UAAW,aACX,KAAM,MACN,SAAU,OACV,EAAG,KACH,SAAU,QACV,IAAK,MACL,UAAWgF,GACX,UAAW,CACT,QAAS,MACX,EACA,OAAQnC,GACR,eAAgB,CACd,uBAAwB,CACtB,UAAW,GAAG7D,yCAChB,EACA,yBAA0B,CACxB,UAAW,GAAGC,yCAChB,CACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,MAAO,OAAQ,EACrB,GAAI,CAAE,MAAO,OAAQ,EACrB,GAAI,CAAE,MAAO,OAAQ,CACvB,CACF,CACF,CAAC,EAEYoG,GAAqB,CAAC,CACjC,KAAA3F,EAAO,QACJQ,CACL,IACE1C,EAAA,cAACiG,GAAAA,OAAA,KACCjG,EAAA,cAAC0H,GAAA,IAAyB,EAC1B1H,EAAA,cAAC4H,GAAA,CAAyB,KAAM1F,EAAO,GAAGQ,CAAAA,CAAgB,CAC5D,EC9DIoF,GAAoBxI,EAAO2F,QAAM,CAAA,CAAE,EAE5B8C,GAAc,OAAO,OAAOD,GAAmB,CAC1D,YAAaE,GAAAA,YACb,MAAOC,SACP,OAAQC,GAAAA,OACR,OAAQC,GAAAA,OACR,QAASN,GACT,QAASlD,GACX,OAAA,CAAC,EAEDoD,GAAY,YAAc,cCvBb,MAAAK,GAAkB,IAAM,CACnC,MAAMC,EAAeC,EAAgB,OAAA,EAErC,OAAAC,EAAAA,UAAU,KACRF,EAAa,QAAU,GAChB,IAAM,CACXA,EAAa,QAAU,EACzB,EACD,EAEMA,CACT,ECVMG,GAAiB,CACrBC,EACAC,IAEOD,EAAS,OACd,CAACE,EAAMC,KAAa,CAAE,GAAGD,EAAM,CAACC,GAAUF,EAAGE,CAAO,CAAE,GACtD,CAAA,CACF,EAGIC,GAAe,CACnB,UACA,UACA,SACA,eACA,OACF,EAYaC,EAAOxJ,EAAO,MAAO,CAChC,QAAS,OACT,SAAU,CACR,UAAWkJ,GACT,CAAC,GAAGK,GAAc,MAAO,cAAe,SAAU,gBAAgB,EACjEE,IACQ,CAAE,cAAeA,CAAE,EAE9B,EACA,KAAMP,GACJ,CAAC,GAAGK,GAAc,SAAU,OAAQ,cAAc,EACjDE,IACQ,CAAE,SAAUA,CAAE,EAEzB,EAEA,QAASP,GACP,CACE,GAAGK,GACH,SACA,SACA,OACA,QACA,SACA,MACA,aACA,WACA,OACA,QACA,gBACA,eACA,eACA,SACF,EACCE,IACQ,CAAE,eAAgBA,CAAE,EAE/B,EACA,MAAOP,GACL,CACE,GAAGK,GACH,SACA,SACA,OACA,SACA,QACA,MACA,aACA,WACA,aACA,WACA,WACA,iBACA,gBACA,SACF,EACCE,IACQ,CAAE,WAAYA,CAAE,EAE3B,EACA,IAAKvJ,GAAoB,QAAS,CAAE,IAAK,MAAO,CAAC,CACnD,CACF,CAAC,EAEDsJ,EAAK,YAAc,OCzFnB,MAAME,GAAY3J,EAAU,CAC1B,KAAM,CAAE,QAAS,CAAE,EACnB,MAAO,CAAE,QAAS,CAAE,EACpB,MAAO,CAAE,QAAS,CAAE,EACpB,MAAO,CAAE,QAAS,CAAE,EACpB,OAAQ,CAAE,QAAS,CAAE,CACvB,CAAC,EAEK4J,GAAM3J,EAAO,MAAO,CACxB,cAAe,GAAG0J,KAClB,kBAAmB,KACnB,kBAAmB,OACnB,wBAAyB,WACzB,wBAAyB,SACzB,gBAAiB,eACjB,aAAc,SACd,iBAAkB,CAChB,eAAgB,QAClB,EACA,iBAAkB,CAChB,eAAgB,QAClB,EACA,iBAAkB,CAChB,eAAgB,CAClB,EAEA,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,KAAM,MAAO,GAAI,KAAM,EAC7B,GAAI,CAAE,KAAM,MAAO,GAAI,KAAM,EAC7B,GAAI,CAAE,KAAM,MAAO,GAAI,KAAM,CAC/B,CACF,CACF,CAAC,EAQYE,GAAS,CAAC,CACrB,IAAAjK,EAAM,CAAA,EACN,QAAAkK,EAAU,UACV,KAAAjH,EAAO,QACJkH,CACL,IACEpJ,EAAA,cAAC8I,EAAA,CACC,IAAK,CACH,eAAgB,SAGhB,GAAI7J,CACN,EACA,KAAK,QACJ,GAAGmK,CAEJpJ,EAAAA,EAAA,cAACqJ,GAAe,KAAf,KAAqBF,CAAQ,EAC9BnJ,EAAA,cAACiJ,GAAA,CAAI,KAAM/G,EAAM,EACjBlC,EAAA,cAACiJ,GAAA,CAAI,KAAM/G,CAAAA,CAAM,EACjBlC,EAAA,cAACiJ,GAAA,CAAI,KAAM/G,EAAM,CACnB,ECxDIoH,GAA0B,CAC9B/J,EACAsE,EACA+C,EACAC,KACI,CACJ,MAAAtH,EACA,WAAY,UACZ,IAAK,CACH,OAAQ,YACR,YAAa,eACb,MAAOsE,EACP,cAAezB,EACf,mDAAoD,CAClD,eAAgB,OAChB,MAAOwE,CACT,EACA,2BAA4B,CAAE,MAAOC,CAAO,CAC9C,CACF,GAEM0C,GAAwB,CAC5BhK,EACAsE,EACA+C,EACAC,EACA2C,EAAO,WACH,CACJ,MAAAjK,EACA,WAAY,QACZ,IAAK,CACH,GAAIsE,EACJ,MAAO2F,EACP,cAAepH,EACf,mDAAoD,CAClD,GAAIwE,EACJ,MAAO4C,CACT,EACA,2BAA4B,CAAE,GAAI3C,CAAO,CAC3C,CACF,GAEaG,GAAe1H,EAAO,SAAU,CAC3C,WAAY,SACZ,GAAI,QACJ,OAAQ,QACR,aAAc,KACd,OAAQ,UACR,QAAS,OACT,WAAY,QACZ,WAAY,IACZ,eAAgB,SAChB,EAAG,QACH,eAAgB,OAChB,WAAY,qBACZ,WAAY,SACZ,MAAO,cACP,cAAe8C,EACf,SAAU,CACR,MAAO,CACL,QAAS,GACT,UAAW,CAAA,EACX,QAAS,CAAC,EACV,QAAS,CAAA,EACT,OAAQ,CAAC,EACT,QAAS,EACX,EACA,WAAY,CACV,MAAO,CAAA,EACP,QAAS,CAAA,CACX,EACA,KAAM,CACJ,GAAI,CACF,SAAU,MACV,WAAY,KACZ,OAAQ,KACR,GAAI,KACJ,IAAK,KACL,CAAC,KAAKkC,MAAe,CAAE,KAAM,EAAG,CAClC,EACA,GAAI,CACF,SAAU,MACV,WAAY,IACZ,OAAQ,KACR,GAAI,KACJ,IAAK,KACL,CAAC,KAAKA,MAAe,CAAE,KAAM,EAAG,CAClC,EACA,GAAI,CACF,SAAU,MACV,WAAY,IACZ,OAAQ,KACR,GAAI,KACJ,IAAK,KACL,CAAC,KAAKA,MAAe,CAAE,KAAM,EAAG,CAClC,EACA,GAAI,CACF,SAAU,MACV,WAAY,IACZ,OAAQ,KACR,GAAI,KACJ,IAAK,KACL,CAAC,KAAKA,MAAe,CAAE,KAAM,EAAG,CAClC,CACF,EACA,UAAW,CACT,KAAM,CACJ,OAAQ,cACR,QAAS,GACT,cAAe,MACjB,CACF,EACA,UAAW,CACT,KAAM,CAAE,MAAO,MAAO,EACtB,MAAO,CAAE,MAAO,aAAc,CAChC,CACF,EAGA,iBAAkB,CAChBiF,GAAsB,UAAW,cAAe,cAAe,cAAc,EAC7EA,GAAsB,YAAa,eAAgB,eAAgB,cAAc,EACjFA,GAAsB,UAAW,WAAY,cAAe,cAAc,EAC1EA,GAAsB,UAAW,WAAY,cAAe,eAAgB,UAAU,EACtFA,GAAsB,SAAU,UAAW,aAAc,aAAa,EACtEA,GAAsB,UAAW,QAASE,WAAQ,QAAS,GAAI,EAAGA,GAAAA,QAAQ,QAAS,IAAK,EAAG,aAAa,EACxGH,GAAwB,UAAW,cAAe,cAAe,cAAc,EAC/EA,GAAwB,YAAa,eAAgB,eAAgB,cAAc,EACnFA,GAAwB,UAAW,QAASG,GAAAA,QAAQ,QAAS,GAAI,EAAGA,GAAQ,QAAA,QAAS,IAAK,CAAC,CAC7F,EAEA,gBAAiB,CACf,WAAY,QACZ,KAAM,KACN,MAAO,SACT,CACF,CAAC,EAEKC,GAAwBpK,EAAO,OAAQ,CAC3C,WAAY,SACZ,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,IAAK,IAAK,EAChB,GAAI,CAAE,IAAK,IAAK,EAChB,GAAI,CAAE,IAAK,IAAK,EAChB,GAAI,CAAE,IAAK,IAAK,CAClB,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAEKqK,GAAa,CAAC,CAClB,KAAAzH,EACA,SAAAnC,CACF,IACEC,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACkJ,GAAA,CAAO,IAAK,CAAE,SAAU,UAAW,CAAG,CAAA,EACvClJ,EAAA,cAAC0J,GAAA,CAAsB,KAAMxH,CAAAA,EAAOnC,CAAS,CAC/C,EAaW6J,GACX5J,EAAM,WACJ,CAAC,CAAE,SAAAD,EAAU,GAAA8J,EAAI,KAAA1C,EAAM,UAAA2C,EAAY,GAAO,QAAAC,KAAY7F,CAAK,EAAGC,IAC5DnE,EAAA,cAACgH,GACC,CAAA,GAAI6C,IAAO1C,EAAO,IAAM,QACxB,KAAMA,EACN,UAAW2C,EACX,QAAUA,EAAsB,OAAVC,EACtB,KAAO5C,EAAkB,OAAX,SACb,GAAGjD,EACH,GAAGuC,GAAuBU,CAAI,EAC/B,IAAKhD,CAAAA,EAEJ2F,EACC9J,EAAA,cAAC2J,GAAA,CAAW,KAAMzF,EAAK,IAAA,EAAOnE,CAAS,EAEvCA,CAEJ,CAEJ,EAEF6J,GAAO,YAAc,eC3MRI,GAAgB1K,EAAO,KAAM,CACxC,EAAG,EACH,SAAU,CACR,KAAM,CACJ,GAAI,CACF,WAAY,QACZ,SAAU,MACV,WAAY,IACZ,GAAGa,GAAQ,KAAM,CACnB,EACA,GAAI,CACF,WAAY,QACZ,SAAU,MACV,WAAY,KACZ,GAAGA,GAAQ,KAAM,CACnB,EACA,GAAI,CACF,WAAY,QACZ,SAAU,MACV,WAAY,KACZ,GAAGA,GAAQ,KAAM,CACnB,EACA,GAAI,CACF,WAAY,WACZ,SAAU,OACV,WAAY,KACZ,cAAe,SACf,GAAGA,GAAQ,MAAQ,KAAM,CAC3B,EACA,GAAI,CACF,WAAY,WACZ,SAAU,OACV,WAAY,KACZ,GAAGA,GAAQ,IAAM,GAAI,CACvB,EACA,IAAK,CACH,WAAY,WACZ,SAAU,OACV,WAAY,EACZ,GAAGA,GAAQ,GAAK,EAAG,CACrB,CACF,EACA,UAAW,CACT,KAAM,CACJ,sBAAuB,CAAE,QAAS,iBAAkB,CACtD,CACF,EACA,OAAQ,CACN,OAAQ,CAAE,WAAY,GAAI,EAC1B,KAAM,CAAE,WAAY,GAAI,CAC1B,CACF,CACF,CAAC,EAiBY8J,GACXjK,EAAM,WACJ,CAAC,CAAE,KAAAkC,EAAO,KAAM,OAAAgI,EAAS,UAAWxH,CAAe,EAAGyB,IACpDnE,EAAA,cAACgK,IACC,IAAK7F,EACL,KAAMjC,EACN,OAAQgI,EACP,GAAGxH,EACN,CAEJ,EAEFuH,GAAQ,YAAc,UCjFT,MAAAE,GAAe,CAC1B,KAAM,CACJ,GAAI,CAAE,SAAU,MAAO,WAAY,IAAK,GAAGhK,GAAQ,KAAM,CAAE,EAC3D,GAAI,CAAE,SAAU,MAAO,WAAY,KAAM,GAAGA,GAAQ,KAAM,CAAE,EAC5D,GAAI,CAAE,SAAU,MAAO,WAAY,IAAK,GAAGA,GAAQ,KAAM,CAAE,EAC3D,GAAI,CAAE,SAAU,MAAO,WAAY,KAAM,GAAGA,GAAQ,KAAM,CAAE,EAC5D,GAAI,CAAE,SAAU,MAAO,WAAY,KAAM,GAAGA,GAAQ,KAAM,CAAE,CAC9D,EACA,UAAW,CACT,KAAM,CACJ,sBAAuB,CAAE,QAAS,iBAAkB,CACtD,CACF,CACF,EAEaiK,GAGD,CAAC,CAAE,KAAAlI,EAAM,UAAAmI,CAAU,KAAO,CACpC,GAAGF,GAAa,KAAKjI,GACrB,GAAGiI,GAAa,UAAU,GAAGE,IAC/B,GAEaC,GAAahL,EAAO,IAAK,CACpC,EAAG,EAEH,QAAS,CACP,oBAAqB,CAAE,QAAS,MAAO,CACzC,EACA,SAAU,CACR,GAAG6K,GACH,OAAQ,CACN,OAAQ,CAAE,WAAY,GAAI,EAC1B,KAAM,CAAE,WAAY,GAAI,CAC1B,EACA,OAAQ,CACN,KAAM,CAAE,WAAY,OAAQ,EAC5B,QAAS,CAAE,WAAY,UAAW,EAClC,KAAM,CAAE,WAAY,OAAQ,CAC9B,CACF,CACF,CAAC,EAoBYI,EACXvK,EAAM,WACJ,CAAC,CAAE,KAAAkC,EAAO,KAAM,OAAAsI,EAAS,UAAW9H,CAAe,EAAGyB,IACpDnE,EAAA,cAACsK,GAAW,CAAA,KAAMpI,EAAM,OAAQsI,EAAS,GAAG9H,EAAgB,IAAKyB,EAAK,CAE1E,EAEFoG,EAAK,YAAc,OCjEnB,MAAMjG,GAAahF,EAAOiF,EAAM,CAC9B,UAAW,aACX,SAAU,CACR,MAAO,CACL,KAAM,CAAE,MAAO,OAAQ,EACvB,QAAS,CAAE,MAAO,aAAc,EAChC,OAAQ,CAAE,MAAO,UAAW,UAAW,gBAAiB,EACxD,QAAS,CAAE,MAAO,UAAW,CAC/B,CACF,CACF,CAAC,EAEKkG,GAGF,CACF,KAAMC,EAAAA,KACN,QAASC,EAAAA,OACT,OAAQD,EAAAA,KACR,QAASE,EAAAA,QACX,EAEaC,GAAkB,CAAC,CAAE,MAAAtL,CAAM,IACtCS,EAAA,cAACsE,GAAA,CAAW,MAAO/E,EAAO,GAAIkL,GAAQlL,EAAQ,CAAA,ECfnCuL,GAAQ,CAAC,CACpB,MAAAC,EACA,KAAA7I,EACA,MAAA3C,EACA,YAAAyL,EACA,SAAAC,EACA,iBAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,eAAAC,EACA,cAAAC,KACG5I,CACL,IACE1C,EAAA,cAAC+H,GAAA,CAAY,YAAW,IACtB/H,EAAA,cAAC+H,GAAY,QAAZ,CACC,KAAM7F,EACN,gBAAkBqJ,GAAMA,EAAE,eAAA,EAC1B,iBAAkBH,EAClB,IAAK,CACH,QAAS,OACT,cAAe,SACf,UAAW,OACX,IAAK,IACP,EACC,GAAG1I,CAEJ1C,EAAAA,EAAA,cAAC8I,EAAA,CAAK,IAAK,CAAE,WAAY,SAAU,IAAK,IAAK,CAC1CvJ,EAAAA,GAASS,EAAA,cAAC6K,GAAA,CAAgB,MAAOtL,EAAO,EACzCS,EAAA,cAACiK,GAAA,CAAQ,GAAIlC,GAAY,MAAO,KAAK,KAAK,IAAK,CAAE,GAAI,IAAK,GACvDgD,CACH,CACF,EACCC,GACChL,EAAA,cAACuK,EAAA,CACC,GAAIxC,GAAY,YAChB,IAAK,CAAE,QAAS,OAAQ,UAAW,MAAO,CAAA,EAEzCiD,CACH,EAEFhL,EAAA,cAAC8I,EAAA,CAAK,IAAI,IAAI,QAAQ,MAAM,KAAK,MAC/B9I,EAAAA,EAAA,cAAC+H,GAAY,OAAZ,CAAmB,QAAO,EAAA,EACxBuD,GACEJ,GACClL,EAAA,cAAC4J,GAAA,CACC,KAAK,KACL,WAAW,UACX,QAAS,IAAMqB,GAAA,KAAAA,OAAAA,EAAW,EAEzBC,CAAAA,EAAAA,CACH,CAEN,EACAlL,EAAA,cAAC+H,GAAY,OAAZ,CAAmB,QAAO,IACxBsD,GACCrL,EAAA,cAAC4J,GAAA,CAAO,KAAK,KAAK,QAAS,IAAMqB,GAAA,KAAAA,OAAAA,EAAW,KACzCE,CACH,CAEJ,CACF,CACF,CACF,ECtEWK,GAAe,GAEfC,GAAU,CAACC,EAAcC,IAA4B,CAChE,OAAQA,EAAO,UACR,MACH,MAAO,CAAC,GAAGD,EAAO,CAAE,GAAGC,EAAO,QAAS,GAAIC,GAAAA,IAAM,CAAA,CAAC,MAC/C,SACH,OAAOF,EAAM,OAAO,CAAC,CAAE,GAAAG,CAAG,IAAMA,IAAOF,EAAO,OAAO,UAErD,OAAOD,EAEb,ECRMI,GAAe9L,EAAM,cAAuB,CAChD,UAAW,IAAM,IACnB,CAAC,EAEY+L,GAAgB,CAAC,CAC5B,SAAAhM,CACF,IAAwC,CACtC,KAAM,CAACiM,EAAQC,CAAQ,EAAIjM,EAAM,WAAWyL,GAASD,EAAY,EAC3DnD,EAAeD,GAAgB,EAErC,OACEpI,EAAA,cAAC8L,GAAa,SAAb,CACC,MAAO,CACL,UAAYI,GACVD,EAAS,CACP,QAASC,EACT,KAAM,KACR,CAAC,CACL,CAAA,EAEC,QAAQF,EAAO,MAAM,GACpBhM,EAAA,cAAC8K,GAAA,CACE,GAAGkB,EAAO,GACX,IAAKA,EAAO,GAAG,GACf,QAAS,IAAM,CACT3D,EAAa,SACf4D,EAAS,CACP,QAASD,EAAO,GAAG,GACnB,KAAM,QACR,CAAC,CACL,CAAA,CACF,EAEDjM,CACH,CAEJ,EAEaoM,GAAW,IAAe,CACrC,MAAMC,EAAUpM,EAAM,WAAW8L,EAAY,EAE7C,GAAIM,IAAY,OACd,MAAM,IAAI,MAAM,8CAA8C,EAGhE,OAAOA,CACT,ECnDMpK,GAAa,CACjB,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,IAAK,IACP,EAEaqK,GAAa,CAAC,CAAE,GAAAC,CAAG,IAA2B,CACzD,MAAMC,EAAcvM,EAAM,WAAWwM,EAAiB,EAChD,CAAE,KAAAtK,CAAK,EAAIqK,EACXE,EAAWzM,EAAM,QACrB,IAAM0B,EAA6BQ,EAAOC,GAAMH,GAAWG,EAAE,EAC7D,CAACD,CAAI,CACP,EAEA,OAAOlC,EAAA,cAACuE,EAAA,CAAK,KAAMkI,EAAU,GAAIH,EAAI,CACvC,ECnBaI,GAAcpN,EAAO,MAAO,CACvC,cAAe,SACf,SAAU,OACV,SAAU,CACR,MAAO,CACL,KAAM,CACJ,WAAY,CACV,MAAO,MACT,EACA,mBAAoB,CAClB,OAAQ,MACV,EACA,iBAAkB,CAChB,MAAO,OACP,OAAQ,OACR,SAAU,MACZ,CACF,CACF,CACF,CACF,CAAC,EASYqN,GAASvD,GAAsBpJ,EAAA,cAAC0M,GAAA,CAAa,GAAGtD,CAAAA,CAAO,EAEpEuD,GAAM,YAAc,QC/BP,MAAAC,GAAoB,IAE7B5M,EAAA,cAACH,EAAA,CAAI,IAAK,CAAE,SAAU,WAAY,KAAM,MAAO,GAC7CG,EAAA,cAACuE,EAAA,CAAK,GAAIsI,EAAAA,KAAM,IAAK,CAAE,KAAM,MAAO,EAAG,CACzC,ECFEC,GAAa,CACjB,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,IAAK,IACP,EAEaC,GAAgB,IAAM,CACjC,MAAMR,EAAcvM,EAAM,WAAWwM,EAAiB,EAChD,CAAE,KAAAjJ,EAAM,KAAArB,CAAK,EAAIqK,EACjBS,EAAWhN,EAAM,QACrB,IAAM0B,EAA6BQ,EAAOC,GAAM2K,GAAW3K,EAAE,EAC7D,CAACD,CAAI,CACP,EAEA,OAAKqB,EAKHvD,EAAA,cAACuK,EAAA,CAAK,KAAMyC,EAAU,IAAK,CAAE,MAAO,UAAW,GAC5CzJ,EAAK,GAAG,aACX,EANOvD,EAAA,cAAC4M,GAAA,IAAkB,CAQ9B,EC3BMF,GAAcpN,EAAOqN,GAAO,CAChC,KAAM,OACN,UAAW,OACb,CAAC,EAEYM,GAAc,CAAC,CAAE,IAAAC,EAAK,IAAAC,CAAI,IAChCD,EAIElN,EAAA,cAAC0M,GAAA,CAAY,IAAKQ,EAAK,IAAKC,EAAK,EAH/BnN,EAAA,cAAC+M,GAAA,IAAc,ECJpBK,GAAmB,CACvB,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,MAAO,WACP,aAAc,SACd,OAAQ,qBACR,gBAAiB,SACjB,SAAU,SACV,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,GAAI,CAAE,KAAM,IAAK,EACjB,IAAK,CAAE,KAAM,IAAK,CACpB,CACF,CACF,EAEMC,GAAY/N,EAAO,MAAO8N,EAAgB,EAC1CpG,GAAe1H,EAAO,SAAU,CACpC,IAAK,QACL,GAAG8N,GACH,oBAAqB,CACnB,UAAW,CACT,YAAa,WACb,gBAAiB,UACnB,EACA,WAAY,CACV,YAAa,cACb,gBAAiB,UACnB,EACA,kBAAmBzM,GACrB,CAAA,EACA,cAAe,CACb,QAAS,MACT,OAAQ,aACV,CACF,CAAC,EAiBY6L,GAAoBxM,EAAM,cAAkC,CACvE,KAAM,OACN,KAAM,IACR,CAAC,EAEYsN,GAAqB,CAAC,CAAE,SAAAvN,EAAU,KAAAwD,EAAM,KAAArB,CAAK,IAAoB,CAC5E,MAAMxD,EAAQsB,EAAM,QAClB,KAAO,CAAE,KAAAuD,EAAM,KAAArB,CAAK,GACpB,CAACqB,EAAMrB,CAAI,CACb,EAEA,OACElC,EAAA,cAACwM,GAAkB,SAAlB,CAA2B,MAAO9N,CAChCqB,EAAAA,CACH,CAEJ,EAEawN,GAAa,CAAC,CACzB,SAAAxN,EACA,KAAAmC,EAAO,KACP,KAAAqB,EACA,SAAA6D,EAAW,GACX,QAAA2C,CACF,IACE/J,EAAA,cAACsN,GAAA,CAAmB,KAAM/J,EAAM,KAAMrB,CAAAA,EACnC6H,EACC/J,EAAA,cAACgH,GAAA,CACC,KAAM9E,EACN,SAAUkF,EACV,QAASA,EAAW,OAAY2C,EAChC,IAAK,CAAE,OAAQ3C,EAAW,OAAS,SAAU,CAE5CrH,EAAAA,CACH,EAEAC,EAAA,cAACqN,GAAA,CAAU,KAAMnL,CAAOnC,EAAAA,CAAS,CAErC,EAGWyN,GAAS,OAAO,OAAOD,GAAY,CAC9C,MAAON,GACP,QAASF,GACT,YAAaH,GACb,KAAMP,EACR,CAAC,EAEDkB,GAAW,YAAc,SCjHZ,MAAAE,GAGT,IAAM,CACR,MAAMC,EAAQ1N,EAAM,OAA2B,IAAI,EAE7C2N,EAAmB3N,EAAM,YAAa4N,GAAO,CAC7CA,IAAIF,EAAM,QAAUE,EAC1B,EAAG,CAAE,CAAA,EAEL,MAAO,CAACF,EAAOC,CAAgB,CACjC,EAEaE,GAGT,IAAM,CACR,KAAM,CAACH,EAAOI,CAAQ,EAAI9N,EAAM,SAA6B,IAAI,EAE3D2N,EAAmB3N,EAAM,YAAa4N,GAAO,CAC7CA,GAAIE,EAASF,CAAE,CACrB,EAAG,CAAE,CAAA,EAEL,MAAO,CAACF,EAAOC,CAAgB,CACjC,ECZaI,GAAe/N,EAAM,cAA6B,CAAA,CAAE,EAEpDgO,GAAgB,CAAC,CAC5B,KAAA9L,EACA,SAAA+L,EACA,SAAAlO,CACF,IAAoD,CAClD,KAAM,CAACmO,EAAeC,CAAgB,EAAInO,EAAM,SAAS,EAAK,EAExDtB,EAAQsB,EAAM,QAClB,KAAO,CAAE,KAAAkC,EAAM,SAAA+L,EAAU,cAAAC,EAAe,iBAAAC,CAAiB,GACzD,CAACjM,EAAM+L,EAAUC,EAAeC,CAAgB,CAClD,EACA,OAAOnO,EAAA,cAAC+N,GAAa,SAAb,CAAsB,MAAOrP,CAAQqB,EAAAA,CAAS,CACxD,ECvBMqO,GAAkB9O,EAAOiF,CAAI,EAEtB8J,GACXjF,GACGpJ,EAAA,cAACoO,GAAA,CAAgB,KAAK,KAAM,GAAGhF,CAAO,CAAA,ECErCkF,GACJC,GACG,CACH,GAAI,CACF,OAAO,IAAI,eAAeA,CAAQ,CACpC,OACE,OAAO,IACT,CACF,EAEaC,GAAoB,CAAC,CAChC,MAAAC,EAAQ,IACR,SAAAC,EACA,SAAAC,CACF,IAA2D,CACzD,MAAMC,EAAW5O,EAAM,QACrB,IAAMsO,GAAqBO,GAAAA,SAASJ,EAAOE,CAAQ,CAAC,EACpD,CAACF,EAAOE,CAAQ,CAClB,EAEA,OAAA3O,EAAM,UAAU,KACd0O,EAAS,QAASI,GAAY,CACxBA,IACFF,GAAA,MAAAA,EAAU,QAAQE,CAEtB,EAAA,CAAC,EAEM,IAAM,CACXJ,EAAS,QAASI,GAAYA,IAAWF,GAAA,KAAA,OAAAA,EAAU,UAAUE,CAAAA,EAAQ,CACvE,GACC,CAACF,EAAUF,CAAQ,CAAC,EAEhBE,CACT,EC3BMG,GAAqE,CAAC,CAC1E,MAAArB,CACF,IAAM,CACJ,KAAM,CAAE,iBAAAS,CAAiB,EAAInO,EAAM,WAAW+N,EAAY,EAE1D,OAAAS,GAAkB,CAChB,MAAO,EACP,SAAU,CAACd,CAAK,EAChB,SAAU,IAAM,CACV,EAACA,GAAA,MAAAA,EAAO,cAAe,EAACA,GAAA,MAAAA,EAAO,cACnCS,GAAA,MAAAA,EAAmBT,EAAM,YAAcA,EAAM,YAC/C,CACF,CAAC,EAEM,IACT,EAEMsB,GAAkB1P,EAAOiL,EAAM,CACnC,GAAI,KACJ,SAAU,CACR,SAAU,CACR,SAAU,CACR,WAAY,SACZ,UAAW,SACX,aAAc,UAChB,EACA,KAAM,CACJ,WAAY,MACd,CACF,CACF,CACF,CAAC,EAIKuC,GAAa,CACjB,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEamC,GAAY,CAAC,CACxB,SAAAlP,KACGmE,CACL,IAAoC,CAElC,KAAM,CAAE,KAAMgL,EAAW,SAAAjB,CAAS,EAAIjO,EAAM,WAAW+N,EAAY,EAE7D7L,EAAOlC,EAAM,QACjB,IAAM0B,EAA6BwN,EAAY/M,GAAM2K,GAAW3K,EAAE,EAClE,CAAC+M,CAAS,CACZ,EAEM,CAACxB,EAAOI,CAAQ,EAAID,GAAAA,EAE1B,OACE7N,EAAA,cAAAA,EAAA,SAAA,KACGiO,IAAa,YAAcjO,EAAA,cAAC+O,GAAA,CAAyB,MAAOrB,CAAO,CAAA,EACpE1N,EAAA,cAACgP,GAAA,CACC,UAAS,GACT,KAAM9M,EACN,SAAU+L,EACV,IAAKH,EACJ,GAAG5J,CAEHnE,EAAAA,CACH,CACF,CAEJ,EChFMoP,GAAOhQ,EAAY,CACvB,OAAQ,CACN,WAAY,WACZ,iBAAkB,aAClB,SAAU,OACV,eAAgB,QAChB,YAAa,OACf,CACF,CAAC,EAEKiQ,GAAUjQ,EAAY,CAC1B,OAAQ,CACN,WAAY,WACZ,iBAAkB,WAClB,SAAU,OACV,eAAgB,WAChB,YAAa,UACf,CACF,CAAC,EAEKkQ,GAAUlQ,EAAY,CAC1B,OAAQ,CACN,WAAY,cACZ,iBAAkB,gBAClB,SAAU,OACV,eAAgB,WAChB,YAAa,UACf,CACF,CAAC,EAEKmQ,GAASnQ,EAAY,CACzB,OAAQ,CACN,WAAY,aACZ,iBAAkB,eAClB,SAAU,OACV,eAAgB,UAChB,YAAa,SACf,CACF,CAAC,EAEKoQ,GAAUpQ,EAAY,CAC1B,OAAQ,CACN,WAAY,eACZ,iBAAkB,gBAClB,SAAU,YACV,eAAgB,WAChB,YAAa,UACf,CACF,CAAC,EAKKqQ,GAAUrQ,EAAY,CAC1B,OAAQ,CACN,WAAY,eACZ,iBAAkB,cAClB,gBAAiB,eACjB,sBAAuB,cAEvB,SAAU,QACV,eAAgB,cAChB,oBAAqB,cAErB,YAAa,aACf,CACF,CAAC,EAEKsQ,GAAOtQ,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,OACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEKuQ,GAAOvQ,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,OACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEKwQ,GAAOxQ,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,OACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEKyQ,GAASzQ,EAAY,CACzB,OAAQ,CACN,WAAY,cACZ,iBAAkB,aAClB,gBAAiB,cACjB,sBAAuB,aAEvB,SAAU,OACV,eAAgB,aAChB,oBAAqB,aAErB,YAAa,YACf,CACF,CAAC,EAEK0Q,GAAO1Q,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,OACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEK2Q,GAAQ3Q,EAAY,CACxB,OAAQ,CACN,WAAY,aACZ,iBAAkB,YAClB,gBAAiB,aACjB,sBAAuB,YAEvB,SAAU,OACV,eAAgB,YAChB,oBAAqB,YAErB,YAAa,WACf,CACF,CAAC,EAEK4Q,GAAU5Q,EAAY,CAC1B,OAAQ,CACN,WAAY,eACZ,iBAAkB,cAClB,gBAAiB,eACjB,sBAAuB,cAEvB,SAAU,OACV,eAAgB,cAChB,oBAAqB,cAErB,YAAa,aACf,CACF,CAAC,EAEK6Q,GAAM7Q,EAAY,CACtB,OAAQ,CACN,WAAY,WACZ,iBAAkB,UAClB,gBAAiB,WACjB,sBAAuB,UAEvB,SAAU,OACV,eAAgB,UAChB,oBAAqB,UAErB,YAAa,SACf,CACF,CAAC,EAEK8Q,GAAO9Q,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,OACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEK+Q,GAAS/Q,EAAY,CACzB,OAAQ,CACN,WAAY,cACZ,iBAAkB,aAClB,gBAAiB,cACjB,sBAAuB,aAEvB,SAAU,YACV,eAAgB,aAChB,oBAAqB,aAErB,YAAa,aACf,CACF,CAAC,EAEKgR,GAAShR,EAAY,CACzB,OAAQ,CACN,WAAY,cACZ,iBAAkB,aAClB,gBAAiB,cACjB,sBAAuB,aAEvB,SAAU,YACV,eAAgB,aAChB,oBAAqB,aAErB,YAAa,YACf,CACF,CAAC,EAEKiR,GAAOjR,EAAY,CACvB,OAAQ,CACN,WAAY,YACZ,iBAAkB,WAClB,gBAAiB,YACjB,sBAAuB,WAEvB,SAAU,YACV,eAAgB,WAChB,oBAAqB,WAErB,YAAa,UACf,CACF,CAAC,EAEKkR,GAAQlR,EAAY,CACxB,OAAQ,CACN,WAAY,aACZ,iBAAkB,YAClB,gBAAiB,aACjB,sBAAuB,YAEvB,SAAU,QACV,eAAgB,YAChB,oBAAqB,YAErB,YAAa,WACf,CACF,CAAC,EAEKmR,GAASnR,EAAY,CACzB,OAAQ,CACN,WAAY,cACZ,iBAAkB,aAClB,gBAAiB,cACjB,sBAAuB,aAEvB,SAAU,QACV,eAAgB,aAChB,oBAAqB,aAErB,YAAa,YACf,CACF,CAAC,EAEKoR,GAAQpR,EAAY,CACxB,OAAQ,CACN,WAAY,aACZ,iBAAkB,YAClB,gBAAiB,aACjB,sBAAuB,YAEvB,SAAU,QACV,eAAgB,YAChB,oBAAqB,YAErB,YAAa,WACf,CACF,CAAC,EAEYqR,GAAqB,CAChC,OACA,UACA,UACA,SACA,SACF,EAEa3N,GAAe,CAC1B,KAAAsM,GACA,QAAAC,GACA,QAAAC,GACA,OAAAC,GACA,QAAAC,GACA,QAAAC,GACA,KAAAC,GACA,KAAAC,GACA,KAAAC,GACA,OAAAC,GACA,KAAAC,GACA,MAAAC,GACA,QAAAC,GACA,IAAAC,GACA,KAAAC,GACA,OAAAC,GACA,OAAAC,GACA,KAAAC,GACA,MAAAC,GACA,OAAAC,GACA,MAAAC,EACF,ECxTME,GAAcnR,EAAOwJ,EAAM,CAC/B,eAAgB,SAChB,WAAY,SACZ,aAAc,KACd,SAAU,EACV,OAAQ,oBACR,WAAY,QACZ,yBAA0B,CACxB,GAAI,IACN,EACA,SAAU,CACR,SAAU,CACR,MAAO,CACL,MAAO,eACP,WAAY,OACd,EACA,OAAQ,CACN,MAAO,cACP,WAAY,mBACd,EACA,KAAM,CACJ,MAAO,YACP,WAAY,iBACd,CACF,EACA,KAAM,CACJ,GAAI,CACF,GAAI,IACN,EACA,GAAI,CACF,GAAI,KACJ,GAAI,IACN,EACA,GAAI,CACF,GAAI,KACJ,GAAI,IACN,CACF,EAEA,YAAa,CACX,KAAM,CACJ,OAAQ,SACV,CACF,EACA,YAAa,CACX,KAAM,CACR,CAAA,CACF,EACA,iBAAkB,CAChB,CACE,YAAa,GACb,SAAU,QACV,IAAK,CACH,UAAW,CACT,MAAO,eACP,WAAY,mDACd,CACF,CACF,EACA,CACE,YAAa,GACb,SAAU,SACV,IAAK,CACH,UAAW,CACT,MAAO,mBACP,WAAY,wBACd,CACF,CACF,EACA,CACE,YAAa,GACb,SAAU,OACV,IAAK,CACH,UAAW,CACT,MAAO,YACP,WAAY,sBACd,CACF,CACF,EACA,CACE,SAAU,QACV,YAAa,GACb,IAAK,CACH,MAAO,eACP,WAAY,mDACd,CACF,EACA,CACE,SAAU,SACV,YAAa,GACb,IAAK,CACH,MAAO,mBACP,WAAY,wBACd,CACF,EACA,CACE,SAAU,OACV,YAAa,GACb,IAAK,CACH,MAAO,YACP,WAAY,sBACd,CACF,CACF,CACF,CAAC,EASK4H,GACJ1Q,EAAM,WACJ,CAAC,CAAE,MAAAT,EAAQ,OAAQ,SAAAoR,EAAW,SAAU,SAAA5Q,KAAamE,CAAK,EAAGC,IAAQ,CACnE,KAAM,CAAE,KAAAjC,EAAM,SAAA+L,EAAU,cAAAC,CAAc,EAAIlO,EAAM,WAAW+N,EAAY,EACjE,CAAC6C,EAAYC,CAAa,EAAIhD,GAAoB,EACxD7N,EAAM,oBAAoBmE,EAAK,IAAMyM,CAA4B,EAEjE,MAAMvK,EAAQuK,GAAA,YAAAA,EAAY,YAEpBE,EAAaN,GAAmB,SAASjR,CAAK,EAE9CwR,EACJ,OAAO,KAAK7M,CAAI,EAAE,SAAS,SAAS,GACpC,OAAO,KAAKA,CAAI,EAAE,SAAS,MAAM,EAEnC,OACElE,EAAA,cAACmG,GAAA,CACC,WAAY8H,IAAa,YAAcC,EACvC,MAAO7H,CAEPrG,EAAAA,EAAA,cAACyQ,GAAA,CACC,KAAK,SACL,SAAUE,EACV,KAAMzO,EACL,GAAGgC,EACJ,UAAW8M,GAAkBzR,GAC7B,IAAKsR,EACL,YAAaE,GAAe,CAACD,GAE5B9Q,EAAM,SAAS,IAAID,EAAWwH,GACzB,OAAOA,GAAU,UAAY,OAAOA,GAAU,SACzCvH,EAAA,cAACiP,GAAA,KAAW1H,CAAM,EAEvBvH,EAAM,eAAeuH,CAAK,GAAKA,EAAM,OAAShD,EACzCvE,EAAA,cAACqO,GAAA,CAAW,GAAG9G,EAAM,KAAA,CAAO,EAE9BA,CACR,CACH,CACF,CAEJ,CACF,EAEI0J,GACJjR,EAAM,WAAW,CAAC,CAAE,KAAAkC,EAAO,KAAM,SAAA+L,EAAW,UAAW/J,CAAK,EAAGC,IAE3DnE,EAAA,cAACgO,GAAA,CAAc,KAAM9L,EAAM,SAAU+L,CAAAA,EACnCjO,EAAA,cAAC0Q,GAAA,CAAY,GAAGxM,EAAM,IAAKC,CAAK,CAAA,CAClC,CAEH,EAEU+M,GAAQ,OAAO,OAAOD,GAAgB,CACjD,KAAM5C,GACN,KAAMY,EACR,CAAC,EAEDgC,GAAe,YAAc,cClLhBE,GACXnR,EAAM,cAAuC,CAC3C,YAAa,GACb,eAAgB,IAAG,CACnB,EAAA,UAAW,IAAG,CAAA,CAChB,CAAC,EAQUoR,GAA0B,CAAC,CACtC,UAAWC,EACX,SAAAtR,EACA,SAAAqH,EACA,UAAAkK,EAAY,IAAM,IACpB,IAAsD,CACpD,KAAM,CAACC,EAAaC,CAAc,EAAIxR,EAAM,SAAS,EAAK,EAEpDtB,EAAQsB,EAAM,QAAiC,IAAM,CACzD,MAAMyR,EAAe,OAAOJ,GAA0B,UACtD,MAAO,CACL,SAAAjK,EACA,YAAaqK,EACRJ,EACDE,EACJ,eAAgBE,EAAe,IAAM,KAAOD,EAC5C,UAAAF,CACF,CACF,EAAG,CAAClK,EAAUmK,EAAaD,EAAWD,CAAqB,CAAC,EAE5D,OACErR,EAAA,cAACmR,GAAuB,SAAvB,CAAgC,MAAOzS,CACrCqB,EAAAA,CACH,CAEJ,EAMM2R,GAA0B,CAAC,CAC/B,QAAAzN,EAAU,MACPC,CACL,IAA8D,CAC5D,MAAMqI,EAAcvM,EAAM,WAAWmR,EAAsB,EAErD,CAAE,YAAAI,EAAa,SAAAnK,CAAS,EAAImF,EAElC,GAAIgF,EAAa,OAAO,KAExB,MAAMnI,EAAQ,CAAE,GAAIhC,GAAY,CAAE,CAAC,iBAAkB,EAAG,EAAI,GAAGlD,CAAK,EAEpE,OAAOlE,EAAA,cADWiE,EAAUI,GAAAA,KAAO,MAC3B,CAAW,GAAG+E,EAAO,CAC/B,EAEauI,GAAkB,CAAC,CAC9B,SAAAvK,EAAW,GACX,UAAAwK,EACA,UAAAN,KACGpN,CACL,IAGElE,EAAA,cAACoR,GAAA,CACC,UAAWQ,EACX,SAAUxK,EACV,UAAWkK,CAAAA,EAEXtR,EAAA,cAAC0R,GAAA,CAAyB,GAAGxN,EAAM,CACrC,EAGFyN,GAAgB,YAAc,cC7E9B,MAAME,GAAkBzI,GACtBpJ,EAAA,cAAC,SAAA,CAAO,KAAK,SAAU,GAAGoJ,CAAO,EAAA,SAEjC,EAGW0I,GAAqB,CAAC,CACjC,QAAA7N,EAAU,MACPC,CACL,IAAyD,CACvD,MAAMkI,EAAUpM,EAAM,WAAWmR,EAAsB,EACvD,GAAI/E,IAAY,OACd,MAAM,IAAI,MACR,gEACF,EAGF,KAAM,CAAE,eAAAoF,EAAgB,SAAApK,EAAU,UAAAkK,CAAU,EAAIlF,EAO1ChD,EAAQ,CACZ,SAAUhC,EACV,QAPoB,IAAM,CAC1BoK,EAAe,EAAI,EACnBF,GAAA,MAAAA,EACF,CAAA,EAKE,GAAGpN,CACL,EAGA,OAAOlE,EAAA,cADWiE,EAAUI,GAAAA,KAAOwN,GAC3B,CAAW,GAAGzI,EAAO,CAC/B,ECtCa2I,GAAc,OAAO,OAAOJ,GAAiB,CACxD,QAASG,EACX,CAAC,ECSYE,GAAgBhS,EAAM,cAAmC,CACpE,SAAU,UACV,KAAM,CACJ,WAAY,KACZ,MAAO,IACT,EACA,WAAY,GACZ,cAAe,IAAM,IACvB,CAAC,EAEYiS,EAAmB,IAA2B,CACzD,MAAM7F,EAAUpM,EAAM,WAAWgS,EAAa,EAE9C,GAAI5F,IAAY,OACd,MAAM,IAAI,MAAM,uDAAuD,EAGzE,OAAOA,CACT,EAEa8F,GAAiB,CAAC,CAC7B,SAAAvB,EAAW,UACX,KAAAzO,EAAO,CACL,WAAY,KACZ,MAAO,IACT,EACA,SAAAnC,CACF,IAAqD,CACnD,KAAM,CAACoS,EAAYC,CAAa,EAAIpS,EAAM,SAAS,EAAK,EAClDtB,EAAQsB,EAAM,QAClB,KAAO,CAAE,SAAA2Q,EAAU,KAAAzO,EAAM,WAAAiQ,EAAY,cAAAC,CAAc,GACnD,CAACzB,EAAUzO,EAAMiQ,EAAYC,CAAa,CAC5C,EACA,OACEpS,EAAA,cAACgS,GAAc,SAAd,CAAuB,MAAOtT,GAAQqB,CAAS,CAEpD,EAEAmS,GAAe,YAAc,SCjDtB,MAAMG,GAAS,OAAO,OAAOH,GAAgB,CAClD,QAASH,GAAY,OACvB,CAAC,ECEYO,GACXlJ,GACG,CACH,KAAM,CAAE,SAAAuH,EAAU,KAAAzO,CAAK,EAAI+P,EAAAA,EAErBM,EAAYvS,EAAM,QACtB,IAAM0B,EAA6BQ,EAAOC,GAAMA,IAAM,IAAI,EAC1D,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAAC4J,GAAA,CACC,KAAM1H,EACN,UAAWqQ,EACX,MAAO5B,IAAa,OAAS,UAAY,UACxC,GAAGvH,CACN,CAAA,CAEJ,EAEAkJ,GAAoB,YAAc,sBClBlC,MAAME,GAAuB,EAEvBC,GAAQ,CACZ,GAAI,EACJ,GAAI,CACN,EAEMC,GAAc,CAClB,GAAI,SACJ,GAAI,KACN,EAEaC,GAAuB,CAAC,CACnC,SAAA5S,KACGqJ,CACL,IAAyC,CACvC,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,IAEXW,EAAM5S,EAAM,QAChB,IAAM0B,EAA6BQ,EAAOC,GAAMsQ,GAAMtQ,EAAE,EACxD,CAACD,CAAI,CACP,EAEM2Q,EAAY7S,EAAM,QACtB,IAAM0B,EAA6BQ,EAAOC,GAAMuQ,GAAYvQ,EAAE,EAC9D,CAACD,CAAI,CACP,EAEA,OAAAoF,GAAAA,QACEtH,EAAM,SAAS,MAAMD,CAAQ,GAAKyS,GAClC,gBAAgBA,MAAwBF,GAAoB,yDAAyDK,GAAqB,aAC5I,EAGE3S,EAAA,cAAC8I,EAAA,CAAK,IAAK8J,EAAK,UAAWC,EAAY,GAAGzJ,GACvCpJ,EAAM,SAAS,IAAID,EAAU,CAACwH,EAAOuL,IAAU,CAG9C,GAAIvL,GAAS,KAAM,OAAOA,EAE1B,GAAI,CAACvH,EAAM,eAAeuH,CAAK,EAC7B,MAAM,IAAI,MACR,mBAAmBoL,GAAqB,oCAC1C,EAGFrL,GAAAA,QACEC,EAAM,OAAS+K,GACf,oBAAoB/K,GAAA,KAAAA,OAAAA,EAAO,kCAAkC+K,GAAoB,uCAAuCK,GAAqB,aAC/I,EAEA,MAAMI,EAEF,CAEF,WAAYD,EAAQ,EAAI,UAAY,MACtC,EAEA,OAAO9S,EAAM,aACXuH,EAGAwL,CACF,CACF,CAAC,CACH,CAEJ,EAEAJ,GAAqB,YAAc,uBCrEnC,MAAMK,GAAwB1T,EAAOwJ,EAAM,CACzC,SAAU,WACV,MAAO,OACP,aAAc,KACd,SAAU,SACV,MAAO,cACP,yBAA0B,qBAC1B,sBAAuB,kBACvB,SAAU,CACR,SAAU,CACR,KAAM,CACJ,WAAY,UACZ,MAAO,mBACP,yBAA0B,0BAC1B,sBAAuB,iBACzB,EACA,OAAQ,CACN,WAAY,QACd,EACA,QAAS,CACP,WAAY,QACd,CACF,EACA,KAAM,CACJ,GAAI,CAAA,EACJ,GAAI,EACN,CACF,CACF,CAAC,EAQYmK,GAAkB,CAAC,CAC9B,YAAApO,EAAc,CAAC,EACf,UAAAyM,EACA,UAAAM,KACGxI,CACL,IAA0C,CACxC,KAAM,CAAE,SAAAuH,CAAS,EAAIsB,IAErB,OACEjS,EAAA,cAAC4D,GAAA,CAAa,GAAGiB,EAAa,QAAO,EAAA,EACnC7E,EAAA,cAAC+R,GAAA,CAAY,QAAO,GAAC,UAAWT,EAAW,UAAWM,CACpD5R,EAAAA,EAAA,cAACgT,GAAA,CAAsB,KAAK,SAAS,SAAUrC,EAAW,GAAGvH,CAAO,CAAA,CACtE,CACF,CAEJ,ECnDa8J,GAA0B9J,GACrCpJ,EAAA,cAACiT,GAAA,CAAiB,GAAG7J,CAAO,CAAA,ECHxB+J,GAAY7T,EAAOO,EAAK,CAC5B,MAAO,MACP,SAAU,EACV,SAAU,CACR,KAAM,CACJ,GAAI,CACF,EAAG,IACL,EACA,GAAI,CACF,EAAG,MACH,GAAI,IACN,CACF,CACF,CACF,CAAC,EAEYuT,GACXhK,GACG,CACH,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,EAAiB,EAElC,OAAOjS,EAAA,cAACmT,GAAA,CAAU,KAAMjR,EAAO,GAAGkH,CAAAA,CAAO,CAC3C,EAEAgK,GAAqB,YAAc,uBCpBnC,MAAMC,GAAmB,CACvB,GAAI,KACJ,GAAI,IACN,EAEMC,GAAgBhU,EAAO2H,EAAY,CACvC,OAAQ,EACR,SAAU,WACV,IAAK,KACL,MAAO,IACT,CAAC,EAOYsM,GAAuB,CAAC,CACnC,MAAAlN,EAAQ,aACLnC,CACL,IAAiC,CAC/B,KAAM,CAAE,KAAAhC,EAAM,cAAAkQ,CAAc,EAAIH,EAAiB,EAEjDjS,EAAM,UAAU,KACdoS,EAAc,EAAI,EACX,IAAM,CACXA,EAAc,EAAK,CACrB,GACC,CAACA,CAAa,CAAC,EAElB,MAAMoB,EAAiBxT,EAAM,QAC3B,IAAM0B,EAA6BQ,EAAOC,GAAMkR,GAAiBlR,EAAE,EACnE,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAACqS,GAAO,QAAP,CAAe,QAAO,EACrBrS,EAAAA,EAAA,cAACsT,GAAA,CACC,MAAOjN,EACP,KAAMmN,EACN,WAAY,GACZ,UAAS,GACT,MAAM,UACN,WAAW,QACV,GAAGtP,CAEJlE,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAIkP,OAAAA,CAAO,CACnB,CACF,CAEJ,EAEAF,GAAqB,YAAc,uBCxDnC,MAAMvJ,GAAgB1K,EAAO2K,GAAS,CACpC,GAAI,KACJ,MAAO,8BACP,SAAU,CACR,cAAe,CACb,GAAI,CACJ,EAAA,GAAI,EACN,EACA,WAAY,CACV,KAAM,CAAA,CACR,CACF,EACA,iBAAkB,CAChB,CACE,cAAe,KACf,WAAY,GACZ,IAAK,CACH,GAAI,IACN,CACF,CACF,CACF,CAAC,EAEYyJ,GACXtK,GACG,CACH,KAAM,CAAE,KAAAlH,EAAM,WAAAiQ,CAAW,EAAIF,EAAiB,EAE9C,OACEjS,EAAA,cAACgK,GAAA,CACC,KAAK,KACL,cAAe9H,EACf,WAAYiQ,EACX,GAAG/I,EACN,CAEJ,EAEAsK,GAAqB,YAAc,uBCrCnC,MAAMP,GAAY7T,EAAOO,EAAK,CAC5B,SAAU,WACV,SAAU,SACV,MAAO,MACP,SAAU,CACR,KAAM,CACJ,GAAI,CACF,QAAS,MACX,EACA,GAAI,CACF,QAAS,OACX,CACF,CACF,CACF,CAAC,EAEK6M,GAAcpN,EAAOqN,GAAO,CAChC,SAAU,WACV,SAAU,OACV,MAAO,OACP,OAAQ,OACR,UAAW,OACb,CAAC,EAEYgH,GACXvK,GACG,CACH,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,IAEjB,OACEjS,EAAA,cAACmT,GAAA,CAAU,KAAMjR,CAAAA,EACflC,EAAA,cAAC0M,GAAA,CAAa,GAAGtD,CAAAA,CAAO,CAC1B,CAEJ,EAEAuK,GAAmB,YAAc,qBCrCjC,MAAMrJ,GAAahL,EAAOiL,EAAM,CAC9B,MAAO,2BACP,SAAU,CACR,cAAe,CACb,GAAI,CACF,GAAI,IACN,EACA,GAAI,CACF,GAAI,KACN,CACF,EACA,WAAY,CACV,KAAM,CACR,CAAA,CACF,EACA,iBAAkB,CAChB,CACE,cAAe,KACf,WAAY,GACZ,IAAK,CACH,GAAI,IACN,CACF,CACF,CACF,CAAC,EAEYqJ,GAAqBxK,GAA6C,CAC7E,KAAM,CAAE,KAAAlH,EAAM,WAAAiQ,CAAW,EAAIF,EAAiB,EAE9C,OACEjS,EAAA,cAACsK,GAAA,CACC,KAAMpI,EACN,cAAeA,EACf,WAAYiQ,EACX,GAAG/I,EACN,CAEJ,EAEAwK,GAAkB,YAAc,oBClChC,MAAMC,GAAyB,CAAC,CAC9B,YAAAhP,EACA,KAAA3C,EACA,SAAAyO,EACA,UAAAW,KACGpN,CACL,IACElE,EAAA,cAACqS,GAAA,CAAO,KAAMnQ,EAAM,SAAUyO,GAC5B3Q,EAAA,cAACkT,GAAA,CACC,YAAarO,EACb,UAAWyM,EACV,GAAGpN,CAAAA,CACN,CACF,EAGW4P,GAAgB,OAAO,OAAOD,GAAwB,CACjE,QAAST,GACT,QAASM,GACT,KAAME,GACN,QAASjB,GACT,MAAOgB,GACP,OAAQrB,GACR,QAASiB,EACX,CAAC,EAEDM,GAAuB,YAAc,gBC/BrC,MAAME,GAA0BzU,EAAOwJ,EAAM,CAC3C,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,MAAO,MAAO,EACpB,GAAI,CAAE,MAAO,MAAO,CACtB,CACF,CACF,CAAC,EAEYkL,GAAoB,CAAC,CAChC,SAAAjU,KACGqJ,CACL,IAAyC,CACvC,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,IACjB,OACEjS,EAAA,cAAC+T,GAAA,CAAwB,KAAM7R,EAAM,IAAK,EAAI,GAAGkH,CAC9CrJ,EAAAA,CACH,CAEJ,EAEAiU,GAAkB,YAAc,0BCrBnBC,GAAmB,CAAC,CAC/B,IAAAhV,KACGmK,CACL,IAA2C,CACzC,KAAM,CAAE,SAAAuH,EAAU,KAAAzO,CAAK,EAAI+P,EAAAA,EAErBM,EAAYvS,EAAM,QACtB,IAAM0B,EAA6BQ,EAAOC,GAAMA,IAAM,IAAI,EAC1D,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAAC4J,GAAA,CACC,KAAK,KACL,UAAW2I,EACX,MAAO5B,IAAa,OAAS,UAAY,UACzC,IAAK,CAAE,GAAI,OAAQ,GAAG1R,CAAI,EACzB,GAAGmK,CAAAA,CACN,CAEJ,EAEA6K,GAAiB,YAAc,mBCrB/B,MAAMvB,GAAc,CAClB,GAAI,SACJ,GAAI,KACN,EAEMwB,GAAU,CACd,GAAI,aACJ,GAAI,QACN,EAEMC,GAAS,CACb,GAAI,OACJ,GAAI,QACN,EAEMC,GAA4B9U,EAAO2T,GAAiB,CACxD,EAAG,KACH,SAAU,CACR,eAAgB,CACd,GAAI,CAAA,EACJ,GAAI,CACF,GAAI,KACN,CACF,CACF,CACF,CAAC,EAOYoB,GACXjL,GACgB,CAChB,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,EAAiB,EAE5BY,EAAY7S,EAAM,QACtB,IAAM0B,EAA6BQ,EAAOC,GAAMuQ,GAAYvQ,EAAE,EAC9D,CAACD,CAAI,CACP,EAEMoS,EAAQtU,EAAM,QAClB,IAAM0B,EAA6BQ,EAAOC,GAAM+R,GAAQ/R,EAAE,EAC1D,CAACD,CAAI,CACP,EAEMqS,EAAOvU,EAAM,QACjB,IAAM0B,EAA6BQ,EAAOC,GAAMgS,GAAOhS,EAAE,EACzD,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAACoU,GAAA,CACC,UAAWvB,EACX,MAAOyB,EACP,eAAgBpS,EAChB,IAAK,EACL,KAAMqS,EACL,GAAGnL,CAAAA,CACN,CAEJ,EAEAiL,GAAoB,YAAc,sBClElC,MAAMG,GAA0BlV,EAAOwJ,EAAM,CAC3C,MAAO,MACT,CAAC,EAEY2L,GACXrL,GACGpJ,EAAA,cAACwU,GAAA,CAAwB,MAAM,SAAS,IAAK,EAAI,GAAGpL,CAAO,CAAA,EAEhEqL,GAAkB,YAAc,oBCJhC,MAAMnB,GAAgBhU,EAAO2H,EAAY,CACvC,SAAU,CACR,SAAU,CACR,KAAM,CACJ,MAAO,kBACT,CACF,EACA,cAAe,CACb,GAAI,CAAE,SAAU,WAAY,IAAK,KAAM,MAAO,IAAK,EACnD,GAAI,CAAE,SAAU,QAAS,CAC3B,CACF,CACF,CAAC,EAOYyN,GAAoB,CAAC,CAChC,MAAArO,EAAQ,aACLnC,CACL,IAA4C,CAC1C,KAAM,CAAE,KAAAhC,EAAM,cAAAkQ,EAAe,SAAAzB,CAAS,EAAIsB,IAE1C,OAAAjS,EAAM,UAAU,KACdoS,EAAc,EAAI,EACX,IAAM,CACXA,EAAc,EAAK,CACrB,GACC,CAACA,CAAa,CAAC,EAGhBpS,EAAA,cAACqS,GAAO,QAAP,CAAe,QAAO,EACrBrS,EAAAA,EAAA,cAACsT,GAAA,CACC,MAAOjN,EACP,KAAK,KACL,WAAY,GACZ,UAAS,GACT,MAAM,UACN,cAAenE,EACf,SAAUyO,EACT,GAAGzM,CAEJlE,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAIkP,OAAAA,CAAO,CACnB,CACF,CAEJ,EAEAiB,GAAkB,YAAc,oBCpDhC,MAAMvB,GAAY7T,EAAOO,EAAK,CAC5B,SAAU,SACV,aAAc,SACd,UAAW,aACX,WAAY,EACZ,SAAU,CACR,KAAM,CACJ,GAAI,CACF,KAAM,IACR,EACA,GAAI,CACF,KAAM,IACR,CACF,CACF,CACF,CAAC,EAEK6M,GAAcpN,EAAOqN,GAAO,CAChC,SAAU,OACV,KAAM,OACN,UAAW,OACb,CAAC,EAEYgI,GAAmBvL,GAA8C,CAC5E,KAAM,CAAE,KAAAlH,CAAK,EAAI+P,EAEjB,EAAA,OACEjS,EAAA,cAACmT,GAAA,CAAU,KAAMjR,CAAAA,EACflC,EAAA,cAAC0M,GAAA,CAAa,GAAGtD,CAAAA,CAAO,CAC1B,CAEJ,EAEAuL,GAAgB,YAAc,kBClC9B,MAAMrK,GAAahL,EAAOiL,EAAM,CAC9B,MAAO,8BACP,SAAU,CACR,cAAe,CACb,GAAI,CAAA,EACJ,GAAI,CAAA,CACN,EACA,WAAY,CACV,KAAM,CACR,CAAA,CACF,EACA,iBAAkB,CAChB,CACE,cAAe,KACf,WAAY,GACZ,IAAK,CACH,GAAI,IACN,CACF,CACF,CACF,CAAC,EAEYqK,GAAkBxL,GAA6C,CAC1E,KAAM,CAAE,KAAAlH,EAAM,WAAAiQ,CAAW,EAAIF,EAE7B,EAAA,OACEjS,EAAA,cAACsK,GAAA,CACC,KAAK,KACL,OAAO,OACP,cAAepI,EACf,WAAYiQ,EACZ,UAAS,GACR,GAAG/I,EACN,CAEJ,EAEAwL,GAAe,YAAc,iBChC7B,MAAMC,GAAsB,CAAC,CAC3B,YAAAhQ,EACA,KAAA3C,EACA,SAAAyO,EACA,UAAAW,KACGpN,CACL,IAEElE,EAAA,cAACqS,GAAA,CAAO,KAAMnQ,EAAM,SAAUyO,GAC5B3Q,EAAA,cAACqU,GAAA,CACC,YAAaxP,EACb,UAAWyM,EACV,GAAGpN,CACN,CAAA,CACF,EAGW4Q,GAAa,OAAO,OAAOD,GAAqB,CAC3D,QAASJ,GACT,KAAMG,GACN,MAAOD,GACP,OAAQV,GACR,QAASS,GACT,QAASV,EACX,CAAC,EAEDa,GAAoB,YAAc,aC5BlC,MAAME,GAAe,CACnB,WAAY,SACZ,GAAI,QACJ,OAAQ,QACR,MAAO,cACP,OAAQ,UACR,QAAS,OACT,eAAgB,SAChB,EAAG,QACH,KAAM,KACN,IAAK,MACL,UAAW,mBACX,WAAY,0BACZ,UAAW,CACT,MAAO,aACT,EACA,WAAY,CACV,MAAO,cACT,EACA,aAAc,CACZ,MAAO,UACT,CACF,EAEMC,GAAmB1V,EAAO2V,GAAAA,WAAgBF,EAAY,EAEtDG,GAAmB5V,EAAO6V,GAAAA,WAAgBJ,EAAY,EAE/CK,GAAyBhM,GACpCpJ,EAAA,cAACgV,GAAA,CAAkB,GAAG5L,CACpBpJ,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAI8Q,EAAAA,WAAAA,CAAa,CACzB,EAEWC,GAAqBlM,GAChCpJ,EAAA,cAACkV,GAAA,CAAkB,GAAG9L,CACpBpJ,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAIgR,EAAAA,YAAAA,CAAc,CAC1B,EC1CWC,GAAqBlW,EAAOmW,GAAU,SAAA,CACjD,eAAgB,SAChB,WAAY,CACV,GAAI,WACJ,OAAQ,OACR,aAAc,MACd,OAAQ,UACR,GAAI,KACJ,EAAG,KACH,KAAM,WACN,WAAY,oBACZ,uBAAwB,CACtB,GAAI,aACN,EACA,mBAAoB,CAClB,GAAI,aACN,CACF,CACF,CAAC,EChBKC,GAAcpW,EAAOqW,GAAAA,MAAW,CAAE,CAAA,EAE3BC,GAAgB,CAAC,CAC5B,SAAA7V,KACG2C,CACL,IACE1C,EAAA,cAAC0V,GAAA,CAAa,GAAGhT,EAAgB,IAAI,OAEnC1C,EAAA,cAACH,EAAA,CAAI,IAAK,CAAE,GAAI,IAAK,CAAIE,EAAAA,CAAS,CACpC,ECXW8V,GAAiBvW,EAAOwW,GAAAA,OAAY,CAC/C,OAAQ,OACR,GAAI,MACJ,SAAU,SACV,UAAW,mBACX,2BAA4B,CAC1B,EAAG,QACH,EAAG,QACH,WAAY,8CACd,EACA,sBAAuB,CACrB,MAAO,OACP,GAAI,cACN,EACA,0BAA2B,CACzB,QAAS,OACT,eAAgB,QAClB,EACA,SAAU,CACR,SAAU,CACR,KAAM,CACJ,SAAU,SACZ,CACF,CACF,CACF,CAAC,ECbYC,GAAoB,CAAC,CAChC,SAAAhW,EACA,IAAAd,EACA,YAAA+W,EACA,WAAAC,EACA,UAAAC,KACG9M,CACL,IAMEpJ,EAAA,cAACF,GAAA,CAAW,IAAKb,GACfe,EAAA,cAACmW,GAAAA,iBAAA,CACC,kBAAmBF,EACnB,mBAAoBD,EACpB,YAAaE,EACZ,GAAG9M,GAEHrJ,CACH,CACF,EAOWqW,GAAc,IAAMpW,EAAM,WAAWqW,GAAe,eAAA,EAEpDC,GAAW,OAAO,OAAOP,GAAmB,CACvD,UAAWT,GACX,cAAeF,GACf,WAAYI,GACZ,MAAOI,GACP,OAAQC,EACV,CAAC,EAEDE,GAAkB,YAAc,WC7ChC,MAAMQ,GAAkBjX,EAAOkX,GAAc,UAAW,CACtD,SAAU,WACV,IAAK,MACL,KAAM,MACN,UAAW,mCACb,CAAC,EAEKC,GAAiBnX,EAAOkX,GAAc,KAAM,CAChD,WAAY,OACZ,SAAU,WACV,gBAAiB,cACjB,OAAQ,4BACR,aAAc,MACd,MAAO,QACP,OAAQ,UACR,KAAM,KACN,EAAG,EACH,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,WAAY,oBACZ,WAAY,EACZ,0BAA2B,CACzB,gBAAiB,cACjB,YAAa,aACf,EACA,gCAAiC,CAC/B,gBAAiB,cACjB,YAAa,aACf,EACA,UAAW,CACT,QAAS,wBACT,cAAe,KACjB,EACA,cAAepU,EACf,SAAU,CACR,MAAO,CACL,MAAO,CACL,YAAa,SACf,CACF,EACA,KAAM,CACJ,GAAI,CACF,KAAM,IACR,EACA,GAAI,CACF,KAAM,KACN,GAAI,KACN,CACF,CACF,CACF,CAAC,EAEKJ,GAAa,CACjB,GAAI,KACJ,GAAI,IACN,EAEa0U,GAET1W,EAAM,WAAW,CAAC,CAAE,KAAAkC,EAAO,KAAM,QAAAyU,KAAYzS,CAAK,EAAGC,IAAQ,CAC/D,MAAMsI,EAAWzM,EAAM,QACrB,IAAM0B,EAA6BQ,EAAOC,GAAMH,GAAWG,EAAE,EAC7D,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAACyW,GAAA,CAAe,IAAKtS,EAAK,QAASwS,EAAS,KAAMzU,EAAO,GAAGgC,CAC1DlE,EAAAA,EAAA,cAACuW,GAAA,CAAgB,QAAO,EAAA,EACtBvW,EAAA,cAACuE,EAAA,CACC,GAAIoS,IAAY,gBAAkBC,EAAAA,MAAQC,EAC1C,GAAA,IAAK,CACH,YAAa,GACf,EACA,KAAMpK,CACR,CAAA,CACF,CACF,CAEJ,CAAC,EAEDiK,GAAS,YAAc,WC/EV,MAAAI,GACX9W,EAAM,cAAgD,CACpD,QAAS,CAAA,EACT,wBAAyB,IAAM,IACjC,CAAC,EAEU+W,GAAgC3N,GAAU,CACrD,KAAM,CAAE,wBAAyB4N,CAAwC,EACvEhX,EAAM,WAAW8W,EAA2B,EAExC,CAACG,EAASC,CAAU,EAAIlX,EAAM,SAAmC,CAAE,CAAA,EACnEmX,EAA0BnX,EAAM,YACpC,CAACoX,EAAgBC,IAAc,CAC7BL,GAAA,MAAAA,EAA0CI,EAAgBC,CAC1DH,EAAAA,EAAYI,GAAgB,CAC1B,MAAMC,EAAgB,IAAI,IAAID,CAAW,EACzC,OAAAF,EACIG,EAAc,IAAIF,CAAS,EAC3BE,EAAc,OAAOF,CAAS,EACf,MAAM,KAAKE,CAAa,CAE7C,CAAC,CACH,EACA,CAACP,CAAuC,CAC1C,EAEMtY,EAAQsB,EAAM,QAClB,KAAO,CAAE,QAAAiX,EAAS,wBAAAE,CAAwB,GAC1C,CAACF,EAASE,CAAuB,CACnC,EAEA,OAAOnX,EAAA,cAAC8W,GAA4B,SAA5B,CAAqC,MAAOpY,EAAQ,GAAG0K,CAAAA,CAAO,CACxE,ECxBaoO,GACXxX,EAAM,cAAgD,CACpD,QAAS,CAAA,EACT,wBAAyB,IAAM,IACjC,CAAC,EAEGyX,GACJC,GAEO,CAACC,EAAgBN,IAAc,CACpC,MAAMO,EAAgB,IAAI,IAAIF,CAAc,EAC5C,OAAAC,EACIC,EAAc,IAAIP,CAAS,EAC3BO,EAAc,OAAOP,CAAS,EACf,MAAM,KAAKO,CAAa,CAE7C,EAGWC,GAA+B,CAAC,CAC3C,QAASC,EACT,eAAAC,EAAiB,CAAC,EAClB,gBAAAC,KACG9T,CACL,IAAiE,CAC/D,KAAM,CAACyS,EAASsB,CAAU,EAAIjY,EAAM,SAAS+X,CAAc,EAErDG,EAAoClY,EAAM,YAC9C,CAAC2X,EAAgBN,IAAc,CAC7B,GAAI,CAACS,EAAmB,MAAO,IAAM,KAErC,MAAMK,EADeV,GAAqBK,CAAiB,EAC3BH,EAAgBN,CAAS,EACzDW,GAAA,MAAAA,EAAkBG,EACpB,EACA,CAACH,EAAiBF,CAAiB,CACrC,EAEMM,EAA0BpY,EAAM,YACpC,CAAC2X,EAAgBN,IAAc,CAC7BY,EAAYI,GAAgB,CAE1B,MAAMF,EADeV,GAAqBY,CAAW,EACrBV,EAAgBN,CAAS,EACzD,OAAAW,GAAA,MAAAA,EAAkBG,CAAAA,EACXA,CACT,CAAC,CACH,EACA,CAACH,CAAe,CAClB,EAEMtZ,EAAQsB,EAAM,QAA0C,IAAM,CAClE,MAAMyR,EAAe,MAAM,QAAQqG,CAAiB,EACpD,MAAO,CACL,QAASrG,EACJqG,EACDnB,EACJ,wBAAyBlF,EACrByG,EACAE,CACN,CACF,EAAG,CACDzB,EACAyB,EACAF,EACAJ,CACF,CAAC,EAED,OAAO9X,EAAA,cAACwX,GAA4B,SAA5B,CAAqC,MAAO9Y,EAAQ,GAAGwF,EAAM,CACvE,EC1EaoU,GAAuB,CAAC,CACnC,gBAAAN,EACA,MAAAjN,EAAQ,SACL7G,CACL,IAA8C,CAC5C,KAAM,CACJ,QAASqU,EACT,wBAAyBC,CAC3B,EAAIxY,EAAM,WAAWwX,EAA2B,EAC1C,CAAE,QAASiB,CAAa,EAAIzY,EAAM,WACtC8W,EACF,EAEMsB,EAA2BD,GAAe,CAC9CM,EAAa,QAAS/Z,GAAU,CAC9B8Z,EAA+BL,EAAYzZ,CAAK,CAClD,CAAC,EACDsZ,GAAA,MAAAA,EAAkBG,CAAAA,CACpB,EAEMO,GAAgB,IAChB,CAACH,EAAa,QAAU,CAACE,EAAa,OAAe,GAErDA,EAAa,MAAOE,GAAgBJ,EAAa,SAASI,CAAW,CAAC,EACjE,GAELF,EAAa,KAAME,GAAgBJ,EAAa,SAASI,CAAW,CAAC,EAChE,gBAEF,IAGT,EAAA,OACE3Y,EAAA,cAAC0W,GAAA,CACC,gBAAiB0B,EACjB,QAASM,EACT,MAAO3N,EACN,GAAG7G,CAAAA,CACN,CAEJ,ECtCa0U,GAAoB,CAAC,CAChC,MAAAla,EACA,MAAAqM,EACA,gBAAAiN,KACG9T,CACL,IAA2C,CACzC,KAAM,CACJ,QAASqU,EACT,wBAAyBC,CAC3B,EAAIxY,EAAM,WAAWwX,EAA2B,EAC1C,CAAE,wBAAAL,CAAwB,EAAInX,EAAM,WACxC8W,EACF,EAEMsB,EAA2BD,GAAe,CAC9CK,EAA+BL,EAAYzZ,CAAK,EAChDsZ,GAAA,MAAAA,EAAkBG,EACpB,EAEA,OAAAnY,EAAM,UAAU,KACdmX,EAAwB,GAAMzY,CAAK,EAC5B,IAAM,CACXyY,EAAwB,GAAOzY,CAAK,CACtC,GACC,CAACyY,EAAyBzY,CAAK,CAAC,EAGjCsB,EAAA,cAAC0W,GAAA,CACC,gBAAiB0B,EACjB,QAASG,EAAa,SAAS7Z,CAAK,EACpC,MAAOqM,GAAA,KAAAA,EAAS,OAAOrM,CAAK,EAC3B,GAAGwF,CAAAA,CACN,CAEJ,ECtCM2U,GAAavZ,EAAO+E,OAAI,EAEjByU,GAAmB,CAAC,CAC/B,QAAA7U,EAAU,MACPC,CACL,IAIIlE,EAAA,cAAC+W,GAAA,KACC/W,EAAA,cAJciE,EAAU4U,GAAahZ,EAIpC,CAAW,GAAGqE,EAAM,CACvB,ECGE2U,GAAavZ,EAAO+E,OAAI,EAExB0U,GAAoB,CAAC,CACzB,QAAApC,EACA,eAAAoB,EACA,gBAAAC,EACA,QAAA/T,EAAU,MACPC,CACL,IAIIlE,EAAA,cAAC6X,GAAA,CACC,QAASlB,EACT,eAAgBoB,EAChB,gBAAiBC,CAAAA,EAEjBhY,EAAA,cAAC+W,GAAA,KACC/W,EAAA,cATYiE,EAAU4U,GAAahZ,EASlC,CAAW,GAAGqE,EAAM,CACvB,CACF,EAIS8U,GAAgB,OAAO,OAAOD,GAAmB,CAC5D,KAAMH,GACN,QAASN,GACT,IAAKQ,EACP,CAAC,EC9CKG,GAAqB3Z,EAAOwJ,EAAM,CACtC,sBAAuB,CACrB,GAAI,IACN,CACF,CAAC,EAEYoQ,GAAelZ,EAAM,WAChC,CACEoJ,EACAjF,IAGEnE,EAAA,cAACiZ,GAAA,CACC,GAAG,KACH,IAAK,EACL,MAAM,SACL,GAAG7P,EAGJ,IAAKjF,EACL,KAAK,UAAA,CACP,CAGN,ECnBagV,GACXnZ,EAAM,cAA2C,CAAE,CAAA,EAC/CoZ,GAA0B,CAAC,CAAE,SAAArZ,CAAS,IAAM,CAChD,KAAM,CAACsZ,EAAYC,CAAa,EAAI7L,GACpC,EAAA,OACEzN,EAAA,cAACmZ,GAAuB,SAAvB,CAAgC,MAAO,CAAE,WAAAE,EAAY,cAAAC,CAAc,GACjEvZ,CACH,CAEJ,EAEMwZ,GAAgCja,EAAO2F,GAAAA,KAAM,CACjD,MAAO,MACT,CAAC,EAIYuU,GAAkBxZ,EAAM,WACnC,CACEoJ,EACAjF,IAGEnE,EAAA,cAACkZ,GAAA,CAAa,IAAK/U,GACjBnE,EAAA,cAACoZ,GAAA,KACCpZ,EAAA,cAACuZ,GAAA,CAA+B,GAAGnQ,CAAO,CAAA,CAC5C,CACF,CAGN,ECrCMqQ,GAAana,EAAOwJ,EAAM,CAC9B,MAAO,OACP,EAAG,EACH,EAAG,EACH,UAAW,OACX,MAAO,CACL,GAAI,UACN,CACF,CAAC,EAIY4Q,GACX1Z,EAAM,WAAW,CAACoJ,EAAOjF,IAGvBnE,EAAA,cAACyZ,GAAA,CAAW,GAAG,KAAK,IAAKtV,EAAM,GAAGiF,EAAO,UAAU,QAAA,CAAS,CAC7D,ECdGuQ,GAA+Bra,EAAOkD,GAAAA,QAAS,CACnD,uBAAwB,CAAA,EACxB,yBAA0B,CACxB,QAAS,MACX,CACF,CAAC,EAOYoX,GACX5Z,EAAM,QAAA,WAAW,CAAC,CAAE,SAAAD,KAAamE,CAAK,EAAGC,IAAqB,CAC5D,KAAM,CAAE,WAAAkV,CAAW,EAAIrZ,UAAM,WAAWmZ,EAAsB,EAY9D,OACEnZ,EAAAA,QAAA,cAAC2Z,GAAA,CACC,UAZqBpO,GAAM,CACzB,EAAC8N,GAAA,MAAAA,EAAY,UACb9N,EAAE,MAAQ,WACZA,EAAE,gBACFA,EAAAA,EAAE,eAAe,EACjB8N,EAAW,QAAQ,MAAA,EACnBA,EAAW,QAAQ,QAEvB,EAKK,GAAGnV,EACJ,QAAO,EAAA,EAEPlE,EAAAA,QAAA,cAAC0Z,GAAA,CAAS,IAAKvV,EAAK,KAAK,OACtBpE,EAAAA,CACH,CACF,CAEJ,CAAC,ECxCG8Z,GAAiBva,EAAOiF,EAAM,CAClC,WAAY,EACZ,UAAW,QACX,GAAI,IACN,CAAC,EACYuV,GACX1Q,GACgBpJ,EAAA,cAAC6Z,GAAA,CAAe,KAAK,KAAM,GAAGzQ,CAAO,CAAA,ECLjD2Q,GAAiBza,EAAO,WAAW,CACvC,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEzP,EAAM,CACP,GAAI,KACJ,WAAY,SACZ,UAAW,SACX,aAAc,UAChB,CAAC,EAEY0P,GAAY7Q,GAChBpJ,EAAAA,QAAA,cAAC+Z,GAAA,CAAe,KAAK,KAAK,GAAG,OAAQ,GAAG3Q,EAAO,UAAS,EAAC,CAAA,ECR5D8Q,GAAoB5a,EAAOwJ,EAAM,CACrC,MAAO,OACP,SAAU,WACV,UAAW,KACX,GAAI,IACN,CAAC,EAIYqR,GAAkBna,EAAM,WACnC,CACE,CAAE,SAAAD,KAAamE,CAAK,EACpBC,IAGEnE,EAAA,cAACka,GAAA,CAAkB,IAAK,EAAG,MAAM,SAAS,IAAK/V,EAAM,GAAGD,GAEpDlE,EAAM,SAAS,IAAID,EAAWwH,GACxB,OAAOA,GAAU,UAAY,OAAOA,GAAU,SACzCvH,EAAA,cAACia,GAAA,KAAU1S,CAAM,EAEtBvH,EAAM,eAAeuH,CAAK,GAAKA,EAAM,OAAShD,EACzCvE,EAAA,cAAC8Z,GAAA,CAAU,GAAGvS,EAAM,KAAO,CAAA,EAE7BA,CACR,CAEL,CAGN,EC5BM6S,GAA+B9a,EAAO6a,GAAiB,CAC3D,OAAQ,SACV,CAAC,EAEKE,GAAmB/a,EAAO2H,EAAY,CAC1C,SAAU,WACV,KAAM,EACN,IAAK,EACL,cAAe,OACf,CAAC,GAAG3C,MAAe,CACjB,WAAY,iBACd,EACA,CAAC,4BAA4BA,MAAe,CAC1C,UAAW,gBACb,EACA,CAAC,0BAA0BA,MAAe,CACxC,UAAW,cACb,CACF,CAAC,EAQYgW,GAAyB,CAAC,CACrC,SAAAva,EACA,MAAAsG,KACGnC,CACL,IAA8C,CAC5C,KAAM,CAAE,cAAAoV,EAAe,WAAAD,CAAW,EAAIrZ,EAAM,QAAA,WAAWmZ,EAAsB,EAE7E,OACEnZ,UAAA,cAACoa,GAAA,CACE,GAAGlW,EACJ,QAAUqW,GAAU,CA/C1B,IAAAC,EAAAC,GAgDQD,EAAAtW,EAAK,UAAL,MAAAsW,EAAA,KAAAtW,EAAeqW,CACfE,GAAAA,EAAApB,GAAA,KAAAA,OAAAA,EAAY,UAAZ,MAAAoB,EAAqB,MACvB,CAAA,CAAA,EAEAza,EAAAA,QAAA,cAAC2E,GAAAA,QAAA,CAAQ,QAAO,EACd3E,EAAAA,EAAAA,QAAA,cAACqa,GAAA,CACC,KAAK,KACL,IAAKf,EACL,MAAOjT,EACP,MAAM,UACN,WAAY,GACZ,QAAUkF,GAAoBA,EAAE,gBAEhCvL,CAAAA,EAAAA,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAIQ,EAAAA,WAAAA,CAAa,CACzB,CACF,EACChF,CACH,CAEJ,EC5Da2a,GAAW,CAAC,CAAE,SAAA3a,KAAamE,CAAK,IAEzClE,EAAAA,QAAA,cAACkZ,GAAA,KACClZ,EAAA,QAAA,cAACma,GAAA,CAAiB,GAAGjW,CAAAA,EAAOnE,CAAS,CACvC,ECCEiF,GAAa1F,EAAOoa,GAAU,CAAE,CAAA,EAIzBiB,GACX3a,EAAAA,QAAM,WAAW,CAAC,CAAE,SAAAD,KAAamE,CAAK,EAAGC,IAErCnE,EAAAA,QAAA,cAACgF,GAAA,CAAY,GAAGd,EAAM,IAAKC,EAAK,KAAK,MAAA,EAClCpE,CACH,CAEH,EAEU6a,GAAO,OAAO,OAAOD,GAAU,CAC1C,YAAanB,GACb,mBAAoBI,GACpB,mBAAoBU,GACpB,KAAMI,GACN,KAAMZ,GACN,KAAMG,EACR,CAAC,ECrBYY,GAA0B,CAAC,CACtC,SAAA9a,KACGmE,CACL,IAEIlE,UAAA,cAACgZ,GAAc,IAAd,CAAkB,QAAO,EAAA,EACxBhZ,EAAA,QAAA,cAAC4a,GAAK,YAAL,CAAkB,GAAG1W,CAAAA,EAAOnE,CAAS,CACxC,ECRS+a,GAAiC,CAAC,CAC7C,SAAA/a,KACGmE,CACL,IAEIlE,EAAAA,QAAA,cAACgZ,GAAc,IAAd,CAAkB,QAAO,IACxBhZ,EAAA,QAAA,cAAC4a,GAAK,mBAAL,CAAyB,GAAG1W,EAAM,WAAU,EAAA,EAC1CnE,CACH,CACF,ECZEma,GAAoB5a,EAAOwJ,EAAM,CACrC,SAAU,MACZ,CAAC,EAIYiS,GAA0B,CAAC,CACtC,SAAAhb,KACGmE,CACL,IAIIlE,EAAA,cAACka,GAAA,CAAkB,IAAK,EAAG,MAAM,SAAS,GAAG,QAAS,GAAGhW,CAErDlE,EAAAA,EAAM,SAAS,IAAID,EAAWwH,GACxB,OAAOA,GAAU,UAAY,OAAOA,GAAU,SACzCvH,EAAA,cAAC4a,GAAK,KAAL,KAAWrT,CAAM,EAEvBvH,EAAM,eAAeuH,CAAK,GAAKA,EAAM,OAAShD,EACzCvE,EAAA,cAAC4a,GAAK,KAAL,CAAW,GAAGrT,EAAM,KAAO,CAAA,EAE9BA,CACR,CAEL,ECpBSyT,GAAiC,CAAC,CAC7C,gBAAAhD,EACA,MAAAjN,EACA,MAAA1E,EACA,SAAAtG,EACA,SAAAqH,KACGlD,CACL,IAAyD,CACvD,MAAM+W,EAA8B,CAAE,MAAA5U,CAAM,EACtC6U,EAAuB,CAAE,gBAAAlD,EAAiB,MAAAjN,EAAO,SAAA3D,CAAS,EAChE,OACEpH,UAAA,cAAC4a,GAAK,mBAAL,CAAyB,GAAGK,EAA8B,GAAG/W,CAC5DlE,EAAAA,EAAAA,QAAA,cAAC+a,GAAA,CACC,QAEGxP,GAAMA,EAAE,gBAAA,GAGXvL,EAAAA,QAAA,cAACgZ,GAAc,QAAd,CAAuB,GAAGkC,CAAAA,CAAsB,EAChDnb,CACH,CACF,CAEJ,ECvBaob,GAAmB,CAAC,CAC/B,MAAAzc,EACA,MAAAqM,EACA,gBAAAiN,EACA,SAAAjY,EACA,SAAAqH,KACGlD,CACL,IAA0C,CACxC,MAAMkX,EAAoB,CAAE,MAAA1c,EAAO,MAAAqM,EAAO,gBAAAiN,EAAiB,SAAA5Q,CAAS,EACpE,OACEpH,EAAAA,QAAA,cAAC4a,GAAK,KAAL,CAAW,GAAG1W,CAAAA,EACblE,UAAA,cAAC+a,GAAA,KACC/a,EAAAA,QAAA,cAACgZ,GAAc,KAAd,CAAoB,GAAGoC,CAAAA,CAAmB,EAC1Crb,CACH,CACF,CAEJ,ECdasb,GAAmB,CAAC,CAC/B,QAAA1E,EACA,eAAAoB,EACA,gBAAAC,KACG9T,CACL,IAGIlE,EAAAA,QAAA,cAACgZ,GAAA,CAF0B,QAAArC,EAAS,eAAAoB,EAAgB,gBAAAC,EAEb,QAAO,EAAA,EAC5ChY,UAAA,cAAC4a,GAAA,CAAM,GAAG1W,EAAM,CAClB,EAISoX,GAAe,OAAO,OAAOD,GAAkB,CAC1D,YAAaR,GACb,mBAAoBC,GACpB,mBAAoBE,GACpB,KAAMG,EACR,CAAC,EC3BYI,GAAyD,CACpE,QAAS,CAAE,MAAO,UAAW,EAC7B,QAAS,CAAE,MAAO,eAAgB,QAAS,CAAE,MAAO,cAAe,CAAE,EACrE,KAAM,CAAE,MAAO,OAAQ,EACvB,QAAS,CAAE,MAAO,UAAW,EAC7B,MAAO,CAAE,MAAO,SAAU,CAC5B,EAEaC,GAGT,CACF,QAAS5Q,EAAAA,SACT,QAASD,EACT,OAAA,KAAMD,EAAAA,KACN,QAASA,EACT,KAAA,MAAO+Q,OACT,ECXMC,GAAyBpc,EAAOwJ,EAAM,CAC1C,SAAU,CACR,MAAOyS,EACT,CACF,CAAC,EASYI,GAAgB,CAAC,CAC5B,IAAA1c,EACA,SAAA2c,EAAW,GACX,MAAArc,EAAQ,QACR,KAAA2C,EAAO,KACP,SAAAnC,KACGmE,CACL,IACElE,EAAA,cAAC0b,GAAA,CAAuB,MAAOnc,EAAO,IAAKN,EAAM,GAAGiF,CAAAA,EACjD0X,GACC5b,EAAA,cAACuE,EAAA,CACC,IAAK,CAAE,GAAI,IAAK,EAChB,KAAK,KACL,GAAIiX,GAAqBjc,EAC3B,CAAA,EAEFS,EAAA,cAACuK,EAAA,CAAK,GAAG,OAAO,KAAMrI,EAAM,IAAK,CAAE,UAAW,sBAAuB,CAClEnC,EAAAA,CACH,CACF,ECtCI8b,GAAcvc,EAAO,QAAS,CAClC,MAAO,WACP,WAAY,QACZ,EAAG,EACH,SAAU,CACR,KAAM,CACJ,GAAI8K,GAAe,CAAE,KAAM,IAAK,CAAC,EACjC,GAAIA,GAAe,CAAE,KAAM,IAAK,CAAC,CACnC,EACA,KAAM,CACJ,MAAO,CACL,QAAS,QACT,WAAY,GACd,EACA,OAAQ,CACN,QAAS,OACT,WAAY,IACZ,SAAU,aACZ,CACF,EACA,MAAO,CAAE,MAAO,GAAI,OAAQ,CAAA,CAAG,EAC/B,UAAW,CAAE,QAAS,CAAA,EAAI,IAAK,EAAG,EAClC,WAAY,CAAE,SAAU,CAAC,EAAG,OAAQ,CAAA,CAAG,CACzC,EACA,iBAAkB,CAChB,CACE,KAAM,SACN,MAAO,QACP,IAAK,CAAE,WAAY,YAAa,CAClC,EACA,CACE,KAAM,SACN,MAAO,SACP,IAAK,CAAE,WAAY,QAAS,CAC9B,EACA,CACE,KAAM,SACN,UAAW,UACX,IAAK,CAAE,cAAe,aAAc,CACtC,EACA,CACE,KAAM,SACN,UAAW,MACX,IAAK,CAAE,cAAe,KAAM,CAC9B,EACA,CACE,KAAM,QACN,WAAY,SACZ,IAAK,CAAE,WAAY,GAAI,CACzB,CACF,CACF,CAAC,EAEK0R,GAAiBxc,EAAO,OAAQ,CACpC,MAAO,UACP,GAAI,KACJ,WAAY,GACd,CAAC,EAUYyc,GAAQ,CAAC,CACpB,MAAAzH,EAAQ,QACR,GAAAzK,EAAK,QACL,UAAAgJ,EAAY,MACZ,KAAA3Q,EAAO,KACP,KAAAiD,EAAO,QACP,SAAApF,EACA,SAAAic,KACG9X,CACL,IACElE,EAAA,cAAC6b,GAAA,CACC,GAAIhS,EACJ,KAAM3H,EACN,KAAMiD,EACN,MAAOmP,EACP,UAAWzB,EACV,GAAG3O,CAAAA,EAEHnE,EACAic,GAAYhc,EAAA,cAAC8b,GAAA,CAAe,cAAW,IAAC,GAAC,CAC5C,EAGFC,GAAM,YAAc,QC3Fb,MAAME,GAAW3c,EAAO,KAAM,CAAA,CAAE,EAE1Bma,GAAana,EAAO,KAAM,CACrC,kBAAmB,SACnB,WAAY,QACZ,EAAG,QACH,EAAG,QACH,CAAC,OAAO2c,MAAa,CACnB,qBAAsB,CAAE,GAAI,IAAK,EACjC,eAAgB,CAAE,GAAI,CAAE,CAC1B,EACA,SAAU,CACR,GAAG9R,GACH,GAAI,CACF,GAAI,CACF,GAAI,KACJ,cAAe,UACf,CAAC,OAAO8R,MAAa,CACnB,GAAI,KACJ,YAAa,CAAE,SAAU,SAAU,WAAY,MAAO,CACxD,CACF,EACA,GAAI,CACF,GAAI,KACJ,CAAC,OAAOA,MAAa,CACnB,GAAI,KACJ,YAAa,CAAE,QAAS,UAAM,WAAY,MAAO,CACnD,CACF,CACF,EACA,MAAO,CACL,QAAS,CACP,CAAC,OAAOA,MAAa,CACnB,YAAa,CAAE,MAAO,aAAc,CACtC,CACF,CACF,CACF,CACF,CAAC,EAUYC,GAAOlc,EAAM,WACxB,CAAC,CAAE,KAAAkC,EAAO,KAAM,UAAAmI,EAAY,GAAM,QAAA8R,KAAYzZ,CAAe,EAAGyB,IAC9DnE,EAAA,cAACyZ,GAAA,CACC,IAAKtV,EACL,GAAIgY,EAAU,KAAO,KACrB,KAAMja,EACN,UAAWmI,EACV,GAAG3H,CAAAA,CACN,CAEJ,EAEAwZ,GAAK,KAAOD,GCvDZ,MAAMG,GAAqB9c,EAAOO,EAAK,CACrC,GAAI,WACJ,aAAc,KACd,MAAO,YACP,WAAY,QACZ,SAAU,MACV,WAAY,IACZ,GAAI,KACJ,EAAG,IACL,CAAC,EAEYwc,GAAe,CAAC,CAAE,KAAAC,CAAK,IAClCtc,EAAA,cAACoc,GAAA,CAAmB,GAAG,KAAOE,EAAAA,EAAK,KAAM,ECb9BC,GAAyBjd,EAAO,KAAM,CAAE,UAAW,QAAS,CAAC,EAE7Dkd,GAAmB,CAAC,CAC/B,KAAAF,EACA,WAAAG,CACF,IAA0B,CAf1B,IAAAjC,EAgBE,OAAAxa,EAAA,cAACuc,GAAA,MACE/B,EAAA8B,EAAK,WAAL,KAAA9B,OAAAA,EAAe,IAAIiC,CACtB,CAAA,CAAA,ECRIC,GAAmBC,GAAgC,CACvD,OAAQA,OAEJ,GAAA,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,MAE9B,GAAA,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,MAE9B,GAAA,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,MAC3B,GACH,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,SAE9B,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,UAE9B,MAAO,CAAE,KAAM,KAAM,GAAI,IAAK,EAEpC,EAEaC,GAAkB,CAAC,CAC9B,KAAAN,EACA,WAAAG,KACGvY,CACL,IAA4B,CA/B5B,IAAAsW,EAgCE,KAAM,CAAE,GAAA3Q,EAAI,KAAA3H,CAAK,EAAIwa,GAAgBJ,EAAK,KAAK,EAE/C,OACEtc,EAAA,cAACiK,GAAA,CAAQ,GAAIJ,EAAI,KAAM3H,EAAO,GAAGgC,CAAAA,GAC9BsW,EAAA8B,EAAK,WAAL,KAAA9B,OAAAA,EAAe,IAAIiC,CAAAA,CACtB,CAEJ,EC5BMI,GAA2Bvd,EAAOO,EAAK,CAC3C,GAAI,WACJ,aAAc,KACd,MAAO,YACP,QAAS,eACT,WAAY,QACZ,SAAU,MACV,EAAG,OACL,CAAC,EAEYid,GAAqB,CAAC,CAAE,KAAAR,CAAK,IACxCtc,EAAA,cAAC6c,GAAA,CAAyB,GAAG,MAAQP,EAAAA,EAAK,KAAM,ECVrCS,GAAgB,CAAC,CAAE,KAAAT,EAAM,IAAArd,CAAI,IAAuB,CAZjE,IAAAub,EAaE,OAAAxa,EAAA,cAAC2M,GAAA,CAAM,IAAK2P,EAAK,IAAK,KAAK9B,EAAA8B,EAAK,MAAL,KAAA9B,EAAY,OAAW,IAAKvb,CAAK,CAAA,CAAA,ECHjD+d,GAAe,CAAC,CAAE,KAAAV,EAAM,WAAAG,CAAW,IAAsB,CAVtE,IAAAjC,EAAAC,EAWE,OAAAza,EAAA,cAACid,GAAA,CAAK,OAAOzC,EAAA8B,EAAK,QAAL,KAAA9B,EAAc,OAAW,KAAM8B,EAAK,MAC9C7B,EAAA6B,EAAK,WAAL,KAAA7B,OAAAA,EAAe,IAAIgC,CACtB,CAAA,CAAA,ECAWS,GAAe,CAAC,CAAE,KAAAZ,EAAM,WAAAG,EAAY,IAAAxd,CAAI,IAAsB,CAb3E,IAAAub,EAcE,OAAAxa,EAAA,cAACkc,GAAA,CACC,IACE,CACE,MAAO,CAAE,QAAS,QAAS,EAC3B,wBAAyB,CAAE,QAAS,MAAO,EAC3C,GAAGjd,CACL,EAEF,QAASqd,EAAK,SAAW,MAExB9B,GAAAA,EAAA8B,EAAK,WAAL,KAAA,OAAA9B,EAAe,IAAIiC,CACtB,CAAA,CAAA,ECfWU,GAAmB,CAAC,CAC/B,KAAAb,EACA,WAAAG,CACF,IAA0B,CAb1B,IAAAjC,EAcE,OAAAxa,EAAA,cAACkc,GAAK,KAAL,MAAW1B,EAAA8B,EAAK,WAAL,KAAA9B,OAAAA,EAAe,IAAIiC,CAAY,CAAA,CAAA,ECJhCW,GAAoB,CAAC,CAChC,KAAAd,EACA,WAAAG,KACGvY,CACL,IAA2B,CAd3B,IAAAsW,EAeE,OAAAxa,EAAA,cAACuK,EAAA,CAAM,GAAGrG,CAAOsW,GAAAA,EAAA8B,EAAK,WAAL,KAAA9B,OAAAA,EAAe,IAAIiC,CAAY,CAAA,CAAA,ECL5CY,GAAuB/d,EAAO,SAAU,CAAE,WAAY,GAAI,CAAC,EAEpDge,GAAiB,CAAC,CAAE,KAAAhB,EAAM,WAAAG,CAAW,IAAwB,CAZ1E,IAAAjC,EAaE,OAAAxa,EAAA,cAACqd,GAAA,MAAsB7C,EAAA8B,EAAK,WAAL,KAAA9B,OAAAA,EAAe,IAAIiC,CAAY,CAAA,CAAA,ECN3Cc,GAAe,CAAC,CAAE,KAAAjB,CAAK,IAClCA,EAAK,MCJMkB,GAAgBle,EAAO,KAAM,CACxC,OAAQ,EACR,GAAI,WACJ,SAAU,CACR,YAAa,CACX,WAAY,CAAE,OAAQ,EAAG,MAAO,MAAO,EACvC,SAAU,CAAE,OAAQ,OAAQ,MAAO,EAAG,UAAW,IAAK,CACxD,CACF,CACF,CAAC,EAEYme,GAETzd,EAAAA,QAAM,WAAW,CAAC,CAAE,YAAA0d,EAAc,gBAAiBxZ,CAAK,EAAGC,IACtDnE,EAAAA,QAAA,cAACwd,GAAA,CAAc,IAAKrZ,EAAK,YAAauZ,EAAc,GAAGxZ,CAAAA,CAAM,CACrE,ECTYyZ,GAAwB,CAAC,CAAE,IAAA1e,CAAI,IAC1Ce,EAAA,cAACyd,GAAA,CAAQ,IAAK,CAAE,MAAO,OAAQ,GAAGxe,CAAI,CAAG,CAAA,ECC9B2e,GAAate,EAAO,IAAK,CACpC,GAAI,QACJ,OAAQ,QACR,EAAG,QACH,MAAO,cACP,OAAQ,UACR,WAAY,QACZ,eAAgB,OAChB,mBAAoB,CAClB,MAAO,cACP,eAAgB,WAClB,EACA,WAAY,CACV,MAAO,cACT,EACA,cAAe,CACb,GAAG8C,EACH,cAAe,MACjB,EAEA,CAAC,GAAGkI,WAAmBN,WAAsBiS,WAAiBM,UAC5D,CACE,SAAU,OACV,WAAY,EACZ,sBAAuB,CACrB,QAAS,MACX,CACF,EACF,SAAUpS,GACV,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EASY8S,GACXjd,EAAM,WAAW,CAAC,CAAE,GAAA6J,EAAI,SAAAzC,EAAU,KAAAD,KAASjD,CAAK,EAAGC,IACjDnE,EAAA,cAAC4d,IACC,GAAI/T,IAAQ1C,EAAkB,OAAX,UACnB,UAAYA,EAAc,OAAP,GACnB,KAAMA,EACL,GAAIC,GAAY,CAAE,SAAU,EAAK,EACjC,GAAGlD,EACH,GAAGuC,GAAuBU,CAAI,EAC/B,IAAKhD,CAAAA,CACP,CACD,EAEH8Y,GAAK,YAAc,OCzDN,MAAAjV,GAAc,CAAC,CAC1B,SAAAjI,EACA,IAAAd,CACF,IACEe,EAAA,cAACuK,EAAA,CAAK,KAAK,KAAK,IAAK,CAAE,MAAO,WAAY,SAAU,OAAQ,GAAGtL,CAAI,GAChEc,CACH,ECgBW8d,GAAe,CAAC,CAC3B,IAAA5e,EACA,SAAAc,EACA,MAAA+d,EACA,QAAAC,EACA,MAAA1X,EACA,OAAA2X,EACA,YAAAhT,EACA,SAAAgR,EACA,UAAAiC,EACA,WAAA/W,CACF,IAAkD,CAChD,MAAMgX,EAAiBD,EAAY5U,GAAe,KAAOP,EAEzD,OACE9I,EAAA,cAACH,EAAA,CAAI,IAAKZ,CAAAA,EACRe,EAAA,cAACke,EAAA,CACC,IAAK,CACH,eAAgB,gBAChB,WAAY,SACZ,GAAI,IACN,CAEAle,EAAAA,EAAA,cAAC+b,GAAA,CAAM,QAASgC,EAAS,SAAU/B,EAAU,WAAY9U,CAAAA,EACtDb,CACH,EACC2X,GACChe,EAAA,cAACid,GAAA,CAAK,KAAMe,GAAA,KAAAA,OAAAA,EAAQ,KAAM,QAASA,GAAA,KAAAA,OAAAA,EAAQ,QAAS,KAAK,IACtDA,EAAAA,EAAO,KACV,CAEJ,EACChT,GACChL,EAAA,cAACgI,GAAA,CAAY,IAAK,CAAE,GAAI,IAAK,CAAIgD,EAAAA,CAAY,EAE9CjL,EACA+d,GAAS9d,EAAA,cAAC2b,GAAA,CAAc,IAAK,CAAE,GAAI,IAAK,GAAImC,CAAM,CACrD,CAEJ,EAEAD,GAAa,YAAc,eClE3B,MAAMM,GAAoB7e,EAAO8e,GAAW,KAAM,CAChD,WAAY,SACZ,WAAY,OACZ,gBAAiB,cACjB,OAAQ,qBACR,aAAc,SACd,MAAO,QACP,OAAQ,UACR,QAAS,OACT,eAAgB,SAChB,EAAG,EACH,KAAM,KACN,SAAU,CACR,KAAM,CACJ,GAAI,CACF,KAAM,IACR,EACA,GAAI,CACF,KAAM,KACN,GAAI,KACN,CACF,CACF,EACA,WAAY,oBACZ,UAAW,CACT,QAAS,wBACT,cAAe,KACjB,EACA,0BAA2B,CACzB,gBAAiB,cACjB,YAAa,aACf,EACA,cAAe,CACb,gBAAiB,WACjB,YAAa,WACb,MAAO,WACP,OAAQ,aACV,CACF,CAAC,EAEK7H,GAAkBjX,EAAO8e,GAAW,UAAW,CACnD,KAAM,MACN,aAAc,SACd,gBAAiB,eACjB,SAAU,WACV,SAAU,CACR,KAAM,CACJ,GAAI,CACF,KAAM,KACR,EACA,GAAI,CACF,KAAM,MACR,CACF,CACF,CACF,CAAC,EAWYC,GAAc,CAAC,CAAE,KAAAnc,KAASkH,CAAM,IAEzCpJ,EAAA,cAACme,GAAA,CAAmB,GAAG/U,EAAO,KAAMlH,GAClClC,EAAA,cAACuW,GAAA,CAAgB,KAAMrU,CAAAA,CAAM,CAC/B,EAIJmc,GAAY,YAAc,oBC5EbC,GAAmBhf,EAAO8e,GAAW,KAAM,CACtD,QAAS,OACT,SAAU,OACV,SAAU,CACR,UAAW,CACT,IAAK,CACH,cAAe,MACf,yBAA0B,CAAE,GAAI,IAAK,CACvC,EACA,OAAQ,CAAE,cAAe,QAAS,CACpC,CACF,CACF,CAAC,EAEDE,GAAiB,YAAc,mBCGlB,MAAAC,GAAqB,CAAC,CACjC,MAAAjK,EAAQ,QACR,SAAAvU,EACA,IAAAd,EACA,YAAA+L,EACA,UAAA6H,EAAY,MACZ,MAAAiL,EACA,MAAAzX,EACA,SAAA2V,CACF,IACEhc,EAAA,cAACH,EAAA,CAAI,IAAKZ,CACRe,EAAAA,EAAA,cAAC+b,GAAA,CACC,MAAOzH,EACP,UAAWzB,EACX,SAAUmJ,EACV,KAAK,QAEJhc,EAAAA,EAAM,SAAS,IAAID,EAAWwH,GAC7BvH,EAAA,cAACH,EAAA,CACC,IAAK,CACH,CAACgT,IAAc,UAAY,KAAO,MAAO,KAEzC,KAAKtL,GAAA,KAAA,OAAAA,EAAO,QAASmP,KAAYnP,GAAA,YAAAA,EAAO,QAAS8W,KAAgB,CAC/D,UAAW,sBACb,CACF,CAAA,EAEC9W,CACH,CACD,EACAlB,CACH,EACCyX,GAAS9d,EAAA,cAAC2b,GAAA,CAAc,IAAK,CAAE,GAAI,IAAK,CAAImC,EAAAA,CAAM,EAClD9S,GACChL,EAAA,cAACgI,GAAA,CACC,IAAK,CACH,GAAI,KAEJ,CAAC6K,IAAc,UAAY,KAAO,MAAO,2BAC3C,CAEC7H,EAAAA,CACH,CAEJ,EAGFuT,GAAmB,YAAc,qBC3DpB,MAAAC,GAAoBxe,EAAM,cAAqC,CAC1E,WAAY,UACd,CAAC,EAEYye,GAAuB,IAAMze,EAAM,WAAWwe,EAAiB,ECItEE,GAAapf,EAAO,OAAQ,CAAE,CAAA,EAiBvBqf,GACXvV,GACG,CACH,KAAM,CACJ,SAAArJ,EACA,cAAA6e,EACA,eAAAC,EAAiB,SACjB,SAAAC,EACA,QAAAC,EACA,WAAA7X,KACGhD,CACL,EAAIkF,EAEE4V,EAAUC,EAAmB,QAAA,CACjC,cAAAL,EACA,KAAMC,CACR,CAAC,EAED,OACE7e,EAAA,cAACkf,eAAA,CAAc,GAAGF,GAChBhf,EAAA,cAACwe,GAAkB,SAAlB,CAA2B,MAAO,CAAE,WAAAtX,CAAW,CAAA,EAC9ClH,EAAA,cAAC0e,GAAA,CACC,aAAW,OACX,SAAUM,EAAQ,aAAaF,EAAUC,CAAO,EAC/C,GAAG7a,CAEH,EAAA,OAAOnE,GAAa,WAAaA,EAASif,CAAO,EAAIjf,CACxD,CACF,CACF,CAEJ,EAEA4e,GAAK,YAAc,aChENQ,GAAiBC,GAAsB,CAHpD,IAAA5E,EAIE,KAAM,CAAE,OAAA6E,CAAO,EAAIC,mBAGbC,EAAYH,EAAU,MAAM,WAAW,EAAE,OAAO,OAAO,EAI7D,MAAO,CACL,OAAO5E,GAHS,IAAMgF,GAAAA,QAAMH,EAAQE,CAAS,GAAA,IAGtC,KAAA/E,OAAAA,EAAa,OACtB,CACF,ECJA,IAAKiF,QACHA,EAAA,GAAK,KACLA,EAAA,IAAM,MAFHA,IAAAA,IAAA,CAKE,CAAA,EAAA,MAAMC,GAAgB,CAAC,CAC5B,IAAAzgB,EACA,MAAAoH,EACA,KAAA9C,EACA,WAAAoc,EACA,YAAA3U,EACA,eAAA+M,EAAiB,GACjB,QAAApB,EACA,gBAAAqB,KACGtV,CACL,IAAwE,CACtE,KAAM,CAAE,QAAAkd,CAAQ,EAAIN,EAAAA,eAAe,EAC7B,CAAE,MAAAxB,CAAM,EAAIqB,GAAc5b,CAAI,EAC9B,CACJ,MAAO,CAAE,IAAAY,EAAK,SAAA0b,EAAU,MAAOC,EAAc,KAAMC,CAAU,CAC/D,EAAIC,EAAAA,cAAc,CAChB,KAAAzc,EACA,QAAAqc,EACA,MAAOD,EACP,aAAc5H,CAChB,CAAC,EAED,OAAA/X,EAAM,UAAU,IAAM,CAEhB,OAAO2W,EAAY,KAAakJ,EAASlJ,CAAO,CACtD,EAAG,CAACA,CAAO,CAAC,EAGV3W,EAAA,cAACue,GAAA,CACC,IAAKtf,EACL,YAAa+L,EACb,MAAO8S,EACP,MAAOzX,EACP,SAAU,QAAQsZ,GAAA,KAAAA,OAAAA,EAAY,QAAQ,CAEtC3f,EAAAA,EAAA,cAAC0W,GAAA,CACC,IAAKvS,EACL,KAAM4b,EACL,GAAGrd,EACJ,gBAAkByV,GAAe,CAC/B0H,EAAS1H,CAAU,EACnBH,GAAA,MAAAA,EAAkBG,EACpB,EACA,MAAO2H,EAAe,KAAmB,MACzC,QAASA,EACR,GAAIhC,GAAS,CAAE,MAAO,OAAQ,CAAA,CACjC,CACF,CAEJ,EAEA4B,GAAc,YAAc,gBCzD5B,MAAMO,GAAkB,CACtB,SAAU,SACV,aAAc,WACd,WAAY,QACd,EACaC,GAAoB5gB,EAAO,OAAQ,CAC9C,QAAS,cACT,WAAY,SACZ,GAAI,KACJ,SAAU,EACV,GAAG2gB,GACH,yBAA0B,CACxB,GAAI,IACN,CACF,CAAC,EAEKje,GAAa,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,EAErCme,GAAY/W,GAA6C,CACpE,MAAMmD,EAAcvM,EAAM,WAAWogB,EAAe,EAC9C,CAAE,KAAAle,CAAK,EAAIqK,EACXE,EAAWzM,EAAM,QACrB,IAAM0B,EAA6BQ,EAAOC,GAAMH,GAAWG,EAAE,EAC7D,CAACD,CAAI,CACP,EACA,OAAOlC,EAAA,cAACuE,EAAA,CAAM,GAAG6E,EAAO,KAAMqD,EAAU,CAC1C,EAEM4T,GAAc,CAAC,CAAE,SAAAtgB,KAAamE,CAAK,IAAM,CAC7C,MAAMoc,EAAgBtgB,EAAM,SAAS,QAAQD,CAAQ,EAC/CwgB,EAAgBD,EAAc,QAAU,EAC9C,OACEtgB,EAAA,cAACkgB,IAAmB,GAAGhc,CAAAA,EAEnBoc,EAAc,IAAI,CAAC/Y,EAAOuL,IACpB,CAACyN,GAAiB,OAAOhZ,GAAU,SAEnCvH,EAAA,cAACH,EAAA,CAAI,GAAG,OAAO,IAAKogB,GAAiB,IAAK1Y,CACvCA,EAAAA,CACH,EAEAvH,EAAM,eAAeuH,CAAK,GAAKA,EAAM,OAAShD,EACzCvE,EAAA,cAACmgB,GAAA,CAAS,IAAK,QAAQrN,IAAU,GAAGvL,EAAM,KAAO,CAAA,EAEnDA,CACR,CAEL,CAEJ,EAEavC,GAAa1F,EAAOwJ,EAAM,CACrC,GAAI,KACJ,OAAQ,YACR,aAAc,KACd,WAAY,SACZ,WAAY,QACZ,SAAU,OACV,YAAa,cACb,MAAO,cACP,GAAI,cACJ,cAAe,CACb,QAAS,MACT,cAAe,MACjB,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,OAAQ,KACR,GAAGsB,GAAe,CAAE,KAAM,IAAK,CAAC,CAClC,EACA,GAAI,CACF,OAAQ,KACR,GAAGA,GAAe,CAAE,KAAM,IAAK,CAAC,CAClC,EACA,GAAI,CACF,OAAQ,KACR,GAAGA,GAAe,CAAE,KAAM,IAAK,CAAC,CAClC,CACF,CACF,CACF,CAAC,EAKYgW,GAAkBpgB,EAAM,cAAgC,CAAA,CAAE,EAE1DwgB,GAAmB,CAAC,CAC/B,KAAAte,EACA,SAAAnC,CACF,IAA8B,CAC5B,MAAMrB,EAAQsB,EAAM,QAA0B,KAAO,CAAE,KAAAkC,CAAK,GAAI,CAACA,CAAI,CAAC,EACtE,OACElC,EAAA,cAACogB,GAAgB,SAAhB,CAAyB,MAAO1hB,GAC9BqB,CACH,CAEJ,EAIM0gB,GACJzgB,EAAM,WAAW,CAAC,CAAE,KAAAkC,EAAO,QAASgC,CAAK,EAAGC,IAExCnE,EAAA,cAACwgB,IAAiB,KAAMte,CAAAA,EACtBlC,EAAA,cAACgF,GAAA,CAAW,IAAKb,EAAK,KAAMjC,EAAO,GAAGgC,EAAM,CAC9C,CAEH,EAEUwc,GAAO,OAAO,OAAOD,GAAU,CAC1C,QAASJ,GACT,KAAMF,EACR,CAAC,EAEDM,GAAS,YAAc,OCrHhB,MAAME,GAET3gB,EAAM,WAAW,CAAC,CAAE,IAAA4S,EAAM,KAAM1O,CAAK,EAAGC,IAC1CnE,EAAA,cAAC8I,EAAA,CAAK,UAAU,MAAM,KAAK,OAAO,IAAK8J,EAAM,GAAG1O,EAAM,IAAKC,EAAK,CACjE,ECNYyc,GACX5gB,EAAM,cAAwC,CAC5C,UAAW,IAAM,IACnB,CAAC,EAOU6gB,GAA2B,CAAC,CACvC,SAAA9gB,EACA,SAAAqH,EACA,UAAAkK,CACF,IAAuD,CACrD,MAAM5S,EAAQsB,EAAM,QAClB,KAAO,CAAE,SAAAoH,EAAU,UAAAkK,CAAU,GAC7B,CAAClK,EAAUkK,CAAS,CACtB,EACA,OACEtR,EAAA,cAAC4gB,GAAwB,SAAxB,CAAiC,MAAOliB,GACtCqB,CACH,CAEJ,EAMa+gB,GAAuB,CAAC,CACnC,GAAIC,EAAY,MAChB,SAAA3Z,EACA,UAAAkK,KACGpN,CACL,IAEIlE,EAAA,cAAC6gB,GAAyB,CAAA,SAAUzZ,EAAU,UAAWkK,CAAAA,EACvDtR,EAAA,cAAC+gB,EAAA,CAAW,GAAG7c,EAAM,CACvB,EAIJ4c,GAAqB,YAAc,mBCpCtB,MAAAE,GAAuB,CAAC,CACnC,SAAAjhB,EACA,MAAArB,EACA,SAAUuiB,EAAe,MACtB/c,CACL,IAA2D,CACzD,MAAMgd,EAAelhB,EAAM,WAAW4gB,EAAuB,EAC7D,GAAIM,IAAiB,OACnB,MAAM,IAAI,MACR,kEACF,EAEF,KAAM,CAAE,UAAA5P,EAAW,SAAU6P,CAAc,EAAID,EAC/C,OACElhB,EAAA,cAAC+R,GAAA,CACC,SAAUoP,GAAiBF,EAC1B,GAAG/c,EACJ,UAAW,IAAMoN,EAAU5S,CAAK,CAAA,EAE/BqB,CACH,CAEJ,EC9BaqhB,GAAmB,OAAO,OAAON,GAAsB,CAClE,KAAME,GACN,QAASlP,EACX,CAAC,ECEKuP,GAAiC/hB,EAAOohB,GAAM,CAAE,GAAI,IAAK,CAAC,EASnDY,GAA2B,CAAC,CACvC,KAAApf,EAAO,KACP,SAAAnC,EACA,mBAAAwhB,EAAqB,aAClBrd,CACL,IAEIlE,EAAA,cAACohB,GAAiB,KAAjB,CAAsB,QAAO,GAAE,GAAGld,GACjClE,EAAA,cAACqhB,GAAA,CAA+B,KAAMnf,CAAAA,EACpClC,EAAA,cAAC0gB,GAAK,QAAL,KAAc3gB,CAAS,EACxBC,EAAA,cAACohB,GAAiB,QAAjB,CAAyB,QAAO,EAAA,EAC/BphB,EAAA,cAACiH,EAAA,CACC,MAAOsa,EACP,IAAK,CAAE,MAAO,UAAW,EACzB,KAAMrf,IAAS,KAAO,KAAO,IAAA,EAE7BlC,EAAA,cAACuE,EAAA,CAAK,GAAIkP,OAAO,CAAA,CACnB,CACF,CACF,CACF,EC/BS+N,GACXxhB,EAAM,WAAW,CAACoJ,EAAOjF,IAChBnE,EAAA,cAAC2gB,GAAA,CAAU,GAAIS,GAAkB,IAAKjd,EAAM,GAAGiF,CAAAA,CAAO,CAC9D,ECJUqY,GACXD,GACFC,GAAqB,KAAOH,GAC5BG,GAAqB,YAAc,uBCDnC,MAAMC,GAAuBpiB,EAAOiF,EAAM,CACxC,QAAS,MACX,CAAC,EAEKod,GAA4BriB,EAAO,WAAW,CAClD,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAE0G,GAAM,CACP,oBAAqB,CACnB,OAAQ,UACR,UAAW,CACT,GAAI,WACJ,MAAO,YACP,YAAa,cACf,EACA,kBAAmB,CACjB,GAAG/f,IACL,EACA,qBAAsB,CACpB,UAAW,CACT,GAAI,QACJ,MAAO,cACT,CACF,CACF,EACA,sBAAuB,CACrB,MAAO,WACP,GAAI,QACJ,YAAa,UACf,EACA,qBAAsB,CACpB,CAAC,KAAK+gB,MAAyB,CAC7B,QAAS,OACX,CACF,CACF,CAAC,EAKYE,GAAsB,CAAC,CAClC,KAAA1f,EAAO,KACP,SAAAnC,KACGmE,CACL,IAEIlE,EAAA,cAAC6hB,GAAY,KAAZ,CAAkB,GAAG3d,EAAM,QAAO,EAAA,EACjClE,EAAA,cAAC2hB,GAAA,CAA0B,GAAG,UAC5B3hB,EAAA,cAAC0hB,GAAA,CAAqB,GAAI7K,EAAAA,GAAI,KAAM3U,IAAS,KAAO,KAAO,IAAA,CAAM,EACjElC,EAAA,cAAC0gB,GAAK,QAAL,KAAc3gB,CAAS,CAC1B,CACF,ECjDS+hB,GACX9hB,EAAM,WACJ,CACE,CAAE,gBAAA+hB,EAAkB,GAAO,cAAAC,EAAe,aAAAC,KAAiB/d,CAAK,EAChEC,IACG,CACH,KAAM,CAAC+d,EAAeC,CAAgB,EACpCniB,EAAM,SAAwCiiB,CAAY,EACtDG,EACJC,GACG,CACCN,IAAoBM,IAAa,KAAMA,GAAA,KAAAA,OAAAA,EAAU,UAAW,KAEhEF,EAAiBE,CAAQ,EACzBL,GAAA,MAAAA,EAAgBK,CAAAA,EAClB,EAEA,OAGEriB,EAAA,cAAC6hB,GAAY,KAAZ,CACC,IAAK1d,EACL,cAAeie,EACf,MAAOF,EACN,GAAGhe,CAAAA,CACN,CAEJ,CACF,ECpCW2d,GAAc,CACzB,KAAMC,EACR,ECIaQ,GACXtiB,EAAM,WAAW,CAACoJ,EAAOjF,IAErBnE,EAAA,cAAC2gB,GAAA,CACC,IAAKxc,EACL,GAAI0d,GAAY,KAChB,YAAY,aACX,GAAGzY,EACN,CAEH,ECXUmZ,GAAkBD,GAC/BC,GAAgB,KAAOX,GACvBW,GAAgB,YAAc,sBCFvB,MAAMC,GAAsBljB,EAAOmjB,GAAAA,cAAmB,CAC3D,UAAW,OACX,WAAY,OACZ,gBAAiBjiB,GAAqBjB,GAAM,OAAO,QAAQ,MAAO,SAAS,EAC3E,mBAAoB,8BACpB,iBAAkB,oBAClB,eAAgB,kBAChB,OAAQ,qBACR,aAAc,KACd,UAAW,aACX,MAAO,YACP,OAAQ,OACR,QAAS,QACT,WAAY,QACZ,OAAQ,KACR,GAAI,KACJ,GAAI,KACJ,WAAY,qBACZ,MAAO,OACP,iBAAkB,CAChB,MAAO,WACP,QAAS,CACX,EACA,iBAAkB,CAChB,YAAa,cACb,QAAS,MACX,EACA,cAAe,CACb,gBAAiB,WACjB,MAAO,WACP,OAAQ,aACV,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,OAAQ,KACR,SAAU,MACV,WAAY,GACd,EACA,GAAI,CACF,OAAQ,KACR,SAAU,MACV,WAAY,CACd,EACA,GAAI,CACF,OAAQ,KACR,SAAU,MACV,WAAY,CACd,CACF,EACA,MAAO,CACL,MAAO,CACL,OAAQ,mBACV,CACF,CACF,CACF,CAAC,EAMYmjB,GACX1iB,EAAM,WAAW,CAAC,CAAE,KAAAkC,EAAO,QAASgC,CAAK,EAAGC,IAC1CnE,EAAA,cAACwiB,GAAA,CAAoB,KAAMtgB,EAAO,GAAGgC,EAAM,IAAKC,EAAK,CACtD,ECpEUwe,GAAerjB,EAAOsjB,gBAAkB,CACnD,UAAW,OACX,EAAG,EACH,EAAG,EACH,WAAY,MACd,CAAC,ECLYC,GAAiBvjB,EAAOwjB,GAAAA,eAAoB,CACvD,MAAO,WACP,OAAQ,UACR,EAAG,EACH,EAAG,KACH,mCAAoC,CAClC,GAAI,WACJ,aAAc,IAChB,EACA,oBAAqB,CACnB,MAAO,aACT,CACF,CAAC,ECZYC,GAAkBzjB,EAAO0jB,mBAAqB,CACzD,GAAI,QACJ,OAAQ,qBACR,aAAc,KACd,UAAW,KACX,UAAW,aACX,WAAY,QACZ,SAAU,MACV,QAAS,OACT,EAAG,KACH,UAAW,sBACb,CAAC,ECND5jB,GAAU,CAAE,QAAS,CAAE,mBAAoB,CAAE,CAAE,CAAC,IAEnC,MAAA6jB,GAAW,OAAO,OAAO3jB,EAAO4jB,GAAAA,SAAc,CAAA,CAAE,EAAG,CAC9D,YAAa,WACb,OAAQL,GACR,MAAOH,GACP,QAASK,GACT,KAAMJ,GACN,WAAYQ,GAAAA,kBACd,CAAC,ECTYC,GAAkB9jB,EAAOwJ,EAAM,CAC1C,MAAO,YACP,WAAY,wDACZ,MAAO,OACP,iBAAkB,CAChB,MAAO,WACP,QAAS,CACX,EACA,SAAU,CACR,WAAY,CACV,SAAU,CACR,WAAY,QACZ,OAAQ,qBACR,aAAc,KACd,iBAAkB,CAChB,YAAa,UACf,CACF,EACA,OAAQ,CACN,WAAY,WACZ,OAAQ,OACR,aAAc,KACd,iBAAkB,CAChB,QAAS,qBACT,cAAe,EACf,OAAQ,CACV,CACF,CACF,EACA,KAAM,CACJ,GAAI,CAAE,OAAQ,IAAK,EACnB,GAAI,CAAE,OAAQ,IAAK,EACnB,GAAI,CAAE,OAAQ,IAAK,EACnB,GAAI,CAAE,OAAQ,IAAK,CACrB,EACA,SAAU,CACR,KAAM1G,CACR,EACA,MAAO,CACL,MAAO,CAAA,CACT,CACF,EACA,iBAAkB,CAChB,CACE,MAAO,QACP,WAAY,WACZ,IAAK,CAAE,YAAa,SAAU,CAChC,EACA,CACE,MAAO,QACP,WAAY,SACZ,IAAK,CACH,GAAI,eACJ,iBAAkB,CAChB,aAAc,SAChB,CACF,CACF,CACF,CACF,CAAC,EAEDghB,GAAgB,YAAc,kBAE9B,MAAMC,GAAkB/jB,EAAO,WAAW,CACxC,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEzP,EAA4B,CAE7B,WAAY,OACZ,OAAQ,OACR,WAAY,OACZ,gBAAiB,OACjB,gBAAiB,cACjB,UAAW,OACX,UAAW,aACX,UAAW,CACT,QAAS,MACX,EAEA,GAAI,KACJ,KAAM,MACR,CAAC,EAaKuC,GAAa,CACjB,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEawW,GACXtjB,EAAM,WAAW,CAAC,CAAE,KAAAmF,EAAO,OAAQ,IAAAlG,EAAK,KAAAiD,KAASgC,CAAK,EAAGC,IAAQ,CAC/D,MAAM6I,EAAWhN,EAAM,QACrB,IAAM0B,EAA6BQ,EAAOC,GAAM2K,GAAW3K,EAAE,EAC7D,CAACD,CAAI,CACP,EAEA,OACElC,EAAA,cAACqjB,GAAA,CACC,IAAKlf,EACL,GAAG,QACH,KAAMgB,IAAS,SAAW,OAASA,EACnC,UAAWA,IAAS,SAAW,UAAY,OAC3C,QAASA,IAAS,SAAW,SAAW,OACxC,KAAM6H,EACL,GAAG9I,CAAAA,CACN,CAEJ,CAAC,EAEHof,GAAU,YAAc,YAYjB,MAAMC,GACXvjB,EAAM,WACJ,CACE,CACE,UAAAgE,EACA,KAAA9B,EAAO,KACP,WAAAgF,EAAa,WACb,MAAAwE,EACA,SAAAtE,EACA,IAAAnI,KACGiF,CACL,EACAC,IAGEnE,EAAA,cAACojB,GAAA,CACC,KAAMlhB,EACN,WAAYgF,EACZ,SAAUE,EACV,MAAOsE,EACP,IAAKzM,EACL,UAAW+E,CAEXhE,EAAAA,EAAA,cAACsjB,GAAA,CAAU,KAAMphB,EAAM,IAAKiC,EAAK,SAAUiD,EAAW,GAAGlD,CAAAA,CAAM,CACjE,CAGN,EAEFqf,GAAM,YAAc,QCzJb,MAAMC,GACXxjB,EAAM,WACJ,CACE,CACE,IAAAf,EACA,iBAAAwkB,EAAmB,gBACnB,iBAAAC,EAAmB,gBACnB,KAAAxhB,EAAO,QACJyhB,CACL,EACAxf,IACG,CACH,KAAM,CAACyf,EAAmBC,CAAoB,EAAIC,EAAAA,SAAkB,EAAK,EACnEC,EAA2B,IAC/BF,EAAsBG,GAAiB,CAACA,CAAY,EAEhDvX,EAAWzM,EAAM,QAAQ,IAAMiC,GAAiBC,CAAI,EAAG,CAACA,CAAI,CAAC,EAEnE,OACElC,EAAA,cAACH,EAAA,CAAI,IAAK,CAAE,SAAU,WAAY,GAAGZ,CAAI,CAAA,EACvCe,EAAA,cAACujB,GAAA,CACE,GAAGI,EACJ,KAAMzhB,EACN,KAAM0hB,EAAoB,OAAS,WACnC,IAAKzf,EACL,IAAK,CAAE,GAAI,UAAW,CACxB,CAAA,EACAnE,EAAA,cAACiH,EAAA,CACC,WAAW,SACX,MAAM,UACN,IAAK,CACH,OAAQ/E,IAAS,KAAO,MAAQ,EAChC,SAAU,WACV,MAAO,CACT,EACA,MAAO0hB,EAAoBH,EAAmBC,EAC9C,QAASK,EACT,YAAcxY,GAAMA,EAAE,iBACtB,KAAMkB,CAAAA,EAENzM,EAAA,cAACuE,EAAA,CAAK,GAAIqf,EAAoBK,MAAMC,EAAAA,WAAY,CAClD,CACF,CAEJ,CACF,EAEFV,GAAc,YAAc,gBChDrB,MAAMW,GAAgB,CAAC,CAC5B,IAAAllB,EAAM,CAAA,EACN,UAAAgf,EACA,MAAA5X,EAAQ,WACR,KAAA9C,EACA,OAAAya,EAAS,OACT,YAAAhT,EACA,WAAA2U,EACA,WAAAzY,KACGxE,CACL,IAA0B,CACxB,KAAM,CAAE,SAAA0hB,CAAS,EAAI9E,iBAAe,EAC9BlT,EAAUqS,KACV,CAAE,MAAAX,CAAM,EAAIqB,GAAc5b,CAAI,EAE9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAC1CC,GAAiBjY,GAAA,KAAAA,OAAAA,EAAS,aAAclF,EAE9C,OACElH,EAAA,cAAC6d,GAAA,CACC,IAAK,CAAE,GAAG5e,EAAK,SAAU,UAAW,EACpC,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAAAA,EAEZrkB,EAAA,cAACwjB,GAAA,CACC,aAAa,mBACb,KAAMjgB,EACN,GAAIA,EACJ,IAAKY,EACL,WAAYkgB,EACX,GAAIvG,IAAU,QAAa,CAAE,MAAO,OAAQ,EAC5C,GAAGpb,CACN,CAAA,CACF,CAEJ,EAEAyhB,GAAc,YAAc,gBC7Bf,MAAAG,GAAsB,CAAC,CAClC,SAAAC,EACA,kBAAAC,EACA,iBAAAC,EAAmB,MACnB,MAAApe,EAAQ,oBACR,KAAA9C,EAAO,WACP,IAAAtE,EACA,WAAA0gB,EACA,WAAAzY,KACGxE,CACL,IAAgC,CAxChC,IAAA8X,EAyCE,KAAM,CAAE,UAAAkK,EAAW,QAAA9E,CAAQ,EAAIN,EAAe,eAAA,EACxC,CAACqF,EAAWC,CAAY,EAAI5kB,EAAM,SAAkB,EAAK,EACzD,CAAC6kB,EAAkBC,CAAmB,EAC1C9kB,EAAM,SAA2BwkB,CAAiB,EAE9CO,EAAmBL,EAAU,QAAQnhB,GACrCua,IACJtD,EAAAkK,EAAU,OAAOnhB,KAAjB,KAAA,OAAAiX,EAAwB,QAAS,YACjC,OAAO,OAAOqK,CAAgB,EAAE,MAAOG,GAAY,CAACA,CAAO,EAEvDC,EAAmBjlB,EAAM,YAC7B,MAAOklB,GAAqB,CAC1B,MAAMC,EAAS,MAAMZ,EAASW,CAAQ,EAEtC,OAAIC,GACF7d,GAAAA,QACE,OAAO6d,GAAW,SAClB,6CACF,EAEAL,EAAoBK,CAAM,EACnB,OAAO,OAAOA,CAAM,EAAE,MAAOH,GAAYA,CAAO,GAGlD,EACT,EACA,CAACF,CAAmB,CACtB,EAEMM,EAAeplB,EAAM,YAAYqlB,GAAAA,SAAS,IAAKJ,CAAgB,EAAG,CACtEA,CACF,CAAC,EAEKK,EAAkB,CAACH,EAAiBR,IACpCQ,EAAe,UAEZR,EAAY,UAAY,QAG3BY,EACH3F,EAAQ,KAAK,WAAa+E,GAAaI,IACvCnF,EAAQ,KAAK,aAAe+E,GAAcD,EAAU,aAAe5G,GAEtE,OACE9d,EAAA,cAACH,EAAA,CAAI,IAAKZ,CACRe,EAAAA,EAAA,cAACmkB,GAAA,CACC,MAAO9d,EACP,KAAM9C,EACN,SAAWgI,GAAM6Z,EAAa7Z,EAAE,OAAO,KAAK,EAC5C,OAAQ,IAAMqZ,EAAa,EAAK,EAChC,QAAS,IAAMA,EAAa,EAAI,EAChC,WAAY,CAAE,GAAGjF,EAAY,SAAUsF,CAAiB,EACxD,WAAY/d,EACX,GAAGxE,CAAAA,CACN,EACC6iB,GACCvlB,EAAA,cAAC8I,EAAA,CACC,IAAK,CACH,GAAI,KACJ,IAAK,KACL,SAAU,OACV,cAAe2b,CACjB,CAAA,EAEC,OAAO,QAAQI,CAAgB,EAAE,IAAI,CAAC,CAAC1b,EAASgc,CAAM,IACrDnlB,EAAA,cAAC2b,GAAA,CACC,IAAKxS,EACL,MAAOmc,EAAgBH,EAAQR,CAAS,CAAA,EAEvCxb,CACH,CACD,CACH,CAEJ,CAEJ,EAEAmb,GAAoB,YAAc,sBCtG3B,IAAKkB,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,UAAY,YACZA,EAAA,SAAW,WAJDA,IAAAA,GAAA,EAAA,ECJZ,MAAMC,GAAoBC,GAAqD,CAC7E,GAAIA,EAAQ,GACV,OAAOA,EAAQ,GAAG,KAAO,OAAS,KAGtC,EAEaC,GAAkB,MAC7BC,EACAC,EACAC,EACAJ,EACAK,IAC0C,CA1B5C,IAAAvL,EAAAC,EAAAuL,EAAAC,EAAAC,EAAAC,EA2BE,KAAM,CAAE,UAAAC,EAAW,SAAAC,CAAS,EAAIP,EAC1BQ,EAAS,CACb,WAAW9L,EAAAqL,GAAA,KAAA,OAAAA,EAAkB,YAAlB,KAAArL,EAA+B4L,EAC1C,UAAU3L,EAAAoL,GAAA,KAAAA,OAAAA,EAAkB,WAAlB,KAAApL,EAA8B4L,EACxC,QAAQJ,EAAAJ,GAAA,KAAAA,OAAAA,EAAkB,SAAlB,KAAAI,GAA4BD,EAAAN,EAAQ,KAAR,KAAAM,OAAAA,EAAY,GAChD,eAAeE,EAAAL,GAAA,KAAAA,OAAAA,EAAkB,gBAAlB,KAAAK,EAAmCT,GAAiBC,CAAO,EAC1E,cAAcS,EAAAN,EAAiB,eAAjB,KAAAM,EAAiCJ,CACjD,EAEMQ,EAAU,MAAMX,EAAaU,CAAM,EAEzC,OAAAhf,GAAAA,QACE,MAAM,QAAQif,GAAA,KAAAA,OAAAA,EAAS,OAAO,EAC9B,iGACF,EACAjf,GAAAA,QACEif,GAAW,OAAO,UAAUA,EAAQ,KAAK,GAAKA,EAAQ,OAAS,EAC/D,kHACF,EAEOA,CACT,EC7CMC,GAA0C,CAAE,UAAW,EAAG,SAAU,EAAG,EAChEC,GACXC,GACG,CACH,KAAM,CAACC,EAAaC,CAAc,EAAI5mB,EAAAA,QAAM,SAC1C,CAAC,CAAC0mB,CACJ,EAEM,CAACZ,EAAiBe,CAAkB,EAAI7mB,EAAM,QAAA,SAElD,CACA,GAAGwmB,GACH,GAAIE,GAA0B,EAChC,CAAC,EAEKI,EAAkB9mB,UAAM,YAAY,IAAM,CAC9C4mB,EAAe,EAAI,CACrB,EAAG,CAAE,CAAA,EAEL,MAAO,CACL,YAAAD,EACA,gBAAAb,EACA,mBAAAe,EACA,gBAAAC,CACF,CACF,ECxBaC,GAAmBC,GAA0C,CACxE,KAAM,CAACC,EAAYC,CAAa,EAAIlnB,EAAAA,QAAM,SAAkB,EAAK,EAE3D,CAAC0lB,EAASyB,CAAU,EAAInnB,EAAAA,QAAM,SAClCgnB,EACI,CACE,CACE,GAAIA,EAAY,OAChB,KAAMA,EAAY,YAAc,MAClC,CACF,EACA,CAAA,CACN,EAEA,MAAO,CAAE,WAAAC,EAAY,cAAAC,EAAe,QAAAxB,EAAS,WAAAyB,CAAW,CAC1D,ECcMC,GACJpnB,EAAM,cAAoD,IAAI,EAenDqnB,GAAoB,CAAC,CAChC,QAAAC,EACA,KAAMC,EAAW,CACjB,EAAA,aAAA3B,EACA,YAAAoB,EACA,aAAAxb,EAAe,OACf,aAAAgc,EACA,mBAAAC,EACA,qBAAAC,EACA,SAAA3nB,CACF,IAA2C,CA3D3C,IAAAya,EA4DE,MAAMmN,EAAU3nB,EAAM,OAAO4nB,GAAK,GAAA,CAAC,EAE7B,CAACC,EAAMC,CAAO,EAAI9nB,EAAM,SAA2B,CACvD,QAASunB,GAAA,KAAAA,EAAY,GACrB,OAAO/M,EAAA+M,GAAA,KAAAA,OAAAA,EAAU,SAAV,KAAA/M,EAAoB,CAC7B,CAAC,EAEK,CAACuN,EAAcC,CAAe,EAAIhoB,EAAM,SAA4B,EAAE,EACtE,CAACioB,EAAUC,CAAW,EAAIloB,EAAM,SAAwB,CAAE,CAAA,EAE1D,CAAE,YAAA2mB,EAAa,gBAAAG,EAAiB,gBAAAhB,EAAiB,mBAAAe,CAAmB,EACxEJ,GAAcjb,GAAA,KAAA,OAAAA,EAAc,UAAU,EAElC,CAAC2c,EAAgBC,CAAiB,EAAIpoB,EAAM,SAChDwlB,EAAe,IACjB,EAEM,CAACO,EAAcsC,CAAe,EAAIroB,EAAM,SAAiB,EAAE,EAE3D,CAAE,cAAAknB,EAAe,WAAAD,EAAY,QAAAvB,EAAS,WAAAyB,CAAW,EACrDJ,GAAgBC,CAAW,EAEvBsB,EAAetoB,EAAM,YACzB,MAAOuoB,GAAyD,CAC9D,GAAK3C,EAEL,GAAI,CACFwC,EAAkB5C,EAAe,OAAO,EAExC,MAAMe,GAAU,MAAMZ,GACpBC,EACA2C,EACAzC,EACAJ,EACAK,CACF,EAEA+B,EAAQvB,EAA2B,EACnC6B,EAAkB5C,EAAe,SAAS,CAC5C,MAAA,CACE4C,EAAkB5C,EAAe,QAAQ,CAC3C,CACF,EACA,CACEI,EACAE,GAAA,KAAA,OAAAA,EAAiB,UACjBA,GAAA,KAAA,OAAAA,EAAiB,SACjBJ,EACAK,CACF,CACF,EAEA/lB,EAAM,UAAU,IAAM,CACpBsoB,EAAa,CAAE,CAAA,CACjB,EAAG,CAACA,CAAY,CAAC,EAEjBE,GAAqB,QAAA,IAAM,CACrB,CAACjB,GAELO,EAAQ,CAAE,QAASP,EAAU,MAAOA,EAAS,MAAO,CAAC,CACvD,EAAG,CAACA,CAAQ,CAAC,EAEb,MAAMkB,EAAe,IAAMZ,EAAK,MAE1Ba,EAAQC,iBAAuB,CACnC,QAAArB,EACA,KAAMO,EAAK,QACX,UAAW/B,EACP,KAAK,KAAK2C,EAAiB3C,EAAAA,EAAgB,QAAQ,EACnD,GACJ,aAActa,EACd,MAAO,CACL,QAAAka,EACA,aAAAK,EACA,WAAYD,EACZ,aAAAiC,EACA,SAAAE,CACF,EACA,iBAAkBrC,GAAgBe,EAClC,cAAef,GAAgBe,EAC/B,cAAewB,IAAmB3C,EAAe,QACjD,mBAAoB,CAACI,EACrB,mBAAA6B,EACA,iBAAkBS,EAClB,WAAaU,GAAsBA,EAAI,QACvC,qBAAuBC,GAAmB,CACpCnB,GAAsBA,EAAqBmB,CAAc,EAC7Db,EAAgBa,CAAc,CAChC,EACA,gBAAiBC,GAAgB,gBAAA,EACjC,sBAAuBnC,EAAcoC,GAAAA,wBAA0B,OAC/D,kBACE9B,GAAcvB,EAAQ,OAASsD,GAAkB,kBAAA,EAAI,OACvD,oBAAqBC,uBAAoB,EACzC,oBAAqBC,GAAAA,sBACrB,mBAAoBvC,EAAcE,EAAqB,OACvD,gBAAiBM,EACjB,qBAAsBkB,EACtB,eAAgB,CAACO,EAAKO,GAAUC,KAAgB,CAC9C,MAAMC,GAA0BC,IAC9BA,GAAU,YAAc,EAAA,SAASF,GAAY,YAAA,CAAa,EAI5D,GAFiBR,EAAI,MAAQ,EAEf,MAAO,GAErB,MAAMlqB,GAAQkqB,EAAI,SAASO,EAAQ,EACnC,OAAQ,OAAOzqB,QACR,SACH,OAAO2qB,GAAuB3qB,EAAK,MAChC,cACA,SACH,OAAO2qB,GAAuB,OAAO3qB,EAAK,CAAC,UAE3C,MAAO,GAEb,CACF,CAAC,EAEKA,GAA8BsB,EAAM,QAAQ,KACzC,CACL,GAAG0oB,EACH,QAAApB,EACA,KAAAO,EACA,QAAAC,EACA,cAAAZ,EACA,gBAAAJ,EACA,aAAA2B,EACA,WAAAxB,EACA,eAAAkB,EACA,aAAAG,EACA,aAAAd,EACA,mBAAAC,EACA,aAAAM,EACA,QAASJ,EAAQ,OACnB,GACC,CACDe,EACA5B,EACA2B,EACAxB,EACAQ,EACAE,CACF,CAAC,EAED,OACE3nB,EAAA,cAAConB,GAAiB,SAAjB,CAA0B,MAAO1oB,EAC/BqB,EAAAA,CACH,CAEJ,EAEawpB,EAAe,IAAyC,CACnE,MAAMnd,EAAUpM,EAAM,WAAWonB,EAAgB,EAEjD,GAAI,CAAChb,EACH,MAAM,IAAI,MACR,iEACF,EAEF,OAAOA,CACT,ECzNaod,GAAYlqB,EAAO,KAAM,CACpC,GAAI,OACN,CAAC,EAEYmqB,GAETzpB,EAAM,WAAW,CAACoJ,EAAOjF,IAAQnE,EAAA,cAACwpB,GAAA,CAAW,GAAGpgB,EAAO,IAAKjF,CAAAA,CAAK,CAAE,EAEvEslB,GAAS,YAAc,WCNvB,MAAMC,GAAkBpqB,EAAO,QAAS,CACtC,SAAU,CACR,QAAS,CACP,KAAM,CACJ,CAAC,GAAGkqB,MAAc,CAChB,mBAAoB,CAAE,GAAI,OAAQ,EAClC,oBAAqB,CAAE,GAAI,UAAW,CACxC,CACF,EACA,MAAO,CACL,CAAC,GAAGA,MAAc,CAChB,GAAI,OACN,CACF,CACF,CACF,CACF,CAAC,EAIYG,GAAY,CAAC,CAAE,QAAAC,EAAU,MAAS1lB,CAAK,IAClDlE,EAAA,cAAC0pB,GAAA,CAAgB,QAASE,EAAU,GAAG1lB,CAAM,CAAA,EAG/CylB,GAAU,YAAc,YC5BjB,MAAME,GAAYvqB,EAAO,KAAM,CACpC,aAAc,qBACd,UAAW,aACX,MAAO,WACP,WAAY,QACZ,WAAY,IACZ,UAAW,OACX,cAAe,SACf,gBAAiB,CAAE,WAAY,KAAM,CACvC,CAAC,EAEDuqB,GAAU,YAAc,YCXX,MAAAC,GAAcxqB,EAAO,QAAS,CAAE,CAAA,EAE7CwqB,GAAY,YAAc,cCFnB,MAAMC,GAAkBzqB,EAAO,KAAM,CAC1C,MAAO,WACP,WAAY,QACZ,WAAY,IACZ,UAAW,OACX,cAAe,QACjB,CAAC,EAEDyqB,GAAgB,YAAc,kBCRvB,MAAMC,GAAkB1qB,EAAO,KAAM,CAC1C,aAAc,qBACd,MAAO,QACP,WAAY,QACZ,WAAY,IACZ,WAAY,IACZ,UAAW,OACX,cAAe,SACf,aAAc,CACZ,UAAW,QACb,CACF,CAAC,EAED0qB,GAAgB,YAAc,kBCTjB,MAAAC,GAAsB,CACjC,QAAS,UACT,aAAc,cACd,cAAe,eACf,MAAO,QACP,MAAO,OACT,EAEMC,GAAoB5qB,EAAO,QAAS,CACxC,SAAU,CACR,MAAO,CACL,CAAC2qB,GAAoB,SAAU,CAC7B,CAAC,GAAGD,MAAoB,CACtB,GAAI,aACN,CACF,EACA,CAACC,GAAoB,cAAe,CAClC,CAAC,GAAGD,MAAoB,CACtB,GAAI,cACN,CACF,EACA,CAACC,GAAoB,eAAgB,CACnC,CAAC,GAAGD,MAAoB,CACtB,GAAI,cACJ,MAAO,WACT,CACF,EACA,CAACC,GAAoB,OAAQ,CAC3B,CAAC,GAAGD,MAAoB,CACtB,GAAI,WACJ,MAAO,WACT,CACF,EACA,CAACC,GAAoB,OAAQ,CAC3B,CAAC,GAAGD,MAAoB,CACtB,GAAI,QACJ,MAAO,WACT,CACF,CACF,EACA,SAAU,CACR,KAAM,CACJ,SAAU,SACV,IAAK,EACL,OAAQ,CACV,CACF,CACF,CACF,CAAC,EAIYG,GAAc,CAAC,CAC1B,MAAA5qB,EAAQ,cACR,SAAA6qB,EAAW,MACRlmB,CACL,IACSlE,EAAAA,QAAA,cAACkqB,GAAA,CAAkB,MAAO3qB,EAAO,SAAU6qB,EAAW,GAAGlmB,CAAM,CAAA,EAGxEimB,GAAY,YAAc,cC1Db,MAAAE,GAAsB,CAAC,CAClC,sBAAAC,EACA,WAAAC,CACF,IAG4B,CAC1B,KAAM,CAACC,EAAYC,CAAa,EAAIzqB,EAAM,SAAc,CAAA,CAAE,EAEpD0qB,EAAqB1qB,EAAM,YAAY,IAAM,CAjBrD,IAAAwa,EAkBI,IAAImQ,EAAW,EAGf,MAAMC,GAAmBpQ,EAAA+P,EAAW,UAAX,KAAA/P,OAAAA,EAAoB,iBAAiB,IAAA,EAwB9D,OAvB4B,MAAM,KAAKoQ,GAAoB,CAAA,CAAE,EAGnB,MAAM,EAAGN,CAAqB,EAEpC,OAAO,CAAC3qB,EAAUkrB,EAAQ/X,IAAU,CACtE,MAAMgY,EAAgBhY,EAAQ,EACxBiY,EAAY,CAChB,GAAGprB,EACH,CAAC,oBAAoBmrB,sBAAkCA,MACrD,CACE,SAAU,SACV,KAAM,GAAGH,MACT,SAAU,GAAGE,EAAO,gBACpB,OAAQ,GACV,CACJ,EAEA,OAAAF,IAAYC,GAAA,KAAAA,OAAAA,EAAkB,KAAK9X,CAAAA,EAAO,cAAe,EAElDiY,CACT,EAAG,CAAA,CAAS,CAGd,EAAG,CAACT,EAAuBC,CAAU,CAAC,EAEtC,OAAAvqB,EAAM,gBAAgB,IAAM,CAC1B,GAAI,CAACsqB,EAAuB,OAC5B,MAAMU,EAAgBN,EAAmB,EAEzCD,EAAcO,CAAa,CAC7B,EAAG,CAACV,EAAuBC,EAAYG,CAAkB,CAAC,EAEnD,CACL,WAAAF,CACF,CACF,ECnDaS,GAA8B,CAAC,CAC1C,SAAAlrB,EACA,sBAAAuqB,EAAwB,EACxB,IAAArrB,KACG0kB,CACL,IAGO,CACL,KAAM,CAACuH,EAAWC,CAAY,EAAInrB,EAAAA,QAAM,SAAkB,EAAK,EACzDuqB,EAAavqB,EAAM,QAAA,OAAO,IAAI,EAC9B,CAAE,WAAAwqB,CAAW,EAAIH,GAAoB,CACzC,sBAAAC,EACA,WAAAC,CACF,CAAC,EAUD,OACEvqB,EAAAA,QAAA,cAACH,EAAA,CACC,SAVkB0a,GAAyC,CAC7D,MAAM6Q,EACJ7Q,EAAM,cAAc,YAAcA,EAAM,cAAc,YACpD6Q,IAAiBF,GACnBC,EAAaC,CAAY,CAE7B,EAKI,KAAK,YACL,IAAKb,EACL,IAAK,CACH,SAAU,OACV,SAAU,OACV,GAAGC,EACH,CAAC,kBAAkBF,oBAAwCA,MACzD,CACE,GAAIY,GAAa,CACf,UAAW,qCACX,SAAU,0BACZ,CACF,EACF,OAAQ,CACN,GAAI,SACN,EACA,GAAGjsB,CACL,EACC,GAAG0kB,CAEH5jB,EAAAA,CACH,CAEJ,EC5CMsrB,GAAc/rB,EAAO,QAAS,CAClC,eAAgB,WAChB,cAAe,EACf,WAAY,QACZ,SAAU,MACV,MAAO,OACP,SAAU,CACR,KAAM,CACJ,GAAI,CACF,CAAC,GAAGuqB,OAAcG,OAAoBD,MAAoB,CACxD,OAAQ,KACR,QAAS,OACX,CACF,EACA,GAAI,CACF,CAAC,GAAGF,OAAcG,OAAoBD,MAAoB,CACxD,OAAQ,KACR,QAAS,OACX,CACF,EACA,GAAI,CACF,CAAC,GAAGF,OAAcG,OAAoBD,MAAoB,CACxD,OAAQ,KACR,QAAS,OACX,CACF,CACF,EACA,QAAS,CACP,MAAO,CACL,CAAC,GAAGC,MAAoB,CACtB,kBAAmB,CAAE,oBAAqB,IAAK,EAC/C,iBAAkB,CAAE,qBAAsB,IAAK,CACjD,EACA,CAAC,GAAGR,iBAAyB,CAC3B,CAAC,GAAGK,kBAA0B,CAAE,uBAAwB,IAAK,EAC7D,CAAC,GAAGA,iBAAyB,CAAE,wBAAyB,IAAK,CAC/D,CACF,EACA,OAAQ,CAAA,CACV,CACF,CACF,CAAC,EASKyB,GAAiB,CAAC,CACtB,KAAAppB,EAAO,KACP,QAAAqpB,EAAU,QACV,sBAAAjB,EAAwB,EACxB,mBAAAkB,EACA,mBAAAC,KACGvnB,CACL,IAAkB,CAChB,MAAMwnB,EAAiB1rB,EAAA,cAACqrB,GAAA,CAAY,KAAMnpB,EAAM,QAASqpB,EAAU,GAAGrnB,CAAM,CAAA,EAE5E,OAAIomB,EAEAtqB,EAAA,cAACirB,GAAA,CACC,IAAKQ,EACL,IAAKD,EACL,sBAAuBlB,CAAAA,EAEtBoB,CACH,EAIGA,CACT,EAEaC,EAAQ,OAAO,OAAOL,GAAgB,CACjD,KAAM3B,GACN,KAAME,GACN,OAAQC,GACR,WAAYC,GACZ,OAAQI,GACR,WAAYH,GACZ,IAAKP,GACL,uBAAwBwB,EAC1B,CAAC,EAEDK,GAAe,YAAc,QCtFhB,MAAAM,GAAgB,CAAC,CAC5B,QAAAhC,EAAU,GACV,UAAAiC,KACGziB,CACL,IAA0B,CACxB,KAAM,CAAE,YAAA0iB,CAAY,EAAIvC,EAAa,EAErC,OACEvpB,EAAA,cAAC2rB,EAAM,KAAN,CAAY,GAAGviB,EAAO,QAASwgB,CAAAA,EAC7BkC,IAAc,KAAK,IAAKlD,GAChB5oB,EAAA,cAAC+rB,GAAU,IAAV,CAAc,IAAKnD,EAAK,IAAKA,EAAI,GAAI,UAAWiD,CAAW,CAAA,CACpE,CACH,CAEJ,ECjBMG,GAAkB1sB,EAAOwJ,EAAM,CACnC,EAAG,KACH,MAAO,OACP,GAAI,KACJ,eAAgB,gBAChB,WAAY,SACZ,UAAW,KACX,oBAAqB,KACrB,qBAAsB,KACtB,SAAU,CACR,cAAe,CACb,KAAM,CACJ,GAAI,aACN,CACF,CACF,CACF,CAAC,EAEKmjB,GAA4B,CAAC,CACjC,SAAAlsB,CACF,IAEiC,CAC/B,KAAM,CAAE,aAAAgoB,CAAa,EAAIwB,EAAAA,EAEzB,OAAI,OAAO,KAAKxB,GAAgB,CAAE,CAAA,EAAE,OAAS,EAAU,KAEhDhoB,CACT,EAEMmsB,GAAgC,CAAC,CACrC,YAAAC,EAAc,SACd,SAAApsB,CACF,IAGM,CACJ,KAAM,CAAE,0BAAAqsB,EAA2B,aAAArE,CAAa,EAAIwB,EAE9C8C,EAAAA,EAA4B,IAAMD,EAA0B,EAAK,EAEvE,OAAI,OAAO,KAAKrE,GAAgB,CAAE,CAAA,EAAE,SAAW,EAAU,KAGvD/nB,EAAA,cAAAA,EAAA,SAAA,KACGD,EACAC,EAAM,SAAS,MAAMD,CAAQ,EAAI,GAChCC,EAAA,cAACyd,GAAA,CAAQ,YAAY,WAAW,IAAK,CAAE,GAAI,IAAK,CAAA,CAAG,EAErDzd,EAAA,cAAC4J,GAAA,CAAO,MAAM,UAAU,QAASyiB,CAC9BF,EAAAA,CACH,CACF,CAEJ,EAEaG,GAAuB,OAAO,OACzC,CAAC,CACC,SAAAvsB,KACGmE,CACL,IAiBM,CACJ,KAAM,CAAE,aAAA6jB,CAAa,EAAIwB,EAAa,EAEhCgD,EAAgB,OAAO,KAAKxE,GAAgB,CAAA,CAAE,EAAE,OAAS,EAE/D,OACE/nB,EAAA,cAACgsB,GAAA,CAAgB,cAAeO,EAAgB,GAAGroB,CAAAA,EACjDlE,EAAA,cAAC+rB,GAAU,SAAV,IAAmB,EAEpB/rB,EAAA,cAAC8I,EAAA,CAAK,IAAK,CAAE,eAAgB,WAAY,WAAY,QAAS,CAAA,EAC3D/I,CACH,CACF,CAEJ,EACA,CACE,eAAgBksB,GAChB,mBAAoBC,EACtB,CACF,EChGaM,GAAoB,CAAC,CAAE,KAAAC,CAAK,IAErCzsB,EAAA,cAAC2rB,EAAM,KAAN,CAAW,IAAKc,EAAK,EAAA,EACnBC,cAAWD,EAAK,OAAO,UAAU,KAAMA,EAAK,WAAA,CAAY,CAC3D,ECJSE,GAAoB3sB,EAAM,cAAsC,CAAE,CAAA,EAElE4sB,GAAqB,CAAC,CACjC,KAAA1qB,EACA,SAAAnC,CACF,IAAwD,CACtD,MAAMrB,EAAQsB,EAAM,QAAgC,KAAO,CAAE,KAAAkC,CAAK,GAAI,CAACA,CAAI,CAAC,EAC5E,OACElC,EAAA,cAAC2sB,GAAkB,SAAlB,CAA2B,MAAOjuB,CAAAA,EAChCqB,CACH,CAEJ,ECfM8sB,GAAuBvtB,EAAOiL,EAAM,CACxC,MAAO,WACP,WAAY,IACZ,SAAU,CACR,KAAM,CACJ,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,eACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,eACN,CACF,CACF,CACF,CAAC,EAMYuiB,GAAkB1jB,GAA+B,CAC5D,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAW2sB,EAAiB,EACnD,OAAO3sB,EAAA,cAAC6sB,GAAA,CAAqB,KAAM3qB,EAAO,GAAGkH,EAAO,CACtD,ECpCM2jB,GAAwBztB,EAAOqN,GAAO,CAC1C,SAAU,CACR,KAAM,CACJ,GAAI,CACF,SAAU,OACV,UAAW,OACX,GAAI,IACN,EACA,GAAI,CACF,SAAU,OACV,UAAW,OACX,GAAI,IACN,EACA,GAAI,CACF,SAAU,QACV,UAAW,OACX,GAAI,IACN,EACA,GAAI,CACF,SAAU,QACV,UAAW,QACX,GAAI,eACN,EACA,GAAI,CACF,SAAU,QACV,UAAW,QACX,GAAI,eACN,CACF,CACF,CACF,CAAC,EAIYqgB,GAAmB5jB,GAAgC,CAC9D,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,QAAA,WAAW2sB,EAAiB,EACnD,OAAO3sB,EAAAA,QAAA,cAAC+sB,GAAA,CAAsB,KAAM7qB,EAAO,GAAGkH,CAAAA,CAAO,CACvD,ECtCM6jB,GAAwB3tB,EAAO,KAAM,CACzC,MAAO,WACP,WAAY,QACZ,WAAY,IACZ,EAAG,EACH,SAAU,CACR,KAAM,CACJ,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,EACA,GAAI,CACF,SAAU,MACV,GAAI,IACN,CACF,CACF,CACF,CAAC,EAQY4tB,GAAmB9jB,GAAgC,CAC9D,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAW2sB,EAAiB,EACnD,OAAO3sB,EAAA,cAACitB,GAAA,CAAsB,KAAM/qB,EAAO,GAAGkH,EAAO,CACvD,ECpCM+jB,GAAsB7tB,EAAOwJ,EAAM,CACvC,cAAe,SACf,WAAY,SACZ,UAAW,SACX,mBAAoB,CAClB,GAAI,CACN,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,EAAG,IACL,EACA,GAAI,CACF,EAAG,IACL,EACA,GAAI,CACF,EAAG,IACL,EACA,GAAI,CACF,EAAG,IACL,EACA,GAAI,CACF,EAAG,IACL,CACF,CACF,CACF,CAAC,EAIKskB,GAAsB,CAAC,CAAE,KAAAlrB,EAAO,QAASgC,CAAK,IAClDlE,EAAA,cAAC4sB,GAAA,CAAmB,KAAM1qB,CAAAA,EACxBlC,EAAA,cAACmtB,GAAA,CAAoB,KAAMjrB,EAAO,GAAGgC,CAAAA,CAAM,CAC7C,EAGWmpB,GAAa,OAAO,OAAOD,GAAqB,CAC3D,MAAOJ,GACP,MAAOE,GACP,KAAMJ,EACR,CAAC,EAEDM,GAAoB,YAAc,mBC5CrBE,GAAsB,CAAC,CAClC,SAAAvtB,KACGmE,CACL,IAAgC,CAC9B,KAAM,CAAE,eAAAikB,EAAgB,aAAAM,CAAa,EAAIc,IAKzC,OAHkBpB,IAAmB3C,EAAe,SACtBiD,EAAmB,IAAA,EAI1CzoB,EAAA,cAACqtB,GAAA,CAAY,GAAGnpB,CAAAA,EAAOnE,CAAS,EAFlB,IAGvB,ECfawtB,GAAiB,CAAC,CAC7B,SAAAxtB,CACF,IAEM,CACJ,KAAM,CAAE,eAAAooB,EAAgB,aAAAG,CAAa,EAAIiB,EAAa,EAEtD,OAAIpB,IAAmB3C,EAAe,SAAiB,KAEhDzlB,EAASuoB,CAAY,CAC9B,ECZakF,GAAgC,CAAC,CAC5C,SAAAztB,EACA,OAAA0tB,EAAS,EACX,IAGMA,EAAeztB,EAAA,cAACqJ,GAAe,KAAf,KAAqBtJ,CAAS,EAE3CA,EAILC,EAAA,cAAAA,EAAA,SAAGD,KAAAA,CAAS,EACV,KAGNytB,GAA8B,YAAc,gCCC5C,IAAKE,IACHA,IAAAA,EAAA,OAAS,SACTA,EAAA,MAAQ,QAFLA,IAAAA,IAAA,CAAA,GAKL,MAAMppB,GAAahF,EAAOiF,EAAM,CAC9B,MAAO,WACP,SAAU,WACV,cAAe,OACf,SAAU,CACR,KAAM,CACJ,GAAI,CACF,MAAO,KACP,KAAM,IACR,EACA,GAAI,CACF,MAAO,GACP,KAAM,EACR,EACA,GAAI,CACF,MAAO,GACP,KAAM,EACR,CACF,CACF,CACF,CAAC,EAEKopB,GAAwBruB,EAAOgkB,GAAW,CAC9C,kGACE,CACE,QAAS,MACX,CACJ,CAAC,EAEYsK,GACX5tB,EAAM,WACJ,CACE,CACE,KAAAkC,EAAO,KACP,WAAAgF,EAAa,WACb,IAAAjI,EACA,MAAAP,EACA,aAAAujB,EAAe,GACf,cAAAD,EACA,UAAA6L,EAAY,QACZ,SAAAhO,KACGnd,CACL,EACAyB,IACG,CACH,KAAM,CAAC2pB,EAAYC,CAAa,EAAItgB,GAC9B,EAAA,CAACugB,EAAYC,CAAa,EAAIjuB,EAAM,SAASiiB,CAAY,EACzD,CAACiM,EAAYC,CAAa,EAAInuB,EAAM,SACxCiiB,EAAe,QAAmB,QACpC,EACAjiB,EAAM,UAAU,IAAM,CAChB,OAAOtB,EAAU,MACrBuvB,EAAcvvB,CAAK,EACnByvB,EAAczvB,EAAQ,QAAmB,QAAiB,EAC5D,EAAG,CAACA,CAAK,CAAC,EAEV,MAAM+N,EAAWzM,EAAM,QAAQ,IAAMiC,GAAiBC,CAAI,EAAG,CAACA,CAAI,CAAC,EAEnElC,EAAM,oBACJmE,EACA,IAAM2pB,EAAW,OACnB,EAEA,MAAMM,EAAc,IAAM,CAxFhC,IAAA5T,EAAAC,EAyFQ,MAAM4T,EAAUP,EAAW,QAC3B,GAAI,CAACO,EAAS,OAGd,MAAMC,GAAyB9T,EAAA,OAAO,yBACpC,OAAO,iBAAiB,UACxB,OACF,IAH+B,YAAAA,EAG5B,KACHC,EAAA6T,GAAA,KAAA,OAAAA,EAAwB,OAAxB,MAAA7T,EAAA,KAAA6T,EAA+BD,EAAS,EACxC,EAAA,MAAME,EAAM,IAAI,MAAM,QAAS,CAC7B,QAAS,EACX,CAAC,EACDF,EAAQ,cAAcE,CAAG,EACzBF,EAAQ,QACRrM,GAAA,MAAAA,EAAgB,EAClB,CAAA,EAEMwM,EAAkBjU,GAA+C,CACrEsF,GAAA,MAAAA,EAAWtF,GAEX,MAAM8H,EAAW9H,EAAM,OAAO,MAC9B0T,EAAc5L,CAAQ,EACtBL,GAAA,MAAAA,EAAgBK,GAChB8L,EAAc9L,EAAW,QAAmB,QAAiB,CAC/D,EAEMoM,EAAU,IACVP,IAAe,SAEfluB,EAAA,cAACsE,GAAA,CACC,GAAIoqB,EAAAA,OACJ,KAAMxsB,EACN,IAAK,CACH,KAAMA,GAAQ,KAAO,KAAO,GAC5B,IAAK,MACL,UAAW,kBACb,EACF,EAIFlC,EAAA,cAACiH,EAAA,CACC,MAAO4mB,EACP,MAAM,UACN,KAAMphB,EACN,IAAK,CACH,SAAU,WACV,IAAK,MACL,UAAW,mBACX,MAAO,IACT,EACA,QAAS2hB,GAETpuB,EAAA,cAACuE,EAAA,CAAK,GAAIkP,EAAAA,MAAO,CACnB,EAIJ,OACEzT,EAAA,cAACojB,GAAA,CACC,IAAK,CAAE,SAAU,WAAY,MAAO,OAAQ,GAAGnkB,CAAI,EACnD,KAAMiD,EACN,WAAYgF,CAAAA,EAEZlH,EAAA,cAAC2tB,GAAA,CACC,IAAKI,EACL,KAAM7rB,EACN,KAAK,SACJ,GAAGQ,EACJ,MAAOsrB,EACP,SAAUQ,EACV,IAAK,CAAE,GAAItsB,IAAS,KAAO,KAAO,IAAK,CAAA,CACzC,EACCusB,EACH,CAAA,CAEJ,CACF,EAEFb,GAAY,YAAc,cC3JnB,MAAMe,GAAwB,CAAC,CACpC,SAAA9O,EACA,MAAAxZ,EACA,UAAA4X,EAAY,MACT7U,CACL,IAA4B,CAC1B,KAAM,CACJ,gBAAAif,EACA,SAAAuG,EACA,gBAAAC,EACA,aAAApG,EACA,eAAAN,CACF,EAAIoB,EAAa,EACX,CAAE,aAAAxD,CAAa,EAAI6I,EAAAA,EAKzB,GAHkBzG,IAAmB3C,EAAe,SACtBiD,EAAAA,IAAmB,EAEpC,OAAO,KAEpB,MAAMrD,EAAevW,YAAS,IAAM0L,GAAU,CAC5C,KAAM,CACJ,OAAQ,CAAE,MAAA7b,CAAM,CAClB,EAAI6b,EAEJsF,GAAA,MAAAA,EAAWtF,CAAAA,EACXsU,IACAxG,EAAgB3pB,CAAK,CACvB,CAAC,EAED,OACEsB,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACwtB,GAAA,CAA8B,OAAQvP,CAAAA,EACrCje,EAAA,cAAC+b,GAAA,CAAM,IAAK,CAAE,GAAI,IAAK,EAAG,QAAS1V,CAAAA,EAChCA,CACH,CACF,EACArG,EAAA,cAAC4tB,GAAA,CACE,GAAGxkB,EACJ,aAAc2c,EACd,SAAUX,EACV,KAAM/e,CAAAA,CACR,CACF,CAEJ,ECnDayoB,GAAiC,CAAC,CAC7C,MAAAzoB,EAAQ,oBACV,IAEM,CACJ,KAAM,CACJ,yBAAA0oB,EACA,0BAAAC,EACA,0BAAA5C,EACA,QAAAzE,CACF,EAAI4B,EAEE0F,EAAAA,EAAkB,IAClBD,EAA0B,EAAU,gBACpC,CAAAD,CAAAA,EAAAA,EAIAG,EAAqB,IACrBF,EACK5C,EAAAA,EAA0B,EAAK,EAEjCA,EAA0B,CAAC2C,EAAyB,CAAC,EAG9D,OACE/uB,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACqJ,GAAe,KAAf,KACCrJ,EAAA,cAAC+b,GAAA,CAAM,QAAS,GAAG4L,sBAAAA,EAA+BthB,CAAM,CAC1D,EAEArG,EAAA,cAAC0W,GAAA,CACC,QAASuY,EAAAA,EACT,gBAAiBC,EACjB,KAAM,GAAGvH,oBAAAA,CACX,CACF,CAEJ,EC5BawH,GAAgB,CAAC,CAC5B,SAAAC,EAAW,GACX,MAAA7vB,EAAQ,QACR,SAAA6qB,EAAW,GACX,IAAAnrB,KACGmK,CACL,IAA0B,CACxB,KAAM,CACJ,gBAAAimB,EACA,cAAAnI,EACA,mBAAAO,EACA,qBAAA6H,CACF,EAAI/F,IAEJ,OAAAvpB,EAAM,UAAU,IAAM,CACpBknB,EAAckI,CAAQ,CACxB,EAAG,CAACA,EAAUlI,CAAa,CAAC,EAG1BlnB,EAAA,cAAC2rB,EAAM,OAAN,CACC,MAAOpsB,EACP,SAAU6qB,EACV,IAAK,CACH,6BAA8B,CAC5B,aAAc,MAChB,EACA,8BAA+B,CAC7B,aAAc,cAChB,EACA,GAAGnrB,CACL,EACC,GAAGmK,CAAAA,EAEHimB,IAAkB,IAAKE,GAEpBvvB,EAAA,cAAC2rB,EAAM,IAAN,CAAU,IAAK4D,EAAY,IACzBD,EAAqB,GACpBtvB,EAAA,cAAC2rB,EAAM,WAAN,CAAiB,IAAK,CAAE,MAAO,IAAK,CAAA,CAAG,EAEzClE,GACCznB,EAAA,cAAC2rB,EAAM,WAAN,CAAiB,IAAK,CAAE,MAAO,IAAK,GACnC3rB,EAAA,cAAC8uB,GAAA,IAA+B,CAClC,EAEDS,EAAY,QAAQ,IAAKC,GACxBxvB,EAAA,cAAC+rB,GAAU,WAAV,CAAqB,OAAQyD,EAAQ,IAAKA,EAAO,EAAI,CAAA,CACvD,CACH,CAEH,CACH,CAEJ,ECtDMC,GAAwBnwB,GAAOqsB,OAAAA,EAAM,WAAY,CACrD,SAAU,CACR,WAAY,CACV,KAAM,CACJ,OAAQ,UACR,SAAU,WACV,QAAS,CACP,SAAU,UACZ,EACA,WAAY,CACV,QAAS,GACT,SAAU,WACV,MAAO,EACP,QAAS,EACT,gBAAiB,cACjB,WAAY,mBACd,EACA,iBAAkB,CAChB,QAAS,EACX,CACF,CACF,CACF,CACF,CAAC,EAEK+D,GAAY,CAChB,IAAKC,EACL,QAAA,KAAMC,EAAAA,SACR,EAEMC,GAAW,CAAC,CAAE,UAAAhd,CAAU,IAC5B7S,EAAA,cAACuE,EAAA,CACC,GAAImrB,GAAU7c,GACd,KAAK,KACL,IAAK,CAAE,SAAU,WAAY,KAAM,KAAM,OAAQ,aAAc,CACjE,CAAA,EAGWid,GAAsB,CAAC,CAClC,OAAAN,EACA,SAAAzvB,EACA,IAAAd,KACGmK,CACL,IAA4B,CAC1B,MAAM2mB,EAAgBP,EAAO,OAAO,cAC9B,CAAE,WAAYQ,CAAgB,EAAIzG,EAElC0G,EAAAA,EAAeT,EAAO,OAAO,aAE7B,CAAE,WAAAU,EAAY,UAAAC,CAAU,EAAIC,GAAAA,SAAS,CAAE,CAAA,EAEvCC,EAAgB,CACpB9V,EACAhM,IACG,EACCgM,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACzCA,EAAM,eAAe,EACrBhM,EAASgM,CAAgB,EAE7B,EAEM+V,EAAuBd,EAAO,OAAO,wBAE3C,EAAA,OACExvB,EAAA,cAACyvB,GAAA,CACC,WAAYO,GAAmBC,EAC/B,QAAST,EAAO,QAChB,QACEQ,GAAmBC,GAAgBK,EAC/BA,EACA,OAEN,UAAY/V,GACVyV,GACAC,GACAK,GACAD,EAAc9V,EAAO+V,CAAoB,EAE3C,SAAUN,GAAmBC,EAAe,EAAI,GAC/C,GAAGC,EACJ,IAAKjxB,EACJ,GAAGmK,CAAAA,EAEJpJ,EAAA,cAAC8I,EAAA,CACC,MAAM,SACN,QAAS0mB,EAAO,QAAU,EAAI,SAAW,YAExC9C,EAAAA,GAAAA,WAAW8C,EAAO,OAAO,UAAU,OAAQA,EAAO,WAAY,CAAA,EAC9DO,GAAiBC,GAChBhwB,EAAA,cAAC8I,EAAA,CACC,MAAM,SACN,IAAK,CACH,SAAU,WACV,MAAO,OACP,OAAQ,OACR,GAAI,KACJ,GAAIqnB,EAAY,cAAgB,cAChC,aAAc,IAChB,GAEAnwB,EAAA,cAAC6vB,GAAA,CAAS,UAAWE,CAAAA,CAAe,CACtC,CAEJ,CACF,CAEJ,ECjHMQ,GAAejxB,EAAO4J,GAAQ,CAClC,SAAU,WACV,KAAM,MACN,IAAK,MACL,UAAW,wBACX,OAAQ,CACV,CAAC,EAEYsnB,GACXpnB,GACG,CACH,KAAM,CAAE,eAAA+e,CAAe,EAAIoB,EAAAA,EAE3B,OAAIpB,IAAmB3C,EAAe,QAAgB,KAE/CxlB,EAAA,cAACuwB,GAAA,CAAc,GAAGnnB,CAAAA,CAAO,CAClC,ECjBMqnB,GAAc,CAClB,UAAW,YACX,UAAW,YACX,WAAY,aACZ,UAAW,GACb,EAEaC,GAAoB,CAAC,CAChC,KAAAC,EACA,IAAA1xB,CACF,IASM,CA1BN,IAAAub,EAAAC,EA2BE,KAAM,CAAE,SAAAmU,EAAU,QAAAtH,EAAS,YAAAwE,EAAa,aAAA/D,CAAa,EAAIwB,EAAa,EAChE,CAAE,QAAA7D,CAAQ,EAAIkJ,EAAAA,EACdgC,EAAWlL,EAAQ,OAAS,EAE5BmL,GAAYpW,GAAAD,EAAAsR,EAAAA,IAAA,KAAA,OAAAtR,EAAe,OAAf,KAAA,OAAAC,EAAqB,OAEjCqW,EAAe,OAAO,KAAK/I,GAAgB,CAAA,CAAE,EAAE,OAE/CgJ,EAAa,CAAE,GAAGN,GAAa,GAAGE,CAAK,EAEvCK,EAAwBnlB,GAAe,CAC3C,MAAMolB,EAAe3J,EAAQ,KAAM4J,GAAQA,EAAI,KAAOrlB,CAAE,EACxD,OAAOolB,GAAA,KAAA,OAAAA,EAAc,SAAUplB,CACjC,EAUA,OACE7L,EAAA,cAACuK,EAAA,CAAK,OAAO,OAAO,IAAKtL,CAAM,EAAA,GAAG6xB,GAAgBD,MAC/CC,GAAgBD,KAAe,EAAI,OAAS,WAC3CC,EAAe,WAAa,MAC9BF,GAZsBlL,GACjB,GAAGqL,EAAW,aACnBA,EAAW,aACTC,EAAqBtL,EAAQ,GAAG,EAAE,KACpCA,EAAQ,GAAG,KAAOqL,EAAW,WAAaA,EAAW,aAQzBrL,CAAO,EAAI,IACtC,CAEP,ECjDayL,GAAgC,CAAC,CAC5C,IAAAvI,EACA,QAAAjS,EACA,gBAAAqB,EACA,MAAA3R,EAAQ,OAAOuiB,EAAI,cACrB,IAK0B,CACxB,KAAM,CAAE,QAAAjB,CAAQ,EAAI4B,EAAAA,EAEpB,OACEvpB,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACqJ,GAAe,KAAf,KACCrJ,EAAA,cAAC+b,GAAA,CAAM,QAAS,GAAG4L,SAAeiB,EAAI,cAAiBviB,EAAAA,CAAM,CAC/D,EACArG,EAAA,cAAC0W,GAAA,CACC,IAAK,CAAE,GAAIkS,EAAI,MAAQ,IAAIA,EAAI,MAAQ,IAAM,CAAE,EAC/C,QAASjS,EACT,gBAAiBqB,EACjB,KAAM,GAAG2P,SAAeiB,EAAI,eAC5B,SAAU,CAACA,EAAI,aAAA,CACjB,CAAA,CACF,CAEJ,EClBMY,GAAYlqB,EAAOqsB,EAAM,IAAK,CAClC,GAAI,UACJ,SAAU,CACR,WAAY,CACV,KAAM,CAEJ,GAAI,wBACN,CACF,EACA,WAAY,CACV,KAAM,CACJ,QAAS,KACX,CACF,EACA,YAAa,CACX,KAAM,CACJ,UAAW,CACT,QAAS,wBACT,cAAe,OACf,OAAQ,CACN,GAAI,aACN,CACF,CACF,CACF,CACF,CACF,CAAC,EAEKyF,GAAwBtiB,GACvBA,EACD,CAAA,EAAAA,EAAQ,QAAQ,oCAAoC,GACpDA,EAAQ,aAAa,MAAM,IAAM,UAFhB,GAMVuiB,GAAe,CAAC,CAAE,IAAAzI,EAAK,UAAAiD,CAAU,IAAyB,CACrE,KAAM,CAAE,mBAAApE,EAAoB,aAAAD,EAAc,qBAAA8H,CAAqB,EAC7D/F,IAEI+H,EAAa,CAAC,EAAC9J,GAAA,MAAAA,EAAeoB,EAAI,KAElC2I,EAAsB3I,EAAI,2BAC1B4I,EAAsB5I,EAAI,yBAE1BqG,EAAAA,EAAkB,IAClBrG,EAAI,kBAAA,EAA4B,gBAC7BA,EAAI,cAAc,EAGrB6I,EAAiB,CACrBC,EACAnX,IACG,CACC,CAACsR,GAID,CADgBtR,EAAM,OAAmB,QAAQ,IAAI,GACtC6W,GAAqB7W,EAAM,MAAiB,GAI/DsR,EAAU6F,EAAQ,SAAUnX,CAAK,CACnC,EAEM8V,EAAiB9V,GAAoD,CACzE,GAAIA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,IAAK,CAC9C,GAAI6W,GAAqB7W,EAAM,MAAiB,EAC9C,OAEFA,EAAM,eAAe,EACrBkX,EACE7I,EACArO,CACF,CACF,CACA,GAAIA,EAAM,MAAQ,YAAa,CAC7BA,EAAM,eACN,EAAA,MAAMoX,EAAcpX,EAAM,OAAuB,QAAQ,IAAI,EACvDqX,EAAUD,GAAA,YAAAA,EAAY,mBACxBC,GAAWA,EAAQ,UAAY,MACjCA,EAAQ,MAAA,CAEZ,CACA,GAAIrX,EAAM,MAAQ,UAAW,CAC3BA,EAAM,iBACN,MAAMoX,EAAcpX,EAAM,OAAuB,QAAQ,IAAI,EACvDsX,EAAcF,GAAA,KAAA,OAAAA,EAAY,uBAC5BE,GAAeA,EAAY,UAAY,MACzCA,EAAY,MAEhB,CAAA,CACF,EAEA,OACE7xB,EAAA,cAACwpB,GAAA,CACC,WAAYZ,EAAI,cAAc,EAC9B,WAAY0I,EACZ,YAAa,CAAC,CAACzF,GAAa,CAACyF,EAC5B,GAAIzF,GAAa,CAChB,QAAUtR,GAAUkX,EAAe7I,EAAKrO,CAAK,EAC7C,SAAU,EACV,IAAK,CAAE,OAAQ,SAAU,EACzB,UAAW8V,CACb,GAECf,EAAqB,GACpBtvB,EAAA,cAAC2rB,EAAM,KAAN,CACC,cAAa,eAAe/C,EAAI,KAChC,IAAK,CAAE,MAAO,KAAM,OAAQA,EAAI,aAAa,EAAI,UAAY,MAAO,EACpE,QAAS2I,CAER3I,EAAAA,EAAI,gBACH5oB,EAAA,cAACuE,EAAA,CAAK,GAAIqkB,EAAI,gBAAkB7jB,cAAcwQ,EAAAA,YAAAA,CAAc,CAEhE,EAGDkS,GACCznB,EAAA,cAAC2rB,EAAM,KAAN,CAAW,IAAK,CAAE,MAAO,IAAK,CAC7B3rB,EAAAA,EAAA,cAACmxB,GAAA,CACC,IAAKvI,EACL,QAASqG,EACT,EAAA,gBAAiBuC,CACnB,CAAA,CACF,EAED5I,EAAI,gBAAA,EAAkB,IAAI,CAAC6D,EAAMtpB,IACzBnD,EAAA,cAACwsB,GAAA,CAAkB,IAAKC,EAAK,GAAI,KAAMA,CAAM,CAAA,CACrD,CACH,CAEJ,ECvHaqF,GAAiB,CAAC,CAC7B,SAAA1C,EACA,QAAAxF,EACA,MAAArqB,EACA,IAAAN,EACA,cAAA8yB,EAAgB,CACd,sBAAuB,EACvB,gBAAiB,EACnB,EACA,UAAAlG,KACGziB,CACL,IAA2B,CACzB,KAAM,CACJ,eAAA+e,EACA,aAAAM,EACA,qBAAA6G,EACA,mBAAA7H,EACA,QAAAE,CACF,EAAI4B,EAEEyI,EAAAA,EAAY7J,IAAmB3C,EAAe,QAC9CyM,EAAU,CAACD,GAAavJ,EAAmB,IAAA,EAE3CyJ,EAA0B,IAAc,CAC5C,IAAIC,EAAqB,EAEzB,OAAI7C,KAA0B,CAAC,CAAC7H,EAC9B0K,EAAqB,GACZ7C,EAAqB,GAAK,CAAC,CAAC7H,KACrC0K,EAAqB,GAGhB,GAAGxK,KAAWwK,mBACvB,EAEA,OAAIF,EAAgB,KAGlBjyB,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACwwB,GAAA,IAAiB,EAElBxwB,EAAA,cAAC2rB,EAAA,CACE,GAAGviB,EACJ,sBAAuB2oB,EAAc,sBACrC,mBAAoBA,EAAc,mBAClC,mBAAoBG,EACpB,EAAA,IAAK,CACH,GAAGjzB,EACH,GAAI+yB,GAAa,CACf,QAAS,GACT,cAAe,OACf,WAAY,4BACd,CACF,CAEAhyB,EAAAA,EAAA,cAAC+rB,GAAU,KAAV,CACC,MAAOxsB,EACP,SAAU6vB,EACV,SAAU2C,EAAc,gBACxB,IAAKA,EAAc,SAAA,CACrB,EACA/xB,EAAA,cAAC+rB,GAAU,KAAV,CAAe,QAASnC,EAAS,UAAWiC,CAAW,CAAA,CAC1D,CACF,CAEJ,ECvFauG,GAAe9yB,EAAO2H,EAAY,CAC7C,MAAO,qBACP,KAAM,eACN,cAAe,CACb,QAAS,GACT,OAAQ,cACR,CAAC,KAAM,CACL,cAAe,MACjB,CACF,EACA,SAAU,CACR,WAAY,CACV,KAAM,CACJ,OAAQ,UACV,EACA,MAAO,CACL,OAAQ,MACV,CACF,CACF,CACF,CAAC,EAQYorB,GACXryB,EAAM,WAAW,CAAC,CAAE,WAAAsyB,EAAY,KAAApwB,KAASgC,CAAK,EAAGC,IAE7CnE,EAAA,cAACoyB,IACC,IAAKjuB,EACL,WAAYmuB,EACZ,WAAW,SACX,WAAY,GACZ,KAAMpwB,EACL,GAAGgC,GAEJlE,EAAA,cAACuE,EAAA,CAAK,GAAIguB,aAAY,CACxB,CAEH,EAEHF,GAAO,YAAc,SCxCd,MAAMG,GAAiB,CAAC,CAC7B,SAAAC,EACA,SAAArrB,EAAW,GACX,MAAAf,EAAQ,iBACLnC,CACL,IAA4B,CAC1B,KAAM,CAAE,WAAAwuB,EAAY,UAAAC,EAAW,WAAAL,EAAY,oBAAAM,CAAoB,EAC7DC,GAAAA,YAAY,CAAE,GAAIJ,CAAS,CAAC,EAE9B,OACEzyB,EAAA,cAACuyB,GAAA,CACC,IAAKK,EACL,WAAYN,EACZ,MAAOjsB,EACP,SAAUe,EACT,GAAKA,EAAuB,CAAC,EAAburB,EAChB,GAAKvrB,EAAwB,CAAC,EAAdsrB,EAChB,GAAGxuB,CAAAA,CACN,CAEJ,EAEAsuB,GAAe,YAAc,iBChB7B,MAAM3Z,GAAavZ,EAAO+E,GAAAA,IAAI,EAEjByuB,GAAe,CAAC,CAC3B,GAAAjnB,EACA,QAAA5H,EAAU,GACV,IAAAhF,EACA,aAAA8zB,EAAe,GACf,SAAA3rB,KACGlD,CACL,IAAmD,CACjD,KAAM,CAAE,UAAA8uB,EAAW,WAAAC,EAAY,WAAAX,EAAY,UAAAK,EAAW,WAAAD,CAAW,EAC/DG,GAAAA,YAAY,CAAE,GAAAhnB,CAAG,CAAC,EAGpB,OACE7L,EAAA,cAFgBiE,EAAU4U,GAAahZ,EAEtC,CACC,IAAKozB,EACL,IAAK,CACH,CAAC,WAAY,EACb,UACE,8GACF,OAAQX,EAAa,EAAI,OACzB,CAAC,kBAAkBU,GAAA,KAAA,OAAAA,EAAW,IAAK,EACnC,CAAC,kBAAkBA,GAAA,KAAA,OAAAA,EAAW,IAAK,EACnC,cAAe,CACb,QAAS,GACT,OAAQ,cACR,CAAC,KAAM,CACL,cAAe,MACjB,CACF,EACA,GAAID,EAAe,CAAE,OAAQT,EAAa,WAAa,MAAO,EAAI,CAAA,EAClE,GAAGrzB,CACL,EACA,gBAAeqzB,EACf,gBAAelrB,EACd,GAAI2rB,GAAgB,CAAC3rB,EAAWurB,EAAY,CAC5C,EAAA,GAAII,GAAgB,CAAC3rB,EAAWsrB,EAAa,GAC7C,GAAGxuB,CAAAA,CACN,CAEJ,EAEA4uB,GAAa,YAAc,eCnCd,MAAAI,GAAe,CAAC,CAC3B,YAAAC,EACA,aAAAC,EACA,SAAArzB,CACF,IAAmD,CACjD,KAAM,CAACszB,EAAOC,CAAQ,EAAItzB,EAAM,SAA4BmzB,CAAW,EACvEnzB,EAAM,UAAU,IAAM,CACpBszB,EAASH,CAAW,CACtB,EAAG,CAACA,CAAW,CAAC,EAEhB,MAAMI,EAAUC,GAAAA,WACdC,aAAUC,GAAAA,aAAa,EACvBD,GAAUE,UAAAA,kBAAgB,CACxB,iBAAkBC,GACpB,2BAAA,CAAC,CACH,EAeA,OACE5zB,EAAA,cAAC6zB,GAAAA,WAAA,CACC,QAASN,EACT,mBAAoBO,GACpB,cAAA,UAjBmBvZ,GAAwB,CAC7C,KAAM,CAAE,OAAA1T,EAAQ,KAAAktB,CAAK,EAAIxZ,EACrB1T,EAAO,KAAMktB,GAAA,KAAAA,OAAAA,EAAM,KAAMltB,EAAO,MAAOktB,GAAA,KAAA,OAAAA,EAAM,KAC/CT,EAAUD,GAAU,CAClB,MAAMW,EAAWX,EAAM,QAAQxsB,EAAO,EAAE,EAClCotB,EAAWZ,EAAM,QAAQU,EAAK,EAAE,EAChCG,EAAWC,aAAUd,EAAOW,EAAUC,CAAQ,EACpD,OAAAb,EAAa,CAAE,MAAOc,EAAU,SAAAF,EAAU,SAAAC,CAAS,CAAC,EAC7CC,CACT,CAAC,CAEL,CAAA,EAQIl0B,EAAA,cAACo0B,GAAAA,gBAAA,CAAgB,MAAOf,GAAQtzB,CAAS,CAC3C,CAEJ,EAEAmzB,GAAa,YAAc,eC9DpB,MAAMmB,GAAW,CAAE,KAAApvB,GAAM,KAAArC,GAAM,OAAAyvB,EAAO,ECWhCiC,GAAsB,CAAC,CAClC,IAAA1L,EACA,SAAA2L,EAAW,IACb,IAAkC,CAChC,MAAMC,EAAQ5L,EAAI,SAAS2L,GAC3B,OACEv0B,EAAA,cAACq0B,GAAS,KAAT,CAAc,GAAIG,EAAO,QAAO,IAC/Bx0B,EAAA,cAAC2rB,EAAM,IAAN,KACE/C,EAAI,gBAAkB,EAAA,IAAI,CAAC6D,EAAMtpB,IAC5BA,IAAM,EAENnD,EAAA,cAAC2rB,EAAM,KAAN,CAAW,IAAKc,EAAK,EAAA,EACpBzsB,EAAA,cAACq0B,GAAS,OAAT,CACC,SAAUG,EACV,IAAK,CAAE,QAAS,cAAe,CACjC,CAAA,EACC9H,GAAAA,WAAWD,EAAK,OAAO,UAAU,KAAMA,EAAK,WAAY,CAAA,CAC3D,EAGGzsB,EAAA,cAACwsB,GAAA,CAAkB,IAAKC,EAAK,GAAI,KAAMA,CAAM,CAAA,CACrD,CACH,CACF,CAEJ,EC7BagI,GAAuB,CAAC,CACnC,QAAA7K,EAAU,GACV,SAAA2K,EAAW,QACRnrB,CACL,IAA0B,CACxB,KAAM,CAAE,YAAA0iB,CAAY,EAAIvC,EACxB,EAAA,OACEvpB,EAAA,cAAC2rB,EAAM,KAAN,CAAY,GAAGviB,EAAO,QAASwgB,CAC7BkC,EAAAA,EAAAA,EAAc,KAAK,IAAKlD,GAErB5oB,EAAA,cAACs0B,GAAA,CAAoB,IAAK1L,EAAK,IAAKA,EAAI,GAAI,SAAU2L,CAAU,CAAA,CAEnE,CACH,CAEJ,ECLaG,GAAmB,CAAC,CAC/B,SAAAH,EAAW,KACX,cAAAI,EACA,SAAAvF,EACA,QAAAxF,EACA,MAAArqB,EACA,IAAAN,KACGmK,CACL,IAA6B,CAC3B,KAAM,CAAE,eAAA+e,EAAgB,KAAAN,EAAM,QAAAC,CAAQ,EAAIyB,EAAa,EACjDyI,EAAY7J,IAAmB3C,EAAe,QAE9CoP,EAAS50B,EAAM,QACnB,IACE6nB,EAAK,QAAQ,IAAKe,GACTA,EAAI2L,EACZ,EACH,CAAC1M,CAAI,CACP,EACMgN,EAAmB70B,EAAM,YAC7B,CAAC,CAAE,SAAAg0B,EAAU,SAAAC,CAAS,IAAM,CAC1B,MAAMa,EAAgBX,GAAAA,UAAUtM,EAAK,QAASmM,EAAUC,CAAQ,EAC1D1N,EAAU,CAAE,QAASuO,EAAe,MAAOjN,EAAK,KAAM,EAC5DC,EAAQ,CAAE,QAASgN,EAAe,MAAOjN,EAAK,KAAM,CAAC,EACrD8M,GAAA,MAAAA,EAAgB,CAAE,SAAAX,EAAU,SAAAC,EAAU,QAAA1N,CAAQ,CAChD,CAAA,EACA,CAACsB,EAAM8M,CAAa,CACtB,EAEA,OACE30B,EAAA,cAACq0B,GAAS,KAAT,CAAc,aAAcQ,EAAkB,YAAaD,CAC1D50B,EAAAA,EAAA,cAACwwB,GAAA,IAAiB,EAClBxwB,EAAA,cAAC2rB,EAAA,CACE,GAAGviB,EACJ,IAAK,CACH,GAAGnK,EACH,GAAI+yB,GAAa,CACf,QAAS,GACT,cAAe,OACf,WAAY,4BACd,CACF,CAAA,EAEAhyB,EAAA,cAAC+rB,GAAU,KAAV,CAAe,MAAOxsB,EAAO,SAAU6vB,CAAAA,CAAU,EAClDpvB,EAAA,cAACy0B,GAAA,CAAqB,QAAS7K,EAAS,SAAU2K,CAAAA,CAAU,CAC9D,CACF,CAEJ,ECrEO,IAAKQ,IAAAA,IACVA,EAAAA,EAAA,KAAO,GAAP,OACAA,EAAAC,EAAA,KAAO,GAAP,OAFUD,IAAAA,IAKL,EAAA,EAAA,MAAME,GAAmB,mBACnBC,GAAsB,sBACtBC,GAAkB,kBCAlBC,GAAgC,CAC3CC,EACAC,EACAC,IAC4B,CAC5B,MAAMC,EAAkB,MAAM,KAC5B,CAAE,OAAQF,CAAW,EACrB,CAACN,EAAGliB,IAAUA,EAAQ,CACxB,EAOA,IAAI2iB,EAAoBF,EAAuB,EAC/C,MAAMG,EAA8BF,GAAoB,CACtDN,GACA,GAAGM,EACHL,EACF,EAaA,GAAIG,GAAcG,EAChB,OAAOC,EAA2BF,CAAe,EAMnD,MAAMG,EAAiBJ,GAAwB,EACzCK,EAAuBL,GAAwB,EAC/CM,EAAcN,GAAwB,EAExCK,IAEFH,GAAqB,GAGnBE,IAEFF,GAAqB,GAGvB,MAAMK,EAAYN,EAAgB,GAC5BO,EAAWP,EAAgBA,EAAgB,OAAS,GAe1D,GAAIH,EAAcI,EAAmB,CACnC,MAAMO,EAAqB,GAC3B,OAAIH,GACFG,EAAmB,KAAK,GAAGR,EAAgB,MAAM,EAAGC,CAAiB,CAAC,EAEpEG,GACFI,EAAmB,KAAKf,EAAgB,EAEtCU,GACFK,EAAmB,KAAKD,CAAQ,EAE3BL,EAA2BM,CAAkB,CACtD,CAgBA,GAAIX,EAAcC,EAAaG,EAAmB,CAChD,MAAMO,EAAqB,CAAA,EAC3B,OAAIL,GACFK,EAAmB,KAAKF,CAAS,EAE/BF,GACFI,EAAmB,KAAKf,EAAgB,EAEtCY,GACFG,EAAmB,KACjB,GAAGR,EAAgB,MAAMF,EAAaG,EAAmBH,CAAU,CACrE,EAEKI,EAA2BM,CAAkB,CACtD,CAqBA,MAAMC,EAAoBJ,EACpBK,EAAmCX,GAAwB,EAC3DY,EAA8CZ,GAAwB,EACtEa,EAAiBT,EAEjBK,EAAqB,GAC3B,OAAIG,EACFH,EAAmB,KACjB,GAAGR,EAAgB,MACjBH,EAAc,EAAII,EAClBJ,EAAc,CAChB,CACF,EACSa,EACTF,EAAmB,KACjB,GAAGR,EAAgB,MAAMH,EAAcI,EAAmBJ,CAAW,CACvE,EACSY,GACTD,EAAmB,KACjB,GAAGR,EAAgB,MAAMH,EAAc,EAAGA,EAAc,EAAI,CAAC,CAC/D,EAEEO,GACFI,EAAmB,KAAKf,EAAgB,EAEtCmB,GACFJ,EAAmB,KAAKD,CAAQ,EAE3BL,EAA2BM,CAAkB,CACtD,EAEaK,GAAwB,CACnCC,EACAC,EACAjB,IACuB,CACvB,GAAIgB,EAAYhB,EAAY,OAC5B,IAAIkB,EAAWF,EACf,KAAOC,EAAc,SAASC,CAAQ,GACpCA,IAEF,OAAOA,CACT,EAEaC,GAA4B,CACvCH,EACAC,IACuB,CACvB,GAAID,EAAY,EAAG,OACnB,IAAII,EAAeJ,EACnB,KAAOC,EAAc,SAASG,CAAY,GACxCA,IAEF,OAAOA,CACT,ECxLaC,GAAoB32B,EAAM,cAAsC,CAC3E,SAAU,IAAM,KAChB,iBAAkB,IAAM,KACxB,aAAc,IAAM,KACpB,YAAa,EACb,WAAY,EACZ,YAAa,IAAM,KACnB,gBAAiB,CACjB,EAAA,OAAQ,CAAA,EACR,eAAgB,CAAC,EACjB,cAAe,CAAA,CACjB,CAAC,EAEY42B,GAAqB,CAAC,CACjC,qBAAAC,EACA,aAAAC,EACA,qBAAAvB,EAAuBR,GAAsB,KAC7C,WAAAO,EACA,eAAAyB,EAAiB,CACjB,EAAA,cAAAR,EAAgB,CAAA,EAChB,YAAAS,EAAc,IAAM,KACpB,OAAAC,EAAS,CACT,EAAA,SAAAl3B,CACF,IAAwD,CACtD,KAAM,CAACm3B,EAAqBC,CAAsB,EAAIn3B,EAAM,SAAS,CAAC,EAEhEq1B,EAAcyB,GAAgBI,EAE9BE,EAAWp3B,EAAM,YACpBq3B,GAAuB,CACtBF,EAAuBE,CAAU,EACjCR,GAAA,MAAAA,EAAuBQ,CACzB,CAAA,EACA,CAACR,CAAoB,CACvB,EAEMH,EAAerB,EAAc,EAC7BiC,EAAwBb,GAC5BC,EACAH,CACF,EAEMgB,EAAmBv3B,EAAM,YAAY,IAAM,CAC3Cs3B,GAAuBF,EAASE,CAAqB,CAC3D,EAAG,CAACF,EAAUE,CAAqB,CAAC,EAE9Bd,EAAWnB,EAAc,EACzBmC,EAAoBnB,GACxBG,EACAD,EACAjB,CACF,EACMmC,EAAez3B,EAAM,YAAY,IAAM,CACvCw3B,GAAmBJ,EAASI,CAAiB,CACnD,EAAG,CAACJ,EAAUI,CAAiB,CAAC,EAE1BE,EAAkBtC,GACtBC,EACAC,EACAC,CACF,EAEM72B,EAAQsB,EAAM,QAAQ,KACnB,CACL,aAAAy3B,EACA,iBAAAF,EACA,SAAAH,EACA,YAAA/B,EACA,gBAAAqC,EACA,eAAAX,EACA,cAAAR,EACA,WAAAjB,EACA,YAAA0B,EACA,sBAAAM,EACA,kBAAAE,EACA,OAAAP,CACF,GACC,CACDQ,EACAF,EACAH,EACA/B,EACA0B,EACAW,EACAnB,EACAjB,EACA0B,EACAM,EACAE,EACAP,CACF,CAAC,EAED,OACEj3B,EAAA,cAAC22B,GAAkB,SAAlB,CAA2B,MAAOj4B,CAChCqB,EAAAA,CACH,CAEJ,ECtGa0mB,GAAgB,IAA8B,CACzD,MAAMra,EAAUpM,EAAM,WAAW22B,EAAiB,EAElD,GAAI,CAACvqB,EACH,MAAM,IAAI,MACR,2EACF,EAGF,OAAOA,CACT,ECNMiO,GAAmB/a,EAAO2H,EAAY,CAC1C,GAAI,KACJ,aAAc,CACZ,QAAS,KACX,CACF,CAAC,EAEY0wB,GACXvuB,GACG,CACH,KAAM,CAAE,aAAAquB,EAAc,OAAAR,EAAQ,kBAAAO,CAAkB,EAAI/Q,GAAc,EAIlE,OACEzmB,EAAA,cAACqa,GAAA,CACC,WAAY,GACZ,KAAK,KACL,MAAM,UACN,QAASod,EACT,SARe,CAACD,EASf,GAAGpuB,EACJ,OAAO6tB,GAAA,KAAAA,OAAAA,EAAQ,sBAAuB,WAAA,EAEtCj3B,EAAA,cAACuE,EAAA,CAAK,GAAIgR,EAAAA,YAAAA,CAAc,CAC1B,CAEJ,EC5BMvO,GAAe1H,EAAO,SAAU,CACpC,WAAY,SACZ,OAAQ,wBACR,aAAc,KACd,OAAQ,UACR,WAAY,QACZ,eAAgB,SAChB,WAAY,SACZ,MAAO,cACP,QAAS,OACT,cAAe,SACf,EAAG,IACH,WAAY,IACZ,MAAO,cACP,GAAI,SACJ,SAAU,WAEV,mBAAoB,CAClB,UAAW,CACT,MAAO,eACP,GAAI,QACN,EACA,WAAY,CACV,MAAO,YACP,GAAI,QACN,EACA,kBAAmB,CACjB,GAAGqB,IACL,CACF,EACA,cAAe,CACb,GAAGyB,EACH,cAAe,MACjB,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,MAAO,KACP,OAAQ,IACV,CACF,EACA,SAAU,CACR,KAAM,CACJ,OAAQ,qBACR,MAAO,WACP,WAAY,IACZ,mBAAoB,CAClB,UAAW,CACT,YAAa,YACb,MAAO,WACT,EACA,WAAY,CACV,YAAa,YACb,UAAW,WACb,CACF,CACF,CACF,EACA,UAAW,CACT,KAAM,CACJ,WAAY,IACZ,MAAO,QACP,GAAI,WACJ,mBAAoB,CAClB,UAAW,CACT,MAAO,QACP,GAAI,WACN,EACA,WAAY,CACV,MAAO,QACP,GAAI,WACN,CACF,CACF,CACF,CACF,EAEA,iBAAkB,CAChB,CACE,SAAU,GACV,UAAW,GACX,IAAK,CACH,WAAY,IACZ,MAAO,QACP,GAAI,WACJ,UAAW,kCACX,wBAAyB,CACvB,YAAa,kBACf,EACA,mBAAoB,CAClB,UAAW,CACT,MAAO,QACP,GAAI,WACN,EACA,WAAY,CACV,MAAO,QACP,GAAI,WACN,CACF,CACF,CACF,CACF,CACF,CAAC,EAEYw1B,GAAiB,CAAC,CAC7B,WAAAP,EACA,IAAAp4B,EACA,QAAA8K,CACF,IAA2B,CACzB,KAAM,CAAE,YAAAsrB,EAAa,SAAA+B,EAAU,eAAAL,EAAgB,cAAAR,EAAe,YAAAS,CAAY,EACxEvQ,KAEIoR,EAAcd,EAAe,SAASM,CAAU,EAChD/F,EAAaiF,EAAc,SAASc,CAAU,EAE9CS,EAAazC,IAAgBgC,EAE7BU,EAAgB,IAAM,CACtBD,GAAcxG,GAClB0F,GAAA,MAAAA,EAAcK,CAAAA,CAChB,EAEMW,EAAiBX,GAAe,CACpCttB,GAAA,MAAAA,EAAAA,EACAqtB,EAASC,CAAU,CACrB,EAEA,OACEr3B,EAAA,cAACgH,GAAA,CACC,SAAU8wB,EACV,KAAK,KACL,QAAS,IAAME,EAAcX,CAAU,EACvC,IAAKp4B,EACL,UAAW44B,EACX,SAAUvG,EACV,eAAcwG,GAAc,OAC5B,gBAAexG,EACf,YAAayG,CAAAA,EAEZV,CACH,CAEJ,EC/IaY,GAAoB,CAAC,CAChC,SAAAl4B,CACF,IAAwC,CACtC,KAAM,CAAE,WAAAu1B,EAAY,OAAA2B,CAAO,EAAIxQ,GAAc,EACvCiR,EAAkB,MAAM,KAC5B,CAAE,OAAQpC,CAAW,EACrB,CAACN,EAAGliB,IAAUA,EAAQ,CACxB,EAEM,CAAColB,EAAQC,CAAS,EAAIn4B,EAAAA,QAAM,SAAkB,EAAK,EAEzD,OACEA,EAAAA,QAAA,cAACo4B,GAAA,CAAQ,KAAMF,EAAQ,aAAcC,EAAW,YAAa,EAC3Dn4B,EAAAA,EAAAA,QAAA,cAACo4B,GAAQ,QAAR,CAAgB,QAAO,EAAA,EACrBr4B,GACCC,EAAAA,QAAA,cAACiH,EAAA,CACC,WAAY,GACZ,KAAK,KACL,MAAM,UACN,OAAOgwB,GAAA,KAAAA,OAAAA,EAAQ,sBAAuB,0BACtC,cAAY,4BAEZj3B,EAAAA,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAI8zB,EAAAA,QAAAA,CAAU,CACtB,CAEJ,EACAr4B,EAAAA,QAAA,cAACo4B,GAAQ,QAAR,CAAgB,KAAK,KAAK,gBAAiB,GAAO,IAAK,CAAE,EAAG,CAAE,CAC7Dp4B,EAAAA,EAAAA,QAAA,cAAC8I,EAAA,CACC,IAAK,CACH,EAAG,KACH,QAAS,OACT,SAAU,OACV,IAAK,KACL,eAAgB,QAClB,GAEC4uB,GAAA,KAAA,OAAAA,EAAiB,IAAKL,GAEnBr3B,EAAA,QAAA,cAAC43B,GAAA,CACC,IAAKP,EACL,WAAYA,EACZ,QAAS,IAAMc,EAAU,EAAK,EAChC,CAGN,CAAA,CACF,CACF,CAEJ,EC/CM9d,GAAmB/a,EAAO2H,EAAY,CAC1C,GAAI,KACJ,aAAc,CACZ,QAAS,KACX,CACF,CAAC,EAEYqxB,GACXlvB,GACG,CACH,KAAM,CAAE,iBAAAmuB,EAAkB,OAAAN,EAAQ,sBAAAK,CAAsB,EAAI7Q,GAAc,EAI1E,OACEzmB,EAAA,cAACqa,GAAA,CACC,WAAY,GACZ,KAAK,KACL,MAAM,UACN,QAASkd,EACT,SARe,CAACD,EASf,GAAGluB,EACJ,OAAO6tB,GAAA,KAAAA,OAAAA,EAAQ,0BAA2B,eAAA,EAE1Cj3B,EAAA,cAACuE,EAAA,CAAK,GAAI8Q,EAAAA,WAAAA,CAAa,CACzB,CAEJ,ECvBakjB,GAAkB,IAAmB,CAChD,KAAM,CAAE,gBAAAb,CAAgB,EAAIjR,KAE5B,OACEzmB,EAAA,cAAAA,EAAA,SACG03B,KAAAA,EAAgB,IAAI,CAACc,EAAgBr1B,IAAM,CAC1C,OAAQq1B,QACDvD,GACH,OAAOj1B,EAAA,cAACi4B,GAAA,CAAkB,IAAKO,EAAiBr1B,EAAG,OAChD+xB,GACH,OAAOl1B,EAAA,cAACs4B,GAAA,CAAyB,IAAKE,EAAgB,OACnDrD,GACH,OAAOn1B,EAAA,cAAC23B,GAAA,CAAqB,IAAKa,EAAgB,UAElD,OACEx4B,EAAA,cAAC43B,GAAA,CACC,IAAKY,EACL,WAAYA,CACd,CAAA,EAGR,CAAC,CACH,CAEJ,EC3BMC,GAAsB,CAAC,CAC3B,YAAA5zB,EACA,qBAAAgyB,EACA,aAAAC,EACA,qBAAAvB,EAAuBR,GAAsB,KAC7C,WAAAO,EACA,eAAAyB,EAAiB,GACjB,cAAAR,EAAgB,GAChB,YAAAS,EAAc,IAAM,KACpB,OAAAC,EAAS,CAAA,EACT,SAAAl3B,KACGmE,CACL,IACOoxB,EAcHt1B,EAAA,cAAC42B,GAAA,CAXD,qBAAAC,EACA,aAAAC,EACA,qBAAAvB,EACA,WAAAD,EACA,eAAAyB,EACA,cAAAR,EACA,YAAAS,EACA,OAAAC,CAKEj3B,EAAAA,EAAA,cAAC4D,GAAA,CAAY,KAAK,QAAQ,OAAO,WAAY,GAAGiB,EAAa,QAAO,EAAA,EAClE7E,EAAA,cAAC8I,EAAA,CAAK,IAAK,EAAI,GAAG5E,CAAAA,EACfnE,GAAYC,EAAA,cAACu4B,GAAA,IAAgB,CAChC,CACF,CACF,EApBsB,KAwBbG,GAAa,OAAO,OAAOD,GAAqB,CAC3D,QAASR,EACX,CAAC,EAEDQ,GAAoB,YAAc,aCzClC,MAAME,GAAYr5B,EAAO,MAAO,CAC9B,QAAS,OACT,cAAe,SACf,eAAgB,gBAChB,WAAY,SACZ,mBAAoB,eACpB,SAAU,OACV,MAAO,OACP,IAAK,KACL,GAAI,KACJ,MAAO,CACL,cAAe,KACjB,CACF,CAAC,EAOYo5B,GAAa,CAAC,CAAE,YAAA7zB,KAAgBuE,CAAM,IAAuB,CACxE,KAAM,CACJ,gBAAA0d,EACA,SAAA8H,EACA,YAAA9C,EACA,aAAA8M,EACA,aAAAC,EACA,aAAApQ,EACA,eAAAN,CACF,EAAIoB,IAEJvpB,EAAM,UAAU,IAAM,CACpB8mB,GACF,EAAG,CAACA,CAAe,CAAC,EAEpB,KAAM,CAAE,WAAYhB,CAAgB,EAAI8I,EAAS,EAE3CqD,EADY9J,IAAmB3C,EAAe,SACtBiD,MAAmB,EAG3CqQ,EAAiBF,IAAiB,EAExC,GAAI3G,GAAW,CAAC6G,EAAgB,OAAO,KAEvC,MAAMC,EACJjT,EAAgB,UAAYA,EAAgB,SAAW,EACnDkT,EAAiBD,EAAmBjN,EAAY,EAAE,KAAK,OAAS,EAGhEmN,EAAWnmB,GAAkB,CACjC+lB,EAAa/lB,EAAQ,CAAC,CACxB,EAEA,OACE9S,EAAA,cAAC24B,GAAA,CAAW,GAAGvvB,GACbpJ,EAAA,cAACuK,EAAA,CAAK,KAAK,MACR,GAAGwuB,EAAiB,SAAgBC,OAAAA,EAAe,iBAAiBvQ,EAAAA,SACvE,EACAzoB,EAAA,cAACy4B,GAAA,CACC,YAAa5zB,EACb,aAAcihB,EAAgB,UAAY,EAC1C,WAAY8S,IACZ,qBAAsBK,CAAAA,CACxB,CACF,CAEJ,EAEAP,GAAW,YAAc,aCvDlB,MAAM3M,GAAY,OAAO,OAAO1E,GAAmB,CAMxD,KAAMuE,GAMN,SAAUY,GAKV,iBAAkBkI,GAMlB,aAAc/F,GAQd,KAAMQ,GAON,WAAYW,GAQZ,SAAUY,GAKV,WAAYgI,GAOZ,IAAKrH,GAWL,MAAOS,GASP,QAAStB,GAaT,MAAOjD,GAMP,WAAYD,GAMZ,sBAAuBwB,GAMvB,qBAAsBqC,GAMtB,YAAa7E,EACf,CAAC,EC3IY4M,GAAkB,CAC7B,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAEaC,GAAoB,CAC/B,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAEaC,GAAiB,CAC5B,KAAM,gBACN,KAAM,aACN,SAAU,iBACV,SAAU,YACV,aAAc,eAChB,EC7BaC,GAAM/5B,EAAO,SAAU,CAClC,GAAI,cACJ,OAAQ,OACR,aAAc,SACd,MAAO,WACP,OAAQ,UACR,WAAY,QACZ,SAAU,MACV,KAAM,KACN,EAAG,EACH,WAAY,WACZ,UAAW,CACT,GAAI,UACN,EACA,WAAY,CACV,MAAO,QACP,GAAI,aACN,EACA,UAAW,CACT,QAAS,wBACT,cAAe,KACjB,EACA,cAAe,CACb,QAAS,MACT,OAAQ,SACV,EACA,SAAU,CACR,WAAY,CACV,KAAM,CACJ,GAAI,cACJ,MAAO,QACP,UAAW,CAAE,GAAI,aAAc,CACjC,CACF,EACA,QAAS,CACP,KAAM,CAAE,GAAI,UAAW,CACzB,EACA,eAAgB,CACd,KAAM,CAAE,MAAO,UAAW,CAC5B,CACF,CACF,CAAC,EC1BKg6B,GAAOh6B,EAAO,MAAO,CACzB,QAAS,OACT,oBAAqB,iBACrB,QAAS,OACX,CAAC,EAEK0H,GAAe1H,EAAOsK,GAAQ,CAClC,MAAO,YACP,EAAG,KACH,MAAO,KACP,SAAU,CACR,SAAU,CACR,MAAO,CACL,MAAO,uBACP,WAAY,IACZ,UAAW,CACT,GAAI,sBACJ,MAAO,sBACT,EACA,cAAe,CAAE,GAAI,kBAAmB,CAC1C,CACF,CACF,CACF,CAAC,EAsBK2vB,GAAqB,CACzBC,EACAC,IACa,CACb,MAAMC,EAAQF,EAAa,MAAM,EAAGC,CAAc,EAElD,OADYD,EAAa,MAAMC,CAAc,EAClC,OAAOC,CAAK,CACzB,EAEaC,GAAW,CAAC,CACvB,IAAA16B,EACA,gBAAA26B,EACA,aAAAC,EACA,eAAAJ,EAAiB,EACjB,WAAAK,EAAaZ,GACb,aAAAM,EAAeL,GACf,OAAAlC,EAASmC,GACT,KAAAW,EAAO,IAAI,KACX,QAAAC,EACA,QAAAC,EACA,QAAAC,KACGx3B,CACL,IAAqB,CACnB,KAAM,CAACy3B,EAAWC,CAAY,EAAIp6B,EAAM,SAAkB,EAAK,EACzD,CAACq6B,EAAaC,CAAc,EAAIt6B,EAAM,SAC1C+5B,GAAA,KAAA,OAAAA,EAAM,YACR,CAAA,EAEMQ,EAAiBC,GAAuB,CAC5C,MAAMC,EAAUV,EAChBU,EAAQ,YAAYD,CAAI,EACxBN,EAAQO,CAAO,EACfL,EAAa,EAAK,CACpB,EAEMM,EAAcV,GAAWK,EAAc,IAAML,EAAQ,YACrDW,EAAAA,EAAcV,GAAWI,GAAeJ,EAAQ,YAAY,EAE5DW,EAAW,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAAC5F,EAAG7xB,IAAM,CACpD,MAAMq3B,EAAOH,EAAcl3B,EAC3B,OACG82B,GAAWO,EAAOP,EAAQ,YAC1BD,GAAAA,GAAWQ,EAAOR,EAAQ,YAAA,EAEpB,EACFQ,CACT,CAAC,EAEK,CAAE,UAAAK,EAAW,aAAAC,EAAc,gBAAAC,EAAiB,aAAAC,CAAa,EAAIC,GAAU,UAAA,CAC3E,eAAAxB,EACA,gBAAiB,GACjB,KAAAM,EACA,QAAAC,EACA,QAAAC,EACA,GAAGv3B,CACL,CAAC,EAED,OAAKm4B,EAAU,OAGb76B,EAAA,cAACH,EAAA,CACC,IAAK,CAAE,SAAU,WAAY,MAAO,cAAe,GAAI,MAAO,GAAGZ,CAAI,CAErEe,EAAAA,EAAA,cAAC8I,EAAA,CAAK,IAAK,CAAE,SAAU,WAAY,IAAK,EAAG,MAAO,KAAM,CAAA,EACtD9I,EAAA,cAACiH,EAAA,CACC,MAAOgwB,EAAOkD,EAAY,eAAiB,YAC3C,MAAM,UACN,KAAK,KACJ,GAAI,CAACA,GAAaW,EAAa,CAAE,UAAAD,CAAU,CAAC,EAC5C,GAAIV,GAAa,CAChB,QAAS,IAAMG,EAAeD,EAAc,EAAE,CAChD,EACA,SAAUF,GAAaO,CAAAA,EAEvB16B,EAAA,cAACuE,EAAA,CAAK,GAAI8Q,EAAAA,YAAa,CACzB,EACArV,EAAA,cAACiH,EAAA,CACC,MAAOgwB,EAAOkD,EAAY,WAAa,QACvC,MAAM,UACN,KAAK,KACJ,GAAI,CAACA,GAAaY,EAAgB,CAAE,UAAAF,CAAU,CAAC,EAC/C,GAAIV,GAAa,CAChB,QAAS,IAAMG,EAAeD,EAAc,EAAE,CAChD,EACA,SAAUF,GAAaQ,CAAAA,EAEvB36B,EAAA,cAACuE,EAAA,CAAK,GAAIgR,EAAAA,YAAc,CAAA,CAC1B,CACF,EACC4kB,GACCn6B,EAAA,cAACs5B,GAAA,CACC,IAAK,CACH,oBAAqB,iBACrB,GAAI,KACJ,UAAW,MACX,QAAS,OACX,CAAA,EAECsB,EAAS,IAAI,CAACJ,EAAMr3B,IAAM,CACzB,MAAM+3B,EAAgBV,IAAST,EAAK,YAAY,EAChD,OAAKS,EAIHx6B,EAAA,cAACgH,GAAA,CACC,IAAK,GAAGwzB,IAAOr3B,IACf,MAAO+3B,EAAgB,UAAY,UACnC,QAAS,IAAMX,EAAcC,CAAI,EACjC,SAAUU,GAETV,CACH,EAVOx6B,EAAA,cAACH,EAAA,CAAI,IAAKsD,EAAG,IAAK,CAAE,MAAO,KAAM,OAAQ,IAAK,EAAG,CAY5D,CAAC,CACH,EAED,CAACg3B,GACAU,EAAU,IAAI,CAAC,CAAE,MAAAM,EAAO,KAAAX,EAAM,MAAAY,CAAM,IAClCp7B,EAAA,cAACH,EAAA,CAAI,IAAK,GAAGs7B,IAAQX,KACnBx6B,EAAA,cAAC8I,EAAA,CAAK,IAAK,CAAE,OAAQ,KAAM,WAAY,SAAU,GAAI,IAAK,CACxD9I,EAAAA,EAAA,cAAC4J,GAAA,CACC,MAAM,UACN,IAAK,CAAE,GAAI,IAAK,MAAO,WAAY,EACnC,QAAS,IAAMwwB,EAAa,EAAI,CAE/BN,EAAAA,EAAWqB,GAAO,IAAEX,CACvB,CACF,EACAx6B,EAAA,cAACs5B,GAAA,CAAK,IAAK,CAAE,GAAI,IAAK,CACnBC,EAAAA,GAAmBC,EAAcC,CAAc,EAAE,IAC/C4B,GACCr7B,EAAA,cAACuK,EAAA,CACC,GAAG,OACH,KAAK,KACL,OAAO,OACP,IAAK,GAAG4wB,IAAQX,IAAOa,IACvB,IAAK,CAAE,UAAW,QAAS,CAAA,EAE1BA,CACH,CAEJ,CACF,EACAr7B,EAAA,cAACs5B,GAAA,KACE8B,EAAM,IAAI,CAACE,EAAMC,IAChBD,EAAK,IAAI,CAACE,EAAS1oB,IAAU,CAC3B,MAAMlT,EAAM,GAAGu7B,IAAQX,IAAOe,IAAYzoB,IAE1C,GAAI,CAAC0oB,EAAS,OAAOx7B,EAAA,cAAC,OAAI,IAAKJ,CAAAA,CAAK,EAEpC,KAAM,CAAE,KAAAm6B,GAAM,SAAA0B,EAAU,MAAAC,GAAO,UAAAC,GAAW,UAAAC,EAAU,EAClDJ,EAEF,OACEx7B,EAAA,cAACq5B,GAAA,CACC,eAAgBsC,IAAaC,GAC7B,WAAYH,EACZ,QAASC,GACT,IAAK97B,EACL,IACE67B,EAAW7B,EAAkB8B,GAAQ7B,EAAe,KAErD,GAAGmB,EAAa,CAAE,QAAAQ,CAAQ,CAAC,EAC5B,KAAK,QAEJzB,EAAAA,GAAK,QACR,CAAA,CAEJ,CAAC,CACH,CACF,CACF,CACD,CACL,EApH4B,IAsHhC,EAEAJ,GAAS,YAAc,WC/NvB,MAAMp3B,GAAgBjD,EAAOkD,WAAS,CACpC,GAAI,QACJ,aAAc,KACd,UAAW,KACX,SAAU,OACV,EAAG,WACH,GAAI,KACJ,SAAU,WACV,OAAQgD,GACR,eAAgB,CACd,kBAAmB,OACnB,wBAAyB,gCACzB,WAAY,qBACZ,uBAAwB,CACtB,qBAAsB,CAAE,cAAevE,EAAiB,EACxD,uBAAwB,CAAE,cAAeC,EAAiB,EAC1D,wBAAyB,CAAE,cAAeH,EAAe,EACzD,sBAAuB,CAAE,cAAeC,EAAkB,CAC5D,CACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,SAAU,OAAQ,EACxB,GAAI,CAAE,SAAU,OAAQ,EACxB,GAAI,CAAE,SAAU,OAAQ,CAC1B,CACF,CACF,CAAC,EAEKyE,GAAcnG,EAAOoG,SAAO,CAChC,KAAM,QACN,OAAQ,EACR,uBAAwB,CAAE,GAAI,UAAW,EACzC,yBAA0B,CAAE,GAAI,UAAW,CAC7C,CAAC,EAQYm2B,GAAiB,CAAC,CAC7B,SAAA97B,EACA,KAAA6F,EAAO,MACP,WAAAC,EAAa,EACb,iBAAAi2B,EAAmB,gBACnB,gBAAAC,EAAkB,GAClB,KAAA75B,EAAO,QACJQ,CACL,IACE1C,EAAA,cAACuC,GAAA,CACC,KAAML,EACN,KAAM0D,EACN,WAAYC,EACX,GAAGnD,CAAAA,EAEHq5B,GACC/7B,EAAA,cAACiH,EAAA,CACC,GAAIwM,GAAAA,MACJ,IAAK,CAAE,SAAU,WAAY,MAAO,KAAM,IAAK,IAAK,EACpD,MAAOqoB,EACP,KAAK,KACL,WAAY,GACZ,MAAM,SAEN97B,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAIy3B,QAAW,CACvB,EAEDj8B,EACDC,EAAA,cAACyF,GAAA,CAAY,MAAO,GAAI,OAAQ,CAAA,CAAG,CACrC,EChFIT,GAAa1F,EAAO2F,GAAAA,KAAM,CAAE,CAAA,EAErBmzB,GAAU,OAAO,OAAOpzB,GAAY,CAC/C,QAAS62B,GACT,OAAQ51B,UACR,QAAStB,GAAAA,OACX,CAAC,EAEDK,GAAW,YAAc,UCflB,MAAMi3B,GAAsB,aCkBnCC,GAAAA,QAAM,OAAOC,UAAiB,EAY9B,MAAMC,GAAqB,CAACrC,EAAasC,EAAaJ,KACpDlC,EAAOmC,WAAMnC,CAAI,EAAE,OAAOsC,CAAU,EAAI,GAE7BC,GACXt8B,EAAM,WACJ,CACE,CACE,YAAAu8B,EACA,WAAAF,EAAaJ,GACb,eAAAxC,EAAiB,EACjB,SAAAryB,EACA,WAAA0yB,EACA,aAAAN,EACA,KAAAt3B,EAAO,KACP,OAAA+0B,EACA,WAAAuF,EACA,SAAA3c,EACA,QAAAma,EACA,QAAAC,KACGv3B,CACL,EACAyB,IACG,CACH,KAAM,CAAC41B,EAAM0C,CAAO,EAAIz8B,EAAM,SAC5Bu8B,EAAcL,GAAAA,QAAMK,CAAW,EAAE,OAAW,EAAA,MAC9C,EAEM,CAACzO,EAAYC,CAAa,EAAIlgB,GAAoB,EACxD7N,EAAM,oBAAoBmE,EAAK,IAAM2pB,CAA8B,EAEnE,MAAM4O,EAAaN,GAAmBrC,EAAMsC,CAAU,EAEhDM,EAAoB38B,EAAM,YAC7Bua,GAAU,CACT,MAAMqiB,EAAgBriB,EAAM,OAAO,MAC7BsiB,EAAkBX,WAAMU,EAAeP,CAAU,EACjD5B,EAAUoC,EAAgB,QAC5BA,EAAAA,EAAgB,SAChB,OACJJ,EAAQhC,CAAO,EACf5a,GAAA,MAAAA,EAAW4a,CAAAA,CACb,EACA,CAAC4B,EAAYxc,CAAQ,CACvB,EAEMid,EAAuB98B,EAAM,YAChCy6B,GAAY,CACXgC,EAAQhC,CAAO,GAEoB,IAAM,CA/EnD,IAAAjgB,EAgFY,GAAI,CAACsT,EAAY,OAIjB,MAAMQ,GAAyB9T,EAAA,OAAO,yBACpC,OAAO,iBAAiB,UACxB,OACF,IAH+B,KAAAA,OAAAA,EAG5B,IACH8T,GAAA,MAAAA,EAAwB,KACtBR,EACAsO,GAAmB3B,EAAS4B,CAAU,CAAA,EAExC,MAAM9hB,EAAQ,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,EAClDuT,EAAW,cAAcvT,CAAK,CAChC,IAEF,EACA,CAAC8hB,EAAYvO,CAAU,CACzB,EAEMiP,EAAgB,CACpB,GAAG3D,GACH,GAAGnC,CACL,EAEM,CAAC+F,EAAcC,CAAe,EAAIj9B,EAAM,SAAS,EAAK,EAEtD65B,EAAe75B,EAAM,OAA0B,IAAI,EACnD45B,EAAkB55B,EAAM,OAA0B,IAAI,EAEtDyM,EAAWzM,EAAM,QAAQ,IAAMiC,GAAiBC,CAAI,EAAG,CAACA,CAAI,CAAC,EAEnE,OACElC,EAAA,cAACH,EAAA,CAAI,IAAK,CAAE,SAAU,WAAY,OAAQ,aAAc,CAAA,EACtDG,EAAA,cAACujB,GAAA,CACC,KAAK,OACL,SAAUnc,EACV,KAAMlF,EACL,GAAGQ,EACJ,SAAUi6B,EACV,IAAK5O,EACL,aAAc2O,CAAAA,CAChB,EACA18B,EAAA,cAACo4B,GAAA,CAAQ,MAAK,GAAC,KAAM4E,EAAc,aAAcC,CAAAA,EAC/Cj9B,EAAA,cAACo4B,GAAQ,QAAR,CAAgB,QAAO,EAAA,EACtBp4B,EAAA,cAACiH,EAAA,CACC,IAAK,CACH,SAAU,WACV,IAAK,MACL,UAAW,mBACX,MAAO,GACT,EACA,SAAUG,EACV,MAAO21B,EAAc,KACrB,KAAMtwB,EACN,MAAM,UACN,WAAY,EAEZzM,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAI24B,EAAAA,aAAAA,CAAe,CAC3B,CACF,EACAl9B,EAAA,cAACo4B,GAAQ,OAAR,KACCp4B,EAAA,cAACo4B,GAAQ,QAAR,CACC,IAAK,CAAE,GAAI,WAAY,OAAQ/yB,EAAe,EAC9C,KAAK,SACL,MAAM,MACN,gBAAiB,GACjB,gBAAkBkG,GAAM,CAnJxC,IAAAiP,EAAAC,EAoJkBlP,EAAE,eAAe,EACbwuB,GACFvf,EAAAof,EAAgB,UAAhB,MAAApf,EAAyB,SAEzBC,EAAAof,EAAa,UAAb,MAAApf,EAAsB,OAE1B,CAEAza,EAAAA,EAAA,cAAC25B,GAAA,CACC,KAAMI,GAAQ,IAAI,KAClB,SAAUA,EACV,eAAgB,MAAOA,GAAS,CAC9BkD,EAAgB,EAAK,EACrB,MAAMH,EAAqB/C,EAAK,IAAI,EAChCyC,GAAYA,EAAAA,CAClB,EACA,QAAS,MAAOzC,GAAS,CACvB,MAAM+C,EAAqB/C,CAAI,EAC3ByC,GAAYA,EAAW,CAC7B,EACA,QAASxC,EACT,QAASC,EACT,aAAcJ,EACd,gBAAiBD,EACjB,eAAgBH,EAChB,WAAYK,EACZ,aAAcN,EACd,OAAQuD,CAAAA,CACV,CACF,CACF,CACF,CACF,CAEJ,CACF,EAEFT,GAAU,YAAc,YC7KX,MAAAa,GAAY,CAAC,CACxB,IAAAl+B,EACA,UAAAgf,EACA,MAAA5X,EACA,KAAA9C,EACA,WAAAoc,EACA,OAAA3B,EACA,YAAAhT,EACA,WAAA9D,KACGxE,CACL,IAAsB,CACpB,KAAM,CAAE,SAAA0hB,EAAU,QAAAgZ,CAAQ,EAAI9d,iBAAe,EACvC,CAAE,MAAAxB,CAAM,EAAIqB,GAAc5b,CAAI,EAC9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAEhD,OACEpkB,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAA,OAAAA,EAAY,QAAQ,EACtC,WAAYzY,CAAAA,EAEZlH,EAAA,cAACs8B,GAAA,CACC,GAAI/4B,EACJ,KAAMA,EACN,IAAKY,EACL,WAAY+C,EACX,GAAI4W,GAAS,CAAE,MAAO,OAAQ,EAC9B,GAAGpb,EACJ,WAAY06B,CAAAA,CACd,CACF,CAEJ,EAEAD,GAAU,YAAc,YChDjB,MAAME,GAAmB/9B,EAAOO,EAAK,CAAE,MAAO,QAAS,OAAQ,OAAQ,CAAC,ECAlEy9B,GAAch+B,EAAOmU,EAAO,MAAA,EAAE,ECD9B8pB,GAAkB,CAC7B,gBAAiB,YACjB,SAAU,QACV,MAAO,EACP,OAAQl4B,GACR,eAAgB,CACd,uBAAwB,CACtB,UAAW,GAAGlE,mBAChB,EACA,yBAA0B,CACxB,UAAW,GAAGC,mBAChB,CACF,CACF,ECJMoG,GAAkB,6BAClBC,GAAmB,6BACnB+1B,GAAiB,gBAEjBh8B,GAAUnC,EAAU,CACxB,KAAM,CAAE,UAAWoI,EAAiB,EACpC,OAAQ,CAAE,UAAWD,EAAgB,CACvC,CAAC,EACK/F,GAAWpC,EAAU,CACzB,KAAM,CAAE,UAAWmI,EAAgB,EACnC,OAAQ,CAAE,UAAWC,EAAiB,CACxC,CAAC,EAEKg2B,GAAsBn+B,EAAOqI,UAAS41B,EAAe,EAErDG,GAAY,CAChB,MAAO,OACP,OAAQ,OACR,SAAU,OACV,UAAW,OACX,6BAA8B,CAC5B,OAAQ,OACR,UAAW,MACb,CACF,EACMC,GAAsBr+B,EAAOkD,EAAAA,QAAS,CAC1C,GAAI,QACJ,UAAW,KACX,UAAW,aACX,KAAM,MACN,SAAU,OACV,UAAW,OACX,UAAW,OACX,EAAG,KACH,SAAU,QACV,IAAK,MACL,UAAWgF,GACX,OAAQnC,GACR,UAAW,CACT,QAAS,MACX,EACA,eAAgB,CACd,uBAAwB,CACtB,UAAW,GAAG7D,yCAChB,EACA,yBAA0B,CACxB,UAAW,GAAGC,yCAChB,CACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,GAAGi8B,GACH,aAAc,KACd,MAAO,OACT,EACA,GAAI,CACF,GAAGA,GACH,aAAc,KACd,MAAO,OACT,EACA,GAAI,CACF,GAAGA,GACH,aAAc,KACd,MAAO,OACT,EACA,GAAI,CACF,GAAGA,GACH,aAAc,KACd,MAAO,OACT,EACA,GAAI,CACF,GAAGA,GACH,aAAc,KACd,MAAO,QACT,EACA,WAAY,CACV,MAAO,QACP,OAAQ,QACR,SAAU,QACV,UAAW,QACX,6BAA8B,CAC5B,OAAQ,SACR,UAAW,QACb,CACF,CACF,CACF,CACF,CAAC,EAOYE,GAAgB,CAAC,CAC5B,KAAA17B,EAAO,KACP,SAAAnC,EACA,gBAAA89B,EAAkB,eAClB,gBAAA9B,EAAkB,MACfr5B,CACL,IACE1C,EAAA,cAACiG,EAAAA,OAAA,KACCjG,EAAA,cAACy9B,GAAA,CAAoB,GAAID,IACtBx9B,EAAM,SAAS,IACdD,EACCwH,IACCA,GAAA,KAAA,OAAAA,EAAO,QAAS81B,IAAoB91B,CACxC,EACAvH,EAAA,cAAC29B,GAAA,CACC,KAAMz7B,EACN,aAAW,SACX,qBAAuBqY,GAAU,CAC/B,MAAMzL,EAAUyL,EAAM,QAClBzL,GAAA,KAAAA,OAAAA,EAAS,MAAO0uB,IAClBjjB,EAAM,eAAe,CAEzB,EACC,GAAG7X,CAAAA,EAEHq5B,GACC/7B,EAAA,cAACiH,EAAA,CACC,GAAIwM,EACJ,MAAA,IAAK,CAAE,SAAU,WAAY,MAAO,KAAM,IAAK,KAAM,KAAM,IAAK,EAChE,MAAOoqB,EACP,WAAY,GACZ,KAAK,KACL,MAAM,SAEN79B,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAIy3B,EAAAA,KAAAA,CAAW,CACvB,EAEDh8B,EAAM,SAAS,IACdD,EACCwH,IACCA,GAAA,YAAAA,EAAO,QAAS81B,IAAoB91B,CACxC,CACF,CACF,CACF,ECnJWu2B,GAAe,CAAC,CAC3B,IAAA7+B,KACGmK,CACL,IACEpJ,EAAA,cAAC8I,EAAA,CAAK,QAAQ,MAAM,IAAK,EAAG,IAAK,CAAE,GAAI,KAAM,GAAG7J,CAAI,EAAI,GAAGmK,CAAO,CAAA,ECJvD20B,GAAgB,CAAC,CAC5B,IAAA9+B,KACGmK,CACL,IACEpJ,EAAA,cAACiK,GAAA,CACC,KAAK,KACL,IAAK,CACH,aAAc,qBACd,EAAG,aACH,GAAI,KACJ,GAAI,MACJ,UAAW,cACX,GAAGhL,CACL,EACC,GAAGmK,CACN,CAAA,ECTI40B,GAAe1+B,EAAO2F,EAAAA,KAAM,CAAA,CAAE,EAEvBg5B,GAAS,OAAO,OAAOD,GAAc,CAChD,WAAYX,GACZ,MAAOC,GACP,QAASM,GACT,QAASG,GACT,OAAQD,GAER,YAAa91B,EAAAA,YACb,MAAOC,EAAAA,MACP,QAAStD,EAAAA,OACX,CAAC,EAEDs5B,GAAO,YAAc,SCdd,MAAMC,GAAgBl+B,EAAM,cAA8B,CAC/D,SAAU,MACZ,CAAC,EAEYm+B,GAAiB,CAAC,CAC7B,SAAAv9B,EAAW,UACRsD,CACL,IAAkE,CAChE,MAAMxF,EAAQsB,EAAM,QAAwB,KAAO,CAAE,SAAAY,CAAS,GAAI,CAACA,CAAQ,CAAC,EAC5E,OAAOZ,EAAA,cAACk+B,GAAc,SAAd,CAAuB,MAAOx/B,EAAQ,GAAGwF,EAAM,CACzD,ECbak6B,GACXh1B,GAEApJ,EAAAA,QAAA,cAACs9B,EAAAA,MAAA,CAAY,QAAO,EAAA,EAClBt9B,UAAA,cAACiH,EAAA,CACC,MAAM,UACN,WAAW,SACX,KAAK,KACL,WAAY,GACX,GAAGmC,GAEJpJ,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAIkP,EAAO,KAAA,CAAA,CACnB,CACF,ECfW4qB,GAAgB/+B,EAAOqI,UAAS41B,EAAe,ECOtDe,GAAej9B,GAAW,CAAE,YAAa,CAAE,EAAG,EAAG,EAAG,OAAQ,CAAE,CAAC,EAC/Dk9B,GAAiBl9B,GAAW,CAAE,YAAa,CAAE,EAAG,OAAQ,EAAG,CAAE,CAAE,CAAC,EAChEm9B,GAAkBn9B,GAAW,CAAE,YAAa,CAAE,EAAG,EAAG,EAAG,MAAO,CAAE,CAAC,EACjEo9B,GAAgBp9B,GAAW,CAAE,YAAa,CAAE,EAAG,QAAS,EAAG,CAAE,CAAE,CAAC,EAChEq9B,GAAkBC,IACf,CACL,uBAAwB,CACtB,cAAeA,EAAU,EAC3B,EACA,yBAA0B,CACxB,cAAeA,EAAU,GAC3B,CACF,GAGIC,GAAY,CAChB,KAAM,EACN,MAAO,OACP,UAAW,KACb,EAEMC,GAAY,CAChB,IAAK,EACL,OAAQ,OACR,MAAO,oCACP,SAAU,MACZ,EAEat8B,GAAgBjD,EAAOkD,EAAAA,QAAS,CAC3C,GAAI,SACJ,UAAW,KACX,SAAU,QACV,OAAQ6C,GACR,eAAgB,CACd,wBAAyB,WACzB,kBAAmB,OACrB,EACA,SAAU,CACR,SAAU,CACR,IAAK,CACH,IAAK,EACL,GAAGu5B,GACH,GAAGF,GAAeJ,EAAY,CAChC,EACA,MAAO,CACL,MAAO,EACP,GAAGO,GACH,GAAGH,GAAeH,EAAc,CAClC,EACA,OAAQ,CACN,OAAQ,EACR,GAAGK,GACH,GAAGF,GAAeF,EAAe,CACnC,EACA,KAAM,CACJ,KAAM,EACN,GAAGK,GACH,GAAGH,GAAeD,EAAa,CACjC,CACF,EACA,KAAM,CACJ,GAAI,CACF,yBAA0B,OAC5B,EACA,GAAI,CACF,yBAA0B,OAC5B,EACA,GAAI,CACF,yBAA0B,OAC5B,EACA,GAAI,CACF,yBAA0B,OAC5B,EACA,GAAI,CACF,yBAA0B,OAC5B,EACA,MAAO,CACL,yBAA0B,OAC5B,EACA,MAAO,CACL,yBAA0B,QAC5B,CACF,CACF,CACF,CAAC,EAEYK,GAAgB,CAAC,CAC5B,SAAA/+B,KACGmE,CACL,IAAkD,CAChD,KAAM,CAAE,SAAAtD,CAAS,EAAIZ,EAAM,QAAA,WAAWk+B,EAAa,EAEnD,OACEl+B,EAAAA,QAAA,cAACiG,SAAA,KACCjG,EAAAA,QAAA,cAACq+B,GAAA,IAAc,EACfr+B,EAAA,QAAA,cAAC4D,GAAA,CAAY,KAAK,QAAQ,OAAO,WAAW,QAAO,EACjD5D,EAAAA,EAAAA,QAAA,cAACuC,GAAc,CAAA,KAAK,KAAK,SAAU3B,EAAW,GAAGsD,EAAM,QAAO,IAC5DlE,EAAAA,QAAA,cAAC8I,EAAA,CAAK,UAAU,QAAU/I,EAAAA,CAAS,CACrC,CACF,CACF,CAEJ,EClHag/B,GAAgB,CAC3B,EAAG,KACH,MAAO,MACT,ECCaC,GAAe1/B,EAAO,MAAO,CACxC,GAAGy/B,GACH,UAAW,kBACb,CAAC,ECHYE,GAAe3/B,EAAO,MAAO,CACxC,GAAGy/B,GACH,UAAW,KACX,aAAc,kBAChB,CAAC,ECJYG,GAAa5/B,EAAO,MAAO,CACtC,GAAGy/B,GACH,SAAU,EACV,UAAW,MACb,CAAC,ECJYI,GAAgB7/B,EAAOqF,EAAS,QAAA,EAAE,ECUlCy6B,GAAS,CAAC,CACrB,SAAAr/B,EACA,SAAAa,KACGsD,CACL,IAEIlE,UAAA,cAACm+B,GAAA,CAAe,SAAUv9B,GACxBZ,EAAA,QAAA,cAACiF,EAAAA,KAAA,CAAM,GAAGf,CAAOnE,EAAAA,CAAS,CAC5B,EAIJq/B,GAAO,MAAQhB,GACfgB,GAAO,QAAUN,GACjBM,GAAO,KAAOF,GACdE,GAAO,OAASH,GAChBG,GAAO,OAASJ,GAChBI,GAAO,QAAUD,GCpBV,MAAME,GAAsB//B,EAAOkD,GAAAA,QAAS,CACjD,GAAI,QACJ,aAAc,KACd,UAAW,KACX,GAAI,KACJ,OAAQ8C,GACR,eAAgB,CACd,kBAAmB,QACnB,wBAAyB,gCACzB,WAAY,qBACZ,uBAAwB,CACtB,qBAAsB,CAAE,cAAerE,EAAiB,EACxD,uBAAwB,CAAE,cAAeC,EAAiB,EAC1D,wBAAyB,CAAE,cAAeH,EAAe,EACzD,sBAAuB,CAAE,cAAeC,EAAkB,CAC5D,CACF,CACF,CAAC,ECvBYs+B,GAAa,CACxB,WAAY,SACZ,MAAO,YACP,OAAQ,UACR,QAAS,OACT,WAAY,QACZ,WAAY,IACZ,SAAU,WACV,GAAI,KACJ,GAAI,KACJ,cAAe,CAAE,GAAGl9B,EAAe,cAAe,MAAO,EACzD,kCAAmC,CACjC,YAAa,CACX,WAAY,yBACZ,QAAS,GACT,OAAQ,KACR,KAAM,EACN,QAAS,OACT,SAAU,WACV,UAAW,UACb,CACF,EACA,UAAW,CACT,MAAO,cACP,QAAS,MACX,EACA,UAAW,CAAE,eAAgB,WAAY,CAC3C,EAEam9B,GAAmBjgC,EAAOsD,GAAAA,KAAM08B,EAAU,EC3BjD1hB,GAAate,EAAO,IAAK,CAC7B,eAAgB,MAClB,CAAC,EAEYkgC,GAAuB,CAAC,CACnC,SAAAz/B,EACA,KAAAoH,KACGiC,CACL,IACEpJ,EAAAA,QAAA,cAACu/B,GAAA,CAAkB,GAAGn2B,EAAO,QAAO,EAAA,EAClCpJ,UAAA,cAAC4d,GAAA,CAAW,KAAMzW,EAAM,KAAK,WAAY,GAAGV,GAAuBU,CAAI,CACpEpH,EAAAA,CACH,CACF,EChBW0/B,GAAwBngC,EAAOogC,GAAAA,UAAW,CACrD,OAAQ,MACR,gBAAiB,WACjB,GAAI,IACN,CAAC,ECHYC,GAAsBrgC,EAAOqF,GAAAA,QAAS,CACjD,cAAevC,CACjB,CAAC,ECIK6C,GAAO3F,EAAOsgC,GAAkB,KAAA,EAAE,EAE3BC,GAAe,OAAO,OAAO56B,GAAM,CAC9C,QAASo6B,GACT,KAAME,GACN,SAAUC,GACV,OAAQv5B,GAAAA,OACR,UAAWw5B,GACX,QAASE,EACX,CAAC,ECRYG,GAAY,CAAC,CACxB,OAAAC,EACA,SAAAhgC,EACA,SAAAigC,EAAW,GACX,aAAAC,KACG/7B,CACL,IAAsB,CACpB,MAAMg8B,EAAoB3lB,GAA+C,CACvE,KAAM,CAAE,MAAA4lB,CAAM,EAAI5lB,EAAM,OAExB0lB,EAAaE,CAAK,CACpB,EAEA,OACEngC,EAAA,cAAC4J,GAAA,CAAO,GAAG,QAAS,GAAG1F,CAAAA,EACrBlE,EAAA,cAACuE,EAAA,CAAK,GAAI67B,EAAAA,MAAAA,CAAQ,EACjBrgC,EACDC,EAAA,cAAC,QAAA,CACC,KAAK,OACL,SAAUkgC,EACV,OAAQH,EACR,SAAUC,EACV,OAAM,EAAA,CACR,CACF,CAEJ,EAEAF,GAAU,YAAc,YCnCxB,MAAMO,GAAgB/gC,EAAO,MAAO,CAClC,QAAS,OACT,SAAU,CACR,IAAKE,GAAoB,QAAS,CAAE,IAAK,MAAO,CAAC,CACnD,CACF,CAAC,EAUY85B,GAAO,CAAC,CACnB,IAAAr6B,EACA,IAAA2T,EAAM,EACN,YAAA0tB,EACA,YAAAC,EAAc,SACX79B,CACL,IACE1C,EAAA,cAACqgC,GAAA,CACC,IAAK,CACH,GAAIC,GAAe,CACjB,oBAAqB,2BAA2BA,MAAgBC,KAClE,EACA,GAAIthC,CACN,EACA,IAAK2T,EACJ,GAAGlQ,CACN,CAAA,EAGF42B,GAAK,YAAc,OC3BN,MAAAkH,GAAa,CAAC,CACzB,IAAAvhC,EACA,MAAAoH,EACA,KAAA9C,EACA,WAAAoc,EACA,OAAA3B,EACA,YAAAhT,EACA,UAAAiT,EACA,WAAA/W,KACGxE,CACL,IAAuB,CACrB,KAAM,CAAE,SAAA0hB,CAAS,EAAI9E,EAAe,eAAA,EAC9BlT,EAAUqS,GACV,EAAA,CAAE,MAAAX,CAAM,EAAIqB,GAAc5b,CAAI,EAE9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAC1CC,GAAiBjY,GAAA,KAAAA,OAAAA,EAAS,aAAclF,EAE9C,OACElH,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAAAA,EAEZrkB,EAAA,cAACujB,GAAA,CACC,GAAIhgB,EACJ,KAAMA,EACN,IAAKY,EACL,WAAYkgB,EACX,GAAIvG,GAAS,CAAE,MAAO,OAAQ,EAC9B,GAAGpb,CAAAA,CACN,CACF,CAEJ,EAEA89B,GAAW,YAAc,aC1BzB,MAAMC,GAAwBnhC,EAAOwJ,EAAM,CACzC,CAAC,OAAOkB,MAAkB,CACxB,SAAU,MACZ,EACA,CAAC,OAAOM,MAAe,CACrB,SAAU,MACZ,EACA,CAAC,OAAOmP,MAAe,CACrB,SAAU,MACZ,CACF,CAAC,EAWKinB,GAAuB,CAC3B,KAAMrkB,GACN,SAAUG,GACV,QAASI,GACT,WAAYE,GACZ,MAAOC,GACP,KAAMC,GACN,KAAME,GACN,SAAUC,GACV,UAAWC,GACX,OAAQE,GACR,KAAMC,GACN,cAAeI,EACjB,EAEMgjB,GAAmBrkB,GAAS,CAhElC,IAAA9B,EAAAC,EAiEE,IAAID,EAAA8B,EAAK,WAAL,MAAA9B,EAAe,MAAO,CACxB,KAAM,CAAE,KAAAomB,EAAM,OAAA/V,EAAQ,OAAAgW,CAAO,GAAIpmB,EAAA6B,EAAK,WAAL,KAAA,OAAA7B,EAAe,MAChD,MAAO,GAAG6B,EAAK,OAAOskB,IAAO/V,IAASgW,GACxC,CAEA,MAAO,GAAGvkB,EAAK,OAAO,CAAC,IAAI,MAC7B,EAEawkB,GAAkB,CAAC,CAC9B,QAAA50B,EACA,iBAAA60B,EAAmB,CACnB,EAAA,IAAA9hC,CACF,IAA4B,CAC1B,MAAM+hC,EAAMC,GAAAA,QAAa/0B,EAAS,CAChC,WAAY,CAACg1B,GAAO,QAAA,CAAC,EACrB,gBAAiB,CAACC,GAAU,QAAA,YAAY,CAC1C,CAAC,EAEKC,EAAgB,CACpB,GAAGV,GACH,GAAGK,CACL,EAEMtkB,EAA0BH,GAAS,CACvC,MAAM+kB,EAAoBD,EAAc9kB,EAAK,MAE7C,OAAO+kB,EACLrhC,EAAA,cAACqhC,EAAA,CACC,IAAKV,GAAgBrkB,CAAI,EACzB,KAAMA,EACN,WAAYG,CAAAA,CACd,EACE,IACN,EAEA,OACEzc,EAAA,cAACygC,GAAA,CAAsB,UAAU,SAAS,IAAK,EAAG,IAAKxhC,CAAAA,EACpD+hC,EAAI,SAAS,IAAIvkB,CAAU,CAC9B,CAEJ,EAEAqkB,GAAgB,YAAc,kBClGvB,MAAMQ,GAAwBthC,EAAAA,QAAM,cAEzC,MAAS,EAEEuhC,GAA2B,IAAkC,CACxE,MAAMn1B,EAAUpM,UAAM,WAAWshC,EAAqB,EAEtD,GAAIl1B,IAAY,OACd,MAAM,IAAI,MACR,8EACF,EAGF,OAAOA,CACT,ECnBao1B,GACXjnB,GACS,CACCA,EACR,gBACJ,ECHMd,GAAana,EAAO,KAAM,CAC9B,UAAW,OACX,EAAG,EACH,EAAG,CACL,CAAC,EAEKiD,GAAgBjD,EAAOmiC,GAAwB,QAAS,CAC5D,EAAG,KACH,GAAI,sBACJ,GAAI,MACJ,UAAW,KACX,aAAc,IAChB,CAAC,EAMYC,GAAgC,CAAC,CAC5C,SAAA3hC,KACGmE,CACL,IACElE,EAAAA,QAAA,cAACuC,GAAA,CACC,cAAei/B,GACf,eAAgBA,GACf,GAAGt9B,CAAAA,EAEJlE,EAAAA,QAAA,cAACyZ,GAAA,KAAY1Z,CAAS,CACxB,EAGF2hC,GAA8B,YAAc,gCCrCrC,MAAMC,GAAmC,CAC9C,WAAY,OACZ,MAAO,QACP,QAAS,MACT,OAAQ,SACV,EAEaC,GAA+B,CAC1C,IAAK,QACL,SAAU,WACV,MAAO,QACP,QAAS,OACT,OAAQ,UACR,WAAY,QACZ,WAAY,OACZ,QAAS,KACT,aAAc,KACd,WAAY,cACZ,UAAW,CAAE,WAAY,mBAAoB,MAAO,YAAa,EACjE,WAAY,CACV,WAAY,oBACZ,MAAO,aACT,EACA,kBAAmB,CACjB,UAAW,oCACb,EACA,aAAc,CACZ,GAAGD,EACL,CACF,EAEaE,GAAiC,CAC5C,WAAY,IACZ,MAAO,oBACP,WAAY,CACV,gBAAiB,0BACjB,aAAc,KACd,OAAQ,EACR,QAAS,GACT,QAAS,QACT,OAAQ,MACR,KAAM,MACN,SAAU,WACV,UAAW,oBACX,MAAO,IACT,CACF,ECjCMn9B,GAAgBpF,EACpBmiC,GAAwB,QACxBG,GACA,CACE,QAAS,OACT,WAAY,SACZ,aAAc,KACd,eAAgB,gBAChB,uBAAwB,CACtB,WAAY,wBACd,EACA,SAAU,CACR,OAAQ,CAAE,KAAM,CAAE,GAAGC,EAA+B,CAAE,CACxD,CACF,CACF,EAEaC,GAET9hC,EAAM,QAAA,WAAW,CAAC,CAAE,SAAAD,EAAU,OAAA8G,KAAWuC,CAAM,EAAG24B,IACpD/hC,EAAA,QAAA,cAAC0E,GAAA,CACC,OAAQmC,EACP,GAAGuC,EACJ,IAAK24B,EACL,cAAeP,GACf,eAAgBA,EAAAA,EAEfzhC,EACDC,EAAA,QAAA,cAACuE,EAAA,CACC,GAAIQ,EAAAA,YACJ,IAAK,CACH,GAAI,KACJ,sBAAuB,CAAE,UAAW,iBAAkB,EACtD,iDAAkD,CAChD,WAAY,oBACd,CACF,EACA,KAAK,IAAA,CACP,CACF,CACD,EAED+8B,GAA8B,YAAc,gCCtC/B,MAAAE,GAAyB,CAAC,CACrC,SAAAjiC,EACA,GAAA8L,KACGzC,CACL,IAAmC,CACjC,KAAM,CAAE,aAAA64B,CAAa,EAAIV,GAEzB,EAAA,OACEvhC,EAAAA,QAAA,cAACyhC,GAAwB,KAAxB,CAA6B,MAAO51B,GAClC7L,EAAM,QAAA,SAAS,IAAID,EAAWwH,GAAU,CACvC,MAAM26B,EACJliC,EAAAA,QAAM,eAAeuH,CAAK,GAC1BA,EAAM,OAASu6B,GACXK,EACJniC,EAAM,QAAA,eAAeuH,CAAK,GAC1BA,EAAM,OAASm6B,GAEjB,GAAI,CAACQ,GAAa,CAACC,EACjB,MAAM,IAAI,MACR,qHACF,EAEF,OAAOD,EACHliC,EAAM,QAAA,aACJuH,EACA,CACE,GAAG6B,EACH,IAAMkT,GAA4B2lB,EAAa3lB,EAAMzQ,CAAE,CACzD,CACF,EACAtE,CACN,CAAC,CACH,CAEJ,EAEAy6B,GAAuB,YAAc,yBCzCrC,MAAMI,GAAiB9iC,EAAO,SAAU,CACtC,GAAGsiC,GACH,GAAGD,EACL,CAAC,EAEKU,GAAW/iC,EAAOmiC,GAAwB,IAAI,EAE9C7jB,GAAate,EACjBmiC,GAAwB,KACxBG,GACA,CACE,QAAS,QACT,eAAgB,OAChB,WAAY,EACZ,SAAU,CACR,YAAa,CACX,aAAc,CACZ,iBAAkB,CAChB,WAAY,sBACZ,MAAO,gBACP,UAAW,CACT,WAAY,2BACZ,MAAO,oBACT,EACA,WAAY,CACV,WAAY,6BACZ,MAAO,sBACT,EACA,kBAAmB,CACjB,UAAW,+BACX,MAAO,oBACT,CACF,CACF,EACA,KAAM,CACJ,iBAAkB,CAAE,GAAGC,EAA+B,CACxD,CACF,CACF,CACF,CACF,EAEaS,GAKTtiC,UAAM,WACR,CACE,CAAE,SAAAD,EAAU,KAAAoH,EAAM,SAAAC,EAAU,IAAAnI,EAAK,QAAA2J,EAAU,OAAQ,IAAAzE,KAAQiF,CAAM,EACjE24B,IAEA/hC,EAAA,QAAA,cAACqiC,GAAA,KACEj7B,EACCpH,EAAA,QAAA,cAACoiC,GAAA,CAAe,SAAQ,GAAC,IAAKnjC,GAC3Bc,CACH,EAEAC,EAAA,QAAA,cAAC4d,GAAA,CACC,KAAMzW,EACN,IAAK46B,EACL,YAAan5B,EACb,IAAK3J,EACJ,GAAGwH,GAAuBU,CAAI,EAC9B,GAAGiC,GAEHrJ,CACH,CAEJ,CAEJ,EAEAuiC,GAAmB,YAAc,qBC9EpB,MAAAC,GAETviC,EAAAA,QAAM,WAAW,CAACoJ,EAAO24B,IAEzB/hC,EAAA,QAAA,cAACsiC,GAAA,CAAmB,IAAKP,EAAc,QAAQ,eAAgB,GAAG34B,CAAO,CAAA,CAE5E,EAEYo5B,GAAkCljC,EAAOiL,EAAM,CAC1D,MAAO,WACP,WAAY,GACd,CAAC,EAEDg4B,GAA2B,YAAc,6BACzCC,GAAgC,YAAc,kCCnB9C,MAAMC,GAAQtjC,EAAY,CACxB,OAAQ,CACN,KAAM,cACN,WAAY,QACZ,gBAAiB,WACjB,UAAW,YACX,iBAAkB,WAClB,WAAY,YACZ,mBAAoB,cACpB,aAAc,cACd,kBAAmB,cACnB,oBAAqB,cACrB,kBAAmB,cACnB,wBAAyB,WACzB,0BAA2B,WAC3B,iBAAkB,WAClB,uBAAwB,WACxB,sBAAuB,WACvB,mBAAoB,OACtB,CACF,CAAC,EAEY0D,GAAe,CAC1B,MAAA4/B,EACF,ECRMC,GAAgBrjC,EAAU,CAC9B,UAAW,CAAE,QAAS,CAAE,EACxB,OAAQ,CAAE,QAAS,CAAE,CACvB,CAAC,EAEKsjC,GAAarjC,EAAOmiC,GAAwB,KAAM,CACtD,QAAS,OACT,eAAgB,SAChB,SAAU,UACZ,CAAC,EAEKhoB,GAAana,EAAOmiC,GAAwB,KAAM,CACtD,IAAK,QACL,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,IAAK,KACL,UAAW,MACb,CAAC,EAEKmB,GAAiBtjC,EAAOmiC,GAAwB,SAAU,CAC9D,OAAQr8B,EACV,CAAC,EAEKy9B,GAAmBvjC,EAAO,MAAO,CACrC,SAAU,WACV,KAAM,EACN,IAAK,OACL,MAAO,OACP,QAAS,OACT,eAAgB,QAClB,CAAC,EAEKwjC,GAA0B,CAAC,CAC/B,SAAA/iC,EACA,IAAAd,KACGmK,CACL,IAA+C,CAC7C,KAAM,CAACy3B,EAAQkC,CAAS,EAAI/iC,EAAAA,QAAM,WAC5B,CAACgjC,EAAYC,CAAa,EAAIjjC,EAAAA,QAAM,SAA6B,EACjE,CAACkjC,EAAWC,CAAY,EAAInjC,EAAAA,QAAM,SAAS,CAAC,EAC5CojC,EAAUpjC,EAAAA,QAAM,OAAyB,IAAI,EAC7CqjC,EAAe,IAErBrjC,EAAAA,QAAM,gBAAgB,IAAM,CACtBojC,EAAQ,SACVD,EAAaC,EAAQ,QAAQ,WAAW,CAE5C,EAAG,CAACpjC,EAAAA,QAAM,SAAS,QAAQD,CAAQ,EAAE,MAAM,CAAC,EAE5CC,EAAAA,QAAM,UAAU,IAAM,CACpB,IAAIsjC,EAIJ,OAAIN,IAAe,KACjBM,EAAQ,WAAW,IAAMP,EAAU,IAAI,EAAGM,CAAY,GAGjD,IAAM,CACPC,IAAU,MACZ,aAAaA,CAAK,CAEtB,CACF,EAAG,CAACN,CAAU,CAAC,EAGf,MAAMf,EAAe,CAAC7E,EAA4B/lB,IAAsB,CACtE,GAAI+lB,GAAW8F,GAAaF,IAAe3rB,EAAW,CACpD,MAAMksB,EAAaL,EAAY,EAEzBM,EACJN,EACA9F,EAAQ,WACRA,EAAQ,YACRA,EAAQ,YAAc,EAExB2F,EAAU,KAAK,MAAMQ,EAAaC,CAAkB,CAAC,CACvD,CAEA,OAAOpG,CACT,EAEA,OACEp9B,EAAA,QAAA,cAACshC,GAAsB,SAAtB,CAA+B,MAAO,CAAE,aAAAW,CAAa,CAAA,EACpDjiC,EAAA,QAAA,cAAC2iC,GAAA,CACC,UAAWc,GAA2B,MACtC,cAAeR,EACf,IAAKhkC,EACJ,GAAGmK,CAAAA,EAEJpJ,EAAAA,QAAA,cAACyZ,GAAA,CAAW,IAAK2pB,GAAUrjC,CAAS,EACpCC,EAAAA,QAAA,cAAC6iC,GAAA,KACC7iC,EAAAA,QAAA,cAAC4iC,GAAA,CACC,IAAK,CACH,oCAAqC,GAAG/B,GAAU,MAClD,UAAW,cAAcA,GAAU,OACnC,uBAAwB,CACtB,UAAW,GAAG6B,MAAiBW,UACjC,EACA,yBAA0B,CACxB,UAAW,GAAGjiC,MAAWiiC,cAC3B,CACF,CAAA,CACF,CACF,CACF,CACF,CAEJ,EAEaK,GAAiB,OAAO,OAAOZ,GAAyB,CACnE,KAAMR,GACN,SAAUN,GACV,gBAAiBN,GACjB,aAAca,GACd,kBAAmBC,GACnB,gBAAiBV,EACnB,CAAC,EAEDgB,GAAwB,YAAc,iBCrItC,MAAMa,GAAmCrkC,EAAOsD,GAAAA,KAAM,CAAE,CAAA,EAa3CghC,GACXx6B,GACgBpJ,EAAAA,QAAA,cAAC2jC,GAAA,CAAkC,GAAGv6B,CAAO,CAAA,ECTlDy6B,GACX7jC,EAAM,cAA4D,CAAE,CAAA,EAChE8jC,GAA0C,CAAC,CAAE,SAAA/jC,CAAS,IAAM,CAChE,KAAM,CAACsZ,EAAYC,CAAa,EAAI7L,KACpC,OACEzN,EAAA,cAAC6jC,GAAuC,SAAvC,CACC,MAAO,CAAE,WAAAxqB,EAAY,cAAAC,CAAc,CAElCvZ,EAAAA,CACH,CAEJ,EAIagkC,GAAkC,CAAC,CAC9C,YAAAC,EACA,KAAA3hC,EACA,aAAA4hC,EACA,SAAA78B,KACGlD,CACL,IAGIlE,EAAA,cAAC8jC,GAAA,KACC9jC,EAAA,cAACiF,GAAA,KAAA,CAHsB,YAAA++B,EAAa,KAAA3hC,EAAM,aAAA4hC,EAAc,SAAA78B,EAG5B,QAAO,IACjCpH,EAAA,cAAC4jC,GAAA,CAA4B,GAAG1/B,CAAM,CAAA,CACxC,CACF,ECnCEuV,GAAana,EAAO4c,GAAM,KAAA,CAC9B,EAAG,EACH,EAAG,EACH,UAAW,OACX,qCAAsC,WACtC,MAAO,CACL,qCAAsC,UACxC,EACA,QAAS,CACP,qCAAsC,UACxC,EACA,UAAW,CACT,qCAAsC,UACxC,EACA,0BAA2B,CACzB,GAAI,IACN,CACF,CAAC,EAEYgoB,GAA6BzqB,GCfpC0qB,GAA+C7kC,EAAOkD,WAAS,CAAA,CAAE,EAO1D4hC,GAAyC,CAAC,CACrD,SAAArkC,KACGmE,CACL,IAAiE,CAC/D,KAAM,CAAE,WAAAmV,CAAW,EAAIrZ,EAAM,QAAA,WAC3B6jC,EACF,EAYA,OACE7jC,EAAAA,QAAA,cAACmkC,GAAA,CACC,UAZqB54B,GAAM,CACzB,EAAC8N,GAAA,MAAAA,EAAY,UACb9N,EAAE,MAAQ,WACZA,EAAE,gBAAgB,EAClBA,EAAE,iBACF8N,EAAW,QAAQ,QACnBA,EAAW,QAAQ,QAEvB,EAKK,GAAGnV,GAEJlE,EAAA,QAAA,cAACkkC,GAAA,KAA4BnkC,CAAS,CACxC,CAEJ,ECzCaskC,GAAoB,CAC/B,EAAG,EACH,OAAQ,OACR,QAAS,OACT,KAAM,UACN,MAAO,UACP,WAAY,OACZ,UAAW,SACb,EAEaC,GAAkB,CAC7B,eAAgB,QAChB,MAAO,SACT,ECVaC,GAAmC,CAC9C,GAAGF,GACH,GAAGC,GACH,OAAQ,UACR,aAAc,KACd,QAAS,OACT,WAAY,SACZ,EAAG,KACH,GAAI,0CACJ,MAAO,OACP,MAAO,QACP,GAAI,cACJ,8CAA+C,IAC/C,iBAAkB,CAChB,GAAI,sBACJ,MAAO,gBACP,8CAA+C,GACjD,EACA,qBAAsB,CACpB,8CAA+C,GACjD,EACA,cAAe,CACb,QAAS,GACT,OAAQ,aACV,EACA,oBAAqB,CACnB,UAAW,CACT,GAAI,kBACN,EACA,WAAY,CACV,GAAI,mBACN,EACA,kBAAmB3jC,GAAuB,CAC5C,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CACF,UAAW,IACb,EACA,GAAI,CACF,UAAW,IACb,CACF,CACF,CACF,EC1CM6jC,GAAmCllC,EAAOiF,EAAM,CACpD,UAAW,OACb,CAAC,EACYkgC,GACXr7B,GACgBpJ,EAAA,cAACwkC,GAAA,CAAiC,KAAK,KAAM,GAAGp7B,CAAO,CAAA,ECL5Ds7B,GAAgBplC,EAAO,MAAO,CACzC,aAAc,oBACd,EAAG,KACH,MAAO,MACT,CAAC,EAEYqlC,GAAcrlC,EAAO,MAAO,CACvC,SAAU,EACV,UAAW,OACX,UAAW,SACX,EAAG,KACH,MAAO,MACT,CAAC,EAEYslC,GAAgBtlC,EAAO,MAAO,CACzC,UAAW,oBACX,EAAG,KACH,MAAO,MACT,CAAC,EAEYulC,GAAevlC,EAAO,IAAK,CACtC,WAAY,WACZ,MAAO,QACP,QAAS,OACT,IAAK,KACL,eAAgB,OAChB,mBAAoB,CAClB,eAAgB,MAClB,CACF,CAAC,EAEYwlC,GAAmBn4B,GAEnBo4B,GAAmBzlC,EAAOiL,EAAM,CAC3C,MAAO,QACP,WAAY,QACd,CAAC,ECvCYy6B,GAAiBhlC,EAAM,cAEjC,CACD,WAAY,MACd,CAAC,EAEYilC,GAAkB,IAAMjlC,EAAM,WAAWglC,EAAc,ECO9DE,GAAiB,SACjBC,GAAgB,QAEhB1C,GAAQtjC,EAAY,CACxB,OAAQ,CACN,WAAY,QACZ,KAAM,WACN,OAAQ,UACV,CACF,CAAC,EAEK8F,GAAO3F,EAAO,MAAO,CACzB,SAAU,SACV,OAAQ,EACR,SAAU,CACR,KAAM,CACJ,OAAQ,CACR,EAAA,WAAY,CAAE,MAAO4lC,EAAe,CACtC,CACF,CACF,CAAC,EAEK1iC,GAAUlD,EAAO,MAAO,CAC5B,GAAI,cACJ,YAAa,oBACb,UAAW,qCACX,QAAS,OACT,cAAe,SACf,OAAQ,OACR,SAAU,SACV,WAAY,QACZ,eAAgB,CACd,WAAY,iDACd,EACA,SAAU,CACR,KAAM,CACJ,OAAQ,CAAA,EACR,WAAY,CACd,CAAA,EACA,WAAY,CACV,KAAM,CAAE,MAAO6lC,EAAc,EAC7B,MAAO,CAAE,MAAOD,EAAe,CACjC,CACF,EACA,iBAAkB,CAChB,CACE,WAAY,GACZ,KAAM,aACN,IAAK,CAAE,UAAW,sCAAuC,CAC3D,CACF,CACF,CAAC,EAEKE,GAAiB9lC,EAAO,MAAO,CACnC,OAAQ,EACR,KAAM,EACN,SAAU,WACV,MAAO,EACP,IAAK,EACL,WAAY,MACZ,SAAU,CACR,UAAW,CACT,KAAM,CAAE,WAAY,UAAW,gBAAiB,IAAK,EACrD,MAAO,CAAE,WAAY,SAAU,gBAAiB,MAAO,CACzD,CACF,CACF,CAAC,EAMY+lC,GAAU,CAAC,CACtB,UAAArhC,EAAYy+B,GACZ,SAAA1iC,EACA,KAAAoF,EAAO,aACP,OAAA07B,EAAS,MACT,IAAA5hC,KACGiF,CACL,IAAoB,CAClB,KAAM,CAACohC,EAAYC,CAAa,EAAIvlC,EAAAA,QAAM,SAASmF,IAAS,QAAQ,EAC9DhB,EAAMnE,EAAAA,QAAM,OAAuB,IAAI,EAE7CwlC,sBAAmB,CACjB,IAAArhC,EACA,kBAAmB,IAAMohC,EAAc,EAAK,CAC9C,CAAC,EACD,KAAM,CAAE,iBAAAE,CAAiB,EAAIC,GAAAA,eAAe,CAC1C,cAAe,IAAMH,EAAc,EAAI,EACvC,aAAc,IAAMA,EAAc,EAAK,CACzC,CAAC,EACK,CAAE,WAAArV,EAAY,UAAAC,CAAU,EAAIC,GAAAA,SAAS,CACzC,aAAc,IAAMmV,EAAc,EAAI,EACtC,WAAY,IAAMA,EAAc,EAAK,CACvC,CAAC,EAKKI,EACJxgC,IAAS,aACL,CACE,GAAGsgC,EACH,GAAGvV,EAPT,WAAY,IAAMqV,EAAc,EAAI,EAS9B,IAAAphC,CACF,EACA,CAEN,EAAA,OACEnE,EAAAA,QAAA,cAACglC,GAAe,SAAf,CAAwB,MAAO,CAAE,WAAAM,CAAW,CAC3CtlC,EAAAA,UAAA,cAACiF,GAAA,CACE,GAAGf,EACJ,UAAWF,EACX,IAAK,CAAE,OAAQ,iBAAiB68B,KAAW,IAAKA,EAAQ,GAAG5hC,CAAI,EAC/D,KAAMkG,GAENnF,EAAA,QAAA,cAACwC,GAAA,CAAS,GAAGmjC,EAAiB,WAAYL,EAAY,KAAMngC,CAAAA,EACzDpF,EAKAoF,IAAS,cACRnF,EAAAA,QAAA,cAAColC,GAAA,CAAe,UAAW,CAACjV,GAAa,CAACmV,CAAAA,CAAY,CAE1D,CACF,CACF,CAEJ,EAEAD,GAAQ,MAAQR,GAChBQ,GAAQ,UAAYP,GACpBO,GAAQ,UAAYN,GACpBM,GAAQ,OAASX,GACjBW,GAAQ,KAAOV,GACfU,GAAQ,OAAST,GAEjBS,GAAQ,YAAc,UCnJtB,MAAMO,GAAoB,QAEpBC,GAAmCvmC,EAAO,WAAW,CACzD,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEzP,EAAM,CACP,WAAY,mDACZ,WAAY,IACZ,MAAO,cACP,SAAUq7B,GACV,SAAU,CACR,WAAY,CACV,KAAM,CACJ,QAAS,EACT,eAAgB,CACd,UAAW,eACX,WAAY,kDACd,CACF,EACA,MAAO,CACL,QAAS,EACT,eAAgB,CACd,UAAW,iBACX,WAAY,sDACd,CACF,CACF,CACF,CACF,CAAC,EAMYE,GACX18B,GACgB,CAChB,KAAM,CAAE,WAAAk8B,CAAW,EAAIL,GAAgB,EACvC,OACEjlC,EAAAA,QAAA,cAAC6lC,GAAA,CACC,KAAK,KACL,GAAG,OACF,GAAGz8B,EACJ,WAAYk8B,CAAAA,CACd,CAEJ,EC1CaS,GAAoC,CAAC,CAChD,SAAAhmC,KACGmE,CACL,IAEIlE,EAAA,cAAC8I,EAAA,CAAK,IAAK,EAAG,MAAM,SAAU,GAAG5E,CAAAA,EAE7BlE,EAAM,SAAS,IAAID,EAAWwH,GACxB,OAAOA,GAAU,UAAY,OAAOA,GAAU,SAE9CvH,EAAA,cAAC8lC,GAAA,KAA4Bv+B,CAAM,EAGnCvH,EAAM,eAAeuH,CAAK,GAAKA,EAAM,OAAShD,EACzCvE,EAAA,cAACykC,GAAA,CAA4B,GAAGl9B,EAAM,KAAO,CAAA,EAE/CA,CACR,CAEL,EChBEy+B,GAA+C1mC,EACnDqF,WACA4/B,EACF,EAEMjgC,GAAahF,EAAOiF,EAAM,CAC9B,WAAY,kBACZ,0BAA2B,CACzB,UAAW,gBACb,CACF,CAAC,EAMY0hC,GAAyC,CAAC,CACrD,SAAAlmC,KACGmE,CACL,IAA4C,CAC1C,KAAM,CAAE,cAAAoV,CAAc,EAAItZ,EAAAA,QAAM,WAC9B6jC,EACF,EAEA,OACE7jC,UAAA,cAACid,GAAAA,KAAA,CAAK,QAAO,EAAA,EACXjd,EAAA,QAAA,cAACgmC,GAAA,CAA6C,KAAK,KAAM,GAAG9hC,EAAM,QAAO,EAAA,EACvElE,EAAAA,QAAA,cAAC8I,EAAA,CACC,GAAG,SACH,KAAK,SACL,MAAM,SACN,QAAQ,gBACR,IAAK,EACL,IAAKwQ,CAAAA,EAELtZ,EAAA,QAAA,cAAC+lC,GAAA,KACEhmC,CACH,EACAC,EAAAA,QAAA,cAACsE,GAAA,CAAW,KAAK,KAAK,GAAIS,aAAAA,CAAa,CACzC,CACF,CACF,CAEJ,EC7CMmhC,GAAmC5mC,EACvC2d,GAAAA,KACAsnB,EACF,EAQa4B,GAA6B,CAAC,CACzC,GAAAt8B,EACA,KAAA1C,EACA,SAAApH,KACGmE,CACL,IAAuC,CACrC,MAAM6c,EAAYlX,IAAO1C,EAAO,IAAM,UAChCi/B,EAAiBv8B,EACnB,CAAC,EACD1C,EACAV,GAAuBU,CAAI,EAC3B,CAAE,KAAM,QAAS,EAErB,OACEnH,EAAAA,QAAA,cAAC4jC,GAAA,KACC5jC,EAAA,QAAA,cAACkmC,GAAA,CACC,KAAK,KACL,KAAM/+B,EACL,GAAGjD,EACH,GAAGkiC,EACJ,SAAU5E,GACV,QAAO,EAEPxhC,EAAAA,EAAAA,QAAA,cAAC+gB,EAAA,KACC/gB,EAAAA,QAAA,cAAC+lC,GAAA,KACEhmC,CACH,CACF,CACF,CACF,CAEJ,ECnDM0iC,GAAQtjC,EAAY,CACxB,OAAQ,CACN,KAAM,cACN,WAAY,SACZ,gBAAiB,SACjB,iBAAkB,SAClB,aAAc,WACd,mBAAoB,UACtB,CACF,CAAC,EAEY0D,GAAe,CAC1B,MAAA4/B,EACF,ECCMz9B,GAAa1F,EAAO2F,QAAM,CAC9B,MAAO,MACT,CAAC,EAkBYohC,GAAyB,OAAO,OAC3C,CAAC,CAAE,SAAAtmC,KAAamE,CAAK,IACnBlE,EAAAA,QAAA,cAACgF,GAAA,CACC,UAAWshC,GAAmC,MAC7C,GAAGpiC,EACJ,YAAY,YAEZlE,EAAA,QAAA,cAACkkC,GAAA,KAA4BnkC,CAAS,CACxC,EAEF,CACE,KAAMomC,GACN,UAAWpC,GACX,iBAAkBK,GAClB,iBAAkB6B,GAClB,KAAMrC,GACN,YAAamC,GACb,KAAMtB,GACN,KAAMqB,EACR,CACF,ECjDMS,GAAgBjnC,EAAOO,EAAK,CAChC,SAAU,UACZ,CAAC,EAEK4Q,GAAcnR,EAAOwJ,EAAM,CAC/B,WAAY,QACZ,SAAU,MACV,cAAe,SACf,eAAgB,SAChB,SAAU,WACV,IAAK,IACL,MAAO,IACP,UAAW,sCACX,aAAc,SACd,EAAG,KACH,OAAQ,KACR,SAAU,KACV,UAAW,SACX,MAAO,OACP,GAAI,aACN,CAAC,EAMY09B,GAAoB,CAAC,CAChC,MAAA9nC,EACA,SAAAqB,CACF,IACEC,EAAAA,QAAA,cAACumC,GAAA,KACE,CAAC,CAAC7nC,GAASsB,EAAAA,QAAA,cAACyQ,GAAA,CAAY,KAAK,QAAU/R,EAAAA,CAAM,EAC7CqB,CACH,EChCI0mC,GAAannC,EAAO,OAAQ,CAAE,OAAQ,CAAE,CAAC,EAEzConC,GAAsBpnC,EAAO2H,EAAY,CAC7C,aAAc,KACd,OAAQ,EACR,OAAQ,kBACR,UAAW,CACT,GAAI,WACJ,IAAK,CAAE,MAAO,UAAW,CAC3B,EACA,IAAK,CACH,MAAO,UACT,EACA,WAAY,CACV,GAAI,WACJ,IAAK,CAAE,MAAO,UAAW,CAC3B,EACA,aAAc,CACZ,QAAS,GACT,cAAe,MACjB,EACA,SAAU,CACR,gBAAiB,CACf,SAAU,CACR,gBAAiB,QACjB,YAAa,qBACf,EACA,OAAQ,CACN,gBAAiB,WACjB,YAAa,qBACf,CACF,CACF,CACF,CAAC,EAYY0/B,GACX3mC,EAAM,WAAW,CAACoJ,EAAO24B,IAAiB,CACxC,KAAM,CACJ,KAAAthC,EACA,uBAAAmmC,EACA,YAAAC,EACA,gBAAAC,EAAkB,cACf5iC,CACL,EAAIkF,EAOJ,OACEpJ,EAAA,cAACgG,GAAA,KACChG,EAAA,cAACgG,GAAQ,QAAR,CAAgB,QAAO,EAAA,EACtBhG,EAAA,cAACymC,GAAA,CAAW,SAAU,EACpBzmC,EAAAA,EAAA,cAAC0mC,GAAA,CACC,WAAY,GACZ,SAAU,GACV,WAAW,UACX,gBAAiBI,EACjB,IAAK/E,EACJ,GAAG79B,CAEJlE,EAAAA,EAAA,cAACuE,EAAA,CAAK,GAAI9D,CAAM,CAAA,CAClB,CACF,CACF,EACComC,GACC7mC,EAAA,cAACgG,GAAQ,QAAR,KAAiB4gC,CAAuB,CAE7C,CAEJ,CAAC,EC9DGG,GAAuBznC,EAAOwJ,EAAM,CACxC,SAAU,CACR,WAAY,CACV,SAAU,CAAC,EACX,OAAQ,CAAE,IAAK,KAAM,CACvB,CACF,CACF,CAAC,EAEYk+B,GAEThnC,EAAM,WACR,CACE,CACE,MAAAtB,EACA,aAAAujB,EAAe,EACf,cAAAD,EACA,IAAAilB,EAAM,EACN,IAAAC,EAAM,OAAO,iBACb,KAAAC,EAAO,EACP,SAAU7V,EAAa,GACvB,SAAU8V,EAAa,GACvB,KAAAllC,EAAO,KACP,oBAAqBmlC,EACrB,uBAAwBC,EACxB,IAAAroC,EACA,WAAAiI,EAAa,cACVhD,CACL,EACAC,IACgB,CAChB,KAAM,CAAC+d,EAAeC,CAAgB,EAAIniB,EAAM,SAC9CtB,GAASujB,CACX,EACAjiB,EAAM,UAAU,IAAM,CAEhB,OAAOtB,EAAU,KAAayjB,EAAiBzjB,CAAK,CAC1D,EAAG,CAACA,CAAK,CAAC,EAEV,MAAM6oC,EAAWvnC,EAAM,OAAgC,IAAI,EAE3DA,EAAM,oBAAoBmE,EAAK,IAAMojC,EAAS,OAA2B,EAEzE,MAAM96B,EAAWzM,EAAM,QAAQ,IAAMiC,GAAiBC,CAAI,EAAG,CAACA,CAAI,CAAC,EAE7DslC,EAAsB,CAC1B,UAAW,YACX,UAAW,YACX,GAAGH,CACL,EAEMT,EAAyB,CAC7B,UAAW,6BAA6BK,IACxC,UAAW,6BAA6BC,IACxC,GAAGI,CACL,EAEMG,EAAUvlB,GAAiBglB,EAC3BQ,EAAUxlB,GAAiB+kB,EAE3BU,EAAQ3nC,EAAM,YACjBkiB,GAA0B,KAAK,IAAI,KAAK,IAAIA,EAAe+kB,CAAG,EAAGC,CAAG,EACrE,CAACA,EAAKD,CAAG,CACX,EAEMW,EAAc5nC,EAAM,YACvBqiB,GAAqB,CACpBL,GAAA,MAAAA,EAAgBK,CAChBF,EAAAA,EAAiBE,CAAQ,CAC3B,EACA,CAACL,CAAa,CAChB,EAEM6lB,EAAgB7nC,EAAM,YACzBua,GAA+C,CAC9C,MAAMutB,EAAc,OAAOvtB,EAAM,OAAO,MAAM,QAAQ,MAAO,EAAE,CAAC,EAChEqtB,EAAYE,CAAW,CACzB,EACA,CAACF,CAAW,CACd,EAEMG,EAAY/nC,EAAM,YAAY,IAAM,CA5G9C,IAAAwa,EA6GM,GAAIitB,GAAWL,EAAY,QAC3B5sB,EAAA+sB,GAAA,KAAAA,OAAAA,EAAU,UAAV,MAAA/sB,EAAmB,QACnB,MAAM6H,EAAW,OAAOH,CAAa,EAAIilB,EACzCS,EAAYD,EAAMtlB,CAAQ,CAAC,CAC7B,EAAG,CAACslB,EAAOF,EAASL,EAAYD,EAAMS,EAAa1lB,CAAa,CAAC,EAE3D8lB,EAAYhoC,EAAM,YAAY,IAAM,CAnH9C,IAAAwa,EAoHM,GAAIktB,GAAWN,EAAY,QAC3B5sB,EAAA+sB,GAAA,KAAAA,OAAAA,EAAU,UAAV,MAAA/sB,EAAmB,MAAA,EACnB,MAAM6H,EAAW,OAAOH,CAAa,EAAIilB,EACzCS,EAAYD,EAAMtlB,CAAQ,CAAC,CAC7B,EAAG,CAACslB,EAAOD,EAASN,EAAYH,EAAKE,EAAMS,EAAa1lB,CAAa,CAAC,EAEhE+lB,EAAYjoC,EAAM,YACrBua,GAA+B,CAC9B,GAAIA,EAAM,YAAY,YAAa,OAUnC,MAAM2tB,EAAW3tB,EAAM,IAWjB5O,GATqD,CACzD,QAASo8B,EACT,WAAYA,EACZ,UAAWC,EACX,UAAWA,EACX,KAAM,IAAMJ,EAAYX,CAAG,EAC3B,IAAK,IAAMW,EAAYV,CAAG,CAC5B,EAEsBgB,GAElBv8B,KACF4O,EAAM,eACN5O,EAAAA,GAAO4O,CAAK,EAEhB,EACA,CAACwtB,EAAWC,EAAWJ,EAAaX,EAAKC,CAAG,CAC9C,EAEMiB,EAAiD,CACrD,KAAM,SACN,MAAOjmB,EACP,GAAGhe,EACH,SAAU2jC,EACV,UAAAI,EACA,KAAA/lC,EACA,WAAAgF,EACA,IAAK,CACH,aAAc,MACd,MAAO,KACP,aAAc,CAAE,QAAS,GAAK,cAAe,MAAO,CACtD,EACA,IAAKqgC,EACL,SAAUH,EACV,SAAU9V,EACV,gBAAiB2V,EACjB,gBAAiBC,EACjB,gBAAiBhlB,EACjB,KAAM,YACR,EAEA,OACEliB,EAAA,cAAC+mC,GAAA,CAAqB,WAAY7/B,EAAY,IAAKjI,CAAAA,EACjDe,EAAA,cAAC2mC,GAAA,CACC,QAASqB,EACT,KAAMpxB,EAAAA,MACN,IAAK,CACH,YAAa,OACb,qBAAsB,MACtB,wBAAyB,KAC3B,EACA,KAAMnK,EACN,gBAAiBvF,EACjB,SAAUwgC,GAAWpW,EACrB,YAAaoW,GAAW,CAACpW,EACzB,uBAAwBsV,EAAuB,UAC/C,MAAOY,EAAoB,SAC7B,CAAA,EACAxnC,EAAA,cAACujB,GAAA,CAAO,GAAG4kB,CAAAA,CAAY,EACvBnoC,EAAA,cAAC2mC,GAAA,CACC,QAASoB,EACT,KAAMK,EAAAA,KACN,IAAK,CACH,WAAY,OACZ,oBAAqB,MACrB,uBAAwB,KAC1B,EACA,KAAM37B,EACN,gBAAiBvF,EACjB,SAAUugC,GAAWnW,EACrB,YAAamW,GAAW,CAACnW,EACzB,uBAAwBsV,EAAuB,UAC/C,MAAOY,EAAoB,SAC7B,CAAA,CACF,CAEJ,CACF,EAEAR,GAAY,YAAc,cC/Lb,MAAAqB,GAAmB,CAAC,CAC/B,IAAAppC,EACA,aAAAgjB,EAAe,EACf,UAAAhE,EACA,MAAAvf,EACA,OAAAsf,EACA,YAAAhT,EACA,MAAA3E,EACA,KAAA9C,EACA,WAAAoc,EACA,cAAAqC,EACA,WAAA9a,KACGxE,CACL,IAA6B,CAC3B,KAAM,CAAE,QAAAkd,CAAQ,EAAIN,EAAe,eAAA,EAC7BlT,EAAUqS,GAAqB,EAC/B,CACJ,MAAO,CAAE,IAAAta,EAAK,SAAA0b,EAAU,MAAOmO,EAAY,KAAMjO,CAAU,CAC7D,EAAIC,EAAc,cAAA,CAChB,KAAAzc,EACA,QAAAqc,EACA,MAAOD,EACP,aAAAsC,CACF,CAAC,EACK,CAAE,MAAAnE,CAAM,EAAIqB,GAAc5b,CAAI,EAE9B8gB,GAAiBjY,GAAA,KAAA,OAAAA,EAAS,aAAclF,EAE9C,OAAAlH,EAAM,UAAU,IAAM,CAEhB,OAAOtB,EAAU,KAAamhB,EAASnhB,CAAK,CAClD,EAAG,CAACA,CAAK,CAAC,EAGRsB,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAEZrkB,EAAAA,EAAA,cAACgnC,GAAA,CACC,GAAIzjC,EACJ,KAAMwc,EACN,IAAK5b,EACJ,GAAI2Z,GAAS,CAAE,MAAO,QAAS,eAAgB,EAAK,EACrD,aAAcmE,EACd,cAAgBI,GAAa,CAC3BxC,EAASwC,CAAQ,EACjBL,GAAA,MAAAA,EAAgBK,CAClB,CAAA,EACA,MAAO2L,EACP,WAAY3J,EACX,GAAG3hB,CAAAA,CACN,CACF,CAEJ,EAEA2lC,GAAiB,YAAc,mBClF/B,MAAMC,GAAoBhpC,EAAOipC,GAAS,KAAM,CAC9C,aAAc,SACd,WAAY,WACZ,SAAU,WACV,SAAU,SACV,MAAO,OACP,SAAU,CACR,KAAM,CACJ,GAAI,CAAE,OAAQ,KAAM,EACpB,GAAI,CAAE,OAAQ,IAAK,CACrB,EACA,MAAO,CACL,QAAS,CAAE,MAAO,aAAc,EAChC,KAAM,CAAE,MAAO,OAAQ,EACvB,QAAS,CAAE,MAAO,UAAW,EAC7B,QAAS,CAAE,MAAO,UAAW,EAC7B,OAAQ,CAAE,MAAO,SAAU,EAC3B,QAAS,CAAE,MAAO,WAAY,GAAI,UAAW,CAC/C,CACF,CACF,CAAC,EAEKhyB,GAAkBjX,EAAOipC,GAAS,UAAW,CACjD,gBAAiB,eACjB,aAAc,SACd,UAAW,aACX,OAAQ,OACR,SAAU,WACV,WAAY,oBACd,CAAC,EAUYC,GAAc,CAAC,CAC1B,MAAA9pC,EACA,IAAAwoC,EAAM,IACN,KAAAhlC,EAAO,KACP,MAAA3C,EAAQ,aACLmD,CACL,IACE1C,EAAA,cAACsoC,GAAA,CACC,MAAO5pC,EACP,IAAKwoC,EACL,MAAO3nC,EACP,KAAM2C,EACL,GAAGQ,GAEJ1C,EAAA,cAACuW,GAAA,CACC,MAAO,CACL,MAAO,OACP,UAAW,eAAe,KAAQ7X,GAAS,GAAKwoC,EAAO,OACzD,CAAA,CACF,CACF,EAGFsB,GAAY,YAAc,cCpDnB,MAAMC,GAAa,CAAC,CACzB,IAAAxpC,EACA,MAAAoH,EACA,MAAA3H,KACGgE,CACL,IACE1C,EAAA,cAACue,GAAA,CAAmB,IAAKtf,EAAK,MAAOoH,CACnCrG,EAAAA,EAAA,cAACqe,GAAA,CAAY,MAAO3f,EAAQ,GAAGgE,EAAgB,CACjD,EAGF+lC,GAAW,YAAc,aCbzB,MAAMC,GAAWppC,EAAO,WAAY,CAClC,IAAK,OACP,CAAC,EAKKqpC,GAA4B,CAAC,CACjC,SAAA5oC,EACA,IAAAd,EACA,UAAA4T,EAAY,SACZ,aAAAoP,EACA,MAAAvjB,EACA,YAAAsM,EACA,MAAA3E,EACA,KAAA9C,EACA,WAAAoc,EACA,cAAAqC,KACGtf,CACL,IAA6B,CAC3B,KAAM,CAAE,QAAAkd,CAAQ,EAAIN,EAAe,eAAA,EAC7B,CACJ,MAAO,CAAE,IAAAnb,EAAK,SAAA0b,EAAU,MAAOmO,EAAY,KAAMjO,CAAU,CAC7D,EAAIC,EAAAA,cAAc,CAChB,KAAAzc,EACA,QAAAqc,EACA,MAAOD,EACP,aAAAsC,CACF,CAAC,EACK,CAAE,MAAAnE,CAAM,EAAIqB,GAAc5b,CAAI,EAEpC,OAAAvD,EAAM,UAAU,IAAM,CAEhB,OAAOtB,EAAU,KAAamhB,EAASnhB,CAAK,CAClD,EAAG,CAACA,CAAK,CAAC,EAGRsB,EAAA,cAAC0oC,GAAA,CAAS,IAAKzpC,CAAAA,EACbe,EAAA,cAAC+b,GAAA,CACC,GAAG,SACH,IAAK,CAAE,EAAG,EAAG,GAAI,IAAK,EACtB,SAAU,QAAQ4D,GAAA,KAAAA,OAAAA,EAAY,QAAQ,CAErCtZ,EAAAA,CACH,EACC2E,GACChL,EAAA,cAAC4oC,GAAA,CAAiB,IAAK,CAAE,GAAI,IAAK,CAAA,EAAI59B,CAAY,EAGpDhL,EAAA,cAACse,GAAA,CACC,IAAKna,EACL,UAAW0O,EACX,aAAcoP,EACd,cAAgBI,GAAa,CAC3BxC,EAASwC,CAAQ,EACjBL,GAAA,MAAAA,EAAgBK,EAClB,EACA,MAAO2L,EACN,GAAGtrB,CAEH3C,EAAAA,CACH,EAEC+d,GAAS9d,EAAA,cAAC2b,GAAA,CAAc,IAAK,CAAE,GAAI,IAAK,CAAImC,EAAAA,CAAM,CACrD,CAEJ,EAEa+qB,GAAmB,OAAO,OAAOF,GAA2B,CACvE,KAAMF,EACR,CAAC,EAEDE,GAA0B,YAAc,mBC9E3B,MAAAG,GAAkBxpC,EAAO8e,GAAW,KAAM,CACrD,WAAY,SACZ,GAAI,QACJ,OAAQ,qBACR,aAAc,KACd,OAAQ,UACR,QAAS,OACT,UAAW,OACX,0BAA2B,CACzB,QAAS,wBACT,cAAe,MACjB,EACA,SAAU,CACR,MAAO,CACL,KAAM,CAAE,cAAe,KAAM,EAC7B,MAAO,CAAE,cAAe,aAAc,CACxC,EACA,KAAM,CACJ,GAAI,CAAE,GAAI,KAAM,GAAI,IAAK,EACzB,GAAI,CAAE,GAAI,KAAM,GAAI,IAAK,CAC3B,EACA,YAAa,CACX,KAAM,CAAE,MAAO,MAAO,EACtB,MAAO,CAAE,MAAO,aAAc,CAChC,CACF,CACF,CAAC,EAEKC,GAAc/e,EAAO,MAAO,CAChC,WAAY,SACZ,WAAY,OACZ,gBAAiB,cACjB,OAAQ,qBACR,aAAc,SACd,QAAS,OACT,WAAY,EACZ,eAAgB,SAChB,EAAG,EACH,KAAM,KACN,WAAY,oBACZ,2BAA4B,CAC1B,gBAAiB,cACjB,YAAa,aACf,EACA,SAAU,CACR,qBAAsB,CACpB,KAAM,CAAA,EACN,MAAO,EACT,EACA,MAAO,CACL,KAAM,CAAE,GAAI,IAAK,EACjB,MAAO,CACT,CAAA,CACF,EAEA,iBAAkB,CAChB,CACE,qBAAsB,GACtB,MAAO,QACP,IAAK,CAAE,GAAI,MAAO,CACpB,EACA,CACE,qBAAsB,GACtB,MAAO,QACP,IAAK,CAAE,GAAI,IAAK,CAClB,CACF,CACF,CAAC,EAEKypC,GAAYzpC,EAAO8e,GAAW,UAAW,CAC7C,gBAAiB,QACjB,aAAc,SACd,SAAU,WACV,KAAM,KACR,CAAC,EAIY4qB,GAAY,CAAC,CACxB,SAAAjpC,EACA,YAAAkpC,EAAc,GACd,KAAA/mC,EAAO,KACP,MAAAoS,EAAQ,UACLpQ,CACL,IACElE,EAAA,cAAC8oC,IACE,GAAG5kC,EACJ,MAAOoQ,EACP,YAAa20B,EACb,KAAM/mC,CAAAA,EAENlC,EAAA,cAACqe,GAAA,CAAY,MAAO/J,EAAO,qBAAsB20B,CAC/CjpC,EAAAA,EAAA,cAAC+oC,GAAA,IAAU,CACb,EACA/oC,EAAA,cAACH,EAAA,KAAKE,CAAS,CACjB,ECvFWmpC,GAAiB,CAAC,CAC7B,IAAAjqC,EACA,SAAAc,EACA,KAAAmC,EACA,YAAA+mC,EACA,MAAA30B,EACA,IAAA1B,EAAM,IACN,QAAAu2B,KACGjlC,CACL,IACElE,EAAA,cAACoe,GAAW,KAAX,CAAiB,GAAGla,CAAAA,EACnBlE,EAAA,cAAC8I,EAAA,CAAK,UAAU,MAAM,QAASqgC,EAAS,IAAKv2B,EAAK,KAAK,OAAO,IAAK3T,GAChEe,EAAM,SAAS,IAAID,EAAWwH,GACzBvH,EAAM,eAAeuH,CAAK,IAAKA,GAAA,YAAAA,EAAO,QAASyhC,GAC1ChpC,EAAM,aACXuH,EACA,CAAE,KAAArF,EAAM,YAAA+mC,EAAa,MAAA30B,CAAM,CAC7B,EAEK/M,CACR,CACH,CACF,ECzBW6hC,GAAc,CAAC,CAC1B,IAAAnqC,EACA,UAAAgf,EACA,MAAA5X,EACA,KAAA9C,EACA,WAAAoc,EACA,OAAA3B,EACA,YAAAhT,EACA,WAAA9D,KACGxE,CACL,IAAwB,CACtB,KAAM,CAAE,SAAA0hB,CAAS,EAAI9E,EAAe,eAAA,EAC9BlT,EAAUqS,GACV,EAAA,CAAE,MAAAX,CAAM,EAAIqB,GAAc5b,CAAI,EAE9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAC1CC,GAAiBjY,GAAA,KAAAA,OAAAA,EAAS,aAAclF,EAE9C,OACElH,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAAAA,EAEZrkB,EAAA,cAAC4tB,GAAA,CACC,GAAIrqB,EACJ,KAAMA,EACN,IAAKY,EACL,WAAYkgB,EACX,GAAIvG,GAAS,CAAE,MAAO,OAAQ,EAC9B,GAAGpb,CAAAA,CACN,CACF,CAEJ,EAEA0mC,GAAY,YAAc,cCtCnB,MAAMC,GACXrpC,EAAM,QAAA,cAAiD,IAAI,EAEhDspC,GAAyB,CAAC,CACrC,MAAA/pC,EAAQ,OACR,SAAAQ,CACF,IAAgD,CAC9C,KAAM,CAACwpC,EAASC,CAAU,EAAIxpC,UAAM,SAAS,EAAK,EAC5C,CAACmS,EAAYC,CAAa,EAAIpS,EAAAA,QAAM,SAAS,EAAK,EAElDtB,EAAQsB,EAAM,QAAA,QAClB,KAAO,CAAE,MAAAT,EAAO,QAAAgqC,EAAS,WAAAC,EAAY,WAAAr3B,EAAY,cAAAC,CAAc,GAC/D,CAAC7S,EAAOgqC,EAASC,EAAYr3B,EAAYC,CAAa,CACxD,EAEA,OACEpS,EAAAA,QAAA,cAACqpC,GAAsB,SAAtB,CAA+B,MAAO3qC,CAAAA,EACpCqB,CACH,CAEJ,EAEa0pC,GAA2B,IAAkC,CACxE,MAAMr9B,EAAUpM,UAAM,WAAWqpC,EAAqB,EAEtD,GAAI,CAACj9B,EACH,MAAM,IAAI,MACR,uEACF,EAGF,OAAOA,CACT,EC5Cas9B,GAA4B,CAAC,CACxC,IAAAzqC,KACGiF,CACL,IACElE,EAAAA,QAAA,cAACuK,EAAA,CACC,IAAK,CACH,MAAO,WACP,GAAGtL,CACL,EACA,KAAK,KACJ,GAAGiF,CACN,CAAA,ECPWylC,GAAwB,CAAC,CACpC,MAAAtjC,EAAQ,UACR,IAAApH,KACGiF,CACL,IAA4D,CAC1D,KAAM,CAAE,cAAAkO,CAAc,EAAIq3B,GAAAA,EAE1B,OAAAlhC,EAAAA,UAAU,KACR6J,EAAc,EAAI,EACX,IAAMA,EAAc,EAAK,GAC/B,CAACA,CAAa,CAAC,EAGhBpS,EAAAA,QAAA,cAAC+R,GAAY,QAAZ,CAAoB,QAAO,EAC1B/R,EAAAA,EAAAA,QAAA,cAACiH,EAAA,CACC,MAAOZ,EACP,IAAK,CACH,EAAG,OACH,SAAU,WACV,IAAK,KACL,MAAO,KACP,GAAGpH,CACL,EACA,KAAK,KACL,WAAW,SACX,MAAM,UACL,GAAGiF,CAAAA,EAEJlE,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAIkP,EAAAA,KAAAA,CAAO,CACnB,CACF,CAEJ,EClCMm2B,GAAa,CACjB,QAASh/B,EAAAA,SACT,QAASD,EAAAA,OACT,MAAO8Q,EAAAA,MACP,QAAS/Q,EAAAA,KACT,KAAMA,EAAAA,IACR,EAIam/B,GAAqB,CAAC,CACjC,IAAA5qC,EACA,GAAAqN,KACGpI,CACL,IAA4C,CAC1C,KAAM,CAAE,MAAA3E,EAAO,WAAAiqC,CAAW,EAAIC,GAE9B,EAAA,OAAAlhC,EAAAA,UAAU,KACRihC,EAAW,EAAI,EACR,IAAMA,EAAW,EAAK,GAC5B,CAACA,CAAU,CAAC,EAGbxpC,EAAAA,QAAA,cAACuE,EAAA,CACC,IAAK,CACH,EAAG,OACH,SAAU,WACV,KAAM,KACN,IAAK,KACL,MAAO,eACP,GAAGtF,CACL,EACA,GAAIqN,GAAMs9B,GAAWrqC,GACrB,KAAK,KACJ,GAAG2E,CAAAA,CACN,CAEJ,ECtCa4lC,GAAwB,CAAC,CACpC,IAAA7qC,KACGiF,CACL,IACElE,EAAAA,QAAA,cAACH,EAAA,CACC,IAAK,CACH,SAAU,OACV,WAAY,EACZ,WAAY,KACZ,CAAC,0BAA2B,CAAE,GAAI,IAAK,EACvC,GAAGZ,CACL,EACC,GAAGiF,CACN,CAAA,EAGW6lC,GAAwB,CAAC,CACpC,IAAA9qC,KACGiF,CACL,IACElE,EAAAA,QAAA,cAACH,EAAA,CAAI,IAAK,CAAE,SAAU,OAAQ,WAAY,EAAG,GAAGZ,CAAI,GAClDe,UAAA,cAAC8I,EAAA,CAAK,KAAK,OAAO,IAAK,EAAI,GAAG5E,EAAM,CACtC,ECvBW8lC,GACX5gC,GACgBpJ,UAAA,cAACuK,EAAA,CAAK,KAAK,KAAK,OAAO,OAAQ,GAAGnB,CAAO,CAAA,ECcrD6gC,GAAuB3qC,EAAOyS,GAAa,CAC/C,SAAU,WACV,aAAc,KACd,QAAS,OACT,UAAW,KACX,EAAG,KACH,OAAQ,kBACR,SAAU,CACR,MAAO,CACL,QAAS,CACP,GAAI,gBACJ,MAAO,cACT,EACA,QAAS,CACP,GAAI,gBACJ,MAAO,cACT,EACA,MAAO,CACL,GAAI,eACJ,MAAO,aACT,EACA,QAAS,CACP,GAAI,WACJ,MAAO,WACT,EACA,KAAM,CACJ,GAAI,aACJ,MAAO,WACT,CACF,EACA,QAAS,CACP,KAAM,CACJ,GAAI,IACN,CACF,EACA,WAAY,CACV,KAAM,CACJ,GAAI,IACN,CACF,CACF,CACF,CAAC,EAEKm4B,GAAqB,CAAC,CAC1B,SAAAnqC,KACGmE,CACL,IAAsE,CACpE,KAAM,CAAE,MAAA3E,EAAO,QAAAgqC,EAAS,WAAAp3B,CAAW,EAAIs3B,GAAyB,EAEhE,OACEzpC,EAAAA,QAAA,cAACiqC,GAAA,CACE,GAAG/lC,EACJ,MAAO3E,EACP,QAASgqC,EACT,WAAYp3B,CAEZnS,EAAAA,EAAAA,QAAA,cAAC8I,EAAA,CAAK,IAAK,EAAG,QAAQ,gBAAgB,IAAK,CAAE,SAAU,CAAE,CACtD/I,EAAAA,CACH,CACF,CAEJ,EAcaoqC,GAAiB,CAAC,CAC7B,MAAA5qC,EAAQ,UACL2E,CACL,IAEIlE,EAAAA,QAAA,cAACoqC,mBAAA,KACCpqC,EAAAA,QAAA,cAACspC,GAAA,CAAuB,MAAO/pC,GAC7BS,EAAA,QAAA,cAACkqC,GAAA,CAAoB,GAAGhmC,CAAAA,CAAM,CAChC,CACF,EAIJimC,GAAe,MAAQH,GACvBG,GAAe,YAAcT,GAC7BS,GAAe,KAAON,GACtBM,GAAe,QAAUR,GACzBQ,GAAe,QAAUL,GACzBK,GAAe,QAAUJ,GC3GzB,MAAMM,GAAe/qC,EAAO,SAAU,CACpC,WAAY,OACZ,gBAAiBkB,GAAqBjB,GAAM,OAAO,QAAQ,MAAO,SAAS,EAC3E,iBAAkB,oBAClB,aAAc,KACd,MAAO,YACP,QAAS,QACT,WAAY,QACZ,WAAY,IACZ,WAAY,IACZ,MAAO,OACP,UAAW,CACT,OAAQ,SACV,EACA,gBAAiB,CACf,QAAS,MACX,EACA,kCAAmC6C,EACnC,SAAU,CACR,KAAM,CACJ,GAAI,CACF,mBAAoB,8BACpB,eAAgB,kBAChB,SAAU,MACV,OAAQ,KACR,GAAI,KACJ,GAAI,IACN,EACA,GAAI,CACF,mBAAoB,8BACpB,eAAgB,kBAChB,SAAU,MACV,OAAQ,KACR,GAAI,KACJ,GAAI,IACN,EACA,GAAI,CACF,mBAAoB,8BACpB,eAAgB,kBAChB,SAAU,MACV,OAAQ,KACR,GAAI,KACJ,GAAI,IACN,CACF,EACA,MAAO,CACL,MAAO,CACT,CAAA,EACA,WAAY,CACV,SAAU,CACR,gBAAiB,QACjB,OAAQ,qBACR,UAAW,CACT,YAAa,cACb,QAAS,MACX,CACF,EACA,OAAQ,CACN,gBAAiB,WACjB,OAAQ,OACR,UAAW,CACT,QAAS,qBACT,cAAe,EACf,OAAQ,CACV,CACF,CACF,CACF,EACA,iBAAkB,CAChB,CACE,MAAO,QACP,WAAY,WACZ,IAAK,CAAE,YAAa,SAAU,CAChC,EACA,CACE,MAAO,QACP,WAAY,SACZ,IAAK,CACH,gBAAiB,eACjB,UAAW,CACT,aAAc,SAChB,CACF,CACF,CACF,CACF,CAAC,EAgBYkoC,GACXtqC,EAAM,WACJ,CACE,CACE,YAAAuqC,EACA,SAAAxqC,EACA,KAAAmC,EAAO,KACP,WAAAgF,EAAa,cACVxE,CACL,EACAyB,IACG,CACH,MAAMiF,EAAQ,CAAE,KAAAlH,EAAM,WAAAgF,EAAY,IAAA/C,EAAK,GAAGzB,CAAe,EAEzD,MACE,CAACA,EAAe,MAAOA,EAAe,YAAY,EAAE,MACjDhE,GAAUA,IAAU,MACvB,IAEA0K,EAAM,aAAe,IAIrBpJ,EAAA,cAACqqC,GAAA,CAAc,GAAGjhC,CACfmhC,EAAAA,GACCvqC,EAAA,cAAC,SAAO,CAAA,SAAQ,GAAC,OAAM,GAAC,MAAM,EAC3BuqC,EAAAA,CACH,EAEDxqC,CACH,CAEJ,CACF,EAEFuqC,GAAO,YAAc,SClIR,MAAAE,GAAc,CAAC,CAC1B,IAAAvrC,EAAM,OACN,UAAAgf,EACA,SAAAle,EACA,KAAAwD,EACA,MAAA8C,EACA,WAAAsZ,EACA,OAAA3B,EACA,YAAAhT,EACA,WAAA9D,KACGxE,CACL,IAAwB,CACtB,KAAM,CAAE,SAAA0hB,CAAS,EAAI9E,iBAAe,EAC9BlT,EAAUqS,GAAAA,EACV,CAAE,MAAAX,CAAM,EAAIqB,GAAc5b,CAAI,EAC9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAC1CC,GAAiBjY,GAAA,KAAA,OAAAA,EAAS,aAAclF,EAE9C,OACElH,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAAAA,EAEZrkB,EAAA,cAACsqC,GAAA,CACC,KAAM/mC,EACN,GAAIA,EACJ,WAAY8gB,EACX,GAAG3hB,EACJ,IAAKyB,EACJ,GAAI2Z,GAAS,CAAE,MAAO,OAAQ,CAAA,EAE9B/d,CACH,CACF,CAEJ,EAEAyqC,GAAY,YAAc,cCzC1B,MAAMC,GAAuBnrC,EAAO,MAAO,CACzC,OAAQ,WACR,GAAI,KACJ,SAAU,WACV,MAAO,MACT,CAAC,EAEKorC,GAAkB,CAAChsC,EAAeuoC,EAAaC,KAC1CxoC,EAAQuoC,IAAQC,EAAMD,GAAQ,IAGnC0D,GAAoB,CAACjsC,EAAeuoC,EAAaC,IAAwB,CAC7E,MAAM0D,EAAaF,GAAgBhsC,EAAOuoC,EAAKC,CAAG,EAElD,OAAI0D,GAAc,GAAW,EACzBA,GAAc,GAAW,IACtB,EACT,EAEaC,GAAc,CAAC,CAAE,IAAA5D,EAAK,IAAAC,EAAK,MAAA4D,EAAQ,EAAG,IAC7CA,EAAM,SAAW,EAAU,KAG7B9qC,EAAA,cAACyqC,GAAA,KACEK,EAAM,IAAK3D,GACVnnC,EAAA,cAACuK,EAAA,CACC,GAAG,OACH,IAAK48B,EAAK,MACV,IAAK,CACH,SAAU,WACV,MAAO,UACT,EACA,MAAO,CACL,KAAM,GAAGuD,GAAgBvD,EAAK,MAAOF,EAAKC,CAAG,KAC7C,UAAW,eAAeyD,GACxBxD,EAAK,MACLF,EACAC,CACF,KACF,CAECC,EAAAA,EAAK,KACR,CACD,CACH,EC/CS4D,GAAc,CAAC,CAC1B,MAAArsC,EAAQ,CAAC,EACT,YAAAssC,EAAetsC,GAAU,oBAAoBA,GAC/C,IAEIsB,EAAA,cAACuK,EAAA,CAAK,IAAK,CAAE,GAAI,KAAM,MAAO,WAAY,MAAO,MAAO,CAAA,EACrDygC,EAAYtsC,EAAM,SAAW,EAAIA,EAAM,GAAKA,CAAK,CACpD,ECVEusC,GAAc3rC,EAAO4rC,SAAO,CAChC,aAAc,SACd,SAAU,EACV,SAAU,WACV,mCAAoC,CAAE,OAAQ,UAAW,EACzD,iCAAkC,CAAE,MAAO,UAAW,CACxD,CAAC,EAEKC,GAAe7rC,EAAO2F,QAAM,CAChC,WAAY,SACZ,QAAS,OACT,SAAU,WACV,YAAa,OACb,WAAY,OACZ,OAAQ,UACR,mCAAoC,CAClC,OAAQ,IACV,EACA,iCAAkC,CAChC,cAAe,SACf,MAAO,IACT,EACA,cAAe7C,EACf,SAAU,CACR,MAAO,CACL,MAAO,CACL,CAAC,GAAG6oC,MAAgB,CAAE,GAAI,MAAO,CACnC,EACA,MAAO,CACL,CAAC,GAAGA,MAAgB,CAAE,GAAI,UAAW,CACvC,CACF,CACF,CACF,CAAC,EAEKG,GAAc9rC,EAAO+rC,GAAAA,MAAO,CAChC,GAAI,cACJ,aAAc,SACd,OAAQ,OACR,SAAU,WACV,cAAejpC,CACjB,CAAC,EAEKkpC,GAAchsC,EAAOisC,GAAO,MAAA,CAChC,GAAI,cACJ,aAAc,SACd,QAAS,QACT,KAAM,KACN,UAAW,CACT,GAAI,cACN,EACA,UAAW,CACT,QAAS,wBACT,cAAe,KACjB,EACA,cAAenpC,CACjB,CAAC,EASYopC,GAAqBxrC,EAAM,WACtC,CACE,CACE,MAAAtB,EACA,aAAAujB,EACA,IAAAglB,EAAM,EACN,IAAAC,EAAM,IACN,MAAA3nC,EAAQ,QACR,IAAAN,EACA,SAAAc,KACG2C,CACL,EACAyB,IACG,CACH,MAAMsnC,EAAS/sC,GAASujB,EACxB,OACEjiB,EAAA,cAACF,GAAA,CAAW,IAAKb,CAAAA,EACfe,EAAA,cAACmrC,GAAA,CACC,MAAO5rC,EACP,aAAc0iB,EACd,MAAOvjB,EACP,IAAKuoC,EACL,IAAKC,EACL,IAAK/iC,EACJ,GAAGzB,CAAAA,EAEJ1C,EAAA,cAACirC,GAAA,KACCjrC,EAAA,cAACorC,GAAA,IAAY,CACf,GACCK,GAAA,KAAA,OAAAA,EAAQ,SACPA,EAAO,IAAI,CAACzW,EAAG7xB,IAAMnD,EAAA,cAACsrC,GAAA,CAAY,IAAK,QAAQnoC,GAAAA,CAAK,CAAE,CAC1D,EACCpD,CACH,CAEJ,CACF,EAEAyrC,GAAO,MAAQT,GACfS,GAAO,MAAQX,GAEfW,GAAO,YAAc,SClGR,MAAAE,GAAc,CAAC,CAC1B,IAAAzsC,EACA,UAAAgf,EACA,MAAA5X,EACA,KAAA9C,EACA,aAAA0e,EACA,MAAAvjB,EACA,WAAAihB,EACA,YAAAqrB,EACA,IAAA/D,EAAM,EACN,IAAAC,EAAM,IACN,MAAA4D,EAAQ,CAAA,KACLpoC,CACL,IAAwB,CACtB,KAAM,CAAE,QAAAkd,CAAQ,EAAIN,EAAAA,iBACd,CACJ,MAAO,CAAE,IAAAnb,EAAK,SAAA0b,EAAU,MAAOmO,EAAY,KAAMjO,CAAU,CAC7D,EAAIC,EAAAA,cAAc,CAChB,KAAAzc,EACA,QAAAqc,EACA,MAAOD,EACP,aAAAsC,CACF,CAAC,EAED,OAAAjiB,EAAAA,QAAM,UAAU,IAAM,CAEhBtB,GAAA,MAAAA,EAAO,QAAQmhB,EAASnhB,CAAK,CACnC,EAAG,CAAC,KAAK,UAAUA,CAAK,CAAC,CAAC,EAGxBsB,EAAAA,QAAA,cAAC6d,GAAA,CAAa,IAAK5e,EAAK,QAASsE,EAAM,MAAO8C,EAAO,UAAW4X,CAAAA,EAC9Dje,EAAAA,QAAA,cAACwrC,GAAA,CACC,IAAKrnC,EACL,KAAM4b,EACN,cAAeF,EACf,MAAOmO,EACP,IAAKiZ,EACL,IAAKC,EACJ,GAAGxkC,GAEJ1C,EAAA,QAAA,cAACwrC,GAAO,MAAP,CAAa,IAAKvE,EAAK,IAAKC,EAAK,MAAO4D,CAAO,CAAA,EAEhD9qC,EAAAA,QAAA,cAACwrC,GAAO,MAAP,CAAa,MAAOxd,EAAY,YAAagd,CAAa,CAAA,CAC7D,CACF,CAEJ,EAEAU,GAAY,YAAc,cC3Db,MAAAC,GAASrsC,EAAO,MAAO,CAClC,KAAM,EACN,YAAa,UACb,UAAW,SACb,CAAC,EAEDqsC,GAAO,YAAc,SCRrB,MAAMC,GAAiB5rC,EAAM,cAAuB,CAClD,MAAO,CAAA,EACP,iBAAkB,IAAM,KACxB,aAAc,IAAM,KACpB,SAAU,IAAM,KAChB,WAAY,EACZ,YAAa,CAAC,EACd,UAAW,GACX,UAAW,aACX,WAAY,GACZ,eAAgB,CAAC,EACjB,mBAAoB,EACtB,CAAC,EAEY6rC,GAAkB,CAAC,CAC9B,SAAA9rC,EACA,UAAA+rC,EACA,UAAAC,EACA,WAAAC,EACA,aAAAC,EACA,UAAAp5B,EACA,MAAAi4B,EACA,WAAAoB,EACA,mBAAAC,CACF,IAAqD,CACnD,KAAM,CAACC,EAAYC,CAAa,EAAIrsC,EAAM,SAAS,CAAC,EAE9C,CAACssC,EAAaC,CAAc,EAAIvsC,EAAM,SAAmB,CAAC,CAAC,CAAC,EAC5D,CAACwsC,EAAgBC,CAAiB,EAAIzsC,EAAM,SAAmB,CAAE,CAAA,EAEjEyR,EAAe,CAACq6B,EAEtB9rC,EAAM,UAAU,IAAM,CACpBusC,EAAgB5jC,GACdA,EAAK,SAASyjC,CAAU,EAAIzjC,EAAO,CAAC,GAAGA,EAAMyjC,CAAU,CACzD,EAEAH,GAAA,MAAAA,EAAeG,CAAAA,CACjB,EAAG,CAACA,EAAYH,CAAY,CAAC,EAE7B,MAAMS,EAAe,IAAM,CACzB,MAAMC,EAAcX,GAAcI,IAAeN,EAAY,EACvDc,EAAaR,EAAaN,EAAY,EAQ5C,IANIE,GAAcY,IAChBH,EAAmB9jC,GACjBA,EAAK,SAASyjC,CAAU,EAAIzjC,EAAO,CAAC,GAAGA,EAAMyjC,CAAU,CACzD,EAGEO,EACF,OAAOX,GAAA,YAAAA,EAET,EAAA,GAAIY,EACF,OAAOP,EAAeQ,GAAYA,EAAU,CAAC,CAEjD,EAEMC,EAAmB,IAAM,CAC7BT,EAAeQ,GAAYA,EAAU,CAAC,CACxC,EAEME,EAAYj6B,GAAkB,CAClCu5B,EAAcv5B,CAAK,CACrB,EAEA,OACE9S,EAAA,cAAC4rC,GAAe,SAAf,CACC,MAAO,CACL,MAAOd,GAAS,MAAMgB,CAAS,EAAE,KAAK,EAAE,EACxC,iBAAkBr6B,EAAe,OAAYq7B,EAC7C,aAAcr7B,EAAe,OAAYi7B,EACzC,SAAUj7B,EAAe,OAAYs7B,EACrC,WAAAX,EACA,YAAAE,EACA,eAAAE,EACA,UAAAT,EACA,UAAAl5B,EACA,WAAAq5B,EACA,mBAAAC,CACF,CAECpsC,EAAAA,CACH,CAEJ,EAEaitC,GAAa,IAAe,CACvC,MAAM5gC,EAAUpM,EAAM,WAAW4rC,EAAc,EAC/C,GAAI,CAACx/B,EACH,MAAM,IAAI,MACR,qEACF,EAEF,OAAOA,CACT,EC7Fa6gC,GAAkB,CAAC,CAC9B,MAAA5mC,EACA,SAAAtG,KACGmE,CACL,IAAmE,CACjE,KAAM,CAAE,WAAAkoC,EAAY,iBAAAU,CAAiB,EAAIE,GAAW,EACpD,OACEhtC,EAAA,cAAC4J,GAAA,CACC,KAAK,KACL,WAAW,UACV,GAAG1F,EACJ,SAAUkoC,IAAe,EACzB,QAASU,CAAAA,EAER/sC,IAAYsG,GAAA,KAAA,OAAAA,EAAQ+lC,CAAAA,EACvB,CAEJ,ECjBac,GAAqB,CAAC,CACjC,MAAA7mC,EACA,SAAAtG,EACA,QAAAgK,KACG7F,CACL,IAA4E,CAC1E,KAAM,CAAE,aAAAwoC,EAAc,WAAAN,CAAW,EAAIY,KASrC,OACEhtC,EAAA,cAAC4J,GAAA,CAAO,KAAK,KAAM,GAAG1F,EAAM,QARV,IAAM,CACxB,GAAI6F,EACF,OAAOA,EAAQ,IAAM2iC,GAAA,KAAA,OAAAA,EAAgB,CAAA,EAEvCA,GAAA,MAAAA,EACF,CAAA,EAGoD,IAAK,CAAE,GAAI,MAAO,CAAA,EACjE3sC,IAAYsG,GAAA,KAAAA,OAAAA,EAAQ+lC,GACvB,CAEJ,ECtBae,GAAoB7tC,EAAOwJ,EAAM,CAC5C,SAAU,WACV,EAAG,KACH,eAAgB,SAChB,WAAY,SACZ,KAAM,KACN,aAAc,MACd,OAAQ,OACR,GAAI,WACJ,OAAQ,EACR,KAAM,OACN,SAAU,CACR,OAAQ,CACN,QAAS,CAAE,GAAI,WAAY,MAAO,UAAW,EAC7C,OAAQ,CACN,GAAI,QACJ,MAAO,cACP,OAAQ,YACR,YAAa,cACf,EACA,OAAQ,CACN,GAAI,QACJ,OAAQ,qBACR,MAAO,WACT,EACA,UAAW,CAAE,GAAI,cAAe,MAAO,OAAQ,EAC/C,SAAU,CAAE,GAAI,cAAe,MAAO,OAAQ,EAC9C,QAAS,CAAE,GAAI,WAAY,MAAO,OAAQ,CAC5C,CACF,CACF,CAAC,EC9BYskC,GAAuB9tC,EAAOwJ,EAAM,CAC/C,SAAU,WACV,WAAY,QACZ,WAAY,IACZ,SAAU,MACV,WAAY,SACZ,4BAA6B,CAC3B,QAAS,GACT,SAAU,UACZ,EACA,kBAAmB,CACjB,QAAS,MACX,EACA,SAAU,CACR,YAAa,CAAE,KAAM,EAAG,EACxB,UAAW,CACT,SAAU,CACR,GAAI,KACJ,cAAe,MACf,4BAA6B,CAC3B,OAAQ,OACR,MAAO,MACP,KAAM,OACN,IAAK,KACP,CACF,EACA,WAAY,CACV,GAAI,KACJ,cAAe,SACf,4BAA6B,CAC3B,MAAO,OACP,OAAQ,MACR,KAAM,MACN,IAAK,MACP,CACF,CACF,EACA,UAAW,CACT,QAAS,CAAE,4BAA6B,CAAE,GAAI,UAAW,CAAE,EAC3D,OAAQ,CAAE,4BAA6B,CAAE,GAAI,aAAc,CAAE,EAC7D,QAAS,CAAE,4BAA6B,CAAE,GAAI,UAAW,CAAE,EAC3D,OAAQ,CAAE,4BAA6B,CAAE,GAAI,UAAW,CAAE,CAC5D,EACA,OAAQ,CACN,UAAW,GACX,OAAQ,CAAA,EACR,QAAS,CACT,EAAA,OAAQ,CAAA,EACR,QAAS,CAAC,EACV,SAAU,EACZ,CACF,EACA,iBAAkB,CAChB,CACE,YAAa,GACb,OAAQ,YACR,IAAK,CACH,UAAW,CACT,iBAAkB,CAAE,GAAI,cAAe,MAAO,kBAAmB,EACjE,gBAAiB,CAAE,MAAO,aAAc,CAC1C,EACA,kBAAmB,CACjB,iBAAkB,CAChB,QAAS,wBACT,cAAe,KACjB,CACF,CACF,CACF,EACA,CACE,YAAa,GACb,OAAQ,SACR,IAAK,CACH,UAAW,CACT,iBAAkB,CAAE,YAAa,WAAY,MAAO,WAAY,EAChE,gBAAiB,CAAE,MAAO,WAAY,CACxC,EACA,kBAAmB,CACjB,iBAAkB,CAChB,QAAS,wBACT,cAAe,KACjB,CACF,CACF,CACF,EACA,CACE,YAAa,GACb,OAAQ,SACR,IAAK,CACH,UAAW,CACT,iBAAkB,CAAE,YAAa,WAAY,MAAO,WAAY,EAChE,gBAAiB,CAAE,MAAO,WAAY,CACxC,EACA,kBAAmB,CACjB,iBAAkB,CAChB,QAAS,mCACT,cAAe,gBACjB,CACF,CACF,CACF,EACA,CACE,YAAa,GACb,OAAQ,WACR,IAAK,CACH,kBAAmB,CACjB,iBAAkB,CAChB,QAAS,mCACT,cAAe,gBACjB,CACF,CACF,CACF,CACF,CACF,CAAC,EClHYukC,GAAmB/tC,EAAOiL,EAAM,CAC3C,WAAY,IACZ,SAAU,CACR,UAAW,CACT,SAAU,CAAE,GAAI,KAAM,UAAW,MAAO,EACxC,WAAY,CAAE,GAAI,KAAM,UAAW,QAAS,CAC9C,EACA,OAAQ,CACN,QAAS,CAAE,MAAO,WAAY,WAAY,GAAI,EAC9C,OAAQ,CACN,MAAO,aACT,EACA,OAAQ,CAAE,MAAO,WAAY,EAC7B,UAAW,CAAE,MAAO,aAAc,EAClC,QAAS,CAAE,MAAO,UAAW,EAC7B,SAAU,CACZ,CAAA,CACF,CACF,CAAC,ECpBW,IAAA+iC,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,UAAY,YACZA,EAAA,SAAW,WANDA,IAAAA,GAAA,CAAA,CAAA,ECWZ,MAAMC,GAAwBjuC,EAAOwJ,EAAM,CACzC,eAAgB,gBAChB,SAAU,CACR,UAAW,CACT,SAAU,CAAE,cAAe,QAAS,EACpC,WAAY,CAAE,cAAe,KAAM,CACrC,CACF,CACF,CAAC,EAEY0kC,GAAe,CAAC,CAAE,IAAAvuC,CAAI,IAA0B,CAC3D,KAAM,CACJ,MAAA6rC,EACA,SAAAiC,EACA,WAAAX,EACA,YAAAE,EACA,UAAAP,EACA,UAAAl5B,EACA,WAAAq5B,EACA,eAAAM,EACA,mBAAAL,CACF,EAAIa,GAAW,EAETS,EAAmB36B,GAAkB,CACzC,MAAM46B,EAAe5C,EAAMh4B,GAE3B,OAAI46B,EAAa,OAAeA,EAAa,OACzClB,EAAe,SAAW1B,EAAM,OAAewC,EAAO,QACtDlB,IAAet5B,GAAS05B,EAAe,SAASJ,CAAU,EACrDkB,EAAO,SACZlB,IAAet5B,EAAcw6B,EAAO,OACpCd,EAAe,SAAS15B,CAAK,EAAUw6B,EAAO,UAC9ChB,EAAY,SAASx5B,CAAK,EAAUw6B,EAAO,OACxCA,EAAO,OAChB,EAEMK,EAAsB76B,GAAkB,CAjDhD,IAAA0H,EAkDI,MAAMozB,GAAepzB,EAAAswB,EAAMh4B,KAAN,KAAA,OAAA0H,EAAc,OAEnC,OAAIgyB,EAAe,SAAW1B,EAAM,QAIhC8C,IAAiBN,EAAO,QAHnBA,EAAO,QAOZM,IAAiBN,EAAO,WAAax6B,EAAQ,KAAK,IAAI,GAAGw5B,CAAW,EAC/DgB,EAAO,OAGZM,IAAiBN,EAAO,OACnBA,EAAO,OAGTA,EAAO,OAChB,EAEA,OACEttC,EAAA,cAACutC,GAAA,CAAsB,IAAKtuC,EAAK,UAAW4T,CAAAA,EACzCi4B,EAAM,IAAI,CAAC3D,EAAMr0B,IAAU,CAC1B,MAAM86B,EAAeH,EAAgB36B,CAAK,EACpC+6B,EAAkBF,EAAmB76B,CAAK,EAEhD,OACE9S,EAAA,cAACotC,GAAA,CACC,SAAU,EACV,IAAK,QAAQt6B,IACb,UAAWD,EACX,UAAWg7B,EACX,OAAQD,EACR,IACE/6B,IAAc,aACV,CAAE,MAAO,eAAei4B,EAAM,SAAU,EACxC,CAAE,OAAQ,eAAeA,EAAM,SAAU,EAE/C,YAAaiB,CAEb/rC,EAAAA,EAAA,cAACmtC,GAAA,CACC,GAAIpB,EAAY,SAAW,MAC3B,QAAS,IACPA,GAAaO,EAAY,SAASx5B,CAAK,EACnCi6B,GAAA,KAAA,OAAAA,EAAWj6B,CACX,EAAA,OAEN,OAAQ86B,EACR,eAAc96B,IAAUs5B,EAAa,OAAS,OAC9C,aAAajF,EAAK,MAA8B,GAAtB,QAAQr0B,EAAQ,IAC1C,kBAAiBq0B,EAAK,MAAQ,QAAQr0B,IAAU,OAChD,IAAK,CACH,OACEi5B,GAAaO,EAAY,SAASx5B,CAAK,EAAI,UAAY,MAC3D,CAECq0B,EAAAA,EAAK,SAAWmG,EAAO,SACvBnB,GAAsByB,IAAiBN,EAAO,UAC7CttC,EAAA,cAACuE,EAAA,CAAK,GAAIsS,EAAAA,GAAI,EAEd/D,EAAQ,CAEZ,EAECq0B,EAAK,OAAS,CAAC+E,GACdlsC,EAAA,cAACqtC,GAAA,CACC,GAAG,OACH,GAAI,QAAQv6B,IACZ,UAAWD,EACX,OAAQ+6B,GAEPzG,EAAK,KACR,CAEJ,CAEJ,CAAC,CACH,CAEJ,ECxHM2G,GAAmB,CAAC,CACxB,SAAA/tC,EACA,UAAA+rC,EACA,UAAAC,EACA,WAAAC,EACA,aAAAC,EACA,UAAAp5B,EAAY,aACZ,MAAAi4B,EACA,WAAAoB,EAAa,GACb,mBAAAC,EAAqB,GACrB,IAAAltC,CACF,IAA8C,CAC5CqI,GAAAA,QACE,EAAEwkC,GAAahB,GACf,6IACF,EAEA,MAAMiD,GAAQjD,GAAA,KAAA,OAAAA,EAAO,SAAUgB,GAAa,EAE5C,OACE9rC,EAAA,cAAC6rC,GAAA,CACC,UAAWkC,EACX,UAAWhC,EACX,WAAYC,EACZ,aAAcF,EAAYG,EAAe,OACzC,UAAWp5B,EACX,MAAOi4B,GAAS,MAAMiD,CAAK,EAAE,KAAK,EAAE,EACpC,WAAY7B,EACZ,mBAAoBC,CAAAA,EAEpBnsC,EAAA,cAACH,EAAA,CACC,aAAW,WACX,IAAK,CACH,MAAO,OACP,GAAGZ,CACL,CAECc,EAAAA,CACH,CACF,CAEJ,EAEaiuC,GAAU,OAAO,OAAOF,GAAkB,CACrD,SAAUb,GACV,YAAaC,GACb,MAAOM,EACT,CAAC,EAEDM,GAAiB,YAAc,UCrD/B,MAAMG,GAAe3uC,EAAO4uC,GAAY,KAAM,CAC5C,WAAY,OACZ,gBAAiB,WACjB,OAAQ,OACR,aAAc,SACd,OAAQ,UACR,QAAS,OACT,SAAU,SACV,SAAU,WACV,WAAY,oBACZ,UAAW,CACT,gBAAiB,UACnB,EACA,UAAW,CACT,QAAS,wBACT,cAAe,KACjB,EACA,0BAA2B,CACzB,gBAAiB,aACnB,EACA,gCAAiC,CAC/B,gBAAiB,aACnB,EACA,cAAe9rC,EACf,SAAU,CACR,KAAM,CACJ,GAAI,CACF,EAAG,KACH,MAAO,IACT,EACA,GAAI,CACF,EAAG,KACH,MAAO,IACT,CACF,CACF,CACF,CAAC,EAEKkpC,GAAchsC,EAAO4uC,GAAY,MAAO,CAC5C,gBAAiB,QACjB,aAAc,SACd,QAAS,QACT,WAAY,iBACZ,WAAY,YACZ,SAAU,CACR,KAAM,CACJ,GAAI,CACF,KAAM,KACN,0BAA2B,CACzB,UAAW,uCACb,CACF,EACA,GAAI,CACF,KAAM,KACN,0BAA2B,CACzB,UAAW,sBACb,CACF,CACF,CACF,CACF,CAAC,EAIYC,GAAS,CAAC,CAAE,KAAAjsC,EAAO,QAASgC,CAAK,IAC5ClE,EAAA,cAACiuC,GAAA,CAAa,KAAM/rC,EAAO,GAAGgC,CAC5BlE,EAAAA,EAAA,cAACsrC,GAAA,CAAY,KAAMppC,CAAAA,CAAM,CAC3B,EAGFisC,GAAO,YAAc,SCxErB,MAAMC,GAAoB9uC,EAAOkD,GAAAA,QAAS,CACxC,SAAU,EACV,WAAY,OACd,CAAC,EAEY6rC,GAAcD,GAE3BC,GAAY,YAAc,cCH1B,MAAMC,GAAmChvC,EAAO,MAAO,CACrD,SAAU,WACV,MAAO,EACP,OAAQ,mBACR,QAAS,EACT,GAAI,eACN,CAAC,EAEKivC,GAAoBjvC,EAAOqF,GAAAA,QAAS,CACxC,WAAY,OACZ,OAAQ,OACR,OAAQ,UACR,WAAY,EACZ,EAAG,KACH,WAAY,OACZ,aAAc,wBACd,SAAU,WACV,yBAA0B,CACxB,MAAO,gBACP,WAAY,IACZ,cAAe,WACf,YAAa,cACf,EACA,cAAevC,EACf,oBAAqB,CACnB,2BAA4B,CAC1B,MAAO,gBACP,CAAC,KAAKksC,MAAqC,CACzC,QAAS,GACX,CACF,EACA,WAAY,CACV,MAAO,eACT,EACA,kBAAmB,CACjB,GAAG3tC,GAAAA,CACL,CACF,CACF,CAAC,EAEY6tC,GAAcxuC,EAAM,WAG/B,CAAC,CAAE,SAAAD,KAAamE,CAAK,EAAGC,IACxBnE,EAAA,cAACuuC,GAAA,CAAmB,GAAGrqC,EAAM,IAAKC,GAChCnE,EAAA,cAACuK,EAAA,CAAK,KAAK,KAAK,GAAG,MAAA,EAChBxK,CACH,EACAC,EAAA,cAACsuC,GAAA,IAAiC,CACpC,CACD,EAEDE,GAAY,YAAc,oBC9CbC,GAAoB,CAAC,CAChC,QAAA3/B,EACA,MAAAL,EAAQ,IACR,YAAAigC,EAAc,UAChB,IAA2D,CACzD,KAAM,CAACC,EAAgBC,CAAiB,EAAI9qB,EAAS,SAAA,CAAE,KAAM,EAAG,IAAK,CAAE,CAAC,EAElE+qB,EAAgBC,EAAAA,QACpB,IAAOJ,IAAgB,WAAa7/B,GAAAA,SAAWwW,GAAAA,SAC/C,CAACqpB,CAAW,CACd,EAEA,OAAAnmC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACuG,EAAS,OAEd,MAAMigC,EAAeF,EAAcpgC,EAAO,IAAM,CAC9CmgC,EAAkB,CAAE,KAAM9/B,EAAQ,WAAY,IAAKA,EAAQ,SAAU,CAAC,CACxE,CAAC,EAED,OAAAA,EAAQ,iBAAiB,SAAUigC,CAAY,EAExC,IAAM,CACXjgC,EAAQ,oBAAoB,SAAUigC,CAAY,CACpD,CACF,EAAG,CAACjgC,EAAS+/B,EAAepgC,CAAK,CAAC,EAE3BkgC,CACT,EChCaK,GAAU,CAAC,CACtB,QAAAlgC,EACA,MAAAL,EAAQ,GACV,IAGY,CACV,KAAM,CAACvM,EAAM+sC,CAAO,EAAInrB,EAAAA,SAAe,CACrC,MAAO,OACP,OAAQ,MACV,CAAC,EAEKorB,EAAeC,cAAY,IAAM,CACrCF,EAAQ,CACN,MAAOngC,GAAA,KAAA,OAAAA,EAAS,YAChB,OAAQA,GAAA,KAAA,OAAAA,EAAS,YACnB,CAAC,CACH,EAAG,CAACA,CAAO,CAAC,EAENJ,EAAWogC,EAAAA,QAAQ,IAAM,CAAChgC,CAAO,EAAG,CAACA,CAAO,CAAC,EAEnD,OAAAN,GAAkB,CAChB,MAAAC,EACA,SAAUC,EACV,SAAUwgC,CACZ,CAAC,EAEMhtC,CACT,ECxBM8pB,GAAkB1sB,EAAOsE,GAAa,CAC1C,SAAU,WACV,aAAc,mBACd,MAAO,MACT,CAAC,EAEKwrC,GAAoB9vC,EAAO4c,GAAM,KAAA,CACrC,WAAY,EACZ,QAAS,OACT,MAAO,OACP,UAAW,OACX,uBAAwB,CAAE,QAAS,MAAO,EAC1C,eAAgB,MAClB,CAAC,EAEKmzB,GAA0B/vC,EAAO2H,EAAY,CACjD,OAAQ,kBACR,SAAU,WACV,IAAK,MACL,UAAW,mBACX,OAAQ,UACR,WAAY,oBACZ,MAAO,2BACP,aAAc,EACd,QAAS,EACX,CAAC,EAEKqoC,GAAc,GAEPC,GAAkB,CAAC,CAC9B,SAAAxvC,EACA,YAAA8E,EAAc,CAAA,KACXX,CACL,IAEM,CACJ,KAAM,CAACk/B,EAASoM,CAAkB,EAAI3hC,KAEhC,CAAE,MAAA4hC,CAAM,EAAIT,GAAQ,CAAE,QAAS5L,EAAS,MAAO,GAAI,CAAC,EACpD,CAAE,KAAAsM,CAAK,EAAIjB,GAAkB,CACjC,QAASrL,EACT,MAAO,IACP,YAAa,UACf,CAAC,EAEKuM,EAAiB3vC,EAAAA,QAAM,QAAQ,IAC9BojC,EACEA,EAAQ,YAAcA,EAAQ,YADhB,GAEpB,CAACqM,EAAOrM,CAAO,CAAC,EAEbwM,EAAgB5vC,EAAAA,QAAM,QAAQ,IAC7B2vC,EACED,EAAO,EADc,GAE3B,CAACA,EAAMC,CAAc,CAAC,EAEnBE,EAAiB7vC,UAAM,QAAQ,IAC/B,CAACojC,GAAW,CAACuM,EAAuB,GACjCvM,EAAQ,YAAcsM,EAAOtM,EAAQ,YAAc,EACzD,CAACA,EAASsM,EAAMC,CAAc,CAAC,EAE5BG,EAAa9vC,UAAM,YACtB+vC,GAAiB,CACZ,CAAC3M,GACLA,EAAQ,OAAO,CACb,KAAMA,EAAQ,WAAaA,EAAQ,YAAc2M,EACjD,SAAU,QACZ,CAAC,CACH,EACA,CAAC3M,CAAO,CACV,EAEA,OACEpjC,UAAA,cAACgsB,GAAA,CACC,KAAK,QACL,OAAO,WACP,YAAY,aACX,GAAGnnB,EACH,GAAGX,CAAAA,EAEJlE,EAAAA,QAAA,cAACovC,GAAA,CAAkB,IAAKI,GAAqBzvC,CAAS,EAErD6vC,GACC5vC,EAAAA,QAAA,cAACqvC,GAAA,CACC,MAAM,cACN,KAAK,KACL,IAAK,CACH,KAAM,CACR,EACA,QAAS,IAAMS,EAAW,CAACR,EAAW,EACtC,SAAU,EAAA,EAEVtvC,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAI8Q,EAAAA,WAAa,CAAA,CACzB,EAGDw6B,GACC7vC,UAAA,cAACqvC,GAAA,CACC,MAAM,eACN,KAAK,KACL,IAAK,CACH,MAAO,CACT,EACA,QAAS,IAAMS,EAAWR,EAAW,EACrC,SAAU,EAAA,EAEVtvC,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAIgR,EAAAA,aAAc,CAC1B,CAEJ,CAEJ,EAEAg6B,GAAgB,YAAc,kBClH9B,MAAMvqC,GAAa1F,EAAO2F,GAAM,KAAA,CAAE,MAAO,MAAO,CAAC,EAEpC+qC,GAAO,OAAO,OAAOhrC,GAAY,CAC5C,YAAauqC,GACb,QAASf,GACT,QAASH,EACX,CAAC,EAEDrpC,GAAW,YAAc,OCfzB,MAAMirC,GAAiB3wC,EAAO,WAAY,CACxC,UAAW,OACX,SAAU,MACV,WAAY,OACZ,aAAc,KACd,UAAW,aACX,MAAO,YACP,WAAY,QACZ,WAAY,IACZ,WAAY,IACZ,EAAG,EACH,UAAW,KACX,GAAI,KACJ,GAAI,gBACJ,OAAQ,WACR,MAAO,OACP,cAAe,CACb,gBAAiB,WACjB,MAAO,WACP,OAAQ,aACV,EACA,iBAAkB,CAChB,MAAO,WACP,QAAS,CACX,EACA,SAAU,CACR,WAAY,CACV,SAAU,CACR,WAAY,QACZ,OAAQ,qBACR,iBAAkB,CAChB,YAAa,cACb,QAAS,MACX,CACF,EACA,OAAQ,CACN,WAAY,WACZ,OAAQ,OACR,iBAAkB,CAChB,QAAS,qBACT,cAAe,EACf,OAAQ,CACV,CACF,CACF,EACA,MAAO,CACL,MAAO,CAAA,CACT,CACF,EACA,gBAAiB,CACf,WAAY,UACd,EACA,iBAAkB,CAChB,CACE,MAAO,QACP,WAAY,WACZ,IAAK,CAAE,YAAa,SAAU,CAChC,EACA,CACE,MAAO,QACP,WAAY,SACZ,IAAK,CACH,GAAI,eACJ,iBAAkB,CAChB,aAAc,SAChB,CACF,CACF,CACF,CACF,CAAC,EAIY4wC,GACXlwC,EAAM,WAAW,CAACoJ,EAAOjF,IAAQnE,EAAA,cAACiwC,GAAA,CAAgB,GAAG7mC,EAAO,IAAKjF,CAAAA,CAAK,CAAE,EAE1E+rC,GAAS,YAAc,WCpEV,MAAAC,GAAgB,CAAC,CAC5B,IAAAlxC,EAAM,OACN,UAAAgf,EACA,MAAA5X,EACA,KAAA9C,EACA,WAAAoc,EACA,OAAA3B,EACA,YAAAhT,EACA,WAAA9D,KACGxE,CACL,IAA0B,CACxB,KAAM,CAAE,SAAA0hB,CAAS,EAAI9E,iBACflT,EAAAA,EAAUqS,KACV,CAAE,MAAAX,CAAM,EAAIqB,GAAc5b,CAAI,EAC9BY,EAAMwb,EAAayE,EAASzE,CAAU,EAAIyE,EAC1CC,GAAiBjY,GAAA,KAAA,OAAAA,EAAS,aAAclF,EAE9C,OACElH,EAAA,cAAC6d,GAAA,CACC,IAAK5e,EACL,YAAa+L,EACb,MAAO8S,EACP,QAASva,EACT,UAAW0a,EACX,MAAO5X,EACP,OAAQ2X,EACR,SAAU,QAAQ2B,GAAA,KAAA,OAAAA,EAAY,QAAQ,EACtC,WAAY0E,CAEZrkB,EAAAA,EAAA,cAACkwC,GAAA,CACC,GAAI3sC,EACJ,KAAMA,EACN,IAAKY,EACL,WAAYkgB,EACX,GAAIvG,GAAS,CAAE,MAAO,OAAQ,EAC9B,GAAGpb,CACN,CAAA,CACF,CAEJ,EAEAytC,GAAc,YAAc,gBChDrB,MAAMC,GAAa9wC,EAAO,MAAO,CACtC,IAAK,QACL,UAAW,aACX,QAAS,OACT,cAAe,SACf,SAAU,WACV,OAAQ,YACR,GAAI,SACJ,MAAO,cACP,YAAa,cACb,SAAU,CACR,aAAc,CACZ,GAAI,CAAE,aAAc,IAAK,EACzB,GAAI,CAAE,aAAc,IAAK,EACzB,GAAI,CAAE,aAAc,IAAK,CAC3B,EACA,OAAQ,CACN,KAAM,CAAE,YAAa,QAAS,CAChC,EACA,SAAU,CACR,KAAM,CACJ,0EACE,CACE,GAAI,6CACJ,eAAgB,WAClB,CACJ,CACF,CACF,CACF,CAAC,EAMY+wC,GACXrwC,EAAAA,QAAM,WACJ,CAAC,CAAE,SAAAD,EAAU,aAAAuwC,EAAe,KAAM,YAAAzrC,EAAc,CAAOX,KAAAA,CAAK,EAAGC,IAC7DnE,UAAA,cAAC4D,GAAA,CACC,QAAO,GACP,KAAK,QACL,OAAO,WACP,YAAY,aACX,GAAGiB,CAAAA,EAEJ7E,EAAA,QAAA,cAACowC,GAAW,CAAA,IAAKjsC,EAAK,aAAcmsC,EAAe,GAAGpsC,CACnDnE,EAAAA,CACH,CACF,CAEJ,EAEFswC,GAAK,YAAc,OCvDZ,MAAME,GAAYznC,ECKnB0nC,GAAwBlxC,EAAO,WAAW,CAC9C,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEq2B,GAAM,CACP,cAAe,CACb,QAAS,GACT,OAAQ,aACV,EACA,oBAAqB,CACnB,OAAQ,UACR,UAAW,gBACX,WAAY,uBACZ,WAAY,CACV,QAAS,GACT,SAAU,WACV,MAAO,EACP,UAAW,KACX,QAAS,EACT,WAAY,yBACZ,aAAc,UACd,cAAe,MACjB,EACA,UAAW,CACT,UAAW,wBACX,WAAY,CACV,QAAS,CACX,CACF,EACA,WAAY,CACV,GAAI,QACN,EACA,kBAAmB,CACjB,GAAG1vC,GAAuB,CAC5B,CACF,CACF,CAAC,EASY8vC,GACXzwC,EAAAA,QAAM,WAAW,CAAC,CAAE,QAAA+J,EAAS,KAAA5C,EAAM,KAAAhC,EAAO,SAAU,GAAA0E,KAAO3F,CAAK,EAAGC,IAW/DnE,EAAAA,QAAA,cAACwwC,GAAA,CAAuB,GAAGtsC,EAAO,GAVnBiD,EAEb,CACE,GAAI0C,GAAO,IACX,KAAA1C,EACA,QAAS,MACX,EACA,CAAE,GAAI0C,GAAO,SAAgC,KAAA1E,EAAM,QAAA4E,CAAQ,EAGF,IAAK5F,CAAAA,CAAK,CAExE,EAEHssC,GAAgB,YAAc,kBC5D9B,MAAMC,GAA4BpxC,EAAO,WAAW,CAClD,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEy2B,GAAiB,CAClB,oBAAqB,CACnB,qBAAsB,CACpB,UAAW,CACT,GAAI,eACN,EACA,WAAY,CACV,GAAI,eACN,CACF,CACF,EACA,qBAAsB,CACpB,GAAI,gBACJ,YAAa,WACb,YAAa,CACX,QAAS,GACT,SAAU,WACV,MAAO,GACP,UAAW,wCACX,aAAc,UACd,OAAQ,CACV,CACF,CACF,CAAC,EAKYE,GAAsB,CAAC,CAClC,SAAA5wC,KACGmE,CACL,IAEIlE,EAAA,cAAC6hB,GAAY,KAAZ,CAAkB,GAAG3d,EAAM,QAAO,IACjClE,EAAA,cAAC0wC,GAAA,CAA0B,GAAG,QAC3B3wC,EAAAA,CACH,CACF,ECrCE6wC,GAA0BlzB,GAC9BA,IAAgB,aACZ,MACAA,IAAgB,WAChB,SACA,OAEOmzB,GACX7wC,EAAM,WAAW,CAACoJ,EAAOjF,IAAQ,CAC/B,MAAM0O,EAAY+9B,GAAuBxnC,EAAM,WAAW,EAC1D,OACEpJ,EAAA,cAACuwC,GAAA,CACC,IAAKpsC,EACL,GAAI0d,GAAY,KAChB,UAAWhP,EACX,IAAI,IACJ,KAAK,OACJ,GAAGzJ,CACN,CAAA,CAEJ,CAAC,ECrBU0nC,GAAkBD,GAC/BC,GAAgB,KAAOH,GACvBG,GAAgB,YAAc,kBCM9B,MAAMC,GAAiB,KACjBC,GAAc,IAEdC,GAAoB3xC,EAAO,MAAO,CACtC,SAAU,QACV,OAAQ8F,GACR,MAAO2rC,GACP,cAAe,OACf,MAAO,CACL,IAAK,IACP,CACF,CAAC,EAEKvvC,GAAUnC,EAAU,CACxB,KAAM,CAAE,UAAW,oBAAqB,QAAS,CAAE,EACnD,OAAQ,CAAE,UAAW,gBAAiB,QAAS,CAAE,CACnD,CAAC,EAEKoC,GAAWpC,EAAU,CACzB,KAAM,CAAE,UAAW,gBAAiB,QAAS,CAAE,EAC/C,OAAQ,CAAE,UAAW,oBAAqB,QAAS,CAAE,CACvD,CAAC,EAEK6xC,GAAe5xC,EAAO,MAAO,CACjC,SAAU,WACV,MAAO,OACP,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,aAAc,KACd,UAAW,aACX,UAAW,KACX,SAAU,CACR,QAAS,CACP,KAAM,CACJ,eAAgB,CACd,UAAW,GAAGkC,yCAChB,CACF,EACA,MAAO,CACL,QAAS,EACT,eAAgB,CACd,UAAW,GAAGC,yCAChB,CACF,CACF,CACF,CACF,CAAC,EAEK0vC,GAAenxC,EAAM,cAGjB,IAAI,EAEDoxC,GAAgB,CAAC,CAC5B,SAAArxC,EACA,IAAAd,CACF,IAA8C,CAC5C,KAAM,CAAE,OAAAoyC,EAAQ,SAAAC,CAAS,EAAIC,GAAAA,WAAAA,EACvB,CAAE,WAAAC,EAAY,SAAAC,EAAU,gBAAAC,EAAiB,aAAAC,CAAa,EAAIL,EAEhE,OACEtxC,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAACixC,GAAA,CACC,aAAcO,EACd,aAAcC,EACd,IAAKxyC,GAEJoyC,EAAO,IAAKO,GAAU,CACrB,KAAM,CAAE,QAAS7xC,CAAS,EAAI6xC,EAExB/Q,EAAS6Q,EAAgBE,EAAM,GAAI,CACvC,aAAc,GACd,OAAQ,CACV,CAAC,EAEKztC,EAAOyJ,GAA8B,CACrCA,GAAMgkC,EAAM,SAAW,QACzBD,EAAaC,EAAM,GAAIhkC,EAAG,sBAAsB,EAAE,MAAM,CAE5D,EAEA,OACE5N,EAAA,cAACkxC,GAAA,CACC,IAAKU,EAAM,GACX,IAAKztC,EACL,QAASytC,EAAM,QACf,KAAMA,EAAM,KACZ,YAAWA,EAAM,SACjB,IAAK,CAAE,IAAK/Q,CAAO,CAEnB7gC,EAAAA,EAAA,cAACmxC,GAAa,SAAb,CAAsB,MAAOS,CAC3B,EAAA,OAAO7xC,GAAa,WACnBA,EAAS6xC,CAAK,EACZ5xC,EAAM,eAAeD,CAAQ,EAC/BA,EAEAC,EAAA,cAAC6xC,GAAA,CAAM,IAAK,CAAE,MAAOb,EAAY,CAAA,EAC9BY,EAAM,OAAS,SAAW5xC,EAAA,cAAC6xC,GAAM,KAAN,CAAW,GAAIp2B,EAAAA,KAAO,CAAA,EAClDzb,EAAA,cAACuK,EAAA,KAAMxK,CAAS,EAChBC,EAAA,cAAC2rC,GAAA,IAAO,EACR3rC,EAAA,cAAC6xC,GAAM,MAAN,IAAY,CACf,CAEJ,CACF,CAEJ,CAAC,CACH,EACC9xC,CACH,CAEJ,EAEa+xC,GAAkB,IAAM,CACnC,MAAM1lC,EAAUpM,EAAM,WAAWmxC,EAAY,EAE7C,GAAI,CAAC/kC,EACH,MAAM,IAAIqP,EAAAA,MAAM,qDAAqD,EAGvE,OAAOrP,CACT,EAEAglC,GAAc,YAAc,gBC5Hf,MAAAW,GAAmB,CAAC,CAC/B,UAAAzgC,EACA,MAAAjL,EAAQ,iBACLnC,CACL,IAA0C,CACxC,KAAM,CAAE,GAAA2H,CAAG,EAAIimC,KAEf,OACE9xC,EAAA,cAACiH,EAAA,CACC,IAAK,CACH,MAAO,QACP,GAAI,MACJ,kBAAmB,CAAE,MAAO,QAAS,QAAS,EAAI,CACpD,EACA,MAAOZ,EACP,QAAS,IAAM,CACburC,SAAM,QAAQ/lC,CAAE,EAChByF,GAAA,MAAAA,EACF,CAAA,EACC,GAAGpN,CAAAA,EAEJlE,EAAA,cAACuE,EAAA,CAAK,GAAIkP,EAAAA,KAAAA,CAAO,CACnB,CAEJ,ECnCau+B,GACX5oC,GAEApJ,EAAA,QAAA,cAACuE,EAAA,CAAK,KAAK,KAAK,IAAK,CAAE,GAAI,KAAM,KAAM,UAAW,EAAI,GAAG6E,CAAO,CAAA,ECE5D6oC,GAAgB,CACpB,QAAS,CAAE,GAAI,OAAQ,EACvB,MAAO,CAAE,GAAI,OAAQ,EACrB,QAAS,CAAE,GAAI,UAAW,EAC1B,MAAO,CAAE,GAAI,SAAU,CACzB,EAEaC,GAAc5yC,EAAOwJ,EAAM,CACtC,cAAe,OACf,aAAc,KACd,UAAW,KACX,UAAW,aACX,MAAO,QACP,UAAW,KACX,SAAU,WACV,GAAI,KACJ,GAAI,KACJ,WAAY,iCACZ,eAAgB,CACd,WAAY,0DACd,EACA,SAAU,CACR,KAAMmpC,EACR,CACF,CAAC,EAMYJ,GAASzoC,GAAmC,CACvD,KAAM,CAAE,KAAAjE,CAAK,EAAI2sC,GACjB,EAAA,OAAO9xC,EAAA,cAACkyC,GAAY,CAAA,MAAM,SAAS,KAAM9oC,EAAM,MAAQjE,EAAO,GAAGiE,CAAAA,CAAO,CAC1E,EAEAyoC,GAAM,KAAOG,GACbH,GAAM,MAAQE,GCxCP,MAAMI,GAAa7yC,EAAOuiB,GAAY,KAAM,CACjD,OAAQ,UACR,cAAe,CACb,QAAS,GACT,OAAQ,aACV,EACA,SAAU,CACR,MAAO,CACL,SAAU,CACR,GAAI,QACJ,MAAO,WACP,OAAQ,qBACR,YAAa,CACX,WAAY,UACd,EACA,oBAAqB,CACnB,+CAAgD,CAC9C,YAAa,CACX,WAAY,MACd,CACF,EACA,UAAW,CACT,YAAa,0BACb,MAAO,aACT,EACA,kBAAmB,CACjB,GAAGlhB,GAAAA,EACH,sBAAuB,CACrB,YAAa,qBACf,EACA,qBAAsB,CACpB,UAAW,uCACTA,GAAuB,EAAE,WAE7B,CACF,CACF,EACA,qBAAsB,CACpB,MAAO,cACP,YAAa,0BACb,UAAW,oCACb,CACF,EACA,OAAQ,CACN,GAAI,WACJ,aAAc,KACd,SAAU,SACV,OAAQ,IACR,oBAAqB,CACnB,UAAW,CACT,MAAO,aACT,EACA,kBAAmB,CACjB,GAAGA,KACH,sBAAuB,CACrB,YAAa,qBACf,EACA,qBAAsB,CACpB,UAAW,sCACTA,GAAuB,EAAE,WAE7B,CACF,CACF,EACA,qBAAsB,CACpB,MAAO,WACP,OAAQ,gCACR,GAAI,QACJ,UAAW,iBACb,CACF,CACF,CACF,CACF,CAAC,EAEYyxC,GAAkBD,GCzEzBE,GAAY,CAChB,GAAI,OACJ,GAAI,OACJ,GAAI,MACN,EAEMC,GAAK,CACT,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEMC,GAAyB,CAC7B,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEMC,GAAkBtwC,IAAkB,CACxC,SAAU,IAAIA,IACd,GAAIowC,GAAGpwC,GACP,UAAWmwC,GAAUnwC,GACrB,yBAA0B,CACxB,GAAIqwC,GAAuBrwC,EAC7B,CACF,GAEa8E,GAAe1H,EAAO6yC,GAAY,CAC7C,SAAU,EACV,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,WAAY,IACZ,WAAY,EACZ,GAAI,KACJ,SAAU,CACR,KAAM,CACJ,GAAIK,GAAe,IAAI,EACvB,GAAIA,GAAe,IAAI,EACvB,GAAIA,GAAe,IAAI,CACzB,EACA,WAAY,CACV,KAAM,CACR,CAAA,EACA,MAAO,CACL,SAAU,CAAA,EACV,OAAQ,CAAA,CACV,CACF,EACA,iBAAkB,CAChB,CACE,WAAY,GACZ,KAAM,KACN,IAAK,CACH,SAAUH,GAAU,GACpB,EAAG,CACL,CACF,EACA,CACE,WAAY,GACZ,KAAM,KACN,IAAK,CACH,SAAUA,GAAU,GACpB,EAAG,CACL,CACF,EACA,CACE,WAAY,GACZ,KAAM,KACN,IAAK,CACH,SAAUA,GAAU,GACpB,EAAG,CACL,CACF,EACA,CACE,WAAY,GACZ,KAAM,KACN,MAAO,SACP,IAAK,CACH,SAAUA,GAAU,GACpB,EAAG,CACL,CACF,EACA,CACE,WAAY,GACZ,KAAM,KACN,MAAO,SACP,IAAK,CACH,SAAUA,GAAU,GACpB,EAAG,CACL,CACF,EACA,CACE,WAAY,GACZ,KAAM,KACN,MAAO,SACP,IAAK,CACH,SAAU,OACV,EAAG,CACL,CACF,CACF,CACF,CAAC,EAEYI,GAETzyC,EAAM,WACR,CAAC,CAAE,KAAAkC,EAAO,KAAM,MAAA3C,EAAQ,WAAY,SAAAQ,KAAamE,CAAK,EAAGC,IAAQ,CAlHnE,IAAAqW,EAmHI,MAAM8F,EAAgBtgB,EAAM,SAAS,QAAQD,CAAQ,EAC/CwgB,EAAgBD,EAAc,QAAU,EACxCoyB,EACJnyB,GACAvgB,EAAM,eAAesgB,EAAc,EAAE,KACrC9F,EAAA8F,EAAc,KAAd,KAAA9F,OAAAA,EAAkB,QAASjW,EAE7B,OACEvE,EAAA,cAACgH,GACC,CAAA,IAAK7C,EACL,KAAMjC,EACN,WAAYwwC,EACZ,MAAOnzC,EACN,GAAG2E,CAGFoc,EAAAA,EAAc,IAAK/Y,GAEf,CAACgZ,IACA,OAAOhZ,GAAU,UAAY,OAAOA,GAAU,UAExCvH,EAAA,cAAC,OAAK,CAAA,IAAKuH,GAAQA,CAAM,EAC9BvH,EAAM,eAAeuH,CAAK,IACxBA,GAAA,KAAAA,OAAAA,EAAO,QAAShD,EACXvE,EAAM,aAAauH,EAAO,CAAE,GAAGA,EAAM,MAAO,KAAArF,CAAK,CAAC,EAEtDqF,CACR,CAEL,CAEJ,CACF,ECtIavC,GAAa1F,EAAOuiB,GAAY,KAAM,CACjD,MAAO,cACP,SAAU,CACR,YAAa,CACX,KAAM,CACJ,MAAO,OACP,CAAC,KAAKswB,MAAe,CACnB,UAAW,EACX,SAAU,CACZ,CACF,EACA,MAAO,CACL,MAAO,MACT,CACF,EACA,OAAQ,CACN,KAAM,CACJ,CAAC,KAAKA,MAAe,CACnB,aAAc,IAChB,CACF,EACA,MAAO,CACL,aAAc,KACd,CAAC,KAAKA,MAAe,CACnB,SAAU,WACV,6BAA8B,CAC5B,QAAS,GACT,SAAU,UACZ,CACF,CACF,CACF,EACA,UAAW,CACT,OAAQ,CAAA,EACR,IAAK,CACP,CAAA,EACA,MAAO,CACL,SAAU,GACV,OAAQ,CAAE,GAAI,UAAW,CAC3B,CACF,EACA,iBAAkB,CAChB,CACE,OAAQ,GACR,UAAW,MACX,MAAO,WACP,IAAK,CACH,CAAC,KAAKA,MAAe,CACnB,6BAA8B,CAC5B,IAAK,OACL,OAAQ,mBACR,MAAO,MACP,MAAO,IACP,UAAW,kBACb,EACA,sBAAuB,CACrB,gBAAiB,aACnB,EACA,qBAAsB,CACpB,iBAAkB,aACpB,EACA,gBAAiB,CACf,oBAAqB,KACrB,uBAAwB,IAC1B,EACA,eAAgB,CACd,qBAAsB,KACtB,wBAAyB,IAC3B,CACF,CACF,CACF,EACA,CACE,OAAQ,GACR,UAAW,SACX,MAAO,WACP,IAAK,CACH,CAAC,KAAKA,MAAe,CACnB,6BAA8B,CAC5B,OAAQ,EACR,KAAM,OACN,OAAQ,MACR,MAAO,mBACP,UAAW,kBACb,EACA,gBAAiB,CACf,oBAAqB,KACrB,qBAAsB,IACxB,EACA,eAAgB,CACd,uBAAwB,KACxB,wBAAyB,IAC3B,EACA,sBAAuB,CACrB,eAAgB,aAClB,EACA,qBAAsB,CACpB,kBAAmB,aACrB,CACF,CACF,CACF,EACA,CACE,OAAQ,GACR,MAAO,SACP,IAAK,CAAA,CACP,EACA,CACE,OAAQ,GACR,MAAO,WACP,IAAK,CACH,GAAI,QACJ,CAAC,KAAKA,MAAe,CACnB,GAAI,cACJ,aAAc,CAChB,CACF,CACF,CACF,CACF,CAAC,EAEKvB,GAA0BlzB,GAC9BA,IAAgB,aAAe,MAAQ,SAE5BoE,GAIT9hB,EAAM,WACR,CACE,CACE,YAAA0d,EAAc,aACd,IAAA9K,EACA,YAAAq2B,EACA,SAAAlpC,EACA,MAAAR,EAAQ,WACR,KAAAgV,KACGrQ,CACL,EACAC,IACG,CACH,MAAMwuC,EAAS,OAAO//B,GAAQ,SACxBC,EAAY+9B,GAAuBlzB,CAAW,EACpD,OACE1d,EAAA,cAACgF,GACC,CAAA,IAAKb,EACL,UAAW0O,EACX,OAAQ8/B,EACR,YAAa1J,EACb,YAAavrB,EACb,MAAOne,EACN,GAAG2E,CAAAA,EAEJlE,EAAA,cAAC8I,EAAA,CACC,UAAW+J,EACX,IAAK8/B,EAAS//B,EAAM,OACpB,KAAM2B,GAAQ,QAAA,EAGZvU,EAAM,SAAS,QAAQD,CAAQ,EAAE,IAAKwH,GAChCvH,EAAM,eAAeuH,CAAK,EACrBvH,EAAM,aAAauH,EAAO,CAAE,GAAGA,EAAM,MAAO,MAAAhI,CAAM,CAAC,EAErDgI,CACR,CAEL,CACF,CAEJ,CACF,ECpLasa,GAAc,CAAE,KAAAjf,GAAM,OAAAgH,GAAQ,KAAA3E,EAAK,ECUnC2tC,GAA0B,CAAC,CACtC,MAAAnkC,EAAQ,IACR,YAAAigC,EAAc,UAChB,EAAqC,KAAuC,CAC1E,KAAM,CAACC,EAAgBC,CAAiB,EAAI9qB,EAAS,SAAA,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAE7D+qB,EAAgBC,EAAAA,QACpB,IAAOJ,IAAgB,WAAa7/B,GAAAA,SAAWwW,YAC/C,CAACqpB,CAAW,CACd,EAEA,OAAAnmC,YAAU,IAAM,CACd,MAAMwmC,EAAeF,EAAcpgC,EAAO,IAAM,CAC9CmgC,EAAkB,CAAE,EAAG,OAAO,QAAS,EAAG,OAAO,OAAQ,CAAC,CAC5D,CAAC,EAED,cAAO,iBAAiB,SAAUG,CAAY,EAEvC,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAY,CACnD,CACF,EAAG,CAACF,EAAepgC,CAAK,CAAC,EAElBkgC,CACT,ECnCMlM,GAAQtjC,EAAY,CACxB,OAAQ,CACN,WAAY,QACZ,QAAS,WACT,aAAc,UAChB,CACF,CAAC,EAEY0D,GAAe,CAC1B,MAAA4/B,EACF,ECFaoQ,GACX7yC,EAAAA,QAAM,WAAW,CAAC,CAAE,KAAAS,KAASyD,CAAK,EAAG69B,IAEjC/hC,EAAAA,QAAA,cAACiH,EAAA,CACC,KAAK,KACL,WAAW,SACX,MAAM,UACN,IAAK86B,EACJ,GAAG79B,CAAAA,EAEJlE,EAAAA,QAAA,cAACuE,EAAA,CAAK,GAAI9D,CAAAA,CAAM,CAClB,CAEH,EChBUqyC,GAAkB,CAAC,CAC9B,IAAA5lC,EACA,IAAAC,EAAM,qBACN,IAAAlO,CACF,IAKIe,EAAAA,QAAA,cAAC2M,GAAA,CACC,IAAKO,EACL,IAAKC,EACL,IAAK,CACH,OAAQ,KACR,GAAI,KACJ,MAAO,OACP,GAAGlO,CACL,CACF,CAAA,EAIS8zC,GAAkBzzC,EAAOiL,EAAM,CAC1C,MAAO,UACT,CAAC,EAEYyoC,GAAc1zC,EAAO,IAAK,CACrC,QAAS,OACT,WAAY,SACZ,eAAgB,OAChB,MAAO,WACP,mBAAoB,CAAE,eAAgB,MAAO,CAC/C,CAAC,EC5BK2zC,GAAgB,IACpBjzC,EAAA,cAACyd,GAAA,CAAQ,YAAY,WAAW,IAAK,CAAE,OAAQ,KAAM,GAAI,UAAW,CAAA,CAAG,EAGnEzY,GAAa1F,EAAO,MAAO,CAC/B,GAAI,cACJ,SAAU,SACV,QAAS,OACT,WAAY,SAEZ,OAAQ,EACR,WAAY,0BACZ,SAAU,CACR,YAAa,CACX,KAAM,CAAE,UAAW,yCAA0C,CAC/D,EACA,KAAM,CACJ,GAAI,CAAE,OAAQ,IAAK,EACnB,GAAI,CAAE,OAAQ,IAAK,CACrB,EACA,SAAU,CACR,KAAM,CACJ,0EACE,CACE,GAAI,kDACJ,eAAgB,WAClB,CACJ,CACF,EACA,WAAY,CACV,SAAU,CACR,MAAO,QACP,IAAK,IACL,aAAc,yBAChB,EACA,QAAS,CACP,MAAO,OACP,IAAK,KACL,EAAG,KACH,OAAQ,oBACR,aAAc,QAChB,CACF,CACF,CACF,CAAC,EAEK6T,GAAY7T,EAAOwJ,EAAM,CAC7B,WAAY,SACZ,OAAQ,KACR,GAAI,KACJ,MAAO,OACP,MAAO,CACL,GAAI,IACN,CACF,CAAC,EASKoqC,GAAkB,CAAC,CACvB,KAAAhxC,EAAO,KACP,SAAAixC,EACA,UAAAnvC,EAAYovC,GAAmB,MAC/B,WAAAlsC,EAAa,cACVkC,CACL,IAA4C,CAC1C,KAAM,CAAE,EAAGiqC,CAAgB,EAAIT,KAE/B,OACE5yC,EAAA,cAACgF,GAAA,CACC,UAAWhB,EACX,YAAa,CAAC,CAACqvC,EACf,SAAUF,EACV,WAAYjsC,EACZ,KAAMhF,CAAAA,EAENlC,EAAA,cAACmT,GAAA,CAAW,GAAG/J,CAAO,CAAA,CACxB,CAEJ,EAEakqC,GAAS,OAAO,OAAOJ,GAAiB,CACnD,MAAOF,GACP,UAAWF,GACX,UAAWC,GACX,WAAYF,GACZ,QAASI,EACX,CAAC,EAEDC,GAAgB,YAAc,SC/F9B,MAAMK,GAAcj0C,EAAOk0C,WAAa,CAAA,CAAE,EAW7BC,GACXzzC,EAAM,WAAW,CAAC,CAAE,GAAA6L,EAAI,MAAA6nC,EAAQ,EAAI,GAAI,IAAAz0C,KAAQyD,CAAe,EAAGyB,IAChEnE,EAAA,cAACF,GAAA,CAAW,IAAKb,CAAAA,EACfe,EAAA,cAACH,EAAA,CACC,IAAK,CACH,aAAc,KACd,SAAU,WACV,WAAY,GAAG6zC,EAAQ,OACvB,SAAU,SACV,OAAQ,EACR,MAAO,MACT,CAAA,EAEA1zC,EAAA,cAACuzC,GAAA,CACE,GAAG7wC,EACJ,KAAK,SACL,IAAK,kCAAkCmJ,IACvC,OAAO,OACP,MAAM,OACN,IAAK,CAAE,SAAU,WAAY,IAAK,EAAG,KAAM,CAAE,EAC7C,IAAK1H,CAAAA,CACP,CACF,CACF,CACD,EAEHsvC,GAAM,YAAc,QCrCpB,MAAM56B,GAAavZ,EAAO+E,GAAAA,IAAI,EAuBjBsvC,GACX3zC,EAAM,WACJ,CAAC,CAAE,QAAAiE,EAAS,OAAA2vC,EAAQ,aAAAC,EAAe,GAAO,UAAA5L,KAAc/jC,CAAK,EAAGC,IAAQ,CACtE,KAAM,CAAC2vC,EAAaC,CAAc,EAAIlmC,KACtC7N,EAAM,oBAAoBmE,EAAK,IAAM2vC,CAA6B,EAElE,MAAME,EAAkBh0C,EAAM,YAC3BuL,GAAoC,CACnCqoC,EAAO,QAAQ,CAAC,CAAE,SAAAK,EAAU,OAAAtoC,CAAO,IAAM,CAErC,OAAO,QAAQsoC,CAAQ,EAAE,MAAM,CAAC,CAACr0C,EAAKlB,CAAK,IAAM6M,EAAE3L,KAASlB,CAAK,GAEjEiN,EAAO,CAAE,MAAOJ,EAAG,SAAA0oC,CAAS,CAAC,CACjC,CAAC,EACDhM,GAAA,MAAAA,EAAY18B,CAAAA,CACd,EACA,CAACqoC,EAAQ3L,CAAS,CACpB,EAEA,OAAAjoC,EAAM,UAAU,KACV6zC,GAAc,OAAO,iBAAiB,UAAWG,CAAe,EAE7D,IAAM,CACX,OAAO,oBAAoB,UAAWA,CAAe,CACvD,GACC,CAACH,EAAcG,CAAe,CAAC,EAKhCh0C,EAAA,cAHgBiE,EAAU4U,GAAahZ,EAGtC,CACC,UAAWg0C,EAAe,OAAYG,EACtC,IAAKD,EACJ,GAAG7vC,CACN,CAAA,CAEJ,CACF,EAEFyvC,GAAiB,YAAc,mBAE/B,MAAMO,GAAkC50C,EAAO,WAAW,CACxD,0BAA4B0a,GAAa,CAAC,IAAI,EAAE,SAASA,CAAQ,CACnE,CAAC,EAAEzP,EAAM,CACP,GAAI,WACJ,MAAO,cACP,GAAI,KACJ,GAAI,KACJ,SAAU,KACV,UAAW,KACX,WAAY,IACZ,QAAS,cACT,eAAgB,SAChB,WAAY,SACZ,aAAc,KACd,WAAY,CACd,CAAC,EAMY4pC,GACX/qC,GAEOpJ,EAAA,cAACk0C,GAAA,CAAgC,KAAK,KAAK,GAAG,MAAO,GAAG9qC,CAAAA,CAAO,EAGxE+qC,GAA0B,YAAc,yBC/F3BR,GAAmB,OAAO,OAAOS,GAA2B,CACvE,UAAWD,EACb,CAAC,EAEDR,GAAiB,YAAc,mBCMxB,MAAMU,GACXr0C,EAAM,cAA4C,CAChD,KAAM,KACN,MAAO,UACP,aAAc,GACd,MAAO,GACP,cAAe,IAAM,IACvB,CAAC,ECjBGs0C,GAAe,CACnB,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEaC,GAAwB,CAAC,CACpC,IAAAt1C,KACGmK,CACL,IAAqE,CACnE,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAWq0C,EAAuB,EAEzD,OACEr0C,EAAA,cAACkR,GAAA,CACE,GAAG9H,EACJ,IAAK,CAAE,OAAQ,OAAQ,GAAGnK,EAAK,WAAY,QAAS,EACpD,KAAMq1C,GAAapyC,EAAAA,CACrB,CAEJ,ECpBasyC,GAA0BxE,GAAK,QCEtC1lC,GAAahL,EAAOiL,EAAM,CAC9B,WAAY,QACZ,MAAO,cACP,WAAY,IACZ,SAAU,CACR,KAAM,CACJ,GAAI,CACF,SAAU,KACZ,EACA,GAAI,CACF,SAAU,KACZ,EACA,GAAI,CACF,SAAU,KACZ,CACF,CACF,CACF,CAAC,EAEYkqC,GACXrrC,GACgB,CAChB,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAWq0C,EAAuB,EAEzD,OAAOr0C,EAAA,cAACsK,GAAA,CAAY,GAAGlB,EAAO,KAAMlH,EAAM,CAC5C,ECzBM8H,GAAgB1K,EAAOiL,EAAM,CACjC,WAAY,QACZ,MAAO,eACP,SAAU,CACR,KAAM,CACJ,GAAI,CACF,SAAU,KACZ,EACA,GAAI,CACF,SAAU,KACZ,EACA,GAAI,CACF,SAAU,KACZ,CACF,CACF,CACF,CAAC,EAEYmqC,GACXtrC,GACgB,CAChB,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAWq0C,EAAuB,EAEzD,OAAOr0C,EAAA,cAACgK,GAAA,CAAe,GAAGZ,EAAO,KAAMlH,EAAM,CAC/C,ECzBMyyC,GAAU,CACd,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAEaC,GACXxrC,GACgB,CAChB,KAAM,CAAE,KAAAlH,CAAK,EAAIlC,EAAM,WAAWq0C,EAAuB,EAEzD,OAAOr0C,EAAA,cAACuE,EAAA,CAAM,GAAG6E,EAAO,KAAMurC,GAAQzyC,GAAiB,CACzD,ECXMiwC,GAAa7yC,EAAO0wC,GAAK,QAAS,CACtC,SAAU,WACV,GAAI,cACJ,aAAc,KACd,EAAG,EACH,OAAQ,EACR,SAAU,QACV,OAAQ,wBACR,SAAU,CACR,MAAO,CACL,QAAS,CACP,+BAAgC,CAC9B,GAAI,aACN,EACA,kBAAmB,CACjB,YAAa,aACf,CACF,EACA,MAAO,CACL,+BAAgC,CAC9B,GAAI,WACN,EACA,kBAAmB,CACjB,YAAa,WACf,CACF,CACF,EACA,KAAM,CACJ,GAAI,CACF,KAAM,QACN,EAAG,SACH,IAAK,IACP,EACA,GAAI,CACF,KAAM,EACN,EAAG,SACH,IAAK,IACP,EACA,GAAI,CACF,KAAM,EACN,EAAG,SACH,IAAK,IACP,CACF,CACF,EACA,UAAW,CAAE,QAAS,MAAO,EAC7B,WAAY,CACV,QAAS,OACT,cAAe,SACf,WAAY,QACd,EACA,uBAAwB,CACtB,UAAW,OACX,OAAQ,wBACR,WAAY,IACZ,MAAO,YACP,kBAAmB,CACjB,UAAW,OACX,YAAa,aACf,CACF,EACA,yBAA0B,CACxB,WAAY,IACZ,MAAO,UACT,EACA,cAAe,CACb,QAAS,EACX,CACF,CAAC,EAEY6E,GAAuB70C,EAAM,WAGxC,CAAC,CAAE,SAAAD,KAAaqJ,CAAM,EAAGjF,IAAQ,CACjC,KAAM,CAAE,KAAAjC,EAAM,MAAA3C,CAAM,EAAIS,EAAM,WAAWq0C,EAAuB,EAEhE,OACEr0C,EAAA,cAACmyC,GAAA,CAAY,GAAG/oC,EAAO,MAAO7J,EAAO,KAAM2C,EAAM,IAAKiC,CACnDpE,EAAAA,CACH,CAEJ,CAAC,EAED80C,GAAqB,YAAc,uBChFnC,MAAMzF,GAAoB9vC,EAAO0wC,GAAK,YAAa,CACjD,SAAU,WACV,EAAG,KACH,aAAc,KACd,SAAU,SACV,SAAU,CACR,MAAO,CACL,QAAS,CAAE,GAAI,aAAc,EAC7B,MAAO,CAAE,GAAI,WAAY,CAC3B,CACF,EACA,0BAA2B,CACzB,SAAU,UACZ,EACA,aAAc,CACZ,OAAQ,CACV,CACF,CAAC,EAEK8E,GAAqBx1C,EAAOO,EAAK,CACrC,QAAS,GACT,SAAU,WACV,GAAI,QACJ,aAAc,KACd,SAAU,CACR,WAAY,CACV,KAAM,CACJ,WAAY,eACd,EACA,MAAO,CACL,WAAY,MACd,CACF,CACF,CACF,CAAC,EAEYk1C,GACX3rC,GACgB,CAChB,KAAM,CAAE,MAAA7J,EAAO,aAAA0iB,EAAc,MAAAvjB,CAAM,EAAIsB,EAAM,WAC3Cq0C,EACF,EAEMW,EAAUh1C,EAAM,OAA+B,CAAA,CAAE,EAEjDi1C,EAAgBj1C,EAAM,SAAS,QAAQoJ,EAAM,QAAQ,EAAE,UAC1D7B,IAAWA,GAAA,KAAAA,OAAAA,EAA8B,MAAM,SAAU7I,CAC5D,EAEM,CAACw2C,EAAiBC,CAAkB,EAAIn1C,EAAM,SAAS,CAC3D,KAAM,EACN,OAAQ,EACR,MAAO,CACT,CAAC,EACK,CAACo1C,EAAeC,CAAgB,EAAIr1C,EAAM,SAAS,EAAK,EAExDs1C,EAA0Bt1C,EAAM,YAAY,IAAM,CACtD,MAAMu1C,EAAaP,EAAQ,QAAQC,GACnC,GAAI,CAACM,EAAY,OAEjB,KAAM,CAAE,MAAA9F,EAAO,OAAA+F,CAAO,EAAID,EAAW,sBACrCJ,EAAAA,EAAmB,CAAE,KAAMI,EAAW,WAAY,OAAAC,EAAQ,MAAA/F,CAAM,CAAC,CACnE,EAAG,CAACwF,CAAa,CAAC,EAElB,OAAAj1C,EAAM,UAAU,IAAM,CACpB,MAAMy1C,EAAiB,IAAI,eAAeH,CAAuB,EAC3DI,EAAcV,EAAQ,QAC5B,OAAAU,EAAY,QAASC,GAAQ,CACvBA,GAAKF,EAAe,QAAQE,CAAG,CACrC,CAAC,EAEM,IAAM,CACXD,EAAY,QAASC,GAAQ,CACvBA,GAAKF,EAAe,UAAUE,CAAG,CACvC,CAAC,EACDF,EAAe,WACjB,CAAA,CACF,EAAG,CAACR,EAAeK,CAAuB,CAAC,EAE3Ct1C,EAAM,UAAU,KACd,OAAO,iBAAiB,SAAUs1C,CAAuB,EAClD,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAuB,CAC9D,GACC,CAACA,CAAuB,CAAC,EAE5Bt1C,EAAM,UAAU,IAAM,CACpBs1C,EAAwB,CAC1B,EAAG,CAACL,EAAeK,CAAuB,CAAC,EAGzCt1C,EAAA,cAACovC,GAAA,CAAkB,MAAO7vC,EAAO,aAAc0iB,EAAe,GAAG7Y,CAAAA,EAC/DpJ,EAAA,cAAC80C,GAAA,CACC,IAAK,CACH,GAAGI,CACL,EACA,WAAYE,CAAAA,CACd,EACCp1C,EAAM,SAAS,IAAIoJ,EAAM,SAAU,CAAC7B,EAAOuL,IAAU,CACpD,GAAI,CAAC9S,EAAM,eAAeuH,CAAK,EAC7B,MAAM,IAAI,MACR,iEACF,EAGF,OAAOvH,EAAM,aACXuH,EAGA,CACE,QAAUgE,GAAM,CACd8pC,EAAiB,EAAI,EACjB9tC,EAAM,MAAM,SAASA,EAAM,MAAM,QAAQgE,CAAC,CAChD,EACA,IAAMqC,GAAQonC,EAAQ,QAAQliC,GAASlF,CACzC,CACF,CACF,CAAC,CACH,CAEJ,EC1HMgoC,GAA6Bt2C,EAAO0wC,GAAM,CAC9C,UAAW,CAAE,OAAQ,MAAO,EAC5B,SAAU,CACR,KAAM,CACJ,GAAI,CACF,MAAO,OACT,EACA,GAAI,CACJ,EAAA,GAAI,CAAA,CACN,CACF,CACF,CAAC,EAOY6F,GAAuB,CAAC,CACnC,KAAA3zC,EACA,MAAA3C,EAAQ,UACR,aAAA0iB,EACA,SAAAliB,KACGqJ,CACL,IAA6E,CAC3E,MAAMqI,EAAerI,EAAM,QAAU,OAE/B,CAAC8Y,EAAeC,CAAgB,EAAIniB,EAAM,SAASiiB,CAAY,EAE/D6zB,EAAerkC,EAAerI,EAAM,MAAQ8Y,EAC5CE,EAAoB3Q,EACtBrI,EAAM,cACN+Y,EAEJniB,EAAM,UAAU,IAAM,CAChB,CAACyR,GAAgBwQ,GACnBE,EAAiBF,CAAY,CAEjC,EAAG,CAACA,EAAcxQ,CAAY,CAAC,EAE/B,MAAM/S,EAAQsB,EAAM,QAClB,KAAO,CACL,KAAAkC,EACA,MAAA3C,EACA,aAAA0iB,EACA,cAAeG,EACf,MAAO0zB,CACT,GACA,CAAC5zC,EAAM3C,EAAO0iB,EAAcG,EAAmB0zB,CAAY,CAC7D,EAEA,OACE91C,EAAA,cAACq0C,GAAwB,SAAxB,CAAiC,MAAO31C,CACvCsB,EAAAA,EAAA,cAAC41C,GAAA,CACC,KAAM1zC,EACN,MAAO4zC,EACP,cAAe1zB,EACd,GAAGhZ,CAEHrJ,EAAAA,CACH,CACF,CAEJ,EC7Dag2C,GAAmB,CAC9B,KAAMF,GACN,KAAMhB,GACN,QAASH,GACT,YAAaD,GACb,KAAMG,GACN,QAASJ,GACT,MAAOD,GACP,SAAUQ,EACZ,ECdaiB,GAAkBh2C,EAAAA,QAAM,cAAoC,CACvE,WAAY,GACZ,MAAO,CAAA,CACT,CAAC,ECSYi2C,GAAW,CAAC,CACvB,IAAAh3C,EACA,SAAAc,EACA,OAAAggC,EACA,SAAAC,EACA,OAAAkW,KACG9sC,CACL,IAAkC,CAChC,KAAM,CAACkpB,EAAY6jB,CAAa,EAAIn2C,EAAM,SAAS,EAAK,EAClD,CAACmgC,EAAOiW,CAAQ,EAAIp2C,EAAM,SAAiB,EAAE,EAC7Cq2C,EAAqBr2C,EAAM,OAAyB,IAAI,EAExDs2C,EAAkB/7B,GAA2C,CACjEA,EAAM,eAAA,EACN47B,EAAc,EAAI,CACpB,EAEMI,EAAkB,IAAMJ,EAAc,EAAK,EAE3CK,EAAcC,GAA8B,CAChD,GAAI,CAACA,EAAU,OAEfN,EAAc,EAAK,EAEnB,MAAMhW,EAAQ,MAAM,KAAKsW,CAAQ,EACjCP,EAAO/V,CAAK,EACZiW,EAASjW,CAAK,CAChB,EAEM9P,EAAiB9V,GAA+C,CA7CxE,IAAAC,EA8CQ,CAAC,QAAS,OAAO,EAAE,SAASD,EAAM,GAAG,KACvCC,EAAA67B,EAAmB,UAAnB,MAAA77B,EAA4B,QAEhC,EAEM9b,EAA8B,CAAE,WAAA4zB,EAAY,MAAA6N,CAAM,EAExD,OACEngC,EAAA,cAACg2C,GAAgB,SAAhB,CAAyB,MAAOt3C,CAC/BsB,EAAAA,EAAA,cAAC8I,EAAA,CACC,UAAU,SACV,IAAI,KACJ,MAAM,SACN,WAAYwtC,EACZ,YAAaC,EACb,OAASh8B,GAAU,CACjBA,EAAM,iBACNi8B,EAAWj8B,EAAM,aAAa,KAAK,CACrC,EACA,QAAS,IAAG,CAjEpB,IAAAC,EAiEuB,OAAAA,EAAA67B,EAAmB,UAAnB,KAAA,OAAA77B,EAA4B,MAAA,CAAA,EAC3C,IAAK,CACH,OAAQ,sBACR,EAAG,QACH,aAAc,KACd,OAAQ,UACR,MAAO,CAAE,cAAe,MAAO,EAC/B,GAAGvb,CACL,EACA,KAAK,SACL,UAAWoxB,EACX,SAAU,EACT,GAAGjnB,CAEH,EAAA,OAAOrJ,GAAa,WAAaA,EAASrB,CAAK,EAAIqB,EACpDC,EAAA,cAAC,QAAA,CACC,KAAK,OACL,IAAKq2C,EACL,MAAO,CAAE,WAAY,QAAS,EAC9B,OAAQtW,EACR,SAAUC,EACV,SAAWzlB,GAAU,CACnBi8B,EAAWj8B,EAAM,OAAO,KAAK,CAC/B,CACF,CAAA,CACF,CACF,CAEJ,EAEA07B,GAAS,YAAc,WC1FhB,MAAMS,GAAc,IACzB12C,UAAM,WAAWg2C,EAAe"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/stitches.ts","../src/utilities/create-theme-variants/createThemeVariants.ts","../src/components/box/Box.tsx","../src/utilities/css-wrapper/CSSWrapper.tsx","../src/utilities/no-overflow-wrapper/NoOverflowWrapper.tsx","../src/utilities/style/capsize.ts","../src/utilities/style/encode-background-icon.ts","../src/utilities/style/focus-visible-style-block.ts","../src/utilities/style/keyframe-animations.ts","../src/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../src/utilities/style/get-icon-size.ts","../src/utilities/style/disabledStyle.ts","../src/components/accordion/AccordionContent.tsx","../src/components/accordion/AccordionItem.tsx","../src/experiments/color-scheme/stitches.colorscheme.config.ts","../src/experiments/color-scheme/ColorScheme.tsx","../src/components/icon/Icon.tsx","../src/components/accordion/AccordionTrigger.tsx","../src/components/accordion/Accordion.tsx","../src/constants/zIndices.ts","../src/components/tooltip/TooltipContent.tsx","../src/components/tooltip/Tooltip.tsx","../src/utilities/optional-tooltip-wrapper/OptionalTooltipWrapper.tsx","../src/utilities/uri/index.ts","../src/components/action-icon/ActionIcon.constants.ts","../src/components/action-icon/ActionIcon.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialog.tsx","../src/utilities/hooks/useIsMountedRef.ts","../src/components/flex/Flex.tsx","../src/components/loader/Loader.tsx","../src/components/button/Button.tsx","../src/components/heading/Heading.tsx","../src/components/text/Text.tsx","../src/components/alert-dialog/alert-context/AlertDialogIcon.tsx","../src/components/alert-dialog/alert-context/AlertDialog.tsx","../src/components/alert-dialog/alert-context/reducer.ts","../src/components/alert-dialog/alert-context/AlertContext.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/image/Image.tsx","../src/components/avatar/AvatarPlaceholder.tsx","../src/components/avatar/AvatarInitial.tsx","../src/components/avatar/AvatarImage.tsx","../src/components/avatar/Avatar.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/badge/Badge.context.tsx","../src/components/badge/BadgeIcon.tsx","../src/utilities/hooks/useResizeObserver.ts","../src/components/badge/BadgeText.tsx","../src/components/badge/stitches.badge.colorscheme.config.ts","../src/components/badge/Badge.tsx","../src/components/dismissible/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../src/components/banner/BannerContext.tsx","../src/components/banner/Banner.tsx","../src/components/banner/banner-regular/BannerRegularButton.tsx","../src/components/banner/banner-regular/BannerRegularActions.tsx","../src/components/banner/BannerContainer.tsx","../src/components/banner/banner-regular/BannerRegularContainer.tsx","../src/components/banner/banner-regular/BannerRegularContent.tsx","../src/components/banner/banner-regular/BannerRegularDismiss.tsx","../src/components/banner/banner-regular/BannerRegularHeading.tsx","../src/components/banner/banner-regular/BannerRegularImage.tsx","../src/components/banner/banner-regular/BannerRegularText.tsx","../src/components/banner/banner-regular/BannerRegular.tsx","../src/components/banner/banner-slim/BannerSlimActions.tsx","../src/components/banner/banner-slim/BannerSlimButton.tsx","../src/components/banner/banner-slim/BannerSlimContainer.tsx","../src/components/banner/banner-slim/BannerSlimContent.tsx","../src/components/banner/banner-slim/BannerSlimDismiss.tsx","../src/components/banner/banner-slim/BannerSlimImage.tsx","../src/components/banner/banner-slim/BannerSlimText.tsx","../src/components/banner/banner-slim/BannerSlim.tsx","../src/components/carousel/CarouselArrows.tsx","../src/components/carousel/CarouselPagination.tsx","../src/components/carousel/CarouselSlide.tsx","../src/components/carousel/CarouselSlider.tsx","../src/components/carousel/Carousel.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox-group/context/CheckboxGroupMounted.context.tsx","../src/components/checkbox-group/context/CheckboxGroupChecked.context.tsx","../src/components/checkbox-group/CheckboxGroupAllItem.tsx","../src/components/checkbox-group/CheckboxGroupItem.tsx","../src/components/checkbox-group/CheckboxGroupSub.tsx","../src/components/checkbox-group/CheckboxGroup.tsx","../src/components/tree/TreeListItem.tsx","../src/components/tree/TreeCollapsible.tsx","../src/components/tree/TreeList.tsx","../src/components/tree/TreeCollapsibleContent.tsx","../src/components/tree/TreeIcon.tsx","../src/components/tree/TreeText.tsx","../src/components/tree/TreeItemContent.tsx","../src/components/tree/TreeCollapsibleTrigger.tsx","../src/components/tree/TreeItem.tsx","../src/components/tree/Tree.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsible.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleContent.tsx","../src/components/checkbox-tree/CheckboxTreeItemContent.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleTrigger.tsx","../src/components/checkbox-tree/CheckboxTreeItem.tsx","../src/components/checkbox-tree/CheckboxTree.tsx","../src/components/inline-message/InlineMessage.config.ts","../src/components/inline-message/InlineMessage.tsx","../src/components/label/Label.tsx","../src/components/list/List.tsx","../src/components/markdown-content/components/MarkdownCode.tsx","../src/components/markdown-content/components/MarkdownEmphasis.tsx","../src/components/markdown-content/components/MarkdownHeading.tsx","../src/components/markdown-content/components/MarkdownInlineCode.tsx","../src/components/markdown-content/components/MarkdownImage.tsx","../src/components/markdown-content/components/MarkdownLink.tsx","../src/components/markdown-content/components/MarkdownList.tsx","../src/components/markdown-content/components/MarkdownListItem.tsx","../src/components/markdown-content/components/MarkdownParagraph.tsx","../src/components/markdown-content/components/MarkdownStrong.tsx","../src/components/markdown-content/components/MarkdownText.tsx","../src/components/divider/Divider.tsx","../src/components/markdown-content/components/MarkdownThematicBreak.tsx","../src/components/link/Link.tsx","../src/components/field-wrapper/FieldDescription.tsx","../src/components/field-wrapper/FieldWrapper.tsx","../src/components/radio-button/RadioButton.tsx","../src/components/radio-button/RadioButtonGroup.tsx","../src/components/field-wrapper/InlineFieldWrapper.tsx","../src/components/form/useFormCustomContext.ts","../src/components/form/Form.tsx","../src/components/form/useFieldError.ts","../src/components/checkbox-field/CheckboxField.tsx","../src/components/chip/Chip.tsx","../src/components/chip/ChipGroup.tsx","../src/components/dismissible-group/DismissibleGroupRoot.tsx","../src/components/dismissible-group/DismissibleGroupItem.tsx","../src/components/dismissible-group/index.ts","../src/components/chip-dismissible-group/ChipDismissibleGroupItem.tsx","../src/components/chip-dismissible-group/ChipDismissibleGroupRoot.tsx","../src/components/chip-dismissible-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupItem.tsx","../src/utilities/radix-overrides/toggle-group/ToggleGroupRoot.tsx","../src/utilities/radix-overrides/toggle-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupRoot.tsx","../src/components/chip-toggle-group/index.ts","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxOption.tsx","../src/components/combobox/ComboboxPopover.tsx","../src/components/combobox/Combobox.tsx","../src/components/input/Input.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.tsx","../src/components/create-password-field/CreatePasswordField.tsx","../src/components/data-table/DataTable.types.ts","../src/components/data-table/getNewAsyncData.ts","../src/components/data-table/usePagination.ts","../src/components/data-table/useSorting.ts","../src/components/data-table/DataTableContext.tsx","../src/components/table/TableRow.tsx","../src/components/table/TableBody.tsx","../src/components/table/TableCell.tsx","../src/components/table/TableFooter.tsx","../src/components/table/TableFooterCell.tsx","../src/components/table/TableHeaderCell.tsx","../src/components/table/TableHeader.tsx","../src/components/table/useStickyColumnsCss.ts","../src/components/table/TableStickyColumnsContainer.tsx","../src/components/table/Table.tsx","../src/components/data-table/DataTableBody.tsx","../src/components/data-table/DataTableBulkActions.tsx","../src/components/data-table/DataTableBulkActionsSelectedRowActions.tsx","../src/components/data-table/DataTableBulkActionsFloating.tsx","../src/components/data-table/DataTableDataCell.tsx","../src/components/empty-state/EmptyState.context.tsx","../src/components/empty-state/EmptyStateBody.tsx","../src/components/empty-state/EmptyStateImage.tsx","../src/components/empty-state/EmptyStateTitle.tsx","../src/components/empty-state/EmptyState.tsx","../src/components/data-table/DataTableEmptyState.tsx","../src/components/data-table/DataTableError.tsx","../src/utilities/optional-visually-hidden-wrapper/OptionalVisuallyHiddenWrapper.tsx","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.tsx","../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx","../src/components/data-table/DataTableHead.tsx","../src/components/data-table/DataTableHeaderCell.tsx","../src/components/data-table/DataTableLoading.tsx","../src/components/data-table/DataTableMetaData.tsx","../src/components/data-table/DataTableRowSelectionCheckbox.tsx","../src/components/data-table/DataTableRow.tsx","../src/components/data-table/DataTableTable.tsx","../src/components/sortable/Handle.tsx","../src/components/sortable/SortableHandle.tsx","../src/components/sortable/SortableItem.tsx","../src/components/sortable/SortableRoot.tsx","../src/components/sortable/index.ts","../src/components/data-table/drag-and-drop/DragAndDropTableRow.tsx","../src/components/data-table/drag-and-drop/DragAndDropTableBody.tsx","../src/components/data-table/drag-and-drop/DragAndDropTable.tsx","../src/components/pagination/pagination.constants.ts","../src/components/pagination/pagination.helper.ts","../src/components/pagination/pagination-context/PaginationContext.tsx","../src/components/pagination/usePagination.tsx","../src/components/pagination/PaginationNextButton.tsx","../src/components/pagination/PaginationPage.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/PaginationItems.tsx","../src/components/pagination/Pagination.tsx","../src/components/data-table/pagination/Pagination.tsx","../src/components/data-table/DataTable.tsx","../src/components/calendar/constants.ts","../src/components/calendar/Day.tsx","../src/components/calendar/Calendar.tsx","../src/components/popover/PopoverContent.tsx","../src/components/popover/Popover.tsx","../src/components/date-input/constants.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/utilities/style/backdrop-overlay.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogFooter.tsx","../src/components/dialog/DialogHeading.tsx","../src/components/dialog/Dialog.tsx","../src/components/drawer/Drawer.context.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerOverlay.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/Drawer.styles.ts","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerMain.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/Drawer.tsx","../src/components/dropdown-menu/DropdownMenuContent.tsx","../src/components/dropdown-menu/DropdownMenuItem.tsx","../src/components/dropdown-menu/DropdownMenuLinkItem.tsx","../src/components/dropdown-menu/DropdownMenuSeparator.tsx","../src/components/dropdown-menu/DropdownMenuTrigger.tsx","../src/components/dropdown-menu/DropdownMenu.tsx","../src/components/file-input/FileInput.tsx","../src/components/grid/Grid.tsx","../src/components/input-field/InputField.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/utilities/event/preventEvent.ts","../src/components/navigation/NavigationMenuDropdownContent.tsx","../src/components/navigation/NavigationMenu.styles.ts","../src/components/navigation/NavigationMenuDropdownTrigger.tsx","../src/components/navigation/NavigationMenuDropdown.tsx","../src/components/navigation/NavigationMenuLink.tsx","../src/components/navigation/NavigationMenuDropdownItem.tsx","../src/components/navigation/stitches.navigationMenu.colorscheme.config.ts","../src/components/navigation/NavigationMenu.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordion.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalList.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.tsx","../src/utilities/style/reset.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.styles.ts","../src/components/navigation-menu-vertical/NavigationMenuVerticalIcon.tsx","../src/components/side-bar/SideBarComponents.tsx","../src/components/side-bar/SideBarContext.tsx","../src/components/side-bar/SideBar.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalText.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx","../src/components/navigation-menu-vertical/stitches.navigationMenuVertical.colorscheme.config.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.tsx","../src/components/notification-badge/NotificationBadge.tsx","../src/components/number-input/NumberInputStepper.tsx","../src/components/number-input/NumberInput.tsx","../src/components/number-input-field/NumberInputField.tsx","../src/components/progress-bar/ProgressBar.tsx","../src/components/radio-button-field/RadioField.tsx","../src/components/radio-button-field/RadioButtonField.tsx","../src/components/radio-card/RadioCard.tsx","../src/components/radio-card/RadioCardGroup.tsx","../src/components/search-field/SearchField.tsx","../src/components/section-message/SectionMessageContext.tsx","../src/components/section-message/SectionMessageDescription.tsx","../src/components/section-message/SectionMessageDismiss.tsx","../src/components/section-message/SectionMessageIcon.tsx","../src/components/section-message/SectionMessageLayout.tsx","../src/components/section-message/SectionMessageTitle.tsx","../src/components/section-message/SectionMessage.tsx","../src/components/select/Select.tsx","../src/components/select-field/SelectField.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.tsx","../src/components/spacer/Spacer.tsx","../src/components/stepper/stepper-context/StepperContext.tsx","../src/components/stepper/StepperStepBack.tsx","../src/components/stepper/StepperStepForward.tsx","../src/components/stepper/StepperStepBullet.tsx","../src/components/stepper/StepperStepContainer.tsx","../src/components/stepper/StepperStepLabel.tsx","../src/components/stepper/types.ts","../src/components/stepper/StepperSteps.tsx","../src/components/stepper/Stepper.tsx","../src/components/switch/Switch.tsx","../src/components/tabs/TabsContent.tsx","../src/components/tabs/TabsTrigger.tsx","../src/utilities/hooks/useScrollPosition.ts","../src/utilities/hooks/useSize.ts","../src/components/tabs/TabsTriggerList.tsx","../src/components/tabs/Tabs.tsx","../src/components/textarea/Textarea.tsx","../src/components/textarea-field/TextareaField.tsx","../src/components/tile/Tile.tsx","../src/components/tile/TileGroup.tsx","../src/components/tile-interactive/TileInteractive.tsx","../src/components/tile-toggle-group/TileToggleGroupItem.tsx","../src/components/tile-toggle-group/TileToggleGroupRoot.tsx","../src/components/tile-toggle-group/index.ts","../src/components/toast/ToastProvider.tsx","../src/components/toast/ToastCloseButton.tsx","../src/components/toast/ToastIcon.tsx","../src/components/toast/Toast.tsx","../src/components/toggle-group/ToggleGroupItem.tsx","../src/components/toggle-group/ToggleGroupButton.tsx","../src/components/toggle-group/ToggleGroupRoot.tsx","../src/components/toggle-group/index.ts","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/stitches.topBar.colorscheme.config.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/video/Video.tsx","../src/components/keyboard-shortcut/KeyboardShortcut.tsx","../src/components/keyboard-shortcut/index.ts","../src/components/segmented-control/SegmentedControlContext.tsx","../src/components/segmented-control/SegmentedControlBadge.tsx","../src/components/segmented-control/SegmentedControlContent.tsx","../src/components/segmented-control/SegmentedControlDescription.tsx","../src/components/segmented-control/SegmentedControlHeading.tsx","../src/components/segmented-control/SegmentedControlIcon.tsx","../src/components/segmented-control/SegmentedControlItem.tsx","../src/components/segmented-control/SegmentedControlItemList.tsx","../src/components/segmented-control/SegmentedControlRoot.tsx","../src/components/segmented-control/SegmentedControl.tsx","../src/components/file-drop/FileDropContext.ts","../src/components/file-drop/FileDrop.tsx","../src/components/file-drop/useFileDrop.ts"],"sourcesContent":["import type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@atom-learning/stitches-react'\nimport { createStitches, defaultThemeMap } from '@atom-learning/stitches-react'\nimport type { Theme } from '@atom-learning/theme/lib/theme-atom'\nimport * as atomTheme from '@atom-learning/theme/lib/theme-atom'\nimport { themeMap } from '@atom-learning/theme/theme-map'\n\nexport const utils = {\n bg: (value: PropertyValue<'background'>) => ({\n background: value\n }),\n\n size: (value: ScaleValue<'size'> | number | string) => ({\n height: value,\n width: value\n }),\n\n p: (value: ScaleValue<'space'> | number | string) => ({\n padding: value\n }),\n pt: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value\n }),\n pr: (value: ScaleValue<'space'> | number | string) => ({\n paddingRight: value\n }),\n pb: (value: ScaleValue<'space'> | number | string) => ({\n paddingBottom: value\n }),\n pl: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value\n }),\n px: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value,\n paddingRight: value\n }),\n py: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value,\n paddingBottom: value\n }),\n\n m: (value: ScaleValue<'space'> | number | string) => ({\n margin: value\n }),\n mt: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value\n }),\n mr: (value: ScaleValue<'space'> | number | string) => ({\n marginRight: value\n }),\n mb: (value: ScaleValue<'space'> | number | string) => ({\n marginBottom: value\n }),\n ml: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value\n }),\n mx: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value,\n marginRight: value\n }),\n my: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value,\n marginBottom: value\n })\n}\n\nexport const media = {\n sm: '(min-width: 550px)',\n md: '(min-width: 800px)',\n lg: '(min-width: 1100px)',\n xl: '(min-width: 1350px)',\n reducedMotion: '(prefers-reduced-motion)',\n allowMotion: '(prefers-reduced-motion: no-preference)',\n hover: '(hover: hover)'\n}\n\nconst stitchesConfig = createStitches({\n theme: atomTheme as Theme,\n themeMap: {\n ...defaultThemeMap,\n ...themeMap\n },\n utils,\n media\n})\n\nexport const {\n css,\n getCssText,\n createTheme,\n globalCss,\n keyframes,\n styled,\n theme\n} = stitchesConfig\n\nexport type CSS = StitchesCSS<typeof stitchesConfig>\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { CSS, theme } from '../../stitches'\n\n/**\n * Generates a Stitches variants object based on keys in our theme.\n * You can use the string `$key` in your CSS object, which will be replaced\n * with the token from our theme.\n *\n *\n * @example\n * ```ts\n * createThemeVariants('space', { p: '$key' })\n *\n * // Result:\n * // {\n * // 0: { p: '$space$0' },\n * // 1: { p: '$space$1' },\n * // 2: { p: '$space$2' },\n * // ...etc\n * // }\n * ```\n */\nexport const createThemeVariants = <ThemeProperty extends keyof Theme>(\n themeProperty: ThemeProperty,\n styles: CSS\n): Record<keyof typeof theme[ThemeProperty], CSS> =>\n Object.keys(theme[themeProperty]).reduce(\n (acc, key) => ({\n ...acc,\n [key]: JSON.parse(\n JSON.stringify(styles).replace(/\\$key/g, `$${themeProperty}$${key}`)\n )\n }),\n {}\n ) as Record<keyof typeof theme[ThemeProperty], CSS>\n","import { styled } from '~/stitches'\n\nexport const Box = styled('div', {})\n\nBox.displayName = 'Box'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport type { CSS } from '~/stitches'\n\ntype CssWrapperProps = {\n css?: CSS\n children: React.ReactNode\n}\n\nexport const CSSWrapper = ({\n css,\n children\n}: CssWrapperProps): React.ReactElement =>\n css ? (\n <Box css={css}>{children}</Box>\n ) : (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n )\n\nCSSWrapper.displayName = 'CSSWrapper'\n","import { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nexport const noOverflowStyleBlock = (): {\n size: string\n borderRadius: string\n overflow: string\n} => {\n return {\n size: '100%',\n borderRadius: 'inherit',\n overflow: 'hidden'\n }\n}\n\nexport const NoOverflowWrapper = styled(Box, noOverflowStyleBlock())\n\nNoOverflowWrapper.displayName = 'NoOverflowWrapper'\n","import { CSS } from '~/stitches'\n\n/**\n * https://seek-oss.github.io/capsize/\n *\n * Capsize is an online tool (or npm package) that allows us to trim the whitespace above capital letters and below the baseline.\n * The following utility returns pseudo elements for use in a `styled()` function.\n * Using the tool above, choose a font, pass a font-size and line-height, and get a value to use as an offset for the whitespace. e.g.\n *\n * styled('p', {\n * fontFamily: 'Inter',\n * fontSize: 16,\n * lineHeight: 1.5,\n * ...capsize('-0.3864em') // this value is a result of the font family, size and line-height\n * })\n *\n */\nexport const capsize = (\n before: number,\n after?: number\n): Record<string, CSS> => ({\n '&::before': {\n content: \"''\",\n mb: `-${before}em`,\n display: 'table'\n },\n '&::after': {\n content: \"''\",\n mt: `-${after || before}em`,\n display: 'table'\n }\n})\n","import { toHex } from 'color2k'\n\ntype Icons = keyof typeof icons\n\nconst icons = {\n chevron: (color: string): string =>\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" stroke=\"${color}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" color=\"${color}\"><polyline points=\"6 10 12 16 18 10\"/></svg>`,\n search: (color: string): string =>\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" stroke=\"${color}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" color=\"${color}\"><path d=\"M14.4121122,14.4121122 L20,20\"></path><circle cx=\"10\" cy=\"10\" r=\"6\"></circle></svg>`\n}\n\n// convert hsl theme value to hex\n// svg doesn't support hsl in attributes\n// encode icon and return as data uri\nexport const encodeBackgroundIcon = (color: string, icon: Icons): string =>\n `url(data:image/svg+xml;charset=US-ASCII,${encodeURIComponent(\n icons[icon](toHex(color))\n )})`\n","/*\n Focus styling for block element.\n*/\n\ntype focusVisibleStyleBlockPropsType = {\n position?: 'relative' | 'absolute' | 'fixed' | 'sticky'\n zIndex?: number\n boxShadow?: string\n}\n\ntype focusVisibleStyleBlockReturnType = {\n outline: 'none'\n position: string\n zIndex: number\n boxShadow: string\n}\n\nexport const focusVisibleStyleBlock = ({\n position = 'relative',\n zIndex = 1,\n boxShadow = ''\n}: focusVisibleStyleBlockPropsType = {}): focusVisibleStyleBlockReturnType => {\n return {\n outline: 'none',\n position: ['relative', 'absolute', 'fixed', 'sticky'].includes(position)\n ? position\n : 'relative',\n zIndex: zIndex > 1 ? zIndex : 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px${\n boxShadow ? `, ${boxShadow}` : ''\n }`\n }\n}\n","import { keyframes } from '~/stitches'\n\nexport const slideUpAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideRightAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(-2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\nexport const slideDownAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(-2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideLeftAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\n\nexport const fadeIn = keyframes({\n '0%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\nexport const fadeOut = keyframes({\n '0%': { opacity: 1 },\n '100%': { opacity: 0 }\n})\n\nexport const slideInOut = ({\n outPosition = { x: 0, y: 0 },\n inPosition = { x: 0, y: 0 }\n}: {\n outPosition?: { x: string | number; y: string | number }\n inPosition?: { x: string | number; y: string | number }\n}): {\n in: ReturnType<typeof keyframes>\n out: ReturnType<typeof keyframes>\n} => {\n const slideIn = keyframes({\n '0%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n },\n '100%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n }\n })\n\n const slideOut = keyframes({\n '0%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n },\n '100%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n }\n })\n\n return {\n in: slideIn,\n out: slideOut\n }\n}\n","/*\n * Utility function to allow for overriding responsive variants using logic provided via the `overrideFunction` argument.\n *\n * It was developed out of a design requirement to override and pass through size properties to the <Icon /> component; depending\n * on the size of its parent component. It could be used for various other props where we want to tweak the value but\n * maintain the flexibility of a stitches variant property (which allows for use either via a string or a breakpoint object)\n * Documentation on stitches responsive variants: https://stitches.dev/docs/breakpoints#responsive-variants\n *\n */\nexport const overrideStitchesVariantValue = (\n prop: any,\n overrideFunction: (any) => any\n) => {\n let overrideValue\n switch (typeof prop) {\n case 'object':\n overrideValue = {}\n Object.keys(prop).forEach((breakpoint) => {\n const propAtBreakpoint = prop[breakpoint]\n overrideValue[breakpoint] = propAtBreakpoint\n ? overrideFunction(propAtBreakpoint)\n : propAtBreakpoint\n })\n break\n default:\n overrideValue = overrideFunction(prop)\n }\n\n return overrideValue\n}\n","import { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst toIconSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const getFieldIconSize = (size: any) =>\n overrideStitchesVariantValue(size, (s) => toIconSize[s])\n","/* \n Disabled styling for elements.\n*/\n\nimport type { CSS } from '~/stitches'\n\nexport const disabledStyle = {\n opacity: 0.3,\n cursor: 'not-allowed'\n} as CSS\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities'\n\nconst open = keyframes({\n from: { height: 0 },\n to: { height: 'var(--radix-accordion-content-height)' }\n})\n\nconst close = keyframes({\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: 0 }\n})\n\nconst StyledContent = styled(Content, {\n border: 0,\n width: '100%',\n bg: '$base1',\n overflow: 'hidden',\n '&[data-state=\"open\"]': { borderRadius: '0 0 $0 $0' },\n\n '@allowMotion': {\n '&[data-state=\"open\"]': { animation: `${open} 300ms ease-out` },\n '&[data-state=\"closed\"]': { animation: `${close} 300ms ease-out` }\n }\n})\n\nexport const AccordionContent = ({\n children,\n css,\n ...remainingProps\n}: React.ComponentProps<typeof StyledContent>) => (\n <StyledContent {...remainingProps}>\n <CSSWrapper css={css}>{children}</CSSWrapper>\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const AccordionItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { createTheme } from '~/stitches'\n\nexport const colorSchemes = {}\n\nconst generateColors = ({ prefix, colorName, color0 = '' }) => {\n const colors = {}\n let i = 1\n if (color0) {\n colors[`${prefix}${i}`] = color0\n i++\n }\n let k = 1\n for (i; i <= 11; i++) {\n colors[`${prefix}${i}`] = `$${colorName}${k * 100}`\n k++\n }\n return colors\n}\n\ncolorSchemes['interactive-loContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n} as unknown as Theme)\n\ncolorSchemes['interactive-hiContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n} as unknown as Theme)\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme({\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n } as unknown as Theme)\n }\n )\n}\n\nexport const accents = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme({\n colors: generateColors({ prefix: 'accent', colorName, color0 })\n })\n }\n )\n}\n\ngenerateBase()\ngenerateAccent()\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { accents, bases, colorSchemes } from './stitches.colorscheme.config'\n\nexport type TcolorScheme = {\n base?: keyof typeof bases\n accent?: keyof typeof accents\n interactive?: 'loContrast' | 'hiContrast'\n}\n\ntype TColorSchemeOwnProps = TcolorScheme & {\n asChild?: boolean\n}\n\nconst StyledColorScheme = styled('div')\n\ntype TColorSchemeProps = React.ComponentProps<typeof StyledColorScheme> &\n TColorSchemeOwnProps\n\n/**\n * @experimental Component has not been finalised. Further design input required. Use with caution.\n */\nexport const ColorScheme: React.ForwardRefExoticComponent<TColorSchemeProps> =\n React.forwardRef(\n (\n {\n base = '',\n accent = '',\n interactive = '',\n className,\n asChild = false,\n ...rest\n },\n ref\n ) => {\n const c = [\n className,\n colorSchemes[`interactive-${interactive}`],\n colorSchemes[`accent-${accent}`],\n colorSchemes[`base-${base}`]\n ]\n .filter(Boolean)\n .join(' ')\n\n const Component = asChild ? Slot : StyledColorScheme\n return <Component ref={ref} className={c} {...rest} />\n }\n )\n\nColorScheme.displayName = 'ColorScheme'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nexport const StyledIcon = styled('svg', {\n display: 'inline-block',\n fill: 'none',\n flexShrink: 0,\n stroke: 'currentcolor',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n verticalAlign: 'middle',\n variants: {\n size: {\n sm: { size: '$1', strokeWidth: '1.5' },\n md: { size: '$2', strokeWidth: '1.75' },\n lg: { size: '$3', strokeWidth: '2' }\n }\n }\n})\n\ntype IconProps = Override<\n React.ComponentProps<typeof StyledIcon>,\n {\n is: React.FC<React.SVGProps<SVGSVGElement>>\n as?: never\n }\n>\n\nexport const Icon: React.ForwardRefExoticComponent<IconProps> =\n React.forwardRef(({ is: SVG, size = 'md', ...remainingProps }, ref) => (\n <StyledIcon\n size={size}\n aria-hidden=\"true\"\n {...remainingProps}\n as={SVG}\n ref={ref}\n />\n ))\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nimport { Icon } from '../icon'\n\nconst RotatingIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n },\n '[data-state=\"closed\"] > &': {\n transform: 'rotate(0deg)'\n }\n})\n\nconst StyledTrigger = styled(Trigger, {\n border: 0,\n py: '$3',\n px: '$4',\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n bg: '$interactive2',\n color: '$interactiveForeground',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:active, &:hover, &:focus-visible': {\n bg: '$interactive3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&[data-state=\"open\"]': {\n borderRadius: '$0 $0 0 0'\n },\n '&[data-state=\"closed\"]': {\n borderRadius: '$0'\n },\n variants: {\n arrowPosition: {\n left: {\n flexDirection: 'row-reverse',\n gap: '$2',\n justifyContent: 'flex-end'\n },\n right: {}\n }\n }\n})\n\nexport const AccordionTrigger = ({\n children,\n colorScheme = {},\n asChild,\n arrowPosition = 'right',\n ...remainingProps\n}: React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger\n asChild={asChild}\n arrowPosition={arrowPosition}\n {...remainingProps}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <RotatingIcon is={ChevronDown} data-testid=\"accordion-chevron\" />\n </>\n )}\n </StyledTrigger>\n </ColorScheme>\n)\n","import { Root } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AccordionContent } from './AccordionContent'\nimport { AccordionItem } from './AccordionItem'\nimport { AccordionTrigger } from './AccordionTrigger'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\ntype AccordionProps = React.ComponentProps<typeof StyledRoot> & {\n type: 'single' | 'multiple'\n}\n\ntype AccordionType = React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Content: typeof AccordionContent\n Trigger: typeof AccordionTrigger\n}\n\nexport const Accordion = React.forwardRef(\n ({ type = 'single', children, ...remainingProps }, ref) => (\n // eslint-disable-next-line\n // @ts-ignore TODO: Radix has an TS error that throws a warning if you pass multiple in. Needs to be fixed by the owner\n <StyledRoot ref={ref} type={type} {...remainingProps}>\n {children}\n </StyledRoot>\n )\n) as AccordionType\n\nAccordion.Item = AccordionItem\nAccordion.Content = AccordionContent\nAccordion.Trigger = AccordionTrigger\n\nAccordion.displayName = 'Accordion'\n","const MAX_Z_INDEX = 2147483647\nconst DIALOG_Z_INDEX = 1147483646\nconst DROPDOWN_Z_INDEX = 10\nconst TOOLTIP_Z_INDEX = 10\nconst POPOVER_Z_INDEX = 10\n\nexport {\n MAX_Z_INDEX,\n DIALOG_Z_INDEX,\n DROPDOWN_Z_INDEX,\n POPOVER_Z_INDEX,\n TOOLTIP_Z_INDEX\n}\n","import { Arrow, Content } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { TOOLTIP_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nconst StyledContent = styled(Content, {\n backgroundColor: '$grey900',\n borderRadius: '$0',\n boxShadow: '$0',\n color: 'white',\n fontFamily: '$body',\n fontSize: '$sm',\n lineHeight: 1.5,\n whiteSpace: 'normal',\n px: '$3',\n py: '$2',\n zIndex: TOOLTIP_Z_INDEX,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"delayed-open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '100px' },\n md: { maxWidth: '250px' },\n lg: { maxWidth: '400px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: '$grey900',\n '[data-align=\"end\"] &': { mr: '$2' },\n '[data-align=\"start\"] &': { ml: '$2' }\n})\n\ntype TooltipContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content>\n\nexport const TooltipContent = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}: TooltipContentProps) => (\n <StyledContent\n side={side}\n sideOffset={sideOffset}\n size={size}\n {...remainingProps}\n >\n {children}\n <StyledArrow />\n </StyledContent>\n)\n","import { Portal, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TooltipContent } from './TooltipContent'\n\ntype TooltipProps = React.ComponentProps<typeof Root>\n\nconst TooltipComponent = ({\n children,\n delayDuration = 350,\n ...remainingProps\n}: TooltipProps) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nexport const Tooltip = Object.assign(TooltipComponent, {\n Content: TooltipContent,\n Trigger: styled(Trigger, {}),\n Portal: Portal,\n Provider: Provider\n})\n\nTooltipComponent.displayName = 'Tooltip'\n","import * as React from 'react'\n\nimport { Tooltip } from '~/components/tooltip'\n\nexport type TOptionalTooltipWrapperProps = {\n hasTooltip?: boolean\n label?: React.ReactNode\n tooltipSide?: React.ComponentProps<typeof Tooltip.Content>['side']\n}\n\nexport const OptionalTooltipWrapper = ({\n hasTooltip,\n label,\n tooltipSide,\n children\n}: React.PropsWithChildren<TOptionalTooltipWrapperProps>) => {\n if (hasTooltip) {\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content side={tooltipSide}>{label}</Tooltip.Content>\n </Tooltip>\n )\n }\n\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>\n}\n\nOptionalTooltipWrapper.displayName = 'OptionalTooltipWrapper'\n","export const isExternalUrl = (url?: string) => {\n if (typeof window === 'undefined' || !url) return false\n\n const isAbsoluteUrl = /^https?:\\/\\//.test(url)\n return isAbsoluteUrl && new URL(url).origin !== window.location.origin\n}\n\nexport const getExternalAnchorProps = (url?: string) =>\n isExternalUrl(url) ? { target: '_blank', rel: 'noopener noreferrer' } : {}\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport type { TOptionalTooltipWrapperProps } from '~/utilities/optional-tooltip-wrapper'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { Icon } from '../icon/Icon'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'simple',\n css: {\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst getSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': { bg: active }\n }\n})\n\nconst getOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n bg: 'unset',\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$1',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n neutral: {},\n primary: {},\n success: {},\n warning: {},\n danger: {},\n white: {}\n },\n appearance: {\n simple: {},\n outline: {},\n solid: {}\n },\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' }\n },\n isRounded: {\n true: {\n borderRadius: '$round'\n }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getSimpleVariant('neutral', '$grey700', '$primary900', '$primary1000'),\n getSimpleVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSimpleVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSimpleVariant('success', '$success', '$successMid', '$successDark'),\n getSimpleVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSimpleVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getSimpleVariant('white', '#fff', '#fff', '#fff'),\n\n getSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSolidVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSolidVariant('success', '$success', '$successMid', '$successDark'),\n getSolidVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n\n getOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getOutlineVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getOutlineVariant('success', '$success', '$successMid', '$successDark'),\n getOutlineVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getOutlineVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getOutlineVariant('white', '#fff', '#fff', '#fff')\n ]\n})\n\ntype ActionIconProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: string | React.ReactNode\n children: React.ReactNode\n label: string\n } & Omit<TOptionalTooltipWrapperProps, 'label'> &\n NavigatorActions\n>\n\nexport const ActionIcon: React.ForwardRefExoticComponent<ActionIconProps> =\n React.forwardRef(\n (\n {\n children,\n theme = 'primary',\n appearance = 'simple',\n size = 'sm',\n label,\n href,\n disabled,\n hasTooltip = true,\n tooltipSide,\n ...remainingProps\n },\n ref\n ) => {\n const INVALID_CHILDREN_MESSAGE = `A single ${Icon.displayName} component is permitted as a child of ${ActionIcon.displayName}`\n\n invariant(React.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE)\n\n const optionalLinkProps = href\n ? ({\n as: 'a',\n href: disabled ? null : href,\n onClick: undefined,\n 'aria-disabled': !!disabled\n } as const)\n : ({ type: 'button' } as const)\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\n {...getExternalAnchorProps(href)}\n {...remainingProps}\n aria-label={label}\n theme={theme}\n appearance={appearance}\n size={size}\n ref={ref}\n disabled={disabled}\n >\n {React.Children.map(children, (child) => {\n // TS needs this check for any following code to access child.type\n // even with optional chaining\n if (!React.isValidElement(child)) {\n throw new Error(INVALID_CHILDREN_MESSAGE)\n }\n\n invariant(\n child.type === Icon,\n `Children of type ${child?.type} aren't permitted. Only an ${Icon.displayName} component is allowed in ${ActionIcon.displayName}`\n )\n\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n }\n )\n })}\n </StyledButton>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nActionIcon.displayName = 'ActionIcon'\n","import { Content, Overlay, Portal } from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledAlertDialogOverlay = styled(Overlay, {\n backgroundColor: '$alpha600',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'fixed',\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n})\n\nconst StyledAlertDialogContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n '&:focus': {\n outline: 'none'\n },\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n sm: { width: '380px' },\n md: { width: '480px' },\n lg: { width: '600px' }\n }\n }\n})\n\nexport const AlertDialogContent = ({\n size = 'sm',\n ...remainingProps\n}: React.ComponentProps<typeof StyledAlertDialogContent>) => (\n <Portal>\n <StyledAlertDialogOverlay />\n <StyledAlertDialogContent size={size} {...remainingProps} />\n </Portal>\n)\n","import {\n Action,\n Cancel,\n Description,\n Root,\n Title,\n Trigger\n} from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AlertDialogContent } from './AlertDialogContent'\n\nconst StyledAlertDialog = styled(Root, {})\n\nexport const AlertDialog = Object.assign(StyledAlertDialog, {\n Description: Description,\n Title: Title,\n Action: Action,\n Cancel: Cancel,\n Content: AlertDialogContent,\n Trigger: Trigger\n})\n\nAlertDialog.displayName = 'AlertDialog'\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMountedRef = () => {\n const isMountedRef = useRef<boolean>()\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n })\n\n return isMountedRef\n}\n","import { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\n\nconst createVariants = <T extends GlobalValue[]>(\n variants: T,\n fn: (string: T[number]) => CSS\n) => {\n return variants.reduce(\n (prev, variant) => ({ ...prev, [variant]: fn(variant) }),\n {} as Record<T[number], CSS>\n )\n}\n\nconst globalValues = [\n 'inherit',\n 'initial',\n 'revert',\n 'revert-layer',\n 'unset'\n] as const\n\n/*\n * The following type is partially a hack to get the rest of the createVariants array parameter to be recognised as const.\n * Thus giving is the correct types generated for these generated variant props.\n * No clue how we can do it cleaner.\n * Mad props to: Elliot for getting this to working as is.\n *\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype GlobalValue = typeof globalValues[number] | (string & {})\n\nexport const Flex = styled('div', {\n display: 'flex',\n variants: {\n direction: createVariants(\n [...globalValues, 'row', 'row-reverse', 'column', 'column-reverse'],\n (v) => {\n return { flexDirection: v }\n }\n ),\n wrap: createVariants(\n [...globalValues, 'nowrap', 'wrap', 'wrap-reverse'],\n (v) => {\n return { flexWrap: v }\n }\n ),\n // Why is both `start` and `flex-start` valid values? Answer: https://csslayout.news/whats-the-difference-between-the-alignment-values-of-start-flex-start-and-self-start/\n justify: createVariants(\n [\n ...globalValues,\n 'normal',\n 'unsafe',\n 'safe',\n 'start',\n 'center',\n 'end',\n 'flex-start',\n 'flex-end',\n 'left',\n 'right',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch'\n ],\n (v) => {\n return { justifyContent: v }\n }\n ),\n align: createVariants(\n [\n ...globalValues,\n 'normal',\n 'unsafe',\n 'safe',\n 'center',\n 'start',\n 'end',\n 'self-start',\n 'self-end',\n 'flex-start',\n 'flex-end',\n 'baseline',\n 'first baseline',\n 'last baseline',\n 'stretch'\n ],\n (v) => {\n return { alignItems: v }\n }\n ),\n gap: createThemeVariants('space', { gap: '$key' })\n }\n})\n\nFlex.displayName = 'Flex'\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { CSS, keyframes, styled } from '~/stitches'\n\nconst FadeInOut = keyframes({\n '0%': { opacity: 0 },\n '30%': { opacity: 1 },\n '50%': { opacity: 1 },\n '80%': { opacity: 0 },\n '100%': { opacity: 0 }\n})\n\nconst Dot = styled('div', {\n animationName: `${FadeInOut}`,\n animationDuration: '1s',\n animationFillMode: 'both',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n '&:nth-child(1)': {\n animationDelay: '-300ms'\n },\n '&:nth-child(2)': {\n animationDelay: '-150ms'\n },\n '&:nth-child(3)': {\n animationDelay: 0\n },\n\n variants: {\n size: {\n sm: { size: '4px', mx: '2px' },\n md: { size: '6px', mx: '2px' },\n lg: { size: '8px', mx: '3px' }\n }\n }\n})\n\ntype LoaderProps = {\n message?: string\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n}\n\nexport const Loader = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}: LoaderProps) => (\n <Flex\n css={{\n justifyContent: 'center',\n // Stitches doesn't recognise CSS as the right type here. The Modulz team doesn't know why.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(css as any)\n }}\n role=\"alert\"\n {...props}\n >\n <VisuallyHidden.Root>{message}</VisuallyHidden.Root>\n <Dot size={size} />\n <Dot size={size} />\n <Dot size={size} />\n </Flex>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { StyledIcon } from '~/components/icon'\nimport { Loader } from '~/components/loader'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nconst getButtonOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': disabledStyle,\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n textDecoration: 'none',\n color: interact\n },\n '&:not([disabled]):active': { color: active }\n }\n})\n\nconst getButtonSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: text,\n '&[disabled]': disabledStyle,\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n bg: interact,\n color: text\n },\n '&:not([disabled]):active': { bg: active }\n }\n})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$1',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 600,\n justifyContent: 'center',\n p: 'unset',\n textDecoration: 'none',\n transition: 'all 100ms ease-out',\n whiteSpace: 'nowrap',\n width: 'max-content',\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n primary: {},\n secondary: {},\n success: {},\n warning: {},\n danger: {},\n neutral: {}\n },\n appearance: {\n solid: {},\n outline: {}\n },\n size: {\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n height: '$3',\n px: '$4',\n gap: '$2',\n [`& ${StyledIcon}`]: { size: 16 }\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 20 }\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 22 }\n },\n xl: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$6',\n px: '$5',\n gap: '$3',\n [`& ${StyledIcon}`]: { size: 22 }\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getButtonSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonSolidVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonSolidVariant('success', '$success', '$successMid', '$successDark'),\n getButtonSolidVariant('warning', '$warning', '$warningMid', '$warningDark', '$grey900'),\n getButtonSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getButtonSolidVariant('neutral', 'white', opacify('white', -0.1), opacify('white', -0.25), '$primary800'),\n getButtonOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonOutlineVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonOutlineVariant('neutral', 'white', opacify('white', -0.2), opacify('white', -0.35))\n ],\n\n defaultVariants: {\n appearance: 'solid',\n size: 'md',\n theme: 'primary'\n }\n})\n\nconst LoaderContentsWrapper = styled('span', {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n visibility: 'hidden',\n variants: {\n size: {\n sm: { gap: '$2' },\n md: { gap: '$3' },\n lg: { gap: '$3' },\n xl: { gap: '$3' }\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst WithLoader = ({\n size,\n children\n}: React.ComponentProps<typeof LoaderContentsWrapper>) => (\n <>\n <Loader css={{ position: 'absolute' }} />\n <LoaderContentsWrapper size={size}>{children}</LoaderContentsWrapper>\n </>\n)\n\ntype ButtonProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: React.ComponentType | React.ElementType\n children: React.ReactNode\n href?: string\n isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button: React.ForwardRefExoticComponent<ButtonProps> =\n React.forwardRef(\n ({ children, as, href, isLoading = false, onClick, ...rest }, ref) => (\n <StyledButton\n as={as || (href ? 'a' : undefined)}\n href={href}\n isLoading={isLoading}\n onClick={!isLoading ? onClick : undefined}\n type={!href ? 'button' : undefined}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n >\n {isLoading ? (\n <WithLoader size={rest.size}>{children}</WithLoader>\n ) : (\n children\n )}\n </StyledButton>\n )\n )\n\nButton.displayName = 'Button'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const StyledHeading = styled('h2', {\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontFamily: '$body',\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2078)\n },\n md: {\n fontFamily: '$display',\n fontSize: '$xl',\n lineHeight: 1.14,\n letterSpacing: '0.01em',\n ...capsize(0.2634, 0.2114)\n },\n lg: {\n fontFamily: '$display',\n fontSize: '$2xl',\n lineHeight: 1.08,\n letterSpacing: '0.01em',\n ...capsize(0.1405, 0.2405)\n },\n xl: {\n fontFamily: '$display',\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.16, 0.26)\n },\n xxl: {\n fontFamily: '$display',\n fontSize: '$4xl',\n lineHeight: 1,\n ...capsize(0.1, 0.2)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n },\n weight: {\n medium: { fontWeight: 500 },\n bold: { fontWeight: 700 }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentProps<typeof StyledHeading>,\n {\n as?:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Heading: React.ForwardRefExoticComponent<HeadingProps> =\n React.forwardRef(\n ({ size = 'md', weight = 'bold', ...remainingProps }, ref) => (\n <StyledHeading\n ref={ref}\n size={size}\n weight={weight}\n {...remainingProps}\n />\n )\n )\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const textVariants = {\n size: {\n xs: { fontSize: '$xs', lineHeight: 1.6, ...capsize(0.4364) },\n sm: { fontSize: '$sm', lineHeight: 1.53, ...capsize(0.4056) },\n md: { fontSize: '$md', lineHeight: 1.5, ...capsize(0.3864) },\n lg: { fontSize: '$lg', lineHeight: 1.52, ...capsize(0.3983) },\n xl: { fontSize: '$xl', lineHeight: 1.42, ...capsize(0.3506) }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n }\n}\n\nexport const getTextVariant: (options: {\n size: keyof typeof textVariants.size\n noCapsize?: boolean\n}) => CSS = ({ size, noCapsize }) => ({\n ...textVariants.size[size],\n ...textVariants.noCapsize[`${noCapsize}`]\n})\n\nexport const StyledText = styled('p', {\n m: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: {\n ...textVariants,\n weight: {\n normal: { fontWeight: 400 },\n bold: { fontWeight: 600 }\n },\n family: {\n body: { fontFamily: '$body' },\n display: { fontFamily: '$display' },\n mono: { fontFamily: '$mono' }\n }\n }\n})\n\ntype TextProps = Override<\n React.ComponentProps<typeof StyledText>,\n {\n as?:\n | 'blockquote'\n | 'caption'\n | 'dd'\n | 'dt'\n | 'figcaption'\n | 'li'\n | 'p'\n | 'span'\n | 'legend'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Text: React.ForwardRefExoticComponent<TextProps> =\n React.forwardRef(\n ({ size = 'md', family = 'body', ...remainingProps }, ref) => (\n <StyledText size={size} family={family} {...remainingProps} ref={ref} />\n )\n )\n\nText.displayName = 'Text'\n","import { Danger, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../../icon'\n\nexport type AlertDialogTheme = 'info' | 'warning' | 'danger' | 'success'\n\nconst StyledIcon = styled(Icon, {\n alignSelf: 'flex-start',\n variants: {\n theme: {\n info: { color: '$info' },\n warning: { color: '$warningMid' },\n danger: { color: '$danger', transform: 'rotate(180deg)' },\n success: { color: '$success' }\n }\n }\n})\n\nconst iconMap: Record<\n AlertDialogTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n info: Info,\n warning: Danger,\n danger: Info,\n success: OkCircle\n}\n\nexport const AlertDialogIcon = ({ theme }: { theme: AlertDialogTheme }) => (\n <StyledIcon theme={theme} is={iconMap[theme]} />\n)\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Flex } from '../../flex'\nimport { Heading } from '../../heading'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport { AlertDialogIcon } from './AlertDialogIcon'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert = ({\n title,\n size,\n theme,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n confirmElement,\n cancelElement,\n ...remainingProps\n}: AlertDialogContentProps) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n size={size}\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n css={{\n display: 'flex',\n flexDirection: 'column',\n maxHeight: '90vh',\n gap: '$5'\n }}\n {...remainingProps}\n >\n <Flex css={{ alignItems: 'center', gap: '$2' }}>\n {theme && <AlertDialogIcon theme={theme} />}\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mr: '$4' }}>\n {title}\n </Heading>\n </Flex>\n {description && (\n <Text\n as={AlertDialog.Description}\n css={{ display: 'flex', overflowY: 'auto' }}\n >\n {description}\n </Text>\n )}\n <Flex gap=\"2\" justify=\"end\" wrap=\"wrap\">\n <AlertDialog.Cancel asChild>\n {cancelElement ||\n (cancelActionText && (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n onClick={() => onAction?.(false)}\n >\n {cancelActionText}\n </Button>\n ))}\n </AlertDialog.Cancel>\n <AlertDialog.Action asChild>\n {confirmElement || (\n <Button size=\"sm\" onClick={() => onAction?.(true)}>\n {confirmActionText}\n </Button>\n )}\n </AlertDialog.Action>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog>\n)\n","import { uid } from 'uid'\n\nimport { alert } from './types'\n\ntype State = alert[]\ntype Action =\n | { type: 'ADD'; payload: alert }\n | { type: 'REMOVE'; payload: string }\n\nexport const initialState = []\n\nexport const reducer = (state: State, action: Action): alert[] => {\n switch (action.type) {\n case 'ADD':\n return [...state, { ...action.payload, id: uid() }]\n case 'REMOVE':\n return state.filter(({ id }) => id !== action.payload)\n default:\n return state\n }\n}\n","import * as React from 'react'\n\nimport { useIsMountedRef } from '~/utilities/hooks/useIsMountedRef'\n\nimport { Alert } from './AlertDialog'\nimport { initialState, reducer } from './reducer'\nimport type { alert } from './types'\n\ntype context = {\n showAlert: (data: alert) => void\n}\n\nconst AlertContext = React.createContext<context>({\n showAlert: () => null\n})\n\nexport const AlertProvider = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const [alerts, dispatch] = React.useReducer(reducer, initialState)\n const isMountedRef = useIsMountedRef()\n\n return (\n <AlertContext.Provider\n value={{\n showAlert: (content: alert) =>\n dispatch({\n payload: content,\n type: 'ADD'\n })\n }}\n >\n {Boolean(alerts.length) && (\n <Alert\n {...alerts[0]}\n key={alerts[0].id}\n onClose={() => {\n if (isMountedRef.current)\n dispatch({\n payload: alerts[0].id,\n type: 'REMOVE'\n })\n }}\n />\n )}\n {children}\n </AlertContext.Provider>\n )\n}\n\nexport const useAlert = (): context => {\n const context = React.useContext(AlertContext)\n\n if (context === undefined) {\n throw new Error('useAlert must be used within a AlertProvider')\n }\n\n return context\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\nimport { AvatarRootContext } from './Avatar'\n\nconst toIconSize = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg',\n xxl: 'lg'\n}\n\nexport const AvatarIcon = ({ is }: { is: typeof Icon }) => {\n const rootContext = React.useContext(AvatarRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return <Icon size={iconSize} is={is} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\nexport const StyledImage = styled('img', {\n verticalAlign: 'middle',\n maxWidth: '100%',\n variants: {\n fluid: {\n true: {\n '&[width]': {\n width: 'auto'\n },\n '&[width][height]': {\n height: 'auto'\n },\n '&[src$=\".svg\"]': {\n width: '100%',\n height: 'auto',\n maxWidth: 'none'\n }\n }\n }\n }\n})\n\ntype ImageProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledImage>,\n {\n as?: never\n }\n>\n\nexport const Image = (props: ImageProps) => <StyledImage {...props} />\n\nImage.displayName = 'Image'\n","import { User } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Box } from '../box'\nimport { Icon } from '../icon'\n\nexport const AvatarPlaceholder = () => {\n return (\n <Box css={{ position: 'relative', size: '100%' }}>\n <Icon is={User} css={{ size: '100%' }} />\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Text } from '../text'\nimport { AvatarRootContext } from './Avatar'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst toTextSize = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n xl: 'md',\n xxl: 'lg'\n}\n\nexport const AvatarInitial = () => {\n const rootContext = React.useContext(AvatarRootContext)\n const { name, size } = rootContext\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n if (!name) {\n return <AvatarPlaceholder />\n }\n\n return (\n <Text size={textSize} css={{ color: '$grey800' }}>\n {name[0].toUpperCase()}\n </Text>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { AvatarInitial } from './AvatarInitial'\n\nconst StyledImage = styled(Image, {\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const AvatarImage = ({ src, alt }: { src: string; alt: string }) => {\n if (!src) {\n return <AvatarInitial />\n }\n\n return <StyledImage src={src} alt={alt} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nimport { AvatarIcon } from './AvatarIcon'\nimport { AvatarImage } from './AvatarImage'\nimport { AvatarInitial } from './AvatarInitial'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst avatarRootStyles = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '$grey800',\n borderRadius: '$round',\n border: '2px solid $grey200',\n backgroundColor: '$white',\n overflow: 'hidden',\n variants: {\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' },\n xl: { size: '$6' },\n xxl: { size: '$7' }\n }\n }\n}\n\nconst StyledDiv = styled('div', avatarRootStyles)\nconst StyledButton = styled('button', {\n all: 'unset',\n ...avatarRootStyles,\n '&:not([disabled])': {\n '&:hover': {\n borderColor: '$grey800',\n backgroundColor: '$grey100'\n },\n '&:active': {\n borderColor: '$primary800',\n backgroundColor: '$grey200'\n },\n '&:focus-visible': focusVisibleStyleBlock()\n },\n '&[disabled]': {\n opacity: '30%',\n cursor: 'not-allowed'\n }\n})\n\ntype TAvatarProps = React.ComponentProps<\n typeof StyledDiv | typeof StyledButton\n> & { name?: string } & (\n | {\n onClick: React.MouseEventHandler<HTMLButtonElement>\n disabled?: boolean\n }\n | { onClick?: never; disabled?: never }\n )\n\nexport type TAvatarRootContext = {\n name?: TAvatarProps['name']\n size: TAvatarProps['size']\n}\n\nexport const AvatarRootContext = React.createContext<TAvatarRootContext>({\n name: undefined,\n size: 'lg'\n})\n\nexport const AvatarRootProvider = ({ children, name, size }: TAvatarProps) => {\n const value = React.useMemo<TAvatarRootContext>(\n () => ({ name, size }),\n [name, size]\n )\n\n return (\n <AvatarRootContext.Provider value={value}>\n {children}\n </AvatarRootContext.Provider>\n )\n}\n\nexport const AvatarRoot = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}: TAvatarProps) => (\n <AvatarRootProvider name={name} size={size}>\n {onClick ? (\n <StyledButton\n size={size}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}\n css={{ cursor: disabled ? 'auto' : 'pointer' }}\n >\n {children}\n </StyledButton>\n ) : (\n <StyledDiv size={size}>{children}</StyledDiv>\n )}\n </AvatarRootProvider>\n)\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Image: AvatarImage,\n Initial: AvatarInitial,\n Placeholder: AvatarPlaceholder,\n Icon: AvatarIcon\n})\n\nAvatarRoot.displayName = 'Avatar'\n","import * as React from 'react'\n\nexport const useCallbackRef: () => [\n React.MutableRefObject<HTMLElement | null>,\n (HTMLElement) => void\n] = () => {\n const elRef = React.useRef<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) elRef.current = el\n }, [])\n\n return [elRef, setElRefCallback]\n}\n\nexport const useCallbackRefState: () => [\n HTMLElement | null,\n (HTMLElement) => void\n] = () => {\n const [elRef, setElRef] = React.useState<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) setElRef(el)\n }, [])\n\n return [elRef, setElRefCallback]\n}\n","import * as React from 'react'\n\nimport type { TBadgeProps } from './Badge'\n\ntype TBadgeProviderProps = {\n size?: TBadgeProps['size']\n overflow?: TBadgeProps['overflow']\n}\n\ntype TBadgeContext = TBadgeProviderProps & {\n isOverflowing?: boolean\n setIsOverflowing?: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BadgeContext = React.createContext<TBadgeContext>({})\n\nexport const BadgeProvider = ({\n size,\n overflow,\n children\n}: React.PropsWithChildren<TBadgeProviderProps>) => {\n const [isOverflowing, setIsOverflowing] = React.useState(false)\n\n const value = React.useMemo<TBadgeContext>(\n () => ({ size, overflow, isOverflowing, setIsOverflowing }),\n [size, overflow, isOverflowing, setIsOverflowing]\n )\n return <BadgeContext.Provider value={value}>{children}</BadgeContext.Provider>\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledBadgeIcon = styled(Icon)\n\nexport const BadgeIcon = (\n props: React.ComponentProps<typeof StyledBadgeIcon>\n) => <StyledBadgeIcon size=\"sm\" {...props} />\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\ntype TUseResizeObserverOptions = {\n elements: (HTMLElement | undefined | null)[]\n onResize: (entries: ResizeObserverEntry[]) => void\n delay?: number\n}\n\ntype TUseResizeObserverOutput = ResizeObserver | null\n\nconst createResizeObserver = (\n callback: (entries: ResizeObserverEntry[]) => void\n) => {\n try {\n return new ResizeObserver(callback)\n } catch {\n return null\n }\n}\n\nexport const useResizeObserver = ({\n delay = 500,\n elements,\n onResize\n}: TUseResizeObserverOptions): TUseResizeObserverOutput => {\n const observer = React.useMemo(\n () => createResizeObserver(debounce(delay, onResize)),\n [delay, onResize]\n )\n\n React.useEffect(() => {\n elements.forEach((element) => {\n if (element) {\n observer?.observe(element)\n }\n })\n\n return () => {\n elements.forEach((element) => element && observer?.unobserve(element))\n }\n }, [observer, elements])\n\n return observer\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useResizeObserver } from '~/utilities/hooks/useResizeObserver'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BadgeContext } from './Badge.context'\n\n/*\n * Instead of sticking a resize observer on every `BadgeText`\n * regardless of overflow type, split the resize logic into a component.\n * Basically call the hook conditionally, only for the version with\n * the `overflow === 'ellipsis'` which needs it.\n * This saves us from initialising a resize observer for any badge which doesn't need it.\n */\nconst ObserveBadgeTextOverflow: React.VFC<{ elRef: HTMLElement | null }> = ({\n elRef\n}) => {\n const { setIsOverflowing } = React.useContext(BadgeContext)\n\n useResizeObserver({\n delay: 0,\n elements: [elRef],\n onResize: () => {\n if (!elRef?.scrollWidth || !elRef?.clientWidth) return\n setIsOverflowing?.(elRef.scrollWidth > elRef.clientWidth)\n }\n })\n\n return null\n}\n\nconst StyledBadgeText = styled(Text, {\n py: '$0',\n variants: {\n overflow: {\n ellipsis: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n },\n wrap: {\n whiteSpace: 'wrap'\n }\n }\n }\n})\n\ntype TBadgeTextProps = React.ComponentProps<typeof StyledBadgeText>\n\nconst toTextSize = {\n xs: 'sm',\n sm: 'md',\n md: 'md'\n}\n\nexport const BadgeText = ({\n children,\n ...rest\n}: TBadgeTextProps): JSX.Element => {\n // We need the return type here. Otherwise typsecript breaks when this type is used in Badge. Do not remove unless you want to tackle that issue again.\n const { size: badgeSize, overflow } = React.useContext(BadgeContext)\n\n const size = React.useMemo(\n () => overrideStitchesVariantValue(badgeSize, (s) => toTextSize[s]),\n [badgeSize]\n )\n\n const [elRef, setElRef] = useCallbackRefState()\n\n return (\n <>\n {overflow === 'ellipsis' && <ObserveBadgeTextOverflow elRef={elRef} />}\n <StyledBadgeText\n noCapsize\n size={size}\n overflow={overflow}\n ref={setElRef}\n {...rest}\n >\n {children}\n </StyledBadgeText>\n </>\n )\n}\n","import { createTheme } from '~/stitches'\n\n/*\n * Semantic themes\n */\n\nconst info = createTheme({\n colors: {\n textSubtle: '$infoMid',\n backgroundSubtle: '$infoLight',\n textBold: '#FFF',\n backgroundBold: '$info',\n textOnWhite: '$info'\n }\n})\n\nconst neutral = createTheme({\n colors: {\n textSubtle: '$grey900',\n backgroundSubtle: '$grey100',\n textBold: '#FFF',\n backgroundBold: '$grey800',\n textOnWhite: '$grey800'\n }\n})\n\nconst success = createTheme({\n colors: {\n textSubtle: '$successMid',\n backgroundSubtle: '$successLight',\n textBold: '#FFF',\n backgroundBold: '$success',\n textOnWhite: '$success'\n }\n})\n\nconst danger = createTheme({\n colors: {\n textSubtle: '$dangerMid',\n backgroundSubtle: '$dangerLight',\n textBold: '#FFF',\n backgroundBold: '$danger',\n textOnWhite: '$danger'\n }\n})\n\nconst warning = createTheme({\n colors: {\n textSubtle: '$warningText',\n backgroundSubtle: '$warningLight',\n textBold: '$grey1000',\n backgroundBold: '$warning',\n textOnWhite: '$warning'\n }\n})\n\n/*\n * Non-semantic themes\n */\nconst primary = createTheme({\n colors: {\n textSubtle: '$primary1000',\n backgroundSubtle: '$primary200',\n textSubtleHover: '$primary1100',\n backgroundSubtleHover: '$primary300',\n\n textBold: 'white',\n backgroundBold: '$primary800',\n backgroundBoldHover: '$primary900',\n\n textOnWhite: '$primary800'\n }\n})\n\nconst grey = createTheme({\n colors: {\n textSubtle: '$grey1000',\n backgroundSubtle: '$grey200',\n textSubtleHover: '$grey1100',\n backgroundSubtleHover: '$grey300',\n\n textBold: '#FFF',\n backgroundBold: '$grey800',\n backgroundBoldHover: '$grey900',\n\n textOnWhite: '$grey800'\n }\n})\n\nconst blue = createTheme({\n colors: {\n textSubtle: '$blue1000',\n backgroundSubtle: '$blue200',\n textSubtleHover: '$blue1100',\n backgroundSubtleHover: '$blue300',\n\n textBold: '#FFF',\n backgroundBold: '$blue800',\n backgroundBoldHover: '$blue900',\n\n textOnWhite: '$blue800'\n }\n})\n\nconst pink = createTheme({\n colors: {\n textSubtle: '$pink1000',\n backgroundSubtle: '$pink200',\n textSubtleHover: '$pink1100',\n backgroundSubtleHover: '$pink300',\n\n textBold: '#FFF',\n backgroundBold: '$pink800',\n backgroundBoldHover: '$pink900',\n\n textOnWhite: '$pink800'\n }\n})\n\nconst purple = createTheme({\n colors: {\n textSubtle: '$purple1000',\n backgroundSubtle: '$purple200',\n textSubtleHover: '$purple1100',\n backgroundSubtleHover: '$purple300',\n\n textBold: '#FFF',\n backgroundBold: '$purple800',\n backgroundBoldHover: '$purple900',\n\n textOnWhite: '$purple700'\n }\n})\n\nconst cyan = createTheme({\n colors: {\n textSubtle: '$cyan1000',\n backgroundSubtle: '$cyan200',\n textSubtleHover: '$cyan1100',\n backgroundSubtleHover: '$cyan300',\n\n textBold: '#FFF',\n backgroundBold: '$cyan800',\n backgroundBoldHover: '$cyan900',\n\n textOnWhite: '$cyan800'\n }\n})\n\nconst green = createTheme({\n colors: {\n textSubtle: '$green1000',\n backgroundSubtle: '$green200',\n textSubtleHover: '$green1100',\n backgroundSubtleHover: '$green300',\n\n textBold: '#FFF',\n backgroundBold: '$green800',\n backgroundBoldHover: '$green900',\n\n textOnWhite: '$green800'\n }\n})\n\nconst magenta = createTheme({\n colors: {\n textSubtle: '$magenta1000',\n backgroundSubtle: '$magenta200',\n textSubtleHover: '$magenta1100',\n backgroundSubtleHover: '$magenta300',\n\n textBold: '#FFF',\n backgroundBold: '$magenta800',\n backgroundBoldHover: '$magenta900',\n\n textOnWhite: '$magenta800'\n }\n})\n\nconst red = createTheme({\n colors: {\n textSubtle: '$red1000',\n backgroundSubtle: '$red200',\n textSubtleHover: '$red1100',\n backgroundSubtleHover: '$red400',\n\n textBold: '#FFF',\n backgroundBold: '$red800',\n backgroundBoldHover: '$red900',\n\n textOnWhite: '$red800'\n }\n})\n\nconst teal = createTheme({\n colors: {\n textSubtle: '$teal1000',\n backgroundSubtle: '$teal200',\n textSubtleHover: '$teal1100',\n backgroundSubtleHover: '$teal300',\n\n textBold: '#FFF',\n backgroundBold: '$teal800',\n backgroundBoldHover: '$teal900',\n\n textOnWhite: '$teal800'\n }\n})\n\nconst orange = createTheme({\n colors: {\n textSubtle: '$orange1000',\n backgroundSubtle: '$orange200',\n textSubtleHover: '$orange1100',\n backgroundSubtleHover: '$orange300',\n\n textBold: '$grey1200',\n backgroundBold: '$orange600',\n backgroundBoldHover: '$orange700',\n\n textOnWhite: '$orange1000'\n }\n})\n\nconst yellow = createTheme({\n colors: {\n textSubtle: '$yellow1000',\n backgroundSubtle: '$yellow200',\n textSubtleHover: '$yellow1100',\n backgroundSubtleHover: '$yellow300',\n\n textBold: '$grey1200',\n backgroundBold: '$yellow500',\n backgroundBoldHover: '$yellow600',\n\n textOnWhite: '$yellow900'\n }\n})\n\nconst lime = createTheme({\n colors: {\n textSubtle: '$lime1000',\n backgroundSubtle: '$lime200',\n textSubtleHover: '$lime1100',\n backgroundSubtleHover: '$lime300',\n\n textBold: '$grey1200',\n backgroundBold: '$lime600',\n backgroundBoldHover: '$lime700',\n\n textOnWhite: '$lime900'\n }\n})\n\nconst lapis = createTheme({\n colors: {\n textSubtle: '$lapis1000',\n backgroundSubtle: '$lapis200',\n textSubtleHover: '$lapis1100',\n backgroundSubtleHover: '$lapis300',\n\n textBold: 'white',\n backgroundBold: '$lapis700',\n backgroundBoldHover: '$lapis900',\n\n textOnWhite: '$lapis700'\n }\n})\n\nconst maroon = createTheme({\n colors: {\n textSubtle: '$maroon1000',\n backgroundSubtle: '$maroon200',\n textSubtleHover: '$maroon1100',\n backgroundSubtleHover: '$maroon300',\n\n textBold: 'white',\n backgroundBold: '$maroon800',\n backgroundBoldHover: '$maroon900',\n\n textOnWhite: '$maroon700'\n }\n})\n\nconst marsh = createTheme({\n colors: {\n textSubtle: '$marsh1000',\n backgroundSubtle: '$marsh200',\n textSubtleHover: '$marsh1100',\n backgroundSubtleHover: '$marsh300',\n\n textBold: 'white',\n backgroundBold: '$marsh800',\n backgroundBoldHover: '$marsh900',\n\n textOnWhite: '$marsh700'\n }\n})\n\nexport const badgeSemanticNames = [\n 'info',\n 'neutral',\n 'success',\n 'danger',\n 'warning'\n]\n\nexport const colorSchemes = {\n info,\n neutral,\n success,\n danger,\n warning,\n primary,\n grey,\n blue,\n pink,\n purple,\n cyan,\n green,\n magenta,\n red,\n teal,\n orange,\n yellow,\n lime,\n lapis,\n maroon,\n marsh\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\n\nimport { BadgeContext, BadgeProvider } from './Badge.context'\nimport { BadgeIcon } from './BadgeIcon'\nimport { BadgeText } from './BadgeText'\nimport {\n badgeSemanticNames,\n colorSchemes as badgeColorSchemes\n} from './stitches.badge.colorscheme.config'\n\nconst StyledBadge = styled(Flex, {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n minWidth: 0,\n border: '1px solid #FFFFFF',\n fontFamily: '$body',\n '& > *:not(:last-child)': {\n mr: '$1'\n },\n variants: {\n emphasis: {\n white: {\n color: '$textOnWhite',\n background: 'white'\n },\n subtle: {\n color: '$textSubtle',\n background: '$backgroundSubtle'\n },\n bold: {\n color: '$textBold',\n background: '$backgroundBold'\n }\n },\n size: {\n xs: {\n px: '$1'\n },\n sm: {\n px: '$1',\n py: '$0'\n },\n md: {\n px: '$2',\n py: '$1'\n }\n },\n\n isClickable: {\n true: {\n cursor: 'pointer'\n }\n },\n highlighted: {\n true: {}\n }\n },\n compoundVariants: [\n {\n isClickable: true,\n emphasis: 'white',\n css: {\n '&:hover': {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'subtle',\n css: {\n '&:hover': {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'bold',\n css: {\n '&:hover': {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n },\n {\n emphasis: 'white',\n highlighted: true,\n css: {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n },\n {\n emphasis: 'subtle',\n highlighted: true,\n css: {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n },\n {\n emphasis: 'bold',\n highlighted: true,\n css: {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n ]\n})\n\nexport type TBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n theme?: keyof typeof badgeColorSchemes\n overflow?: React.ComponentProps<typeof BadgeText>['overflow']\n}\n\ntype TBadgeInnerProps = Omit<TBadgeProps, 'size' | 'overflow'>\n\nconst BadgeInner: React.ForwardRefExoticComponent<TBadgeInnerProps> =\n React.forwardRef(\n ({ theme = 'info', emphasis = 'subtle', children, ...rest }, ref) => {\n const { size, overflow, isOverflowing } = React.useContext(BadgeContext)\n const [badgeElRef, setBadgeElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => badgeElRef as HTMLDivElement)\n\n const label = badgeElRef?.textContent\n\n const isInfoOnly = badgeSemanticNames.includes(theme)\n\n const isClickable =\n Object.keys(rest).includes('onClick') ||\n Object.keys(rest).includes('href')\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={overflow === 'ellipsis' && isOverflowing}\n label={label}\n >\n <StyledBadge\n role=\"status\"\n emphasis={emphasis}\n size={size}\n {...rest}\n className={badgeColorSchemes[theme]}\n ref={setBadgeElRef}\n isClickable={isClickable && !isInfoOnly}\n >\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <BadgeText>{child}</BadgeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <BadgeIcon {...child.props} />\n }\n return child\n })}\n </StyledBadge>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nconst BadgeComponent: React.ForwardRefExoticComponent<TBadgeProps> =\n React.forwardRef(({ size = 'sm', overflow = 'wrap', ...rest }, ref) => {\n return (\n <BadgeProvider size={size} overflow={overflow}>\n <BadgeInner {...rest} ref={ref} />\n </BadgeProvider>\n )\n })\n\nexport const Badge = Object.assign(BadgeComponent, {\n Icon: BadgeIcon,\n Text: BadgeText\n})\n\nBadgeComponent.displayName = 'Badge'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nexport interface IDismissibleRootContext {\n disabled?: boolean\n isDismissed: boolean\n setIsDismissed: (boolean) => void\n onDismiss: () => void\n}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => undefined,\n onDismiss: () => undefined\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n dismissed?: boolean\n onDismiss?: () => void\n}\n\nexport const DismissibleRootProvider = ({\n dismissed: controlledIsDismissed,\n children,\n disabled,\n onDismiss = () => null\n}: React.PropsWithChildren<IDismissibleRootProps>) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n\n const value = React.useMemo<IDismissibleRootContext>(() => {\n const isControlled = typeof controlledIsDismissed === 'boolean'\n return {\n disabled,\n isDismissed: isControlled\n ? (controlledIsDismissed as boolean)\n : isDismissed,\n setIsDismissed: isControlled ? () => null : setIsDismissed,\n onDismiss\n }\n }, [disabled, isDismissed, onDismiss, controlledIsDismissed])\n\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleRootInternalProps {\n asChild?: boolean\n}\n\nconst DismissibleRootInternal = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleRootInternalProps>) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n if (isDismissed) return null\n\n const props = { ...(disabled && { [`data-disabled`]: '' }), ...rest }\n const Component = asChild ? Slot : 'div'\n return <Component {...props} />\n}\n\nexport const DismissibleRoot = ({\n disabled = false,\n dismissed,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<\n IDismissibleRootInternalProps & IDismissibleRootProps\n>) => (\n <DismissibleRootProvider\n dismissed={dismissed}\n disabled={disabled}\n onDismiss={onDismiss}\n >\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\n\nDismissibleRoot.displayName = 'Dismissible'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { DismissibleRootContext } from './DismissibleRoot'\n\nexport interface IDismissibleTriggerProps {\n asChild?: boolean\n}\n\nconst DefaultTrigger = (props) => (\n <button type=\"button\" {...props}>\n Dismiss\n </button>\n)\n\nexport const DismissibleTrigger = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleTriggerProps>) => {\n const context = React.useContext(DismissibleRootContext)\n if (context === undefined) {\n throw new Error(\n 'Dismissible.Trigger can only be used within a Dismissible.Item'\n )\n }\n\n const { setIsDismissed, disabled, onDismiss } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\n onDismiss?.()\n }\n\n const props = {\n disabled: disabled,\n onClick: handleDismiss,\n ...rest\n }\n\n const Component = asChild ? Slot : DefaultTrigger\n return <Component {...props} />\n}\n","import { DismissibleRoot } from './DismissibleRoot'\nimport { DismissibleTrigger } from './DismissibleTrigger'\n\nexport const Dismissible = Object.assign(DismissibleRoot, {\n Trigger: DismissibleTrigger\n})\n","import * as React from 'react'\n\nimport { TBannerContainerProps } from './BannerContainer'\n\nexport type TBannerProviderProps = Pick<\n TBannerContainerProps,\n 'size' | 'emphasis'\n>\n\ntype TBannerContextValue = TBannerProviderProps & {\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BannerContext = React.createContext<TBannerContextValue>({\n emphasis: 'minimal',\n size: {\n '@initial': 'sm',\n '@md': 'md'\n },\n hasDismiss: false,\n setHasDismiss: () => null\n})\n\nexport const useBannerContext = (): TBannerContextValue => {\n const context = React.useContext(BannerContext)\n\n if (context === undefined) {\n throw new Error('useBannerContext must be used within a BannerProvider')\n }\n\n return context\n}\n\nexport const BannerProvider = ({\n emphasis = 'minimal',\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n children\n}: React.PropsWithChildren<TBannerProviderProps>) => {\n const [hasDismiss, setHasDismiss] = React.useState(false)\n const value = React.useMemo<TBannerContextValue>(\n () => ({ emphasis, size, hasDismiss, setHasDismiss }),\n [emphasis, size, hasDismiss, setHasDismiss]\n )\n return (\n <BannerContext.Provider value={value}>{children}</BannerContext.Provider>\n )\n}\n\nBannerProvider.displayName = 'Banner'\n","import { Dismissible } from '../dismissible'\nimport { BannerProvider } from './BannerContext'\n\nexport const Banner = Object.assign(BannerProvider, {\n Dismiss: Dismissible.Trigger\n})\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerRegularButton = (\n props: React.ComponentProps<typeof Button>\n) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size={size}\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n {...props}\n />\n )\n}\n\nBannerRegularButton.displayName = 'BannerRegularButton'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\nimport { BannerRegularButton } from './BannerRegularButton'\n\nconst MAX_ALLOWED_CHILDREN = 2\n\nconst toGap = {\n sm: 2,\n md: 4\n}\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nexport const BannerRegularActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[s]),\n [size]\n )\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n invariant(\n React.Children.count(children) <= MAX_ALLOWED_CHILDREN,\n `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`\n )\n\n return (\n <Flex gap={gap} direction={direction} {...props}>\n {React.Children.map(children, (child, index) => {\n // if child is undefined or null, React.isValidElement returns false and hence error is thrown.\n // This line will prevent that from happening\n if (child == null) return child\n\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to ${BannerRegularActions.displayName} is not a valid element`\n )\n }\n\n invariant(\n child.type === BannerRegularButton,\n `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`\n )\n\n const propsToInject: Partial<\n React.ComponentProps<typeof BannerRegularButton>\n > = {\n // Override button appearance - make the second button outlined\n appearance: index > 0 ? 'outline' : undefined\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof BannerRegularButton>\n >,\n propsToInject\n )\n })}\n </Flex>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\n","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport { useBannerContext } from './BannerContext'\n\nconst StyledBannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$3',\n overflow: 'hidden',\n color: '$foreground',\n '--banner-heading-color': '$colors$foreground',\n '--banner-text-color': '$colors$grey900',\n variants: {\n emphasis: {\n bold: {\n background: '$base11',\n color: '$foreground7plus',\n '--banner-heading-color': '$colors$foreground7plus',\n '--banner-text-color': '$colors$grey100'\n },\n subtle: {\n background: '$base3'\n },\n minimal: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<\n typeof StyledBannerContainer\n> & {\n colorScheme?: TcolorScheme\n} & React.ComponentProps<typeof Dismissible>\n\nexport const BannerContainer = ({\n colorScheme = {},\n onDismiss,\n dismissed,\n ...props\n}: TBannerContainerProps): JSX.Element => {\n const { emphasis } = useBannerContext()\n\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild onDismiss={onDismiss} dismissed={dismissed}>\n <StyledBannerContainer role=\"banner\" emphasis={emphasis} {...props} />\n </Dismissible>\n </ColorScheme>\n )\n}\n","import * as React from 'react'\n\nimport { BannerContainer } from '../BannerContainer'\n\ntype TBannerRegularContainerProps = Omit<\n React.ComponentProps<typeof BannerContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerRegularContainer = (props: TBannerRegularContainerProps) => (\n <BannerContainer {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n width: '62%',\n flexGrow: 1,\n variants: {\n size: {\n sm: {\n p: '$4'\n },\n md: {\n p: '$24',\n pr: '$5'\n }\n }\n }\n})\n\nexport const BannerRegularContent = (\n props: React.ComponentProps<typeof Container>\n) => {\n const { size } = useBannerContext()\n\n return <Container size={size} {...props} />\n}\n\nBannerRegularContent.displayName = 'BannerRegularContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst toActionIconSize = {\n sm: 'md',\n md: 'sm'\n}\n\nconst StyledDismiss = styled(ActionIcon, {\n zIndex: 1,\n position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\ntype BannerRegularDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerRegularDismiss = ({\n label = 'dismiss',\n ...rest\n}: BannerRegularDismissProps) => {\n const { size, setHasDismiss } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n const actionIconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toActionIconSize[s]),\n [size]\n )\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size={actionIconSize}\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n appearance=\"solid\"\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerRegularDismiss.displayName = 'BannerRegularDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Heading } from '../../heading'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledHeading = styled(Heading, {\n mb: '$4',\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularHeading = (\n props: React.ComponentProps<typeof Heading>\n) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"md\"\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularHeading.displayName = 'BannerRegularHeading'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n position: 'relative',\n overflow: 'hidden',\n width: '38%',\n variants: {\n size: {\n sm: {\n display: 'none'\n },\n md: {\n display: 'block'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n position: 'absolute',\n maxWidth: 'auto',\n width: '100%',\n height: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerRegularImage = (\n props: React.ComponentProps<typeof Image>\n) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerRegularImage.displayName = 'BannerRegularImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-text-color)',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularText.displayName = 'BannerRegularText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerRegularActions } from './BannerRegularActions'\nimport { BannerRegularButton } from './BannerRegularButton'\nimport { BannerRegularContainer } from './BannerRegularContainer'\nimport { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nconst BannerRegularComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof BannerRegularContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerRegularContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerRegular = Object.assign(BannerRegularComponent, {\n Content: BannerRegularContent,\n Heading: BannerRegularHeading,\n Text: BannerRegularText,\n Actions: BannerRegularActions,\n Image: BannerRegularImage,\n Button: BannerRegularButton,\n Dismiss: BannerRegularDismiss\n})\n\nBannerRegularComponent.displayName = 'BannerRegular'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledBannerSlimActions = styled(Flex, {\n variants: {\n size: {\n sm: { width: '100%' },\n md: { width: 'auto' }\n }\n }\n})\n\nexport const BannerSlimActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n return (\n <StyledBannerSlimActions size={size} gap={4} {...props}>\n {children}\n </StyledBannerSlimActions>\n )\n}\n\nBannerSlimActions.displayName = 'BannerSlimActions'\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerSlimButton = ({\n css,\n ...props\n}: React.ComponentProps<typeof Button>) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size=\"md\"\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n css={{ ml: 'auto', ...css }}\n {...props}\n />\n )\n}\n\nBannerSlimButton.displayName = 'BannerSlimButton'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BannerContainer } from '../BannerContainer'\nimport { useBannerContext } from '../BannerContext'\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nconst toAlign = {\n sm: 'flex-start',\n md: 'center'\n}\n\nconst toWrap = {\n sm: 'wrap',\n md: 'nowrap'\n}\n\nconst StyledBannerSlimContainer = styled(BannerContainer, {\n p: '$4',\n variants: {\n sizeWorkaround: {\n sm: {},\n md: {\n px: '$24'\n }\n }\n }\n})\n\ntype TBannerSlimContainerProps = Omit<\n React.ComponentProps<typeof StyledBannerSlimContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerSlimContainer = (\n props: TBannerSlimContainerProps\n): JSX.Element => {\n const { size } = useBannerContext()\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n const align = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toAlign[s]),\n [size]\n )\n\n const wrap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toWrap[s]),\n [size]\n )\n\n return (\n <StyledBannerSlimContainer\n direction={direction}\n align={align}\n sizeWorkaround={size}\n gap={4}\n wrap={wrap}\n {...props}\n />\n )\n}\n\nBannerSlimContainer.displayName = 'BannerSlimContainer'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\n\nconst StyledBannerSlimContent = styled(Flex, {\n width: '100%'\n})\n\nexport const BannerSlimContent = (\n props: React.ComponentProps<typeof StyledBannerSlimContent>\n) => <StyledBannerSlimContent align=\"center\" gap={4} {...props} />\n\nBannerSlimContent.displayName = 'BannerSlimContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledDismiss = styled(ActionIcon, {\n variants: {\n emphasis: {\n bold: {\n color: 'white !important'\n }\n },\n containerSize: {\n sm: { position: 'absolute', top: '$4', right: '$4' },\n md: { position: 'static' }\n }\n }\n})\n\ntype TBannerSlimDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerSlimDismiss = ({\n label = 'dismiss',\n ...rest\n}: TBannerSlimDismissProps): JSX.Element => {\n const { size, setHasDismiss, emphasis } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size=\"md\"\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n containerSize={size}\n emphasis={emphasis as TBannerSlimDismissProps['emphasis']}\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerSlimDismiss.displayName = 'BannerSlimDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n overflow: 'hidden',\n borderRadius: '$round',\n alignSelf: 'flex-start',\n flexShrink: 0,\n variants: {\n size: {\n sm: {\n size: '$4'\n },\n md: {\n size: '$5'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n maxWidth: 'auto',\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerSlimImage = (props: React.ComponentProps<typeof Image>) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerSlimImage.displayName = 'BannerSlimImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerSlimText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size=\"md\"\n weight=\"bold\"\n containerSize={size}\n hasDismiss={hasDismiss}\n noCapsize\n {...props}\n />\n )\n}\n\nBannerSlimText.displayName = 'BannerSlimText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerContainer } from '../BannerContainer'\nimport { BannerSlimActions } from './BannerSlimActions'\nimport { BannerSlimButton } from './BannerSlimButton'\nimport { BannerSlimContainer } from './BannerSlimContainer'\nimport { BannerSlimContent } from './BannerSlimContent'\nimport { BannerSlimDismiss } from './BannerSlimDismiss'\nimport { BannerSlimImage } from './BannerSlimImage'\nimport { BannerSlimText } from './BannerSlimText'\n\nconst BannerSlimComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof Banner> &\n React.ComponentProps<typeof BannerContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerSlimContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerSlim = Object.assign(BannerSlimComponent, {\n Content: BannerSlimContent,\n Text: BannerSlimText,\n Image: BannerSlimImage,\n Button: BannerSlimButton,\n Dismiss: BannerSlimDismiss,\n Actions: BannerSlimActions\n})\n\nBannerSlimComponent.displayName = 'BannerSlim'\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport {\n ButtonBack as BaseButtonBack,\n ButtonNext as BaseButtonNext\n} from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { CSS, styled } from '~/stitches'\n\nconst buttonStyles = {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n size: '$5',\n top: '50%',\n transform: 'translateY(-50%)',\n transition: 'color 0.15s ease-in-out',\n '&:hover': {\n color: '$primary900'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&:disabled': {\n color: '$grey200'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious = (props: { css: CSS }) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext = (props: { css: CSS }) => (\n <StyledButtonNext {...props}>\n <Icon is={ChevronRight} />\n </StyledButtonNext>\n)\n","import { DotGroup } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselPagination = styled(DotGroup, {\n justifyContent: 'center',\n '& button': {\n bg: '$grey600',\n border: 'none',\n borderRadius: '50%',\n cursor: 'pointer',\n mx: '$1',\n p: '$1',\n size: '$space$3',\n transition: 'all 100ms ease-in',\n '&[class*=\"selected\"]': {\n bg: '$primary800'\n },\n '&:hover, &:focus': {\n bg: '$primary900'\n }\n }\n})\n","import { Slide as BaseSlide } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nconst StyledSlide = styled(BaseSlide, {})\n\nexport const CarouselSlide = ({\n children,\n ...remainingProps\n}: React.ComponentProps<typeof StyledSlide> & { index: number }) => (\n <StyledSlide {...remainingProps} tag=\"div\">\n {/* padding to create the gap between slides */}\n <Box css={{ px: '$3' }}>{children}</Box>\n </StyledSlide>\n)\n","import { Slider as BaseSlider } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselSlider = styled(BaseSlider, {\n cursor: 'grab',\n ml: '50%',\n overflow: 'hidden',\n transform: 'translateX(-50%)',\n '& [class*=\"sliderTray_\"]': {\n p: 'unset',\n m: 'unset',\n transition: 'transform .5s cubic-bezier(.645,.045,.355,1)'\n },\n '& [class*=\"slide_\"]': {\n float: 'left',\n pb: '0 !important'\n },\n '& [class*=\"slideInner\"]': {\n display: 'flex',\n justifyContent: 'center'\n },\n variants: {\n overflow: {\n true: {\n overflow: 'visible'\n }\n }\n }\n})\n","import { CarouselContext, CarouselProvider } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { CSSWrapper } from '~/utilities'\n\nimport { CarouselArrowNext, CarouselArrowPrevious } from './CarouselArrows'\nimport { CarouselPagination } from './CarouselPagination'\nimport { CarouselSlide } from './CarouselSlide'\nimport { CarouselSlider } from './CarouselSlider'\n\ntype CarouselProps = {\n slideHeight: number\n slideWidth: number\n numSlides: number\n}\n\nexport const CarouselComponent = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}: CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>) => (\n <CSSWrapper css={css}>\n <CarouselProvider\n naturalSlideWidth={slideWidth}\n naturalSlideHeight={slideHeight}\n totalSlides={numSlides}\n {...props}\n >\n {children}\n </CarouselProvider>\n </CSSWrapper>\n)\n\n/**\n * Documentation about the hook usage\n * https://github.com/express-labs/pure-react-carousel#hooks-and-usecontext\n */\nexport const useCarousel = () => React.useContext(CarouselContext)\n\nexport const Carousel = Object.assign(CarouselComponent, {\n ArrowNext: CarouselArrowNext,\n ArrowPrevious: CarouselArrowPrevious,\n Pagination: CarouselPagination,\n Slide: CarouselSlide,\n Slider: CarouselSlider\n})\n\nCarouselComponent.displayName = 'Carousel'\n","import { Minus, Ok } from '@atom-learning/icons'\nimport * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\n\nconst StyledIndicator = styled(RadixCheckbox.Indicator, {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n})\n\nconst StyledCheckbox = styled(RadixCheckbox.Root, {\n appearance: 'none',\n position: 'relative',\n backgroundColor: 'transparent',\n border: '1px solid $colors$grey800',\n borderRadius: '3px',\n color: 'white',\n cursor: 'pointer',\n size: '$1',\n p: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 50ms ease-out',\n flexShrink: 0,\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[disabled]': disabledStyle,\n variants: {\n state: {\n error: {\n borderColor: '$danger'\n }\n },\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n }\n})\n\nconst toIconSize = {\n md: 'sm',\n lg: 'md'\n}\n\nexport const Checkbox: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledCheckbox>\n> = React.forwardRef(({ size = 'md', checked, ...rest }, ref) => {\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return (\n <StyledCheckbox ref={ref} checked={checked} size={size} {...rest}>\n <StyledIndicator asChild>\n <Icon\n is={checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3'\n }}\n size={iconSize}\n />\n </StyledIndicator>\n </StyledCheckbox>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupMountedContextValue = {\n mounted: CheckboxGroupItemValue[]\n handleItemMountedChange: (\n newItemMounted: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\nexport const CheckboxGroupMountedContext =\n React.createContext<CheckboxGroupMountedContextValue>({\n mounted: [],\n handleItemMountedChange: () => null\n })\n\nexport const CheckboxGroupMountedProvider = (props) => {\n const { handleItemMountedChange: handleItemMountedChangeFurtherUpContext } =\n React.useContext(CheckboxGroupMountedContext)\n\n const [mounted, setMounted] = React.useState<CheckboxGroupItemValue[]>([])\n const handleItemMountedChange = React.useCallback(\n (newItemMounted, itemValue) => {\n handleItemMountedChangeFurtherUpContext?.(newItemMounted, itemValue)\n setMounted((prevMounted) => {\n const newMountedSet = new Set(prevMounted)\n newItemMounted\n ? newMountedSet.add(itemValue)\n : newMountedSet.delete(itemValue)\n const newMounted = Array.from(newMountedSet)\n return newMounted\n })\n },\n [handleItemMountedChangeFurtherUpContext]\n )\n\n const value = React.useMemo<CheckboxGroupMountedContextValue>(\n () => ({ mounted, handleItemMountedChange }),\n [mounted, handleItemMountedChange]\n )\n\n return <CheckboxGroupMountedContext.Provider value={value} {...props} />\n}\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupCheckedContextValue = {\n checked: CheckboxGroupItemValue[]\n handleItemCheckedChange: (\n newItemChecked: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\ntype CheckboxGroupCheckedContextProps = {\n checked?: CheckboxGroupCheckedContextValue['checked']\n defaultChecked?: CheckboxGroupCheckedContextValue['checked']\n onCheckedChange?: (\n checked: CheckboxGroupCheckedContextValue['checked']\n ) => void\n}\n\nexport const CheckboxGroupCheckedContext =\n React.createContext<CheckboxGroupCheckedContextValue>({\n checked: [],\n handleItemCheckedChange: () => null\n })\n\nconst generateNewCheckedFn = (\n currentChecked: CheckboxGroupCheckedContextValue['checked']\n) => {\n return (newItemChecked, itemValue) => {\n const newCheckedSet = new Set(currentChecked)\n newItemChecked\n ? newCheckedSet.add(itemValue)\n : newCheckedSet.delete(itemValue)\n const newChecked = Array.from(newCheckedSet)\n return newChecked\n }\n}\n\nexport const CheckboxGroupCheckedProvider = ({\n checked: controlledChecked,\n defaultChecked = [],\n onCheckedChange,\n ...rest\n}: React.PropsWithChildren<CheckboxGroupCheckedContextProps>) => {\n const [checked, setChecked] = React.useState(defaultChecked)\n\n const handleItemControlledCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n if (!controlledChecked) return () => null\n const newCheckedFn = generateNewCheckedFn(controlledChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n },\n [onCheckedChange, controlledChecked]\n )\n\n const handleItemCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n setChecked((prevChecked) => {\n const newCheckedFn = generateNewCheckedFn(prevChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n return newChecked\n })\n },\n [onCheckedChange]\n )\n\n const value = React.useMemo<CheckboxGroupCheckedContextValue>(() => {\n const isControlled = Array.isArray(controlledChecked)\n return {\n checked: isControlled\n ? (controlledChecked as CheckboxGroupCheckedContextValue['checked']) // We're literally JUST checking it above but TS still flags it, wrongly, so casting\n : checked,\n handleItemCheckedChange: isControlled\n ? handleItemControlledCheckedChange\n : handleItemCheckedChange\n }\n }, [\n checked,\n handleItemCheckedChange,\n handleItemControlledCheckedChange,\n controlledChecked\n ])\n\n return <CheckboxGroupCheckedContext.Provider value={value} {...rest} />\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupAllItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'checked' | 'defaultChecked'\n>\n\nexport const CheckboxGroupAllItem = ({\n onCheckedChange,\n title = 'all',\n ...rest\n}: CheckboxGroupAllItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { mounted: mountedItems } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n mountedItems.forEach((value) => {\n handleItemCheckedChangeContext(newChecked, value)\n })\n onCheckedChange?.(newChecked)\n }\n\n const isAllChecked = (() => {\n if (!checkedItems.length || !mountedItems.length) return false\n\n if (mountedItems.every((mountedItem) => checkedItems.includes(mountedItem)))\n return true\n\n if (mountedItems.some((mountedItem) => checkedItems.includes(mountedItem)))\n return 'indeterminate'\n\n return false\n })()\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={isAllChecked}\n title={title}\n {...rest}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'onCheckedChange' | 'checked' | 'defaultChecked'\n> & {\n onCheckedChange?: (newChecked: boolean) => void\n}\n\nexport const CheckboxGroupItem = ({\n value,\n title,\n onCheckedChange,\n ...rest\n}: CheckboxGroupItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { handleItemMountedChange } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n handleItemCheckedChangeContext(newChecked, value)\n onCheckedChange?.(newChecked)\n }\n\n React.useEffect(() => {\n handleItemMountedChange(true, value)\n return () => {\n handleItemMountedChange(false, value)\n }\n }, [handleItemMountedChange, value])\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={checkedItems.includes(value)}\n title={title ?? String(value)}\n {...rest}\n />\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { CheckboxGroupMountedProvider } from './CheckboxGroup.context'\n\ntype CheckboxGroupSubProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n}\nconst StyledSlot = styled(Slot)\n\nexport const CheckboxGroupSub = ({\n asChild = false,\n ...rest\n}: CheckboxGroupSubProps): JSX.Element => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport {\n CheckboxGroupCheckedProvider,\n CheckboxGroupMountedProvider\n} from './CheckboxGroup.context'\nimport type { CheckboxGroupItemValue } from './CheckboxGroup.types'\nimport { CheckboxGroupAllItem } from './CheckboxGroupAllItem'\nimport { CheckboxGroupItem } from './CheckboxGroupItem'\nimport { CheckboxGroupSub } from './CheckboxGroupSub'\n\ntype CheckboxGroupRootProps = Omit<\n React.ComponentProps<typeof Box>,\n 'defaultChecked'\n> & {\n checked?: CheckboxGroupItemValue[]\n onCheckedChange?: (checked: CheckboxGroupItemValue[]) => void\n defaultChecked?: CheckboxGroupItemValue[]\n asChild?: boolean\n}\n\nconst StyledSlot = styled(Slot)\n\nconst CheckboxGroupRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n asChild = false,\n ...rest\n}: CheckboxGroupRootProps) => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupCheckedProvider\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n >\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n </CheckboxGroupCheckedProvider>\n )\n}\n\nexport const CheckboxGroup = Object.assign(CheckboxGroupRoot, {\n Item: CheckboxGroupItem,\n AllItem: CheckboxGroupAllItem,\n Sub: CheckboxGroupSub\n})\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\ntype TreeListItemProps = React.ComponentProps<typeof Flex>\n\nconst StyledTreeListItem = styled(Flex, {\n '&:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const TreeListItem = React.forwardRef(\n (\n props: TreeListItemProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <StyledTreeListItem\n as=\"li\"\n gap={2}\n align=\"center\"\n {...props}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"li\"`\n ref={ref}\n role=\"treeitem\"\n />\n )\n }\n)\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeCollapsibleContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const TreeCollapsibleContext =\n React.createContext<TreeCollapsibleContextValue>({})\nconst TreeCollapsibleProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <TreeCollapsibleContext.Provider value={{ triggerRef, setTriggerRef }}>\n {children}\n </TreeCollapsibleContext.Provider>\n )\n}\n\nconst StyledCollapsibleTreeItemRoot = styled(Root, {\n width: '100%'\n})\n\ntype TreeCollapsibleProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof StyledCollapsibleTreeItemRoot>\nexport const TreeCollapsible = React.forwardRef(\n (\n props: TreeCollapsibleProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <TreeListItem ref={ref}>\n <TreeCollapsibleProvider>\n <StyledCollapsibleTreeItemRoot {...props} />\n </TreeCollapsibleProvider>\n </TreeListItem>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(Flex, {\n width: '100%',\n p: 0,\n m: 0,\n listStyle: 'none',\n '& &': {\n pl: '$space$4'\n }\n})\n\ntype TreeListProps = Omit<React.ComponentProps<typeof Flex>, 'direction'>\n\nexport const TreeList: React.ForwardRefExoticComponent<TreeListProps> =\n React.forwardRef((props, ref) => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"ul\"`\n <StyledList as=\"ul\" ref={ref} {...props} direction=\"column\" />\n ))\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeList } from './TreeList'\n\nconst StyledTreeCollapsibleContent = styled(Content, {\n '&[data-state=\"open\"]': {},\n '&[data-state=\"closed\"]': {\n display: 'none'\n }\n})\n\ntype TreeCollapsibleContentProps = React.ComponentProps<\n typeof StyledTreeCollapsibleContent\n> &\n React.ComponentProps<typeof TreeList>\n\nexport const TreeCollapsibleContent: React.ForwardRefExoticComponent<TreeCollapsibleContentProps> =\n React.forwardRef(({ children, ...rest }, ref): JSX.Element => {\n const { triggerRef } = React.useContext(TreeCollapsibleContext)\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledTreeCollapsibleContent\n onKeyDown={handleOnKeydown}\n {...rest}\n asChild\n >\n <TreeList ref={ref} role=\"group\">\n {children}\n </TreeList>\n </StyledTreeCollapsibleContent>\n )\n })\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledTreeIcon = styled(Icon, {\n flexShrink: 0,\n alignSelf: 'start',\n my: '$1'\n})\nexport const TreeIcon = (\n props: React.ComponentProps<typeof StyledTreeIcon>\n): JSX.Element => <StyledTreeIcon size=\"md\" {...props} />\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\ntype TStyledTreeTextProps = React.ComponentProps<typeof Text>\n\nconst StyledTreeText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n py: '$0',\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n})\n\nexport const TreeText = (props: TStyledTreeTextProps): JSX.Element => {\n return <StyledTreeText size=\"md\" as=\"span\" {...props} noCapsize />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeIcon } from './TreeIcon'\nimport { TreeText } from './TreeText'\n\nconst StyledItemContent = styled(Flex, {\n width: '100%',\n position: 'relative',\n minHeight: '$3',\n pl: '$6'\n})\n\ntype TreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const TreeItemContent = React.forwardRef(\n (\n { children, ...rest }: TreeItemContentProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ): JSX.Element => {\n return (\n <StyledItemContent gap={2} align=\"center\" ref={ref} {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <TreeText>{child}</TreeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <TreeIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n }\n)\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon, StyledIcon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeItemContent } from './TreeItemContent'\n\nconst StyledTreeCollapsibleTrigger = styled(TreeItemContent, {\n cursor: 'pointer'\n})\n\nconst StyledActionIcon = styled(ActionIcon, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none',\n [`${StyledIcon}`]: {\n transition: 'transform 300ms'\n },\n [`&[data-state=\"closed\"] > ${StyledIcon}`]: {\n transform: 'rotate(-90deg)'\n },\n [`&[data-state=\"open\"] > ${StyledIcon}`]: {\n transform: 'rotate(0deg)'\n }\n})\n\ntype TNavigationMenuCollapsibleTriggerProps = React.ComponentProps<\n typeof TreeItemContent\n> & {\n label: string\n}\n\nexport const TreeCollapsibleTrigger = ({\n children,\n label,\n ...rest\n}: TNavigationMenuCollapsibleTriggerProps) => {\n const { setTriggerRef, triggerRef } = React.useContext(TreeCollapsibleContext)\n\n return (\n <StyledTreeCollapsibleTrigger\n {...rest}\n onClick={(event) => {\n rest.onClick?.(event)\n triggerRef?.current?.click()\n }}\n >\n <Trigger asChild>\n <StyledActionIcon\n size=\"sm\"\n ref={setTriggerRef}\n label={label}\n theme=\"neutral\"\n hasTooltip={false}\n onClick={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon is={ChevronDown} />\n </StyledActionIcon>\n </Trigger>\n {children}\n </StyledTreeCollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { TreeItemContent } from './TreeItemContent'\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeItemProps = React.ComponentProps<typeof TreeItemContent>\n\nexport const TreeItem = ({ children, ...rest }: TreeItemProps): JSX.Element => {\n return (\n <TreeListItem>\n <TreeItemContent {...rest}>{children}</TreeItemContent>\n </TreeListItem>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsible } from './TreeCollapsible'\nimport { TreeCollapsibleContent } from './TreeCollapsibleContent'\nimport { TreeCollapsibleTrigger } from './TreeCollapsibleTrigger'\nimport { TreeIcon } from './TreeIcon'\nimport { TreeItem } from './TreeItem'\nimport { TreeList } from './TreeList'\nimport { TreeText } from './TreeText'\n\nconst StyledRoot = styled(TreeList, {})\n\ntype TreeProps = React.ComponentProps<typeof StyledRoot>\n\nexport const TreeRoot: React.ForwardRefExoticComponent<TreeProps> =\n React.forwardRef(({ children, ...rest }, ref) => {\n return (\n <StyledRoot {...rest} ref={ref} role=\"tree\">\n {children}\n </StyledRoot>\n )\n })\n\nexport const Tree = Object.assign(TreeRoot, {\n Collapsible: TreeCollapsible,\n CollapsibleContent: TreeCollapsibleContent,\n CollapsibleTrigger: TreeCollapsibleTrigger,\n Item: TreeItem,\n Icon: TreeIcon,\n Text: TreeText\n})\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleProps = Omit<\n React.ComponentProps<typeof Tree.Collapsible> &\n React.ComponentProps<typeof CheckboxGroup.Sub>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsible = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.Collapsible {...rest}>{children}</Tree.Collapsible>\n </CheckboxGroup.Sub>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleContentProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleContent>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleContent = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleContentProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.CollapsibleContent {...rest} forceMount>\n {children}\n </Tree.CollapsibleContent>\n </CheckboxGroup.Sub>\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Tree } from '~/components/tree'\nimport { styled } from '~/stitches'\n\nconst StyledItemContent = styled(Flex, {\n maxWidth: '100%'\n})\n\ntype CheckboxTreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const CheckboxTreeItemContent = ({\n children,\n ...rest\n}: CheckboxTreeItemContentProps): JSX.Element => {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"label\"`\n <StyledItemContent gap={2} align=\"center\" as=\"label\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Tree.Text>{child}</Tree.Text>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <Tree.Icon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxGroupCollapsibleTriggerProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleTrigger> &\n React.ComponentProps<typeof CheckboxGroup.AllItem>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleTrigger = ({\n onCheckedChange,\n title,\n label,\n children,\n disabled,\n ...rest\n}: CheckboxGroupCollapsibleTriggerProps): JSX.Element => {\n const treeCollapsibleTriggerProps = { label }\n const checkboxAllItemProps = { onCheckedChange, title, disabled }\n return (\n <Tree.CollapsibleTrigger {...treeCollapsibleTriggerProps} {...rest}>\n <CheckboxTreeItemContent\n onClick={\n // Don't propagate click and don't open/close the collapsible when the label/checkbox are clicked\n (e) => e.stopPropagation()\n }\n >\n <CheckboxGroup.AllItem {...checkboxAllItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.CollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxTreeItemProps = Omit<\n React.ComponentProps<typeof Tree.Item> &\n React.ComponentProps<typeof CheckboxGroup.Item>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeItem = ({\n value,\n title,\n onCheckedChange,\n children,\n disabled,\n ...rest\n}: CheckboxTreeItemProps): JSX.Element => {\n const checkboxItemProps = { value, title, onCheckedChange, disabled }\n return (\n <Tree.Item {...rest}>\n <CheckboxTreeItemContent>\n <CheckboxGroup.Item {...checkboxItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.Item>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeCollapsible } from './CheckboxTreeCollapsible'\nimport { CheckboxTreeCollapsibleContent } from './CheckboxTreeCollapsibleContent'\nimport { CheckboxTreeCollapsibleTrigger } from './CheckboxTreeCollapsibleTrigger'\nimport { CheckboxTreeItem } from './CheckboxTreeItem'\n\ntype CheckboxTreeRootProps = Omit<\n React.ComponentProps<typeof CheckboxGroup> &\n React.ComponentProps<typeof Tree>,\n 'asChild'\n>\n\nexport const CheckboxTreeRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n ...rest\n}: CheckboxTreeRootProps) => {\n const checkboxGroupProps = { checked, defaultChecked, onCheckedChange }\n return (\n <CheckboxGroup {...checkboxGroupProps} asChild>\n <Tree {...rest} />\n </CheckboxGroup>\n )\n}\n\nexport const CheckboxTree = Object.assign(CheckboxTreeRoot, {\n Collapsible: CheckboxTreeCollapsible,\n CollapsibleContent: CheckboxTreeCollapsibleContent,\n CollapsibleTrigger: CheckboxTreeCollapsibleTrigger,\n Item: CheckboxTreeItem\n})\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nexport const INLINE_MESSAGE_THEMES: Record<InlineMessageTheme, CSS> = {\n success: { color: '$success' },\n warning: { color: '$warningText', '& svg': { color: '$warningDark' } },\n info: { color: '$info' },\n neutral: { color: '$grey800' },\n error: { color: '$danger' }\n}\n\nexport const INLINE_MESSAGE_ICONS: Record<\n InlineMessageTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n success: OkCircle,\n warning: Danger,\n info: Info,\n neutral: Info,\n error: Error\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport {\n INLINE_MESSAGE_ICONS,\n INLINE_MESSAGE_THEMES\n} from './InlineMessage.config'\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nconst InlineMessageContainer = styled(Flex, {\n variants: {\n theme: INLINE_MESSAGE_THEMES\n }\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}: TInlineMessageProps) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <Icon\n css={{ mr: '$2' }}\n size=\"sm\"\n is={INLINE_MESSAGE_ICONS[theme as InlineMessageTheme]}\n />\n )}\n <Text as=\"span\" size={size} css={{ transform: 'translateY($space$0)' }}>\n {children}\n </Text>\n </InlineMessageContainer>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities/types'\n\nimport { getTextVariant } from '../text'\n\nconst StyledLabel = styled('label', {\n color: '$grey900',\n fontFamily: '$body',\n m: 0,\n variants: {\n size: {\n sm: getTextVariant({ size: 'sm' }),\n md: getTextVariant({ size: 'md' })\n },\n type: {\n block: {\n display: 'block',\n fontWeight: 600\n },\n inline: {\n display: 'flex',\n fontWeight: 400,\n maxWidth: 'max-content'\n }\n },\n align: { start: {}, center: {} },\n direction: { reverse: {}, row: {} },\n appearance: { standard: {}, modern: {} }\n },\n compoundVariants: [\n {\n type: 'inline',\n align: 'start',\n css: { alignItems: 'flex-start' }\n },\n {\n type: 'inline',\n align: 'center',\n css: { alignItems: 'center' }\n },\n {\n type: 'inline',\n direction: 'reverse',\n css: { flexDirection: 'row-reverse' }\n },\n {\n type: 'inline',\n direction: 'row',\n css: { flexDirection: 'row' }\n },\n {\n type: 'block',\n appearance: 'modern',\n css: { fontWeight: 400 }\n }\n ]\n})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\nexport type LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}: LabelProps) => (\n <StyledLabel\n as={as}\n size={size}\n type={type}\n align={align}\n direction={direction}\n {...rest}\n >\n {children}\n {required && <StyledAsterisk aria-hidden>*</StyledAsterisk>}\n </StyledLabel>\n)\n\nLabel.displayName = 'Label'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { textVariants } from '../text'\n\nexport const StyledLi = styled('li', {})\n\nexport const StyledList = styled('ul', {\n listStylePosition: 'inside',\n fontFamily: '$body',\n m: 'unset',\n p: 'unset',\n [`& > ${StyledLi}`]: {\n '&:not(:last-child)': { mb: '$2' },\n '&:last-child': { mb: 0 }\n },\n variants: {\n ...textVariants,\n as: {\n ol: {\n pl: '$4',\n listStyleType: 'decimal',\n [`& > ${StyledLi}`]: {\n pl: '$1',\n '&::marker': { fontSize: '.875em', fontWeight: 'bold' }\n }\n },\n ul: {\n pl: '$3',\n [`& > ${StyledLi}`]: {\n pl: '$2',\n '&::marker': { content: '• ', fontWeight: 'bold' }\n }\n }\n },\n theme: {\n primary: {\n [`& > ${StyledLi}`]: {\n '&::marker': { color: '$primary800' }\n }\n }\n }\n }\n})\n\ntype ListProps = React.ComponentProps<typeof StyledList> & {\n ordered?: boolean\n}\n\ntype ListType = React.ForwardRefExoticComponent<ListProps> & {\n Item: typeof StyledLi\n}\n\nexport const List = React.forwardRef(\n ({ size = 'md', noCapsize = true, ordered, ...remainingProps }, ref) => (\n <StyledList\n ref={ref}\n as={ordered ? 'ol' : 'ul'}\n size={size}\n noCapsize={noCapsize}\n {...remainingProps}\n />\n )\n) as ListType\n\nList.Item = StyledLi\n","import type { Code } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownCodeProps = {\n node: Code\n}\n\nconst StyledMarkdownCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$1',\n color: '$grey1000',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode = ({ node }: MarkdownCodeProps) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import type { Content, Emphasis } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownEmphasisProps = {\n node: Emphasis\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const StyledMarkdownEmphasis = styled('em', { fontStyle: 'italic' })\n\nexport const MarkdownEmphasis = ({\n node,\n handleNode\n}: MarkdownEmphasisProps) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import type { Content, Heading as HeadingType } from 'mdast'\nimport * as React from 'react'\n\nimport { Heading, HeadingProps } from '../../heading/Heading'\n\ntype MarkdownHeadingProps = {\n node: HeadingType\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst getHeadingProps = (depth: number): HeadingProps => {\n switch (depth) {\n case 1:\n return { size: 'xl', as: 'h1' }\n case 2:\n return { size: 'lg', as: 'h2' }\n case 3:\n return { size: 'md', as: 'h3' }\n case 4:\n return { size: 'sm', as: 'h4' }\n case 5:\n return { size: 'xs', as: 'h5' }\n default:\n return { size: 'xs', as: 'h6' }\n }\n}\n\nexport const MarkdownHeading = ({\n node,\n handleNode,\n ...rest\n}: MarkdownHeadingProps) => {\n const { as, size } = getHeadingProps(node.depth)\n\n return (\n <Heading as={as} size={size} {...rest}>\n {node.children?.map(handleNode)}\n </Heading>\n )\n}\n","import type { InlineCode } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownInlineCodeProps = {\n node: InlineCode\n}\n\nconst StyledMarkdownInlineCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$0',\n color: '$grey1000',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode = ({ node }: MarkdownInlineCodeProps) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n css?: CSS\n}\n\nexport const MarkdownImage = ({ node, css }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { List } from '../../list'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n css?: CSS\n}\n\nexport const MarkdownList = ({ node, handleNode, css }: MarkdownListProps) => (\n <List\n css={\n {\n '& p': { display: 'inline' },\n '& p:before, & p:after': { display: 'none' },\n ...css\n } as CSS\n }\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import type { Content, ListItem } from 'mdast'\nimport * as React from 'react'\n\nimport { List } from '../../list'\n\ntype MarkdownListItemProps = {\n node: ListItem\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownListItem = ({\n node,\n handleNode\n}: MarkdownListItemProps) => (\n <List.Item>{node.children?.map(handleNode)}</List.Item>\n)\n","import type { Content, Paragraph } from 'mdast'\nimport * as React from 'react'\n\nimport { Text } from '../../text'\n\ntype MarkdownParagraphProps = {\n node: Paragraph\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownParagraph = ({\n node,\n handleNode,\n ...rest\n}: MarkdownParagraphProps) => (\n <Text {...rest}>{node.children?.map(handleNode)}</Text>\n)\n","import type { Content, Strong } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownStrongProps = {\n node: Strong\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst StyledMarkdownStrong = styled('strong', { fontWeight: 600 })\n\nexport const MarkdownStrong = ({ node, handleNode }: MarkdownStrongProps) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import type { Text as TextType } from 'mdast'\nimport * as React from 'react'\n\ntype MarkdownTextProps = {\n node: TextType\n}\n\nexport const MarkdownText = ({ node }: MarkdownTextProps): React.ReactNode =>\n node.value\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledDivider = styled('hr', {\n border: 0,\n bg: '$grey200',\n variants: {\n orientation: {\n horizontal: { height: 1, width: '100%' },\n vertical: { height: '100%', width: 1, minHeight: '$3' }\n }\n }\n})\n\nexport const Divider: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledDivider>\n> = React.forwardRef(({ orientation = 'horizontal', ...rest }, ref) => {\n return <StyledDivider ref={ref} orientation={orientation} {...rest} />\n})\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Divider } from '../../divider'\n\ntype MarkdownThematicBreakProps = {\n css?: CSS\n}\n\nexport const MarkdownThematicBreak = ({ css }: MarkdownThematicBreakProps) => (\n <Divider css={{ width: '100%', ...css }} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { disabledStyle, Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledLi } from '../list/List'\nimport { StyledMarkdownEmphasis } from '../markdown-content/components'\nimport { StyledText, textVariants } from '../text/Text'\n\nexport const StyledLink = styled('a', {\n bg: 'unset',\n border: 'unset',\n p: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primary900',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&[disabled]': {\n ...disabledStyle,\n pointerEvents: 'none'\n },\n\n [`${StyledText} > &, ${StyledHeading} > &, ${StyledLi} > &, ${StyledMarkdownEmphasis} > &`]:\n {\n fontSize: '100%',\n lineHeight: 1,\n '&::before, &::after': {\n content: 'none'\n }\n },\n variants: textVariants,\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions & { disabled?: boolean }\n>\n\nexport const Link: React.ForwardRefExoticComponent<LinkProps> =\n React.forwardRef(({ as, disabled, href, ...rest }, ref) => (\n <StyledLink\n as={as || (!href ? 'button' : undefined)}\n noCapsize={!href ? true : undefined}\n href={href}\n {...(disabled && { disabled: true })}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n />\n ))\n\nLink.displayName = 'Link'\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\n\ntype DescriptionProps = {\n css?: CSS\n}\n\nexport const Description = ({\n children,\n css\n}: React.PropsWithChildren<DescriptionProps>) => (\n <Text size=\"sm\" css={{ color: '$grey700', maxWidth: '80ch', ...css }}>\n {children}\n </Text>\n)\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { ValidationOptions } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { Link } from '~/components/link'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\nimport { type LabelProps } from '../label/Label'\n\nexport type FieldWrapperProps = {\n css?: CSS\n error?: string\n fieldId: string\n label: string\n prompt?: { link?: string; label: string; onClick?: () => void }\n description?: string\n required?: boolean\n hideLabel?: boolean\n appearance?: LabelProps['appearance']\n}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel,\n appearance\n}: React.PropsWithChildren<FieldWrapperProps>) => {\n const LabelContainer = hideLabel ? VisuallyHidden.Root : Flex\n\n return (\n <Box css={css}>\n <LabelContainer\n css={{\n justifyContent: 'space-between',\n alignItems: 'center',\n mb: '$3'\n }}\n >\n <Label htmlFor={fieldId} required={required} appearance={appearance}>\n {label}\n </Label>\n {prompt && (\n <Link href={prompt?.link} onClick={prompt?.onClick} size=\"sm\">\n {prompt.label}\n </Link>\n )}\n </LabelContainer>\n {description && (\n <Description css={{ mb: '$3' }}>{description}</Description>\n )}\n {children}\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Box>\n )\n}\n\nFieldWrapper.displayName = 'FieldWrapper'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledRadioButton = styled(RadioGroup.Item, {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '$round',\n color: 'white',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 0,\n size: '$1',\n variants: {\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n },\n transition: 'all 50ms ease-out',\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n borderColor: '$grey800',\n color: '$grey800',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledIndicator = styled(RadioGroup.Indicator, {\n size: '6px',\n borderRadius: '$round',\n backgroundColor: 'currentcolor',\n position: 'absolute',\n variants: {\n size: {\n md: {\n size: '6px'\n },\n lg: {\n size: '12px'\n }\n }\n }\n})\n\ntype RadioButtonProps = Override<\n React.ComponentProps<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton = ({ size, ...props }: RadioButtonProps) => {\n return (\n <StyledRadioButton {...props} size={size}>\n <StyledIndicator size={size} />\n </StyledRadioButton>\n )\n}\n\nRadioButton.displayName = 'RadioButton'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\n\nimport { styled } from '~/stitches'\n\nexport const RadioButtonGroup = styled(RadioGroup.Root, {\n display: 'flex',\n flexWrap: 'wrap',\n variants: {\n direction: {\n row: {\n flexDirection: 'row',\n '& > *:not(:last-child)': { mr: '$5' }\n },\n column: { flexDirection: 'column' }\n }\n }\n})\n\nRadioButtonGroup.displayName = 'RadioButtonGroup'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Checkbox } from '~/components/checkbox'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButton } from '~/components/radio-button'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\n\ntype InlineFieldWrapperProps = {\n css?: CSS\n error?: string\n label: string\n required?: boolean\n align?: 'start' | 'center'\n direction?: 'row' | 'reverse'\n description?: string\n}\n\nexport const InlineFieldWrapper = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}: React.PropsWithChildren<InlineFieldWrapperProps>) => (\n <Box css={css}>\n <Label\n align={align}\n direction={direction}\n required={required}\n type=\"inline\"\n >\n {React.Children.map(children, (child: any) => (\n <Box\n css={{\n [direction === 'reverse' ? 'ml' : 'mr']: '$3',\n // provide offset for specific child components\n ...((child?.type === Checkbox || child?.type === RadioButton) && {\n transform: 'translateY($space$1)'\n })\n }}\n >\n {child}\n </Box>\n ))}\n {label}\n </Label>\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n {description && (\n <Description\n css={{\n mt: '$2',\n // calc required to get correct offset value\n [direction === 'reverse' ? 'mr' : 'ml']: 'calc($space$3 + $sizes$1)'\n }}\n >\n {description}\n </Description>\n )}\n </Box>\n)\n\nInlineFieldWrapper.displayName = 'InlineFieldWrapper'\n","import * as React from 'react'\nimport { InputField } from '../input-field'\n\nexport type FormCustomContextType =\n | {\n appearance?: React.ComponentProps<typeof InputField>['appearance']\n }\n | undefined\n\nexport const FormCustomContext = React.createContext<FormCustomContextType>({\n appearance: 'standard'\n})\n\nexport const useFormCustomContext = () => React.useContext(FormCustomContext)\n","import * as React from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Mode,\n SubmitErrorHandler,\n SubmitHandler,\n UseFormMethods\n} from 'react-hook-form'\nimport { FormProvider, useForm } from 'react-hook-form'\n\nimport { styled } from '~/stitches'\nimport {\n type FormCustomContextType,\n FormCustomContext\n} from './useFormCustomContext'\n\nconst StyledForm = styled('form', {})\n\ntype StyledFormProps = Omit<\n React.ComponentPropsWithoutRef<typeof StyledForm>,\n 'onSubmit' | 'onError'\n>\n\ninterface FormProps<TFormData extends FieldValues> extends StyledFormProps {\n defaultValues?: DefaultValues<TFormData>\n validationMode?: Mode\n onSubmit: SubmitHandler<TFormData>\n onError?: SubmitErrorHandler<TFormData>\n children:\n | React.ReactNode\n | ((methods: UseFormMethods<TFormData>) => React.ReactNode)\n}\n\nexport const Form = <TFormData extends FieldValues>(\n props: FormProps<TFormData> & FormCustomContextType\n) => {\n const {\n children,\n defaultValues,\n validationMode = 'onBlur',\n onSubmit,\n onError,\n appearance,\n ...rest\n } = props\n\n const methods = useForm<TFormData>({\n defaultValues,\n mode: validationMode\n })\n\n return (\n <FormProvider {...methods}>\n <FormCustomContext.Provider value={{ appearance }}>\n <StyledForm\n aria-label=\"form\"\n onSubmit={methods.handleSubmit(onSubmit, onError)}\n {...rest}\n >\n {typeof children === 'function' ? children(methods) : children}\n </StyledForm>\n </FormCustomContext.Provider>\n </FormProvider>\n )\n}\n\nForm.displayName = 'Form'\n","import delve from 'dlv'\nimport { useFormContext } from 'react-hook-form'\n\nexport const useFieldError = (fieldName: string) => {\n const { errors } = useFormContext()\n\n // in case of migration to a newer version of react-hook-form the path needs to updated to account for dynamic fields naming convention\n const fieldPath = fieldName.split(/[,[\\].]+?/).filter(Boolean)\n\n const getErrors = () => delve(errors, fieldPath)\n\n return {\n error: getErrors()?.message\n }\n}\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { Checkbox } from '~/components/checkbox'\nimport {\n FieldElementWrapperProps,\n InlineFieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}: React.ComponentProps<typeof Checkbox> & FieldElementWrapperProps) => {\n const { control } = useFormContext()\n const { error } = useFieldError(name)\n const {\n field: { ref, onChange, value: innerChecked, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue: defaultChecked\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner checked to match what is passed in.\n if (typeof checked !== 'undefined') onChange(checked)\n }, [checked])\n\n return (\n <InlineFieldWrapper\n css={css}\n description={description}\n error={error}\n label={label}\n required={Boolean(validation?.required)}\n >\n <Checkbox\n ref={ref}\n name={innerName}\n {...remainingProps}\n onCheckedChange={(newChecked) => {\n onChange(newChecked)\n onCheckedChange?.(newChecked)\n }}\n value={innerChecked ? CheckboxValue.ON : CheckboxValue.OFF}\n checked={innerChecked}\n {...(error && { state: 'error' })}\n />\n </InlineFieldWrapper>\n )\n}\n\nCheckboxField.displayName = 'CheckboxField'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { getTextVariant } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst overflowElipsis = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}\nexport const StyledChipContent = styled('span', {\n display: 'inline-flex',\n alignItems: 'center',\n px: '$1',\n flexGrow: 1,\n ...overflowElipsis,\n '& > *:not(:last-child)': {\n mr: '$1'\n }\n})\n\nconst toIconSize = { sm: 'sm', md: 'sm', lg: 'md' }\n\nexport const ChipIcon = (props: React.ComponentProps<typeof Icon>) => {\n const rootContext = React.useContext(ChipRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n return <Icon {...props} size={iconSize} />\n}\n\nconst ChipContent = ({ children, ...rest }) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n return (\n <StyledChipContent {...rest}>\n {\n childrenArray.map((child, index) => {\n if (!isSingleChild && typeof child === 'string')\n return (\n <Box as=\"span\" css={overflowElipsis} key={child}>\n {child}\n </Box>\n )\n if (React.isValidElement(child) && child.type === Icon) {\n return <ChipIcon key={`icon-${index}`} {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledChipContent>\n )\n}\n\nexport const StyledRoot = styled(Flex, {\n px: '$2',\n border: '1px solid',\n borderRadius: '$1',\n alignItems: 'center',\n fontFamily: '$body',\n maxWidth: '100%',\n borderColor: '$primary800',\n color: '$primary900',\n bg: '$primary100',\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n sm: {\n height: '$2',\n ...getTextVariant({ size: 'sm' })\n },\n md: {\n height: '$3',\n ...getTextVariant({ size: 'sm' })\n },\n lg: {\n height: '$4',\n ...getTextVariant({ size: 'md' })\n }\n }\n }\n})\n\nexport type TChipRootContext = React.ComponentProps<typeof StyledRoot>\nexport type TChipRootProviderProps = TChipRootContext\n\nexport const ChipRootContext = React.createContext<TChipRootContext>({})\n\nexport const ChipRootProvider = ({\n size,\n children\n}: TChipRootProviderProps) => {\n const value = React.useMemo<TChipRootContext>(() => ({ size }), [size])\n return (\n <ChipRootContext.Provider value={value}>\n {children}\n </ChipRootContext.Provider>\n )\n}\n\nexport type TChipRootProps = TChipRootProviderProps\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\nexport const Chip = Object.assign(ChipRoot, {\n Content: ChipContent,\n Icon: ChipIcon\n})\n\nChipRoot.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Flex> & { as?: any }\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => (\n <Flex direction=\"row\" wrap=\"wrap\" gap={gap} {...rest} ref={ref} />\n))\n","import * as React from 'react'\n\nexport interface IDismissibleGroupContext {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\nexport const DismissibleGroupContext =\n React.createContext<IDismissibleGroupContext>({\n onDismiss: () => null\n })\n\nexport interface IDismissibleGroupProps {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\n\nexport const DismissibleGroupProvider = ({\n children,\n disabled,\n onDismiss\n}: React.PropsWithChildren<IDismissibleGroupProps>) => {\n const value = React.useMemo<IDismissibleGroupContext>(\n () => ({ disabled, onDismiss }),\n [disabled, onDismiss]\n )\n return (\n <DismissibleGroupContext.Provider value={value}>\n {children}\n </DismissibleGroupContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupRootProps extends IDismissibleGroupProps {\n as?: React.ElementType\n}\n\nexport const DismissibleGroupRoot = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<IDismissibleGroupRootProps>) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\n\nDismissibleGroupRoot.displayName = 'DismissibleGroup'\n","import * as React from 'react'\n\nimport { Dismissible } from '~/components/dismissible'\n\nimport { DismissibleGroupContext } from './DismissibleGroupRoot'\n\nexport type TDismissibleGroupItemProps = React.ComponentProps<\n typeof Dismissible\n> & {\n value: React.ReactText\n disabled?: boolean\n}\n\nexport const DismissibleGroupItem = ({\n children,\n value,\n disabled: itemDisabled = false,\n ...rest\n}: React.PropsWithChildren<TDismissibleGroupItemProps>) => {\n const groupContext = React.useContext(DismissibleGroupContext)\n if (groupContext === undefined) {\n throw new Error(\n 'DismissibleGroup.Item can only be used within a DismissibleGroup'\n )\n }\n const { onDismiss, disabled: groupDisabled } = groupContext\n return (\n <Dismissible\n disabled={groupDisabled || itemDisabled}\n {...rest}\n onDismiss={() => onDismiss(value)}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\nexport const DismissibleGroup = Object.assign(DismissibleGroupRoot, {\n Item: DismissibleGroupItem,\n Trigger: DismissibleTrigger\n})\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledChipDismissibleGroupItem = styled(Chip, { px: '$1' })\n\nexport type TChipDismissibleGroupItem = React.ComponentProps<\n typeof DismissibleGroup.Item\n> &\n React.ComponentProps<typeof StyledChipDismissibleGroupItem> & {\n dismissActionLabel: string\n }\n\nexport const ChipDismissibleGroupItem = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}: TChipDismissibleGroupItem) => {\n return (\n <DismissibleGroup.Item asChild {...rest}>\n <StyledChipDismissibleGroupItem size={size}>\n <Chip.Content>{children}</Chip.Content>\n <DismissibleGroup.Trigger asChild>\n <ActionIcon\n label={dismissActionLabel}\n css={{ color: '$grey600' }}\n size={size === 'sm' ? 'xs' : 'sm'}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DismissibleGroup.Trigger>\n </StyledChipDismissibleGroupItem>\n </DismissibleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\n\ntype TChipDismissibleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof DismissibleGroup>\n\nexport const ChipDismissibleGroupRoot: React.ForwardRefExoticComponent<TChipDismissibleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return <ChipGroup as={DismissibleGroup} ref={ref} {...props} />\n })\n","import { ChipDismissibleGroupItem } from './ChipDismissibleGroupItem'\nimport { ChipDismissibleGroupRoot } from './ChipDismissibleGroupRoot'\n\ntype TChipDismissibleGroup = typeof ChipDismissibleGroupRoot & {\n Item: typeof ChipDismissibleGroupItem\n}\n\nexport const ChipDismissibleGroup =\n ChipDismissibleGroupRoot as TChipDismissibleGroup\nChipDismissibleGroup.Item = ChipDismissibleGroupItem\nChipDismissibleGroup.displayName = 'ChipDismissibleGroup'\n","import { Ok } from '@atom-learning/icons'\nimport * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nconst StyledChipToggleIcon = styled(Icon, {\n display: 'none'\n})\n\nconst StyledChipToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$grey200',\n color: '$grey1000',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: 'white',\n color: '$primary1000'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$grey800',\n bg: 'white',\n borderColor: '$grey600'\n },\n '&[data-state=\"on\"]': {\n [`& ${StyledChipToggleIcon}`]: {\n display: 'block'\n }\n }\n})\n\ntype TChipToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledChipToggleGroupItem>\n\nexport const ChipToggleGroupItem = ({\n size = 'md',\n children,\n ...rest\n}: TChipToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem as=\"button\">\n <StyledChipToggleIcon is={Ok} size={size === 'lg' ? 'md' : 'sm'} />\n <Chip.Content>{children}</Chip.Content>\n </StyledChipToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\ntype RootType = {\n disableDeselect?: boolean\n}\n\ntype ToggleGroupRootProps = React.ComponentProps<typeof ToggleGroup.Root> &\n RootType\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<ToggleGroupRootProps> =\n React.forwardRef(\n (\n { disableDeselect = false, onValueChange, defaultValue, ...rest },\n ref\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<ToggleGroupRootProps['value']>(defaultValue)\n const handleValueChange: ToggleGroupRootProps['onValueChange'] = (\n newValue\n ) => {\n if (disableDeselect && (newValue === '' || newValue?.length === 0))\n return\n setInternalValue(newValue)\n onValueChange?.(newValue)\n }\n\n return (\n // eslint-disable-next-line\n // @ts-ignore Radix types complain on properties depending on whether `type=\"single\"` or `\"multiple\"`. Works correctly so muting.\n <ToggleGroup.Root\n ref={ref}\n onValueChange={handleValueChange}\n value={internalValue}\n {...rest}\n />\n )\n }\n )\n","import { ToggleGroupRoot } from './ToggleGroupRoot'\n\nexport const ToggleGroup = {\n Root: ToggleGroupRoot\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot: React.ForwardRefExoticComponent<TChipToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return (\n <ChipGroup\n ref={ref}\n as={ToggleGroup.Root}\n orientation=\"horizontal\"\n {...props}\n />\n )\n })\n","import { ChipToggleGroupItem } from './ChipToggleGroupItem'\nimport { ChipToggleGroupRoot } from './ChipToggleGroupRoot'\n\ntype TChipToggleGroup = typeof ChipToggleGroupRoot & {\n Item: typeof ChipToggleGroupItem\n}\n\nexport const ChipToggleGroup = ChipToggleGroupRoot as TChipToggleGroup\nChipToggleGroup.Item = ChipToggleGroupItem\nChipToggleGroup.displayName = 'ChipToggleGroupItem'\n","import { ComboboxInput as BaseComboboxInput } from '@reach/combobox'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nexport const StyledComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundRepeat: 'no-repeat, repeat',\n backgroundSize: '20px auto, 100%',\n border: '1px solid $grey700',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n height: '$4',\n pl: '$3',\n pr: '$6',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n variants: {\n size: {\n sm: {\n height: '$3',\n fontSize: '$sm',\n lineHeight: 1.7\n },\n md: {\n height: '$4',\n fontSize: '$md',\n lineHeight: 2\n },\n lg: {\n height: '$5',\n fontSize: '$md',\n lineHeight: 2\n }\n },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type ComboboxInputProps = React.ComponentProps<\n typeof StyledComboboxInput\n>\n\nexport const ComboboxInput: React.ForwardRefExoticComponent<ComboboxInputProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => (\n <StyledComboboxInput size={size} {...rest} ref={ref} />\n ))\n","import { ComboboxList as BaseComboboxList } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxList = styled(BaseComboboxList, {\n listStyle: 'none',\n m: 0,\n p: 0,\n userSelect: 'none'\n})\n","import { ComboboxOption as BaseComboboxOption } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxOption = styled(BaseComboboxOption, {\n color: '$grey900',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$grey100',\n borderRadius: '$0'\n },\n '[data-user-value]': {\n color: '$primary800'\n }\n})\n","import { ComboboxPopover as BaseComboboxPopover } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxPopover = styled(BaseComboboxPopover, {\n bg: 'white',\n border: 'solid 1px $grey200',\n borderRadius: '$1',\n boxShadow: '$1',\n boxSizing: 'border-box',\n fontFamily: '$body',\n fontSize: '$md',\n outline: 'none',\n p: '$1',\n transform: 'translateY($space$2)'\n})\n","import { Combobox as BaseCombobox, ComboboxOptionText } from '@reach/combobox'\n\nimport { globalCss, styled } from '~/stitches'\n\nimport { ComboboxInput } from './ComboboxInput'\nimport { ComboboxList } from './ComboboxList'\nimport { ComboboxOption } from './ComboboxOption'\nimport { ComboboxPopover } from './ComboboxPopover'\n\nglobalCss({ ':root': { '--reach-combobox': 1 } })()\n\nexport const Combobox = Object.assign(styled(BaseCombobox, {}), {\n displayName: 'Combobox',\n Option: ComboboxOption,\n Input: ComboboxInput,\n Popover: ComboboxPopover,\n List: ComboboxList,\n OptionText: ComboboxOptionText\n})\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../flex'\nimport { Text } from '../text'\n\nexport const InputBackground = styled(Flex, {\n color: '$grey1000',\n transition: 'background 100ms ease-out, borderColor 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n borderRadius: '$1',\n '&:focus-within': {\n borderColor: '$blue800'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n borderRadius: '$1',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n size: {\n sm: { height: '$3' },\n md: { height: '$4' },\n lg: { height: '$5' },\n xl: { height: '$6' }\n },\n disabled: {\n true: disabledStyle\n },\n state: {\n error: {}\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nInputBackground.displayName = 'InputBackground'\n\nconst StyledInputText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text as unknown as 'input', {\n // unsets\n appearance: 'none',\n border: 'none',\n background: 'none',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n '&:focus': {\n outline: 'none'\n },\n //\n px: '$3',\n size: '100%'\n})\n\nexport type InputTextProps = Omit<\n React.ComponentProps<typeof StyledInputText>,\n 'size' | 'type' | 'as'\n> & {\n size: React.ComponentProps<typeof Text>['size']\n // override default 'type' property to prevent Input from being used to render\n // checkboxes, radios etc — we have dedicated components for them\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n as?: never\n}\n\nconst toTextSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg'\n}\n\nexport const InputText: React.ForwardRefExoticComponent<InputTextProps> =\n React.forwardRef(({ type = 'text', css, size, ...rest }, ref) => {\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n return (\n <StyledInputText\n ref={ref}\n as=\"input\"\n type={type === 'number' ? 'text' : type}\n inputMode={type === 'number' ? 'numeric' : undefined}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n size={textSize}\n {...rest}\n />\n )\n })\n\nInputText.displayName = 'InputText'\n\ntype InputBackgroundProps = React.ComponentProps<typeof InputBackground>\nexport type InputProps = Omit<\n React.ComponentProps<typeof InputText>,\n 'size' | 'state' | 'appearance'\n> & {\n size?: InputBackgroundProps['size']\n state?: InputBackgroundProps['state']\n appearance?: InputBackgroundProps['appearance']\n}\n\nexport const Input: React.ForwardRefExoticComponent<InputProps> =\n React.forwardRef(\n (\n {\n className,\n size = 'md',\n appearance = 'standard',\n state,\n disabled,\n css,\n ...rest\n },\n ref\n ) => {\n return (\n <InputBackground\n size={size}\n appearance={appearance}\n disabled={disabled}\n state={state}\n css={css}\n className={className}\n >\n <InputText size={size} ref={ref} disabled={disabled} {...rest} />\n </InputBackground>\n )\n }\n )\n\nInput.displayName = 'Input'\n","import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport type { InputProps } from '~/components/input'\nimport { Input } from '~/components/input'\nimport type { CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps> =\n React.forwardRef(\n (\n {\n css,\n hidePasswordText = 'Hide password',\n showPasswordText = 'Show password',\n size = 'md',\n ...restProps\n },\n ref\n ) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState<boolean>(false)\n const togglePasswordVisibility = () =>\n setIsPasswordVisible((currentState) => !currentState)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', ...css } as CSS}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n css={{ pr: '$sizes$2' }}\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n css={{\n bottom: size === 'lg' ? '4px' : 0,\n position: 'absolute',\n right: 0\n }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </Box>\n )\n }\n )\n\nPasswordInput.displayName = 'PasswordInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { PasswordInput } from '~/components/password-input'\nimport { CSS } from '~/stitches'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n css = {},\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n ...remainingProps\n}: PasswordFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' } as CSS}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\nimport { throttle } from 'throttle-debounce'\n\nimport type { CSS } from '~/stitches'\nimport { Override } from '~/utilities'\n\nimport { Box } from '../box'\nimport { FieldElementWrapperProps } from '../field-wrapper'\nimport { Flex } from '../flex'\nimport { InlineMessage } from '../inline-message'\nimport { PasswordField } from '../password-field'\nimport { PasswordInput } from '../password-input'\n\ntype ValidationResult = Record<string, boolean>\n\ntype CreatePasswordFieldProps = Override<\n React.ComponentProps<typeof PasswordInput> & FieldElementWrapperProps,\n {\n label?: string\n name?: string\n validate: (\n password: string\n ) => Promise<ValidationResult | undefined> | ValidationResult\n defaultValidation: ValidationResult\n messageDirection?: CSS['flexDirection']\n }\n>\n\nexport const CreatePasswordField = ({\n validate,\n defaultValidation,\n messageDirection = 'row',\n label = 'Create a password',\n name = 'password',\n css,\n validation,\n appearance,\n ...remainingProps\n}: CreatePasswordFieldProps) => {\n const { formState, control } = useFormContext()\n const [isFocused, setIsFocused] = React.useState<boolean>(false)\n const [validationResult, setValidationResult] =\n React.useState<ValidationResult>(defaultValidation)\n\n const touched: boolean = formState.touched[name]\n const error =\n formState.errors[name]?.type === 'validate' ||\n Object.values(validationResult).every((isValid) => !isValid)\n\n const validatePassword = React.useCallback(\n async (password: string) => {\n const result = await validate(password)\n\n if (result) {\n invariant(\n typeof result === 'object',\n 'The validate function must return an object'\n )\n\n setValidationResult(result)\n return Object.values(result).every((isValid) => isValid)\n }\n\n return false\n },\n [setValidationResult]\n )\n\n const handleChange = React.useCallback(throttle(500, validatePassword), [\n validatePassword\n ])\n\n const getMessageTheme = (result: boolean, isFocused: boolean) => {\n if (result) return 'success'\n\n return isFocused ? 'neutral' : 'error'\n }\n\n const showValidation: boolean =\n (control.mode.isOnBlur && (isFocused || touched)) ||\n (control.mode.isOnSubmit && (isFocused || (formState.isSubmitted && error)))\n\n return (\n <Box css={css}>\n <PasswordField\n label={label}\n name={name}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n validation={{ ...validation, validate: validatePassword }}\n appearance={appearance}\n {...remainingProps}\n />\n {showValidation && (\n <Flex\n css={{\n mt: '$2',\n gap: '$2',\n flexWrap: 'wrap',\n flexDirection: messageDirection\n }}\n >\n {Object.entries(validationResult).map(([message, result]) => (\n <InlineMessage\n key={message}\n theme={getMessageTheme(result, isFocused)}\n >\n {message}\n </InlineMessage>\n ))}\n </Flex>\n )}\n </Box>\n )\n}\n\nCreatePasswordField.displayName = 'CreatePasswordField'\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\n Row,\n RowSelectionState,\n RowSelectionTableState,\n SortDirection,\n SortingTableState,\n Table,\n VisibilityTableState\n} from '@tanstack/react-table'\nimport * as React from 'react'\nexport enum AsyncDataState {\n NONE = 'none',\n PENDING = 'pending',\n FULFILLED = 'fulfilled',\n REJECTED = 'rejected'\n}\n\nexport type TAsyncDataResult = {\n total: number\n results: TableData\n}\n\nexport type TAsyncDataOptions = {\n pageIndex: number\n pageSize: number\n sortBy?: string\n sortDirection?: SortDirection\n globalFilter?: string\n}\n\nexport type TGetAsyncData = (\n options: TAsyncDataOptions\n) => Promise<TAsyncDataResult | undefined>\n\nexport type TablePosition = {\n top: number | null\n bottom: number | null\n offsetTop: number\n isVisible: boolean\n}\n\nexport type DataTableContextType<T = unknown> = Table<T> & {\n setIsSortable: React.Dispatch<React.SetStateAction<boolean>>\n applyPagination: () => void\n getTotalRows: () => number\n isSortable: boolean\n asyncDataState?: AsyncDataState\n runAsyncData?: (options: Partial<TAsyncDataOptions>) => Promise<void>\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n rowSelection: RowSelectionState\n tablePosition?: TablePosition\n setTablePosition: React.Dispatch<React.SetStateAction<TablePosition>>\n data: TAsyncDataResult\n columns: any\n tableId: string\n /**\n * Directly update the data array that the table rows are built from.\n * This is useful when re-ordering rows, but is high-risk if you're not sure what you're doing!\n *\n * Note in particular that this value is also updated if you update the value of the `DataTable`'s `data` prop\n * — it's probably best to only use one of those two methods for any given table.\n */\n setData: React.Dispatch<React.SetStateAction<TAsyncDataResult>>\n}\n\nexport type TableData = Array<Record<string, unknown>>\n\nexport type InitialState = Partial<\n VisibilityTableState &\n ColumnOrderTableState &\n ColumnPinningTableState &\n FiltersTableState &\n SortingTableState &\n ExpandedTableState &\n GroupingTableState &\n ColumnSizingTableState &\n PaginationTableState &\n RowSelectionTableState\n>\n\nexport type TDefaultSort = { column: string; direction: SortDirection }\n","import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n","import type { PaginationState } from '@tanstack/react-table'\nimport React from 'react'\n\nconst defaultPaginationState: PaginationState = { pageIndex: 0, pageSize: 10 }\nexport const usePagination = (\n initialPaginationState: PaginationState | undefined\n) => {\n const [isPaginated, setIsPaginated] = React.useState<boolean>(\n !!initialPaginationState\n )\n\n const [paginationState, setPaginationState] = React.useState<\n PaginationState | undefined\n >({\n ...defaultPaginationState,\n ...(initialPaginationState || {})\n })\n\n const applyPagination = React.useCallback(() => {\n setIsPaginated(true)\n }, [])\n\n return {\n isPaginated,\n paginationState,\n setPaginationState,\n applyPagination\n }\n}\n","import type { SortingState } from '@tanstack/react-table'\nimport React from 'react'\n\nimport { TDefaultSort } from './DataTable.types'\nexport const useSortByColumn = (defaultSort: TDefaultSort | undefined) => {\n const [isSortable, setIsSortable] = React.useState<boolean>(false)\n\n const [sorting, setSorting] = React.useState<SortingState>(\n defaultSort\n ? [\n {\n id: defaultSort.column,\n desc: defaultSort.direction === 'desc'\n }\n ]\n : []\n )\n\n return { isSortable, setIsSortable, sorting, setSorting }\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n OnChangeFn,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport { Box } from '../box'\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TablePosition,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n disabledRows,\n enableRowSelection,\n onRowSelectionChange,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const [tablePosition, setTablePosition] = React.useState<TablePosition>({\n top: null,\n bottom: null,\n offsetTop: 0,\n isVisible: true\n })\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const hasSelectedRows = Object.keys(rowSelection || {}).length > 0\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: (updaterOrValue) => {\n if (onRowSelectionChange) onRowSelectionChange(updaterOrValue)\n setRowSelection(updaterOrValue)\n },\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const isSubRow = row.depth > 0\n\n if (isSubRow) return true\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n disabledRows,\n enableRowSelection,\n rowSelection,\n tablePosition,\n setTablePosition,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledRow = styled('tr', {\n bg: 'unset'\n})\n\nexport const TableRow: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRow>\n> = React.forwardRef((props, ref) => <StyledRow {...props} ref={ref} />)\n\nTableRow.displayName = 'TableRow'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { StyledRow } from './TableRow'\n\nconst StyledTableBody = styled('tbody', {\n variants: {\n striped: {\n true: {\n [`${StyledRow}`]: {\n '&:nth-child(odd)': { bg: 'white' },\n '&:nth-child(even)': { bg: '$grey100' }\n }\n },\n false: {\n [`${StyledRow}`]: {\n bg: 'white'\n }\n }\n }\n }\n})\n\ntype TableBodyProps = React.ComponentProps<typeof StyledTableBody>\n\nexport const TableBody = ({ striped = true, ...rest }: TableBodyProps) => (\n <StyledTableBody striped={striped} {...rest} />\n)\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderBottom: '1px solid $grey200',\n boxSizing: 'border-box',\n color: '$grey800',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: '600' }\n})\n\nTableCell.displayName = 'TableCell'\n","import { styled } from '~/stitches'\n\nexport const TableFooter = styled('tfoot', {})\n\nTableFooter.displayName = 'TableFooter'\n","import { styled } from '~/stitches'\n\nexport const TableFooterCell = styled('td', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n textAlign: 'left',\n verticalAlign: 'middle'\n})\n\nTableFooterCell.displayName = 'TableFooterCell'\n","import { styled } from '~/stitches'\n\nexport const TableHeaderCell = styled('th', {\n borderBottom: '1px solid $grey200',\n color: 'white',\n fontFamily: '$body',\n fontWeight: 600,\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&[colspan]': {\n textAlign: 'center'\n }\n})\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TableHeaderCell } from './TableHeaderCell'\n\nexport const TABLE_HEADER_THEMES = {\n PRIMARY: 'primary',\n PRIMARY_DARK: 'primaryDark',\n PRIMARY_LIGHT: 'primaryLight',\n LIGHT: 'light',\n WHITE: 'white'\n} as const\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary800'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary1000'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary200',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$grey100',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.WHITE]: {\n [`${TableHeaderCell}`]: {\n bg: 'white',\n color: '$grey1000'\n }\n }\n },\n isSticky: {\n true: {\n position: 'sticky',\n top: 0,\n zIndex: 3\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader = ({\n theme = 'primaryDark',\n isSticky = false,\n ...rest\n}: TableHeaderProps) => {\n return <StyledTableHeader theme={theme} isSticky={isSticky} {...rest} />\n}\n\nTableHeader.displayName = 'TableHeader'\n","import * as React from 'react'\n\nimport { CSS } from '../../stitches'\n\ninterface IUseStickyColumnsCss {\n columnsCss: CSS\n}\n\nexport const useStickyColumnsCss = ({\n numberOfStickyColumns,\n wrapperRef\n}: {\n numberOfStickyColumns: number\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n}): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n const generateColumnsCss = React.useCallback(() => {\n let accWidth = 0\n\n // Getting the table header cells elements to use their width to set the left position in the sticky columns.\n const tableHeaderCells = wrapperRef.current?.querySelectorAll('th')\n const tableHeaderElements = Array.from(tableHeaderCells || [])\n\n // Getting only the number of sticky columns from the elements array that is what we are interested in.\n const stickyColumns = tableHeaderElements.slice(0, numberOfStickyColumns)\n\n const newColumnsCss = stickyColumns.reduce((acc: CSS, column, index) => {\n const elementNumber = index + 1\n const cssObject = {\n ...acc,\n [`& td:nth-of-type(${elementNumber}), th:nth-of-type(${elementNumber})`]:\n {\n position: 'sticky',\n left: `${accWidth}px`,\n minWidth: `${column.offsetWidth}px`, // fixing width for sticky columns\n zIndex: '2'\n }\n }\n\n accWidth += tableHeaderCells?.item(index).clientWidth || 0\n\n return cssObject\n }, {} as CSS)\n\n return newColumnsCss\n }, [numberOfStickyColumns, wrapperRef])\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n const newColumnsCss = generateColumnsCss()\n\n setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef, generateColumnsCss])\n\n return {\n columnsCss\n }\n}\n","import React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Box } from '../box'\nimport { useStickyColumnsCss } from './useStickyColumnsCss'\n\nexport const TableStickyColumnsContainer = ({\n children,\n numberOfStickyColumns = 0,\n css,\n ...restProps\n}: React.PropsWithChildren<{\n numberOfStickyColumns?: number\n css?: CSS\n}>) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const wrapperRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss({\n numberOfStickyColumns,\n wrapperRef\n })\n\n const handleScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const newHasScroll = event.currentTarget.scrollLeft > 0\n if (newHasScroll !== hasScroll) {\n setHasScroll(newHasScroll)\n }\n }\n\n return (\n <Box\n onScroll={handleScroll}\n role=\"scrollbar\"\n ref={wrapperRef}\n css={{\n overflow: 'auto',\n overscrollBehaviorX: 'contain',\n maxWidth: '100%',\n position: 'relative',\n ...columnsCss,\n [`& td:nth-child(${numberOfStickyColumns}), th:nth-child(${numberOfStickyColumns})`]:\n {\n ...(hasScroll && {\n boxShadow: '$colors$alpha200 -2px -3px 9px 1px',\n clipPath: 'inset(0px -10px 0px 0px)'\n })\n },\n '& td': {\n bg: 'inherit'\n },\n ...css\n }}\n {...restProps}\n >\n {children}\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { TableBody } from './TableBody'\nimport { TableCell } from './TableCell'\nimport { TableFooter } from './TableFooter'\nimport { TableFooterCell } from './TableFooterCell'\nimport { TableHeader } from './TableHeader'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { StyledRow, TableRow } from './TableRow'\nimport { TableStickyColumnsContainer } from './TableStickyColumnsContainer'\n\nconst StyledTable = styled('table', {\n borderCollapse: 'separate',\n borderSpacing: 0,\n fontFamily: '$sans',\n fontSize: '$sm',\n width: '100%',\n position: 'relative',\n zIndex: 0,\n variants: {\n size: {\n md: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$4',\n padding: '$1 $3'\n }\n },\n lg: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$5',\n padding: '$2 $3'\n }\n },\n xl: {\n [`${TableCell}, ${TableHeaderCell}, ${TableFooterCell}`]: {\n height: '$6',\n padding: '$4 $3'\n }\n }\n },\n corners: {\n round: {\n [`${TableHeaderCell}`]: {\n '&:first-of-type': { borderTopLeftRadius: '$0' },\n '&:last-of-type': { borderTopRightRadius: '$0' }\n },\n [`${StyledRow}:last-child`]: {\n [`${TableCell}:first-child`]: { borderBottomLeftRadius: '$0' },\n [`${TableCell}:last-child`]: { borderBottomRightRadius: '$0' }\n }\n },\n square: {}\n }\n }\n})\n\ntype TableProps = React.ComponentProps<typeof StyledTable> & {\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n scrollContainerkey?: string\n maxRowDepth?: number\n}\n\nconst TableComponent = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n scrollContainerCss,\n scrollContainerkey,\n ...rest\n },\n ref\n ) => {\n const tableComponent = (\n <StyledTable ref={ref} size={size} corners={corners} {...rest} />\n )\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n key={scrollContainerkey}\n css={scrollContainerCss}\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n }\n)\n\nexport const Table = Object.assign(TableComponent, {\n Body: TableBody,\n Cell: TableCell,\n Footer: TableFooter,\n FooterCell: TableFooterCell,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Row: TableRow,\n StickyColumnsContainer: TableStickyColumnsContainer\n})\n\nTableComponent.displayName = 'Table'\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & {\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nexport const DataTableBody = ({\n striped = false,\n rowAction,\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return <DataTable.Row row={row} key={row.id} rowAction={rowAction} />\n })}\n </Table.Body>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '~/components/button'\nimport { Divider } from '~/components/divider'\nimport { CSS, styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\nconst StyledContainer = styled(Flex, {\n p: '$2',\n width: '100%',\n mb: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '$6',\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0',\n variants: {\n isRowSelected: {\n true: {\n bg: '$primary100'\n }\n }\n }\n})\n\nconst BulkActionsDefaultActions = ({\n children\n}: {\n children: React.ReactElement\n}): React.ReactElement | null => {\n const { rowSelection } = useDataTable()\n\n if (Object.keys(rowSelection || {}).length > 0) return null\n\n return children\n}\n\nconst BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n children\n}: {\n cancelLabel?: string\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n\nexport const DataTableBulkActions = Object.assign(\n ({\n children,\n ...rest\n }: {\n css?: CSS\n children:\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n | [\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >,\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n ]\n }) => {\n const { rowSelection } = useDataTable()\n\n const isRowSelected = Object.keys(rowSelection || {}).length > 0\n\n return (\n <StyledContainer isRowSelected={isRowSelected} {...rest}>\n <DataTable.MetaData />\n\n <Flex css={{ justifyContent: 'flex-end', alignItems: 'center' }}>\n {children}\n </Flex>\n </StyledContainer>\n )\n },\n {\n DefaultActions: BulkActionsDefaultActions,\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { Divider } from '../divider'\nimport { useDataTable } from './DataTableContext'\n\nexport const BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n showDividers = true,\n children\n}: {\n cancelLabel?: string\n showDividers?: boolean\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {showDividers && React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Badge } from '../badge'\nimport { Button } from '../button'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Text } from '../text'\nimport { BulkActionsSelectedRowActions } from './DataTableBulkActionsSelectedRowActions'\nimport { useDataTable } from './DataTableContext'\n\nconst ActionBarPositioner = styled('div', {})\n\nconst StyledContainer = styled(Flex, {\n p: '$2 $1 $2 $3',\n mb: '$4',\n mt: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n borderRadius: '$3',\n bg: '$primary800',\n pointerEvents: 'all',\n zIndex: 2,\n width: '100%',\n mx: '$4',\n boxShadow: '$2',\n '@sm': {\n maxWidth: '800px'\n },\n '@lg': {\n p: '$3 $1 $3 $4',\n mb: '$5',\n maxWidth: '1000px'\n },\n '@xl': {\n p: '$4 $2 $4 $24',\n mb: '$5',\n maxWidth: '1400px'\n }\n})\n\nexport const DataTableBulkActionsFloating = Object.assign(\n ({ css, children, ...rest }: { css?: CSS; children: React.ReactNode }) => {\n const { rowSelection, toggleAllPageRowsSelected } = useDataTable()\n\n const actionBarRef = React.useRef<HTMLDivElement>(null)\n\n const numberOfSelectedRows = React.useMemo(() => {\n return Object.keys(rowSelection || {}).length\n }, [rowSelection])\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (numberOfSelectedRows === 0) return null\n\n return (\n <ActionBarPositioner\n ref={actionBarRef}\n css={{\n left: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n position: 'sticky',\n pointerEvents: 'none'\n }}\n >\n <StyledContainer {...rest}>\n <Flex\n justify=\"flex-start\"\n align=\"center\"\n gap={2}\n css={{ flex: 'auto' }}\n >\n <Badge\n theme=\"success\"\n size=\"xs\"\n emphasis=\"subtle\"\n css={{ minWidth: '24px', height: '24px' }}\n >\n {numberOfSelectedRows}\n </Badge>\n <Text size=\"sm\" weight=\"bold\" css={{ color: 'white' }}>\n selected\n </Text>\n </Flex>\n\n <Flex\n justify=\"flex-end\"\n align=\"center\"\n gap={3}\n css={{ flex: 'auto' }}\n >\n {children}\n\n <ActionIcon\n appearance=\"simple\"\n theme=\"white\"\n size=\"md\"\n onClick={handleDeselectAllPageRows}\n label=\"close\"\n >\n <Icon is={Close} />\n </ActionIcon>\n </Flex>\n </StyledContainer>\n </ActionBarPositioner>\n )\n },\n {\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import type { Cell } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\n\ntype DataTableDataCellProps = {\n cell: Cell<Record<string, unknown>, unknown>\n}\n\nexport const DataTableDataCell = ({ cell }: DataTableDataCellProps) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import * as React from 'react'\n\nimport type { EmptyStateProps } from './EmptyState'\n\ntype EmptyStateProviderProps = {\n size?: EmptyStateProps['size']\n}\n\ntype EmptyStateContextValue = EmptyStateProviderProps\n\nexport const EmptyStateContext = React.createContext<EmptyStateContextValue>({})\n\nexport const EmptyStateProvider = ({\n size,\n children\n}: React.PropsWithChildren<EmptyStateProviderProps>) => {\n const value = React.useMemo<EmptyStateContextValue>(() => ({ size }), [size])\n return (\n <EmptyStateContext.Provider value={value}>\n {children}\n </EmptyStateContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateBody = styled(Text, {\n color: '$grey800',\n fontWeight: 400,\n variants: {\n size: {\n xs: {\n fontSize: '$sm',\n mb: '$4'\n },\n sm: {\n fontSize: '$sm',\n mb: '$4'\n },\n md: {\n fontSize: '$sm',\n mb: '$4'\n },\n lg: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n },\n xl: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateBodyProps = React.ComponentProps<typeof StyledEmptyStateBody> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateBody = (props: EmptyStateBodyProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateBody size={size} {...props} />\n}\n","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateImage = styled(Image, {\n variants: {\n size: {\n xs: {\n maxWidth: '56px',\n maxHeight: '32px',\n mb: '$4'\n },\n sm: {\n maxWidth: '84px',\n maxHeight: '48px',\n mb: '$4'\n },\n md: {\n maxWidth: '126px',\n maxHeight: '72px',\n mb: '$4'\n },\n lg: {\n maxWidth: '190px',\n maxHeight: '142px',\n mb: 'calc($4 + $2)'\n },\n xl: {\n maxWidth: '285px',\n maxHeight: '213px',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateImageProps = React.ComponentProps<typeof StyledEmptyStateImage>\n\nexport const EmptyStateImage = (props: EmptyStateImageProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateImage size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateTitle = styled('h2', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n m: 0,\n variants: {\n size: {\n xs: {\n fontSize: '$md',\n mb: '$3'\n },\n sm: {\n fontSize: '$md',\n mb: '$3'\n },\n md: {\n fontSize: '$md',\n mb: '$3'\n },\n lg: {\n fontSize: '$lg',\n mb: '$4'\n },\n xl: {\n fontSize: '$lg',\n mb: '$4'\n }\n }\n }\n})\n\ntype EmptyStateTitleProps = React.ComponentProps<\n typeof StyledEmptyStateTitle\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateTitle = (props: EmptyStateTitleProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateTitle size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateProvider } from './EmptyState.context'\nimport { EmptyStateBody } from './EmptyStateBody'\nimport { EmptyStateImage } from './EmptyStateImage'\nimport { EmptyStateTitle } from './EmptyStateTitle'\n\nconst EmptyStateContainer = styled(Flex, {\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n '& > *:last-child': {\n mb: 0\n },\n variants: {\n size: {\n xs: {\n p: '$2'\n },\n sm: {\n p: '$3'\n },\n md: {\n p: '$4'\n },\n lg: {\n p: '$5'\n },\n xl: {\n p: '$6'\n }\n }\n }\n})\n\nexport type EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nconst EmptyStateComponent = ({ size = 'sm', ...rest }: EmptyStateProps) => (\n <EmptyStateProvider size={size}>\n <EmptyStateContainer size={size} {...rest} />\n </EmptyStateProvider>\n)\n\nexport const EmptyState = Object.assign(EmptyStateComponent, {\n Image: EmptyStateImage,\n Title: EmptyStateTitle,\n Body: EmptyStateBody\n})\n\nEmptyStateComponent.displayName = 'EmptyState'\n","import * as React from 'react'\n\nimport { EmptyState } from '../empty-state'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableEmptyStateProps = React.ComponentProps<typeof EmptyState>\n\nexport const DataTableEmptyState = ({\n children,\n ...rest\n}: DataTableEmptyStateProps) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (!isEmpty) return null\n\n return <EmptyState {...rest}>{children}</EmptyState>\n}\n","import * as React from 'react'\n\nimport { AsyncDataState, DataTableContextType } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableError = ({\n children\n}: {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}) => {\n const { asyncDataState, runAsyncData } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.REJECTED) return null\n\n return children(runAsyncData)\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nexport const OptionalVisuallyHiddenWrapper = ({\n children,\n hidden = false\n}: React.PropsWithChildren<{\n hidden?: boolean\n}>) => {\n if (hidden) return <VisuallyHidden.Root>{children}</VisuallyHidden.Root>\n\n return children ? (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n ) : null\n}\n\nOptionalVisuallyHiddenWrapper.displayName = 'OptionalVisuallyHiddenWrapper'\n","import { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { Input, InputBackground, InputText } from '~/components/input'\nimport { CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n value?: string\n defaultValue?: string\n onValueChange?: (newValue: string) => void\n clearText?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nenum INPUT_ICON {\n SEARCH = 'SEARCH',\n CLEAR = 'CLEAR'\n}\n\nconst StyledIcon = styled(Icon, {\n color: '$grey700',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n right: '$2',\n size: '$1'\n },\n md: {\n right: 10,\n size: 20\n },\n lg: {\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInputText = styled(InputText, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.ForwardRefExoticComponent<SearchInputProps> =\n React.forwardRef(\n (\n {\n size = 'md',\n appearance = 'standard',\n css,\n value,\n defaultValue = '',\n onValueChange,\n clearText = 'Clear',\n onChange,\n ...remainingProps\n },\n ref\n ) => {\n const [inputElRef, setInputElRef] = useCallbackRef()\n const [innerValue, setInnerValue] = React.useState(defaultValue)\n const [activeIcon, setActiveIcon] = React.useState<INPUT_ICON>(\n defaultValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH\n )\n React.useEffect(() => {\n if (typeof value === 'undefined') return\n setInnerValue(value)\n setActiveIcon(value ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }, [value])\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n React.useImperativeHandle(\n ref,\n () => inputElRef.current as HTMLInputElement\n )\n\n const handleClear = () => {\n const inputEl = inputElRef.current\n if (!inputEl) return\n\n // https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call?.(inputEl, '')\n const ev2 = new Event('input', {\n bubbles: true\n })\n inputEl.dispatchEvent(ev2)\n inputEl.focus()\n onValueChange?.('')\n }\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n\n const newValue = event.target.value\n setInnerValue(newValue)\n onValueChange?.(newValue)\n setActiveIcon(newValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }\n\n const getIcon = () => {\n if (activeIcon === INPUT_ICON.SEARCH)\n return (\n <StyledIcon\n is={Search}\n size={size}\n css={{\n size: size == 'sm' ? '$1' : 20,\n top: '50%',\n transform: 'translateY(-50%)'\n }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={iconSize}\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '$1'\n }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <InputBackground\n css={{ position: 'relative', width: 'auto', ...css }}\n size={size}\n appearance={appearance}\n >\n <StyledSearchInputText\n ref={setInputElRef}\n size={size}\n type=\"search\"\n {...remainingProps}\n value={innerValue}\n onChange={handleOnChange}\n css={{ pr: size === 'sm' ? '$5' : '$6' }}\n />\n {getIcon()}\n </InputBackground>\n )\n }\n )\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionalVisuallyHiddenWrapper } from '../../utilities/optional-visually-hidden-wrapper'\nimport { Label } from '../label'\nimport { SearchInput } from '../search-input'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableSearchProps = React.ComponentProps<typeof SearchInput> & {\n label: string\n hideLabel?: boolean\n}\nexport const DataTableGlobalFilter = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}: DataTableSearchProps) => {\n const {\n setGlobalFilter,\n getState,\n resetPagination,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n const { globalFilter } = getState()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n const handleChange = debounce(250, (event) => {\n const {\n target: { value }\n } = event\n\n onChange?.(event)\n resetPagination()\n setGlobalFilter(value)\n })\n\n return (\n <>\n <OptionalVisuallyHiddenWrapper hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionalVisuallyHiddenWrapper>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n isSticky?: boolean\n stickyOffset?: number\n headerCss?: CSS\n}\n\nexport const DataTableHead = ({\n sortable = true,\n theme = 'light',\n isSticky = false,\n stickyOffset = 0,\n css,\n ...props\n}: DataTableHeadProps): React.ReactElement => {\n const {\n getHeaderGroups,\n setIsSortable,\n enableRowSelection,\n getCanSomeRowsExpand,\n tablePosition,\n setTablePosition\n } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n const tableHeaderRowRef = React.useRef<HTMLTableRowElement>(null)\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const headerOffsetRef = React.useRef(0)\n\n const [headerOffset, setHeaderOffset] = React.useState<number>(0)\n const [headerHide, setHeaderHide] = React.useState<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n return document.querySelector('main') || window\n }, [])\n\n const tableHeadElement = tableHeaderRowRef?.current?.closest('thead')\n\n if (tableHeadElement && tablePosition?.offsetTop === null) {\n const tableHeadHeight = tableHeadElement.getBoundingClientRect().height\n const intersectionOffset = stickyOffset + tableHeadHeight\n if (tablePosition) {\n setTablePosition({ ...tablePosition, offsetTop: intersectionOffset || 0 })\n }\n }\n\n React.useEffect(() => {\n if (!isSticky) return\n\n if (!tableRef.current && tableHeaderRowRef.current) {\n tableRef.current = tableHeaderRowRef.current.closest(\n 'table'\n ) as HTMLTableElement | null\n }\n\n if (tableRef.current) {\n if (tablePosition?.top !== null && tablePosition?.bottom !== null) {\n const newOffset =\n tablePosition?.top != null &&\n tablePosition?.bottom != null &&\n tablePosition.top < stickyOffset &&\n tablePosition.bottom > 100\n ? -tablePosition.top + stickyOffset\n : 0\n\n if (newOffset !== 0) setHeaderHide(true)\n\n headerOffsetRef.current = newOffset\n setHeaderOffset(newOffset)\n\n requestAnimationFrame(() => {\n setHeaderHide(false)\n })\n }\n }\n }, [scrollTarget, isSticky, stickyOffset, tablePosition])\n\n return (\n <Table.Header\n theme={theme}\n css={{\n position: 'relative',\n zIndex: 3,\n '& tr:not(:last-child) > th': {\n borderBottom: 'none'\n },\n '& tr:not(:first-child) > th': {\n borderRadius: '0 !important'\n },\n ...css\n }}\n {...props}\n >\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row\n key={headerGroup.id}\n ref={tableHeaderRowRef}\n css={{\n ...(isSticky &&\n headerOffset !== 0 && {\n transform: `translateY(${headerOffset}px)`,\n opacity: headerHide ? 0 : 1,\n transition: headerHide ? 'none' : `opacity 100ms`,\n transitionDelay: headerHide ? '0ms' : `150ms`,\n '& th:last-child:before': {\n content: '',\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n width: '100%',\n boxShadow: '$0',\n pointerEvents: 'none'\n }\n })\n }}\n >\n {getCanSomeRowsExpand() && (\n <Table.HeaderCell css={{ width: '$4' }} />\n )}\n {enableRowSelection && (\n <Table.HeaderCell css={{ width: '$4' }}>\n <DataTableSelectAllRowsCheckbox />\n </Table.HeaderCell>\n )}\n {headerGroup.headers.map((header) => (\n <DataTable.HeaderCell header={header} key={header.id} />\n ))}\n </Table.Row>\n )\n })}\n </Table.Header>\n )\n}\n","import { ArrowDown, ArrowUp } from '@atom-learning/icons'\nimport { styled } from '@atom-learning/stitches-react'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\nimport { useHover } from 'react-aria'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\ntype DataTableHeaderProps = React.ComponentProps<typeof Table.HeaderCell> & {\n header: Header<Record<string, unknown>, unknown>\n}\n\nconst StyledTableHeaderCell = styled(Table.HeaderCell, {\n variants: {\n isSortable: {\n true: {\n cursor: 'pointer',\n position: 'relative',\n '& > *': {\n position: 'relative'\n },\n '&:before': {\n content: '',\n position: 'absolute',\n inset: 0,\n opacity: 0,\n backgroundColor: '$primary100',\n transition: 'opacity 0.2s ease'\n },\n '&:hover:before': {\n opacity: 0.5\n }\n }\n }\n }\n})\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown\n}\n\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1', stroke: '$primary900' }}\n />\n)\n\nexport const DataTableHeaderCell = ({\n header,\n children,\n css,\n ...props\n}: DataTableHeaderProps) => {\n const sortDirection = header.column.getIsSorted()\n const { isSortable: isSortableTable } = useDataTable()\n // false for display columns, e.g. \"Actions\"\n const isDataColumn = header.column.getCanSort()\n\n const { hoverProps, isHovered } = useHover({})\n\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLTableCellElement>,\n callback: (event: unknown) => void | undefined\n ) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n callback(event as unknown)\n }\n }\n\n const headerSortingHandler = header.column.getToggleSortingHandler()\n\n return (\n <StyledTableHeaderCell\n isSortable={isSortableTable && isDataColumn}\n colSpan={header.colSpan}\n onClick={\n isSortableTable && isDataColumn && headerSortingHandler\n ? headerSortingHandler\n : undefined\n }\n onKeyDown={(event) =>\n isSortableTable &&\n isDataColumn &&\n headerSortingHandler &&\n handleKeyDown(event, headerSortingHandler)\n }\n tabIndex={isSortableTable && isDataColumn ? 0 : -1}\n {...hoverProps}\n css={css}\n {...props}\n >\n <Flex\n align=\"center\"\n justify={header.colSpan > 1 ? 'center' : 'flex-start'}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex\n align=\"center\"\n css={{\n position: 'relative',\n width: '24px',\n height: '24px',\n ml: '$2',\n bg: isHovered ? '$primary200' : '$primary100',\n borderRadius: '$0'\n }}\n >\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n </Flex>\n </StyledTableHeaderCell>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Loader } from '../loader'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nconst PendingState = styled(Loader, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 1\n})\n\nexport const DataTableLoading = (\n props: React.ComponentProps<typeof PendingState>\n) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData = ({\n copy,\n css\n}: {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}) => {\n const { getState, columns, getRowModel, rowSelection } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.length\n\n const selectedRows = Object.keys(rowSelection || {}).length\n\n const copyMerged = { ...defaultCopy, ...copy }\n\n const getColumnDisplayName = (id: string) => {\n const sortedColumn = columns.find((col) => col.id === id)\n return sortedColumn?.header || id\n }\n\n const getSortingString = (sorting) => {\n return `${copyMerged.separator} ${\n copyMerged.sorted_by\n } ${getColumnDisplayName(sorting[0].id)} ${\n sorting[0].desc ? copyMerged.descending : copyMerged.ascending\n }`\n }\n\n return (\n <Text weight=\"bold\" css={css}>{`${selectedRows || totalRows} ${\n (selectedRows || totalRows) === 1 ? 'item' : 'items'\n } ${selectedRows ? 'selected' : ''} ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableRowSelectionCheckbox = ({\n row,\n checked,\n onCheckedChange,\n label = `Row ${row.id} selection`\n}: {\n row: Row<Record<string, unknown>>\n checked: boolean | 'indeterminate'\n onCheckedChange: (value: boolean) => void\n label?: string\n}): React.ReactElement => {\n const { tableId } = useDataTable()\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_row_${row.id}_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n <Checkbox\n css={{ ml: row.depth ? `$${row.depth * 2}` : 0 }}\n checked={checked}\n onCheckedChange={onCheckedChange}\n name={`${tableId}_row_${row.id}_selection`}\n disabled={!row.getCanSelect()}\n />\n </>\n )\n}\n","import { ChevronDown, ChevronRight } from '@atom-learning/icons'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\n\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nconst StyledRow = styled(Table.Row, {\n bg: 'initial',\n variants: {\n isSelected: {\n true: {\n // the !important rule is needed because the bg property is set elsewhere and it's more specific than this one would be without the !important modifier.\n bg: '$primary100 !important'\n }\n },\n isDisabled: {\n true: {\n opacity: '30%'\n }\n },\n isFocusable: {\n true: {\n '&:focus': {\n outline: '2px solid $primary500',\n outlineOffset: '-4px',\n '& td': {\n bg: 'transparent'\n }\n }\n }\n }\n }\n})\n\nconst isElementInteractive = (element: Element | null): boolean => {\n if (!element) return false\n if (element.closest('button, a, input, select, textarea')) return true\n if (element.getAttribute('role') === 'button') return true\n return false\n}\n\nexport const DataTableRow = ({ row, rowAction }: DataTableRowProps) => {\n const { enableRowSelection, disabledRows, getCanSomeRowsExpand } =\n useDataTable()\n\n const isDisabled = !!disabledRows?.[row.id]\n\n const toggleExpandHandler = row.getToggleExpandedHandler()\n const toggleSelectHandler = row.getToggleSelectedHandler()\n\n const getCheckedState = (): boolean | 'indeterminate' => {\n if (row.getIsSomeSelected()) return 'indeterminate'\n return row.getIsSelected()\n }\n\n const handleRowClick = (\n rowData: Row<Record<string, unknown>>,\n event: React.MouseEvent<HTMLTableRowElement>\n ) => {\n if (!rowAction) return\n\n // Skip if clicking on an interactive element\n const rowElement = (event.target as Element).closest('tr')\n if (!rowElement || isElementInteractive(event.target as Element)) {\n return\n }\n\n rowAction(rowData.original, event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n if (isElementInteractive(event.target as Element)) {\n return\n }\n event.preventDefault()\n handleRowClick(\n row,\n event as unknown as React.MouseEvent<HTMLTableRowElement>\n )\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const nextRow = currentRow?.nextElementSibling as HTMLElement\n if (nextRow && nextRow.tagName === 'TR') {\n nextRow.focus()\n }\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const previousRow = currentRow?.previousElementSibling as HTMLElement\n if (previousRow && previousRow.tagName === 'TR') {\n previousRow.focus()\n }\n }\n }\n\n return (\n <StyledRow\n isSelected={row.getIsSelected()}\n isDisabled={isDisabled}\n isFocusable={!!rowAction && !isDisabled}\n {...(rowAction && {\n onClick: (event) => handleRowClick(row, event),\n tabIndex: 0,\n css: { cursor: 'pointer' },\n onKeyDown: handleKeyDown\n })}\n >\n {getCanSomeRowsExpand() && (\n <Table.Cell\n data-testid={`expand-icon-${row.id}`}\n css={{ width: '$4', cursor: row.getCanExpand() ? 'pointer' : 'auto' }}\n onClick={toggleExpandHandler}\n >\n {row.getCanExpand() && (\n <Icon is={row.getIsExpanded() ? ChevronDown : ChevronRight} />\n )}\n </Table.Cell>\n )}\n\n {enableRowSelection && (\n <Table.Cell css={{ width: '$4' }}>\n <DataTableRowSelectionCheckbox\n row={row}\n checked={getCheckedState()}\n onCheckedChange={toggleSelectHandler}\n />\n </Table.Cell>\n )}\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </StyledRow>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n stickyHeaderOffset?: number\n headerCss?: CSS\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme,\n css,\n scrollOptions = {\n numberOfStickyColumns: 0,\n stickyHeaderOffset: 0,\n hasStickyHeader: false\n },\n rowAction,\n ...props\n}: DataTableTableProps): JSX.Element | null => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n rowSelection,\n enableRowSelection,\n tableId,\n setTablePosition\n } = useDataTable()\n\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const isTableVisible = React.useRef(false)\n const isScrolling = React.useRef<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n return document.querySelector('main') || window\n }, [])\n\n React.useEffect(() => {\n if (typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const updatePosition = () => {\n if (tableRef.current) {\n const tableTop = tableRef.current.getBoundingClientRect().top\n const tableBottom = tableRef.current.getBoundingClientRect().bottom\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n top: tableTop,\n bottom: tableBottom\n }))\n }\n isScrolling.current = false\n }\n\n const handleScroll = () => {\n if (!isScrolling.current) {\n requestAnimationFrame(updatePosition)\n isScrolling.current = true\n }\n }\n\n if (!tableRef.current) return\n\n const observerOffset = scrollOptions?.stickyHeaderOffset || 0\n\n const observerOptions = {\n rootMargin: `-${observerOffset}px 0px -${observerOffset}px 0px`,\n threshold: 0\n }\n\n const handleTableIntersection = (entries: IntersectionObserverEntry[]) => {\n if (!entries || entries.length === 0) return\n const entry = entries[0]\n\n isTableVisible.current = entry.isIntersecting\n\n if (entry.isIntersecting) {\n //add scroll listener\n scrollTarget?.addEventListener('scroll', handleScroll)\n } else {\n //remove scroll listener\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n isVisible: entry.isIntersecting\n }))\n }\n\n const tableObserver = new IntersectionObserver(\n handleTableIntersection,\n observerOptions\n )\n\n //only track table position if we have a sticky header or bulk actions active\n if (\n tableRef.current &&\n (scrollOptions.hasStickyHeader ||\n Object.keys(rowSelection || {}).length > 0)\n ) {\n tableObserver.observe(tableRef.current)\n }\n\n return () => {\n tableObserver.disconnect()\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }, [\n rowSelection,\n scrollOptions.hasStickyHeader,\n scrollOptions?.stickyHeaderOffset,\n scrollTarget,\n setTablePosition\n ])\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n <div style={{ display: 'contents' }}>\n <Table\n {...props}\n ref={tableRef}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCss={{\n ...scrollOptions.scrollContainerCss\n }}\n scrollContainerkey={buildScrollContainerKey()}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n stickyOffset={scrollOptions.stickyHeaderOffset}\n css={scrollOptions.headerCss}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n </div>\n </>\n )\n}\n","import { DragHandle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nexport const StyledHandle = styled(ActionIcon, {\n color: 'inherit !important',\n fill: 'currentColor',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n ['*']: {\n pointerEvents: 'none'\n }\n },\n variants: {\n isDragging: {\n true: {\n cursor: 'grabbing'\n },\n false: {\n cursor: 'grab'\n }\n }\n }\n})\n\nexport type THandleProps = Omit<\n React.ComponentProps<typeof StyledHandle>,\n 'children'\n> &\n Pick<React.ComponentProps<typeof Icon>, 'size'>\n\nexport const Handle: React.ForwardRefExoticComponent<THandleProps> =\n React.forwardRef(({ isDragging, size, ...rest }, ref) => {\n return (\n <StyledHandle\n ref={ref}\n isDragging={isDragging}\n appearance=\"simple\"\n hasTooltip={false}\n size={size}\n {...rest}\n >\n <Icon is={DragHandle} />\n </StyledHandle>\n )\n })\n\nHandle.displayName = 'Handle'\n","import { useSortable } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Handle as DragHandle, THandleProps } from './Handle'\n\nexport type TSortableHandleProps = {\n targetId: React.ReactText\n disabled?: boolean\n label?: string\n} & Omit<THandleProps, 'label'>\n\nexport const SortableHandle = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}: TSortableHandleProps) => {\n const { attributes, listeners, isDragging, setActivatorNodeRef } =\n useSortable({ id: targetId })\n\n return (\n <DragHandle\n ref={setActivatorNodeRef}\n isDragging={isDragging}\n label={label}\n disabled={disabled}\n {...(!disabled ? listeners : {})}\n {...(!disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableHandle.displayName = 'SortableHandle'\n","import type { UniqueIdentifier } from '@dnd-kit/core'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport type TSortableItemProps = {\n id: UniqueIdentifier\n asChild?: boolean\n isDragHandle?: boolean\n disabled?: boolean\n css?: CSS\n}\n\nconst StyledSlot = styled(Slot)\n\nexport const SortableItem = ({\n id,\n asChild = false,\n css,\n isDragHandle = false,\n disabled,\n ...rest\n}: React.PropsWithChildren<TSortableItemProps>) => {\n const { transform, setNodeRef, isDragging, listeners, attributes } =\n useSortable({ id })\n\n const Component = asChild ? StyledSlot : Box\n return (\n <Component\n ref={setNodeRef}\n css={{\n ['--scale']: 1,\n transform:\n 'translateX(calc(var(--translate-x) * 1px)) translateY(calc(var(--translate-y) * 1px)) scale(var(--scale))',\n zIndex: isDragging ? 5 : undefined,\n ['--translate-x']: transform?.x || 0,\n ['--translate-y']: transform?.y || 0,\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n ['*']: {\n pointerEvents: 'none'\n }\n },\n ...(isDragHandle ? { cursor: isDragging ? 'grabbing' : 'grab' } : {}),\n ...css\n }}\n data-dragging={isDragging}\n data-disabled={disabled}\n {...(isDragHandle && !disabled ? listeners : {})}\n {...(isDragHandle && !disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableItem.displayName = 'SortableItem'\n","import type { DragEndEvent, UniqueIdentifier } from '@dnd-kit/core'\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates\n} from '@dnd-kit/sortable'\nimport * as React from 'react'\n\ntype TSortableRootProps = {\n sortableIds: React.ReactText[]\n onSortChange: (onSortChangeData: {\n order: UniqueIdentifier[]\n oldIndex: number\n newIndex: number\n }) => void\n}\n\nexport const SortableRoot = ({\n sortableIds,\n onSortChange,\n children\n}: React.PropsWithChildren<TSortableRootProps>) => {\n const [order, setOrder] = React.useState<React.ReactText[]>(sortableIds)\n React.useEffect(() => {\n setOrder(sortableIds)\n }, [sortableIds])\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n )\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (active.id && over?.id && active.id !== over?.id) {\n setOrder((order) => {\n const oldIndex = order.indexOf(active.id)\n const newIndex = order.indexOf(over.id)\n const newOrder = arrayMove(order, oldIndex, newIndex)\n onSortChange({ order: newOrder, oldIndex, newIndex })\n return newOrder\n })\n }\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={order}>{children}</SortableContext>\n </DndContext>\n )\n}\n\nSortableRoot.displayName = 'SortableRoot'\n","import { SortableHandle as Handle } from './SortableHandle'\nimport { SortableItem as Item } from './SortableItem'\nimport { SortableRoot as Root } from './SortableRoot'\n\nexport const Sortable = { Root, Item, Handle }\n","import type { Row } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Sortable } from '~/components/sortable'\n\nimport { Table } from '../../table'\nimport { DataTableDataCell } from '../DataTableDataCell'\nexport type DataTableDraggableRowProps = React.ComponentProps<\n typeof Table.Row\n> & {\n row: Row<Record<string, unknown>>\n idColumn?: string\n}\n\nexport const DragAndDropTableRow = ({\n row,\n idColumn = 'id'\n}: DataTableDraggableRowProps) => {\n const rowId = row.original[idColumn] as React.ReactText\n return (\n <Sortable.Item id={rowId} asChild>\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n if (i === 0) {\n return (\n <Table.Cell key={cell.id}>\n <Sortable.Handle\n targetId={rowId}\n css={{ display: 'inline-block' }}\n />\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n }\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n </Sortable.Item>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../../table'\nimport { useDataTable } from '../DataTableContext'\nimport { DragAndDropTableRow } from './DragAndDropTableRow'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & { idColumn?: string }\n\nexport const DragAndDropTableBody = ({\n striped = false,\n idColumn = 'id',\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return (\n <DragAndDropTableRow row={row} key={row.id} idColumn={idColumn} />\n )\n })}\n </Table.Body>\n )\n}\n","import { arrayMove } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Sortable } from '../../sortable'\nimport { Table } from '../../table'\nimport { DataTable } from '../DataTable'\nimport { AsyncDataState, TAsyncDataResult } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DataTableLoading } from '../DataTableLoading'\nimport type { DataTableTableProps } from '../DataTableTable'\nimport { DragAndDropTableBody } from './DragAndDropTableBody'\n\ntype DragAndDropTableProps = DataTableTableProps & {\n idColumn?: string\n onDragAndDrop?: (onDragAndDropData: {\n oldIndex: number\n newIndex: number\n newData: TAsyncDataResult\n }) => void\n}\n\nexport const DragAndDropTable = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}: DragAndDropTableProps) => {\n const { asyncDataState, data, setData } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n\n const rowIds = React.useMemo(\n () =>\n data.results.map((row) => {\n return row[idColumn] as React.ReactText\n }),\n [data]\n )\n const handleSortChange = React.useCallback(\n ({ oldIndex, newIndex }) => {\n const sortedResults = arrayMove(data.results, oldIndex, newIndex)\n const newData = { results: sortedResults, total: data.total }\n setData({ results: sortedResults, total: data.total })\n onDragAndDrop?.({ oldIndex, newIndex, newData })\n },\n [data, onDragAndDrop]\n )\n\n return (\n <Sortable.Root onSortChange={handleSortChange} sortableIds={rowIds}>\n <DataTableLoading />\n <Table\n {...props}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head theme={theme} sortable={sortable} />\n <DragAndDropTableBody striped={striped} idColumn={idColumn} />\n </Table>\n </Sortable.Root>\n )\n}\n","export enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n\nexport const VIEW_ALL_POPOVER = 'VIEW_ALL_POPOVER'\nexport const GO_TO_PREVIOUS_PAGE = 'GO_TO_PREVIOUS_PAGE'\nexport const GO_TO_NEXT_PAGE = 'GO_TO_NEXT_PAGE'\n","import {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationItemsToRender } from './types'\n\nexport const getPaginationElementsToRender = (\n currentPage: number,\n pagesCount: number,\n visibleElementsCount: number\n): PaginationItemsToRender => {\n const paginationPages = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n /*\n * As we always show the `<` `>` arrows,\n * subtract 2 from `visibleElementsCount` (one for each of the GO_TO_PREVIOUS/NEXT_PAGE arrows)\n * to get the `visiblePagesCount`\n */\n let visiblePagesCount = visibleElementsCount - 2\n const withPreviousNextPageArrows = (paginationPages) => [\n GO_TO_PREVIOUS_PAGE,\n ...paginationPages,\n GO_TO_NEXT_PAGE\n ]\n\n /**\n * If fewer pages than threshold for truncating render them all.\n *\n * pagesCount: 6\n * visibleElementsCount: >=6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, 3, 4, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | 3 | | 4 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (pagesCount <= visiblePagesCount) {\n return withPreviousNextPageArrows(paginationPages)\n }\n\n /**\n * If current page is either at the very start or at the very end of the pages\n */\n const canFitEdgePage = visibleElementsCount >= 5\n const canFitViewAllPopover = visibleElementsCount >= 4\n const canFitPages = visibleElementsCount >= 3\n\n if (canFitViewAllPopover) {\n // Subtract one from visiblePagesCount to accomodate for us adding the `[…]` VIEW_ALL_POPOVER\n visiblePagesCount -= 1\n }\n\n if (canFitEdgePage) {\n // Subtract one more from visiblePagesCount to accomodate for us adding the GO_TO_PREVIOUS/NEXT_PAGE arrows\n visiblePagesCount -= 1\n }\n\n const firstPage = paginationPages[0]\n const lastPage = paginationPages[paginationPages.length - 1]\n\n /**\n * If we're truncating and current page is at the start of the page list,\n * render the initial truncated page list, e.g.\n *\n * pagesCount: 8\n * currentPage: 1/2\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | … | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage < visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitPages) {\n newPaginationItems.push(...paginationPages.slice(0, visiblePagesCount))\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitEdgePage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page is towards the end of the\n * page list (depending on visibleElementsCount),\n * render a truncated page list from the end, e.g.\n *\n * pagesCount: 8\n * currentPage: 7/8\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, VIEW_ALL_POPOVER, 7, 8, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | … | | 7 | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage > pagesCount - visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitEdgePage) {\n newPaginationItems.push(firstPage)\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitPages) {\n newPaginationItems.push(\n ...paginationPages.slice(pagesCount - visiblePagesCount, pagesCount)\n )\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page doesn't meet any of the previous conditions\n * (we're in the middle)\n * render a truncated page list from a specific index relative to `currentPage`, e.g.\n *\n * currentPage: 4\n * visibleElementsCount: 6 // VisibleElementsAmount.LESS\n * returns [GO_TO_PREVIOUS_PAGE, 3, 4, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 3 | | 4 | | … | | 6 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n * currentPage: 6\n * visibleElementsCount: 8 // VisibleElementsAmount.MORE\n * returns [GO_TO_PREVIOUS_PAGE, 4, 5, 6, 7, VIEW_ALL_POPOVER, 10, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 4 | | 5 | | 6 | | 7 | | … | | 10 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n */\n const canFitCurrentPage = canFitPages\n const canFitCurrentPageAndPreviousPage = visibleElementsCount >= 6\n const canFitCurrentPageAndPreviousPageAndNextPage = visibleElementsCount >= 7\n const canFitLastPage = canFitEdgePage\n\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitCurrentPageAndPreviousPageAndNextPage) {\n newPaginationItems.push(\n ...paginationPages.slice(\n currentPage + 1 - visiblePagesCount,\n currentPage + 1\n )\n )\n } else if (canFitCurrentPageAndPreviousPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - visiblePagesCount, currentPage)\n )\n } else if (canFitCurrentPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - 1, currentPage - 1 + 1)\n )\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitLastPage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[],\n pagesCount: number\n): number | undefined => {\n if (startPage > pagesCount) return\n let nextPage = startPage\n while (disabledPages.includes(nextPage)) {\n nextPage++\n }\n return nextPage\n}\n\nexport const findPreviousAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number | undefined => {\n if (startPage < 1) return\n let previousPage = startPage\n while (disabledPages.includes(previousPage)) {\n previousPage--\n }\n return previousPage\n}\n","import * as React from 'react'\n\nimport { VisibleElementsAmount } from '../pagination.constants'\nimport {\n findNextAvailablePage,\n findPreviousAvailablePage,\n getPaginationElementsToRender\n} from '../pagination.helper'\nimport type { PaginationContextValue, PaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<PaginationContextValue>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n pagesCount: 0,\n onItemHover: () => null,\n paginationItems: [],\n labels: {},\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}: React.PropsWithChildren<PaginationProviderProps>) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n\n const currentPage = selectedPage || internalCurrentPage\n\n const goToPage = React.useCallback(\n (pageNumber: number) => {\n setInternalCurrentPage(pageNumber)\n onSelectedPageChange?.(pageNumber)\n },\n [onSelectedPageChange]\n )\n\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n const goToPreviousPage = React.useCallback(() => {\n if (previousAvailablePage) goToPage(previousAvailablePage)\n }, [goToPage, previousAvailablePage])\n\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(\n nextPage,\n disabledPages,\n pagesCount\n )\n const goToNextPage = React.useCallback(() => {\n if (nextAvailablePage) goToPage(nextAvailablePage)\n }, [goToPage, nextAvailablePage])\n\n const paginationItems = getPaginationElementsToRender(\n currentPage,\n pagesCount,\n visibleElementsCount\n )\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n paginationItems,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n indicatedPages,\n paginationItems,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n ])\n\n return (\n <PaginationContext.Provider value={value}>\n {children}\n </PaginationContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { PaginationContext } from './pagination-context/PaginationContext'\nimport type { PaginationContextValue } from './types'\n\nexport const usePagination = (): PaginationContextValue => {\n const context = React.useContext(PaginationContext)\n\n if (!context) {\n throw new Error(\n 'Ensure that you wrap any components with the PaginationProvider component'\n )\n }\n\n return context\n}\n","import { ChevronRight } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n ml: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationNextButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToNextPage, labels, nextAvailablePage } = usePagination()\n\n const isDisabled = !nextAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToNextPage}\n disabled={isDisabled}\n {...props}\n label={labels?.nextPageButtonLabel || 'Next page'}\n >\n <Icon is={ChevronRight} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport { disabledStyle, focusVisibleStyleBlock } from '~/utilities'\n\nimport { styled } from '../../stitches'\nimport type { PaginationPageProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: '1px solid transparent',\n borderRadius: '$0',\n cursor: 'pointer',\n fontFamily: '$body',\n justifyContent: 'center',\n whiteSpace: 'nowrap',\n width: 'max-content',\n display: 'flex',\n flexDirection: 'column',\n p: '0',\n fontWeight: 400,\n color: '$textSubtle',\n bg: '$base1',\n position: 'relative',\n\n '&:not(:disabled)': {\n '&:hover': {\n color: '$textRegular',\n bg: '$base2'\n },\n '&:active': {\n color: '$textBold',\n bg: '$base3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&[disabled]': {\n ...disabledStyle,\n pointerEvents: 'none'\n },\n variants: {\n size: {\n md: {\n width: '$4',\n height: '$4'\n }\n },\n selected: {\n true: {\n border: '1px solid $accent9',\n color: '$accent9',\n fontWeight: 600,\n '&:not(:disabled)': {\n '&:hover': {\n borderColor: '$accent10',\n color: '$accent10'\n },\n '&:active': {\n borderColor: '$accent11',\n fontColor: '$accent11'\n }\n }\n }\n },\n indicated: {\n true: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n },\n\n compoundVariants: [\n {\n selected: true,\n indicated: true,\n css: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n boxShadow: '$colors$accent9 0px 0px 0px 1px',\n '&:not(:focus-visible)': {\n borderColor: 'white !important'\n },\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n ]\n})\n\nexport const PaginationPage = ({\n pageNumber,\n css,\n onClick\n}: PaginationPageProps) => {\n const { currentPage, goToPage, indicatedPages, disabledPages, onItemHover } =\n usePagination()\n\n const isIndicated = indicatedPages.includes(pageNumber)\n const isDisabled = disabledPages.includes(pageNumber)\n\n const isSelected = currentPage === pageNumber\n\n const handleOnHover = () => {\n if (isSelected || isDisabled) return\n onItemHover?.(pageNumber)\n }\n\n const handleOnClick = (pageNumber) => {\n onClick?.()\n goToPage(pageNumber)\n }\n\n return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => handleOnClick(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {pageNumber}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Flex, Icon, Popover } from '..'\nimport { PaginationPage } from './PaginationPage'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n const [isOpen, setIsOpen] = React.useState<boolean>(false)\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen} defaultOpen={false}>\n <Popover.Trigger asChild>\n {children || (\n <ActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n label={labels?.popoverTriggerLabel || 'Open pagination popover'}\n data-testid=\"pagination_popover_trigger\"\n >\n <Icon is={Ellypsis} />\n </ActionIcon>\n )}\n </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Flex\n css={{\n p: '$4',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '$1',\n justifyContent: 'center'\n }}\n >\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationPage\n key={pageNumber}\n pageNumber={pageNumber}\n onClick={() => setIsOpen(false)}\n />\n )\n })}\n </Flex>\n </Popover.Content>\n </Popover>\n )\n}\n","import { ChevronLeft } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n mr: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationPreviousButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToPreviousPage, labels, previousAvailablePage } = usePagination()\n\n const isDisabled = !previousAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToPreviousPage}\n disabled={isDisabled}\n {...props}\n label={labels?.previousPageButtonLabel || 'Previous page'}\n >\n <Icon is={ChevronLeft} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPage } from './PaginationPage'\nimport { PaginationPopover } from './PaginationPopover'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport { usePagination } from './usePagination'\n\nexport const PaginationItems = (): JSX.Element => {\n const { paginationItems } = usePagination()\n\n return (\n <>\n {paginationItems.map((paginationItem, i) => {\n switch (paginationItem) {\n case VIEW_ALL_POPOVER:\n return <PaginationPopover key={paginationItem + i} />\n case GO_TO_PREVIOUS_PAGE:\n return <PaginationPreviousButton key={paginationItem} />\n case GO_TO_NEXT_PAGE:\n return <PaginationNextButton key={paginationItem} />\n default:\n return (\n <PaginationPage\n key={paginationItem}\n pageNumber={paginationItem}\n />\n )\n }\n })}\n </>\n )\n}\n","import * as React from 'react'\n\nimport { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '../flex'\nimport { VisibleElementsAmount } from './pagination.constants'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationItems } from './PaginationItems'\nimport { PaginationPopover } from './PaginationPopover'\nimport type { PaginationProps, PaginationProviderProps } from './types'\n\nconst PaginationComponent = ({\n colorScheme,\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children,\n ...rest\n}: PaginationProps) => {\n if (!pagesCount) return null\n\n const paginationProviderProps: PaginationProviderProps = {\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount,\n pagesCount,\n indicatedPages,\n disabledPages,\n onItemHover,\n labels\n }\n\n return (\n <PaginationProvider {...paginationProviderProps}>\n <ColorScheme base=\"grey1\" accent=\"primary1\" {...colorScheme} asChild>\n <Flex gap={1} {...rest}>\n {children || <PaginationItems />}\n </Flex>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums',\n flexWrap: 'wrap',\n width: '100%',\n gap: '$4',\n mt: '$4',\n '@md': {\n flexDirection: 'row'\n }\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n","import { DataTableBody } from './DataTableBody'\nimport { DataTableBulkActions } from './DataTableBulkActions'\nimport { DataTableBulkActionsFloating } from './DataTableBulkActionsFloating'\nimport { DataTableProvider } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableEmptyState } from './DataTableEmptyState'\nimport { DataTableError } from './DataTableError'\nimport { DataTableGlobalFilter } from './DataTableGlobalFilter'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableHeaderCell } from './DataTableHeaderCell'\nimport { DataTableLoading } from './DataTableLoading'\nimport { DataTableMetaData } from './DataTableMetaData'\nimport { DataTableRow } from './DataTableRow'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\n/** Context provider for DataTable state and logic.\n *\n * Children can call `useDataTable` to access everything provided by `@tanstack/react-table` plus\n * the functionality we've built on top.\n */\nexport const DataTable = Object.assign(DataTableProvider, {\n /** Default table body implementation for `DataTable`.\n *\n * Can be configured with alternating colours of rows. If you need more customisation options,\n * you can build your own implementation with `useDataTable()` and the UI-only `Table` components.\n */\n Body: DataTableBody,\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: DataTableDataCell,\n\n /**\n * Used in place of `DataTable.Table` to render a table with rows that the user can sort by drag-and-drop\n */\n DragAndDropTable: DragAndDropTable,\n\n /** Default global search implementation for `DataTable`\n *\n * If you need more customisation options, you can compose your own implementation with our UI-only input components and `useDataTable`.\n */\n GlobalFilter: DataTableGlobalFilter,\n\n /** Default table head implementation\n *\n * Can be configured to be sortable and with different visual themes.\n * If you need more customisation options, you can build your own implementation\n * with `useDataTable` and the UI-only `Table` components.\n */\n Head: DataTableHead,\n\n /** Default header implementation for `DataTable`\n *\n * Can be configured to make the column sortable. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n HeaderCell: DataTableHeaderCell,\n\n /** Default pagination implementation for `DataTable`\n *\n * Can navigate forward, backward, or to any specific page. If you need more customisation options,\n * you can build your own implementation with `useDataTable` and other UI components.\n *\n */\n MetaData: DataTableMetaData,\n\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n Pagination: Pagination,\n\n /** Default row implementation for `DataTable`\n *\n * Renders all visible cells as `Table.Cell`. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n Row: DataTableRow,\n\n /** Default table implementation for `DataTable`.\n *\n * Can be configured with sortable columns and different visual themes.\n *\n * If you need more customisation options, you can compose your own implementation with\n * lower-level `DataTable` components or build the whole thing from\n * scratch with `useDataTable` and the UI-only `Table` components.\n *\n */\n Table: DataTableTable,\n\n /** Default loading implementation for remote data\n *\n * Renders a loading component while fetching the paginated data using `getAsyncData`.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState`\n * can be retrieved from `useDataTable`\n */\n Loading: DataTableLoading,\n\n /** Default error implementation for remote data\n *\n * Renders an error component when `getAsyncData` promise rejects.\n * Children are rendered as a function, it exposes a `runAsyncData` function to the children component.\n * `runAsyncData()` can be used to retry fetching the paginated data with the current pageIndex, pageSize\n * and sorting parameters or your own custom paginated options.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState` and `runAsyncData()`\n * can be retrieved from `useDataTable`\n *\n */\n Error: DataTableError,\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: DataTableEmptyState,\n\n /** Select all rows checkbox.\n *\n * Renders a checkbox on the header, allowing for bulk selection/deselection of all selectable rows\n */\n SelectAllRowsCheckbox: DataTableSelectAllRowsCheckbox,\n\n /** Individual row selection checkbox.\n *\n * Renders a checkbox on each row, allowing for individual selection/deselection of any selectable row\n */\n RowSelectionCheckbox: DataTableRowSelectionCheckbox,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActions: DataTableBulkActions,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActionsFloating: DataTableBulkActionsFloating\n})\n","export const monthNamesShort = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n\nexport const weekdayNamesShort = [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n]\n\nexport const DEFAULT_LABELS = {\n open: 'Open calendar',\n next: 'Next month',\n previous: 'Previous month',\n nextYear: 'Next year',\n previousYear: 'Previous year'\n}\n","import { styled } from '~/stitches'\n\nexport const Day = styled('button', {\n bg: 'transparent',\n border: 'none',\n borderRadius: '$round',\n color: '$grey900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$grey200'\n },\n '&:active': {\n color: 'white',\n bg: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: '0.3',\n cursor: 'default'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary800',\n color: 'white',\n '&:hover': { bg: '$primary800' }\n }\n },\n isToday: {\n true: { bg: '$grey200' }\n },\n isOutsideMonth: {\n true: { color: '$grey600' }\n }\n }\n})\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport { useDayzed } from 'dayzed'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Button } from '~/components/button'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { DEFAULT_LABELS, monthNamesShort, weekdayNamesShort } from './constants'\nimport { Day } from './Day'\n\nconst Grid = styled('div', {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gridGap: '$1 $2'\n})\n\nconst StyledButton = styled(Button, {\n color: '$grey1000',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$grey1000 !important',\n fontWeight: 400,\n '&:hover': {\n bg: '$grey200 !important',\n color: '$grey1000 !important'\n },\n '&[disabled]': { bg: 'white !important' }\n }\n }\n }\n})\n\nexport type CalendarTranslationProps = {\n monthNames?: string[]\n weekdayNames?: string[]\n labels?: {\n open: string\n next: string\n previous: string\n nextYear: string\n previousYear: string\n }\n}\n\ntype CalendarProps = DayzedInterface &\n CalendarTranslationProps & {\n css?: CSS\n refDateToday?: React.RefObject<HTMLButtonElement>\n refDateSelected?: React.RefObject<HTMLButtonElement>\n setYear: (date: Date) => Promise<void>\n }\n\nconst offsetWeekdayNames = (\n weekdayNames: string[],\n firstDayOfWeek: number\n): string[] => {\n const start = weekdayNames.slice(0, firstDayOfWeek)\n const end = weekdayNames.slice(firstDayOfWeek)\n return end.concat(start)\n}\n\nexport const Calendar = ({\n css,\n refDateSelected,\n refDateToday,\n firstDayOfWeek = 0,\n monthNames = monthNamesShort,\n weekdayNames = weekdayNamesShort,\n labels = DEFAULT_LABELS,\n date = new Date(),\n minDate,\n maxDate,\n setYear,\n ...remainingProps\n}: CalendarProps) => {\n const [showYears, setShowYears] = React.useState<boolean>(false)\n const [currentYear, setCurrentYear] = React.useState<number>(\n date?.getFullYear()\n )\n\n const handleSetYear = (year: number): void => {\n const newDate = date\n newDate.setFullYear(year)\n setYear(newDate)\n setShowYears(false)\n }\n\n const isAtMinYear = minDate && currentYear - 16 <= minDate.getFullYear()\n const isAtMaxYear = maxDate && currentYear >= maxDate.getFullYear()\n\n const yearList = Array.from({ length: 16 }, (_, i) => {\n const year = currentYear - i\n if (\n (maxDate && year > maxDate.getFullYear()) ||\n (minDate && year < minDate.getFullYear())\n )\n return 0\n return year\n })\n\n const { calendars, getBackProps, getForwardProps, getDateProps } = useDayzed({\n firstDayOfWeek,\n showOutsideDays: true,\n date,\n minDate,\n maxDate,\n ...remainingProps\n })\n\n if (!calendars.length) return null\n\n return (\n <Box\n css={{ position: 'relative', width: 'min-content', mt: '-$1', ...css }}\n >\n <Flex css={{ position: 'absolute', top: 0, right: '-$1' }}>\n <ActionIcon\n label={labels[showYears ? 'previousYear' : 'previous']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getBackProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear - 16)\n })}\n disabled={showYears && isAtMinYear}\n >\n <Icon is={ChevronLeft} />\n </ActionIcon>\n <ActionIcon\n label={labels[showYears ? 'nextYear' : 'next']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getForwardProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear + 16)\n })}\n disabled={showYears && isAtMaxYear}\n >\n <Icon is={ChevronRight} />\n </ActionIcon>\n </Flex>\n {showYears && (\n <Grid\n css={{\n gridTemplateColumns: 'repeat(4, 1fr)',\n pt: '$7',\n direction: 'rtl',\n gridGap: '$3 $1'\n }}\n >\n {yearList.map((year, i) => {\n const isCurrentYear = year === date.getFullYear()\n if (!year)\n return <Box key={i} css={{ width: '$6', height: '$4' }} />\n\n return (\n <StyledButton\n key={`${year}${i}`}\n theme={isCurrentYear ? 'primary' : 'neutral'}\n onClick={() => handleSetYear(year)}\n selected={isCurrentYear}\n >\n {year}\n </StyledButton>\n )\n })}\n </Grid>\n )}\n {!showYears &&\n calendars.map(({ month, year, weeks }) => (\n <Box key={`${month}${year}`}>\n <Flex css={{ height: '$4', alignItems: 'center', mb: '$4' }}>\n <Button\n theme=\"neutral\"\n css={{ px: '0', color: '$grey1000' }}\n onClick={() => setShowYears(true)}\n >\n {monthNames[month]} {year}\n </Button>\n </Flex>\n <Grid css={{ mb: '$3' }}>\n {offsetWeekdayNames(weekdayNames, firstDayOfWeek).map(\n (weekday) => (\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"bold\"\n key={`${month}${year}${weekday}`}\n css={{ textAlign: 'center' }}\n >\n {weekday}\n </Text>\n )\n )}\n </Grid>\n <Grid>\n {weeks.map((week, weekIndex) =>\n week.map((dateObj, index) => {\n const key = `${month}${year}${weekIndex}${index}`\n\n if (!dateObj) return <div key={key} />\n\n const { date, selected, today, prevMonth, nextMonth } =\n dateObj\n\n return (\n <Day\n isOutsideMonth={prevMonth || nextMonth}\n isSelected={selected}\n isToday={today}\n key={key}\n ref={\n selected ? refDateSelected : today ? refDateToday : null\n }\n {...getDateProps({ dateObj })}\n type=\"button\"\n >\n {date.getDate()}\n </Day>\n )\n })\n )}\n </Grid>\n </Box>\n ))}\n </Box>\n )\n}\n\nCalendar.displayName = 'Calendar'\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Arrow, Close, Content } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { POPOVER_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nconst StyledContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\n boxShadow: '$2',\n maxWidth: '90vw',\n p: '$sizes$2',\n pr: '$6',\n position: 'relative',\n zIndex: POPOVER_Z_INDEX,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '200px' },\n md: { maxWidth: '400px' },\n lg: { maxWidth: '600px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: 'white',\n zIndex: 1,\n '[data-align=\"end\"] &': { mr: '$sizes$2' },\n '[data-align=\"start\"] &': { ml: '$sizes$2' }\n})\n\ntype PopoverContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content> & {\n closePopoverText?: string\n showCloseButton?: boolean\n }\n\nexport const PopoverContent = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}: PopoverContentProps) => (\n <StyledContent\n size={size}\n side={side}\n sideOffset={sideOffset}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$0', top: '$0' }}\n label={closePopoverText}\n size=\"md\"\n hasTooltip={false}\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {children}\n <StyledArrow width={16} height={8} />\n </StyledContent>\n)\n","import { Portal, Root, Trigger } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { PopoverContent } from './PopoverContent'\n\nconst StyledRoot = styled(Root, {})\n\nexport const Popover = Object.assign(StyledRoot, {\n Content: PopoverContent,\n Portal: Portal,\n Trigger: Trigger\n})\n\nStyledRoot.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import { CalendarEvent } from '@atom-learning/icons'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Box } from '../box/Box'\nimport { Calendar, CalendarTranslationProps } from '../calendar/Calendar'\nimport { DEFAULT_LABELS } from '../calendar/constants'\nimport { Icon } from '../icon/Icon'\nimport { Input } from '../input/Input'\nimport { Popover } from '../popover/Popover'\nimport { DEFAULT_DATE_FORMAT } from './constants'\ndayjs.extend(customParseFormat)\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md' | 'lg'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nconst formatDateToString = (date?: Date, dateFormat = DEFAULT_DATE_FORMAT) =>\n date ? dayjs(date).format(dateFormat) : ''\n\nexport const DateInput: React.ForwardRefExoticComponent<DateInputProps> =\n React.forwardRef(\n (\n {\n initialDate,\n dateFormat = DEFAULT_DATE_FORMAT,\n firstDayOfWeek = 1,\n disabled,\n monthNames,\n weekdayNames,\n size = 'md',\n labels,\n revalidate,\n onChange,\n minDate,\n maxDate,\n ...remainingProps\n },\n ref\n ) => {\n const [date, setDate] = React.useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n\n const [inputElRef, setInputElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => inputElRef as HTMLInputElement)\n\n const dateString = formatDateToString(date, dateFormat)\n\n const handleInputChange = React.useCallback(\n (event) => {\n const newDateString = event.target.value\n const parsedInputDate = dayjs(newDateString, dateFormat)\n const newDate = parsedInputDate.isValid()\n ? parsedInputDate.toDate()\n : undefined\n setDate(newDate)\n onChange?.(newDate)\n },\n [dateFormat, onChange]\n )\n\n const handleCalendarChange = React.useCallback(\n (newDate) => {\n setDate(newDate)\n\n const mirrorChangeToInputElement = () => {\n if (!inputElRef) return\n\n // Call the `set` function on the input value directly to mirror the change.\n // Props to: https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(\n inputElRef,\n formatDateToString(newDate, dateFormat)\n )\n const event = new Event('input', { bubbles: true })\n inputElRef.dispatchEvent(event)\n }\n mirrorChangeToInputElement()\n },\n [dateFormat, inputElRef]\n )\n\n const updatedLabels = {\n ...DEFAULT_LABELS,\n ...labels\n }\n\n const [calendarOpen, setCalendarOpen] = React.useState(false)\n\n const refDateToday = React.useRef<HTMLButtonElement>(null)\n const refDateSelected = React.useRef<HTMLButtonElement>(null)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', height: 'max-content' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={handleInputChange}\n ref={setInputElRef}\n defaultValue={dateString}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '0'\n }}\n disabled={disabled}\n label={updatedLabels.open}\n size={iconSize}\n theme=\"neutral\"\n hasTooltip={false}\n >\n <Icon is={CalendarEvent} />\n </ActionIcon>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n css={{ pr: '$sizes$2', zIndex: DIALOG_Z_INDEX }}\n side=\"bottom\"\n align=\"end\"\n showCloseButton={false}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n if (date) {\n refDateSelected.current?.focus()\n } else {\n refDateToday.current?.focus()\n }\n }}\n >\n <Calendar\n date={date || new Date()}\n selected={date}\n onDateSelected={async (date) => {\n setCalendarOpen(false)\n await handleCalendarChange(date.date)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await handleCalendarChange(date)\n if (revalidate) revalidate()\n }}\n minDate={minDate}\n maxDate={maxDate}\n refDateToday={refDateToday}\n refDateSelected={refDateSelected}\n firstDayOfWeek={firstDayOfWeek}\n monthNames={monthNames}\n weekdayNames={weekdayNames}\n labels={updatedLabels}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover>\n </Box>\n )\n }\n )\n\nDateInput.displayName = 'DateInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { DateInput, DateInputProps } from '~/components/date-input'\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\ntype DateFieldProps = DateInputProps & FieldElementWrapperProps\n\nexport const DateField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: DateFieldProps) => {\n const { register, trigger } = useFormContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={appearance}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\n appearance={appearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n revalidate={trigger}\n />\n </FieldWrapper>\n )\n}\n\nDateField.displayName = 'DateField'\n","import { styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport const DialogBackground = styled(Box, { width: '100vw', height: '100vh' })\n","import { Close } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DialogClose = styled(Close, {})\n","import { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nexport const backdropOverlay = {\n backgroundColor: '$alpha600',\n position: 'fixed',\n inset: 0,\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n}\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { DialogBackground } from './DialogBackground'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\nconst modalOverlayId = 'modal_overlay'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledDialogOverlay = styled(Overlay, backdropOverlay)\n\nconst sizeReset = {\n width: 'auto',\n height: 'auto',\n maxWidth: 'auto',\n maxHeight: 'auto',\n '@supports (height: 100svh)': {\n height: 'auto',\n maxHeight: 'auto'\n }\n}\nconst StyledDialogContent = styled(Content, {\n bg: 'white',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n maxHeight: '90vh',\n overflowY: 'auto',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n zIndex: DIALOG_Z_INDEX,\n '&:focus': {\n outline: 'none'\n },\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n xs: {\n ...sizeReset,\n borderRadius: '$1',\n width: '380px'\n },\n sm: {\n ...sizeReset,\n borderRadius: '$1',\n width: '480px'\n },\n md: {\n ...sizeReset,\n borderRadius: '$1',\n width: '600px'\n },\n lg: {\n ...sizeReset,\n borderRadius: '$1',\n width: '800px'\n },\n xl: {\n ...sizeReset,\n borderRadius: '$1',\n width: '1100px'\n },\n fullscreen: {\n width: '100vw',\n height: '100vh',\n maxWidth: '100vw',\n maxHeight: '100vh',\n '@supports (height: 100svh)': {\n height: '100svh',\n maxHeight: '100svh'\n }\n }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}: DialogContentProps) => (\n <Portal>\n <StyledDialogOverlay id={modalOverlayId}>\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type === DialogBackground && child\n )}\n <StyledDialogContent\n size={size}\n aria-label=\"Dialog\"\n onPointerDownOutside={(event) => {\n const element = event.target as HTMLElement\n if (element?.id !== modalOverlayId) {\n event.preventDefault()\n }\n }}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$4', top: '$4', size: '$5' }}\n label={closeDialogText}\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type !== DialogBackground && child\n )}\n </StyledDialogContent>\n </StyledDialogOverlay>\n </Portal>\n)\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\n\nexport const DialogFooter = ({\n css,\n ...props\n}: React.ComponentProps<typeof Flex>) => (\n <Flex justify=\"end\" gap={3} css={{ pt: '$4', ...css }} {...props} />\n)\n","import * as React from 'react'\n\nimport { Heading } from '../heading'\n\nexport const DialogHeading = ({\n css,\n ...props\n}: React.ComponentProps<typeof Heading>) => (\n <Heading\n size=\"sm\"\n css={{\n borderBottom: '1px solid $grey200',\n p: `0 $5 $5 $5`,\n mb: '$5',\n mx: '-$5',\n boxSizing: 'content-box',\n ...css\n }}\n {...props}\n />\n)\n","import { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\nimport { DialogFooter } from './DialogFooter'\nimport { DialogHeading } from './DialogHeading'\n\nconst StyledDialog = styled(Root, {})\n\nexport const Dialog = Object.assign(StyledDialog, {\n Background: DialogBackground,\n Close: DialogClose,\n Content: DialogContent,\n Heading: DialogHeading,\n Footer: DialogFooter,\n\n Description: Description,\n Title: Title,\n Trigger: Trigger\n})\n\nDialog.displayName = 'Dialog'\n","import * as React from 'react'\n\nimport { StyledContent } from './DrawerContent'\n\ntype TDrawerProviderProps = {\n position?: React.ComponentProps<typeof StyledContent>['position']\n}\n\ntype TDrawerContext = TDrawerProviderProps\n\nexport const DrawerContext = React.createContext<TDrawerContext>({\n position: 'left'\n})\n\nexport const DrawerProvider = ({\n position = 'left',\n ...rest\n}: React.PropsWithChildren<TDrawerProviderProps>): JSX.Element => {\n const value = React.useMemo<TDrawerContext>(() => ({ position }), [position])\n return <DrawerContext.Provider value={value} {...rest} />\n}\n","import { Close } from '@atom-learning/icons'\nimport { Close as DialogClose } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nexport const DrawerClose = (\n props: Omit<React.ComponentProps<typeof ActionIcon>, 'children'>\n) => (\n <DialogClose asChild>\n <ActionIcon\n theme=\"neutral\"\n appearance=\"simple\"\n size=\"md\"\n hasTooltip={false}\n {...props}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nexport const DrawerOverlay = styled(Overlay, backdropOverlay)\n","import { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\nimport { ColorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { slideInOut } from '~/utilities'\n\nimport { DrawerContext } from './Drawer.context'\nimport { DrawerOverlay } from './DrawerOverlay'\n\nconst animationTop = slideInOut({ outPosition: { x: 0, y: '-100%' } })\nconst animationRight = slideInOut({ outPosition: { x: '100%', y: 0 } })\nconst animationBottom = slideInOut({ outPosition: { x: 0, y: '100%' } })\nconst animationLeft = slideInOut({ outPosition: { x: '-100%', y: 0 } })\nconst setupAnimation = (animation: ReturnType<typeof slideInOut>) => {\n return {\n '&[data-state=\"open\"]': {\n animationName: animation.in\n },\n '&[data-state=\"closed\"]': {\n animationName: animation.out\n }\n }\n}\n\nconst positionY = {\n left: 0,\n width: '100%',\n maxHeight: '85%'\n}\n\nconst positionX = {\n top: 0,\n height: '100%',\n width: 'var(--drawer-content-width, 100%)',\n maxWidth: '100%'\n}\n\nexport const StyledContent = styled(Content, {\n bg: '$base1',\n boxShadow: '$2',\n position: 'fixed',\n zIndex: DIALOG_Z_INDEX,\n '@allowMotion': {\n animationTimingFunction: 'ease-out',\n animationDuration: '250ms'\n },\n variants: {\n position: {\n top: {\n top: 0,\n ...positionY,\n ...setupAnimation(animationTop)\n },\n right: {\n right: 0,\n ...positionX,\n ...setupAnimation(animationRight)\n },\n bottom: {\n bottom: 0,\n ...positionY,\n ...setupAnimation(animationBottom)\n },\n left: {\n left: 0,\n ...positionX,\n ...setupAnimation(animationLeft)\n }\n },\n size: {\n xs: {\n '--drawer-content-width': '240px'\n },\n sm: {\n '--drawer-content-width': '256px'\n },\n md: {\n '--drawer-content-width': '288px'\n },\n lg: {\n '--drawer-content-width': '304px'\n },\n xl: {\n '--drawer-content-width': '320px'\n },\n '2xl': {\n '--drawer-content-width': '720px'\n },\n '3xl': {\n '--drawer-content-width': '1000px'\n }\n }\n }\n})\n\nexport const DrawerContent = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledContent>) => {\n const { position } = React.useContext(DrawerContext)\n\n return (\n <Portal>\n <DrawerOverlay />\n <ColorScheme base=\"grey1\" accent=\"primary1\" asChild>\n <StyledContent size=\"lg\" position={position} {...rest} asChild>\n <Flex direction=\"column\">{children}</Flex>\n </StyledContent>\n </ColorScheme>\n </Portal>\n )\n}\n","export const drawerSection = {\n p: '$4',\n width: '100%'\n}\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerFooter = styled('div', {\n ...drawerSection,\n borderTop: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerHeader = styled('div', {\n ...drawerSection,\n minHeight: '$6', // At least the height of the TopBar\n borderBottom: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nimport { drawerSection } from './Drawer.styles'\n\nexport const DrawerMain = styled('div', {\n ...drawerSection,\n flexGrow: 1,\n overflowY: 'auto'\n})\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DrawerTrigger = styled(Trigger, {})\n","import { Root } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { DrawerProvider } from './Drawer.context'\nimport { DrawerClose } from './DrawerClose'\nimport { DrawerContent } from './DrawerContent'\nimport { DrawerFooter } from './DrawerFooter'\nimport { DrawerHeader } from './DrawerHeader'\nimport { DrawerMain } from './DrawerMain'\nimport { DrawerTrigger } from './DrawerTrigger'\n\ntype TDrawerProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof DrawerProvider>\n\nexport const Drawer = ({\n children,\n position,\n ...rest\n}: TDrawerProps): JSX.Element => {\n return (\n <DrawerProvider position={position}>\n <Root {...rest}>{children}</Root>\n </DrawerProvider>\n )\n}\n\nDrawer.Close = DrawerClose\nDrawer.Content = DrawerContent\nDrawer.Main = DrawerMain\nDrawer.Header = DrawerHeader\nDrawer.Footer = DrawerFooter\nDrawer.Trigger = DrawerTrigger\n","import { Content } from '@radix-ui/react-dropdown-menu'\n\nimport { DROPDOWN_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nexport const DropdownMenuContent = styled(Content, {\n bg: 'white',\n borderRadius: '$0',\n boxShadow: '$0',\n py: '$2',\n zIndex: DROPDOWN_Z_INDEX,\n '@allowMotion': {\n animationDuration: '250ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n }\n})\n","import { Item } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nexport const itemStyles = {\n alignItems: 'center',\n color: '$grey1000',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 400,\n position: 'relative',\n px: '$3',\n py: '$2',\n '&[disabled]': { ...disabledStyle, pointerEvents: 'none' },\n '&[aria-current=\"page\"], &:focus': {\n '&::before': {\n borderLeft: '2px solid currentColor',\n content: '',\n height: '$2',\n left: 0,\n outline: 'none',\n position: 'absolute',\n transform: 'scale(1)'\n }\n },\n '&:focus': {\n color: '$primary900',\n outline: 'none'\n },\n '&:hover': { textDecoration: 'underline' }\n}\n\nexport const DropdownMenuItem = styled(Item, itemStyles)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem = ({\n children,\n href,\n ...props\n}: React.ComponentProps<typeof DropdownMenuItem> & { href: string }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\" {...getExternalAnchorProps(href)}>\n {children}\n </StyledLink>\n </DropdownMenuItem>\n)\n","import { Separator } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuSeparator = styled(Separator, {\n height: '1px',\n backgroundColor: '$grey600',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nexport const DropdownMenuTrigger = styled(Trigger, {\n '&[disabled]': disabledStyle\n})\n","import { Portal, Root as DropdownMenuRoot } from '@radix-ui/react-dropdown-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DropdownMenuContent } from './DropdownMenuContent'\nimport { DropdownMenuItem } from './DropdownMenuItem'\nimport { DropdownMenuLinkItem } from './DropdownMenuLinkItem'\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator'\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger'\n\nconst Root = styled(DropdownMenuRoot, {})\n\nexport const DropdownMenu = Object.assign(Root, {\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n Portal: Portal,\n Separator: DropdownMenuSeparator,\n Trigger: DropdownMenuTrigger\n})\n","import { Upload } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\nexport type FileInputProps = React.ComponentProps<typeof Button> & {\n onFileSelect: (selection: FileList | null) => void\n accept?: string\n multiple?: boolean\n}\n\nexport const FileInput = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}: FileInputProps) => {\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target\n\n onFileSelect(files)\n }\n\n return (\n <Button as=\"label\" {...rest}>\n <Icon is={Upload} />\n {children}\n <input\n type=\"file\"\n onChange={handleFileSelect}\n accept={accept}\n multiple={multiple}\n hidden\n />\n </Button>\n )\n}\n\nFileInput.displayName = 'FileInput'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\n\nconst GridContainer = styled('div', {\n display: 'grid',\n variants: {\n gap: createThemeVariants('space', { gap: '$key' })\n }\n})\n\ntype GridProps = React.ComponentProps<typeof GridContainer> & {\n minItemSize?: string\n maxItemSize?: string\n} & {\n css?: CSS\n as?: any\n} // (!) `css` and `as` are both props that come from `stitches`. It would be better to figure out and export the appropriate type for them in stitches!\n\nexport const Grid = ({\n css,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}: GridProps) => (\n <GridContainer\n css={{\n ...(minItemSize && {\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemSize}, ${maxItemSize}))`\n }),\n ...(css as any)\n }}\n gap={gap}\n {...remainingProps}\n />\n)\n\nGrid.displayName = 'Grid'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n hideLabel,\n appearance,\n ...remainingProps\n}: InputFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex/Flex'\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledList } from '../list/List'\nimport { StyledText } from '../text'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n [`& > ${StyledHeading}`]: {\n maxWidth: '65ch'\n },\n [`& > ${StyledText}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledList}`]: {\n maxWidth: '75ch'\n }\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n css\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} css={css}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n","import React from 'react'\n\ninterface NavigationMenuContextValue {\n onNodeUpdate: (\n trigger: HTMLButtonElement,\n itemValue: string\n ) => HTMLButtonElement\n}\n\nexport const NavigationMenuContext = React.createContext<\n NavigationMenuContextValue | undefined\n>(undefined)\n\nexport const useNavigationMenuContext = (): NavigationMenuContextValue => {\n const context = React.useContext(NavigationMenuContext)\n\n if (context === undefined) {\n throw new Error(\n 'useNavigationMenuContext must be used within a NavigationMenuContextProvider'\n )\n }\n\n return context\n}\n","/*\nUsed to block default radix hover to open menu behaviour\nProps: https://github.com/radix-ui/primitives/issues/1630\n*/\nexport const preventEvent = (\n event: React.PointerEvent | Event | React.SyntheticEvent\n): void => {\n const e = event as Event\n e.preventDefault()\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nconst StyledList = styled('ul', {\n listStyle: 'none',\n m: 0,\n p: 0\n})\n\nconst StyledContent = styled(NavigationMenuPrimitive.Content, {\n p: '$3',\n bg: '$dropdownBackground',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\ntype NavigationMenuDropdownContentProps = React.ComponentProps<\n typeof StyledContent\n>\n\nexport const NavigationMenuDropdownContent = ({\n children,\n ...rest\n}: NavigationMenuDropdownContentProps) => (\n <StyledContent\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n {...rest}\n >\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$text',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$text',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n background: '$background',\n '&:hover': { background: '$backgroundHover', color: '$textHover' },\n '&:active': {\n background: '$backgroundActive',\n color: '$textActive'\n },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary800'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: 600,\n color: '$itemTextSelected',\n '&::after': {\n backgroundColor: '$itemBackgroundSelected',\n borderRadius: '$1',\n bottom: 0,\n content: '',\n display: 'block',\n height: '2px',\n left: '50%',\n position: 'absolute',\n transform: 'translate(-50%,0)',\n width: '$2'\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(\n NavigationMenuPrimitive.Trigger,\n navigationMenuBaseItemStyles,\n {\n display: 'flex',\n alignItems: 'center',\n borderRadius: '$1',\n justifyContent: 'space-between',\n '&[data-state=\"open\"]': {\n background: '$triggerBackgroundOpen'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledTrigger>\n> = React.forwardRef(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n >\n {children}\n <Icon\n is={ChevronDown}\n css={{\n ml: '$1',\n '[data-state=open] &': { transform: 'rotate(-180deg)' },\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'transform .2s ease'\n }\n }}\n size=\"sm\"\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React, { ComponentProps, ReactElement } from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { useNavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\n\ntype NavigationMenuDropdownProps = {\n active?: boolean\n css?: CSS\n id: string\n} & React.HTMLProps<HTMLButtonElement>\n\ntype DropdownTriggerProps = ComponentProps<typeof NavigationMenuDropdownTrigger>\n\nexport const NavigationMenuDropdown = ({\n children,\n id,\n ...props\n}: NavigationMenuDropdownProps) => {\n const { onNodeUpdate } = useNavigationMenuContext()\n\n return (\n <NavigationMenuPrimitive.Item value={id}>\n {React.Children.map(children, (child) => {\n const isTrigger =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownTrigger\n const isContent =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownContent\n\n if (!isTrigger && !isContent) {\n throw new Error(\n 'Only NavigationMenu.Trigger and NavigationMenu.Content can be the passed as a \"children\" of NavigationMenu.Dropdown'\n )\n }\n return isTrigger\n ? React.cloneElement(\n child as ReactElement<DropdownTriggerProps>,\n {\n ...props,\n ref: (node: HTMLButtonElement) => onNodeUpdate(node, id)\n } as React.PropsWithRef<DropdownTriggerProps>\n )\n : child\n })}\n </NavigationMenuPrimitive.Item>\n )\n}\n\nNavigationMenuDropdown.displayName = 'NavigationMenuDropdown'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles,\n navigationMenuDisabledItemStyles\n} from './NavigationMenu.styles'\n\nconst DisabledButton = styled('button', {\n ...navigationMenuBaseItemStyles,\n ...navigationMenuDisabledItemStyles\n})\n\nconst ListItem = styled(NavigationMenuPrimitive.Item)\n\nconst StyledLink = styled(\n NavigationMenuPrimitive.Link,\n navigationMenuBaseItemStyles,\n {\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1,\n variants: {\n elementType: {\n dropdownItem: {\n '&[data-active]': {\n background: '$backgroundSelected',\n color: '$textSelected',\n '&:hover': {\n background: '$backgroundSelectedHover',\n color: '$textSelectedHover'\n },\n '&:active': {\n background: '$backgroundSelectedPressed',\n color: '$textSelectedPressed'\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary800',\n color: '$textSelectedFocus'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\nexport const NavigationMenuLink: React.ForwardRefExoticComponent<\n Omit<React.ComponentProps<typeof StyledLink>, 'elementType'> & {\n disabled?: boolean\n variant?: React.ComponentProps<typeof StyledLink>['elementType']\n }\n> = React.forwardRef(\n (\n { children, href, disabled, css, variant = 'link', ref, ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled css={css}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\n {...getExternalAnchorProps(href)}\n {...props}\n >\n {children}\n </StyledLink>\n )}\n </ListItem>\n )\n)\n\nNavigationMenuLink.displayName = 'NavigationMenuLink'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nexport const NavigationMenuDropdownItem: React.ForwardRefExoticComponent<\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n> = React.forwardRef((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$grey900',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$textSubtle',\n background: 'white',\n backgroundHover: '$grey100',\n textHover: '$grey1000',\n backgroundActive: '$grey200',\n textActive: '$grey1000',\n backgroundSelected: '$primary100',\n textSelected: '$primary800',\n textSelectedHover: '$primary800',\n textSelectedPressed: '$primary800',\n textSelectedFocus: '$primary800',\n backgroundSelectedHover: '$grey100',\n backgroundSelectedPressed: '$grey200',\n itemTextSelected: '$grey900',\n itemBackgroundSelected: '$grey900',\n triggerBackgroundOpen: '$grey200',\n dropdownBackground: 'white'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { keyframes, styled } from '~/stitches'\nimport { fadeOut } from '~/utilities/style/keyframe-animations'\n\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\nimport { colorSchemes as navigationMenuColorSchemes } from './stitches.navigationMenu.colorscheme.config'\n\nconst delayedFadeIn = keyframes({\n '0%, 50%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n display: 'flex',\n justifyContent: 'center',\n position: 'relative'\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n all: 'unset',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '$1',\n listStyle: 'none'\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n zIndex: MAX_Z_INDEX\n})\n\nconst ViewportPosition = styled('div', {\n position: 'absolute',\n left: 0,\n top: '100%',\n width: '100%',\n display: 'flex',\n justifyContent: 'center'\n})\n\nconst NavigationMenuComponent = ({\n children,\n css,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n const fadeDuration = 200\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), fadeDuration)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n css={css}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n css={{\n '--navigation-menu-viewport-offset': `${offset || 0}px`,\n transform: `translateX(${offset || 0}px)`,\n '&[data-state=\"open\"]': {\n animation: `${delayedFadeIn} ${fadeDuration}ms ease`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} ${fadeDuration}ms ease-out`\n }\n }}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n","import { Item } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalItem = styled(Item, {})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the `value` prop does nothing, so removing it from typescript\n */\ntype TNavigationMenuVerticalItemProps = Omit<\n React.ComponentProps<typeof StyledNavigationMenuVerticalItem>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => <StyledNavigationMenuVerticalItem {...props} />\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\n\ntype TNavigationMenuVerticalAccordionContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const NavigationMenuVerticalAccordionContext =\n React.createContext<TNavigationMenuVerticalAccordionContextValue>({})\nconst NavigationMenuVerticalAccordionProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <NavigationMenuVerticalAccordionContext.Provider\n value={{ triggerRef, setTriggerRef }}\n >\n {children}\n </NavigationMenuVerticalAccordionContext.Provider>\n )\n}\n\ntype TNavigationMenuVerticalAccordionProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof NavigationMenuVerticalItem>\nexport const NavigationMenuVerticalAccordion = ({\n defaultOpen,\n open,\n onOpenChange,\n disabled,\n ...rest\n}: TNavigationMenuVerticalAccordionProps): JSX.Element => {\n const collapsibleProps = { defaultOpen, open, onOpenChange, disabled }\n return (\n <NavigationMenuVerticalAccordionProvider>\n <Root {...collapsibleProps} asChild>\n <NavigationMenuVerticalItem {...rest} />\n </Root>\n </NavigationMenuVerticalAccordionProvider>\n )\n}\n","import { List } from '@radix-ui/react-navigation-menu'\n\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(List, {\n p: 0,\n m: 0,\n listStyle: 'none',\n '--navigation-menu-vertical-item-pl': '$space$4',\n '& &': {\n '--navigation-menu-vertical-item-pl': '$space$5'\n },\n '& & &': {\n '--navigation-menu-vertical-item-pl': '$space$7'\n },\n '& & & &': {\n '--navigation-menu-vertical-item-pl': '$space$8'\n },\n '& > *:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const NavigationMenuVerticalList = StyledList\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\n\nconst StyledNavigationMenuVerticalAccordionContent = styled(Content, {})\n\ntype TNavigationMenuVerticalAccordionContentProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionContent\n> &\n React.ComponentProps<typeof NavigationMenuVerticalList>\n\nexport const NavigationMenuVerticalAccordionContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalAccordionContentProps): JSX.Element => {\n const { triggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledNavigationMenuVerticalAccordionContent\n onKeyDown={handleOnKeydown}\n {...rest}\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledNavigationMenuVerticalAccordionContent>\n )\n}\n","export const resetButtonStyles = {\n p: 0,\n border: 'none',\n outline: 'none',\n font: 'inherit',\n color: 'inherit',\n background: 'none',\n textAlign: 'inherit'\n}\n\nexport const resetLinkStyles = {\n textDecoration: 'unset',\n color: 'inherit'\n}\n","import { focusVisibleStyleBlock } from '~/utilities'\nimport { resetButtonStyles, resetLinkStyles } from '~/utilities/style/reset'\n\nexport const navigationMenuVerticalItemStyles = {\n ...resetButtonStyles,\n ...resetLinkStyles,\n cursor: 'pointer',\n borderRadius: '$2',\n display: 'flex',\n alignItems: 'center',\n p: '$2',\n pl: `var(--navigation-menu-vertical-item-pl)`,\n width: '100%',\n color: '$text',\n bg: '$background',\n '--navigation-menu-vertical-item-font-weight': 400,\n '&[data-active]': {\n bg: '$backgroundSelected',\n color: '$textSelected',\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[data-state=open]': {\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover': {\n bg: '$backgroundHover'\n },\n '&:active': {\n bg: '$backgroundActive'\n },\n '&:focus-visible': focusVisibleStyleBlock()\n },\n variants: {\n size: {\n md: {\n minHeight: '$4'\n },\n lg: {\n minHeight: '$5'\n }\n }\n }\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalIcon = styled(Icon, {\n alignSelf: 'start'\n})\nexport const NavigationMenuVerticalIcon = (\n props: React.ComponentProps<typeof StyledNavigationMenuVerticalIcon>\n): JSX.Element => <StyledNavigationMenuVerticalIcon size=\"md\" {...props} />\n","import { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const SideBarHeader = styled('div', {\n borderBottom: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBody = styled('div', {\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarFooter = styled('div', {\n borderTop: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBrand = styled('a', {\n alignItems: 'flex-end',\n color: '$text',\n display: 'flex',\n gap: '$4',\n textDecoration: 'none',\n '&:hover, &:focus': {\n textDecoration: 'none'\n }\n})\n\nexport const SideBarBrandLogo = Image\n\nexport const SideBarBrandName = styled(Text, {\n color: '$text',\n whiteSpace: 'nowrap'\n})\n","import * as React from 'react'\n\nexport const SideBarContext = React.createContext<{\n isExpanded?: boolean\n}>({\n isExpanded: undefined\n})\n\nexport const useSidebarState = () => React.useContext(SideBarContext)\n","import React from 'react'\nimport { useFocusWithin, useHover, useInteractOutside } from 'react-aria'\n\nimport { createTheme, styled } from '~/stitches'\n\nimport {\n SideBarBody,\n SideBarBrand,\n SideBarBrandLogo,\n SideBarBrandName,\n SideBarFooter,\n SideBarHeader\n} from './SideBarComponents'\nimport { SideBarContext } from './SideBarContext'\n\nconst SIZE_COLLAPSED = '5.5rem'\nconst SIZE_EXPANDED = '16rem'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n text: '$grey800',\n border: '$grey200'\n }\n})\n\nconst Root = styled('div', {\n position: 'sticky',\n zIndex: 1,\n variants: {\n type: {\n static: {},\n expandable: { width: SIZE_COLLAPSED }\n }\n }\n})\n\nconst Content = styled('div', {\n bg: '$background',\n borderRight: '1px solid $border',\n boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0)',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflow: 'hidden',\n willChange: 'width',\n '@allowMotion': {\n transition: 'width 125ms ease-out, box-shadow 125ms ease-out'\n },\n variants: {\n type: {\n static: {},\n expandable: {}\n },\n isExpanded: {\n true: { width: SIZE_EXPANDED },\n false: { width: SIZE_COLLAPSED }\n }\n },\n compoundVariants: [\n {\n isExpanded: true,\n type: 'expandable',\n css: { boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0.1)' }\n }\n ]\n})\n\nconst PointerBlocker = styled('div', {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transition: 'all',\n variants: {\n isVisible: {\n true: { visibility: 'visible', transitionDelay: '0s' },\n false: { visibility: 'hidden', transitionDelay: '50ms' }\n }\n }\n})\n\ntype SideBarProps = React.ComponentProps<typeof Root> & {\n offset?: number | string\n}\n\nexport const SideBar = ({\n className = light,\n children,\n type = 'expandable',\n offset = '0px',\n css,\n ...rest\n}: SideBarProps) => {\n const [isExpanded, setIsExpanded] = React.useState(type === 'static')\n const ref = React.useRef<HTMLDivElement>(null)\n\n useInteractOutside({\n ref,\n onInteractOutside: () => setIsExpanded(false)\n })\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => setIsExpanded(true),\n onBlurWithin: () => setIsExpanded(false)\n })\n const { hoverProps, isHovered } = useHover({\n onHoverStart: () => setIsExpanded(true),\n onHoverEnd: () => setIsExpanded(false)\n })\n const touchProps = {\n onTouchEnd: () => setIsExpanded(true)\n }\n\n const expandableProps =\n type === 'expandable'\n ? {\n ...focusWithinProps,\n ...hoverProps,\n ...touchProps,\n ref\n }\n : {}\n\n return (\n <SideBarContext.Provider value={{ isExpanded }}>\n <Root\n {...rest}\n className={className}\n css={{ height: `calc(100svh - ${offset})`, top: offset, ...css }}\n type={type}\n >\n <Content {...expandableProps} isExpanded={isExpanded} type={type}>\n {children}\n {/**\n * When the SideBar is collapsed, ensure that the initial tap event\n * is used to expand the nav first before making the items available\n */}\n {type === 'expandable' && (\n <PointerBlocker isVisible={!isHovered && !isExpanded} />\n )}\n </Content>\n </Root>\n </SideBarContext.Provider>\n )\n}\n\nSideBar.Brand = SideBarBrand\nSideBar.BrandLogo = SideBarBrandLogo\nSideBar.BrandName = SideBarBrandName\nSideBar.Header = SideBarHeader\nSideBar.Body = SideBarBody\nSideBar.Footer = SideBarFooter\n\nSideBar.displayName = 'SideBar'\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { useSidebarState } from '../side-bar'\n\nconst SIZE_EXPANDED_MAX = '10rem'\n\nconst StyledNavigationMenuVerticalText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n fontWeight: 'var(--navigation-menu-vertical-item-font-weight)',\n lineHeight: 1.2,\n width: 'max-content',\n maxWidth: SIZE_EXPANDED_MAX,\n variants: {\n isExpanded: {\n true: {\n opacity: 1,\n '@allowMotion': {\n transform: 'translate(0)',\n transition: 'opacity 125ms ease-out, transform 125ms ease-out'\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n transform: 'translate(8px)',\n transition: 'opacity 125ms ease-out, transform 0ms ease-out 125ms'\n }\n }\n }\n }\n})\n\ntype TStyledNavigationMenuVerticalTextProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalText\n>\n\nexport const NavigationMenuVerticalText = (\n props: TStyledNavigationMenuVerticalTextProps\n): JSX.Element => {\n const { isExpanded } = useSidebarState()\n return (\n <StyledNavigationMenuVerticalText\n size=\"md\"\n as=\"span\"\n {...props}\n isExpanded={isExpanded}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => {\n return (\n <Flex gap={2} align=\"center\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <NavigationMenuVerticalText>{child}</NavigationMenuVerticalText>\n )\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <NavigationMenuVerticalIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n )\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalAccordionTrigger = styled(\n Trigger,\n navigationMenuVerticalItemStyles\n)\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\ntype TNavigationMenuAccordionTriggerProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionTrigger\n>\n\nexport const NavigationMenuVerticalAccordionTrigger = ({\n children,\n ...rest\n}: TNavigationMenuAccordionTriggerProps) => {\n const { setTriggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n return (\n <Link asChild>\n <StyledNavigationMenuVerticalAccordionTrigger size=\"lg\" {...rest} asChild>\n <Flex\n as=\"button\"\n type=\"button\"\n align=\"center\"\n justify=\"space-between\"\n gap={3}\n ref={setTriggerRef}\n >\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n <StyledIcon size=\"sm\" is={ChevronDown} />\n </Flex>\n </StyledNavigationMenuVerticalAccordionTrigger>\n </Link>\n )\n}\n","import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(\n Link,\n navigationMenuVerticalItemStyles\n)\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const Component = as || (href ? 'a' : 'button')\n const componentProps = as\n ? {}\n : href\n ? getExternalAnchorProps(href)\n : { type: 'button' }\n\n return (\n <NavigationMenuVerticalItem>\n <StyledNavigationMenuVerticalLink\n size=\"lg\"\n href={href}\n {...rest}\n {...componentProps}\n onSelect={preventEvent}\n asChild // ?: Can't use `as` for this as we lose `data-active` etc. attributes when we try to. Using `asChild` and `Component` as a workaround.\n >\n <Component>\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n </Component>\n </StyledNavigationMenuVerticalLink>\n </NavigationMenuVerticalItem>\n )\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$foreground',\n background: '$base1',\n backgroundHover: '$base2',\n backgroundActive: '$base3',\n textSelected: '$accent9',\n backgroundSelected: '$accent2'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import { Root } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordion } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalAccordionContent } from './NavigationMenuVerticalAccordionContent'\nimport { NavigationMenuVerticalAccordionTrigger } from './NavigationMenuVerticalAccordionTrigger'\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\nimport { NavigationMenuVerticalLink } from './NavigationMenuVerticalLink'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\nimport { colorSchemes as navigationMenuVerticalColorSchemes } from './stitches.navigationMenuVertical.colorscheme.config'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the below `value` based props and `Trigger`/`Content`\n * animations do nothing, so removing them from typescript\n */\ntype TNavigationVerticalProps = Omit<\n React.ComponentProps<typeof StyledRoot>,\n | 'delayDuration'\n | 'skipDelayDuration'\n | 'defaultValue'\n | 'value'\n | 'onValueChange'\n>\n\nexport const NavigationMenuVertical = Object.assign(\n ({ children, ...rest }: TNavigationVerticalProps) => (\n <StyledRoot\n className={navigationMenuVerticalColorSchemes['light']}\n {...rest}\n orientation=\"vertical\"\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledRoot>\n ),\n {\n Link: NavigationMenuVerticalLink,\n Accordion: NavigationMenuVerticalAccordion,\n AccordionContent: NavigationMenuVerticalAccordionContent,\n AccordionTrigger: NavigationMenuVerticalAccordionTrigger,\n Item: NavigationMenuVerticalItem,\n ItemContent: NavigationMenuVerticalItemContent,\n Icon: NavigationMenuVerticalIcon,\n Text: NavigationMenuVerticalText\n }\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nconst StyledWrapper = styled(Box, {\n position: 'relative'\n})\n\nconst StyledBadge = styled(Flex, {\n fontFamily: '$body',\n fontSize: '$sm',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translate(calc($sizes$2 / 2), -50%)',\n borderRadius: '$round',\n p: '$2',\n height: '$2',\n minWidth: '$2',\n textAlign: 'center',\n color: '#fff',\n bg: '$primary800'\n})\n\ntype NotificationBadgeProps = {\n value: number | string\n}\n\nexport const NotificationBadge = ({\n value,\n children\n}: React.PropsWithChildren<NotificationBadgeProps>) => (\n <StyledWrapper>\n {!!value && <StyledBadge role=\"status\">{value}</StyledBadge>}\n {children}\n </StyledWrapper>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\n\nconst StyledSpan = styled('span', { zIndex: 1 })\n\nconst StyledStepperButton = styled(ActionIcon, {\n borderRadius: '$1',\n zIndex: 1,\n height: '100% !important',\n '&:hover': {\n bg: '$grey100',\n svg: { color: '$grey800' }\n },\n svg: {\n color: '$grey700'\n },\n '&:active': {\n bg: '$grey200',\n svg: { color: '$grey900' }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n },\n variants: {\n fieldAppearance: {\n standard: {\n backgroundColor: 'white',\n borderColor: '$grey800 !important'\n },\n modern: {\n backgroundColor: '$grey100',\n borderColor: '$grey100 !important'\n }\n }\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> &\n Omit<React.ComponentProps<typeof StyledStepperButton>, 'children'> & {\n icon: React.FC<React.SVGProps<SVGSVGElement>>\n showTooltip?: boolean\n disabledTooltipContent?: string\n }\n\nexport const NumberInputStepper: React.ForwardRefExoticComponent<NumberInputStepperProps> =\n React.forwardRef((props, forwardedRef) => {\n const {\n icon,\n disabledTooltipContent,\n showTooltip,\n fieldAppearance = 'standard',\n ...rest\n } = props\n\n /**\n * Focus has been removed from the button\n * as the increment and decrement buttons should be keyboard accessible via arrow keys.\n * see MDN docs https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/spinbutton_role\n */\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>\n <StyledSpan tabIndex={-1}>\n <StyledStepperButton\n hasTooltip={false}\n tabIndex={-1}\n appearance=\"outline\"\n fieldAppearance={fieldAppearance}\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </StyledStepperButton>\n </StyledSpan>\n </Tooltip.Trigger>\n {showTooltip && (\n <Tooltip.Content>{disabledTooltipContent}</Tooltip.Content>\n )}\n </Tooltip>\n )\n })\n","import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled, type CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nconst NumberInputContainer = styled(Flex, {\n variants: {\n appearance: {\n standard: {},\n modern: { gap: '1px' }\n }\n }\n})\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport {\n useFieldError,\n useFormCustomContext,\n ValidationOptions\n} from '~/components/form'\nimport type { CSS } from '~/stitches'\n\nimport type { NumberInputProps } from '../number-input/NumberInput'\nimport { NumberInput } from '../number-input/NumberInput'\n\nexport interface NumberInputFieldProps extends NumberInputProps {\n css?: CSS\n hideLabel?: boolean\n description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField = ({\n css,\n defaultValue = 0,\n hideLabel,\n value,\n prompt,\n description,\n label,\n name,\n validation,\n onValueChange,\n appearance,\n ...remainingProps\n}: NumberInputFieldProps) => {\n const { control } = useFormContext()\n const context = useFormCustomContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n const formAppearance = context?.appearance || appearance\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <NumberInput\n id={name}\n name={innerName}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n appearance={formAppearance}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledProgressBar = styled(Progress.Root, {\n borderRadius: '$round',\n background: '$grey200',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n size: {\n sm: { height: '4px' },\n md: { height: '$0' }\n },\n theme: {\n primary: { color: '$primary800' },\n info: { color: '$info' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' },\n neutral: { color: '$grey800', bg: '$grey400' }\n }\n }\n})\n\nconst StyledIndicator = styled(Progress.Indicator, {\n backgroundColor: 'currentcolor',\n borderRadius: '$round',\n boxSizing: 'border-box',\n height: '100%',\n position: 'absolute',\n transition: 'all 300ms ease-out'\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n style={{\n width: '100%',\n transform: `translateX(-${100 - ((value || 0) / max) * 100}%)`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n","import * as React from 'react'\n\nimport { InlineFieldWrapper } from '~/components/field-wrapper'\nimport { ValidationOptions } from '~/components/form'\nimport { RadioButton } from '~/components/radio-button'\nimport { CSS } from '~/stitches'\n\ntype RadioFieldProps = {\n css?: CSS\n defaultChecked?: boolean\n error?: string\n label: string\n validation?: ValidationOptions\n} & React.ComponentProps<typeof RadioButton>\n\nexport const RadioField = ({\n css,\n label,\n value,\n ...remainingProps\n}: RadioFieldProps) => (\n <InlineFieldWrapper css={css} label={label}>\n <RadioButton value={value} {...remainingProps} />\n </InlineFieldWrapper>\n)\n\nRadioField.displayName = 'RadioField'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldElementWrapperProps } from '~/components/field-wrapper'\nimport { Description as FieldDescription } from '~/components/field-wrapper/FieldDescription'\nimport { useFieldError } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButtonGroup } from '~/components/radio-button'\nimport { styled } from '~/stitches'\n\nimport { RadioField } from './RadioField'\n\nconst Fieldset = styled('fieldset', {\n all: 'unset'\n})\n\ntype RadioButtonFieldProps = React.ComponentProps<typeof RadioButtonGroup> &\n FieldElementWrapperProps\n\nconst RadioButtonFieldComponent = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}: RadioButtonFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <Fieldset css={css}>\n <Label\n as=\"legend\"\n css={{ p: 0, mb: '$3' }}\n required={Boolean(validation?.required)}\n >\n {label}\n </Label>\n {description && (\n <FieldDescription css={{ mb: '$3' }}>{description}</FieldDescription>\n )}\n\n <RadioButtonGroup\n ref={ref}\n direction={direction}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n {...remainingProps}\n >\n {children}\n </RadioButtonGroup>\n\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Fieldset>\n )\n}\n\nexport const RadioButtonField = Object.assign(RadioButtonFieldComponent, {\n Item: RadioField\n})\n\nRadioButtonFieldComponent.displayName = 'RadioButtonField'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box/Box'\n\nexport const StyledRadioCard = styled(RadioGroup.Item, {\n alignItems: 'center',\n bg: 'white',\n border: '1px solid $grey600',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary800',\n outlineOffset: '-2px'\n },\n variants: {\n align: {\n left: { flexDirection: 'row' },\n right: { flexDirection: 'row-reverse' }\n },\n size: {\n md: { px: '$4', py: '$3' },\n lg: { px: '$5', py: '$4' }\n },\n isFullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n }\n})\n\nconst RadioButton = styled('div', {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey900',\n borderRadius: '$round',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 0,\n size: '$1',\n transition: 'all 50ms ease-out',\n '[data-state=\"checked\"] &': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n variants: {\n containerIsFullWidth: {\n true: {},\n false: {}\n },\n align: {\n left: { mr: '$4' },\n right: {}\n }\n },\n\n compoundVariants: [\n {\n containerIsFullWidth: true,\n align: 'right',\n css: { ml: 'auto' }\n },\n {\n containerIsFullWidth: false,\n align: 'right',\n css: { ml: '$4' }\n }\n ]\n})\n\nconst Indicator = styled(RadioGroup.Indicator, {\n backgroundColor: 'white',\n borderRadius: '$round',\n position: 'absolute',\n size: '6px'\n})\n\ntype RadioCardProps = React.ComponentProps<typeof StyledRadioCard>\n\nexport const RadioCard = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}: RadioCardProps) => (\n <StyledRadioCard\n {...rest}\n align={align}\n isFullWidth={isFullWidth}\n size={size}\n >\n <RadioButton align={align} containerIsFullWidth={isFullWidth}>\n <Indicator />\n </RadioButton>\n <Box>{children}</Box>\n </StyledRadioCard>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Flex>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <Flex direction=\"row\" justify={justify} gap={gap} wrap=\"wrap\" css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof RadioCard>>,\n { size, isFullWidth, align }\n )\n }\n return child\n })}\n </Flex>\n </RadioGroup.Root>\n)\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SearchFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nSearchField.displayName = 'SearchField'\n","import React from 'react'\n\nimport type { SectionMessageTheme } from './SectionMessage'\n\nexport type SectionMessageContextValue = {\n theme: SectionMessageTheme\n hasIcon: boolean\n setHasIcon: React.Dispatch<React.SetStateAction<boolean>>\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\nexport type SectionMessageProviderProps = {\n theme: SectionMessageTheme\n children: React.ReactNode\n}\n\nexport const SectionMessageContext =\n React.createContext<SectionMessageContextValue | null>(null)\n\nexport const SectionMessageProvider = ({\n theme = 'info',\n children\n}: SectionMessageProviderProps): JSX.Element => {\n const [hasIcon, setHasIcon] = React.useState(false)\n const [hasDismiss, setHasDismiss] = React.useState(false)\n\n const value = React.useMemo<SectionMessageContextValue>(\n () => ({ theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss }),\n [theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss]\n )\n\n return (\n <SectionMessageContext.Provider value={value}>\n {children}\n </SectionMessageContext.Provider>\n )\n}\n\nexport const useSectionMessageContext = (): SectionMessageContextValue => {\n const context = React.useContext(SectionMessageContext)\n\n if (!context) {\n throw new Error(\n 'useSectionMessageContext must be used within a SectionMessageProvider'\n )\n }\n\n return context\n}\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageDescription = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n color: '$grey900',\n ...css\n }}\n size=\"sm\"\n {...rest}\n />\n)\n","import { Close } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Dismissible } from '../dismissible'\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nexport const SectionMessageDismiss = ({\n label = 'Dismiss',\n css,\n ...rest\n}: React.ComponentProps<typeof ActionIcon>): JSX.Element => {\n const { setHasDismiss } = useSectionMessageContext()\n\n useEffect(() => {\n setHasDismiss(true)\n return () => setHasDismiss(false)\n }, [setHasDismiss])\n\n return (\n <Dismissible.Trigger asChild>\n <ActionIcon\n label={label}\n css={{\n m: 'auto',\n position: 'absolute',\n top: '$2',\n right: '$2',\n ...css\n }}\n size=\"sm\"\n appearance=\"simple\"\n theme=\"neutral\"\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n </Dismissible.Trigger>\n )\n}\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nconst themeIcons = {\n success: OkCircle,\n warning: Danger,\n error: Error,\n neutral: Info,\n info: Info\n}\n\ntype SectionMessageIconProps = Partial<React.ComponentProps<typeof Icon>>\n\nexport const SectionMessageIcon = ({\n css,\n is,\n ...rest\n}: SectionMessageIconProps): JSX.Element => {\n const { theme, setHasIcon } = useSectionMessageContext()\n\n useEffect(() => {\n setHasIcon(true)\n return () => setHasIcon(false)\n }, [setHasIcon])\n\n return (\n <Icon\n css={{\n m: 'auto',\n position: 'absolute',\n left: '$4',\n top: '$4',\n color: 'currentColor',\n ...css\n }}\n is={is || themeIcons[theme]}\n size=\"sm\"\n {...rest}\n />\n )\n}\n","import React from 'react'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nexport const SectionMessageContent = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Box>): JSX.Element => (\n <Box\n css={{\n maxWidth: '100%',\n flexShrink: 0,\n paddingTop: '$0',\n ['& > *:not(:last-child)']: { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Flex>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Flex wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = (\n props: React.ComponentProps<typeof Text>\n): JSX.Element => <Text size=\"md\" weight=\"bold\" {...props} />\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport {\n SectionMessageProvider,\n useSectionMessageContext\n} from './SectionMessageContext'\nimport { SectionMessageDescription } from './SectionMessageDescription'\nimport { SectionMessageDismiss } from './SectionMessageDismiss'\nimport { SectionMessageIcon } from './SectionMessageIcon'\nimport {\n SectionMessageActions,\n SectionMessageContent\n} from './SectionMessageLayout'\nimport { SectionMessageTitle } from './SectionMessageTitle'\n\nconst StyledSectionMessage = styled(Dismissible, {\n position: 'relative',\n borderRadius: '$1',\n display: 'flex',\n minHeight: '$5',\n p: '$4',\n border: '1px solid white',\n variants: {\n theme: {\n success: {\n bg: '$successLight',\n color: '$successDark'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n error: {\n bg: '$dangerLight',\n color: '$dangerDark'\n },\n neutral: {\n bg: '$grey100',\n color: '$grey1000'\n },\n info: {\n bg: '$infoLight',\n color: '$infoDark'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst SectionMessageRoot = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledSectionMessage>): JSX.Element => {\n const { theme, hasIcon, hasDismiss } = useSectionMessageContext()\n\n return (\n <StyledSectionMessage\n {...rest}\n theme={theme}\n hasIcon={hasIcon}\n hasDismiss={hasDismiss}\n >\n <Flex gap={3} justify=\"space-between\" css={{ flexGrow: 1 }}>\n {children}\n </Flex>\n </StyledSectionMessage>\n )\n}\n\nexport type SectionMessageTheme =\n | 'success'\n | 'warning'\n | 'error'\n | 'neutral'\n | 'info'\n\nexport interface SectionMessageProps\n extends React.ComponentProps<typeof SectionMessageRoot> {\n theme?: SectionMessageTheme\n}\n\nexport const SectionMessage = ({\n theme = 'info',\n ...rest\n}: SectionMessageProps): JSX.Element => {\n return (\n <TooltipProvider>\n <SectionMessageProvider theme={theme}>\n <SectionMessageRoot {...rest} />\n </SectionMessageProvider>\n </TooltipProvider>\n )\n}\n\nSectionMessage.Title = SectionMessageTitle\nSectionMessage.Description = SectionMessageDescription\nSectionMessage.Icon = SectionMessageIcon\nSectionMessage.Dismiss = SectionMessageDismiss\nSectionMessage.Content = SectionMessageContent\nSectionMessage.Actions = SectionMessageActions\n","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { disabledStyle, encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n borderRadius: '$1',\n color: '$grey1000',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': disabledStyle,\n variants: {\n size: {\n sm: {\n backgroundPosition: 'right $space$2 top 50%, 0 0',\n backgroundSize: '18px auto, 100%',\n fontSize: '$sm',\n height: '$3',\n pl: '$2',\n pr: '$5'\n },\n md: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$4',\n pl: '$3',\n pr: '$6'\n },\n lg: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$5',\n pl: '$3',\n pr: '$6'\n }\n },\n state: {\n error: {}\n },\n appearance: {\n standard: {\n backgroundColor: 'white',\n border: '1px solid $grey700',\n '&:focus': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n backgroundColor: '$grey100',\n border: 'none',\n '&:focus': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n backgroundColor: '$dangerLight',\n '&:focus': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type SelectProps = Override<\n React.ComponentProps<typeof StyledSelect>,\n {\n as?: never\n placeholder?: string\n }\n // TODO: figure out why uncommenting this causes TS errors in\n // component declaration\n // & (\n // | { id: string; 'aria-label'?: string }\n // | { 'aria-label': string; id?: string }\n // )\n>\n\nexport const Select: React.ForwardRefExoticComponent<SelectProps> =\n React.forwardRef(\n (\n {\n placeholder,\n children,\n size = 'md',\n appearance = 'standard',\n ...remainingProps\n },\n ref\n ) => {\n const props = { size, appearance, ref, ...remainingProps }\n\n if (\n [remainingProps.value, remainingProps.defaultValue].every(\n (value) => value === undefined\n )\n ) {\n props.defaultValue = ''\n }\n\n return (\n <StyledSelect {...props}>\n {placeholder && (\n <option disabled hidden value=\"\">\n {placeholder}\n </option>\n )}\n {children}\n </StyledSelect>\n )\n }\n )\n\nSelect.displayName = 'Select'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField = ({\n css = undefined,\n hideLabel,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SelectFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Select\n name={name}\n id={name}\n appearance={formAppearance}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n height: '$space$3',\n mt: '$3',\n position: 'relative',\n width: '100%'\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n css={{\n position: 'absolute',\n color: '$grey700'\n }}\n style={{\n left: `${getPercentValue(step.value, min, max)}%`,\n transform: `translateX(-${getTransformValue(\n step.value,\n min,\n max\n )}%)`\n }}\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text css={{ mt: '$4', color: '$grey700', width: '100%' }}>\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n","import { Range, Root, Thumb, Track } from '@radix-ui/react-slider'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { CSSWrapper, disabledStyle } from '~/utilities'\n\nimport { SliderSteps } from './SliderSteps'\nimport { SliderValue } from './SliderValue'\n\nconst StyledTrack = styled(Track, {\n borderRadius: '$round',\n flexGrow: 1,\n position: 'relative',\n '&[data-orientation=\"horizontal\"]': { height: '$space$1' },\n '&[data-orientation=\"vertical\"]': { width: '$space$1' }\n})\n\nconst StyledSlider = styled(Root, {\n alignItems: 'center',\n display: 'flex',\n position: 'relative',\n touchAction: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n '&[data-orientation=\"horizontal\"]': {\n height: '$1'\n },\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$1'\n },\n '&[disabled]': disabledStyle,\n variants: {\n theme: {\n light: {\n [`${StyledTrack}`]: { bg: '#fff' }\n },\n tonal: {\n [`${StyledTrack}`]: { bg: '$grey600' }\n }\n }\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary800',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[disabled]': disabledStyle\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primary900',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primary1000'\n },\n '&:focus': {\n outline: '2px solid $primary900',\n outlineOffset: '2px'\n },\n '&[disabled]': disabledStyle\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider>\n\ntype SliderType = React.ForwardRefExoticComponent<SliderProps> & {\n Value: typeof SliderValue\n Steps: typeof SliderSteps\n}\n\nexport const Slider: SliderType = React.forwardRef(\n (\n {\n value,\n defaultValue,\n min = 0,\n max = 100,\n theme = 'tonal',\n css,\n children,\n ...remainingProps\n },\n ref\n ) => {\n const values = value || defaultValue\n return (\n <CSSWrapper css={css}>\n <StyledSlider\n theme={theme}\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n","import React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { Slider, SliderProps } from '~/components/slider'\nimport { SliderStepsType } from '~/components/slider/SliderSteps'\n\nimport { SliderValueType } from '../slider/SliderValue'\n\ntype SliderFieldProps = SliderProps &\n SliderStepsType &\n SliderValueType &\n FieldElementWrapperProps\n\nexport const SliderField = ({\n css,\n hideLabel,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}: SliderFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (value?.length) onChange(value)\n }, [JSON.stringify(value)])\n\n return (\n <FieldWrapper css={css} fieldId={name} label={label} hideLabel={hideLabel}>\n <Slider\n ref={ref}\n name={innerName}\n onValueChange={onChange}\n value={innerValue}\n min={min}\n max={max}\n {...remainingProps}\n >\n <Slider.Steps min={min} max={max} steps={steps} />\n\n <Slider.Value value={innerValue} outputLabel={outputLabel} />\n </Slider>\n </FieldWrapper>\n )\n}\n\nSliderField.displayName = 'SliderField'\n","import { styled } from '~/stitches'\n\n/**\n * A flexible flex spacer that expands along the major axis of its containing flex layout.\n * It renders a `div` by default, and takes up any available space.\n */\nexport const Spacer = styled('div', {\n flex: 1,\n justifySelf: 'stretch',\n alignSelf: 'stretch'\n})\n\nSpacer.displayName = 'Spacer'\n","import * as React from 'react'\n\nimport { Context, StepperProviderProps } from '../types'\n\nconst StepperContext = React.createContext<Context>({\n steps: [],\n goToPreviousStep: () => null,\n goToNextStep: () => null,\n goToStep: () => null,\n activeStep: 0,\n viewedSteps: [],\n allowSkip: false,\n direction: 'horizontal',\n hideLabels: false,\n completedSteps: [],\n showCompletedIcons: false\n})\n\nexport const StepperProvider = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}: React.PropsWithChildren<StepperProviderProps>) => {\n const [activeStep, setActiveStep] = React.useState(0)\n\n const [viewedSteps, setviewedSteps] = React.useState<number[]>([0])\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([])\n\n const isControlled = !stepCount\n\n React.useEffect(() => {\n setviewedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n\n onStepChange?.(activeStep)\n }, [activeStep, onStepChange])\n\n const goToNextStep = () => {\n const isCompleted = onComplete && activeStep === stepCount - 1\n const isNextStep = activeStep < stepCount - 1\n\n if (onComplete || isNextStep) {\n setCompletedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n }\n\n if (isCompleted) {\n return onComplete?.()\n }\n if (isNextStep) {\n return setActiveStep((current) => current + 1)\n }\n }\n\n const goToPreviousStep = () => {\n setActiveStep((current) => current - 1)\n }\n\n const goToStep = (index: number) => {\n setActiveStep(index)\n }\n\n return (\n <StepperContext.Provider\n value={{\n steps: steps || Array(stepCount).fill(''),\n goToPreviousStep: isControlled ? undefined : goToPreviousStep,\n goToNextStep: isControlled ? undefined : goToNextStep,\n goToStep: isControlled ? undefined : goToStep,\n activeStep,\n viewedSteps,\n completedSteps,\n allowSkip,\n direction,\n hideLabels,\n showCompletedIcons\n }}\n >\n {children}\n </StepperContext.Provider>\n )\n}\n\nexport const useStepper = (): Context => {\n const context = React.useContext(StepperContext)\n if (!context)\n throw new Error(\n 'Ensure that you wrap any components with the root component Stepper'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepBack = ({\n label,\n children,\n ...rest\n}: IStepperNavigateProps & React.ComponentProps<typeof Button>) => {\n const { activeStep, goToPreviousStep } = useStepper()\n return (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n {...rest}\n disabled={activeStep === 0}\n onClick={goToPreviousStep}\n >\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepForward = ({\n label,\n children,\n onClick,\n ...rest\n}: IStepperNavigateProps & Partial<React.ComponentProps<typeof Button>>) => {\n const { goToNextStep, activeStep } = useStepper()\n\n const handleClick = () => {\n if (onClick) {\n return onClick(() => goToNextStep?.())\n }\n goToNextStep?.()\n }\n\n return (\n <Button size=\"sm\" {...rest} onClick={handleClick} css={{ ml: 'auto' }}>\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepBullet = styled(Flex, {\n position: 'relative',\n p: '$2',\n justifyContent: 'center',\n alignItems: 'center',\n size: '$3',\n borderRadius: '50%',\n border: 'none',\n bg: '$grey200',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$grey200', color: '$grey700' },\n active: {\n bg: 'white',\n color: '$primary900',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $grey600',\n color: '$grey1000'\n },\n completed: { bg: '$primary800', color: 'white' },\n reviewed: { bg: '$primary900', color: 'white' },\n success: { bg: '$success', color: 'white' }\n }\n }\n})\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepContainer = styled(Flex, {\n position: 'relative',\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n alignItems: 'center',\n '&:not(:last-child)::after': {\n content: '',\n position: 'absolute'\n },\n '&:focus-visible': {\n outline: 'none'\n },\n variants: {\n canInteract: { true: {} },\n direction: {\n vertical: {\n py: '$3',\n flexDirection: 'row',\n '&:not(:last-child)::after': {\n height: '100%',\n width: '4px',\n left: '14px',\n top: '50%'\n }\n },\n horizontal: {\n px: '$2',\n flexDirection: 'column',\n '&:not(:last-child)::after': {\n width: '100%',\n height: '4px',\n left: '50%',\n top: '14px'\n }\n }\n },\n separator: {\n default: { '&:not(:last-child)::after': { bg: '$grey200' } },\n active: { '&:not(:last-child)::after': { bg: '$primary800' } },\n success: { '&:not(:last-child)::after': { bg: '$success' } },\n viewed: { '&:not(:last-child)::after': { bg: '$grey600' } }\n },\n status: {\n completed: {},\n active: {},\n default: {},\n viewed: {},\n success: {},\n reviewed: {}\n }\n },\n compoundVariants: [\n {\n canInteract: true,\n status: 'completed',\n css: {\n '&:hover': {\n '& :first-child': { bg: '$primary900', color: 'white !important' },\n '& :last-child': { color: '$primary900' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'reviewed',\n css: {\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n }\n ]\n})\n","import { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport const StepperStepLabel = styled(Text, {\n fontWeight: 600,\n variants: {\n direction: {\n vertical: { ml: '$3', textAlign: 'left' },\n horizontal: { mt: '$3', textAlign: 'center' }\n },\n status: {\n default: { color: '$grey700', fontWeight: 400 },\n active: {\n color: '$primary900'\n },\n viewed: { color: '$grey1000' },\n completed: { color: '$primary800' },\n success: { color: '$success' },\n reviewed: {}\n }\n }\n})\n","import { CSS } from '~/stitches'\n\nexport enum Status {\n ACTIVE = 'active',\n VIEWED = 'viewed',\n SUCCESS = 'success',\n DEFAULT = 'default',\n COMPLETED = 'completed',\n REVIEWED = 'reviewed'\n}\nexport interface Step {\n label?: string\n status: `${Status}`\n}\n\nexport type Direction = 'vertical' | 'horizontal'\n\nexport type Context = {\n steps: Step[]\n goToPreviousStep?: () => void\n goToNextStep?: () => void\n goToStep?: (index: number) => void\n activeStep: number\n viewedSteps: number[]\n completedSteps: number[]\n allowSkip?: boolean\n direction?: Direction\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport type StepperProviderProps = {\n stepCount: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps: Step[]\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport interface IStepperProps {\n css?: CSS\n stepCount?: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps?: Step[]\n hideLabels?: boolean\n showCompletedIcons?: boolean\n}\n\nexport interface IStepperNavigateProps {\n label?: (currentStep?: number) => string\n onClick?: (next: () => void) => void\n}\n\nexport interface IStepperStepsProps {\n css?: CSS\n}\n","import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n justifyContent: 'space-between',\n variants: {\n direction: {\n vertical: { flexDirection: 'column' },\n horizontal: { flexDirection: 'row' }\n }\n }\n})\n\nexport const StepperSteps = ({ css }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer css={css} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n css={\n direction === 'horizontal'\n ? { width: `calc(100% / ${steps.length})` }\n : { height: `calc(100% / ${steps.length})` }\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n css={{\n cursor:\n allowSkip && viewedSteps.includes(index) ? 'pointer' : 'auto'\n }}\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Box } from '../box/Box'\nimport { StepperProvider } from './stepper-context/StepperContext'\nimport { StepperStepBack } from './StepperStepBack'\nimport { StepperStepForward } from './StepperStepForward'\nimport { StepperSteps } from './StepperSteps'\nimport { IStepperProps } from './types'\n\nconst StepperComponent = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}: React.PropsWithChildren<IStepperProps>) => {\n invariant(\n !(stepCount && steps),\n '`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.'\n )\n\n const count = steps?.length || stepCount || 0\n\n return (\n <StepperProvider\n stepCount={count}\n allowSkip={allowSkip}\n onComplete={onComplete}\n onStepChange={stepCount ? onStepChange : undefined}\n direction={direction}\n steps={steps || Array(count).fill('')}\n hideLabels={hideLabels}\n showCompletedIcons={showCompletedIcons}\n >\n <Box\n aria-label=\"progress\"\n css={{\n width: '100%',\n ...css\n }}\n >\n {children}\n </Box>\n </StepperProvider>\n )\n}\n\nexport const Stepper = Object.assign(StepperComponent, {\n StepBack: StepperStepBack,\n StepForward: StepperStepForward,\n Steps: StepperSteps\n})\n\nStepperComponent.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle } from '~/utilities'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$grey600',\n border: 'none',\n borderRadius: '$round',\n cursor: 'pointer',\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 50ms ease-out',\n '&:hover': {\n backgroundColor: '$grey700'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800'\n },\n '&[data-state=\"checked\"]:hover': {\n backgroundColor: '$primary900'\n },\n '&[disabled]': disabledStyle,\n variants: {\n size: {\n md: {\n p: '$0',\n width: '$4'\n },\n lg: {\n p: '$1',\n width: '$6'\n }\n }\n }\n})\n\nconst StyledThumb = styled(RadixSwitch.Thumb, {\n backgroundColor: 'white',\n borderRadius: '$round',\n display: 'block',\n transition: 'transform 50ms',\n willChange: 'transform',\n variants: {\n size: {\n md: {\n size: '$1',\n '&[data-state=\"checked\"]': {\n transform: 'translateX(calc($sizes$2 - $space$1))'\n }\n },\n lg: {\n size: '$2',\n '&[data-state=\"checked\"]': {\n transform: 'translateX($space$5)'\n }\n }\n }\n }\n})\n\ntype SwitchProps = React.ComponentProps<typeof StyledSwitch>\n\nexport const Switch = ({ size = 'md', ...rest }: SwitchProps) => (\n <StyledSwitch size={size} {...rest}>\n <StyledThumb size={size} />\n </StyledSwitch>\n)\n\nSwitch.displayName = 'Switch'\n","import { Content } from '@radix-ui/react-tabs'\n\nimport { styled } from '~/stitches'\n\nconst StyledTabsContent = styled(Content, {\n flexGrow: 1,\n fontFamily: '$body'\n})\n\nexport const TabsContent = StyledTabsContent\n\nTabsContent.displayName = 'TabsContent'\n","import { Trigger } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { disabledStyle, focusVisibleStyleBlock } from '~/utilities'\n\nimport { Text } from '../text'\n\nconst StyledTabsTriggerHoverBackground = styled('div', {\n position: 'absolute',\n inset: 0,\n height: 'calc(100% + 2px)',\n opacity: 0,\n bg: '$interactive1'\n})\n\nconst StyledTabsTrigger = styled(Trigger, {\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n flexShrink: 0,\n p: '$4',\n userSelect: 'none',\n borderBottom: '2px solid transparent',\n position: 'relative',\n '&[data-state=\"active\"]': {\n color: '$interactive1',\n fontWeight: 600,\n letterSpacing: '-0.005em',\n borderColor: 'currentColor'\n },\n '&[disabled]': disabledStyle,\n '&:not([disabled])': {\n '&:hover, &:focus-visible': {\n color: '$interactive2',\n [`& ${StyledTabsTriggerHoverBackground}`]: {\n opacity: 0.07\n }\n },\n '&:active': {\n color: '$interactive3'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n }\n})\n\nexport const TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTabsTrigger> & { value: string }\n>(({ children, ...rest }, ref) => (\n <StyledTabsTrigger {...rest} ref={ref}>\n <Text size=\"sm\" as=\"span\">\n {children}\n </Text>\n <StyledTabsTriggerHoverBackground />\n </StyledTabsTrigger>\n))\n\nTabsTrigger.displayName = 'TabsTrigger'\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseScrollPositionOptions = {\n element?: HTMLElement | null\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseScrollPositionOutput = {\n left: number\n top: number\n}\n\nexport const useScrollPosition = ({\n element,\n delay = 500,\n delayMethod = 'throttle'\n}: TUseScrollPositionOptions): TUseScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ left: 0, top: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n if (!element) return\n\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ left: element.scrollLeft, top: element.scrollTop })\n })\n\n element.addEventListener('scroll', handleScroll)\n\n return () => {\n element.removeEventListener('scroll', handleScroll)\n }\n }, [element, delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\n\ninterface Size {\n width: number | undefined\n height: number | undefined\n}\n\nexport const useSize = ({\n element,\n delay = 500\n}: {\n element?: HTMLElement | null\n delay?: number\n}): Size => {\n const [size, setSize] = useState<Size>({\n width: undefined,\n height: undefined\n })\n\n const handleResize = useCallback(() => {\n setSize({\n width: element?.clientWidth,\n height: element?.clientHeight\n })\n }, [element])\n\n const elements = useMemo(() => [element], [element])\n\n useResizeObserver({\n delay,\n elements: elements,\n onResize: handleResize\n })\n\n return size\n}\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport { List } from '@radix-ui/react-tabs'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useScrollPosition } from '~/utilities/hooks/useScrollPosition'\nimport { useSize } from '~/utilities/hooks/useSize'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledContainer = styled(ColorScheme, {\n position: 'relative',\n borderBottom: '1px solid $base4',\n width: '100%'\n})\n\nconst StyledTriggerList = styled(List, {\n flexShrink: 0,\n display: 'flex',\n width: '100%',\n overflowX: 'auto',\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none'\n})\n\nconst StyledChevronActionIcon = styled(ActionIcon, {\n height: '100% !important',\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'pointer',\n background: '$base1 !important',\n color: '$interactive1 !important',\n borderRadius: 0,\n opacity: 0.9\n})\n\nconst SCROLL_STEP = 0.8 // Used to scroll 80% of clientWidth\n\nexport const TabsTriggerList = ({\n children,\n colorScheme = {},\n ...rest\n}: React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n}) => {\n const [listRef, setListRefCallback] = useCallbackRefState()\n\n const { width } = useSize({ element: listRef, delay: 500 })\n const { left } = useScrollPosition({\n element: listRef,\n delay: 100,\n delayMethod: 'debounce'\n })\n\n const canScrollXAxis = React.useMemo(() => {\n if (!listRef) return false\n return listRef.scrollWidth > listRef.clientWidth\n }, [width, listRef])\n\n const canScrollLeft = React.useMemo(() => {\n if (!canScrollXAxis) return false\n return left > 0\n }, [left, canScrollXAxis])\n\n const canScrollRight = React.useMemo(() => {\n if (!listRef || !canScrollXAxis) return false\n return listRef.scrollWidth - left - listRef.clientWidth > 1 // 1 rather than 0 to account for sub-pixel widths and calculations\n }, [listRef, left, canScrollXAxis])\n\n const scrollList = React.useCallback(\n (stepModifier) => {\n if (!listRef) return\n listRef.scroll({\n left: listRef.scrollLeft + listRef.clientWidth * stepModifier,\n behavior: 'smooth'\n })\n },\n [listRef]\n )\n\n return (\n <StyledContainer\n base=\"grey1\"\n accent=\"primary1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronRight} />\n </StyledChevronActionIcon>\n )}\n </StyledContainer>\n )\n}\n\nTabsTriggerList.displayName = 'TabsTriggerList'\n","import { Root } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TabsContent } from './TabsContent'\nimport { TabsTrigger } from './TabsTrigger'\nimport { TabsTriggerList } from './TabsTriggerList'\n\ntype TabsProps = React.ComponentProps<typeof StyledRoot>\n\nconst StyledRoot = styled(Root, { width: '100%' })\n\nexport const Tabs = Object.assign(StyledRoot, {\n TriggerList: TabsTriggerList,\n Trigger: TabsTrigger,\n Content: TabsContent\n})\n\nStyledRoot.displayName = 'Tabs'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTextarea = styled('textarea', {\n boxShadow: 'none', // remove iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n m: 0,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n width: '100%',\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n state: {\n error: {}\n }\n },\n defaultVariants: {\n appearance: 'standard'\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.ForwardRefExoticComponent<TextareaProps> =\n React.forwardRef((props, ref) => <StyledTextarea {...props} ref={ref} />)\n\nTextarea.displayName = 'Textarea'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField = ({\n css = undefined,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: TextareaFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nexport const StyledTile = styled('div', {\n all: 'unset', // important for buttons etc\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative', // for pseudo-elements\n border: '1px solid',\n bg: '$base1',\n color: '$foreground',\n borderColor: 'transparent',\n variants: {\n borderRadius: {\n sm: { borderRadius: '$0' },\n md: { borderRadius: '$1' },\n lg: { borderRadius: '$3' }\n },\n border: {\n true: { borderColor: '$base3' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $base1 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n }\n }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n colorScheme?: TcolorScheme\n}\n\nexport const Tile: React.ForwardRefExoticComponent<TTileProps> =\n React.forwardRef(\n ({ children, borderRadius = 'lg', colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"primary2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} borderRadius={borderRadius} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n )\n\nTile.displayName = 'Tile'\n","import { Flex } from '~/components/flex'\n\nexport const TileGroup = Flex\n","import React from 'react'\n\nimport { Tile } from '~/components/tile'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nconst StyledTileInteractive = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Tile, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n cursor: 'pointer',\n transform: 'translateY(0)',\n transition: 'transform 250ms ease',\n '&::after': {\n content: '',\n position: 'absolute',\n inset: 0,\n boxShadow: '$2',\n opacity: 0,\n transition: 'opacity 250ms ease-out',\n borderRadius: 'inherit',\n pointerEvents: 'none'\n },\n '&:hover': {\n transform: 'translateY(-$space$0)',\n '&::after': {\n opacity: 1\n }\n },\n '&:active': {\n bg: '$base2'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n }\n})\n\ntype TTileInteractiveProps = React.ComponentProps<\n typeof StyledTileInteractive\n> & {\n as?: React.ComponentType | React.ElementType\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\n NavigatorActions\n\nexport const TileInteractive: React.ForwardRefExoticComponent<TTileInteractiveProps> =\n React.forwardRef(({ onClick, href, type = 'button', as, ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n as: as || ('a' as React.ElementType),\n href,\n onClick: undefined\n }\n : { as: as || ('button' as React.ElementType), type, onClick }\n\n return (\n <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\n )\n })\n\nTileInteractive.displayName = 'TileInteractive'\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileInteractive } from '~/components/tile-interactive'\nimport { styled } from '~/stitches'\n\nconst StyledTileToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(TileInteractive, {\n '&:not([disabled])': {\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$interactive2'\n },\n '&:active': {\n bg: '$interactive3'\n }\n }\n },\n '&[data-state=\"on\"]': {\n bg: '$interactive1',\n borderColor: '$accent8',\n '&::before': {\n content: '',\n position: 'absolute',\n inset: -1, // account for 1px Tile border\n boxShadow: 'inset $colors$accent8 0px 0px 0px 2px',\n borderRadius: 'inherit',\n zIndex: 1 // so it's over anything nested which touches sides\n }\n }\n})\n\ntype TTileToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledTileToggleGroupItem>\n\nexport const TileToggleGroupItem = ({\n children,\n ...rest\n}: TTileToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem as=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TTileToggleGroupRootProps = React.ComponentProps<typeof TileGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal'\n ? 'row'\n : orientation === 'vertical'\n ? 'column'\n : undefined\n\nexport const TileToggleGroupRoot: React.ForwardRefExoticComponent<TTileToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n gap=\"2\"\n wrap=\"wrap\"\n {...props}\n />\n )\n })\n","import { TileToggleGroupItem } from './TileToggleGroupItem'\nimport { TileToggleGroupRoot } from './TileToggleGroupRoot'\n\ntype TTileToggleGroup = typeof TileToggleGroupRoot & {\n Item: typeof TileToggleGroupItem\n}\n\nexport const TileToggleGroup = TileToggleGroupRoot as TTileToggleGroup\nTileToggleGroup.Item = TileToggleGroupItem\nTileToggleGroup.displayName = 'TileToggleGroup'\n","import { Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { CSS, keyframes, styled } from '~/stitches'\nexport { default as toast } from 'react-hot-toast'\nimport type { Toast as ToastType } from 'react-hot-toast/dist/core/types'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nimport { Flex } from '../flex'\nimport { Spacer } from '../spacer'\nimport { Text } from '../text'\nimport { Toast } from './Toast'\n\nconst DEFAULT_OFFSET = '$2'\nconst TOAST_WIDTH = 400\n\nconst ToastProviderBase = styled('div', {\n position: 'fixed',\n zIndex: MAX_Z_INDEX,\n inset: DEFAULT_OFFSET,\n pointerEvents: 'none',\n '@sm': {\n top: '$3'\n }\n})\n\nconst slideIn = keyframes({\n '0%': { transform: 'translateY(-100%)', opacity: 0 },\n '100%': { transform: `translateY(0)`, opacity: 1 }\n})\n\nconst slideOut = keyframes({\n '0%': { transform: `translateY(0)`, opacity: 1 },\n '100%': { transform: `translateY(-100%)`, opacity: 0 }\n})\n\nconst ToastWrapper = styled('div', {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n boxSizing: 'border-box',\n minHeight: '$5',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst ToastContext = React.createContext<Pick<\n ToastType,\n 'type' | 'id' | 'message'\n> | null>(null)\n\nexport const ToastProvider = ({\n children,\n css\n}: React.PropsWithChildren<{ css?: CSS }>) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <ToastProviderBase\n onMouseEnter={startPause}\n onMouseLeave={endPause}\n css={css}\n >\n {toasts.map((toast) => {\n const { message: children } = toast\n\n const offset = calculateOffset(toast.id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el: HTMLDivElement | null) => {\n if (el && toast.height === undefined) {\n updateHeight(toast.id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastWrapper\n key={toast.id}\n ref={ref}\n visible={toast.visible}\n role={toast.role}\n aria-live={toast.ariaLive}\n css={{ top: offset }}\n >\n <ToastContext.Provider value={toast}>\n {typeof children === 'function' ? (\n children(toast)\n ) : React.isValidElement(children) ? (\n children\n ) : (\n <Toast css={{ width: TOAST_WIDTH }}>\n {toast.type === 'error' && <Toast.Icon is={Error} />}\n <Text>{children}</Text>\n <Spacer />\n <Toast.Close />\n </Toast>\n )}\n </ToastContext.Provider>\n </ToastWrapper>\n )\n })}\n </ToastProviderBase>\n {children}\n </>\n )\n}\n\nexport const useToastContext = () => {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastContext must be used within a ToastProvider')\n }\n\n return context\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast } from 'react-hot-toast/dist/core/types'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { useToastContext } from './ToastProvider'\n\nexport interface ToastCloseButtonProps\n extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {\n onDismiss?: () => void\n label?: string\n}\n\nexport const ToastCloseButton = ({\n onDismiss,\n label = 'Close alert',\n ...rest\n}: ToastCloseButtonProps): JSX.Element => {\n const { id } = useToastContext()\n\n return (\n <ActionIcon\n css={{\n color: 'white',\n mr: '-$2',\n '&:hover,&:focus': { color: 'white', opacity: 0.8 }\n }}\n label={label}\n onClick={() => {\n toast.dismiss(id)\n onDismiss?.()\n }}\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n}\n","import React from 'react'\n\nimport { Icon } from '../icon'\n\nexport const ToastIcon = (\n props: React.ComponentProps<typeof Icon>\n): JSX.Element => (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { ToastCloseButton } from './ToastCloseButton'\nimport { ToastIcon } from './ToastIcon'\nimport { useToastContext } from './ToastProvider'\n\nconst toastVariants = {\n loading: { bg: '$info' },\n blank: { bg: '$info' },\n success: { bg: '$success' },\n error: { bg: '$danger' }\n} as const\n\nexport const StyledToast = styled(Flex, {\n pointerEvents: 'auto',\n borderRadius: '$3',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n minHeight: '$5',\n position: 'relative',\n px: '$4',\n py: '$1',\n transition: 'background-color 50ms ease-out',\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n type: toastVariants\n }\n})\n\ntype ToastProps = Omit<React.ComponentProps<typeof StyledToast>, 'type'> & {\n type?: keyof typeof toastVariants\n}\n\nexport const Toast = (props: ToastProps): JSX.Element => {\n const { type } = useToastContext()\n return <StyledToast align=\"center\" type={props.type || type} {...props} />\n}\n\nToast.Icon = ToastIcon\nToast.Close = ToastCloseButton\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\n\nimport { styled } from '~/stitches'\nimport { focusVisibleStyleBlock } from '~/utilities'\n\nexport const StyledItem = styled(ToggleGroup.Item, {\n cursor: 'pointer',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n standard: {\n bg: 'white',\n color: '$grey800',\n border: '1px solid $grey600',\n '&::before': {\n background: '$grey600'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible, &[data-state=\"on\"]': {\n '&::before': {\n background: 'none'\n }\n },\n '&:hover': {\n borderColor: 'currentColor !important',\n color: '$primary900'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$primary800',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n },\n modern: {\n bg: '$grey200',\n borderRadius: '$1',\n overflow: 'hidden',\n border: '0',\n '&:not([disabled])': {\n '&:hover': {\n color: '$primary900'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$grey800',\n border: '1px solid $grey200 !important',\n bg: 'white',\n boxShadow: 'none !important'\n }\n }\n }\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { StyledItem } from './ToggleGroupItem'\n\nconst minHeight = {\n sm: '32px',\n md: '40px',\n lg: '48px'\n}\n\nconst px = {\n sm: '$4',\n md: '$5',\n lg: '$5'\n}\n\nconst spacingBetweenElements = {\n sm: '$2',\n md: '$3',\n lg: '$3'\n}\n\nconst getSizeVariant = (size: string) => ({\n fontSize: `$${size}`,\n px: px[size],\n minHeight: minHeight[size],\n '& > *:not(:last-child)': {\n mr: spacingBetweenElements[size]\n }\n})\n\nexport const StyledButton = styled(StyledItem, {\n flexGrow: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n lineHeight: 1,\n py: '$1',\n variants: {\n size: {\n sm: getSizeVariant('sm'),\n md: getSizeVariant('md'),\n lg: getSizeVariant('lg')\n },\n isIconOnly: {\n true: {}\n },\n theme: {\n standard: {},\n modern: {}\n }\n },\n compoundVariants: [\n {\n isIconOnly: true,\n size: 'sm',\n css: {\n minWidth: minHeight.sm,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n css: {\n minWidth: minHeight.md,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n css: {\n minWidth: minHeight.lg,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'sm',\n theme: 'modern',\n css: {\n minWidth: minHeight.md,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n theme: 'modern',\n css: {\n minWidth: minHeight.lg,\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n theme: 'modern',\n css: {\n minWidth: '60px',\n p: 0\n }\n }\n ]\n})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(\n ({ size = 'md', theme = 'standard', children, ...rest }, ref) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n const isIconOnly =\n isSingleChild &&\n React.isValidElement(childrenArray[0]) &&\n childrenArray[0]?.type === Icon\n\n return (\n <StyledButton\n ref={ref}\n size={size}\n isIconOnly={isIconOnly}\n theme={theme}\n {...rest}\n >\n {\n childrenArray.map((child) => {\n if (\n !isSingleChild &&\n (typeof child === 'string' || typeof child === 'number')\n )\n return <span key={child}>{child}</span>\n if (React.isValidElement(child)) {\n if (child?.type === Icon)\n return React.cloneElement(child, { ...child.props, size })\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledButton>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n isFullWidth?: boolean\n}\n\nexport const StyledRoot = styled(ToggleGroup.Root, {\n width: 'fit-content',\n variants: {\n isFullWidth: {\n true: {\n width: '100%',\n [`& ${StyledItem}`]: {\n flexBasis: 0,\n flexGrow: 1\n }\n },\n false: {\n width: 'auto'\n }\n },\n hasGap: {\n true: {\n [`& ${StyledItem}`]: {\n borderRadius: '$0'\n }\n },\n false: {\n borderRadius: '$1',\n [`& ${StyledItem}`]: {\n position: 'relative',\n '&:not(:last-child)::before': {\n content: '',\n position: 'absolute'\n }\n }\n }\n },\n direction: {\n column: {},\n row: {}\n },\n theme: {\n standard: {},\n modern: { bg: '$grey200' }\n }\n },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\n theme: 'standard',\n css: {\n [`& ${StyledItem}`]: {\n '&:not(:last-child)::before': {\n top: '-1px',\n height: 'calc(100% + 2px)',\n width: '1px',\n right: '0',\n transform: 'translateX(150%)'\n },\n '&:not(:first-child)': {\n borderLeftColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderRightColor: 'transparent'\n },\n '&:first-child': {\n borderTopLeftRadius: '$1',\n borderBottomLeftRadius: '$1'\n },\n '&:last-child': {\n borderTopRightRadius: '$1',\n borderBottomRightRadius: '$1'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\n theme: 'standard',\n css: {\n [`& ${StyledItem}`]: {\n '&:not(:last-child)::before': {\n bottom: 0,\n left: '-1px',\n height: '1px',\n width: 'calc(100% + 2px)',\n transform: 'translateY(150%)'\n },\n '&:first-child': {\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0'\n },\n '&:last-child': {\n borderBottomLeftRadius: '$0',\n borderBottomRightRadius: '$0'\n },\n '&:not(:first-child)': {\n borderTopColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderBottomColor: 'transparent'\n }\n }\n }\n },\n {\n hasGap: false,\n theme: 'modern',\n css: {}\n },\n {\n hasGap: false,\n theme: 'standard',\n css: {\n bg: 'white',\n [`& ${StyledItem}`]: {\n bg: 'transparent',\n borderRadius: 0\n }\n }\n }\n ]\n})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n Pick<React.ComponentProps<typeof Flex>, 'gap' | 'wrap'> &\n React.ComponentProps<typeof StyledRoot> &\n RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap,\n isFullWidth,\n children,\n theme = 'standard',\n wrap,\n ...rest\n },\n ref\n ) => {\n const hasGap = typeof gap === 'number'\n const direction = orientationToDirection(orientation)\n return (\n <StyledRoot\n ref={ref}\n direction={direction}\n hasGap={hasGap}\n isFullWidth={isFullWidth}\n orientation={orientation}\n theme={theme}\n {...rest}\n >\n <Flex\n direction={direction}\n gap={hasGap ? gap : undefined}\n wrap={wrap || 'nowrap'}\n >\n {\n React.Children.toArray(children).map((child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { ...child.props, theme })\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n </StyledRoot>\n )\n }\n)\n","import { ToggleGroupButton as Button } from './ToggleGroupButton'\nimport { ToggleGroupItem as Item } from './ToggleGroupItem'\nimport { ToggleGroupRoot as Root } from './ToggleGroupRoot'\nexport const ToggleGroup = { Item, Button, Root }\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseWindowScrollPositionOptions = {\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseWindowScrollPositionOutput = {\n x: number\n y: number\n}\n\nexport const useWindowScrollPosition = ({\n delay = 500,\n delayMethod = 'throttle'\n}: TUseWindowScrollPositionOptions = {}): TUseWindowScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ x: window.scrollX, y: window.scrollY })\n })\n\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n divider: '$grey200',\n borderBottom: '$grey200'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import React from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\ntype TopBarActionIconProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'size' | 'children'\n> & { icon: React.FC<React.SVGProps<SVGSVGElement>>; label: string }\n\nexport const TopBarActionIcon: React.ForwardRefExoticComponent<TopBarActionIconProps> =\n React.forwardRef(({ icon, ...rest }, forwardedRef) => {\n return (\n <ActionIcon\n size=\"md\"\n appearance=\"simple\"\n theme=\"neutral\"\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </ActionIcon>\n )\n })\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: Pick<\n React.ComponentProps<typeof Image>,\n 'src' | 'alt' | 'css'\n>): JSX.Element => {\n return (\n <Image\n src={src}\n alt={alt}\n css={{\n height: '$3',\n mr: '$3',\n width: 'auto',\n ...css\n }}\n />\n )\n}\n\nexport const TopBarBrandName = styled(Text, {\n color: '$grey800'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$grey800',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { useWindowScrollPosition } from '~/utilities/hooks/useWindowScrollPosition'\n\nimport { Divider } from '../divider'\nimport { Flex } from '../flex'\nimport { colorSchemes as topBarColorSchemes } from './stitches.topBar.colorscheme.config'\nimport { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$divider' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: '$background',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n\n zIndex: 1,\n transition: 'box-shadow .2s ease-out',\n variants: {\n hasScrolled: {\n true: { boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1)' }\n },\n size: {\n md: { height: '$6' },\n lg: { height: '$7' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $background 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n },\n appearance: {\n standard: {\n width: '100vw',\n maxWidth: '100%',\n top: '0',\n borderBottom: '1px solid $borderBottom'\n },\n rounded: {\n width: '100%',\n top: '$2',\n p: '$2',\n border: '1px solid #ffffff',\n borderRadius: '$round'\n }\n }\n }\n})\n\nconst Container = styled(Flex, {\n alignItems: 'center',\n height: '$4',\n mx: '$4',\n width: '100%',\n '@md': {\n mx: '$5'\n }\n})\n\ntype StyledRootProps = React.ComponentProps<typeof StyledRoot>\n\ntype TopBarProps = StyledRootProps & {\n css?: CSS\n className?: string\n}\n\nconst TopBarComponent = ({\n size = 'md',\n diffused,\n className = topBarColorSchemes['light'],\n appearance = 'standard',\n ...props\n}: React.PropsWithChildren<TopBarProps>) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot\n className={className}\n hasScrolled={!!scrollPositionY}\n diffused={diffused}\n appearance={appearance}\n size={size}\n >\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nexport const TopBar = Object.assign(TopBarComponent, {\n Brand: TopBarBrand,\n BrandLogo: TopBarBrandLogo,\n BrandName: TopBarBrandName,\n ActionIcon: TopBarActionIcon,\n Divider: TopBarDivider\n})\n\nTopBarComponent.displayName = 'TopBar'\n","import * as React from 'react'\n// Note: Only loading vimeo to reduce the bundle size https://www.npmjs.com/package/react-player\nimport ReactPlayer from 'react-player/vimeo'\n\nimport { Box } from '~/components/box'\nimport { CSS, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\nimport { Override } from '~/utilities/types'\n\nconst StyledVideo = styled(ReactPlayer, {})\n\ntype VideoProps = Override<\n React.ComponentProps<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video: React.ForwardRefExoticComponent<VideoProps> =\n React.forwardRef(({ id, ratio = 9 / 16, css, ...remainingProps }, ref) => (\n <CSSWrapper css={css}>\n <Box\n css={{\n borderRadius: '$0',\n position: 'relative',\n paddingTop: `${ratio * 100}%`,\n overflow: 'hidden',\n height: 0,\n width: '100%'\n }}\n >\n <StyledVideo\n {...remainingProps}\n role=\"figure\"\n url={`https://player.vimeo.com/video/${id}`}\n height=\"100%\"\n width=\"100%\"\n css={{ position: 'absolute', top: 0, left: 0 }}\n ref={ref}\n />\n </Box>\n </CSSWrapper>\n ))\n\nVideo.displayName = 'Video'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { Box } from '../box'\nimport { Text } from '../text'\n\nconst StyledSlot = styled(Slot)\n\ntype KeyboardEventWindowOrElement =\n | KeyboardEvent\n | React.KeyboardEvent<HTMLDivElement>\ntype ShortcutConfig = Partial<KeyboardEvent>\n\ntype KeyboardShortcutProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n config: {\n shortcut: ShortcutConfig\n action: ({\n event,\n shortcut\n }: {\n event: KeyboardEvent | React.KeyboardEvent<HTMLDivElement>\n shortcut: ShortcutConfig\n }) => void\n }[]\n targetWindow?: boolean\n onKeyDown?: (e: KeyboardEventWindowOrElement) => void\n}\n\nexport const KeyboardShortcut: React.ForwardRefExoticComponent<KeyboardShortcutProps> =\n React.forwardRef(\n ({ asChild, config, targetWindow = false, onKeyDown, ...rest }, ref) => {\n const [targetElRef, setTargetElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => targetElRef as HTMLDivElement)\n\n const handleOnKeydown = React.useCallback(\n (e: KeyboardEventWindowOrElement) => {\n config.forEach(({ shortcut, action }) => {\n if (\n Object.entries(shortcut).every(([key, value]) => e[key] === value)\n )\n action({ event: e, shortcut })\n })\n onKeyDown?.(e)\n },\n [config, onKeyDown]\n )\n\n React.useEffect(() => {\n if (targetWindow) window.addEventListener('keydown', handleOnKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleOnKeydown)\n }\n }, [targetWindow, handleOnKeydown])\n\n const Component = asChild ? StyledSlot : Box\n\n return (\n <Component\n onKeyDown={targetWindow ? undefined : handleOnKeydown}\n ref={setTargetElRef}\n {...rest}\n />\n )\n }\n )\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\nconst StyledKeyboardShortcutIndicator = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n bg: '$grey100',\n color: '$textSubtle',\n px: '$2',\n py: '$0',\n minWidth: '$2',\n minHeight: '$2',\n fontWeight: 400,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$1',\n flexShrink: 0\n})\n\ntype KeyboardShortcutIndicatorProps = React.ComponentProps<\n typeof StyledKeyboardShortcutIndicator\n>\n\nexport const KeyboardShortcutIndicator = (\n props: KeyboardShortcutIndicatorProps\n) => {\n return <StyledKeyboardShortcutIndicator size=\"sm\" as=\"kbd\" {...props} />\n}\n\nKeyboardShortcutIndicator.displayName = 'KeyboardShortcut'\n","import {\n KeyboardShortcut as KeyboardShortcutComponent,\n KeyboardShortcutIndicator\n} from './KeyboardShortcut'\n\nexport const KeyboardShortcut = Object.assign(KeyboardShortcutComponent, {\n Indicator: KeyboardShortcutIndicator\n})\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport type { SegmentedControlRootProps } from './SegmentedControlRoot'\n\nexport interface SegmentedControlContextValue\n extends Pick<\n React.ComponentProps<typeof Tabs>,\n 'defaultValue' | 'value' | 'onValueChange'\n > {\n size: SegmentedControlRootProps['size']\n theme: SegmentedControlTheme\n}\n\nexport const SegmentedControlContext =\n React.createContext<SegmentedControlContextValue>({\n size: 'md',\n theme: 'primary',\n defaultValue: '',\n value: '',\n onValueChange: () => null\n })\n","import * as React from 'react'\n\nimport { Badge } from '../badge'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst badgeSizeMap = {\n sm: 'xs',\n md: 'xs',\n lg: 'sm'\n}\n\nexport const SegmentedControlBadge = ({\n css,\n ...props\n}: Omit<React.ComponentProps<typeof Badge>, 'size'>): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return (\n <Badge\n {...props}\n css={{ border: 'none', ...css, fontWeight: 'normal' }}\n size={badgeSizeMap[size as string]}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\n\nexport const SegmentedControlContent = Tabs.Content\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(Text, {\n fontFamily: '$body',\n color: '$textSubtle',\n fontWeight: 400,\n variants: {\n size: {\n sm: {\n fontSize: '$xs'\n },\n md: {\n fontSize: '$sm'\n },\n lg: {\n fontSize: '$md'\n }\n }\n }\n})\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(Text, {\n fontFamily: '$body',\n color: '$textRegular',\n variants: {\n size: {\n sm: {\n fontSize: '$sm'\n },\n md: {\n fontSize: '$md'\n },\n lg: {\n fontSize: '$lg'\n }\n }\n }\n})\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { Icon } from '../icon'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst sizeMap = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const SegmentedControlIcon = (\n props: Omit<React.ComponentProps<typeof Icon>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <Icon {...props} size={sizeMap[size as string]} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledItem = styled(Tabs.Trigger, {\n position: 'relative',\n bg: 'transparent',\n borderRadius: '$2',\n p: 0,\n zIndex: 2,\n minWidth: '140px',\n border: '2px solid transparent',\n variants: {\n theme: {\n primary: {\n '&[data-state=inactive]:hover': {\n bg: '$primary300'\n },\n '&:focus-visible': {\n borderColor: '$primary800'\n }\n },\n marsh: {\n '&[data-state=inactive]:hover': {\n bg: '$marsh300'\n },\n '&:focus-visible': {\n borderColor: '$marsh800'\n }\n }\n },\n size: {\n sm: {\n flex: 'unset',\n p: '$4 $24',\n gap: '$3'\n },\n md: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n },\n lg: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n }\n }\n },\n '& > div': { display: 'none' },\n '& > span': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n '&[data-state=active]': {\n boxShadow: 'none',\n border: '2px solid transparent',\n fontWeight: 600,\n color: '$textBold',\n '&:focus-visible': {\n boxShadow: 'none',\n borderColor: '$primary800'\n }\n },\n '&[data-state=inactive]': {\n fontWeight: 400,\n color: '$grey900'\n },\n '&[disabled]': {\n opacity: 0.3\n }\n})\n\nexport const SegmentedControlItem = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentProps<typeof StyledItem>, 'size'>\n>(({ children, ...props }, ref) => {\n const { size, theme } = React.useContext(SegmentedControlContext)\n\n return (\n <StyledItem {...props} theme={theme} size={size} ref={ref}>\n {children}\n </StyledItem>\n )\n})\n\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Box } from '../box'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\nimport { SegmentedControlItem } from './SegmentedControlItem'\n\nconst StyledTriggerList = styled(Tabs.TriggerList, {\n position: 'relative',\n p: '$1',\n borderRadius: '$3',\n overflow: 'hidden',\n variants: {\n theme: {\n primary: { bg: '$primary200' },\n marsh: { bg: '$marsh200' }\n }\n },\n '& > div[role=\"tablist\"]': {\n position: 'relative'\n },\n '& > button': {\n zIndex: 2\n }\n})\n\nconst SelectionIndicator = styled(Box, {\n content: '',\n position: 'absolute',\n bg: 'white',\n borderRadius: '$2',\n variants: {\n interacted: {\n true: {\n transition: 'all 0.3s ease'\n },\n false: {\n transition: 'none'\n }\n }\n }\n})\n\nexport const SegmentedControlItemList = (\n props: React.ComponentProps<typeof Tabs.TriggerList>\n): JSX.Element => {\n const { theme, defaultValue, value } = React.useContext(\n SegmentedControlContext\n )\n\n const tabsRef = React.useRef<(HTMLElement | null)[]>([])\n\n const selectedIndex = React.Children.toArray(props.children).findIndex(\n (child) => (child as React.ReactElement)?.props.value === value\n )\n\n const [indicatorStyles, setIndicatorStyles] = React.useState({\n left: 0,\n height: 0,\n width: 0\n })\n const [hasInteracted, setHasInteracted] = React.useState(false)\n\n const updateIndicatorPosition = React.useCallback(() => {\n const currentTab = tabsRef.current[selectedIndex]\n if (!currentTab) return\n\n const { width, height } = currentTab.getBoundingClientRect()\n setIndicatorStyles({ left: currentTab.offsetLeft, height, width })\n }, [selectedIndex])\n\n React.useEffect(() => {\n const resizeObserver = new ResizeObserver(updateIndicatorPosition)\n const currentTabs = tabsRef.current\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.observe(tab)\n })\n\n return () => {\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.unobserve(tab)\n })\n resizeObserver.disconnect()\n }\n }, [selectedIndex, updateIndicatorPosition])\n\n React.useEffect(() => {\n window.addEventListener('resize', updateIndicatorPosition)\n return () => {\n window.removeEventListener('resize', updateIndicatorPosition)\n }\n }, [updateIndicatorPosition])\n\n React.useEffect(() => {\n updateIndicatorPosition()\n }, [selectedIndex, updateIndicatorPosition])\n\n return (\n <StyledTriggerList theme={theme} defaultValue={defaultValue} {...props}>\n <SelectionIndicator\n css={{\n ...indicatorStyles\n }}\n interacted={hasInteracted}\n />\n {React.Children.map(props.children, (child, index) => {\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to SegmentedControlItemList is not a valid element`\n )\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof SegmentedControlItem>\n >,\n {\n onClick: (e) => {\n setHasInteracted(true)\n if (child.props.onClick) child.props.onClick(e)\n },\n ref: (el) => (tabsRef.current[index] = el)\n }\n )\n })}\n </StyledTriggerList>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledSegmentedControlRoot = styled(Tabs, {\n '& > div': { border: 'none' },\n variants: {\n size: {\n sm: {\n width: 'unset'\n },\n md: {},\n lg: {}\n }\n }\n})\n\nexport interface SegmentedControlRootProps\n extends React.ComponentProps<typeof StyledSegmentedControlRoot> {\n theme?: SegmentedControlTheme\n}\n\nexport const SegmentedControlRoot = ({\n size,\n theme = 'primary',\n defaultValue,\n children,\n ...props\n}: React.PropsWithChildren<SegmentedControlRootProps>): React.JSX.Element => {\n const isControlled = props.value !== undefined\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n\n const currentValue = isControlled ? props.value : internalValue\n const handleValueChange = isControlled\n ? props.onValueChange\n : setInternalValue\n\n React.useEffect(() => {\n if (!isControlled && defaultValue) {\n setInternalValue(defaultValue)\n }\n }, [defaultValue, isControlled])\n\n const value = React.useMemo(\n () => ({\n size,\n theme,\n defaultValue,\n onValueChange: handleValueChange,\n value: currentValue\n }),\n [size, theme, defaultValue, handleValueChange, currentValue]\n )\n\n return (\n <SegmentedControlContext.Provider value={value}>\n <StyledSegmentedControlRoot\n size={size}\n value={currentValue}\n onValueChange={handleValueChange}\n {...props}\n >\n {children}\n </StyledSegmentedControlRoot>\n </SegmentedControlContext.Provider>\n )\n}\n","import { SegmentedControlBadge } from './SegmentedControlBadge'\nimport { SegmentedControlContent } from './SegmentedControlContent'\nimport { SegmentedControlDescription } from './SegmentedControlDescription'\nimport { SegmentedControlHeading } from './SegmentedControlHeading'\nimport { SegmentedControlIcon } from './SegmentedControlIcon'\nimport { SegmentedControlItem } from './SegmentedControlItem'\nimport { SegmentedControlItemList } from './SegmentedControlItemList'\nimport { SegmentedControlRoot } from './SegmentedControlRoot'\n\nexport const SegmentedControl = {\n Root: SegmentedControlRoot,\n Item: SegmentedControlItem,\n Heading: SegmentedControlHeading,\n Description: SegmentedControlDescription,\n Icon: SegmentedControlIcon,\n Content: SegmentedControlContent,\n Badge: SegmentedControlBadge,\n ItemList: SegmentedControlItemList\n}\n","import React from 'react'\n\nimport { FileDropContextValue } from './types'\n\nexport const FileDropContext = React.createContext<FileDropContextValue>({\n isDragging: false,\n files: []\n})\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\nimport { FileDropContext } from './FileDropContext'\nimport { type FileDropContextValue } from './types'\n\ninterface FileDropProps\n extends Omit<React.ComponentProps<typeof Flex>, 'onDrop'> {\n onDrop: (files: File[]) => void\n children?:\n | React.ReactNode\n | ((value: FileDropContextValue) => React.ReactNode)\n accept?: React.InputHTMLAttributes<HTMLInputElement>['accept']\n multiple?: React.InputHTMLAttributes<HTMLInputElement>['multiple']\n}\n\nexport const FileDrop = ({\n css,\n children,\n accept,\n multiple,\n onDrop,\n ...props\n}: FileDropProps): JSX.Element => {\n const [isDragging, setIsDragging] = React.useState(false)\n const [files, setFiles] = React.useState<File[]>([])\n const fileUploadInputRef = React.useRef<HTMLInputElement>(null)\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleDragLeave = () => setIsDragging(false)\n\n const handleDrop = (fileList: FileList | null) => {\n if (!fileList) return\n\n setIsDragging(false)\n\n const files = Array.from(fileList)\n onDrop(files)\n setFiles(files)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (['Space', 'Enter'].includes(event.key)) {\n fileUploadInputRef.current?.click()\n }\n }\n\n const value: FileDropContextValue = { isDragging, files }\n\n return (\n <FileDropContext.Provider value={value}>\n <Flex\n direction=\"column\"\n gap=\"24\"\n align=\"center\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={(event) => {\n event.preventDefault()\n handleDrop(event.dataTransfer.files)\n }}\n onClick={() => fileUploadInputRef.current?.click()}\n css={{\n border: '1px dashed $grey500',\n p: '$5 $7',\n borderRadius: '$1',\n cursor: 'pointer',\n '& *': { pointerEvents: 'none' },\n ...css\n }}\n role=\"button\"\n onKeyDown={handleKeyDown}\n tabIndex={0}\n {...props}\n >\n {typeof children === 'function' ? children(value) : children}\n <input\n type=\"file\"\n ref={fileUploadInputRef}\n style={{ visibility: 'hidden' }}\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n handleDrop(event.target.files)\n }}\n />\n </Flex>\n </FileDropContext.Provider>\n )\n}\n\nFileDrop.displayName = 'FileDrop'\n","import React from 'react'\n\nimport { FileDropContext } from './FileDropContext'\nimport { FileDropContextValue } from './types'\n\nexport const useFileDrop = (): FileDropContextValue =>\n React.useContext(FileDropContext)\n"],"names":["utils","value","media","stitchesConfig","createStitches","atomTheme","defaultThemeMap","themeMap","css","getCssText","createTheme","globalCss","keyframes","styled","theme","createThemeVariants","themeProperty","styles","acc","key","Box","CSSWrapper","children","React","noOverflowStyleBlock","NoOverflowWrapper","capsize","before","after","icons","color","encodeBackgroundIcon","icon","toHex","focusVisibleStyleBlock","position","zIndex","boxShadow","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInOut","outPosition","inPosition","slideIn","slideOut","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","getFieldIconSize","size","s","disabledStyle","open","close","StyledContent","Content","AccordionContent","remainingProps","AccordionItem","Item","colorSchemes","generateColors","prefix","colorName","color0","colors","i","k","bases","generateBase","name","themeName","accents","generateAccent","StyledColorScheme","ColorScheme","base","accent","interactive","className","asChild","rest","ref","c","Slot","StyledIcon","Icon","SVG","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","arrowPosition","ChevronDown","StyledRoot","Root","Accordion","type","MAX_Z_INDEX","DIALOG_Z_INDEX","DROPDOWN_Z_INDEX","TOOLTIP_Z_INDEX","POPOVER_Z_INDEX","StyledArrow","Arrow","TooltipContent","side","sideOffset","TooltipComponent","delayDuration","Tooltip","Portal","Provider","OptionalTooltipWrapper","hasTooltip","label","tooltipSide","isExternalUrl","url","getExternalAnchorProps","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","createVariants","variants","fn","prev","variant","globalValues","Flex","v","FadeInOut","Dot","Loader","message","props","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","LoaderContentsWrapper","WithLoader","Button","as","isLoading","onClick","StyledHeading","Heading","weight","textVariants","getTextVariant","noCapsize","StyledText","Text","family","iconMap","Info","Danger","OkCircle","AlertDialogIcon","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","confirmElement","cancelElement","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","BadgeContext","BadgeProvider","overflow","isOverflowing","setIsOverflowing","StyledBadgeIcon","BadgeIcon","createResizeObserver","callback","useResizeObserver","delay","elements","onResize","observer","debounce","element","ObserveBadgeTextOverflow","StyledBadgeText","BadgeText","badgeSize","info","neutral","success","danger","warning","primary","grey","blue","pink","purple","cyan","green","magenta","red","teal","orange","yellow","lime","lapis","maroon","marsh","badgeSemanticNames","StyledBadge","BadgeInner","emphasis","badgeElRef","setBadgeElRef","isInfoOnly","isClickable","badgeColorSchemes","BadgeComponent","Badge","DismissibleRootContext","DismissibleRootProvider","controlledIsDismissed","onDismiss","isDismissed","setIsDismissed","isControlled","DismissibleRootInternal","DismissibleRoot","dismissed","DefaultTrigger","DismissibleTrigger","Dismissible","BannerContext","useBannerContext","BannerProvider","hasDismiss","setHasDismiss","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","toDirection","BannerRegularActions","gap","direction","index","propsToInject","StyledBannerContainer","BannerContainer","BannerRegularContainer","Container","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","Close","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegularComponent","BannerRegular","StyledBannerSlimActions","BannerSlimActions","BannerSlimButton","toAlign","toWrap","StyledBannerSlimContainer","BannerSlimContainer","align","wrap","StyledBannerSlimContent","BannerSlimContent","BannerSlimDismiss","BannerSlimImage","BannerSlimText","BannerSlimComponent","BannerSlim","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","CarouselComponent","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","Carousel","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","checked","Minus","Ok","CheckboxGroupMountedContext","CheckboxGroupMountedProvider","handleItemMountedChangeFurtherUpContext","mounted","setMounted","handleItemMountedChange","newItemMounted","itemValue","prevMounted","newMountedSet","CheckboxGroupCheckedContext","generateNewCheckedFn","currentChecked","newItemChecked","newCheckedSet","CheckboxGroupCheckedProvider","controlledChecked","defaultChecked","onCheckedChange","setChecked","handleItemControlledCheckedChange","newChecked","handleItemCheckedChange","prevChecked","CheckboxGroupAllItem","checkedItems","handleItemCheckedChangeContext","mountedItems","isAllChecked","mountedItem","CheckboxGroupItem","StyledSlot","CheckboxGroupSub","CheckboxGroupRoot","CheckboxGroup","StyledTreeListItem","TreeListItem","TreeCollapsibleContext","TreeCollapsibleProvider","triggerRef","setTriggerRef","StyledCollapsibleTreeItemRoot","TreeCollapsible","StyledList","TreeList","StyledTreeCollapsibleContent","TreeCollapsibleContent","StyledTreeIcon","TreeIcon","StyledTreeText","propName","TreeText","StyledItemContent","TreeItemContent","StyledTreeCollapsibleTrigger","StyledActionIcon","TreeCollapsibleTrigger","event","_a","_b","TreeItem","TreeRoot","Tree","CheckboxTreeCollapsible","CheckboxTreeCollapsibleContent","CheckboxTreeItemContent","CheckboxTreeCollapsibleTrigger","treeCollapsibleTriggerProps","checkboxAllItemProps","CheckboxTreeItem","checkboxItemProps","CheckboxTreeRoot","CheckboxTree","INLINE_MESSAGE_THEMES","INLINE_MESSAGE_ICONS","Error","InlineMessageContainer","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","required","StyledLi","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","Link","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","StyledDivider","Divider","orientation","MarkdownThematicBreak","StyledLink","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","FormCustomContext","useFormCustomContext","StyledForm","Form","defaultValues","validationMode","onSubmit","onError","methods","useForm","FormProvider","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","control","onChange","innerChecked","innerName","useController","overflowElipsis","StyledChipContent","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","ChipRootProvider","ChipRoot","Chip","ChipGroup","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ToggleGroupRoot","disableDeselect","onValueChange","defaultValue","internalValue","setInternalValue","handleValueChange","newValue","ChipToggleGroupRoot","ChipToggleGroup","StyledComboboxInput","BaseComboboxInput","ComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","Combobox","BaseCombobox","ComboboxOptionText","InputBackground","StyledInputText","InputText","Input","PasswordInput","hidePasswordText","showPasswordText","restProps","isPasswordVisible","setIsPasswordVisible","useState","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","register","formAppearance","CreatePasswordField","validate","defaultValidation","messageDirection","formState","isFocused","setIsFocused","validationResult","setValidationResult","touched","isValid","validatePassword","password","result","handleChange","throttle","getMessageTheme","showValidation","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","params","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","disabledRows","enableRowSelection","onRowSelectionChange","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","tablePosition","setTablePosition","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","row","updaterOrValue","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledRow","TableRow","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TableHeaderCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","isSticky","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","generateColumnsCss","accWidth","tableHeaderCells","column","elementNumber","cssObject","newColumnsCss","TableStickyColumnsContainer","hasScroll","setHasScroll","newHasScroll","StyledTable","TableComponent","corners","scrollContainerCss","scrollContainerkey","tableComponent","Table","DataTableBody","rowAction","getRowModel","DataTable","StyledContainer","BulkActionsDefaultActions","BulkActionsSelectedRowActions","cancelLabel","toggleAllPageRowsSelected","handleDeselectAllPageRows","DataTableBulkActions","isRowSelected","showDividers","ActionBarPositioner","DataTableBulkActionsFloating","actionBarRef","numberOfSelectedRows","DataTableDataCell","cell","flexRender","EmptyStateContext","EmptyStateProvider","StyledEmptyStateBody","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","StyledEmptyStateTitle","EmptyStateTitle","EmptyStateContainer","EmptyStateComponent","EmptyState","DataTableEmptyState","DataTableError","OptionalVisuallyHiddenWrapper","hidden","INPUT_ICON","StyledSearchInputText","SearchInput","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","DataTableSelectAllRowsCheckbox","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getCheckedState","updateCheckedState","DataTableHead","sortable","stickyOffset","getHeaderGroups","getCanSomeRowsExpand","tableHeaderRowRef","tableRef","headerOffsetRef","headerOffset","setHeaderOffset","headerHide","setHeaderHide","scrollTarget","tableHeadElement","tableHeadHeight","intersectionOffset","newOffset","headerGroup","header","StyledTableHeaderCell","sortIcons","ArrowUp","ArrowDown","SortIcon","DataTableHeaderCell","sortDirection","isSortableTable","isDataColumn","hoverProps","isHovered","useHover","handleKeyDown","headerSortingHandler","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","totalRows","selectedRows","copyMerged","getColumnDisplayName","sortedColumn","col","DataTableRowSelectionCheckbox","isElementInteractive","DataTableRow","isDisabled","toggleExpandHandler","toggleSelectHandler","handleRowClick","rowData","currentRow","nextRow","previousRow","DataTableTable","scrollOptions","isTableVisible","isScrolling","updatePosition","tableTop","tableBottom","prevPosition","handleScroll","observerOffset","observerOptions","handleTableIntersection","entries","entry","tableObserver","isPending","isEmpty","buildScrollContainerKey","controlColumnCount","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","SortableItem","isDragHandle","transform","setNodeRef","SortableRoot","sortableIds","onSortChange","order","setOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","Sortable","DragAndDropTableRow","idColumn","rowId","DragAndDropTableBody","DragAndDropTable","onDragAndDrop","rowIds","handleSortChange","sortedResults","VisibleElementsAmount","_","VIEW_ALL_POPOVER","GO_TO_PREVIOUS_PAGE","GO_TO_NEXT_PAGE","getPaginationElementsToRender","currentPage","pagesCount","visibleElementsCount","paginationPages","visiblePagesCount","withPreviousNextPageArrows","canFitEdgePage","canFitViewAllPopover","canFitPages","firstPage","lastPage","newPaginationItems","canFitCurrentPage","canFitCurrentPageAndPreviousPage","canFitCurrentPageAndPreviousPageAndNextPage","canFitLastPage","findNextAvailablePage","startPage","disabledPages","nextPage","findPreviousAvailablePage","previousPage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","indicatedPages","onItemHover","labels","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","previousAvailablePage","goToPreviousPage","nextAvailablePage","goToNextPage","paginationItems","PaginationNextButton","PaginationPage","isIndicated","isSelected","handleOnHover","handleOnClick","PaginationPopover","isOpen","setIsOpen","Popover","Ellypsis","PaginationPreviousButton","PaginationItems","paginationItem","PaginationComponent","Pagination","StyledNav","getPageCount","setPageIndex","showPagination","recordsCountFrom","recordsCountTo","setPage","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","date","minDate","maxDate","setYear","showYears","setShowYears","currentYear","setCurrentYear","handleSetYear","year","newDate","isAtMinYear","isAtMaxYear","yearList","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","isCurrentYear","month","weeks","weekday","week","weekIndex","dateObj","selected","today","prevMonth","nextMonth","PopoverContent","closePopoverText","showCloseButton","CloseIcon","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","formatDateToString","dateFormat","DateInput","initialDate","revalidate","setDate","dateString","handleInputChange","newDateString","parsedInputDate","handleCalendarChange","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","trigger","DialogBackground","DialogClose","backdropOverlay","modalOverlayId","StyledDialogOverlay","sizeReset","StyledDialogContent","DialogContent","closeDialogText","DialogFooter","DialogHeading","StyledDialog","Dialog","DrawerContext","DrawerProvider","DrawerClose","DrawerOverlay","animationTop","animationRight","animationBottom","animationLeft","setupAnimation","animation","positionY","positionX","DrawerContent","drawerSection","DrawerFooter","DrawerHeader","DrawerMain","DrawerTrigger","Drawer","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledMarkdownContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventEvent","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","light","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenuComponent","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","fadeDuration","timer","listCenter","triggerOffsetRight","navigationMenuColorSchemes","NavigationMenu","StyledNavigationMenuVerticalItem","NavigationMenuVerticalItem","NavigationMenuVerticalAccordionContext","NavigationMenuVerticalAccordionProvider","NavigationMenuVerticalAccordion","defaultOpen","onOpenChange","NavigationMenuVerticalList","StyledNavigationMenuVerticalAccordionContent","NavigationMenuVerticalAccordionContent","resetButtonStyles","resetLinkStyles","navigationMenuVerticalItemStyles","StyledNavigationMenuVerticalIcon","NavigationMenuVerticalIcon","SideBarHeader","SideBarBody","SideBarFooter","SideBarBrand","SideBarBrandLogo","SideBarBrandName","SideBarContext","useSidebarState","SIZE_COLLAPSED","SIZE_EXPANDED","PointerBlocker","SideBar","isExpanded","setIsExpanded","useInteractOutside","focusWithinProps","useFocusWithin","expandableProps","SIZE_EXPANDED_MAX","StyledNavigationMenuVerticalText","NavigationMenuVerticalText","NavigationMenuVerticalItemContent","StyledNavigationMenuVerticalAccordionTrigger","NavigationMenuVerticalAccordionTrigger","StyledNavigationMenuVerticalLink","NavigationMenuVerticalLink","componentProps","NavigationMenuVertical","navigationMenuVerticalColorSchemes","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","fieldAppearance","NumberInputContainer","NumberInput","min","max","step","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonFieldComponent","FieldDescription","RadioButtonField","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","justify","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","StyledSelect","Select","placeholder","SelectField","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","Spacer","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","StepperComponent","count","Stepper","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","useSize","setSize","handleResize","useCallback","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","StyledTile","Tile","borderRadius","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","orientationToDirection","TileToggleGroupRoot","TileToggleGroup","DEFAULT_OFFSET","TOAST_WIDTH","ToastProviderBase","ToastWrapper","ToastContext","ToastProvider","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","toast","Toast","useToastContext","ToastCloseButton","ToastIcon","toastVariants","StyledToast","StyledItem","ToggleGroupItem","minHeight","px","spacingBetweenElements","getSizeVariant","ToggleGroupButton","isIconOnly","hasGap","useWindowScrollPosition","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","TopBarComponent","diffused","topBarColorSchemes","scrollPositionY","TopBar","StyledVideo","ReactPlayer","Video","ratio","KeyboardShortcut","config","targetWindow","targetElRef","setTargetElRef","handleOnKeydown","shortcut","StyledKeyboardShortcutIndicator","KeyboardShortcutIndicator","KeyboardShortcutComponent","SegmentedControlContext","badgeSizeMap","SegmentedControlBadge","SegmentedControlContent","SegmentedControlDescription","SegmentedControlHeading","sizeMap","SegmentedControlIcon","SegmentedControlItem","SelectionIndicator","SegmentedControlItemList","tabsRef","selectedIndex","indicatorStyles","setIndicatorStyles","hasInteracted","setHasInteracted","updateIndicatorPosition","currentTab","height","resizeObserver","currentTabs","tab","StyledSegmentedControlRoot","SegmentedControlRoot","currentValue","SegmentedControl","FileDropContext","FileDrop","onDrop","setIsDragging","setFiles","fileUploadInputRef","handleDragOver","handleDragLeave","handleDrop","fileList","useFileDrop"],"mappings":"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"}