@atom-learning/components 2.58.2 → 2.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -4
- package/dist/components/checkbox/Checkbox.d.ts +1 -0
- package/dist/components/checkbox/Checkbox.js +1 -1
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/data-table/pagination/Pagination.js +1 -1
- package/dist/components/data-table/pagination/Pagination.js.map +1 -1
- package/dist/components/radio-button/RadioButton.d.ts +3 -1
- package/dist/components/radio-button/RadioButton.js +1 -1
- package/dist/components/radio-button/RadioButton.js.map +1 -1
- package/dist/components/radio-card/RadioCardGroup.js +1 -1
- package/dist/docgen.json +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -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/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/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/stack/Stack.tsx","../src/components/text/Text.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/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../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/components/badge/Badge.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/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/Form.types.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/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../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/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/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/DataTableDataCell.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/optionally-visually-hidden-container/OptionallyVisuallyHiddenContainer.tsx","../src/components/input/Input.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.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/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/select/Select.tsx","../src/components/data-table/pagination/PaginationButtons.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/use-date.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/components/dialog/DialogContent.tsx","../src/components/dialog/Dialog.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/stack-content/StackContent.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/components/navigation/preventHover.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/NavigationMenu.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/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/PaginationItem.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPages.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/Pagination.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.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-field/SelectField.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionRoot.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionContent.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionItem.tsx","../src/components/sidedrawer/Sidedrawer.styles.ts","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionTrigger.tsx","../src/components/sidedrawer/SidedrawerBody.tsx","../src/components/sidedrawer/SidedrawerClose.tsx","../src/components/sidedrawer/SidedrawerOverlay.tsx","../src/components/sidedrawer/SidedrawerContent.tsx","../src/components/sidedrawer/SidedrawerFooter.tsx","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/sidedrawer/SidedrawerHeader.tsx","../src/components/sidedrawer/SidedrawerItem.tsx","../src/components/sidedrawer/SidedrawerTrigger.tsx","../src/components/sidedrawer/Sidedrawer.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.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/useResizeObserver.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/toast/Toast.tsx","../src/components/toast/ToastProvider.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/components/video/Video.tsx","../src/components/banner/BannerContainer.tsx","../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/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/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"],"sourcesContent":["import type { Theme } from '@atom-learning/theme'\nimport * as atomTheme from '@atom-learning/theme'\nimport { themeMap } from '@atom-learning/theme/theme-map'\nimport type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@stitches/react'\nimport { createStitches, defaultThemeMap } from '@stitches/react'\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'\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}\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}: 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$primary 0px 0px 0px 4px'\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 slideInLeft = keyframes({\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(0)' }\n})\n\nexport const slideOutLeft = keyframes({\n '0%': { transform: 'translateX(0)' },\n '100%': { transform: 'translateX(-100%)' }\n})\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\ntype AccordionContentProps = React.ComponentProps<typeof StyledContent>\n\nexport const AccordionContent: React.FC<AccordionContentProps> = ({\n children,\n css,\n ...remainingProps\n}) => (\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\nconst StyledItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n\ntype AccordionItemProps = React.ComponentProps<typeof StyledItem>\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n children,\n value,\n ...remainingProps\n}) => (\n <StyledItem value={value} {...remainingProps}>\n {children}\n </StyledItem>\n)\n","import { 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('interactive-loContrast', {\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n})\n\ncolorSchemes['interactive-hiContrast'] = createTheme('interactive-hiContrast', {\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n})\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme(themeName, {\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n })\n }\n )\n}\n\nexport const accents = {\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme(themeName, {\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.forwardRef<HTMLDivElement, TColorSchemeProps>(\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 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.FC<IconProps> = React.forwardRef(\n ({ 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)\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 '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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})\n\ntype AccordionTriggerProps = React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}\n\nexport const AccordionTrigger: React.FC<AccordionTriggerProps> = ({\n children,\n colorScheme = {},\n ...remainingProps\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger {...remainingProps}>\n {children}\n <RotatingIcon is={ChevronDown} />\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: '$tonal500',\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: '$tonal500',\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: React.FC<TooltipContentProps> = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}) => (\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\nexport const Tooltip: React.FC<TooltipProps> & {\n Content: typeof TooltipContent\n Portal: typeof Portal\n Trigger: typeof Trigger\n Provider: typeof Provider\n} = ({ children, delayDuration = 350, ...remainingProps }) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nTooltip.Content = TooltipContent\nTooltip.Trigger = styled(Trigger, {})\nTooltip.Portal = Portal\nTooltip.Provider = Provider\n\nTooltip.displayName = 'Tooltip'\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@stitches/react'\nimport { darken } from 'color2k'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\n\nimport { Icon } from '../icon/Icon'\nimport { Tooltip } from '../tooltip/Tooltip'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (base: string, interact: string, active: string) => ({\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n color: interact\n },\n '&:not(:disabled):active': {\n color: active\n },\n '&[disabled]': {\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst getSolidVariant = (base: string, interact: string, active: string) => ({\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': {\n bg: active\n },\n '&[disabled]': {\n bg: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst getOutlineVariant = (base: string, interact: string, active: string) => ({\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n color: interact\n },\n '&:not(:disabled):active': {\n color: active\n },\n '&[disabled]': {\n borderColor: '$tonal400',\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$0',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\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 compoundVariants: [\n // Appearance Simple\n {\n theme: 'neutral',\n appearance: 'simple',\n css: getSimpleVariant('$tonal300', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primary',\n appearance: 'simple',\n css: getSimpleVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'simple',\n css: getSimpleVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'simple',\n css: getSimpleVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'simple',\n css: getSimpleVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'simple',\n css: getSimpleVariant('$danger', '$dangerMid', '$dangerDark')\n },\n\n // Appearance Solid\n {\n theme: 'primary',\n appearance: 'solid',\n css: getSolidVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'solid',\n css: getSolidVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'solid',\n css: getSolidVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'solid',\n css: getSolidVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'solid',\n css: getSolidVariant('$danger', '$dangerMid', '$dangerDark')\n },\n\n // Appearance Outline\n {\n theme: 'primary',\n appearance: 'outline',\n css: getOutlineVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'outline',\n css: getOutlineVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'outline',\n css: getOutlineVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'outline',\n css: getOutlineVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'outline',\n css: getOutlineVariant('$danger', '$dangerMid', '$dangerDark')\n }\n ]\n})\n\ntype ConditionallyWrapWithTooltipProps = {\n hasTooltip: boolean\n label: string\n tooltipSide?: 'bottom' | 'left' | 'right' | 'top'\n children: React.ReactNode\n}\n\nconst ConditionallyWrapWithTooltip: React.FC<\n ConditionallyWrapWithTooltipProps\n> = ({ hasTooltip, label, tooltipSide, children }) => {\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 // Ignore fragment error as this is the one place we will allow it\n // eslint-disable-next-line\n return <>{children}</>\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 hasTooltip?: boolean\n tooltipSide?: 'bottom' | 'left' | 'right' | 'top'\n } & NavigatorActions\n>\n\nexport const ActionIcon = React.forwardRef<HTMLButtonElement, ActionIconProps>(\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 <ConditionallyWrapWithTooltip\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\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(child, {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n })\n })}\n </StyledButton>\n </ConditionallyWrapWithTooltip>\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\ntype AlertDialogContentProps = React.ComponentProps<\n typeof StyledAlertDialogContent\n>\n\nexport const AlertDialogContent: React.FC<AlertDialogContentProps> = ({\n size = 'sm',\n ...remainingProps\n}) => (\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\ntype AlertDialogProps = React.ComponentProps<typeof StyledAlertDialog>\n\nexport const AlertDialog: React.FC<AlertDialogProps> & {\n Content: typeof AlertDialogContent\n Trigger: typeof Trigger\n Description: typeof Description\n Title: typeof Title\n Action: typeof Action\n Cancel: typeof Cancel\n} = (props) => <StyledAlertDialog {...props} />\n\nAlertDialog.Description = Description\nAlertDialog.Title = Title\nAlertDialog.Action = Action\nAlertDialog.Cancel = Cancel\nAlertDialog.Content = AlertDialogContent\nAlertDialog.Trigger = Trigger\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 { styled } from '~/stitches'\n\nexport const Flex = styled('div', { display: 'flex' })\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: React.FC<LoaderProps> = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}) => (\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 '@stitches/react'\nimport { darken, opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport { Loader } from '~/components/loader'\nimport { styled, theme } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\n\nconst getButtonOutlineVariant = (\n base: string,\n interact: string,\n active: string\n) => ({\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': {\n borderColor: '$tonal400',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n textDecoration: 'none',\n color: interact\n },\n '&:not([disabled]):active': {\n color: active\n }\n})\n\nconst getButtonSolidVariant = (\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n bg: base,\n color: text,\n '&[disabled]': {\n bg: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n bg: interact,\n color: text\n },\n '&:not([disabled]):active': {\n bg: active\n }\n})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$0',\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 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 },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5'\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5'\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n false: {\n width: 'max-content'\n },\n true: {\n width: '100%'\n }\n }\n },\n\n compoundVariants: [\n {\n theme: 'primary',\n appearance: 'solid',\n css: getButtonSolidVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'secondary',\n appearance: 'solid',\n css: getButtonSolidVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'solid',\n css: getButtonSolidVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'solid',\n css: getButtonSolidVariant(\n '$warning',\n '$warningMid',\n '$warningDark',\n '$tonal500'\n )\n },\n {\n theme: 'danger',\n appearance: 'solid',\n css: getButtonSolidVariant('$danger', '$dangerMid', '$dangerDark')\n },\n {\n theme: 'neutral',\n appearance: 'solid',\n css: getButtonSolidVariant(\n 'white',\n opacify('white', -0.1),\n opacify('white', -0.25),\n '$primary'\n )\n },\n {\n theme: 'primary',\n appearance: 'outline',\n css: getButtonOutlineVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'neutral',\n appearance: 'outline',\n css: getButtonOutlineVariant(\n 'white',\n opacify('white', -0.2),\n opacify('white', -0.35)\n )\n },\n {\n theme: 'secondary',\n appearance: 'outline',\n css: getButtonOutlineVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n }\n ]\n})\n\nconst WithLoader = ({ isLoading, children }) => (\n <>\n <Loader\n css={{\n opacity: isLoading ? 1 : 0,\n position: 'absolute',\n transition: 'opacity 150ms'\n }}\n />\n <Box\n as=\"span\"\n css={isLoading ? { opacity: 0, transition: 'opacity 150ms' } : {}}\n >\n {children}\n </Box>\n </>\n)\n\nconst getIconSize = (size) => {\n switch (size) {\n case 'lg':\n return 22\n case 'md':\n return 20\n case 'sm':\n default:\n return 16\n }\n}\n\nconst getChildren = (children, size) =>\n React.Children.map(children, (child, i) => {\n if (child?.type === Icon) {\n return React.cloneElement(child, {\n css: {\n [i === 0 ? 'mr' : 'ml']: size === 'sm' ? '$2' : '$3',\n size: getIconSize(size),\n ...(child.props.css ? child.props.css : {})\n }\n })\n }\n return child\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 isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n isLoading,\n onClick,\n href,\n appearance = 'solid',\n size = 'md',\n theme = 'primary',\n type = 'button',\n ...rest\n },\n ref\n ) => {\n const linkSpecificProps = href\n ? {\n as: 'a',\n href,\n onClick: undefined\n }\n : {}\n\n const buttonSpecificProps = href ? {} : { type }\n\n // Note: button is not disabled when loading for accessibility purposes.\n // Instead the click action is not fired and the button looks faded\n return (\n <StyledButton\n isLoading={isLoading || false}\n onClick={!isLoading ? onClick : undefined}\n appearance={appearance}\n size={size}\n theme={theme}\n {...rest}\n {...linkSpecificProps}\n {...buttonSpecificProps}\n ref={ref}\n >\n {typeof isLoading === 'boolean' ? (\n <WithLoader isLoading={isLoading}>\n {getChildren(children, size)}\n </WithLoader>\n ) : (\n getChildren(children, size)\n )}\n </StyledButton>\n )\n }\n) as React.FC<ButtonProps>\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 fontFamily: '$display',\n fontWeight: 700,\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2174, 0.2254)\n },\n md: {\n fontSize: '$xl',\n lineHeight: 1.14,\n ...capsize(0.2174, 0.2254)\n },\n lg: {\n fontSize: '$2xl',\n lineHeight: 1.08,\n ...capsize(0.1865, 0.1945)\n },\n xl: {\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.206, 0.214)\n },\n xxl: {\n fontSize: '$4xl',\n lineHeight: 1.06,\n ...capsize(0.1793, 0.1873)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentPropsWithoutRef<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(({ size = 'md', ...remainingProps }, ref) => (\n <StyledHeading ref={ref} size={size} {...remainingProps} />\n ))\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\n\nconst StyledStack = styled('div', {\n display: 'flex',\n '& > *': {\n m: 0\n },\n variants: {\n direction: {\n row: {\n flexDirection: 'row'\n },\n 'row-reverse': {\n flexDirection: 'row-reverse'\n },\n column: {\n flexDirection: 'column'\n }\n },\n wrap: {\n wrap: {\n flexWrap: 'wrap'\n },\n 'no-wrap': {\n flexWrap: 'no-wrap'\n },\n 'wrap-reverse': {\n flexWrap: 'wrap-reverse'\n }\n },\n justify: {\n start: { justifyContent: 'flex-start' },\n center: { justifyContent: 'center' },\n end: { justifyContent: 'flex-end' },\n false: {}\n },\n align: {\n start: { alignItems: 'flex-start' },\n center: { alignItems: 'center' },\n end: { alignItems: 'flex-end' },\n false: {}\n },\n gap: {\n ...createThemeVariants('space', {\n mt: '-$key',\n ml: '-$key',\n '& > *': {\n mt: '$key',\n ml: '$key'\n }\n }),\n false: {}\n }\n }\n})\n\ntype StackPropsType = React.ComponentProps<typeof StyledStack> & {\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 Stack: React.ForwardRefExoticComponent<StackPropsType> =\n React.forwardRef(\n (\n {\n css,\n gap = 2,\n direction = 'row',\n wrap = 'wrap',\n justify = 'start',\n align,\n ...remainingProps\n },\n ref\n ) => {\n return (\n <CSSWrapper css={css}>\n <StyledStack\n ref={ref}\n direction={direction}\n gap={gap}\n wrap={wrap}\n justify={justify}\n align={\n typeof align === 'undefined' && direction !== 'column'\n ? 'center'\n : align\n }\n {...remainingProps}\n />\n </CSSWrapper>\n )\n }\n )\n\nStack.displayName = 'Stack'\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 fontFamily: '$body',\n fontWeight: 400,\n margin: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: textVariants\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(({ size = 'md', ...remainingProps }, ref) => (\n <StyledText size={size} {...remainingProps} ref={ref} />\n ))\n\nText.displayName = 'Text'\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Heading } from '../../heading'\nimport { Stack } from '../../stack'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert: React.FC<AlertDialogContentProps> = ({\n title,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n ...remainingProps\n}) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n {...remainingProps}\n >\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mb: '$5' }}>\n {title}\n </Heading>\n {description && (\n <Text as={AlertDialog.Description} css={{ mb: '$5' }}>\n {description}\n </Text>\n )}\n <Stack gap=\"2\" justify=\"end\">\n {cancelActionText && (\n <Button\n appearance=\"outline\"\n as={AlertDialog.Cancel}\n onClick={() => onAction(false)}\n size=\"sm\"\n >\n {cancelActionText}\n </Button>\n )}\n <Button\n as={AlertDialog.Action}\n onClick={() => onAction(true)}\n size=\"sm\"\n >\n {confirmActionText}\n </Button>\n </Stack>\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: React.FC = ({ children }) => {\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","/*\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 * 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\ntype TAvatarIconProps = {\n is: typeof Icon\n}\n\nexport const AvatarIcon: React.FC<TAvatarIconProps> = ({ is }) => {\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: React.FC<ImageProps> = StyledImage\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: React.FC<Record<string, never>> = () => {\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: React.FC<Record<string, never>> = () => {\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: '$tonal400' }}>\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\ntype TAvatarImageProps = {\n src: string\n alt: string\n}\n\nexport const AvatarImage: React.FC<TAvatarImageProps> = ({ src, alt }) => {\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: '$tonal400',\n borderRadius: '$round',\n border: '2px solid $tonal100',\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: '$tonal400',\n backgroundColor: '$tonal50'\n },\n '&:active': {\n borderColor: '$primary',\n backgroundColor: '$tonal100'\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: React.FC<TAvatarProps> = ({\n children,\n name,\n size\n}) => {\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: React.FC<TAvatarProps> = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}) => (\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\ntype TAvatar = typeof AvatarRoot & {\n Image: typeof AvatarImage\n Initial: typeof AvatarInitial\n Placeholder: typeof AvatarPlaceholder\n Icon: typeof AvatarIcon\n}\n\nexport const Avatar = AvatarRoot as TAvatar\nAvatar.Image = AvatarImage\nAvatar.Initial = AvatarInitial\nAvatar.Placeholder = AvatarPlaceholder\nAvatar.Icon = AvatarIcon\nAvatar.displayName = 'Avatar'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\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 theme: {\n success: {\n bg: '$successLight',\n color: '$successMid'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n danger: {\n bg: '$dangerLight',\n color: '$dangerMid'\n },\n neutral: {\n bg: '$tonal50',\n color: '$tonal400'\n },\n info: {\n bg: '$primaryLight',\n color: '$primaryMid'\n },\n purple: {\n bg: '$purple200',\n color: '$purple1000'\n }\n },\n size: {\n xs: {\n fontSize: '$sm',\n px: '$1',\n height: '$2'\n },\n sm: {\n fontSize: '$md',\n px: '$1',\n height: '$3'\n },\n md: {\n fontSize: '$md',\n px: '$2',\n height: '$4'\n }\n }\n }\n})\n\ntype BadgeProps = React.ComponentProps<typeof StyledBadge>\n\nexport const Badge: React.FC<BadgeProps> = ({\n theme = 'info',\n size = 'sm',\n children,\n ...rest\n}) => {\n return (\n <StyledBadge role=\"status\" theme={theme} size={size} {...rest}>\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <Box\n css={{\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n py: '$0'\n }}\n >\n {child}\n </Box>\n )\n }\n\n if (React.isValidElement(child) && child.type === Icon) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: 'sm',\n css: { ...child.props.css, flexShrink: 0 }\n }\n )\n }\n })}\n </StyledBadge>\n )\n}\n\nBadge.displayName = 'Badge'\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: '$primary',\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: '$primaryMid'\n },\n '&:active': {\n color: '$primaryDark'\n },\n '&:disabled': {\n color: '$tonal100'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious: React.FC<{ css: CSS }> = (props) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext: React.FC<{ css: CSS }> = (props) => (\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: '$tonal200',\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: '$primary'\n },\n '&:hover, &:focus': {\n bg: '$primaryMid'\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\ntype SlideProps = React.ComponentProps<typeof StyledSlide> & { index: number }\n\nexport const CarouselSlide: React.FC<SlideProps> = ({\n children,\n ...remainingProps\n}) => (\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\ntype CarouselSubComponents = {\n ArrowNext: typeof CarouselArrowNext\n ArrowPrevious: typeof CarouselArrowPrevious\n Pagination: typeof CarouselPagination\n Slide: typeof CarouselSlide\n Slider: typeof CarouselSlider\n}\n\nexport const Carousel: React.FC<\n CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>\n> &\n CarouselSubComponents = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}) => {\n return (\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/**\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\nCarousel.ArrowNext = CarouselArrowNext\nCarousel.ArrowPrevious = CarouselArrowPrevious\nCarousel.Pagination = CarouselPagination\nCarousel.Slide = CarouselSlide\nCarousel.Slider = CarouselSlider\n\nCarousel.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'\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$tonal400',\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 '&[data-state=\"checked\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '1px'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n borderColor: '$tonal400',\n cursor: 'not-allowed',\n color: '$tonal400'\n },\n variants: {\n state: {\n error: {\n borderColor: '$danger'\n }\n }\n }\n})\n\ntype CheckboxProps = React.ComponentProps<typeof StyledCheckbox>\n\nexport const Checkbox: React.FC<CheckboxProps> = React.forwardRef(\n (props, ref) => (\n <StyledCheckbox {...props} ref={ref}>\n <StyledIndicator asChild>\n <Icon\n is={props.checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3',\n size: 14\n }}\n />\n </StyledIndicator>\n </StyledCheckbox>\n )\n)\n\nCheckbox.displayName = 'Checkbox'\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: '$primary' },\n neutral: { color: '$tonal400' },\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\nconst InlineMessageIcon = styled(Icon, {\n flexShrink: '0',\n mr: '$2'\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage: React.FC<TInlineMessageProps> = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <InlineMessageIcon\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: '$tonal500',\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 },\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})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\ntype LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label: React.FC<LabelProps> = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}) => (\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: '$primary' }\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 { 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: '$tonal100',\n borderRadius: '$1',\n color: '$tonal600',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode: React.FC<MarkdownCodeProps> = ({ node }) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import { 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: React.FC<MarkdownEmphasisProps> = ({\n node,\n handleNode\n}) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import { 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: React.FC<MarkdownHeadingProps> = ({\n node,\n handleNode,\n ...rest\n}) => {\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 { 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: '$tonal100',\n borderRadius: '$0',\n color: '$tonal600',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode: React.FC<MarkdownInlineCodeProps> = ({\n node\n}) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import { 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: React.FC<MarkdownImageProps> = ({ node, css }) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import { 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: React.FC<MarkdownLinkProps> = ({\n node,\n handleNode\n}) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import { 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: React.FC<MarkdownListProps> = ({\n node,\n handleNode,\n css\n}) => (\n <List\n css={{ '& p:before, & p:after': { display: 'none' }, ...css } as CSS}\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import { 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: React.FC<MarkdownListItemProps> = ({\n node,\n handleNode\n}) => <List.Item>{node.children?.map(handleNode)}</List.Item>\n","import { 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: React.FC<MarkdownParagraphProps> = ({\n node,\n handleNode,\n ...rest\n}) => <Text {...rest}>{node.children?.map(handleNode)}</Text>\n","import { 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: React.FC<MarkdownStrongProps> = ({\n node,\n handleNode\n}) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import { 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: '$tonal100',\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: React.FC<MarkdownThematicBreakProps> = ({\n css\n}) => <Divider css={{ width: '100%', ...css } as CSS} />\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\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: '$primary',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primaryMid',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primaryDark'\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})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions\n>\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n ({ size = 'md', href, ...props }, ref) => (\n <StyledLink\n {...(!href && { as: 'button', noCapsize: true })}\n size={size}\n href={href}\n {...props}\n ref={ref}\n />\n )\n) as React.FC<LinkProps>\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: React.FC<DescriptionProps> = ({ children, css }) => (\n <Text size=\"sm\" css={{ color: '$tonal300', 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'\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}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper: React.FC<FieldWrapperProps> = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel\n}) => {\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}>\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 $tonal400',\n borderRadius: '$round',\n color: 'white',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 0,\n size: '$1',\n transition: 'all 50ms ease-out',\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n borderColor: '$tonal400',\n color: '$tonal400',\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})\n\ntype RadioButtonProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton: React.FC<RadioButtonProps> = (props) => (\n <StyledRadioButton {...props}>\n <StyledIndicator />\n </StyledRadioButton>\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: React.FC<InlineFieldWrapperProps> = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}) => (\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 type { Mode, UseFormMethods } from 'react-hook-form'\n\nexport enum StorageEnum {\n LOCAL = 'local',\n SESSION = 'session'\n}\n\ntype ExcludeIncludeConfig = {\n exclude?: string[]\n include?: string[]\n}\n\nexport type PersistOptions = {\n id: string\n storage?: StorageEnum\n} & ExcludeIncludeConfig\n\nexport type FormPersistParams = {\n storage: Storage\n} & ExcludeIncludeConfig\n\nexport type PersistFormWrapperValues = {\n persist: PersistOptions\n watch\n setValue\n children: React.ReactNode | any\n}\n\nexport type FormContentValues = {\n formMethods\n handleSubmit: (\n submitHandler: (data: any) => void | any,\n submitErrorHandler?: (errors: any) => void\n ) => (e: any) => Promise<void>\n onSubmit: (data: any) => void | any\n onError?: (errors: any) => void\n children: React.ReactNode | any\n}\n\nexport type FormValues = {\n defaultValues?: { [key: string]: string | number }\n onSubmit: (data: any) => void | any\n onError?: (errors: any) => void\n validationMode?: Mode\n persist?: PersistOptions\n} & (\n | { children: React.ReactNode; render?: never }\n | { children?: never; render: (methods: UseFormMethods) => React.ReactNode }\n)\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport useFormPersist from 'react-hook-form-persist'\n\nimport { styled } from '~/stitches'\n\nimport type {\n FormContentValues,\n FormPersistParams,\n FormValues,\n PersistFormWrapperValues\n} from './Form.types'\nimport { StorageEnum } from './Form.types'\n\nconst StyledForm = styled('form', {})\n\ntype FormProps = React.ComponentPropsWithoutRef<typeof StyledForm> & FormValues\n\ntype FormContentProps = React.ComponentPropsWithoutRef<typeof StyledForm> &\n FormContentValues\n\ntype PersistFormWrapperProps = React.ComponentPropsWithoutRef<\n typeof StyledForm\n> &\n PersistFormWrapperValues\n\nconst PersistFormWrapper: React.FC<PersistFormWrapperProps> = ({\n persist,\n watch,\n setValue,\n children\n}) => {\n const { id, ...options } = persist\n\n let params: FormPersistParams = {\n ...options,\n storage:\n options.storage === StorageEnum.LOCAL\n ? window.localStorage\n : window.sessionStorage\n }\n\n if (options.exclude) {\n // Workaround for bug in react-hook-form-persist package\n // package will still read from and save exclude param\n // so need to send inputs we actually want to read from in include param instead\n const { exclude, ...rest } = params\n const allValues = watch()\n const include = Object.keys(allValues).filter((key) => {\n if (!options.exclude?.includes(key)) return key\n })\n params = { ...rest, include }\n }\n\n useFormPersist(id, { watch, setValue }, params)\n\n return children\n}\n\nconst FormContent: React.FC<FormContentProps> = ({\n formMethods,\n handleSubmit,\n onSubmit,\n onError,\n children,\n ...remainingProps\n}) => (\n <FormProvider {...formMethods}>\n <StyledForm\n aria-label=\"form\"\n {...remainingProps}\n onSubmit={handleSubmit(onSubmit, onError)}\n >\n {children}\n </StyledForm>\n </FormProvider>\n)\n\nexport const Form: React.FC<FormProps> = ({\n children,\n defaultValues = {},\n onSubmit,\n onError,\n validationMode = 'onBlur',\n render,\n persist,\n ...remainingProps\n}) => {\n invariant(\n !(children && render),\n '`Form` should only be given one of `children` or `render`. When both are provided, `render` will be used and `children` will be ignored.'\n )\n\n const formMethods = useForm({\n defaultValues,\n mode: validationMode\n })\n const { handleSubmit, watch, setValue } = formMethods\n\n const formContent = render ? render(formMethods) : children\n\n const props = {\n formMethods,\n handleSubmit,\n onSubmit,\n onError,\n ...remainingProps\n }\n\n if (persist) {\n return (\n <PersistFormWrapper persist={persist} watch={watch} setValue={setValue}>\n <FormContent {...props}>{formContent}</FormContent>\n </PersistFormWrapper>\n )\n }\n\n return <FormContent {...props}>{formContent}</FormContent>\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\ntype CheckboxFieldProps = React.ComponentProps<typeof Checkbox> &\n FieldElementWrapperProps\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField: React.FC<CheckboxFieldProps> = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}) => {\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' }\nexport const StyledChipIcon = styled(Icon, {\n flexShrink: 0\n})\nexport const ChipIcon: typeof Icon = ({ ...props }) => {\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 <StyledChipIcon {...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: '$primary',\n color: '$primaryMid',\n bg: '$primaryLight',\n '&[data-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: React.FC<TChipRootProviderProps> = ({\n size,\n children\n}) => {\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 asWorkaround?: React.ElementType // (!?) `asWorkaround` rather than `as` because, it seems, when we extend this via `styled()` stitches overrides this component from the first argument for the value in `as`\n}\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ asWorkaround, size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} as={asWorkaround} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\ntype TChipType = typeof ChipRoot & {\n Content: typeof ChipContent\n Icon: typeof ChipIcon\n}\n\nexport const Chip = ChipRoot as TChipType\nChip.Content = ChipContent\nChip.Icon = ChipIcon\nChip.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Stack } from '~/components/stack'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Stack>\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => {\n return <Stack ref={ref} direction=\"row\" gap={gap} align={false} {...rest} />\n})\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}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => null\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n}\n\nexport const DismissibleRootProvider: React.FC<IDismissibleRootProps> = ({\n children,\n disabled\n}) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n const value = React.useMemo<IDismissibleRootContext>(\n () => ({ disabled, isDismissed, setIsDismissed }),\n [disabled, isDismissed]\n )\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupItemProps {\n asChild?: boolean\n value: React.ReactText\n onDismiss?: (value: React.ReactText) => void\n}\n\nconst DismissibleRootInternal: React.FC<IDismissibleGroupItemProps> = ({\n asChild = false,\n value,\n onDismiss,\n ...rest\n}) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n React.useEffect(() => {\n if (isDismissed) onDismiss?.(value)\n }, [isDismissed])\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: React.FC<\n IDismissibleGroupItemProps & IDismissibleRootProps\n> = ({ disabled = false, ...rest }) => (\n <DismissibleRootProvider disabled={disabled}>\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\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: React.FC<IDismissibleTriggerProps> = ({\n asChild = false,\n ...rest\n}) => {\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 } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\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\ntype TDismissible = typeof DismissibleRoot & {\n Trigger: typeof DismissibleTrigger\n}\n\nexport const Dismissible = DismissibleRoot as TDismissible\nDismissible.Trigger = DismissibleTrigger\nDismissible.displayName = 'Dismissible'\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: React.FC<IDismissibleGroupProps> = ({\n children,\n disabled,\n onDismiss\n}) => {\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.ComponentType\n}\n\nexport const DismissibleGroupRoot: React.FC<IDismissibleGroupRootProps> = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\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 disabled?: boolean\n}\n\nexport const DismissibleGroupItem: React.FC<TDismissibleGroupItemProps> = ({\n children,\n disabled: itemDisabled = false,\n ...rest\n}) => {\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 onDismiss={onDismiss}\n {...rest}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\ntype TDismissibleGroup = typeof DismissibleGroupRoot & {\n Item: typeof DismissibleGroupItem\n Trigger: typeof DismissibleTrigger\n}\n\nexport const DismissibleGroup = DismissibleGroupRoot as TDismissibleGroup\nDismissibleGroup.Item = DismissibleGroupItem\nDismissibleGroup.Trigger = DismissibleTrigger\nDismissibleGroup.displayName = 'DismissibleGroup'\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: React.FC<TChipDismissibleGroupItem> = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}) => {\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: '$tonal200' }}\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.forwardRef<\n HTMLDivElement,\n TChipDismissibleGroupRootProps\n>((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(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$tonal100',\n color: '$tonal600',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$white',\n color: '$primaryDark'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$tonal400',\n bg: '$tonal50',\n borderColor: '$tonal200'\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: React.FC<TChipToggleGroupItem> = ({\n size = 'md',\n children,\n ...rest\n}) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem asWorkaround=\"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\nimport { ChipGroup } from '~/components/chip'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot = React.forwardRef<\n HTMLDivElement,\n TChipToggleGroupRootProps\n>((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'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\n\nexport const ComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.tonal300.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 $tonal300',\n borderRadius: '$0',\n boxSizing: 'border-box',\n color: '$tonal600',\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: '$tonal300',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n variants: {\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\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: '$tonal500',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$tonal50',\n borderRadius: '$0'\n },\n '[data-user-value]': {\n color: '$primary'\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 $tonal100',\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'\nimport * as React from 'react'\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\nconst StyledCombobox = styled(BaseCombobox, {})\n\ntype ComboboxProps = React.ComponentProps<typeof StyledCombobox>\n\nexport const Combobox: React.FC<ComboboxProps> & {\n Input: typeof ComboboxInput\n Popover: typeof ComboboxPopover\n List: typeof ComboboxList\n Option: typeof ComboboxOption\n OptionText: typeof ComboboxOptionText\n} = (props) => <StyledCombobox {...props} />\n\nCombobox.displayName = 'Combobox'\nCombobox.Option = ComboboxOption\nCombobox.Input = ComboboxInput\nCombobox.Popover = ComboboxPopover\nCombobox.List = ComboboxList\nCombobox.OptionText = ComboboxOptionText\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\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 data: TAsyncDataResult\n columns: any\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 type { UniqueIdentifier } from '@dnd-kit/core'\nimport type { PaginationState } from '@tanstack/react-table'\nimport {\n getCoreRowModel,\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} & (\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 children\n}: DataTableProviderProps): JSX.Element => {\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\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 },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\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 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 }\n }, [table, applyPagination, getTotalRows, isSortable])\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.forwardRef<\n HTMLTableRowElement,\n React.ComponentProps<typeof StyledRow>\n>((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: '$tonal50' }\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: React.FC<TableBodyProps> = ({\n striped = true,\n ...rest\n}) => <StyledTableBody striped={striped} {...rest} />\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderBottom: '1px solid $tonal100',\n boxSizing: 'border-box',\n color: '$tonal400',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: 'bold' }\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: '$tonal400',\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 color: 'white',\n fontFamily: '$body',\n fontWeight: 600,\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle'\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 LIGHT: 'light'\n}\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n [`${TableHeaderCell}`]: {\n bg: '$primaryDark'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$tonal50',\n color: '$tonal600'\n }\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader: React.FC<TableHeaderProps> = ({\n theme = 'primaryDark',\n ...rest\n}: TableHeaderProps) => <StyledTableHeader theme={theme} {...rest} />\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: number,\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n\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 setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef])\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'\ninterface ITableStickyColumnsContainerProps {\n children: React.ReactNode\n numberOfStickyColumns?: number\n css?: CSS\n}\n\nexport const TableStickyColumnsContainer: React.FC<\n ITableStickyColumnsContainerProps\n> = ({ children, numberOfStickyColumns = 0, css, ...restProps }) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const scrollContainerRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss(\n numberOfStickyColumns,\n scrollContainerRef\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={scrollContainerRef}\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 { 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\ntype TableSubComponents = {\n Body: typeof TableBody\n Cell: typeof TableCell\n Footer: typeof TableFooter\n FooterCell: typeof TableFooterCell\n Header: typeof TableHeader\n HeaderCell: typeof TableHeaderCell\n Row: typeof TableRow\n StickyColumnsContainer: typeof TableStickyColumnsContainer\n}\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}\n\nexport const Table: React.FC<TableProps> & TableSubComponents = ({\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n ...rest\n}: TableProps) => {\n const tableComponent = <StyledTable size={size} corners={corners} {...rest} />\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n}\n\nTable.Body = TableBody\nTable.Cell = TableCell\nTable.Footer = TableFooter\nTable.FooterCell = TableFooterCell\nTable.Header = TableHeader\nTable.HeaderCell = TableHeaderCell\nTable.Row = TableRow\nTable.StickyColumnsContainer = TableStickyColumnsContainer\n\nTable.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\nexport const DataTableBody: React.FC<DataTableBodyProps> = ({\n striped = false,\n ...props\n}) => {\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} />\n })}\n </Table.Body>\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: React.FC<DataTableDataCellProps> = ({\n cell\n}) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nexport const EmptyStateBody = styled(Text, {\n color: '$tonal400',\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","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\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 React.ComponentProps<typeof Image>\n\nexport const EmptyStateImage: React.FC<EmptyStateImageProps> = (props) => (\n <StyledEmptyStateImage {...props} />\n)\n","import { styled } from '~/stitches'\n\nexport const EmptyStateTitle = styled('h2', {\n color: '$tonal400',\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","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\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\ntype EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nexport const EmptyState: React.FC<EmptyStateProps> & {\n Image: typeof EmptyStateImage\n Title: typeof EmptyStateTitle\n Body: typeof EmptyStateBody\n} = ({ size = 'sm', children, ...props }) => (\n <EmptyStateContainer size={size} {...props}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (\n child.type === EmptyStateImage ||\n child.type === EmptyStateTitle ||\n child.type === EmptyStateBody\n ) {\n return React.cloneElement(child, { ...child.props, size })\n }\n\n return child\n })}\n </EmptyStateContainer>\n)\n\nEmptyState.displayName = 'EmptyState'\nEmptyState.Image = EmptyStateImage\nEmptyState.Title = EmptyStateTitle\nEmptyState.Body = EmptyStateBody\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: React.FC<DataTableEmptyStateProps> = ({\n children,\n ...rest\n}) => {\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\ninterface IDataTableErrorProps {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}\n\nexport const DataTableError: React.FC<IDataTableErrorProps> = ({\n children\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 OptionallyVisuallyHiddenContainer: React.FC<{\n hidden?: boolean\n}> = ({ children, hidden = false }) => {\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","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledInput = styled('input', {\n appearance: 'none',\n border: '1px solid $tonal400',\n borderRadius: '$0',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n color: '$tonal600',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n px: '$3',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$tonal300',\n opacity: 1\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 },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\n// override default 'type' property to prevent Input from being used to render\n// checkboxes, radios etc — we have dedicated components for them\nexport type InputProps = Override<\n React.ComponentProps<typeof StyledInput>,\n {\n name: string\n as?: never\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n }\n>\n\nexport const Input: React.FC<InputProps> = React.forwardRef(\n ({ type = 'text', size = 'md', ...rest }, ref) => {\n if (type === 'number') {\n return (\n <StyledInput\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n size={size}\n {...rest}\n ref={ref}\n />\n )\n }\n\n return <StyledInput type={type} size={size} {...rest} ref={ref} />\n }\n)\n\nInput.displayName = 'Input'\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 { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box/'\nimport { Icon } from '~/components/icon/'\nimport { Input } from '~/components/input/'\nimport { CSS, styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md'\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: '$tonal300',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n top: '$2',\n right: '$2',\n size: '$1'\n },\n md: {\n top: 10,\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInput = styled(Input, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, & input[type=\"search\"]::-webkit-search-results-decoration':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.FC<SearchInputProps> = React.forwardRef(\n (\n {\n size = 'md',\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 React.useImperativeHandle(ref, () => inputElRef.current as HTMLInputElement)\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={{ size: size == 'sm' ? '$1' : 20 }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={size}\n css={{ position: 'absolute', top: '0', right: '$1' }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <Box css={{ position: 'relative', ...css }}>\n <StyledSearchInput\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 </Box>\n )\n }\n)\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionallyVisuallyHiddenContainer } from '../../utilities/optionally-visually-hidden-container'\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: React.FC<DataTableSearchProps> = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}) => {\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 <OptionallyVisuallyHiddenContainer hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionallyVisuallyHiddenContainer>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n}\n\nexport const DataTableHead: React.FC<DataTableHeadProps> = ({\n sortable = true,\n theme = 'light',\n ...props\n}) => {\n const { getHeaderGroups, setIsSortable } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n return (\n <Table.Header theme={theme} {...props}>\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row key={headerGroup.id}>\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 { SortDown, SortUp } from '@atom-learning/icons'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\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 sortIcons = {\n asc: SortUp,\n desc: SortDown\n}\n\nconst SortIcon: React.FC<{ direction: 'asc' | 'desc' }> = ({ direction }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1' }}\n />\n)\n\nexport const DataTableHeaderCell: React.FC<DataTableHeaderProps> = ({\n header,\n children,\n css,\n ...props\n}) => {\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 return (\n <Table.HeaderCell\n onClick={\n isSortableTable && isDataColumn\n ? header.column.getToggleSortingHandler()\n : undefined\n }\n css={{\n cursor: isSortableTable && isDataColumn ? 'pointer' : 'initial',\n ...css\n }}\n {...props}\n >\n <Flex css={{ alignItems: 'center' }}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex css={{ position: 'relative', alignItems: 'center' }}>\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n </Flex>\n </Table.HeaderCell>\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: React.FC<\n React.ComponentProps<typeof PendingState>\n> = (props) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import { CSS } from '@stitches/react'\nimport * as React from 'react'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\ninterface IDataTableMetaDataProps {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData: React.FC<IDataTableMetaDataProps> = ({\n copy,\n css\n}) => {\n const { getState, columns, getRowModel } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.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 css={{ fontWeight: 600, ...css }}>{`${totalRows} items ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTableDataCell } from './DataTableDataCell'\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n}\n\nexport const DataTableRow: React.FC<DataTableRowProps> = ({ row }) => {\n return (\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableLoading } from './DataTableLoading'\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTable.Head>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof Table.Body>, 'striped'>>\n\nexport const DataTableTable: React.FC<DataTableTableProps> = ({\n sortable,\n striped,\n theme,\n css,\n numberOfStickyColumns = 0,\n ...props\n}) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n <Table\n {...props}\n numberOfStickyColumns={numberOfStickyColumns}\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 <DataTable.Body striped={striped} />\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: React.FC<TSortableHandleProps> = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}) => {\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 { CSS, styled } from '@stitches/react'\nimport * as React from 'react'\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: React.FC<TSortableItemProps> = ({\n id,\n asChild = false,\n css,\n isDragHandle = false,\n disabled,\n ...rest\n}) => {\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: React.FC<TSortableRootProps> = ({\n sortableIds,\n onSortChange,\n children\n}) => {\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: React.FC<DataTableDraggableRowProps> = ({\n row,\n idColumn = 'id'\n}) => {\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: React.FC<DataTableBodyProps> = ({\n striped = false,\n idColumn = 'id',\n ...props\n}) => {\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: React.FC<DragAndDropTableProps> = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}) => {\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","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundColor: 'white',\n backgroundImage: encodeBackgroundIcon(theme.colors.tonal300.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n border: '1px solid $tonal300',\n borderRadius: '$0',\n color: '$tonal600',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n transition: 'all 75ms ease-out',\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\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 },\n state: {\n error: {\n border: '1px solid $danger'\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.FC<SelectProps> = React.forwardRef(\n ({ placeholder, children, size = 'md', ...remainingProps }, ref) => {\n const props = { size, 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 { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Flex } from '../../flex'\nimport { Icon } from '../../icon'\nimport { Select } from '../../select'\nimport { Text } from '../../text'\n\nexport const DirectionButton: React.FC<{\n css?: CSS\n direction: 'next' | 'previous'\n disabled: boolean\n onClick: () => void\n}> = ({ direction, ...remainingProps }) => {\n const isNext = direction === 'next'\n\n return (\n <ActionIcon\n appearance=\"outline\"\n isRounded\n label={isNext ? 'Next page' : 'Previous page'}\n name={isNext ? 'Next page' : 'Previous page'}\n size=\"md\"\n {...remainingProps}\n >\n <Icon is={isNext ? ChevronRight : ChevronLeft} />\n </ActionIcon>\n )\n}\n\nexport const GotoPageSelect: React.FC<{\n pageIndex: number\n pageCount: number\n gotoPage: (pageNumber: number) => void\n disabled: boolean\n}> = ({ gotoPage, pageCount, pageIndex, disabled }) => {\n return (\n <Flex css={{ alignItems: 'center' }}>\n <Select\n value={pageIndex}\n size=\"sm\"\n css={{ mr: '$3' }}\n disabled={disabled}\n onChange={(e) => {\n gotoPage(Number(e.target.value))\n }}\n >\n {Array.from({ length: pageCount }, (z, x) => x).map((i) => {\n return (\n <option key={i} value={i}>\n {i + 1}\n </option>\n )\n })}\n </Select>\n <Text size=\"sm\" css={{ flex: 'none' }}>{`of ${pageCount} ${\n pageCount > 1 ? 'pages' : 'page'\n }`}</Text>\n </Flex>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DirectionButton, GotoPageSelect } from './PaginationButtons'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums'\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav>\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n previousPage,\n nextPage,\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 if (isEmpty) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n const isPaginationDisabled =\n asyncDataState === AsyncDataState.PENDING ||\n asyncDataState === AsyncDataState.REJECTED\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n\n <GotoPageSelect\n gotoPage={setPageIndex}\n pageCount={getPageCount()}\n pageIndex={paginationState.pageIndex}\n disabled={isPaginationDisabled}\n />\n\n <Flex css={{ justifyContent: 'flex-end' }}>\n <DirectionButton\n direction=\"previous\"\n disabled={paginationState.pageIndex === 0 || isPaginationDisabled}\n onClick={previousPage}\n css={{ mr: '$4' }}\n />\n <DirectionButton\n direction=\"next\"\n disabled={\n paginationState.pageIndex === getPageCount() - 1 ||\n isPaginationDisabled\n }\n onClick={nextPage}\n />\n </Flex>\n </StyledNav>\n )\n}\n","import * as React from 'react'\n\nimport { DataTableBody } from './DataTableBody'\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 { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\ntype TDataTable = React.FC<React.ComponentProps<typeof 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: typeof DataTableBody\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: typeof DataTableDataCell\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: typeof DragAndDropTable\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: typeof 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\n Head: typeof DataTableHead\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\n HeaderCell: typeof DataTableHeaderCell\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\n MetaData: typeof DataTableMetaData\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n\n Pagination: typeof Pagination\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\n Row: typeof 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: typeof 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: typeof 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: typeof DataTableError\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: typeof DataTableEmptyState\n}\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: TDataTable = (props) => <DataTableProvider {...props} />\n\nDataTable.Body = DataTableBody\nDataTable.DataCell = DataTableDataCell\nDataTable.DragAndDropTable = DragAndDropTable\nDataTable.Head = DataTableHead\nDataTable.HeaderCell = DataTableHeaderCell\nDataTable.MetaData = DataTableMetaData\nDataTable.Pagination = Pagination\nDataTable.Row = DataTableRow\nDataTable.GlobalFilter = DataTableGlobalFilter\nDataTable.Table = DataTableTable\nDataTable.Loading = DataTableLoading\nDataTable.Error = DataTableError\nDataTable.EmptyState = DataTableEmptyState\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: '$tonal900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$tonal100'\n },\n '&:active': {\n color: 'white',\n bg: '$primary'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary',\n color: 'white',\n '&:hover': { bg: '$primary' }\n }\n },\n isToday: {\n true: { bg: '$tonal100' }\n },\n isOutsideMonth: {\n true: { color: '$tonal200' }\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: '$tonal600',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$tonal600 !important',\n fontWeight: '400',\n '&:hover': {\n bg: '$tonal100 !important',\n color: '$tonal600 !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: React.FC<CalendarProps> = ({\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}) => {\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: '$tonal600' }}\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 key={`${month}${year}${weekday}`}\n css={{ fontWeight: 600, 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: React.FC<PopoverContentProps> = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}) => (\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\ntype PopoverProps = React.ComponentProps<typeof StyledRoot>\n\nexport const Popover: React.FC<PopoverProps> & {\n Trigger: typeof Trigger\n Content: typeof PopoverContent\n Portal: typeof Portal\n} = (props) => <Root {...props} />\n\nPopover.Content = PopoverContent\nPopover.Portal = Portal\nPopover.Trigger = Trigger\n\nPopover.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { useState } from 'react'\n\nimport { DEFAULT_DATE_FORMAT } from './constants'\n\ndayjs.extend(customParseFormat)\n\nexport const useDate = (\n initialDate: Date | undefined,\n dateFormat = DEFAULT_DATE_FORMAT\n): {\n dateString: string\n date: Date | undefined\n setDate: (inputDate: Date | string, isDateString: boolean) => void\n} => {\n const [date, setDate] = useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n const [dateString, setDateString] = useState(\n initialDate ? dayjs(initialDate).format(dateFormat) : ''\n )\n\n const saveDate = (inputDate, isDateString = false) => {\n const parsedInputDate = isDateString\n ? dayjs(inputDate, dateFormat, true)\n : dayjs(inputDate)\n\n setDate(parsedInputDate.isValid() ? parsedInputDate.toDate() : undefined)\n setDateString(isDateString ? inputDate : parsedInputDate.format(dateFormat))\n }\n\n return { dateString, date, setDate: saveDate }\n}\n","import { CalendarEvent } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\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'\nimport { useDate } from './use-date'\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nexport const DateInput = React.forwardRef<HTMLInputElement, DateInputProps>(\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, dateString, setDate } = useDate(initialDate, dateFormat)\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 React.useEffect(() => {\n onChange?.(date)\n }, [date, onChange])\n\n return (\n <Box css={{ position: 'relative' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={(event) => setDate(event.target.value, true)}\n value={dateString}\n ref={ref}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{ position: 'absolute', top: '0', right: '0' }}\n disabled={disabled}\n label={updatedLabels.open}\n size={size}\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 setDate(date.date, false)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await setDate(date, false)\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: React.FC<DateFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\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 { 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 { fadeIn, fadeOut } from '~/utilities'\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, {\n backgroundColor: '$alpha600',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'fixed',\n overflowY: 'auto',\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 StyledDialogContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\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: { width: '380px' },\n sm: { width: '480px' },\n md: { width: '600px' },\n lg: { width: '800px' },\n xl: { width: '1100px' }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent: React.FC<DialogContentProps> = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}) => (\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' }}\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 { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\n\nconst StyledDialog = styled(Root, {})\n\ntype DialogProps = React.ComponentProps<typeof StyledDialog>\n\nexport const Dialog: React.FC<DialogProps> & {\n Background: typeof DialogBackground\n Close: typeof DialogClose\n Content: typeof DialogContent\n Description: typeof Description\n Title: typeof Title\n Trigger: typeof Trigger\n} = (props) => <StyledDialog {...props} />\n\nDialog.Background = DialogBackground\nDialog.Close = DialogClose\nDialog.Content = DialogContent\nDialog.Description = Description\nDialog.Title = Title\nDialog.Trigger = Trigger\n\nDialog.displayName = 'Dialog'\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'\n\nexport const itemStyles = {\n alignItems: 'center',\n color: '$tonal600',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 400,\n position: 'relative',\n px: '$3',\n py: '$2',\n '&[data-disabled]': {\n color: '$tonal200',\n pointerEvents: 'none'\n },\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: '$primaryMid',\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'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem: React.FC<\n React.ComponentProps<typeof DropdownMenuItem> & { href: string }\n> = ({ children, href, ...props }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\">\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: '$tonal200',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuTrigger = styled(Trigger, {})\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: React.FC<React.ComponentProps<typeof Root>> & {\n Content: typeof DropdownMenuContent\n Item: typeof DropdownMenuItem\n LinkItem: typeof DropdownMenuLinkItem\n Portal: typeof Portal\n Separator: typeof DropdownMenuSeparator\n Trigger: typeof DropdownMenuTrigger\n} = (props) => <Root {...props} />\n\nDropdownMenu.Content = DropdownMenuContent\nDropdownMenu.Item = DropdownMenuItem\nDropdownMenu.LinkItem = DropdownMenuLinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.Separator = DropdownMenuSeparator\nDropdownMenu.Trigger = DropdownMenuTrigger\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: React.FC<FileInputProps> = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}) => {\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: React.FC<GridProps> = ({\n css,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}) => (\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 } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField: React.FC<InputFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { StyledDivider } from '../divider/Divider'\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledImage } from '../image/Image'\nimport { StyledList } from '../list/List'\nimport { StyledText } from '../text/Text'\n\nconst StyledStackContent = styled('div', {\n '& > *': {\n '&:not(:first-child)': { mt: '$5' },\n '&:not(:last-child)': { mb: '$5' }\n },\n [`& > ${StyledHeading}`]: {\n maxWidth: '65ch'\n },\n [`& > ${StyledText}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledList}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledDivider}`]: {\n my: '$5'\n },\n [`& > ${StyledImage}`]: {\n display: 'block',\n '&:not(:first-child)': { mt: '$6' },\n '&:not(:last-child)': { mb: '$6' }\n }\n})\n\ntype StackContentProps = React.ComponentProps<typeof StyledStackContent> & {\n children: React.ReactNode\n css?: CSS\n}\n\nexport const StackContent: React.ForwardRefExoticComponent<StackContentProps> =\n React.forwardRef((props, ref) => <StyledStackContent ref={ref} {...props} />)\n\nStackContent.displayName = 'StackContent'\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 { CSS } from '~/stitches'\n\nimport { StackContent } from '../stack-content/StackContent'\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\ntype MarkdownContentProps = {\n content: string\n customComponents?: {\n [key: string]: React.FC<{\n node: any\n handleNode: HandleNode\n }>\n }\n css?: CSS\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: React.FC<MarkdownContentProps> = ({\n content,\n customComponents = {},\n css\n}) => {\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 <StackContent css={css}>{AST.children.map(handleNode)}</StackContent>\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 preventHover = (event: any) => {\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'\n\nimport { preventHover } from './preventHover'\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: 'white',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\nexport const NavigationMenuDropdownContent: React.FC = ({ children }) => (\n <StyledContent onPointerMove={preventHover} onPointerLeave={preventHover}>\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$tonal400',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$tonal400',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n '&:hover': { background: '$tonal50', color: '$tonal600' },\n '&:active': { background: '$tonal100', color: '$tonal600' },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: '600',\n color: '$tonal500',\n '&::after': {\n backgroundColor: '$tonal500',\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'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\nimport { preventHover } from './preventHover'\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: '$tonal100'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger = React.forwardRef<\n HTMLButtonElement,\n React.PropsWithChildren<{ active?: boolean }>\n>(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventHover}\n onPointerLeave={preventHover}\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: React.FC<NavigationMenuDropdownProps> = ({\n children,\n id,\n ...props\n}) => {\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 { CSS, styled } from '~/stitches'\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: '$primaryLight',\n color: '$primary',\n '*': { color: '$primary' },\n '&:hover': { background: '$tonal50' },\n '&:active': { background: '$tonal100' },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\ntype NavigationMenuLinkProps = {\n href: string\n active?: boolean\n disabled?: boolean\n variant?: 'link' | 'dropdownItem'\n css?: CSS\n}\n\nexport const NavigationMenuLink = React.forwardRef<\n HTMLAnchorElement,\n React.PropsWithChildren<NavigationMenuLinkProps>\n>(\n (\n { children, href, disabled, css, variant = 'link', ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled {...props}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\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.forwardRef<\n HTMLAnchorElement,\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n>((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$tonal500',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { CSS, 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'\n\ntype NavigationMenuSubComponents = {\n Link: typeof NavigationMenuLink\n Dropdown: typeof NavigationMenuDropdown\n DropdownContent: typeof NavigationMenuDropdownContent\n DropdownItem: typeof NavigationMenuDropdownItem\n DropdownItemTitle: typeof NavigationMenuDropdownItemTitle\n DropdownTrigger: typeof NavigationMenuDropdownTrigger\n}\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\ntype NavigationMenuProps = {\n css?: CSS\n}\n\nexport const NavigationMenu: React.FC<NavigationMenuProps> &\n NavigationMenuSubComponents = ({ children, css }) => {\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 }, [])\n\n React.useEffect(() => {\n let timer: NodeJS.Timer\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 onValueChange={setActiveItem} css={css}>\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n css={{\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\nNavigationMenu.Link = NavigationMenuLink\nNavigationMenu.Dropdown = NavigationMenuDropdown\nNavigationMenu.DropdownContent = NavigationMenuDropdownContent\nNavigationMenu.DropdownItem = NavigationMenuDropdownItem\nNavigationMenu.DropdownItemTitle = NavigationMenuDropdownItemTitle\nNavigationMenu.DropdownTrigger = NavigationMenuDropdownTrigger\n\nNavigationMenu.displayName = 'NavigationMenu'\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: '$primary'\n})\n\ntype NotificationBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n value: number | string\n}\n\nexport const NotificationBadge: React.FC<NotificationBadgeProps> = ({\n value,\n children\n}) => (\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 borderColor: '$tonal400 !important',\n zIndex: 1,\n '&:hover': {\n bg: '$tonal50',\n svg: {\n color: '$tonal400'\n }\n },\n svg: {\n color: '$tonal300'\n },\n '&:active': {\n bg: '$tonal100',\n svg: {\n color: '$tonal500'\n }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> & {\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 { icon, disabledTooltipContent, showTooltip, ...rest } = 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 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 type { CSS } from '~/stitches'\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 initialValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md'\n onChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (props: NumberInputProps, forwardedRef): JSX.Element => {\n const {\n name,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n initialValue = 0,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n onChange,\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n ...rest\n } = props\n\n const [value, setValue] = React.useState<number | string>(initialValue)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(\n forwardedRef,\n () => inputRef.current as HTMLInputElement\n )\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 = value >= max\n const isAtMin = value <= min\n\n const clamp = React.useCallback(\n (value: number) => Math.min(Math.max(value, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (next: string | number) => {\n setValue(next)\n onChange?.(Number(next))\n },\n [onChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = 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 let next: string | number\n\n if (value === '') {\n next = step\n } else {\n next = Number(value) + step\n }\n\n updateValue(clamp(next))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, value])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n let next: string | number\n\n if (value === '') {\n next = min\n } else {\n next = Number(value) - step\n }\n\n updateValue(clamp(next))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, value])\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 name,\n type: 'number',\n value,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\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': Number(value),\n role: 'spinbutton'\n }\n\n return (\n <Flex css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={size}\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={size}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </Flex>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport { useFieldError, ValidationOptions } 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 description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField: React.FC<NumberInputFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <NumberInput\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n {...remainingProps}\n onChange={trigger}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","export const TRUNCATED_THRESHOLD = 4\n\nexport enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n","export const getPaginationItemsToRender = (\n currentPage: number,\n pagesCount: number,\n truncatedThreshold: number,\n isMaxVisibleElementCount: boolean\n): number[] => {\n const listOfPages = Array.from(\n { length: pagesCount - 1 },\n (_, index) => index + 1\n )\n\n if (pagesCount <= truncatedThreshold) return listOfPages\n\n // If the current page is before the 3rd page\n // Render pagination items from 1 to 4 or 1 to 2\n if (currentPage < truncatedThreshold - 1) {\n return listOfPages.slice(0, isMaxVisibleElementCount ? 4 : 2)\n } else if (\n currentPage >=\n listOfPages.length - (isMaxVisibleElementCount ? 3 : 1)\n ) {\n // If the current page is within the last 3 pages or the last page\n // Render the last 4 or 2 pagination items\n return listOfPages.slice(isMaxVisibleElementCount ? -4 : -2)\n }\n // Otherwise render pagination items from the range of n-3 to n+1 or n-2 to n\n return listOfPages.slice(\n currentPage + (isMaxVisibleElementCount ? -3 : -2),\n currentPage + (isMaxVisibleElementCount ? 1 : 0)\n )\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number => {\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 => {\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} from '../pagination.helper'\nimport type { IPaginationContext, TPaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<IPaginationContext>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n visibleElementsCount: VisibleElementsAmount.LESS,\n pagesCount: 0,\n onItemHover: () => null,\n labels: {},\n isMaxVisibleElementCount: false,\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider: React.FC<TPaginationProviderProps> = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n const isMaxVisibleElementCount =\n visibleElementsCount === VisibleElementsAmount.MORE\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 goToPreviousPage = React.useCallback(() => {\n if (currentPage === 1) {\n return\n }\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n if (previousAvailablePage < 1) return\n goToPage(previousAvailablePage)\n }, [currentPage, disabledPages, goToPage])\n\n const goToNextPage = React.useCallback(() => {\n if (currentPage === pagesCount) {\n return\n }\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(nextPage, disabledPages)\n\n if (nextAvailablePage > pagesCount) return\n goToPage(nextAvailablePage)\n }, [currentPage, disabledPages, goToPage, pagesCount])\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n visibleElementsCount,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n labels,\n isMaxVisibleElementCount\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n visibleElementsCount,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n labels,\n isMaxVisibleElementCount\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 { IPaginationContext } from './types'\n\nexport const usePagination = (): IPaginationContext => {\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 { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\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 {\n goToNextPage,\n currentPage,\n pagesCount,\n labels,\n disabledPages,\n isMaxVisibleElementCount\n } = usePagination()\n\n const paginationItemsInview = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n // Check if we are on the last page or if the last page is disabled and the if the second to last page number is rendered\n const isDisabled =\n currentPage === pagesCount ||\n (disabledPages.includes(pagesCount) &&\n paginationItemsInview.includes(pagesCount - 1))\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 { focusVisibleStyleBlock } from '~/utilities'\n\nimport { styled } from '../../stitches'\nimport { Box } from '..'\nimport type { IPaginationItemProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst Dot = styled(Box, {\n position: 'absolute',\n bottom: '-$1',\n left: '0',\n transform: 'translateX(50%)',\n borderRadius: '$round',\n size: '4px',\n bg: '$accent9'\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: 'unset',\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: '$grey800',\n bg: '$base1',\n '&:not(:disabled)': {\n '&:hover': {\n color: '$accent10',\n bg: '$base2'\n },\n '&:active': {\n bg: '$base3',\n color: '$grey1000'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&:disabled': {\n opacity: '0.3',\n cursor: 'not-allowed'\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: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: '$accent10',\n [`& ${Dot}`]: {\n bg: '$accent10'\n }\n },\n '&:active': {\n color: '$accent11',\n [`& ${Dot}`]: {\n bg: '$accent11'\n }\n }\n }\n }\n }\n }\n})\n\nexport const PaginationItem: React.FC<IPaginationItemProps> = ({\n pageNumber,\n css\n}) => {\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 return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => goToPage(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {isIndicated ? (\n <Box css={{ position: 'relative' }}>\n {pageNumber}\n <Dot />\n </Box>\n ) : (\n pageNumber\n )}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Icon, Popover, Stack } from '..'\nimport { PaginationItem } from './PaginationItem'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = () => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n return (\n <Popover>\n <Popover.Trigger asChild>\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 </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Stack css={{ p: '$4', display: 'flex', flexWrap: 'wrap' }} gap={1}>\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationItem\n key={pageNumber}\n pageNumber={pageNumber}\n css={{ bg: '$white' }}\n />\n )\n })}\n </Stack>\n </Popover.Content>\n </Popover>\n )\n}\n","import * as React from 'react'\n\nimport { Stack } from '..'\nimport { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\nimport { PaginationItem } from './PaginationItem'\nimport { PaginationPopover } from './PaginationPopover'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPages = () => {\n const { currentPage, pagesCount, isMaxVisibleElementCount } = usePagination()\n\n const paginationItems = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n\n const isTruncated = pagesCount > TRUNCATED_THRESHOLD\n\n return (\n <Stack gap={1}>\n {paginationItems?.map((pageNumber) => {\n return <PaginationItem key={pageNumber} pageNumber={pageNumber} />\n })}\n {isTruncated && <PaginationPopover />}\n <PaginationItem pageNumber={pagesCount} />\n </Stack>\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 { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\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 {\n goToPreviousPage,\n currentPage,\n labels,\n disabledPages,\n pagesCount,\n isMaxVisibleElementCount\n } = usePagination()\n\n const paginationItemsInview = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n // Check if we are on the first page or if the first page is disabled and the page number is rendered\n const isDisabled =\n currentPage === 1 ||\n (disabledPages.includes(1) && paginationItemsInview.includes(1))\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 { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '..'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPages } from './PaginationPages'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport type { IPaginationProps } from './types'\n\nexport const Pagination: React.FC<IPaginationProps> = ({\n colorScheme,\n css,\n ...paginationProps\n}) => {\n // Return null if pages is 0 or undefined\n if (!paginationProps?.pagesCount) {\n return null\n }\n\n return (\n <ColorScheme base=\"grey1\" accent=\"blue1\" {...colorScheme} asChild>\n <Flex css={css}>\n <PaginationProvider {...paginationProps}>\n <PaginationPreviousButton />\n <PaginationPages />\n <PaginationNextButton />\n </PaginationProvider>\n </Flex>\n </ColorScheme>\n )\n}\n\nPagination.displayName = 'Pagination'\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'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = 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 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={{ bottom: 0, position: 'absolute', right: 0 }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={size}\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 } 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: React.FC<PasswordFieldProps> = ({\n css = {},\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n ...remainingProps\n}) => {\n const { register } = useFormContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' } as CSS}\n description={description}\n error={error}\n fieldId={name}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\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: '$tonal100',\n height: '$0',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n theme: {\n primary: { color: '$primary' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' }\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: React.FC<ProgressBarProps> = ({\n value,\n max = 100,\n theme = 'primary',\n ...remainingProps\n}) => (\n <StyledProgressBar value={value} max={max} theme={theme} {...remainingProps}>\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: React.FC<RadioFieldProps> = ({\n css,\n label,\n value,\n ...remainingProps\n}) => (\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\nexport const RadioButtonField: React.FC<RadioButtonFieldProps> & {\n Item: typeof RadioField\n} = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}) => {\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\nRadioButtonField.Item = RadioField\n\nRadioButtonField.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 $tonal200',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary',\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 $tonal500',\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: '$primary',\n borderColor: '$primary'\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: React.FC<RadioCardProps> = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}) => (\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 * as RadioGroup from '@radix-ui/react-radio-group'\nimport type { VariantProps } from '@stitches/react'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Stack } from '../stack/Stack'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Stack>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup: React.FC<RadioCardGroupProps> = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}) => (\n <RadioGroup.Root {...rest}>\n <Stack direction=\"row\" justify={justify} gap={gap} css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(child, { size, isFullWidth, align })\n }\n return child\n })}\n </Stack>\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 } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField: React.FC<SearchFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\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 { Stack } from '../stack'\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 ['& > *:not(:last-child)']: { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Stack>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Stack wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n fontWeight: 600,\n ...css\n }}\n size=\"md\"\n {...rest}\n />\n)\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Stack } from '../stack'\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: '$blue100',\n color: '$blue1000'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst StyledStack = styled(Stack, {\n flexGrow: 1,\n justifyContent: 'space-between !important'\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 <StyledStack gap={3}>{children}</StyledStack>\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'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField: React.FC<SelectFieldProps> = ({\n css = undefined,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n hideLabel,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n hideLabel={hideLabel}\n >\n <Select\n name={name}\n id={name}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import { Root } from '@radix-ui/react-accordion'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerAccordionRoot = styled(Root, {\n width: '100%'\n})\n\nSidedrawerAccordionRoot.displayName = 'SidedrawerAccordionRoot'\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\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 bg: 'white',\n overflow: 'hidden',\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 SidedrawerAccordionContent: React.FC<\n React.ComponentProps<typeof StyledContent>\n> = ({ children, ...remainingProps }) => (\n <StyledContent {...remainingProps}>\n {React.Children.map(children, (child) => {\n return (\n <Box\n css={{\n '> a': {\n px: '$6'\n },\n '> button': {\n px: '$6'\n }\n }}\n >\n {child}\n </Box>\n )\n })}\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerAccordionItem = styled(Item, {})\n","export const sidedrawerItemStyles = {\n alignItems: 'center',\n bg: 'white',\n border: 'unset',\n borderLeft: '4px solid transparent',\n color: '$tonal600',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: '400',\n fontSize: '$md',\n margin: 0,\n minHeight: '48px',\n outline: 'unset',\n outlineOffset: 'unset',\n py: '$3',\n px: '$4',\n width: '100%',\n textDecoration: 'none',\n '&:hover': { bg: '$tonal50' },\n '&:active': { bg: '$tonal100' },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary'\n },\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none',\n cursor: 'default'\n },\n variants: {\n active: {\n true: {\n bg: '$primaryLight',\n borderLeft: '4px solid $primary',\n color: '$primary',\n fontWeight: '600'\n }\n }\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Header, Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex/Flex'\nimport { Icon } from '../../icon/Icon'\nimport { sidedrawerItemStyles } from '../Sidedrawer.styles'\n\nconst StyledTrigger = styled(Trigger, {\n justifyContent: 'space-between',\n m: 0,\n p: 0,\n '&[data-state=open]': { fontWeight: '600' },\n ...sidedrawerItemStyles\n})\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\nexport const SidedrawerAccordionTrigger: React.FC<\n React.ComponentProps<typeof StyledTrigger>\n> = ({ children, ...remainingProps }) => (\n <Header>\n <StyledTrigger {...remainingProps}>\n <Flex\n css={{\n alignItems: 'center'\n }}\n >\n {children}\n </Flex>\n <StyledIcon is={ChevronDown} size=\"sm\" />\n </StyledTrigger>\n </Header>\n)\n","import React, { isValidElement } from 'react'\n\nimport { Box } from '../box'\nimport { SidedrawerAccordionRoot } from './SidedrawerAccordion/'\n\nexport const SidedrawerBody: React.FC = ({ children }) => {\n let hasAccordionItems = false\n\n React.Children.forEach(children, (child) => {\n if (isValidElement(child) && child.props?.value) {\n hasAccordionItems = true\n }\n })\n\n return (\n <Box\n css={{\n flexGrow: 1,\n width: '100%',\n overflowY: 'auto'\n }}\n >\n {hasAccordionItems ? (\n <SidedrawerAccordionRoot type=\"single\">\n {children}\n </SidedrawerAccordionRoot>\n ) : (\n children\n )}\n </Box>\n )\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 SidedrawerClose: React.FC<\n React.ComponentProps<typeof ActionIcon>\n> = ({\n appearance = 'simple',\n label = 'close',\n size = 'md',\n theme = 'neutral',\n\n ...remainingProps\n}) => (\n <DialogClose asChild>\n <ActionIcon\n theme={theme}\n appearance={appearance}\n size={size}\n label={label}\n {...remainingProps}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nexport const SidedrawerOverlay = styled(Overlay, {\n animationFillMode: 'forwards',\n bg: '$alpha600',\n cursor: 'pointer',\n height: '100vh',\n left: '0',\n position: 'fixed',\n top: '0',\n width: '100vw',\n zIndex: MAX_Z_INDEX - 1,\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 { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport { slideInLeft, slideOutLeft } from '~/utilities'\n\nimport { SidedrawerOverlay } from './SidedrawerOverlay'\n\nconst StyledContent = styled(Content, {\n bg: 'white',\n boxShadow: '$2',\n display: 'flex',\n flexDirection: 'column',\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100%',\n maxWidth: '304px',\n width: '100%',\n zIndex: MAX_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideInLeft} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOutLeft} 250ms ease-out`\n }\n }\n})\n\nexport const SidedrawerContent: React.FC<\n React.ComponentProps<typeof StyledContent>\n> = ({ children, ...remainingProps }) => (\n <Portal>\n <SidedrawerOverlay data-testid=\"sidedrawer_overlay\" />\n <StyledContent role=\"navigation\" {...remainingProps}>\n {children}\n </StyledContent>\n </Portal>\n)\n","import { styled } from '~/stitches'\n\nexport const SidedrawerFooter = styled('footer', {\n alignItems: 'center',\n borderTop: '1px solid $tonal100',\n bottom: 0,\n boxShadow: '$3',\n display: 'flex',\n height: '$6',\n justifyContent: 'center',\n p: '$3',\n width: '100%'\n})\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 if (delayMethod === 'throttle') return throttle\n if (delayMethod === 'debounce') return debounce\n }, [delayMethod])\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 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 { CSS, styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\ntype TopBarBrandLogoProps = {\n src: string\n alt?: string\n css?: CSS\n}\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: TopBarBrandLogoProps): JSX.Element => {\n return (\n <Image\n className=\"topbar-brand-logo\"\n src={src}\n alt={alt}\n css={{\n mr: '$3',\n mb: '5px',\n ...css\n }}\n />\n )\n}\n\nTopBarBrandLogo.toString = () => '.topbar-brand-logo'\n\nexport const TopBarBrandName = styled(Text, {\n color: '$tonal400'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$tonal400',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import 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 { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\ninterface TopBarSubComponents {\n Brand: typeof TopBarBrand\n BrandLogo: typeof TopBarBrandLogo\n BrandName: typeof TopBarBrandName\n ActionIcon: typeof TopBarActionIcon\n Divider: typeof TopBarDivider\n}\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$tonal100' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: 'white',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n width: '100vw',\n top: '0',\n zIndex: 1,\n borderBottom: '1px solid $tonal100',\n transition: 'box-shadow .2s ease-out',\n variants: {\n hasScrolled: {\n true: {\n boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1);'\n }\n },\n size: {\n md: {\n height: '$6',\n [`& ${TopBarBrandLogo}`]: {\n '&[src$=\".svg\"]': {\n height: 24,\n width: 'auto'\n }\n }\n },\n lg: {\n height: '$7',\n [`& ${TopBarBrandLogo}`]: {\n '&[src$=\".svg\"]': {\n height: 32,\n width: 'auto'\n }\n }\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\ninterface TopBarProps extends StyledRootProps {\n css?: CSS\n}\n\nexport const TopBar: React.FC<TopBarProps> & TopBarSubComponents = ({\n size = 'md',\n ...props\n}) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot hasScrolled={!!scrollPositionY} size={size}>\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nTopBar.Brand = TopBarBrand\nTopBar.BrandLogo = TopBarBrandLogo\nTopBar.BrandName = TopBarBrandName\nTopBar.ActionIcon = TopBarActionIcon\nTopBar.Divider = TopBarDivider\n\nTopBar.displayName = 'TopBar'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TopBar } from '../top-bar'\n\nconst StyledHeader = styled('header', {\n '> div': {\n width: '100%'\n }\n})\n\nexport const SidedrawerHeader: React.FC<\n React.ComponentProps<typeof StyledHeader>\n> = ({ children, ...remainingProps }) => (\n <StyledHeader {...remainingProps}>\n <TopBar\n css={{\n mx: '$3'\n }}\n >\n {children}\n </TopBar>\n </StyledHeader>\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { sidedrawerItemStyles } from './Sidedrawer.styles'\n\nconst StyledLink = styled('a', sidedrawerItemStyles)\nconst StyledButton = styled('button', sidedrawerItemStyles)\n\ntype SidedrawerItemProps = {\n active?: boolean\n disabled?: boolean\n href?: string\n onClick?: () => void\n}\n\nexport const SidedrawerItem: React.FC<SidedrawerItemProps> = ({\n active,\n children,\n disabled,\n href,\n onClick,\n ...remainingProps\n}) => {\n if (href) {\n return (\n <StyledLink\n active={active}\n href={href}\n onClick={onClick}\n {...remainingProps}\n >\n {children}\n </StyledLink>\n )\n }\n\n return (\n <StyledButton\n active={active}\n disabled={disabled}\n onClick={onClick}\n {...remainingProps}\n >\n {children}\n </StyledButton>\n )\n}\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerTrigger = styled(Trigger, {})\n","import * as Dialog from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport {\n SidedrawerAccordionContent,\n SidedrawerAccordionItem,\n SidedrawerAccordionTrigger\n} from './SidedrawerAccordion'\nimport { SidedrawerBody } from './SidedrawerBody'\nimport { SidedrawerClose } from './SidedrawerClose'\nimport { SidedrawerContent } from './SidedrawerContent'\nimport { SidedrawerFooter } from './SidedrawerFooter'\nimport { SidedrawerHeader } from './SidedrawerHeader'\nimport { SidedrawerItem } from './SidedrawerItem'\nimport { SidedrawerTrigger } from './SidedrawerTrigger'\n\ntype SidedrawerSubComponents = {\n Accordion: typeof SidedrawerAccordionItem\n AccordionContent: typeof SidedrawerAccordionContent\n AccordionTrigger: typeof SidedrawerAccordionTrigger\n Body: typeof SidedrawerBody\n Close: typeof SidedrawerClose\n Content: typeof SidedrawerContent\n Footer: typeof SidedrawerFooter\n Header: typeof SidedrawerHeader\n Item: typeof SidedrawerItem\n Trigger: typeof SidedrawerTrigger\n}\n\nexport const Sidedrawer: React.FC<React.ComponentProps<typeof Dialog.Root>> &\n SidedrawerSubComponents = ({ children, ...remainingProps }) => (\n <Dialog.Root {...remainingProps}>{children}</Dialog.Root>\n)\n\nSidedrawer.Accordion = SidedrawerAccordionItem\nSidedrawer.AccordionContent = SidedrawerAccordionContent\nSidedrawer.AccordionTrigger = SidedrawerAccordionTrigger\nSidedrawer.Body = SidedrawerBody\nSidedrawer.Close = SidedrawerClose\nSidedrawer.Content = SidedrawerContent\nSidedrawer.Footer = SidedrawerFooter\nSidedrawer.Header = SidedrawerHeader\nSidedrawer.Item = SidedrawerItem\nSidedrawer.Trigger = SidedrawerTrigger\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: React.FC<SliderStepsProps> = ({\n min,\n max,\n steps = []\n}) => {\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: '$tonal300'\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: React.FC<SliderValueProps> = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}) => {\n return (\n <Text css={{ mt: '$4', color: '$tonal300', 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 } 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 '&[data-disabled]': { cursor: 'not-allowed', bg: '$tonal100' },\n variants: {\n theme: {\n light: {\n [`${StyledTrack}`]: { bg: '#fff' }\n },\n tonal: {\n [`${StyledTrack}`]: { bg: '$tonal200' }\n }\n }\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[data-disabled]': { bg: '$tonal200', cursor: 'not-allowed' }\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primaryMid',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primaryDark'\n },\n '&:focus': {\n outline: '2px solid $primaryMid',\n outlineOffset: '2px'\n },\n '&[data-disabled]': { bg: '$tonal200', cursor: 'not-allowed' }\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: React.FC<SliderFieldProps> = ({\n css,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}) => {\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}>\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 * 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: React.FC<StepperProviderProps> = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}) => {\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: React.FC<\n IStepperNavigateProps & Omit<React.ComponentProps<typeof Button>, 'children'>\n> = ({ label, children, ...rest }) => {\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: React.FC<\n IStepperNavigateProps & Omit<React.ComponentProps<typeof Button>, 'children'>\n> = ({ label, children, onClick, ...rest }) => {\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: '$tonal100',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$tonal100', color: '$tonal300' },\n active: {\n bg: 'white',\n color: '$primaryMid',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $tonal200',\n color: '$tonal600'\n },\n completed: { bg: '$primary', color: 'white' },\n reviewed: { bg: '$primaryMid', 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: '$tonal100' } },\n active: { '&:not(:last-child)::after': { bg: '$primary' } },\n success: { '&:not(:last-child)::after': { bg: '$success' } },\n viewed: { '&:not(:last-child)::after': { bg: '$tonal200' } }\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: '$primaryMid', color: 'white !important' },\n '& :last-child': { color: '$primaryMid' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$tonal400', color: '$tonal600' },\n '& :last-child': { color: '$tonal600' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$tonal400', color: '$tonal600' },\n '& :last-child': { color: '$tonal600' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary !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 $primary !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: '$tonal300', fontWeight: 400 },\n active: {\n color: '$primaryMid'\n },\n viewed: { color: '$tonal600' },\n completed: { color: '$primary' },\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: React.FC<IStepperStepsProps> = ({ css }) => {\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\nexport const Stepper: React.FC<IStepperProps> & {\n StepBack: typeof StepperStepBack\n StepForward: typeof StepperStepForward\n Steps: typeof StepperSteps\n} = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}) => {\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\nStepper.StepBack = StepperStepBack\nStepper.StepForward = StepperStepForward\nStepper.Steps = StepperSteps\n\nStepper.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$tonal200',\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: '$tonal300'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary'\n },\n '&[data-state=\"checked\"]:hover': {\n backgroundColor: '$primaryMid'\n },\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: React.FC<SwitchProps> = ({ size = 'md', ...rest }) => (\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 { 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 '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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\ninterface TabsTriggerProps\n extends React.ComponentProps<typeof StyledTabsTrigger> {\n value: string\n}\n\nexport const TabsTrigger: React.FC<TabsTriggerProps> = ({\n children,\n ...rest\n}) => (\n <StyledTabsTrigger {...rest}>\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 if (delayMethod === 'throttle') return throttle\n if (delayMethod === 'debounce') return debounce\n }, [delayMethod])\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 * 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 = (callback: () => void) => {\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 { 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: React.FC<\n React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n }\n> = ({ children, colorScheme = {}, ...rest }) => {\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=\"blue1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\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: React.FC<TabsProps> & {\n TriggerList: typeof TabsTriggerList\n Trigger: typeof TabsTrigger\n Content: typeof TabsContent\n} = ({ children, ...remainingProps }) => {\n return <StyledRoot {...remainingProps}>{children}</StyledRoot>\n}\n\nTabs.TriggerList = TabsTriggerList\nTabs.Trigger = TabsTrigger\nTabs.Content = TabsContent\n\nTabs.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 border: '1px solid $tonal400',\n borderRadius: '$0',\n boxSizing: 'border-box',\n color: '$tonal600',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n transition: 'all 75ms ease-out',\n width: '100%',\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$tonal300',\n opacity: 1\n },\n variants: {\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.FC<TextareaProps> = React.forwardRef(\n (props, ref) => <StyledTextarea {...props} ref={ref} />\n)\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 } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField: React.FC<TextareaFieldProps> = ({\n css = undefined,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = useFormContext()\n const { error } = useFieldError(name)\n\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import { Close, Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast as ToastInterface } from 'react-hot-toast/dist/core/types'\n\nimport { keyframes, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { Loader } from '../loader/Loader'\nimport { Text } from '../text/Text'\n\nexport const TOAST_WIDTH = 400\n\nconst slideIn = keyframes({\n '0%': { transform: `translate3d(0,-100%,0)`, opacity: 0 },\n '100%': { transform: `translate3d(0,0,0)`, opacity: 1 }\n})\nconst slideOut = keyframes({\n '0%': { transform: `translate3d(0,0,0)`, opacity: 1 },\n '100%': { transform: `translate3d(0,-100%,0)`, opacity: 0 }\n})\n\nconst ToastContainer = styled('div', {\n position: 'absolute',\n width: '100%',\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 StyledToast = styled('div', {\n pointerEvents: 'auto',\n alignItems: 'center',\n borderRadius: '$0',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n display: 'flex',\n minHeight: '$5',\n pl: '$4',\n position: 'relative',\n pr: '$6',\n py: '$4',\n transition: 'background-color 50ms ease-out',\n width: '100%',\n '@sm': {\n width: TOAST_WIDTH\n },\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n status: {\n blank: { bg: '$primary' },\n error: { bg: '$danger' },\n loading: { bg: '$primary' },\n success: { bg: '$success' }\n }\n }\n})\n\ntype ToastProps = React.ComponentProps<typeof StyledToast> &\n ToastInterface & {\n calculateOffset: (\n id: string,\n options?: {\n reverseOrder?: boolean\n margin?: number\n }\n ) => number\n updateHeight: (toastId: string, height: number) => void\n }\n\nexport const Toast: React.FC<ToastProps> = React.memo(\n ({\n ariaLive,\n height,\n id,\n message,\n role,\n type = 'blank',\n visible,\n calculateOffset,\n updateHeight\n }) => {\n const offset = calculateOffset(id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el) => {\n if (el && height === undefined) {\n updateHeight(id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastContainer visible={visible}>\n <StyledToast\n ref={ref}\n status={type}\n role={role}\n aria-live={ariaLive}\n style={{ transform: `translateY(${offset}px)` }}\n >\n {type === 'error' && (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} is={Error} />\n )}\n <Text>{message}</Text>\n {type === 'loading' ? (\n <Loader css={{ flex: '0 0 auto', ml: 'auto' }} />\n ) : (\n <ActionIcon\n css={{\n position: 'absolute',\n top: '$2',\n right: '$2',\n color: 'white',\n '&:hover,&:focus': { color: 'white', opacity: 0.5 }\n }}\n label=\"Close alert\"\n onClick={() => toast.dismiss(id)}\n >\n <Icon is={Close} />\n </ActionIcon>\n )}\n </StyledToast>\n </ToastContainer>\n )\n }\n)\n","import * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { styled } from '~/stitches'\n\nimport { Toast, TOAST_WIDTH } from './Toast'\n\nexport { default as toast } from 'react-hot-toast'\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nconst Container = styled('div', {\n left: '$2',\n position: 'fixed',\n top: '$2',\n right: '$2',\n zIndex: MAX_Z_INDEX,\n '@sm': {\n top: '$3',\n right: 'auto',\n left: `calc(50% - ${TOAST_WIDTH / 2}px)`\n }\n})\n\nexport const ToastProvider: React.FC = ({ children }) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <Container onMouseEnter={startPause} onMouseLeave={endPause}>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n calculateOffset={calculateOffset}\n updateHeight={updateHeight}\n {...toast}\n />\n ))}\n </Container>\n {children}\n </>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\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 bg: 'white',\n color: '$tonal400',\n border: '1px solid $tonal200',\n cursor: 'pointer',\n '&::before': {\n background: '$tonal200'\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: '$primaryMid'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$tonal200 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&[data-state=\"on\"]': {\n color: '$primary',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon, StyledIcon } 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) => ({\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 [`& ${StyledIcon}`]: {\n flexShrink: 0\n },\n variants: {\n size: {\n sm: getSizeVariant('sm'),\n md: getSizeVariant('md'),\n lg: getSizeVariant('lg')\n },\n isIconOnly: {\n true: {}\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})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(({ size = 'md', 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 ref={ref} size={size} isIconOnly={isIconOnly} {...rest}>\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","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Stack } from '~/components/stack'\nimport { styled } from '~/stitches'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n gap?: number\n isFullWidth?: boolean\n wrap?: 'wrap' | 'no-wrap' | 'wrap-reverse'\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 },\n hasGap: {\n true: {\n [`& ${StyledItem}`]: { borderRadius: '$0' }\n },\n false: {\n borderRadius: '$0',\n bg: 'white',\n [`& ${StyledItem}`]: {\n bg: 'transparent',\n borderRadius: 0,\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 },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\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: '$0',\n borderBottomLeftRadius: '$0'\n },\n '&:last-child': {\n borderTopRightRadius: '$0',\n borderBottomRightRadius: '$0'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\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})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRoot> & RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap = false,\n isFullWidth,\n children,\n wrap = 'no-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 {...rest}\n >\n <Stack\n direction={direction}\n gap={hasGap && gap}\n align={false}\n wrap={wrap}\n >\n {children}\n </Stack>\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 * 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.ComponentPropsWithoutRef<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video = React.forwardRef<typeof StyledVideo, VideoProps>(\n ({ 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)\n\nVideo.displayName = 'Video'\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const BannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$0',\n overflow: 'hidden',\n color: '$foreground',\n variants: {\n emphasis: {\n highContrast: {\n background: '$base11',\n color: '$foreground7plus'\n },\n midContrast: {\n background: '$base3'\n },\n lowContrast: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<typeof BannerContainer>\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 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: React.FC<TBannerProviderProps> = ({\n emphasis,\n size,\n children\n}) => {\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","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\n\nimport { Dismissible } from '../dismissible'\nimport { BannerContainer, TBannerContainerProps } from './BannerContainer'\nimport { BannerProvider } from './BannerContext'\n\ntype TDismissibleProps = React.ComponentProps<typeof Dismissible>\n\ninterface IBannerProps extends TBannerContainerProps {\n colorScheme: TcolorScheme\n value?: TDismissibleProps['value']\n onDismiss?: TDismissibleProps['onDismiss']\n}\n\nexport const Banner: React.FC<IBannerProps> & {\n Dismiss: typeof Dismissible.Trigger\n} = ({\n children,\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n colorScheme,\n emphasis = 'lowContrast',\n value = 'dismiss-banner-regular',\n onDismiss\n}) => {\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild value={value} onDismiss={onDismiss}>\n <BannerContainer role=\"banner\" emphasis={emphasis}>\n <BannerProvider emphasis={emphasis} size={size}>\n {children}\n </BannerProvider>\n </BannerContainer>\n </Dismissible>\n </ColorScheme>\n )\n}\n\nBanner.Dismiss = Dismissible.Trigger\nBanner.displayName = 'Banner'\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: React.FC<\n React.ComponentProps<typeof Button>\n> = (props) => {\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 === 'highContrast' ? '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 { Stack } from '../../stack'\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\nexport const BannerRegularActions: React.FC<\n React.ComponentProps<typeof Stack>\n> = ({ children, ...props }) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[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 <Stack gap={gap} {...props}>\n {React.Children.map(children, (child, index) => {\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 </Stack>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\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: React.FC<\n React.ComponentProps<typeof Container>\n> = (props) => {\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 position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\nexport const BannerRegularDismiss: React.FC<\n React.ComponentProps<typeof ActionIcon>\n> = ({ label = 'dismiss', ...rest }) => {\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 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: React.FC<\n React.ComponentProps<typeof Heading>\n> = (props) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"sm\"\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: React.FC<\n React.ComponentProps<typeof Image>\n> = (props) => {\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: '$grey900',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n emphasis: {\n highContrast: {\n color: '$grey100'\n },\n midContrast: {},\n lowContrast: {}\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: React.FC<React.ComponentProps<typeof Text>> = (\n props\n) => {\n const { emphasis, size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n emphasis={emphasis}\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 { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nexport const BannerRegular: React.FC<React.ComponentProps<typeof Banner>> & {\n Content: typeof BannerRegularContent\n Heading: typeof BannerRegularHeading\n Text: typeof BannerRegularText\n Actions: typeof BannerRegularActions\n Image: typeof BannerRegularImage\n Button: typeof BannerRegularButton\n Dismiss: typeof BannerRegularDismiss\n} = (props) => {\n return <Banner {...props} />\n}\n\nBannerRegular.Content = BannerRegularContent\nBannerRegular.Heading = BannerRegularHeading\nBannerRegular.Text = BannerRegularText\nBannerRegular.Actions = BannerRegularActions\nBannerRegular.Image = BannerRegularImage\nBannerRegular.Button = BannerRegularButton\nBannerRegular.Dismiss = BannerRegularDismiss\n\nBannerRegular.displayName = 'BannerRegular'\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 }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n asWorkaround?: React.ElementType // (!?) `asWorkaround` rather than `as` because, it seems, when we extend this via `styled()` stitches overrides this component from the first argument for the value in `as`\n colorScheme?: TcolorScheme\n}\n\nexport const Tile = React.forwardRef<HTMLButtonElement, TTileProps>(\n ({ children, asWorkaround, colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"blue2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} as={asWorkaround} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n)\n\nTile.displayName = 'Tile'\n","import { Stack } from '~/components/stack'\n\nexport const TileGroup = Stack\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(Tile, {\n '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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 },\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> & { type?: string } & NavigatorActions\n\nexport const TileInteractive = React.forwardRef<\n HTMLButtonElement,\n TTileInteractiveProps\n>(({ onClick, href, type = 'button', ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n asWorkaround: 'a' as React.ElementType,\n href,\n onClick: undefined\n }\n : { asWorkaround: 'button' as React.ElementType, type, onClick }\n\n return <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\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(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: React.FC<TTileToggleGroupItem> = ({\n children,\n ...rest\n}) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem asWorkaround=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\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.forwardRef<\n HTMLDivElement,\n TTileToggleGroupRootProps\n>((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n align={false}\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"],"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","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInLeft","slideOutLeft","open","close","StyledContent","Content","AccordionContent","remainingProps","StyledItem","Item","AccordionItem","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","size","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","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","Tooltip","delayDuration","Portal","Provider","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","darken","ConditionallyWrapWithTooltip","hasTooltip","label","tooltipSide","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","slideIn","slideOut","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","props","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","Flex","FadeInOut","Dot","Loader","message","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","WithLoader","isLoading","getIconSize","getChildren","Button","onClick","StyledHeading","Heading","StyledStack","Stack","gap","direction","wrap","justify","align","textVariants","getTextVariant","noCapsize","StyledText","Text","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","s","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","StyledBadge","Badge","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","Carousel","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","Minus","Ok","INLINE_MESSAGE_THEMES","INLINE_MESSAGE_ICONS","OkCircle","Danger","Info","Error","InlineMessageContainer","InlineMessageIcon","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","as","required","StyledLi","StyledList","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","_a","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","_b","Link","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","StyledDivider","Divider","orientation","MarkdownThematicBreak","StyledLink","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","StorageEnum","StyledForm","PersistFormWrapper","persist","watch","setValue","options","params","exclude","allValues","include","useFormPersist","FormContent","formMethods","handleSubmit","onSubmit","onError","FormProvider","Form","defaultValues","validationMode","render","useForm","formContent","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","defaultChecked","checked","onCheckedChange","control","onChange","innerChecked","innerName","useController","newChecked","overflowElipsis","StyledChipContent","StyledChipIcon","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","index","ChipRootProvider","ChipRoot","asWorkaround","Chip","ChipGroup","DismissibleRootContext","DismissibleRootProvider","isDismissed","setIsDismissed","DismissibleRootInternal","onDismiss","DismissibleRoot","DefaultTrigger","DismissibleTrigger","Dismissible","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","Close","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ChipToggleGroupRoot","ChipToggleGroup","ComboboxInput","BaseComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","StyledCombobox","BaseCombobox","Combobox","ComboboxOptionText","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","data","setData","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","row","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledRow","TableRow","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TableHeaderCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","accWidth","tableHeaderCells","newColumnsCss","column","elementNumber","cssObject","TableStickyColumnsContainer","restProps","hasScroll","setHasScroll","scrollContainerRef","event","newHasScroll","StyledTable","Table","corners","tableComponent","DataTableBody","getRowModel","DataTable","DataTableDataCell","cell","flexRender","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","EmptyStateTitle","EmptyStateContainer","EmptyState","DataTableEmptyState","DataTableError","OptionallyVisuallyHiddenContainer","hidden","StyledInput","Input","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","INPUT_ICON","$","StyledSearchInput","SearchInput","defaultValue","onValueChange","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","newValue","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","handleChange","debounce","DataTableHead","sortable","getHeaderGroups","headerGroup","header","sortIcons","SortUp","SortDown","SortIcon","DataTableHeaderCell","sortDirection","isSortableTable","isDataColumn","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","totalRows","copyMerged","getColumnDisplayName","sortedColumn","col","getSortingString","DataTableRow","DataTableTable","isPending","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","StyledSlot","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","StyledSelect","Select","placeholder","DirectionButton","isNext","GotoPageSelect","gotoPage","pageCount","z","x","StyledNav","Pagination","getPageCount","previousPage","nextPage","setPageIndex","recordsCountFrom","recordsCountTo","isPaginationDisabled","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","labels","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","Popover","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","useDate","initialDate","dateFormat","setDate","useState","dateString","setDateString","inputDate","isDateString","parsedInputDate","DateInput","revalidate","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","register","trigger","DialogBackground","DialogClose","modalOverlayId","StyledDialogOverlay","StyledDialogContent","DialogContent","closeDialogText","element","StyledDialog","Dialog","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledStackContent","StackContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventHover","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","variant","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenu","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","fadeDuration","timer","itemValue","listCenter","triggerOffsetRight","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","NumberInput","min","max","step","initialValue","isDisabled","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","next","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","TRUNCATED_THRESHOLD","VisibleElementsAmount","getPaginationItemsToRender","currentPage","pagesCount","truncatedThreshold","isMaxVisibleElementCount","listOfPages","findNextAvailablePage","startPage","disabledPages","findPreviousAvailablePage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","visibleElementsCount","indicatedPages","onItemHover","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","goToPreviousPage","previousAvailablePage","goToNextPage","nextAvailablePage","StyledActionIcon","PaginationNextButton","paginationItemsInview","PaginationItem","isIndicated","isSelected","PaginationPopover","paginationItems","Ellypsis","PaginationPages","isTruncated","PaginationPreviousButton","paginationProps","PasswordInput","hidePasswordText","showPasswordText","isPasswordVisible","setIsPasswordVisible","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonField","FieldDescription","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","hasDismiss","setHasDismiss","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","SelectField","SidedrawerAccordionRoot","SidedrawerAccordionContent","SidedrawerAccordionItem","sidedrawerItemStyles","SidedrawerAccordionTrigger","Header","SidedrawerBody","hasAccordionItems","isValidElement","SidedrawerClose","SidedrawerOverlay","SidedrawerContent","SidedrawerFooter","useWindowScrollPosition","delay","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","throttle","handleScroll","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","Container","TopBar","scrollPositionY","StyledHeader","SidedrawerHeader","SidedrawerItem","SidedrawerTrigger","Sidedrawer","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","isControlled","prev","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","Stepper","count","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","createResizeObserver","callback","useResizeObserver","elements","onResize","observer","useSize","setSize","handleResize","useCallback","StyledContainer","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","TOAST_WIDTH","ToastContainer","StyledToast","Toast","ariaLive","height","role","visible","calculateOffset","updateHeight","toast","ToastProvider","toasts","handlers","useToaster","startPause","endPause","ToggleGroupItem","minHeight","px","spacingBetweenElements","getSizeVariant","ToggleGroupButton","isIconOnly","orientationToDirection","ToggleGroupRoot","hasGap","StyledVideo","ReactPlayer","Video","ratio","BannerContainer","BannerContext","useBannerContext","BannerProvider","emphasis","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","BannerRegularActions","propsToInject","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegular","StyledTile","Tile","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","TileToggleGroupRoot","TileToggleGroup"],"mappings":"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"}
|
|
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/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/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/stack/Stack.tsx","../src/components/text/Text.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/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../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/components/badge/Badge.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/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/Form.types.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/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../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/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/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/DataTableDataCell.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/optionally-visually-hidden-container/OptionallyVisuallyHiddenContainer.tsx","../src/components/input/Input.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.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/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/select/Select.tsx","../src/components/data-table/pagination/PaginationButtons.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/use-date.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/components/dialog/DialogContent.tsx","../src/components/dialog/Dialog.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/stack-content/StackContent.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/components/navigation/preventHover.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/NavigationMenu.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/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/PaginationItem.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPages.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/Pagination.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.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-field/SelectField.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionRoot.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionContent.tsx","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionItem.tsx","../src/components/sidedrawer/Sidedrawer.styles.ts","../src/components/sidedrawer/SidedrawerAccordion/SidedrawerAccordionTrigger.tsx","../src/components/sidedrawer/SidedrawerBody.tsx","../src/components/sidedrawer/SidedrawerClose.tsx","../src/components/sidedrawer/SidedrawerOverlay.tsx","../src/components/sidedrawer/SidedrawerContent.tsx","../src/components/sidedrawer/SidedrawerFooter.tsx","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/sidedrawer/SidedrawerHeader.tsx","../src/components/sidedrawer/SidedrawerItem.tsx","../src/components/sidedrawer/SidedrawerTrigger.tsx","../src/components/sidedrawer/Sidedrawer.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.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/useResizeObserver.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/toast/Toast.tsx","../src/components/toast/ToastProvider.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/components/video/Video.tsx","../src/components/banner/BannerContainer.tsx","../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/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/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"],"sourcesContent":["import type { Theme } from '@atom-learning/theme'\nimport * as atomTheme from '@atom-learning/theme'\nimport { themeMap } from '@atom-learning/theme/theme-map'\nimport type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@stitches/react'\nimport { createStitches, defaultThemeMap } from '@stitches/react'\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'\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}\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}: 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$primary 0px 0px 0px 4px'\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 slideInLeft = keyframes({\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(0)' }\n})\n\nexport const slideOutLeft = keyframes({\n '0%': { transform: 'translateX(0)' },\n '100%': { transform: 'translateX(-100%)' }\n})\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\ntype AccordionContentProps = React.ComponentProps<typeof StyledContent>\n\nexport const AccordionContent: React.FC<AccordionContentProps> = ({\n children,\n css,\n ...remainingProps\n}) => (\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\nconst StyledItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n\ntype AccordionItemProps = React.ComponentProps<typeof StyledItem>\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n children,\n value,\n ...remainingProps\n}) => (\n <StyledItem value={value} {...remainingProps}>\n {children}\n </StyledItem>\n)\n","import { 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('interactive-loContrast', {\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n})\n\ncolorSchemes['interactive-hiContrast'] = createTheme('interactive-hiContrast', {\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n})\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme(themeName, {\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n })\n }\n )\n}\n\nexport const accents = {\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme(themeName, {\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.forwardRef<HTMLDivElement, TColorSchemeProps>(\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 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.FC<IconProps> = React.forwardRef(\n ({ 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)\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 '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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})\n\ntype AccordionTriggerProps = React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}\n\nexport const AccordionTrigger: React.FC<AccordionTriggerProps> = ({\n children,\n colorScheme = {},\n ...remainingProps\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger {...remainingProps}>\n {children}\n <RotatingIcon is={ChevronDown} />\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: '$tonal500',\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: '$tonal500',\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: React.FC<TooltipContentProps> = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}) => (\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\nexport const Tooltip: React.FC<TooltipProps> & {\n Content: typeof TooltipContent\n Portal: typeof Portal\n Trigger: typeof Trigger\n Provider: typeof Provider\n} = ({ children, delayDuration = 350, ...remainingProps }) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nTooltip.Content = TooltipContent\nTooltip.Trigger = styled(Trigger, {})\nTooltip.Portal = Portal\nTooltip.Provider = Provider\n\nTooltip.displayName = 'Tooltip'\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@stitches/react'\nimport { darken } from 'color2k'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\n\nimport { Icon } from '../icon/Icon'\nimport { Tooltip } from '../tooltip/Tooltip'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (base: string, interact: string, active: string) => ({\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n color: interact\n },\n '&:not(:disabled):active': {\n color: active\n },\n '&[disabled]': {\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst getSolidVariant = (base: string, interact: string, active: string) => ({\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': {\n bg: active\n },\n '&[disabled]': {\n bg: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst getOutlineVariant = (base: string, interact: string, active: string) => ({\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n color: interact\n },\n '&:not(:disabled):active': {\n color: active\n },\n '&[disabled]': {\n borderColor: '$tonal400',\n color: '$tonal400',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$0',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\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 compoundVariants: [\n // Appearance Simple\n {\n theme: 'neutral',\n appearance: 'simple',\n css: getSimpleVariant('$tonal300', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primary',\n appearance: 'simple',\n css: getSimpleVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'simple',\n css: getSimpleVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'simple',\n css: getSimpleVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'simple',\n css: getSimpleVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'simple',\n css: getSimpleVariant('$danger', '$dangerMid', '$dangerDark')\n },\n\n // Appearance Solid\n {\n theme: 'primary',\n appearance: 'solid',\n css: getSolidVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'solid',\n css: getSolidVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'solid',\n css: getSolidVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'solid',\n css: getSolidVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'solid',\n css: getSolidVariant('$danger', '$dangerMid', '$dangerDark')\n },\n\n // Appearance Outline\n {\n theme: 'primary',\n appearance: 'outline',\n css: getOutlineVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'primaryDark',\n appearance: 'outline',\n css: getOutlineVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'outline',\n css: getOutlineVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'outline',\n css: getOutlineVariant('$warning', '$warningMid', '$warningDark')\n },\n {\n theme: 'danger',\n appearance: 'outline',\n css: getOutlineVariant('$danger', '$dangerMid', '$dangerDark')\n }\n ]\n})\n\ntype ConditionallyWrapWithTooltipProps = {\n hasTooltip: boolean\n label: string\n tooltipSide?: 'bottom' | 'left' | 'right' | 'top'\n children: React.ReactNode\n}\n\nconst ConditionallyWrapWithTooltip: React.FC<\n ConditionallyWrapWithTooltipProps\n> = ({ hasTooltip, label, tooltipSide, children }) => {\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 // Ignore fragment error as this is the one place we will allow it\n // eslint-disable-next-line\n return <>{children}</>\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 hasTooltip?: boolean\n tooltipSide?: 'bottom' | 'left' | 'right' | 'top'\n } & NavigatorActions\n>\n\nexport const ActionIcon = React.forwardRef<HTMLButtonElement, ActionIconProps>(\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 <ConditionallyWrapWithTooltip\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\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(child, {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n })\n })}\n </StyledButton>\n </ConditionallyWrapWithTooltip>\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\ntype AlertDialogContentProps = React.ComponentProps<\n typeof StyledAlertDialogContent\n>\n\nexport const AlertDialogContent: React.FC<AlertDialogContentProps> = ({\n size = 'sm',\n ...remainingProps\n}) => (\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\ntype AlertDialogProps = React.ComponentProps<typeof StyledAlertDialog>\n\nexport const AlertDialog: React.FC<AlertDialogProps> & {\n Content: typeof AlertDialogContent\n Trigger: typeof Trigger\n Description: typeof Description\n Title: typeof Title\n Action: typeof Action\n Cancel: typeof Cancel\n} = (props) => <StyledAlertDialog {...props} />\n\nAlertDialog.Description = Description\nAlertDialog.Title = Title\nAlertDialog.Action = Action\nAlertDialog.Cancel = Cancel\nAlertDialog.Content = AlertDialogContent\nAlertDialog.Trigger = Trigger\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 { styled } from '~/stitches'\n\nexport const Flex = styled('div', { display: 'flex' })\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: React.FC<LoaderProps> = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}) => (\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 '@stitches/react'\nimport { darken, opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport { Loader } from '~/components/loader'\nimport { styled, theme } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\n\nconst getButtonOutlineVariant = (\n base: string,\n interact: string,\n active: string\n) => ({\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': {\n borderColor: '$tonal400',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n textDecoration: 'none',\n color: interact\n },\n '&:not([disabled]):active': {\n color: active\n }\n})\n\nconst getButtonSolidVariant = (\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n bg: base,\n color: text,\n '&[disabled]': {\n bg: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&:not([disabled]):hover, &:not([disabled]):focus': {\n bg: interact,\n color: text\n },\n '&:not([disabled]):active': {\n bg: active\n }\n})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$0',\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 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 },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5'\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5'\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n false: {\n width: 'max-content'\n },\n true: {\n width: '100%'\n }\n }\n },\n\n compoundVariants: [\n {\n theme: 'primary',\n appearance: 'solid',\n css: getButtonSolidVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'secondary',\n appearance: 'solid',\n css: getButtonSolidVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n },\n {\n theme: 'success',\n appearance: 'solid',\n css: getButtonSolidVariant('$success', '$successMid', '$successDark')\n },\n {\n theme: 'warning',\n appearance: 'solid',\n css: getButtonSolidVariant(\n '$warning',\n '$warningMid',\n '$warningDark',\n '$tonal500'\n )\n },\n {\n theme: 'danger',\n appearance: 'solid',\n css: getButtonSolidVariant('$danger', '$dangerMid', '$dangerDark')\n },\n {\n theme: 'neutral',\n appearance: 'solid',\n css: getButtonSolidVariant(\n 'white',\n opacify('white', -0.1),\n opacify('white', -0.25),\n '$primary'\n )\n },\n {\n theme: 'primary',\n appearance: 'outline',\n css: getButtonOutlineVariant('$primary', '$primaryMid', '$primaryDark')\n },\n {\n theme: 'neutral',\n appearance: 'outline',\n css: getButtonOutlineVariant(\n 'white',\n opacify('white', -0.2),\n opacify('white', -0.35)\n )\n },\n {\n theme: 'secondary',\n appearance: 'outline',\n css: getButtonOutlineVariant(\n '$primaryDark',\n darken(theme.colors.primaryDark.value, 0.1),\n darken(theme.colors.primaryDark.value, 0.15)\n )\n }\n ]\n})\n\nconst WithLoader = ({ isLoading, children }) => (\n <>\n <Loader\n css={{\n opacity: isLoading ? 1 : 0,\n position: 'absolute',\n transition: 'opacity 150ms'\n }}\n />\n <Box\n as=\"span\"\n css={isLoading ? { opacity: 0, transition: 'opacity 150ms' } : {}}\n >\n {children}\n </Box>\n </>\n)\n\nconst getIconSize = (size) => {\n switch (size) {\n case 'lg':\n return 22\n case 'md':\n return 20\n case 'sm':\n default:\n return 16\n }\n}\n\nconst getChildren = (children, size) =>\n React.Children.map(children, (child, i) => {\n if (child?.type === Icon) {\n return React.cloneElement(child, {\n css: {\n [i === 0 ? 'mr' : 'ml']: size === 'sm' ? '$2' : '$3',\n size: getIconSize(size),\n ...(child.props.css ? child.props.css : {})\n }\n })\n }\n return child\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 isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n isLoading,\n onClick,\n href,\n appearance = 'solid',\n size = 'md',\n theme = 'primary',\n type = 'button',\n ...rest\n },\n ref\n ) => {\n const linkSpecificProps = href\n ? {\n as: 'a',\n href,\n onClick: undefined\n }\n : {}\n\n const buttonSpecificProps = href ? {} : { type }\n\n // Note: button is not disabled when loading for accessibility purposes.\n // Instead the click action is not fired and the button looks faded\n return (\n <StyledButton\n isLoading={isLoading || false}\n onClick={!isLoading ? onClick : undefined}\n appearance={appearance}\n size={size}\n theme={theme}\n {...rest}\n {...linkSpecificProps}\n {...buttonSpecificProps}\n ref={ref}\n >\n {typeof isLoading === 'boolean' ? (\n <WithLoader isLoading={isLoading}>\n {getChildren(children, size)}\n </WithLoader>\n ) : (\n getChildren(children, size)\n )}\n </StyledButton>\n )\n }\n) as React.FC<ButtonProps>\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 fontFamily: '$display',\n fontWeight: 700,\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2174, 0.2254)\n },\n md: {\n fontSize: '$xl',\n lineHeight: 1.14,\n ...capsize(0.2174, 0.2254)\n },\n lg: {\n fontSize: '$2xl',\n lineHeight: 1.08,\n ...capsize(0.1865, 0.1945)\n },\n xl: {\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.206, 0.214)\n },\n xxl: {\n fontSize: '$4xl',\n lineHeight: 1.06,\n ...capsize(0.1793, 0.1873)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentPropsWithoutRef<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(({ size = 'md', ...remainingProps }, ref) => (\n <StyledHeading ref={ref} size={size} {...remainingProps} />\n ))\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { createThemeVariants } from '~/utilities'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\n\nconst StyledStack = styled('div', {\n display: 'flex',\n '& > *': {\n m: 0\n },\n variants: {\n direction: {\n row: {\n flexDirection: 'row'\n },\n 'row-reverse': {\n flexDirection: 'row-reverse'\n },\n column: {\n flexDirection: 'column'\n }\n },\n wrap: {\n wrap: {\n flexWrap: 'wrap'\n },\n 'no-wrap': {\n flexWrap: 'no-wrap'\n },\n 'wrap-reverse': {\n flexWrap: 'wrap-reverse'\n }\n },\n justify: {\n start: { justifyContent: 'flex-start' },\n center: { justifyContent: 'center' },\n end: { justifyContent: 'flex-end' },\n false: {}\n },\n align: {\n start: { alignItems: 'flex-start' },\n center: { alignItems: 'center' },\n end: { alignItems: 'flex-end' },\n false: {}\n },\n gap: {\n ...createThemeVariants('space', {\n mt: '-$key',\n ml: '-$key',\n '& > *': {\n mt: '$key',\n ml: '$key'\n }\n }),\n false: {}\n }\n }\n})\n\ntype StackPropsType = React.ComponentProps<typeof StyledStack> & {\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 Stack: React.ForwardRefExoticComponent<StackPropsType> =\n React.forwardRef(\n (\n {\n css,\n gap = 2,\n direction = 'row',\n wrap = 'wrap',\n justify = 'start',\n align,\n ...remainingProps\n },\n ref\n ) => {\n return (\n <CSSWrapper css={css}>\n <StyledStack\n ref={ref}\n direction={direction}\n gap={gap}\n wrap={wrap}\n justify={justify}\n align={\n typeof align === 'undefined' && direction !== 'column'\n ? 'center'\n : align\n }\n {...remainingProps}\n />\n </CSSWrapper>\n )\n }\n )\n\nStack.displayName = 'Stack'\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 fontFamily: '$body',\n fontWeight: 400,\n margin: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: textVariants\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(({ size = 'md', ...remainingProps }, ref) => (\n <StyledText size={size} {...remainingProps} ref={ref} />\n ))\n\nText.displayName = 'Text'\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Heading } from '../../heading'\nimport { Stack } from '../../stack'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert: React.FC<AlertDialogContentProps> = ({\n title,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n ...remainingProps\n}) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n {...remainingProps}\n >\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mb: '$5' }}>\n {title}\n </Heading>\n {description && (\n <Text as={AlertDialog.Description} css={{ mb: '$5' }}>\n {description}\n </Text>\n )}\n <Stack gap=\"2\" justify=\"end\">\n {cancelActionText && (\n <Button\n appearance=\"outline\"\n as={AlertDialog.Cancel}\n onClick={() => onAction(false)}\n size=\"sm\"\n >\n {cancelActionText}\n </Button>\n )}\n <Button\n as={AlertDialog.Action}\n onClick={() => onAction(true)}\n size=\"sm\"\n >\n {confirmActionText}\n </Button>\n </Stack>\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: React.FC = ({ children }) => {\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","/*\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 * 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\ntype TAvatarIconProps = {\n is: typeof Icon\n}\n\nexport const AvatarIcon: React.FC<TAvatarIconProps> = ({ is }) => {\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: React.FC<ImageProps> = StyledImage\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: React.FC<Record<string, never>> = () => {\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: React.FC<Record<string, never>> = () => {\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: '$tonal400' }}>\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\ntype TAvatarImageProps = {\n src: string\n alt: string\n}\n\nexport const AvatarImage: React.FC<TAvatarImageProps> = ({ src, alt }) => {\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: '$tonal400',\n borderRadius: '$round',\n border: '2px solid $tonal100',\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: '$tonal400',\n backgroundColor: '$tonal50'\n },\n '&:active': {\n borderColor: '$primary',\n backgroundColor: '$tonal100'\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: React.FC<TAvatarProps> = ({\n children,\n name,\n size\n}) => {\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: React.FC<TAvatarProps> = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}) => (\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\ntype TAvatar = typeof AvatarRoot & {\n Image: typeof AvatarImage\n Initial: typeof AvatarInitial\n Placeholder: typeof AvatarPlaceholder\n Icon: typeof AvatarIcon\n}\n\nexport const Avatar = AvatarRoot as TAvatar\nAvatar.Image = AvatarImage\nAvatar.Initial = AvatarInitial\nAvatar.Placeholder = AvatarPlaceholder\nAvatar.Icon = AvatarIcon\nAvatar.displayName = 'Avatar'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\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 theme: {\n success: {\n bg: '$successLight',\n color: '$successMid'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n danger: {\n bg: '$dangerLight',\n color: '$dangerMid'\n },\n neutral: {\n bg: '$tonal50',\n color: '$tonal400'\n },\n info: {\n bg: '$primaryLight',\n color: '$primaryMid'\n },\n purple: {\n bg: '$purple200',\n color: '$purple1000'\n }\n },\n size: {\n xs: {\n fontSize: '$sm',\n px: '$1',\n height: '$2'\n },\n sm: {\n fontSize: '$md',\n px: '$1',\n height: '$3'\n },\n md: {\n fontSize: '$md',\n px: '$2',\n height: '$4'\n }\n }\n }\n})\n\ntype BadgeProps = React.ComponentProps<typeof StyledBadge>\n\nexport const Badge: React.FC<BadgeProps> = ({\n theme = 'info',\n size = 'sm',\n children,\n ...rest\n}) => {\n return (\n <StyledBadge role=\"status\" theme={theme} size={size} {...rest}>\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <Box\n css={{\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n py: '$0'\n }}\n >\n {child}\n </Box>\n )\n }\n\n if (React.isValidElement(child) && child.type === Icon) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: 'sm',\n css: { ...child.props.css, flexShrink: 0 }\n }\n )\n }\n })}\n </StyledBadge>\n )\n}\n\nBadge.displayName = 'Badge'\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: '$primary',\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: '$primaryMid'\n },\n '&:active': {\n color: '$primaryDark'\n },\n '&:disabled': {\n color: '$tonal100'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious: React.FC<{ css: CSS }> = (props) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext: React.FC<{ css: CSS }> = (props) => (\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: '$tonal200',\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: '$primary'\n },\n '&:hover, &:focus': {\n bg: '$primaryMid'\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\ntype SlideProps = React.ComponentProps<typeof StyledSlide> & { index: number }\n\nexport const CarouselSlide: React.FC<SlideProps> = ({\n children,\n ...remainingProps\n}) => (\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\ntype CarouselSubComponents = {\n ArrowNext: typeof CarouselArrowNext\n ArrowPrevious: typeof CarouselArrowPrevious\n Pagination: typeof CarouselPagination\n Slide: typeof CarouselSlide\n Slider: typeof CarouselSlider\n}\n\nexport const Carousel: React.FC<\n CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>\n> &\n CarouselSubComponents = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}) => {\n return (\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/**\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\nCarousel.ArrowNext = CarouselArrowNext\nCarousel.ArrowPrevious = CarouselArrowPrevious\nCarousel.Pagination = CarouselPagination\nCarousel.Slide = CarouselSlide\nCarousel.Slider = CarouselSlider\n\nCarousel.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'\n\nimport { Icon } from '../icon'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\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$tonal400',\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 '&[data-state=\"checked\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '1px'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n borderColor: '$tonal400',\n cursor: 'not-allowed',\n color: '$tonal400'\n },\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\ntype CheckboxProps = React.ComponentProps<typeof StyledCheckbox>\n\nexport const Checkbox: React.FC<CheckboxProps> = React.forwardRef(\n ({ size = 'md', ...props }, ref) => {\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return (\n <StyledCheckbox {...props} size={size} ref={ref}>\n <StyledIndicator asChild>\n <Icon\n is={props.checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3'\n }}\n size={iconSize}\n />\n </StyledIndicator>\n </StyledCheckbox>\n )\n }\n)\n\nCheckbox.displayName = 'Checkbox'\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: '$primary' },\n neutral: { color: '$tonal400' },\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\nconst InlineMessageIcon = styled(Icon, {\n flexShrink: '0',\n mr: '$2'\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage: React.FC<TInlineMessageProps> = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <InlineMessageIcon\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: '$tonal500',\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 },\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})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\ntype LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label: React.FC<LabelProps> = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}) => (\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: '$primary' }\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 { 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: '$tonal100',\n borderRadius: '$1',\n color: '$tonal600',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode: React.FC<MarkdownCodeProps> = ({ node }) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import { 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: React.FC<MarkdownEmphasisProps> = ({\n node,\n handleNode\n}) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import { 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: React.FC<MarkdownHeadingProps> = ({\n node,\n handleNode,\n ...rest\n}) => {\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 { 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: '$tonal100',\n borderRadius: '$0',\n color: '$tonal600',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode: React.FC<MarkdownInlineCodeProps> = ({\n node\n}) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import { 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: React.FC<MarkdownImageProps> = ({ node, css }) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import { 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: React.FC<MarkdownLinkProps> = ({\n node,\n handleNode\n}) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import { 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: React.FC<MarkdownListProps> = ({\n node,\n handleNode,\n css\n}) => (\n <List\n css={{ '& p:before, & p:after': { display: 'none' }, ...css } as CSS}\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import { 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: React.FC<MarkdownListItemProps> = ({\n node,\n handleNode\n}) => <List.Item>{node.children?.map(handleNode)}</List.Item>\n","import { 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: React.FC<MarkdownParagraphProps> = ({\n node,\n handleNode,\n ...rest\n}) => <Text {...rest}>{node.children?.map(handleNode)}</Text>\n","import { 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: React.FC<MarkdownStrongProps> = ({\n node,\n handleNode\n}) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import { 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: '$tonal100',\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: React.FC<MarkdownThematicBreakProps> = ({\n css\n}) => <Divider css={{ width: '100%', ...css } as CSS} />\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\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: '$primary',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primaryMid',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primaryDark'\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})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions\n>\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n ({ size = 'md', href, ...props }, ref) => (\n <StyledLink\n {...(!href && { as: 'button', noCapsize: true })}\n size={size}\n href={href}\n {...props}\n ref={ref}\n />\n )\n) as React.FC<LinkProps>\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: React.FC<DescriptionProps> = ({ children, css }) => (\n <Text size=\"sm\" css={{ color: '$tonal300', 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'\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}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper: React.FC<FieldWrapperProps> = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel\n}) => {\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}>\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 $tonal400',\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 $primary',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary',\n borderColor: '$primary'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n borderColor: '$tonal400',\n color: '$tonal400',\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.ComponentPropsWithoutRef<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton: React.FC<RadioButtonProps> = ({ size, ...props }) => {\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: React.FC<InlineFieldWrapperProps> = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}) => (\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 type { Mode, UseFormMethods } from 'react-hook-form'\n\nexport enum StorageEnum {\n LOCAL = 'local',\n SESSION = 'session'\n}\n\ntype ExcludeIncludeConfig = {\n exclude?: string[]\n include?: string[]\n}\n\nexport type PersistOptions = {\n id: string\n storage?: StorageEnum\n} & ExcludeIncludeConfig\n\nexport type FormPersistParams = {\n storage: Storage\n} & ExcludeIncludeConfig\n\nexport type PersistFormWrapperValues = {\n persist: PersistOptions\n watch\n setValue\n children: React.ReactNode | any\n}\n\nexport type FormContentValues = {\n formMethods\n handleSubmit: (\n submitHandler: (data: any) => void | any,\n submitErrorHandler?: (errors: any) => void\n ) => (e: any) => Promise<void>\n onSubmit: (data: any) => void | any\n onError?: (errors: any) => void\n children: React.ReactNode | any\n}\n\nexport type FormValues = {\n defaultValues?: { [key: string]: string | number }\n onSubmit: (data: any) => void | any\n onError?: (errors: any) => void\n validationMode?: Mode\n persist?: PersistOptions\n} & (\n | { children: React.ReactNode; render?: never }\n | { children?: never; render: (methods: UseFormMethods) => React.ReactNode }\n)\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport useFormPersist from 'react-hook-form-persist'\n\nimport { styled } from '~/stitches'\n\nimport type {\n FormContentValues,\n FormPersistParams,\n FormValues,\n PersistFormWrapperValues\n} from './Form.types'\nimport { StorageEnum } from './Form.types'\n\nconst StyledForm = styled('form', {})\n\ntype FormProps = React.ComponentPropsWithoutRef<typeof StyledForm> & FormValues\n\ntype FormContentProps = React.ComponentPropsWithoutRef<typeof StyledForm> &\n FormContentValues\n\ntype PersistFormWrapperProps = React.ComponentPropsWithoutRef<\n typeof StyledForm\n> &\n PersistFormWrapperValues\n\nconst PersistFormWrapper: React.FC<PersistFormWrapperProps> = ({\n persist,\n watch,\n setValue,\n children\n}) => {\n const { id, ...options } = persist\n\n let params: FormPersistParams = {\n ...options,\n storage:\n options.storage === StorageEnum.LOCAL\n ? window.localStorage\n : window.sessionStorage\n }\n\n if (options.exclude) {\n // Workaround for bug in react-hook-form-persist package\n // package will still read from and save exclude param\n // so need to send inputs we actually want to read from in include param instead\n const { exclude, ...rest } = params\n const allValues = watch()\n const include = Object.keys(allValues).filter((key) => {\n if (!options.exclude?.includes(key)) return key\n })\n params = { ...rest, include }\n }\n\n useFormPersist(id, { watch, setValue }, params)\n\n return children\n}\n\nconst FormContent: React.FC<FormContentProps> = ({\n formMethods,\n handleSubmit,\n onSubmit,\n onError,\n children,\n ...remainingProps\n}) => (\n <FormProvider {...formMethods}>\n <StyledForm\n aria-label=\"form\"\n {...remainingProps}\n onSubmit={handleSubmit(onSubmit, onError)}\n >\n {children}\n </StyledForm>\n </FormProvider>\n)\n\nexport const Form: React.FC<FormProps> = ({\n children,\n defaultValues = {},\n onSubmit,\n onError,\n validationMode = 'onBlur',\n render,\n persist,\n ...remainingProps\n}) => {\n invariant(\n !(children && render),\n '`Form` should only be given one of `children` or `render`. When both are provided, `render` will be used and `children` will be ignored.'\n )\n\n const formMethods = useForm({\n defaultValues,\n mode: validationMode\n })\n const { handleSubmit, watch, setValue } = formMethods\n\n const formContent = render ? render(formMethods) : children\n\n const props = {\n formMethods,\n handleSubmit,\n onSubmit,\n onError,\n ...remainingProps\n }\n\n if (persist) {\n return (\n <PersistFormWrapper persist={persist} watch={watch} setValue={setValue}>\n <FormContent {...props}>{formContent}</FormContent>\n </PersistFormWrapper>\n )\n }\n\n return <FormContent {...props}>{formContent}</FormContent>\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\ntype CheckboxFieldProps = React.ComponentProps<typeof Checkbox> &\n FieldElementWrapperProps\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField: React.FC<CheckboxFieldProps> = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}) => {\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' }\nexport const StyledChipIcon = styled(Icon, {\n flexShrink: 0\n})\nexport const ChipIcon: typeof Icon = ({ ...props }) => {\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 <StyledChipIcon {...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: '$primary',\n color: '$primaryMid',\n bg: '$primaryLight',\n '&[data-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: React.FC<TChipRootProviderProps> = ({\n size,\n children\n}) => {\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 asWorkaround?: React.ElementType // (!?) `asWorkaround` rather than `as` because, it seems, when we extend this via `styled()` stitches overrides this component from the first argument for the value in `as`\n}\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ asWorkaround, size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} as={asWorkaround} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\ntype TChipType = typeof ChipRoot & {\n Content: typeof ChipContent\n Icon: typeof ChipIcon\n}\n\nexport const Chip = ChipRoot as TChipType\nChip.Content = ChipContent\nChip.Icon = ChipIcon\nChip.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Stack } from '~/components/stack'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Stack>\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => {\n return <Stack ref={ref} direction=\"row\" gap={gap} align={false} {...rest} />\n})\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}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => null\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n}\n\nexport const DismissibleRootProvider: React.FC<IDismissibleRootProps> = ({\n children,\n disabled\n}) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n const value = React.useMemo<IDismissibleRootContext>(\n () => ({ disabled, isDismissed, setIsDismissed }),\n [disabled, isDismissed]\n )\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupItemProps {\n asChild?: boolean\n value: React.ReactText\n onDismiss?: (value: React.ReactText) => void\n}\n\nconst DismissibleRootInternal: React.FC<IDismissibleGroupItemProps> = ({\n asChild = false,\n value,\n onDismiss,\n ...rest\n}) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n React.useEffect(() => {\n if (isDismissed) onDismiss?.(value)\n }, [isDismissed])\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: React.FC<\n IDismissibleGroupItemProps & IDismissibleRootProps\n> = ({ disabled = false, ...rest }) => (\n <DismissibleRootProvider disabled={disabled}>\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\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: React.FC<IDismissibleTriggerProps> = ({\n asChild = false,\n ...rest\n}) => {\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 } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\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\ntype TDismissible = typeof DismissibleRoot & {\n Trigger: typeof DismissibleTrigger\n}\n\nexport const Dismissible = DismissibleRoot as TDismissible\nDismissible.Trigger = DismissibleTrigger\nDismissible.displayName = 'Dismissible'\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: React.FC<IDismissibleGroupProps> = ({\n children,\n disabled,\n onDismiss\n}) => {\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.ComponentType\n}\n\nexport const DismissibleGroupRoot: React.FC<IDismissibleGroupRootProps> = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\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 disabled?: boolean\n}\n\nexport const DismissibleGroupItem: React.FC<TDismissibleGroupItemProps> = ({\n children,\n disabled: itemDisabled = false,\n ...rest\n}) => {\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 onDismiss={onDismiss}\n {...rest}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\ntype TDismissibleGroup = typeof DismissibleGroupRoot & {\n Item: typeof DismissibleGroupItem\n Trigger: typeof DismissibleTrigger\n}\n\nexport const DismissibleGroup = DismissibleGroupRoot as TDismissibleGroup\nDismissibleGroup.Item = DismissibleGroupItem\nDismissibleGroup.Trigger = DismissibleTrigger\nDismissibleGroup.displayName = 'DismissibleGroup'\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: React.FC<TChipDismissibleGroupItem> = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}) => {\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: '$tonal200' }}\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.forwardRef<\n HTMLDivElement,\n TChipDismissibleGroupRootProps\n>((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(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$tonal100',\n color: '$tonal600',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$white',\n color: '$primaryDark'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$tonal400',\n bg: '$tonal50',\n borderColor: '$tonal200'\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: React.FC<TChipToggleGroupItem> = ({\n size = 'md',\n children,\n ...rest\n}) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem asWorkaround=\"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\nimport { ChipGroup } from '~/components/chip'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot = React.forwardRef<\n HTMLDivElement,\n TChipToggleGroupRootProps\n>((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'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\n\nexport const ComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.tonal300.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 $tonal300',\n borderRadius: '$0',\n boxSizing: 'border-box',\n color: '$tonal600',\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: '$tonal300',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n variants: {\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\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: '$tonal500',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$tonal50',\n borderRadius: '$0'\n },\n '[data-user-value]': {\n color: '$primary'\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 $tonal100',\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'\nimport * as React from 'react'\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\nconst StyledCombobox = styled(BaseCombobox, {})\n\ntype ComboboxProps = React.ComponentProps<typeof StyledCombobox>\n\nexport const Combobox: React.FC<ComboboxProps> & {\n Input: typeof ComboboxInput\n Popover: typeof ComboboxPopover\n List: typeof ComboboxList\n Option: typeof ComboboxOption\n OptionText: typeof ComboboxOptionText\n} = (props) => <StyledCombobox {...props} />\n\nCombobox.displayName = 'Combobox'\nCombobox.Option = ComboboxOption\nCombobox.Input = ComboboxInput\nCombobox.Popover = ComboboxPopover\nCombobox.List = ComboboxList\nCombobox.OptionText = ComboboxOptionText\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\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 data: TAsyncDataResult\n columns: any\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 type { UniqueIdentifier } from '@dnd-kit/core'\nimport type { PaginationState } from '@tanstack/react-table'\nimport {\n getCoreRowModel,\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} & (\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 children\n}: DataTableProviderProps): JSX.Element => {\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\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 },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\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 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 }\n }, [table, applyPagination, getTotalRows, isSortable])\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.forwardRef<\n HTMLTableRowElement,\n React.ComponentProps<typeof StyledRow>\n>((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: '$tonal50' }\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: React.FC<TableBodyProps> = ({\n striped = true,\n ...rest\n}) => <StyledTableBody striped={striped} {...rest} />\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderBottom: '1px solid $tonal100',\n boxSizing: 'border-box',\n color: '$tonal400',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: 'bold' }\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: '$tonal400',\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 color: 'white',\n fontFamily: '$body',\n fontWeight: 600,\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle'\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 LIGHT: 'light'\n}\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n [`${TableHeaderCell}`]: {\n bg: '$primary'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n [`${TableHeaderCell}`]: {\n bg: '$primaryDark'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n [`${TableHeaderCell}`]: {\n bg: '$tonal50',\n color: '$tonal600'\n }\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader: React.FC<TableHeaderProps> = ({\n theme = 'primaryDark',\n ...rest\n}: TableHeaderProps) => <StyledTableHeader theme={theme} {...rest} />\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: number,\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n\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 setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef])\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'\ninterface ITableStickyColumnsContainerProps {\n children: React.ReactNode\n numberOfStickyColumns?: number\n css?: CSS\n}\n\nexport const TableStickyColumnsContainer: React.FC<\n ITableStickyColumnsContainerProps\n> = ({ children, numberOfStickyColumns = 0, css, ...restProps }) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const scrollContainerRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss(\n numberOfStickyColumns,\n scrollContainerRef\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={scrollContainerRef}\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 { 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\ntype TableSubComponents = {\n Body: typeof TableBody\n Cell: typeof TableCell\n Footer: typeof TableFooter\n FooterCell: typeof TableFooterCell\n Header: typeof TableHeader\n HeaderCell: typeof TableHeaderCell\n Row: typeof TableRow\n StickyColumnsContainer: typeof TableStickyColumnsContainer\n}\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}\n\nexport const Table: React.FC<TableProps> & TableSubComponents = ({\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n ...rest\n}: TableProps) => {\n const tableComponent = <StyledTable size={size} corners={corners} {...rest} />\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n}\n\nTable.Body = TableBody\nTable.Cell = TableCell\nTable.Footer = TableFooter\nTable.FooterCell = TableFooterCell\nTable.Header = TableHeader\nTable.HeaderCell = TableHeaderCell\nTable.Row = TableRow\nTable.StickyColumnsContainer = TableStickyColumnsContainer\n\nTable.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\nexport const DataTableBody: React.FC<DataTableBodyProps> = ({\n striped = false,\n ...props\n}) => {\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} />\n })}\n </Table.Body>\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: React.FC<DataTableDataCellProps> = ({\n cell\n}) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nexport const EmptyStateBody = styled(Text, {\n color: '$tonal400',\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","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\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 React.ComponentProps<typeof Image>\n\nexport const EmptyStateImage: React.FC<EmptyStateImageProps> = (props) => (\n <StyledEmptyStateImage {...props} />\n)\n","import { styled } from '~/stitches'\n\nexport const EmptyStateTitle = styled('h2', {\n color: '$tonal400',\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","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\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\ntype EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nexport const EmptyState: React.FC<EmptyStateProps> & {\n Image: typeof EmptyStateImage\n Title: typeof EmptyStateTitle\n Body: typeof EmptyStateBody\n} = ({ size = 'sm', children, ...props }) => (\n <EmptyStateContainer size={size} {...props}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (\n child.type === EmptyStateImage ||\n child.type === EmptyStateTitle ||\n child.type === EmptyStateBody\n ) {\n return React.cloneElement(child, { ...child.props, size })\n }\n\n return child\n })}\n </EmptyStateContainer>\n)\n\nEmptyState.displayName = 'EmptyState'\nEmptyState.Image = EmptyStateImage\nEmptyState.Title = EmptyStateTitle\nEmptyState.Body = EmptyStateBody\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: React.FC<DataTableEmptyStateProps> = ({\n children,\n ...rest\n}) => {\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\ninterface IDataTableErrorProps {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}\n\nexport const DataTableError: React.FC<IDataTableErrorProps> = ({\n children\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 OptionallyVisuallyHiddenContainer: React.FC<{\n hidden?: boolean\n}> = ({ children, hidden = false }) => {\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","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledInput = styled('input', {\n appearance: 'none',\n border: '1px solid $tonal400',\n borderRadius: '$0',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n color: '$tonal600',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n px: '$3',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$tonal300',\n opacity: 1\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 },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\n// override default 'type' property to prevent Input from being used to render\n// checkboxes, radios etc — we have dedicated components for them\nexport type InputProps = Override<\n React.ComponentProps<typeof StyledInput>,\n {\n name: string\n as?: never\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n }\n>\n\nexport const Input: React.FC<InputProps> = React.forwardRef(\n ({ type = 'text', size = 'md', ...rest }, ref) => {\n if (type === 'number') {\n return (\n <StyledInput\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n size={size}\n {...rest}\n ref={ref}\n />\n )\n }\n\n return <StyledInput type={type} size={size} {...rest} ref={ref} />\n }\n)\n\nInput.displayName = 'Input'\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 { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box/'\nimport { Icon } from '~/components/icon/'\nimport { Input } from '~/components/input/'\nimport { CSS, styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md'\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: '$tonal300',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n top: '$2',\n right: '$2',\n size: '$1'\n },\n md: {\n top: 10,\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInput = styled(Input, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, & input[type=\"search\"]::-webkit-search-results-decoration':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.FC<SearchInputProps> = React.forwardRef(\n (\n {\n size = 'md',\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 React.useImperativeHandle(ref, () => inputElRef.current as HTMLInputElement)\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={{ size: size == 'sm' ? '$1' : 20 }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={size}\n css={{ position: 'absolute', top: '0', right: '$1' }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <Box css={{ position: 'relative', ...css }}>\n <StyledSearchInput\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 </Box>\n )\n }\n)\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionallyVisuallyHiddenContainer } from '../../utilities/optionally-visually-hidden-container'\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: React.FC<DataTableSearchProps> = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}) => {\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 <OptionallyVisuallyHiddenContainer hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionallyVisuallyHiddenContainer>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n}\n\nexport const DataTableHead: React.FC<DataTableHeadProps> = ({\n sortable = true,\n theme = 'light',\n ...props\n}) => {\n const { getHeaderGroups, setIsSortable } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n return (\n <Table.Header theme={theme} {...props}>\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row key={headerGroup.id}>\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 { SortDown, SortUp } from '@atom-learning/icons'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\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 sortIcons = {\n asc: SortUp,\n desc: SortDown\n}\n\nconst SortIcon: React.FC<{ direction: 'asc' | 'desc' }> = ({ direction }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1' }}\n />\n)\n\nexport const DataTableHeaderCell: React.FC<DataTableHeaderProps> = ({\n header,\n children,\n css,\n ...props\n}) => {\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 return (\n <Table.HeaderCell\n onClick={\n isSortableTable && isDataColumn\n ? header.column.getToggleSortingHandler()\n : undefined\n }\n css={{\n cursor: isSortableTable && isDataColumn ? 'pointer' : 'initial',\n ...css\n }}\n {...props}\n >\n <Flex css={{ alignItems: 'center' }}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex css={{ position: 'relative', alignItems: 'center' }}>\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n </Flex>\n </Table.HeaderCell>\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: React.FC<\n React.ComponentProps<typeof PendingState>\n> = (props) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import { CSS } from '@stitches/react'\nimport * as React from 'react'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\ninterface IDataTableMetaDataProps {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData: React.FC<IDataTableMetaDataProps> = ({\n copy,\n css\n}) => {\n const { getState, columns, getRowModel } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.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 css={{ fontWeight: 600, ...css }}>{`${totalRows} items ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTableDataCell } from './DataTableDataCell'\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n}\n\nexport const DataTableRow: React.FC<DataTableRowProps> = ({ row }) => {\n return (\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableLoading } from './DataTableLoading'\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTable.Head>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof Table.Body>, 'striped'>>\n\nexport const DataTableTable: React.FC<DataTableTableProps> = ({\n sortable,\n striped,\n theme,\n css,\n numberOfStickyColumns = 0,\n ...props\n}) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n <Table\n {...props}\n numberOfStickyColumns={numberOfStickyColumns}\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 <DataTable.Body striped={striped} />\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: React.FC<TSortableHandleProps> = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}) => {\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 { CSS, styled } from '@stitches/react'\nimport * as React from 'react'\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: React.FC<TSortableItemProps> = ({\n id,\n asChild = false,\n css,\n isDragHandle = false,\n disabled,\n ...rest\n}) => {\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: React.FC<TSortableRootProps> = ({\n sortableIds,\n onSortChange,\n children\n}) => {\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: React.FC<DataTableDraggableRowProps> = ({\n row,\n idColumn = 'id'\n}) => {\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: React.FC<DataTableBodyProps> = ({\n striped = false,\n idColumn = 'id',\n ...props\n}) => {\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: React.FC<DragAndDropTableProps> = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}) => {\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","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundColor: 'white',\n backgroundImage: encodeBackgroundIcon(theme.colors.tonal300.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n border: '1px solid $tonal300',\n borderRadius: '$0',\n color: '$tonal600',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n transition: 'all 75ms ease-out',\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\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 },\n state: {\n error: {\n border: '1px solid $danger'\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.FC<SelectProps> = React.forwardRef(\n ({ placeholder, children, size = 'md', ...remainingProps }, ref) => {\n const props = { size, 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 { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Flex } from '../../flex'\nimport { Icon } from '../../icon'\nimport { Select } from '../../select'\nimport { Text } from '../../text'\n\nexport const DirectionButton: React.FC<{\n css?: CSS\n direction: 'next' | 'previous'\n disabled: boolean\n onClick: () => void\n}> = ({ direction, ...remainingProps }) => {\n const isNext = direction === 'next'\n\n return (\n <ActionIcon\n appearance=\"outline\"\n isRounded\n label={isNext ? 'Next page' : 'Previous page'}\n name={isNext ? 'Next page' : 'Previous page'}\n size=\"md\"\n {...remainingProps}\n >\n <Icon is={isNext ? ChevronRight : ChevronLeft} />\n </ActionIcon>\n )\n}\n\nexport const GotoPageSelect: React.FC<{\n pageIndex: number\n pageCount: number\n gotoPage: (pageNumber: number) => void\n disabled: boolean\n}> = ({ gotoPage, pageCount, pageIndex, disabled }) => {\n return (\n <Flex css={{ alignItems: 'center' }}>\n <Select\n value={pageIndex}\n size=\"sm\"\n css={{ mr: '$3' }}\n disabled={disabled}\n onChange={(e) => {\n gotoPage(Number(e.target.value))\n }}\n >\n {Array.from({ length: pageCount }, (z, x) => x).map((i) => {\n return (\n <option key={i} value={i}>\n {i + 1}\n </option>\n )\n })}\n </Select>\n <Text size=\"sm\" css={{ flex: 'none' }}>{`of ${pageCount} ${\n pageCount > 1 ? 'pages' : 'page'\n }`}</Text>\n </Flex>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DirectionButton, GotoPageSelect } from './PaginationButtons'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums',\n flexWrap: 'wrap',\n rowGap: '$4'\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav>\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n previousPage,\n nextPage,\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 if (isEmpty) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n const isPaginationDisabled =\n asyncDataState === AsyncDataState.PENDING ||\n asyncDataState === AsyncDataState.REJECTED\n\n return (\n <StyledNav {...props}>\n <Text\n size=\"sm\"\n css={{\n pr: '$4',\n '@sm': { flexBasis: '50%' }\n }}\n >\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n\n <Flex\n css={{\n justifyContent: 'space-between',\n width: '100%',\n '@sm': { flexBasis: '50%' }\n }}\n >\n <GotoPageSelect\n gotoPage={setPageIndex}\n pageCount={getPageCount()}\n pageIndex={paginationState.pageIndex}\n disabled={isPaginationDisabled}\n />\n\n <Flex>\n <DirectionButton\n direction=\"previous\"\n disabled={paginationState.pageIndex === 0 || isPaginationDisabled}\n onClick={previousPage}\n css={{ mr: '$4' }}\n />\n <DirectionButton\n direction=\"next\"\n disabled={\n paginationState.pageIndex === getPageCount() - 1 ||\n isPaginationDisabled\n }\n onClick={nextPage}\n />\n </Flex>\n </Flex>\n </StyledNav>\n )\n}\n","import * as React from 'react'\n\nimport { DataTableBody } from './DataTableBody'\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 { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\ntype TDataTable = React.FC<React.ComponentProps<typeof 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: typeof DataTableBody\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: typeof DataTableDataCell\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: typeof DragAndDropTable\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: typeof 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\n Head: typeof DataTableHead\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\n HeaderCell: typeof DataTableHeaderCell\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\n MetaData: typeof DataTableMetaData\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n\n Pagination: typeof Pagination\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\n Row: typeof 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: typeof 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: typeof 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: typeof DataTableError\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: typeof DataTableEmptyState\n}\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: TDataTable = (props) => <DataTableProvider {...props} />\n\nDataTable.Body = DataTableBody\nDataTable.DataCell = DataTableDataCell\nDataTable.DragAndDropTable = DragAndDropTable\nDataTable.Head = DataTableHead\nDataTable.HeaderCell = DataTableHeaderCell\nDataTable.MetaData = DataTableMetaData\nDataTable.Pagination = Pagination\nDataTable.Row = DataTableRow\nDataTable.GlobalFilter = DataTableGlobalFilter\nDataTable.Table = DataTableTable\nDataTable.Loading = DataTableLoading\nDataTable.Error = DataTableError\nDataTable.EmptyState = DataTableEmptyState\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: '$tonal900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$tonal100'\n },\n '&:active': {\n color: 'white',\n bg: '$primary'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary',\n color: 'white',\n '&:hover': { bg: '$primary' }\n }\n },\n isToday: {\n true: { bg: '$tonal100' }\n },\n isOutsideMonth: {\n true: { color: '$tonal200' }\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: '$tonal600',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$tonal600 !important',\n fontWeight: '400',\n '&:hover': {\n bg: '$tonal100 !important',\n color: '$tonal600 !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: React.FC<CalendarProps> = ({\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}) => {\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: '$tonal600' }}\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 key={`${month}${year}${weekday}`}\n css={{ fontWeight: 600, 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: React.FC<PopoverContentProps> = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}) => (\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\ntype PopoverProps = React.ComponentProps<typeof StyledRoot>\n\nexport const Popover: React.FC<PopoverProps> & {\n Trigger: typeof Trigger\n Content: typeof PopoverContent\n Portal: typeof Portal\n} = (props) => <Root {...props} />\n\nPopover.Content = PopoverContent\nPopover.Portal = Portal\nPopover.Trigger = Trigger\n\nPopover.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { useState } from 'react'\n\nimport { DEFAULT_DATE_FORMAT } from './constants'\n\ndayjs.extend(customParseFormat)\n\nexport const useDate = (\n initialDate: Date | undefined,\n dateFormat = DEFAULT_DATE_FORMAT\n): {\n dateString: string\n date: Date | undefined\n setDate: (inputDate: Date | string, isDateString: boolean) => void\n} => {\n const [date, setDate] = useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n const [dateString, setDateString] = useState(\n initialDate ? dayjs(initialDate).format(dateFormat) : ''\n )\n\n const saveDate = (inputDate, isDateString = false) => {\n const parsedInputDate = isDateString\n ? dayjs(inputDate, dateFormat, true)\n : dayjs(inputDate)\n\n setDate(parsedInputDate.isValid() ? parsedInputDate.toDate() : undefined)\n setDateString(isDateString ? inputDate : parsedInputDate.format(dateFormat))\n }\n\n return { dateString, date, setDate: saveDate }\n}\n","import { CalendarEvent } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { DIALOG_Z_INDEX } from '~/constants/zIndices'\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'\nimport { useDate } from './use-date'\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nexport const DateInput = React.forwardRef<HTMLInputElement, DateInputProps>(\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, dateString, setDate } = useDate(initialDate, dateFormat)\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 React.useEffect(() => {\n onChange?.(date)\n }, [date, onChange])\n\n return (\n <Box css={{ position: 'relative' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={(event) => setDate(event.target.value, true)}\n value={dateString}\n ref={ref}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{ position: 'absolute', top: '0', right: '0' }}\n disabled={disabled}\n label={updatedLabels.open}\n size={size}\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 setDate(date.date, false)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await setDate(date, false)\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: React.FC<DateFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\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 { 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 { fadeIn, fadeOut } from '~/utilities'\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, {\n backgroundColor: '$alpha600',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'fixed',\n overflowY: 'auto',\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 StyledDialogContent = styled(Content, {\n bg: 'white',\n borderRadius: '$1',\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: { width: '380px' },\n sm: { width: '480px' },\n md: { width: '600px' },\n lg: { width: '800px' },\n xl: { width: '1100px' }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent: React.FC<DialogContentProps> = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}) => (\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' }}\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 { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\n\nconst StyledDialog = styled(Root, {})\n\ntype DialogProps = React.ComponentProps<typeof StyledDialog>\n\nexport const Dialog: React.FC<DialogProps> & {\n Background: typeof DialogBackground\n Close: typeof DialogClose\n Content: typeof DialogContent\n Description: typeof Description\n Title: typeof Title\n Trigger: typeof Trigger\n} = (props) => <StyledDialog {...props} />\n\nDialog.Background = DialogBackground\nDialog.Close = DialogClose\nDialog.Content = DialogContent\nDialog.Description = Description\nDialog.Title = Title\nDialog.Trigger = Trigger\n\nDialog.displayName = 'Dialog'\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'\n\nexport const itemStyles = {\n alignItems: 'center',\n color: '$tonal600',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 400,\n position: 'relative',\n px: '$3',\n py: '$2',\n '&[data-disabled]': {\n color: '$tonal200',\n pointerEvents: 'none'\n },\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: '$primaryMid',\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'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem: React.FC<\n React.ComponentProps<typeof DropdownMenuItem> & { href: string }\n> = ({ children, href, ...props }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\">\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: '$tonal200',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuTrigger = styled(Trigger, {})\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: React.FC<React.ComponentProps<typeof Root>> & {\n Content: typeof DropdownMenuContent\n Item: typeof DropdownMenuItem\n LinkItem: typeof DropdownMenuLinkItem\n Portal: typeof Portal\n Separator: typeof DropdownMenuSeparator\n Trigger: typeof DropdownMenuTrigger\n} = (props) => <Root {...props} />\n\nDropdownMenu.Content = DropdownMenuContent\nDropdownMenu.Item = DropdownMenuItem\nDropdownMenu.LinkItem = DropdownMenuLinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.Separator = DropdownMenuSeparator\nDropdownMenu.Trigger = DropdownMenuTrigger\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: React.FC<FileInputProps> = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}) => {\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: React.FC<GridProps> = ({\n css,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}) => (\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 } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField: React.FC<InputFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { StyledDivider } from '../divider/Divider'\nimport { StyledHeading } from '../heading/Heading'\nimport { StyledImage } from '../image/Image'\nimport { StyledList } from '../list/List'\nimport { StyledText } from '../text/Text'\n\nconst StyledStackContent = styled('div', {\n '& > *': {\n '&:not(:first-child)': { mt: '$5' },\n '&:not(:last-child)': { mb: '$5' }\n },\n [`& > ${StyledHeading}`]: {\n maxWidth: '65ch'\n },\n [`& > ${StyledText}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledList}`]: {\n maxWidth: '75ch'\n },\n [`& > ${StyledDivider}`]: {\n my: '$5'\n },\n [`& > ${StyledImage}`]: {\n display: 'block',\n '&:not(:first-child)': { mt: '$6' },\n '&:not(:last-child)': { mb: '$6' }\n }\n})\n\ntype StackContentProps = React.ComponentProps<typeof StyledStackContent> & {\n children: React.ReactNode\n css?: CSS\n}\n\nexport const StackContent: React.ForwardRefExoticComponent<StackContentProps> =\n React.forwardRef((props, ref) => <StyledStackContent ref={ref} {...props} />)\n\nStackContent.displayName = 'StackContent'\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 { CSS } from '~/stitches'\n\nimport { StackContent } from '../stack-content/StackContent'\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\ntype MarkdownContentProps = {\n content: string\n customComponents?: {\n [key: string]: React.FC<{\n node: any\n handleNode: HandleNode\n }>\n }\n css?: CSS\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: React.FC<MarkdownContentProps> = ({\n content,\n customComponents = {},\n css\n}) => {\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 <StackContent css={css}>{AST.children.map(handleNode)}</StackContent>\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 preventHover = (event: any) => {\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'\n\nimport { preventHover } from './preventHover'\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: 'white',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\nexport const NavigationMenuDropdownContent: React.FC = ({ children }) => (\n <StyledContent onPointerMove={preventHover} onPointerLeave={preventHover}>\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$tonal400',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$tonal400',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n '&:hover': { background: '$tonal50', color: '$tonal600' },\n '&:active': { background: '$tonal100', color: '$tonal600' },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: '600',\n color: '$tonal500',\n '&::after': {\n backgroundColor: '$tonal500',\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'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\nimport { preventHover } from './preventHover'\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: '$tonal100'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger = React.forwardRef<\n HTMLButtonElement,\n React.PropsWithChildren<{ active?: boolean }>\n>(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventHover}\n onPointerLeave={preventHover}\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: React.FC<NavigationMenuDropdownProps> = ({\n children,\n id,\n ...props\n}) => {\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 { CSS, styled } from '~/stitches'\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: '$primaryLight',\n color: '$primary',\n '*': { color: '$primary' },\n '&:hover': { background: '$tonal50' },\n '&:active': { background: '$tonal100' },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\ntype NavigationMenuLinkProps = {\n href: string\n active?: boolean\n disabled?: boolean\n variant?: 'link' | 'dropdownItem'\n css?: CSS\n}\n\nexport const NavigationMenuLink = React.forwardRef<\n HTMLAnchorElement,\n React.PropsWithChildren<NavigationMenuLinkProps>\n>(\n (\n { children, href, disabled, css, variant = 'link', ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled {...props}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\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.forwardRef<\n HTMLAnchorElement,\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n>((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$tonal500',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { CSS, 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'\n\ntype NavigationMenuSubComponents = {\n Link: typeof NavigationMenuLink\n Dropdown: typeof NavigationMenuDropdown\n DropdownContent: typeof NavigationMenuDropdownContent\n DropdownItem: typeof NavigationMenuDropdownItem\n DropdownItemTitle: typeof NavigationMenuDropdownItemTitle\n DropdownTrigger: typeof NavigationMenuDropdownTrigger\n}\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\ntype NavigationMenuProps = {\n css?: CSS\n}\n\nexport const NavigationMenu: React.FC<NavigationMenuProps> &\n NavigationMenuSubComponents = ({ children, css }) => {\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 }, [])\n\n React.useEffect(() => {\n let timer: NodeJS.Timer\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 onValueChange={setActiveItem} css={css}>\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n css={{\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\nNavigationMenu.Link = NavigationMenuLink\nNavigationMenu.Dropdown = NavigationMenuDropdown\nNavigationMenu.DropdownContent = NavigationMenuDropdownContent\nNavigationMenu.DropdownItem = NavigationMenuDropdownItem\nNavigationMenu.DropdownItemTitle = NavigationMenuDropdownItemTitle\nNavigationMenu.DropdownTrigger = NavigationMenuDropdownTrigger\n\nNavigationMenu.displayName = 'NavigationMenu'\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: '$primary'\n})\n\ntype NotificationBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n value: number | string\n}\n\nexport const NotificationBadge: React.FC<NotificationBadgeProps> = ({\n value,\n children\n}) => (\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 borderColor: '$tonal400 !important',\n zIndex: 1,\n '&:hover': {\n bg: '$tonal50',\n svg: {\n color: '$tonal400'\n }\n },\n svg: {\n color: '$tonal300'\n },\n '&:active': {\n bg: '$tonal100',\n svg: {\n color: '$tonal500'\n }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> & {\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 { icon, disabledTooltipContent, showTooltip, ...rest } = 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 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 type { CSS } from '~/stitches'\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 initialValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md'\n onChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (props: NumberInputProps, forwardedRef): JSX.Element => {\n const {\n name,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n initialValue = 0,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n onChange,\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n ...rest\n } = props\n\n const [value, setValue] = React.useState<number | string>(initialValue)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(\n forwardedRef,\n () => inputRef.current as HTMLInputElement\n )\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 = value >= max\n const isAtMin = value <= min\n\n const clamp = React.useCallback(\n (value: number) => Math.min(Math.max(value, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (next: string | number) => {\n setValue(next)\n onChange?.(Number(next))\n },\n [onChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = 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 let next: string | number\n\n if (value === '') {\n next = step\n } else {\n next = Number(value) + step\n }\n\n updateValue(clamp(next))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, value])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n let next: string | number\n\n if (value === '') {\n next = min\n } else {\n next = Number(value) - step\n }\n\n updateValue(clamp(next))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, value])\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 name,\n type: 'number',\n value,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\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': Number(value),\n role: 'spinbutton'\n }\n\n return (\n <Flex css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={size}\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={size}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </Flex>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport { useFieldError, ValidationOptions } 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 description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField: React.FC<NumberInputFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <NumberInput\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n {...remainingProps}\n onChange={trigger}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","export const TRUNCATED_THRESHOLD = 4\n\nexport enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n","export const getPaginationItemsToRender = (\n currentPage: number,\n pagesCount: number,\n truncatedThreshold: number,\n isMaxVisibleElementCount: boolean\n): number[] => {\n const listOfPages = Array.from(\n { length: pagesCount - 1 },\n (_, index) => index + 1\n )\n\n if (pagesCount <= truncatedThreshold) return listOfPages\n\n // If the current page is before the 3rd page\n // Render pagination items from 1 to 4 or 1 to 2\n if (currentPage < truncatedThreshold - 1) {\n return listOfPages.slice(0, isMaxVisibleElementCount ? 4 : 2)\n } else if (\n currentPage >=\n listOfPages.length - (isMaxVisibleElementCount ? 3 : 1)\n ) {\n // If the current page is within the last 3 pages or the last page\n // Render the last 4 or 2 pagination items\n return listOfPages.slice(isMaxVisibleElementCount ? -4 : -2)\n }\n // Otherwise render pagination items from the range of n-3 to n+1 or n-2 to n\n return listOfPages.slice(\n currentPage + (isMaxVisibleElementCount ? -3 : -2),\n currentPage + (isMaxVisibleElementCount ? 1 : 0)\n )\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number => {\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 => {\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} from '../pagination.helper'\nimport type { IPaginationContext, TPaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<IPaginationContext>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n visibleElementsCount: VisibleElementsAmount.LESS,\n pagesCount: 0,\n onItemHover: () => null,\n labels: {},\n isMaxVisibleElementCount: false,\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider: React.FC<TPaginationProviderProps> = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n const isMaxVisibleElementCount =\n visibleElementsCount === VisibleElementsAmount.MORE\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 goToPreviousPage = React.useCallback(() => {\n if (currentPage === 1) {\n return\n }\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n if (previousAvailablePage < 1) return\n goToPage(previousAvailablePage)\n }, [currentPage, disabledPages, goToPage])\n\n const goToNextPage = React.useCallback(() => {\n if (currentPage === pagesCount) {\n return\n }\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(nextPage, disabledPages)\n\n if (nextAvailablePage > pagesCount) return\n goToPage(nextAvailablePage)\n }, [currentPage, disabledPages, goToPage, pagesCount])\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n visibleElementsCount,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n labels,\n isMaxVisibleElementCount\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n visibleElementsCount,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n labels,\n isMaxVisibleElementCount\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 { IPaginationContext } from './types'\n\nexport const usePagination = (): IPaginationContext => {\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 { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\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 {\n goToNextPage,\n currentPage,\n pagesCount,\n labels,\n disabledPages,\n isMaxVisibleElementCount\n } = usePagination()\n\n const paginationItemsInview = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n // Check if we are on the last page or if the last page is disabled and the if the second to last page number is rendered\n const isDisabled =\n currentPage === pagesCount ||\n (disabledPages.includes(pagesCount) &&\n paginationItemsInview.includes(pagesCount - 1))\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 { focusVisibleStyleBlock } from '~/utilities'\n\nimport { styled } from '../../stitches'\nimport { Box } from '..'\nimport type { IPaginationItemProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst Dot = styled(Box, {\n position: 'absolute',\n bottom: '-$1',\n left: '0',\n transform: 'translateX(50%)',\n borderRadius: '$round',\n size: '4px',\n bg: '$accent9'\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: 'unset',\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: '$grey800',\n bg: '$base1',\n '&:not(:disabled)': {\n '&:hover': {\n color: '$accent10',\n bg: '$base2'\n },\n '&:active': {\n bg: '$base3',\n color: '$grey1000'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock()\n }\n },\n '&:disabled': {\n opacity: '0.3',\n cursor: 'not-allowed'\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: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: '$accent10',\n [`& ${Dot}`]: {\n bg: '$accent10'\n }\n },\n '&:active': {\n color: '$accent11',\n [`& ${Dot}`]: {\n bg: '$accent11'\n }\n }\n }\n }\n }\n }\n})\n\nexport const PaginationItem: React.FC<IPaginationItemProps> = ({\n pageNumber,\n css\n}) => {\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 return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => goToPage(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {isIndicated ? (\n <Box css={{ position: 'relative' }}>\n {pageNumber}\n <Dot />\n </Box>\n ) : (\n pageNumber\n )}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Icon, Popover, Stack } from '..'\nimport { PaginationItem } from './PaginationItem'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = () => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n return (\n <Popover>\n <Popover.Trigger asChild>\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 </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Stack css={{ p: '$4', display: 'flex', flexWrap: 'wrap' }} gap={1}>\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationItem\n key={pageNumber}\n pageNumber={pageNumber}\n css={{ bg: '$white' }}\n />\n )\n })}\n </Stack>\n </Popover.Content>\n </Popover>\n )\n}\n","import * as React from 'react'\n\nimport { Stack } from '..'\nimport { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\nimport { PaginationItem } from './PaginationItem'\nimport { PaginationPopover } from './PaginationPopover'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPages = () => {\n const { currentPage, pagesCount, isMaxVisibleElementCount } = usePagination()\n\n const paginationItems = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n\n const isTruncated = pagesCount > TRUNCATED_THRESHOLD\n\n return (\n <Stack gap={1}>\n {paginationItems?.map((pageNumber) => {\n return <PaginationItem key={pageNumber} pageNumber={pageNumber} />\n })}\n {isTruncated && <PaginationPopover />}\n <PaginationItem pageNumber={pagesCount} />\n </Stack>\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 { TRUNCATED_THRESHOLD } from './pagination.constants'\nimport { getPaginationItemsToRender } from './pagination.helper'\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 {\n goToPreviousPage,\n currentPage,\n labels,\n disabledPages,\n pagesCount,\n isMaxVisibleElementCount\n } = usePagination()\n\n const paginationItemsInview = getPaginationItemsToRender(\n currentPage,\n pagesCount,\n TRUNCATED_THRESHOLD,\n isMaxVisibleElementCount\n )\n // Check if we are on the first page or if the first page is disabled and the page number is rendered\n const isDisabled =\n currentPage === 1 ||\n (disabledPages.includes(1) && paginationItemsInview.includes(1))\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 { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '..'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPages } from './PaginationPages'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport type { IPaginationProps } from './types'\n\nexport const Pagination: React.FC<IPaginationProps> = ({\n colorScheme,\n css,\n ...paginationProps\n}) => {\n // Return null if pages is 0 or undefined\n if (!paginationProps?.pagesCount) {\n return null\n }\n\n return (\n <ColorScheme base=\"grey1\" accent=\"blue1\" {...colorScheme} asChild>\n <Flex css={css}>\n <PaginationProvider {...paginationProps}>\n <PaginationPreviousButton />\n <PaginationPages />\n <PaginationNextButton />\n </PaginationProvider>\n </Flex>\n </ColorScheme>\n )\n}\n\nPagination.displayName = 'Pagination'\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'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = 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 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={{ bottom: 0, position: 'absolute', right: 0 }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={size}\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 } 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: React.FC<PasswordFieldProps> = ({\n css = {},\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n ...remainingProps\n}) => {\n const { register } = useFormContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' } as CSS}\n description={description}\n error={error}\n fieldId={name}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\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: '$tonal100',\n height: '$0',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n theme: {\n primary: { color: '$primary' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' }\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: React.FC<ProgressBarProps> = ({\n value,\n max = 100,\n theme = 'primary',\n ...remainingProps\n}) => (\n <StyledProgressBar value={value} max={max} theme={theme} {...remainingProps}>\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: React.FC<RadioFieldProps> = ({\n css,\n label,\n value,\n ...remainingProps\n}) => (\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\nexport const RadioButtonField: React.FC<RadioButtonFieldProps> & {\n Item: typeof RadioField\n} = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}) => {\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\nRadioButtonField.Item = RadioField\n\nRadioButtonField.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 $tonal200',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary',\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 $tonal500',\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: '$primary',\n borderColor: '$primary'\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: React.FC<RadioCardProps> = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}) => (\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 * as RadioGroup from '@radix-ui/react-radio-group'\nimport type { VariantProps } from '@stitches/react'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Stack } from '../stack/Stack'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Stack>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup: React.FC<RadioCardGroupProps> = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}) => (\n <RadioGroup.Root {...rest}>\n <Stack direction=\"row\" justify={justify} gap={gap} css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(child, { size, isFullWidth, align })\n }\n return child\n })}\n </Stack>\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 } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField: React.FC<SearchFieldProps> = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\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 { Stack } from '../stack'\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 ['& > *:not(:last-child)']: { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Stack>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Stack wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n fontWeight: 600,\n ...css\n }}\n size=\"md\"\n {...rest}\n />\n)\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Stack } from '../stack'\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: '$blue100',\n color: '$blue1000'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst StyledStack = styled(Stack, {\n flexGrow: 1,\n justifyContent: 'space-between !important'\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 <StyledStack gap={3}>{children}</StyledStack>\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'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField: React.FC<SelectFieldProps> = ({\n css = undefined,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n hideLabel,\n ...remainingProps\n}) => {\n const { register } = 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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n hideLabel={hideLabel}\n >\n <Select\n name={name}\n id={name}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import { Root } from '@radix-ui/react-accordion'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerAccordionRoot = styled(Root, {\n width: '100%'\n})\n\nSidedrawerAccordionRoot.displayName = 'SidedrawerAccordionRoot'\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\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 bg: 'white',\n overflow: 'hidden',\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 SidedrawerAccordionContent: React.FC<\n React.ComponentProps<typeof StyledContent>\n> = ({ children, ...remainingProps }) => (\n <StyledContent {...remainingProps}>\n {React.Children.map(children, (child) => {\n return (\n <Box\n css={{\n '> a': {\n px: '$6'\n },\n '> button': {\n px: '$6'\n }\n }}\n >\n {child}\n </Box>\n )\n })}\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerAccordionItem = styled(Item, {})\n","export const sidedrawerItemStyles = {\n alignItems: 'center',\n bg: 'white',\n border: 'unset',\n borderLeft: '4px solid transparent',\n color: '$tonal600',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: '400',\n fontSize: '$md',\n margin: 0,\n minHeight: '48px',\n outline: 'unset',\n outlineOffset: 'unset',\n py: '$3',\n px: '$4',\n width: '100%',\n textDecoration: 'none',\n '&:hover': { bg: '$tonal50' },\n '&:active': { bg: '$tonal100' },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary'\n },\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none',\n cursor: 'default'\n },\n variants: {\n active: {\n true: {\n bg: '$primaryLight',\n borderLeft: '4px solid $primary',\n color: '$primary',\n fontWeight: '600'\n }\n }\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Header, Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex/Flex'\nimport { Icon } from '../../icon/Icon'\nimport { sidedrawerItemStyles } from '../Sidedrawer.styles'\n\nconst StyledTrigger = styled(Trigger, {\n justifyContent: 'space-between',\n m: 0,\n p: 0,\n '&[data-state=open]': { fontWeight: '600' },\n ...sidedrawerItemStyles\n})\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\nexport const SidedrawerAccordionTrigger: React.FC<\n React.ComponentProps<typeof StyledTrigger>\n> = ({ children, ...remainingProps }) => (\n <Header>\n <StyledTrigger {...remainingProps}>\n <Flex\n css={{\n alignItems: 'center'\n }}\n >\n {children}\n </Flex>\n <StyledIcon is={ChevronDown} size=\"sm\" />\n </StyledTrigger>\n </Header>\n)\n","import React, { isValidElement } from 'react'\n\nimport { Box } from '../box'\nimport { SidedrawerAccordionRoot } from './SidedrawerAccordion/'\n\nexport const SidedrawerBody: React.FC = ({ children }) => {\n let hasAccordionItems = false\n\n React.Children.forEach(children, (child) => {\n if (isValidElement(child) && child.props?.value) {\n hasAccordionItems = true\n }\n })\n\n return (\n <Box\n css={{\n flexGrow: 1,\n width: '100%',\n overflowY: 'auto'\n }}\n >\n {hasAccordionItems ? (\n <SidedrawerAccordionRoot type=\"single\">\n {children}\n </SidedrawerAccordionRoot>\n ) : (\n children\n )}\n </Box>\n )\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 SidedrawerClose: React.FC<\n React.ComponentProps<typeof ActionIcon>\n> = ({\n appearance = 'simple',\n label = 'close',\n size = 'md',\n theme = 'neutral',\n\n ...remainingProps\n}) => (\n <DialogClose asChild>\n <ActionIcon\n theme={theme}\n appearance={appearance}\n size={size}\n label={label}\n {...remainingProps}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport { fadeIn, fadeOut } from '~/utilities'\n\nexport const SidedrawerOverlay = styled(Overlay, {\n animationFillMode: 'forwards',\n bg: '$alpha600',\n cursor: 'pointer',\n height: '100vh',\n left: '0',\n position: 'fixed',\n top: '0',\n width: '100vw',\n zIndex: MAX_Z_INDEX - 1,\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 { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\nimport { styled } from '~/stitches'\nimport { slideInLeft, slideOutLeft } from '~/utilities'\n\nimport { SidedrawerOverlay } from './SidedrawerOverlay'\n\nconst StyledContent = styled(Content, {\n bg: 'white',\n boxShadow: '$2',\n display: 'flex',\n flexDirection: 'column',\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100%',\n maxWidth: '304px',\n width: '100%',\n zIndex: MAX_Z_INDEX,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideInLeft} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOutLeft} 250ms ease-out`\n }\n }\n})\n\nexport const SidedrawerContent: React.FC<\n React.ComponentProps<typeof StyledContent>\n> = ({ children, ...remainingProps }) => (\n <Portal>\n <SidedrawerOverlay data-testid=\"sidedrawer_overlay\" />\n <StyledContent role=\"navigation\" {...remainingProps}>\n {children}\n </StyledContent>\n </Portal>\n)\n","import { styled } from '~/stitches'\n\nexport const SidedrawerFooter = styled('footer', {\n alignItems: 'center',\n borderTop: '1px solid $tonal100',\n bottom: 0,\n boxShadow: '$3',\n display: 'flex',\n height: '$6',\n justifyContent: 'center',\n p: '$3',\n width: '100%'\n})\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 if (delayMethod === 'throttle') return throttle\n if (delayMethod === 'debounce') return debounce\n }, [delayMethod])\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 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 { CSS, styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\ntype TopBarBrandLogoProps = {\n src: string\n alt?: string\n css?: CSS\n}\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: TopBarBrandLogoProps): JSX.Element => {\n return (\n <Image\n className=\"topbar-brand-logo\"\n src={src}\n alt={alt}\n css={{\n mr: '$3',\n mb: '5px',\n ...css\n }}\n />\n )\n}\n\nTopBarBrandLogo.toString = () => '.topbar-brand-logo'\n\nexport const TopBarBrandName = styled(Text, {\n color: '$tonal400'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$tonal400',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import 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 { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\ninterface TopBarSubComponents {\n Brand: typeof TopBarBrand\n BrandLogo: typeof TopBarBrandLogo\n BrandName: typeof TopBarBrandName\n ActionIcon: typeof TopBarActionIcon\n Divider: typeof TopBarDivider\n}\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$tonal100' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: 'white',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n width: '100vw',\n top: '0',\n zIndex: 1,\n borderBottom: '1px solid $tonal100',\n transition: 'box-shadow .2s ease-out',\n variants: {\n hasScrolled: {\n true: {\n boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1);'\n }\n },\n size: {\n md: {\n height: '$6',\n [`& ${TopBarBrandLogo}`]: {\n '&[src$=\".svg\"]': {\n height: 24,\n width: 'auto'\n }\n }\n },\n lg: {\n height: '$7',\n [`& ${TopBarBrandLogo}`]: {\n '&[src$=\".svg\"]': {\n height: 32,\n width: 'auto'\n }\n }\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\ninterface TopBarProps extends StyledRootProps {\n css?: CSS\n}\n\nexport const TopBar: React.FC<TopBarProps> & TopBarSubComponents = ({\n size = 'md',\n ...props\n}) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot hasScrolled={!!scrollPositionY} size={size}>\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nTopBar.Brand = TopBarBrand\nTopBar.BrandLogo = TopBarBrandLogo\nTopBar.BrandName = TopBarBrandName\nTopBar.ActionIcon = TopBarActionIcon\nTopBar.Divider = TopBarDivider\n\nTopBar.displayName = 'TopBar'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TopBar } from '../top-bar'\n\nconst StyledHeader = styled('header', {\n '> div': {\n width: '100%'\n }\n})\n\nexport const SidedrawerHeader: React.FC<\n React.ComponentProps<typeof StyledHeader>\n> = ({ children, ...remainingProps }) => (\n <StyledHeader {...remainingProps}>\n <TopBar\n css={{\n mx: '$3'\n }}\n >\n {children}\n </TopBar>\n </StyledHeader>\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { sidedrawerItemStyles } from './Sidedrawer.styles'\n\nconst StyledLink = styled('a', sidedrawerItemStyles)\nconst StyledButton = styled('button', sidedrawerItemStyles)\n\ntype SidedrawerItemProps = {\n active?: boolean\n disabled?: boolean\n href?: string\n onClick?: () => void\n}\n\nexport const SidedrawerItem: React.FC<SidedrawerItemProps> = ({\n active,\n children,\n disabled,\n href,\n onClick,\n ...remainingProps\n}) => {\n if (href) {\n return (\n <StyledLink\n active={active}\n href={href}\n onClick={onClick}\n {...remainingProps}\n >\n {children}\n </StyledLink>\n )\n }\n\n return (\n <StyledButton\n active={active}\n disabled={disabled}\n onClick={onClick}\n {...remainingProps}\n >\n {children}\n </StyledButton>\n )\n}\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const SidedrawerTrigger = styled(Trigger, {})\n","import * as Dialog from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport {\n SidedrawerAccordionContent,\n SidedrawerAccordionItem,\n SidedrawerAccordionTrigger\n} from './SidedrawerAccordion'\nimport { SidedrawerBody } from './SidedrawerBody'\nimport { SidedrawerClose } from './SidedrawerClose'\nimport { SidedrawerContent } from './SidedrawerContent'\nimport { SidedrawerFooter } from './SidedrawerFooter'\nimport { SidedrawerHeader } from './SidedrawerHeader'\nimport { SidedrawerItem } from './SidedrawerItem'\nimport { SidedrawerTrigger } from './SidedrawerTrigger'\n\ntype SidedrawerSubComponents = {\n Accordion: typeof SidedrawerAccordionItem\n AccordionContent: typeof SidedrawerAccordionContent\n AccordionTrigger: typeof SidedrawerAccordionTrigger\n Body: typeof SidedrawerBody\n Close: typeof SidedrawerClose\n Content: typeof SidedrawerContent\n Footer: typeof SidedrawerFooter\n Header: typeof SidedrawerHeader\n Item: typeof SidedrawerItem\n Trigger: typeof SidedrawerTrigger\n}\n\nexport const Sidedrawer: React.FC<React.ComponentProps<typeof Dialog.Root>> &\n SidedrawerSubComponents = ({ children, ...remainingProps }) => (\n <Dialog.Root {...remainingProps}>{children}</Dialog.Root>\n)\n\nSidedrawer.Accordion = SidedrawerAccordionItem\nSidedrawer.AccordionContent = SidedrawerAccordionContent\nSidedrawer.AccordionTrigger = SidedrawerAccordionTrigger\nSidedrawer.Body = SidedrawerBody\nSidedrawer.Close = SidedrawerClose\nSidedrawer.Content = SidedrawerContent\nSidedrawer.Footer = SidedrawerFooter\nSidedrawer.Header = SidedrawerHeader\nSidedrawer.Item = SidedrawerItem\nSidedrawer.Trigger = SidedrawerTrigger\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: React.FC<SliderStepsProps> = ({\n min,\n max,\n steps = []\n}) => {\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: '$tonal300'\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: React.FC<SliderValueProps> = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}) => {\n return (\n <Text css={{ mt: '$4', color: '$tonal300', 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 } 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 '&[data-disabled]': { cursor: 'not-allowed', bg: '$tonal100' },\n variants: {\n theme: {\n light: {\n [`${StyledTrack}`]: { bg: '#fff' }\n },\n tonal: {\n [`${StyledTrack}`]: { bg: '$tonal200' }\n }\n }\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[data-disabled]': { bg: '$tonal200', cursor: 'not-allowed' }\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primaryMid',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primaryDark'\n },\n '&:focus': {\n outline: '2px solid $primaryMid',\n outlineOffset: '2px'\n },\n '&[data-disabled]': { bg: '$tonal200', cursor: 'not-allowed' }\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: React.FC<SliderFieldProps> = ({\n css,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}) => {\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}>\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 * 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: React.FC<StepperProviderProps> = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}) => {\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: React.FC<\n IStepperNavigateProps & Omit<React.ComponentProps<typeof Button>, 'children'>\n> = ({ label, children, ...rest }) => {\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: React.FC<\n IStepperNavigateProps & Omit<React.ComponentProps<typeof Button>, 'children'>\n> = ({ label, children, onClick, ...rest }) => {\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: '$tonal100',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$tonal100', color: '$tonal300' },\n active: {\n bg: 'white',\n color: '$primaryMid',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $tonal200',\n color: '$tonal600'\n },\n completed: { bg: '$primary', color: 'white' },\n reviewed: { bg: '$primaryMid', 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: '$tonal100' } },\n active: { '&:not(:last-child)::after': { bg: '$primary' } },\n success: { '&:not(:last-child)::after': { bg: '$success' } },\n viewed: { '&:not(:last-child)::after': { bg: '$tonal200' } }\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: '$primaryMid', color: 'white !important' },\n '& :last-child': { color: '$primaryMid' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$tonal400', color: '$tonal600' },\n '& :last-child': { color: '$tonal600' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$tonal400', color: '$tonal600' },\n '& :last-child': { color: '$tonal600' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary !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 $primary !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: '$tonal300', fontWeight: 400 },\n active: {\n color: '$primaryMid'\n },\n viewed: { color: '$tonal600' },\n completed: { color: '$primary' },\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: React.FC<IStepperStepsProps> = ({ css }) => {\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\nexport const Stepper: React.FC<IStepperProps> & {\n StepBack: typeof StepperStepBack\n StepForward: typeof StepperStepForward\n Steps: typeof StepperSteps\n} = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}) => {\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\nStepper.StepBack = StepperStepBack\nStepper.StepForward = StepperStepForward\nStepper.Steps = StepperSteps\n\nStepper.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$tonal200',\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: '$tonal300'\n },\n '&:focus': {\n outline: '2px solid $primary',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary'\n },\n '&[data-state=\"checked\"]:hover': {\n backgroundColor: '$primaryMid'\n },\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: React.FC<SwitchProps> = ({ size = 'md', ...rest }) => (\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 { 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 '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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\ninterface TabsTriggerProps\n extends React.ComponentProps<typeof StyledTabsTrigger> {\n value: string\n}\n\nexport const TabsTrigger: React.FC<TabsTriggerProps> = ({\n children,\n ...rest\n}) => (\n <StyledTabsTrigger {...rest}>\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 if (delayMethod === 'throttle') return throttle\n if (delayMethod === 'debounce') return debounce\n }, [delayMethod])\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 * 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 = (callback: () => void) => {\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 { 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: React.FC<\n React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n }\n> = ({ children, colorScheme = {}, ...rest }) => {\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=\"blue1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\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: React.FC<TabsProps> & {\n TriggerList: typeof TabsTriggerList\n Trigger: typeof TabsTrigger\n Content: typeof TabsContent\n} = ({ children, ...remainingProps }) => {\n return <StyledRoot {...remainingProps}>{children}</StyledRoot>\n}\n\nTabs.TriggerList = TabsTriggerList\nTabs.Trigger = TabsTrigger\nTabs.Content = TabsContent\n\nTabs.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 border: '1px solid $tonal400',\n borderRadius: '$0',\n boxSizing: 'border-box',\n color: '$tonal600',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n transition: 'all 75ms ease-out',\n width: '100%',\n '&:focus': {\n borderColor: '$primary',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$tonal100',\n color: '$tonal400',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$tonal300',\n opacity: 1\n },\n variants: {\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.FC<TextareaProps> = React.forwardRef(\n (props, ref) => <StyledTextarea {...props} ref={ref} />\n)\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 } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField: React.FC<TextareaFieldProps> = ({\n css = undefined,\n label,\n name,\n validation,\n prompt,\n description,\n ...remainingProps\n}) => {\n const { register } = useFormContext()\n const { error } = useFieldError(name)\n\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 label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import { Close, Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast as ToastInterface } from 'react-hot-toast/dist/core/types'\n\nimport { keyframes, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { Loader } from '../loader/Loader'\nimport { Text } from '../text/Text'\n\nexport const TOAST_WIDTH = 400\n\nconst slideIn = keyframes({\n '0%': { transform: `translate3d(0,-100%,0)`, opacity: 0 },\n '100%': { transform: `translate3d(0,0,0)`, opacity: 1 }\n})\nconst slideOut = keyframes({\n '0%': { transform: `translate3d(0,0,0)`, opacity: 1 },\n '100%': { transform: `translate3d(0,-100%,0)`, opacity: 0 }\n})\n\nconst ToastContainer = styled('div', {\n position: 'absolute',\n width: '100%',\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 StyledToast = styled('div', {\n pointerEvents: 'auto',\n alignItems: 'center',\n borderRadius: '$0',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n display: 'flex',\n minHeight: '$5',\n pl: '$4',\n position: 'relative',\n pr: '$6',\n py: '$4',\n transition: 'background-color 50ms ease-out',\n width: '100%',\n '@sm': {\n width: TOAST_WIDTH\n },\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n status: {\n blank: { bg: '$primary' },\n error: { bg: '$danger' },\n loading: { bg: '$primary' },\n success: { bg: '$success' }\n }\n }\n})\n\ntype ToastProps = React.ComponentProps<typeof StyledToast> &\n ToastInterface & {\n calculateOffset: (\n id: string,\n options?: {\n reverseOrder?: boolean\n margin?: number\n }\n ) => number\n updateHeight: (toastId: string, height: number) => void\n }\n\nexport const Toast: React.FC<ToastProps> = React.memo(\n ({\n ariaLive,\n height,\n id,\n message,\n role,\n type = 'blank',\n visible,\n calculateOffset,\n updateHeight\n }) => {\n const offset = calculateOffset(id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el) => {\n if (el && height === undefined) {\n updateHeight(id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastContainer visible={visible}>\n <StyledToast\n ref={ref}\n status={type}\n role={role}\n aria-live={ariaLive}\n style={{ transform: `translateY(${offset}px)` }}\n >\n {type === 'error' && (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} is={Error} />\n )}\n <Text>{message}</Text>\n {type === 'loading' ? (\n <Loader css={{ flex: '0 0 auto', ml: 'auto' }} />\n ) : (\n <ActionIcon\n css={{\n position: 'absolute',\n top: '$2',\n right: '$2',\n color: 'white',\n '&:hover,&:focus': { color: 'white', opacity: 0.5 }\n }}\n label=\"Close alert\"\n onClick={() => toast.dismiss(id)}\n >\n <Icon is={Close} />\n </ActionIcon>\n )}\n </StyledToast>\n </ToastContainer>\n )\n }\n)\n","import * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { styled } from '~/stitches'\n\nimport { Toast, TOAST_WIDTH } from './Toast'\n\nexport { default as toast } from 'react-hot-toast'\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nconst Container = styled('div', {\n left: '$2',\n position: 'fixed',\n top: '$2',\n right: '$2',\n zIndex: MAX_Z_INDEX,\n '@sm': {\n top: '$3',\n right: 'auto',\n left: `calc(50% - ${TOAST_WIDTH / 2}px)`\n }\n})\n\nexport const ToastProvider: React.FC = ({ children }) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <Container onMouseEnter={startPause} onMouseLeave={endPause}>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n calculateOffset={calculateOffset}\n updateHeight={updateHeight}\n {...toast}\n />\n ))}\n </Container>\n {children}\n </>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\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 bg: 'white',\n color: '$tonal400',\n border: '1px solid $tonal200',\n cursor: 'pointer',\n '&::before': {\n background: '$tonal200'\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: '$primaryMid'\n },\n '&:focus-visible': {\n ...focusVisibleStyleBlock(),\n '&[data-state=\"off\"]': {\n borderColor: '$tonal200 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, ${\n focusVisibleStyleBlock().boxShadow\n }`\n }\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&[data-state=\"on\"]': {\n color: '$primary',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon, StyledIcon } 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) => ({\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 [`& ${StyledIcon}`]: {\n flexShrink: 0\n },\n variants: {\n size: {\n sm: getSizeVariant('sm'),\n md: getSizeVariant('md'),\n lg: getSizeVariant('lg')\n },\n isIconOnly: {\n true: {}\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})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(({ size = 'md', 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 ref={ref} size={size} isIconOnly={isIconOnly} {...rest}>\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","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Stack } from '~/components/stack'\nimport { styled } from '~/stitches'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n gap?: number\n isFullWidth?: boolean\n wrap?: 'wrap' | 'no-wrap' | 'wrap-reverse'\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 },\n hasGap: {\n true: {\n [`& ${StyledItem}`]: { borderRadius: '$0' }\n },\n false: {\n borderRadius: '$0',\n bg: 'white',\n [`& ${StyledItem}`]: {\n bg: 'transparent',\n borderRadius: 0,\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 },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\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: '$0',\n borderBottomLeftRadius: '$0'\n },\n '&:last-child': {\n borderTopRightRadius: '$0',\n borderBottomRightRadius: '$0'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\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})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRoot> & RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap = false,\n isFullWidth,\n children,\n wrap = 'no-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 {...rest}\n >\n <Stack\n direction={direction}\n gap={hasGap && gap}\n align={false}\n wrap={wrap}\n >\n {children}\n </Stack>\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 * 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.ComponentPropsWithoutRef<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video = React.forwardRef<typeof StyledVideo, VideoProps>(\n ({ 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)\n\nVideo.displayName = 'Video'\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const BannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$0',\n overflow: 'hidden',\n color: '$foreground',\n variants: {\n emphasis: {\n highContrast: {\n background: '$base11',\n color: '$foreground7plus'\n },\n midContrast: {\n background: '$base3'\n },\n lowContrast: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<typeof BannerContainer>\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 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: React.FC<TBannerProviderProps> = ({\n emphasis,\n size,\n children\n}) => {\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","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\n\nimport { Dismissible } from '../dismissible'\nimport { BannerContainer, TBannerContainerProps } from './BannerContainer'\nimport { BannerProvider } from './BannerContext'\n\ntype TDismissibleProps = React.ComponentProps<typeof Dismissible>\n\ninterface IBannerProps extends TBannerContainerProps {\n colorScheme: TcolorScheme\n value?: TDismissibleProps['value']\n onDismiss?: TDismissibleProps['onDismiss']\n}\n\nexport const Banner: React.FC<IBannerProps> & {\n Dismiss: typeof Dismissible.Trigger\n} = ({\n children,\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n colorScheme,\n emphasis = 'lowContrast',\n value = 'dismiss-banner-regular',\n onDismiss\n}) => {\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild value={value} onDismiss={onDismiss}>\n <BannerContainer role=\"banner\" emphasis={emphasis}>\n <BannerProvider emphasis={emphasis} size={size}>\n {children}\n </BannerProvider>\n </BannerContainer>\n </Dismissible>\n </ColorScheme>\n )\n}\n\nBanner.Dismiss = Dismissible.Trigger\nBanner.displayName = 'Banner'\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: React.FC<\n React.ComponentProps<typeof Button>\n> = (props) => {\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 === 'highContrast' ? '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 { Stack } from '../../stack'\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\nexport const BannerRegularActions: React.FC<\n React.ComponentProps<typeof Stack>\n> = ({ children, ...props }) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[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 <Stack gap={gap} {...props}>\n {React.Children.map(children, (child, index) => {\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 </Stack>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\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: React.FC<\n React.ComponentProps<typeof Container>\n> = (props) => {\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 position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\nexport const BannerRegularDismiss: React.FC<\n React.ComponentProps<typeof ActionIcon>\n> = ({ label = 'dismiss', ...rest }) => {\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 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: React.FC<\n React.ComponentProps<typeof Heading>\n> = (props) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"sm\"\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: React.FC<\n React.ComponentProps<typeof Image>\n> = (props) => {\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: '$grey900',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n emphasis: {\n highContrast: {\n color: '$grey100'\n },\n midContrast: {},\n lowContrast: {}\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: React.FC<React.ComponentProps<typeof Text>> = (\n props\n) => {\n const { emphasis, size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n emphasis={emphasis}\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 { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nexport const BannerRegular: React.FC<React.ComponentProps<typeof Banner>> & {\n Content: typeof BannerRegularContent\n Heading: typeof BannerRegularHeading\n Text: typeof BannerRegularText\n Actions: typeof BannerRegularActions\n Image: typeof BannerRegularImage\n Button: typeof BannerRegularButton\n Dismiss: typeof BannerRegularDismiss\n} = (props) => {\n return <Banner {...props} />\n}\n\nBannerRegular.Content = BannerRegularContent\nBannerRegular.Heading = BannerRegularHeading\nBannerRegular.Text = BannerRegularText\nBannerRegular.Actions = BannerRegularActions\nBannerRegular.Image = BannerRegularImage\nBannerRegular.Button = BannerRegularButton\nBannerRegular.Dismiss = BannerRegularDismiss\n\nBannerRegular.displayName = 'BannerRegular'\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 }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n asWorkaround?: React.ElementType // (!?) `asWorkaround` rather than `as` because, it seems, when we extend this via `styled()` stitches overrides this component from the first argument for the value in `as`\n colorScheme?: TcolorScheme\n}\n\nexport const Tile = React.forwardRef<HTMLButtonElement, TTileProps>(\n ({ children, asWorkaround, colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"blue2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} as={asWorkaround} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n)\n\nTile.displayName = 'Tile'\n","import { Stack } from '~/components/stack'\n\nexport const TileGroup = Stack\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(Tile, {\n '&[data-disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([data-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 },\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> & { type?: string } & NavigatorActions\n\nexport const TileInteractive = React.forwardRef<\n HTMLButtonElement,\n TTileInteractiveProps\n>(({ onClick, href, type = 'button', ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n asWorkaround: 'a' as React.ElementType,\n href,\n onClick: undefined\n }\n : { asWorkaround: 'button' as React.ElementType, type, onClick }\n\n return <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\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(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: React.FC<TTileToggleGroupItem> = ({\n children,\n ...rest\n}) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem asWorkaround=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\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.forwardRef<\n HTMLDivElement,\n TTileToggleGroupRootProps\n>((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n align={false}\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"],"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","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInLeft","slideOutLeft","open","close","StyledContent","Content","AccordionContent","remainingProps","StyledItem","Item","AccordionItem","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","size","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","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","Tooltip","delayDuration","Portal","Provider","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","darken","ConditionallyWrapWithTooltip","hasTooltip","label","tooltipSide","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","slideIn","slideOut","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","props","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","Flex","FadeInOut","Dot","Loader","message","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","WithLoader","isLoading","getIconSize","getChildren","Button","onClick","StyledHeading","Heading","StyledStack","Stack","gap","direction","wrap","justify","align","textVariants","getTextVariant","noCapsize","StyledText","Text","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","s","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","StyledBadge","Badge","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","Carousel","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","Minus","Ok","INLINE_MESSAGE_THEMES","INLINE_MESSAGE_ICONS","OkCircle","Danger","Info","Error","InlineMessageContainer","InlineMessageIcon","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","as","required","StyledLi","StyledList","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","_a","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","_b","Link","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","StyledDivider","Divider","orientation","MarkdownThematicBreak","StyledLink","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","StorageEnum","StyledForm","PersistFormWrapper","persist","watch","setValue","options","params","exclude","allValues","include","useFormPersist","FormContent","formMethods","handleSubmit","onSubmit","onError","FormProvider","Form","defaultValues","validationMode","render","useForm","formContent","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","defaultChecked","checked","onCheckedChange","control","onChange","innerChecked","innerName","useController","newChecked","overflowElipsis","StyledChipContent","StyledChipIcon","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","index","ChipRootProvider","ChipRoot","asWorkaround","Chip","ChipGroup","DismissibleRootContext","DismissibleRootProvider","isDismissed","setIsDismissed","DismissibleRootInternal","onDismiss","DismissibleRoot","DefaultTrigger","DismissibleTrigger","Dismissible","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","Close","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ChipToggleGroupRoot","ChipToggleGroup","ComboboxInput","BaseComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","StyledCombobox","BaseCombobox","Combobox","ComboboxOptionText","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","data","setData","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","row","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledRow","TableRow","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TableHeaderCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","accWidth","tableHeaderCells","newColumnsCss","column","elementNumber","cssObject","TableStickyColumnsContainer","restProps","hasScroll","setHasScroll","scrollContainerRef","event","newHasScroll","StyledTable","Table","corners","tableComponent","DataTableBody","getRowModel","DataTable","DataTableDataCell","cell","flexRender","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","EmptyStateTitle","EmptyStateContainer","EmptyState","DataTableEmptyState","DataTableError","OptionallyVisuallyHiddenContainer","hidden","StyledInput","Input","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","INPUT_ICON","$","StyledSearchInput","SearchInput","defaultValue","onValueChange","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","newValue","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","handleChange","debounce","DataTableHead","sortable","getHeaderGroups","headerGroup","header","sortIcons","SortUp","SortDown","SortIcon","DataTableHeaderCell","sortDirection","isSortableTable","isDataColumn","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","totalRows","copyMerged","getColumnDisplayName","sortedColumn","col","getSortingString","DataTableRow","DataTableTable","isPending","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","StyledSlot","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","StyledSelect","Select","placeholder","DirectionButton","isNext","GotoPageSelect","gotoPage","pageCount","z","x","StyledNav","Pagination","getPageCount","previousPage","nextPage","setPageIndex","recordsCountFrom","recordsCountTo","isPaginationDisabled","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","labels","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","Popover","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","useDate","initialDate","dateFormat","setDate","useState","dateString","setDateString","inputDate","isDateString","parsedInputDate","DateInput","revalidate","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","register","trigger","DialogBackground","DialogClose","modalOverlayId","StyledDialogOverlay","StyledDialogContent","DialogContent","closeDialogText","element","StyledDialog","Dialog","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledStackContent","StackContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventHover","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","variant","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenu","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","fadeDuration","timer","itemValue","listCenter","triggerOffsetRight","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","NumberInput","min","max","step","initialValue","isDisabled","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","next","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","TRUNCATED_THRESHOLD","VisibleElementsAmount","getPaginationItemsToRender","currentPage","pagesCount","truncatedThreshold","isMaxVisibleElementCount","listOfPages","findNextAvailablePage","startPage","disabledPages","findPreviousAvailablePage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","visibleElementsCount","indicatedPages","onItemHover","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","goToPreviousPage","previousAvailablePage","goToNextPage","nextAvailablePage","StyledActionIcon","PaginationNextButton","paginationItemsInview","PaginationItem","isIndicated","isSelected","PaginationPopover","paginationItems","Ellypsis","PaginationPages","isTruncated","PaginationPreviousButton","paginationProps","PasswordInput","hidePasswordText","showPasswordText","isPasswordVisible","setIsPasswordVisible","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonField","FieldDescription","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","hasDismiss","setHasDismiss","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","SelectField","SidedrawerAccordionRoot","SidedrawerAccordionContent","SidedrawerAccordionItem","sidedrawerItemStyles","SidedrawerAccordionTrigger","Header","SidedrawerBody","hasAccordionItems","isValidElement","SidedrawerClose","SidedrawerOverlay","SidedrawerContent","SidedrawerFooter","useWindowScrollPosition","delay","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","throttle","handleScroll","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","Container","TopBar","scrollPositionY","StyledHeader","SidedrawerHeader","SidedrawerItem","SidedrawerTrigger","Sidedrawer","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","isControlled","prev","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","Stepper","count","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","createResizeObserver","callback","useResizeObserver","elements","onResize","observer","useSize","setSize","handleResize","useCallback","StyledContainer","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","TOAST_WIDTH","ToastContainer","StyledToast","Toast","ariaLive","height","role","visible","calculateOffset","updateHeight","toast","ToastProvider","toasts","handlers","useToaster","startPause","endPause","ToggleGroupItem","minHeight","px","spacingBetweenElements","getSizeVariant","ToggleGroupButton","isIconOnly","orientationToDirection","ToggleGroupRoot","hasGap","StyledVideo","ReactPlayer","Video","ratio","BannerContainer","BannerContext","useBannerContext","BannerProvider","emphasis","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","BannerRegularActions","propsToInject","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegular","StyledTile","Tile","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","TileToggleGroupRoot","TileToggleGroup"],"mappings":"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"}
|