@atom-learning/components 5.12.1 → 5.13.0-beta.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.
Files changed (183) hide show
  1. package/dist/components/accordion/Accordion.d.ts +2 -0
  2. package/dist/components/accordion/AccordionContent.d.ts +2 -0
  3. package/dist/components/accordion/AccordionItem.d.ts +2 -0
  4. package/dist/components/accordion/AccordionTrigger.d.ts +2 -0
  5. package/dist/components/action-icon/ActionIcon.d.ts +3 -1
  6. package/dist/components/alert-dialog/AlertDialog.d.ts +4 -0
  7. package/dist/components/alert-dialog/AlertDialogContent.d.ts +2 -0
  8. package/dist/components/avatar/Avatar.d.ts +4 -0
  9. package/dist/components/badge/Badge.d.ts +13 -1
  10. package/dist/components/badge/BadgeIcon.d.ts +4 -0
  11. package/dist/components/badge/BadgeText.d.ts +4 -0
  12. package/dist/components/banner/Banner.d.ts +2 -2
  13. package/dist/components/banner/BannerContainer.d.ts +4 -0
  14. package/dist/components/banner/banner-regular/BannerRegular.d.ts +108 -474
  15. package/dist/components/banner/banner-regular/BannerRegularContent.d.ts +4 -0
  16. package/dist/components/banner/banner-regular/BannerRegularDismiss.d.ts +6 -2
  17. package/dist/components/banner/banner-slim/BannerSlim.d.ts +108 -474
  18. package/dist/components/banner/banner-slim/BannerSlimContainer.d.ts +2 -0
  19. package/dist/components/banner/banner-slim/BannerSlimContent.d.ts +4 -0
  20. package/dist/components/banner/banner-slim/BannerSlimDismiss.d.ts +6 -2
  21. package/dist/components/box/Box.d.ts +2 -0
  22. package/dist/components/button/Button.d.ts +2 -0
  23. package/dist/components/calendar/Day.d.ts +2 -0
  24. package/dist/components/carousel/Carousel.d.ts +6 -0
  25. package/dist/components/carousel/CarouselPagination.d.ts +2 -0
  26. package/dist/components/carousel/CarouselSlide.d.ts +2 -0
  27. package/dist/components/carousel/CarouselSlider.d.ts +2 -0
  28. package/dist/components/checkbox/Checkbox.d.ts +2 -0
  29. package/dist/components/checkbox/Checkbox.js +1 -1
  30. package/dist/components/checkbox/Checkbox.js.map +1 -1
  31. package/dist/components/checkbox-group/CheckboxGroup.d.ts +96 -90
  32. package/dist/components/checkbox-tree/CheckboxTree.d.ts +352 -344
  33. package/dist/components/chip/Chip.d.ts +14 -0
  34. package/dist/components/chip-dismissible-group/ChipDismissibleGroupItem.d.ts +6 -0
  35. package/dist/components/chip-toggle-group/ChipToggleGroupItem.d.ts +6 -0
  36. package/dist/components/combobox/Combobox.d.ts +10 -0
  37. package/dist/components/combobox/ComboboxInput.d.ts +2 -0
  38. package/dist/components/combobox/ComboboxList.d.ts +2 -0
  39. package/dist/components/combobox/ComboboxOption.d.ts +2 -0
  40. package/dist/components/combobox/ComboboxPopover.d.ts +2 -0
  41. package/dist/components/data-table/DataTable.d.ts +56 -26
  42. package/dist/components/data-table/DataTableHead.d.ts +3 -1
  43. package/dist/components/data-table/DataTableHead.js +1 -1
  44. package/dist/components/data-table/DataTableHead.js.map +1 -1
  45. package/dist/components/data-table/DataTableHeaderCell.d.ts +3 -1
  46. package/dist/components/data-table/DataTableHeaderCell.js +1 -1
  47. package/dist/components/data-table/DataTableHeaderCell.js.map +1 -1
  48. package/dist/components/data-table/DataTableLoading.d.ts +2 -0
  49. package/dist/components/data-table/DataTableRow.js +1 -1
  50. package/dist/components/data-table/DataTableRow.js.map +1 -1
  51. package/dist/components/data-table/DataTableRowSelectionCheckbox.js +1 -1
  52. package/dist/components/data-table/DataTableRowSelectionCheckbox.js.map +1 -1
  53. package/dist/components/data-table/DataTableTable.d.ts +2 -0
  54. package/dist/components/data-table/DataTableTable.js +1 -1
  55. package/dist/components/data-table/DataTableTable.js.map +1 -1
  56. package/dist/components/data-table/pagination/Pagination.d.ts +2 -0
  57. package/dist/components/dialog/Dialog.d.ts +12 -2
  58. package/dist/components/dialog/DialogBackground.d.ts +4 -0
  59. package/dist/components/dialog/DialogClose.d.ts +2 -0
  60. package/dist/components/dialog/DialogContent.d.ts +2 -0
  61. package/dist/components/dismissible/index.d.ts +2 -2
  62. package/dist/components/dismissible-group/index.d.ts +3 -3
  63. package/dist/components/divider/Divider.d.ts +2 -0
  64. package/dist/components/drawer/Drawer.d.ts +8 -0
  65. package/dist/components/drawer/DrawerContent.d.ts +2 -0
  66. package/dist/components/drawer/DrawerFooter.d.ts +2 -0
  67. package/dist/components/drawer/DrawerHeader.d.ts +2 -0
  68. package/dist/components/drawer/DrawerMain.d.ts +2 -0
  69. package/dist/components/drawer/DrawerOverlay.d.ts +2 -0
  70. package/dist/components/drawer/DrawerTrigger.d.ts +2 -0
  71. package/dist/components/dropdown-menu/DropdownMenu.d.ts +10 -0
  72. package/dist/components/dropdown-menu/DropdownMenuContent.d.ts +2 -0
  73. package/dist/components/dropdown-menu/DropdownMenuItem.d.ts +2 -0
  74. package/dist/components/dropdown-menu/DropdownMenuSeparator.d.ts +2 -0
  75. package/dist/components/dropdown-menu/DropdownMenuTrigger.d.ts +2 -0
  76. package/dist/components/empty-state/EmptyState.d.ts +14 -0
  77. package/dist/components/empty-state/EmptyStateBody.d.ts +4 -0
  78. package/dist/components/empty-state/EmptyStateImage.d.ts +4 -0
  79. package/dist/components/empty-state/EmptyStateTitle.d.ts +2 -0
  80. package/dist/components/flex/Flex.d.ts +2 -0
  81. package/dist/components/form/Form.d.ts +2 -0
  82. package/dist/components/grid/Grid.d.ts +2 -0
  83. package/dist/components/heading/Heading.d.ts +2 -0
  84. package/dist/components/icon/Icon.d.ts +2 -0
  85. package/dist/components/image/Image.d.ts +2 -0
  86. package/dist/components/inline-message/InlineMessage.d.ts +4 -0
  87. package/dist/components/input/Input.d.ts +6 -0
  88. package/dist/components/keyboard-shortcut/KeyboardShortcut.d.ts +4 -0
  89. package/dist/components/keyboard-shortcut/index.d.ts +8 -2
  90. package/dist/components/label/Label.d.ts +2 -0
  91. package/dist/components/link/Link.d.ts +2 -0
  92. package/dist/components/list/List.d.ts +4 -0
  93. package/dist/components/markdown-content/MarkdownContent.d.ts +4 -0
  94. package/dist/components/markdown-content/components/MarkdownEmphasis.d.ts +2 -0
  95. package/dist/components/navigation/NavigationMenu.d.ts +18 -0
  96. package/dist/components/navigation/NavigationMenuDropdownContent.d.ts +2 -0
  97. package/dist/components/navigation/NavigationMenuDropdownItem.d.ts +4 -0
  98. package/dist/components/navigation/NavigationMenuDropdownTrigger.d.ts +2 -0
  99. package/dist/components/navigation/NavigationMenuLink.d.ts +2 -0
  100. package/dist/components/navigation-menu-vertical/NavigationMenuVertical.d.ts +184 -162
  101. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.d.ts +2 -0
  102. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.d.ts +2 -0
  103. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalIcon.d.ts +4 -0
  104. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItem.d.ts +2 -0
  105. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalLink.d.ts +2 -0
  106. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalList.d.ts +2 -0
  107. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalText.d.ts +4 -0
  108. package/dist/components/number-input/NumberInputStepper.d.ts +6 -2
  109. package/dist/components/pagination/PaginationNextButton.d.ts +6 -2
  110. package/dist/components/pagination/PaginationPreviousButton.d.ts +6 -2
  111. package/dist/components/popover/Popover.d.ts +4 -0
  112. package/dist/components/popover/PopoverContent.d.ts +2 -0
  113. package/dist/components/progress-bar/ProgressBar.d.ts +2 -0
  114. package/dist/components/radio-button/RadioButton.d.ts +2 -0
  115. package/dist/components/radio-button/RadioButtonGroup.d.ts +2 -0
  116. package/dist/components/radio-button-field/RadioButtonField.d.ts +2 -0
  117. package/dist/components/radio-card/RadioCard.d.ts +2 -0
  118. package/dist/components/section-message/SectionMessage.d.ts +4 -0
  119. package/dist/components/segmented-control/SegmentedControl.d.ts +25 -9
  120. package/dist/components/segmented-control/SegmentedControlContent.d.ts +2 -0
  121. package/dist/components/segmented-control/SegmentedControlDescription.d.ts +4 -0
  122. package/dist/components/segmented-control/SegmentedControlHeading.d.ts +4 -0
  123. package/dist/components/segmented-control/SegmentedControlItem.d.ts +4 -0
  124. package/dist/components/segmented-control/SegmentedControlRoot.d.ts +10 -0
  125. package/dist/components/select/Select.d.ts +2 -0
  126. package/dist/components/side-bar/SideBar.d.ts +16 -0
  127. package/dist/components/side-bar/SideBarComponents.d.ts +15 -1
  128. package/dist/components/slider/Slider.d.ts +4 -0
  129. package/dist/components/sortable/Handle.d.ts +6 -2
  130. package/dist/components/sortable/index.d.ts +3 -3
  131. package/dist/components/spacer/Spacer.d.ts +2 -0
  132. package/dist/components/stepper/StepperStepBullet.d.ts +4 -0
  133. package/dist/components/stepper/StepperStepContainer.d.ts +4 -0
  134. package/dist/components/stepper/StepperStepLabel.d.ts +5 -1
  135. package/dist/components/switch/Switch.d.ts +2 -0
  136. package/dist/components/table/Table.d.ts +17 -1
  137. package/dist/components/table/Table.js +1 -1
  138. package/dist/components/table/Table.js.map +1 -1
  139. package/dist/components/table/TableBody.d.ts +2 -0
  140. package/dist/components/table/TableCell.d.ts +2 -0
  141. package/dist/components/table/TableCell.js +1 -1
  142. package/dist/components/table/TableCell.js.map +1 -1
  143. package/dist/components/table/TableFooter.d.ts +2 -0
  144. package/dist/components/table/TableFooterCell.d.ts +2 -0
  145. package/dist/components/table/TableHeader.d.ts +3 -1
  146. package/dist/components/table/TableHeaderCell.d.ts +2 -0
  147. package/dist/components/table/TableHeaderCell.js +1 -1
  148. package/dist/components/table/TableHeaderCell.js.map +1 -1
  149. package/dist/components/table/TableRow.d.ts +2 -0
  150. package/dist/components/tabs/Tabs.d.ts +8 -0
  151. package/dist/components/tabs/TabsContent.d.ts +2 -0
  152. package/dist/components/tabs/TabsTrigger.d.ts +2 -0
  153. package/dist/components/tabs/TabsTriggerList.d.ts +2 -0
  154. package/dist/components/text/Text.d.ts +2 -0
  155. package/dist/components/textarea/Textarea.d.ts +2 -0
  156. package/dist/components/tile/Tile.d.ts +2 -0
  157. package/dist/components/tile/TileGroup.d.ts +2 -0
  158. package/dist/components/tile-interactive/TileInteractive.d.ts +4 -0
  159. package/dist/components/tile-toggle-group/TileToggleGroupItem.d.ts +6 -0
  160. package/dist/components/toast/Toast.d.ts +4 -0
  161. package/dist/components/toggle-group/ToggleGroupButton.d.ts +4 -0
  162. package/dist/components/toggle-group/ToggleGroupItem.d.ts +4 -0
  163. package/dist/components/toggle-group/ToggleGroupRoot.d.ts +2 -0
  164. package/dist/components/toggle-group/index.d.ts +14 -2
  165. package/dist/components/tooltip/Tooltip.d.ts +4 -0
  166. package/dist/components/tooltip/TooltipContent.d.ts +2 -0
  167. package/dist/components/top-bar/TopBar.d.ts +12 -2
  168. package/dist/components/top-bar/TopBarBrand.d.ts +6 -0
  169. package/dist/components/tree/Tree.d.ts +267 -243
  170. package/dist/components/tree/TreeCollapsible.d.ts +2 -0
  171. package/dist/components/tree/TreeCollapsibleContent.d.ts +2 -0
  172. package/dist/components/tree/TreeIcon.d.ts +4 -0
  173. package/dist/components/tree/TreeItemContent.d.ts +2 -0
  174. package/dist/components/tree/TreeListItem.d.ts +2 -0
  175. package/dist/components/video/Video.d.ts +2 -0
  176. package/dist/docgen.json +1 -1
  177. package/dist/experiments/color-scheme/ColorScheme.d.ts +2 -0
  178. package/dist/index.cjs.js +1 -1
  179. package/dist/index.cjs.js.map +1 -1
  180. package/dist/stitches.d.ts +22 -0
  181. package/dist/utilities/no-overflow-wrapper/NoOverflowWrapper.d.ts +2 -0
  182. package/package.json +2 -2
  183. package/CHANGELOG.md +0 -221
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/stitches.ts","../src/components/box/Box.tsx","../src/utilities/css-wrapper/CSSWrapper.tsx","../src/utilities/style/capsize.ts","../src/utilities/style/encode-background-icon.ts","../src/utilities/style/keyframe-animations.ts","../src/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../src/utilities/style/get-icon-size.ts","../src/utilities/no-overflow-wrapper/NoOverflowWrapper.tsx","../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/components/tooltip/TooltipContent.tsx","../src/components/tooltip/Tooltip.tsx","../src/utilities/optional-tooltip-wrapper/OptionalTooltipWrapper.tsx","../src/utilities/uri/index.ts","../src/components/action-icon/ActionIcon.constants.ts","../src/components/action-icon/ActionIcon.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialog.tsx","../src/utilities/hooks/useIsMountedRef.ts","../src/components/flex/Flex.tsx","../src/components/loader/Loader.tsx","../src/components/button/Button.tsx","../src/components/heading/Heading.tsx","../src/components/text/Text.tsx","../src/components/alert-dialog/alert-context/AlertDialogIcon.tsx","../src/components/alert-dialog/alert-context/AlertDialog.tsx","../src/components/alert-dialog/alert-context/reducer.ts","../src/components/alert-dialog/alert-context/AlertContext.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/image/Image.tsx","../src/components/avatar/AvatarPlaceholder.tsx","../src/components/avatar/AvatarInitial.tsx","../src/components/avatar/AvatarImage.tsx","../src/components/avatar/Avatar.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/badge/Badge.context.tsx","../src/components/badge/BadgeIcon.tsx","../src/utilities/hooks/useResizeObserver.ts","../src/components/badge/BadgeText.tsx","../src/components/badge/stitches.badge.colorscheme.config.ts","../src/components/badge/Badge.tsx","../src/components/dismissible/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../src/components/banner/BannerContext.tsx","../src/components/banner/Banner.tsx","../src/components/banner/banner-regular/BannerRegularButton.tsx","../src/components/banner/banner-regular/BannerRegularActions.tsx","../src/components/banner/BannerContainer.tsx","../src/components/banner/banner-regular/BannerRegularContainer.tsx","../src/components/banner/banner-regular/BannerRegularContent.tsx","../src/components/banner/banner-regular/BannerRegularDismiss.tsx","../src/components/banner/banner-regular/BannerRegularHeading.tsx","../src/components/banner/banner-regular/BannerRegularImage.tsx","../src/components/banner/banner-regular/BannerRegularText.tsx","../src/components/banner/banner-regular/BannerRegular.tsx","../src/components/banner/banner-slim/BannerSlimActions.tsx","../src/components/banner/banner-slim/BannerSlimButton.tsx","../src/components/banner/banner-slim/BannerSlimContainer.tsx","../src/components/banner/banner-slim/BannerSlimContent.tsx","../src/components/banner/banner-slim/BannerSlimDismiss.tsx","../src/components/banner/banner-slim/BannerSlimImage.tsx","../src/components/banner/banner-slim/BannerSlimText.tsx","../src/components/banner/banner-slim/BannerSlim.tsx","../src/components/carousel/CarouselArrows.tsx","../src/components/carousel/CarouselPagination.tsx","../src/components/carousel/CarouselSlide.tsx","../src/components/carousel/CarouselSlider.tsx","../src/components/carousel/Carousel.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox-group/context/CheckboxGroupMounted.context.tsx","../src/components/checkbox-group/context/CheckboxGroupChecked.context.tsx","../src/components/checkbox-group/CheckboxGroupAllItem.tsx","../src/components/checkbox-group/CheckboxGroupItem.tsx","../src/components/checkbox-group/CheckboxGroupSub.tsx","../src/components/checkbox-group/CheckboxGroup.tsx","../src/components/tree/TreeListItem.tsx","../src/components/tree/TreeCollapsible.tsx","../src/components/tree/TreeList.tsx","../src/components/tree/TreeCollapsibleContent.tsx","../src/components/tree/TreeIcon.tsx","../src/components/tree/TreeText.tsx","../src/components/tree/TreeItemContent.tsx","../src/components/tree/TreeCollapsibleTrigger.tsx","../src/components/tree/TreeItem.tsx","../src/components/tree/Tree.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsible.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleContent.tsx","../src/components/checkbox-tree/CheckboxTreeItemContent.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleTrigger.tsx","../src/components/checkbox-tree/CheckboxTreeItem.tsx","../src/components/checkbox-tree/CheckboxTree.tsx","../src/components/inline-message/InlineMessage.config.ts","../src/components/inline-message/InlineMessage.tsx","../src/components/label/Label.tsx","../src/components/link/Link.tsx","../src/components/field-wrapper/FieldDescription.tsx","../src/components/field-wrapper/FieldWrapper.tsx","../src/components/radio-button/RadioButton.tsx","../src/components/radio-button/RadioButtonGroup.tsx","../src/components/field-wrapper/InlineFieldWrapper.tsx","../src/components/form/useFormCustomContext.ts","../src/components/form/Form.tsx","../src/components/form/useFieldError.ts","../src/components/checkbox-field/CheckboxField.tsx","../src/components/chip/Chip.tsx","../src/components/chip/ChipGroup.tsx","../src/components/dismissible-group/DismissibleGroupRoot.tsx","../src/components/dismissible-group/DismissibleGroupItem.tsx","../src/components/dismissible-group/index.ts","../src/components/chip-dismissible-group/ChipDismissibleGroupItem.tsx","../src/components/chip-dismissible-group/ChipDismissibleGroupRoot.tsx","../src/components/chip-dismissible-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupItem.tsx","../src/utilities/radix-overrides/toggle-group/ToggleGroupRoot.tsx","../src/utilities/radix-overrides/toggle-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupRoot.tsx","../src/components/chip-toggle-group/index.ts","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxOption.tsx","../src/components/combobox/ComboboxPopover.tsx","../src/components/combobox/Combobox.tsx","../src/components/input/Input.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.tsx","../src/components/create-password-field/CreatePasswordField.tsx","../src/components/data-table/DataTable.types.ts","../src/components/data-table/getNewAsyncData.ts","../src/components/data-table/usePagination.ts","../src/components/data-table/useSorting.ts","../src/components/data-table/DataTableContext.tsx","../src/components/table/TableBody.tsx","../src/components/table/TableCell.tsx","../src/components/table/TableFooter.tsx","../src/components/table/TableFooterCell.tsx","../src/components/table/TableHeader.tsx","../src/components/table/TableHeaderCell.tsx","../src/components/table/TableRow.tsx","../src/components/table/useStickyColumnsCss.ts","../src/components/table/TableStickyColumnsContainer.tsx","../src/components/table/Table.tsx","../src/components/data-table/DataTableBody.tsx","../src/components/divider/Divider.tsx","../src/components/data-table/DataTableBulkActions.tsx","../src/components/data-table/DataTableBulkActionsSelectedRowActions.tsx","../src/components/data-table/DataTableBulkActionsFloating.tsx","../src/components/data-table/DataTableDataCell.tsx","../src/components/empty-state/EmptyState.context.tsx","../src/components/empty-state/EmptyStateBody.tsx","../src/components/empty-state/EmptyStateImage.tsx","../src/components/empty-state/EmptyStateTitle.tsx","../src/components/empty-state/EmptyState.tsx","../src/components/data-table/DataTableEmptyState.tsx","../src/components/data-table/DataTableError.tsx","../src/utilities/optional-visually-hidden-wrapper/OptionalVisuallyHiddenWrapper.tsx","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.tsx","../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx","../src/components/data-table/DataTableHead.tsx","../src/components/data-table/DataTableHeaderCell.tsx","../src/components/data-table/DataTableLoading.tsx","../src/components/data-table/DataTableMetaData.tsx","../src/components/data-table/DataTableRowSelectionCheckbox.tsx","../src/components/data-table/DataTableRow.tsx","../src/components/data-table/DataTableTable.tsx","../src/components/sortable/Handle.tsx","../src/components/sortable/SortableHandle.tsx","../src/components/sortable/SortableItem.tsx","../src/components/sortable/SortableRoot.tsx","../src/components/sortable/index.ts","../src/components/data-table/drag-and-drop/DragAndDropTableRow.tsx","../src/components/data-table/drag-and-drop/DragAndDropTableBody.tsx","../src/components/data-table/drag-and-drop/DragAndDropTable.tsx","../src/components/pagination/pagination.constants.ts","../src/components/pagination/pagination.helper.ts","../src/components/pagination/pagination-context/PaginationContext.tsx","../src/components/pagination/usePagination.tsx","../src/components/pagination/PaginationNextButton.tsx","../src/components/pagination/PaginationPage.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/PaginationItems.tsx","../src/components/pagination/Pagination.tsx","../src/components/data-table/pagination/Pagination.tsx","../src/components/data-table/DataTable.tsx","../src/components/calendar/constants.ts","../src/components/calendar/Day.tsx","../src/components/calendar/Calendar.tsx","../src/components/popover/PopoverContent.tsx","../src/components/popover/Popover.tsx","../src/components/date-input/constants.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/utilities/style/backdrop-overlay.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogFooter.tsx","../src/components/dialog/DialogHeading.tsx","../src/components/dialog/Dialog.tsx","../src/components/drawer/Drawer.context.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerOverlay.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerMain.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/Drawer.tsx","../src/components/dropdown-menu/DropdownMenuContent.tsx","../src/components/dropdown-menu/DropdownMenuItem.tsx","../src/components/dropdown-menu/DropdownMenuLinkItem.tsx","../src/components/dropdown-menu/DropdownMenuSeparator.tsx","../src/components/dropdown-menu/DropdownMenuTrigger.tsx","../src/components/dropdown-menu/DropdownMenu.tsx","../src/components/file-input/FileInput.tsx","../src/components/grid/Grid.tsx","../src/components/input-field/InputField.tsx","../src/components/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/markdown-content/components/MarkdownThematicBreak.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/utilities/event/preventEvent.ts","../src/components/navigation/NavigationMenuDropdownContent.tsx","../src/components/navigation/NavigationMenu.styles.ts","../src/components/navigation/NavigationMenuDropdownTrigger.tsx","../src/components/navigation/NavigationMenuDropdown.tsx","../src/components/navigation/NavigationMenuLink.tsx","../src/components/navigation/NavigationMenuDropdownItem.tsx","../src/components/navigation/stitches.navigationMenu.colorscheme.config.ts","../src/components/navigation/NavigationMenu.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordion.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalList.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVertical.styles.ts","../src/components/navigation-menu-vertical/NavigationMenuVerticalIcon.tsx","../src/components/side-bar/SideBarComponents.tsx","../src/components/side-bar/SideBarContext.tsx","../src/components/side-bar/SideBar.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalText.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx","../src/components/navigation-menu-vertical/stitches.navigationMenuVertical.colorscheme.config.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.tsx","../src/components/notification-badge/NotificationBadge.tsx","../src/components/number-input/NumberInputStepper.tsx","../src/components/number-input/NumberInput.tsx","../src/components/number-input-field/NumberInputField.tsx","../src/components/progress-bar/ProgressBar.tsx","../src/components/radio-button-field/RadioField.tsx","../src/components/radio-button-field/RadioButtonField.tsx","../src/components/radio-card/RadioCard.tsx","../src/components/radio-card/RadioCardGroup.tsx","../src/components/search-field/SearchField.tsx","../src/components/section-message/SectionMessageContext.tsx","../src/components/section-message/SectionMessageDescription.tsx","../src/components/section-message/SectionMessageDismiss.tsx","../src/components/section-message/SectionMessageIcon.tsx","../src/components/section-message/SectionMessageLayout.tsx","../src/components/section-message/SectionMessageTitle.tsx","../src/components/section-message/SectionMessage.tsx","../src/components/select/Select.tsx","../src/components/select-field/SelectField.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.tsx","../src/components/spacer/Spacer.tsx","../src/components/stepper/stepper-context/StepperContext.tsx","../src/components/stepper/StepperStepBack.tsx","../src/components/stepper/StepperStepForward.tsx","../src/components/stepper/StepperStepBullet.tsx","../src/components/stepper/StepperStepContainer.tsx","../src/components/stepper/StepperStepLabel.tsx","../src/components/stepper/types.ts","../src/components/stepper/StepperSteps.tsx","../src/components/stepper/Stepper.tsx","../src/components/switch/Switch.tsx","../src/components/tabs/TabsContent.tsx","../src/components/tabs/TabsTrigger.tsx","../src/utilities/hooks/useScrollPosition.ts","../src/utilities/hooks/useSize.ts","../src/components/tabs/TabsTriggerList.tsx","../src/components/tabs/Tabs.tsx","../src/components/textarea/Textarea.tsx","../src/components/textarea-field/TextareaField.tsx","../src/components/tile/Tile.tsx","../src/components/tile/TileGroup.tsx","../src/components/tile-interactive/TileInteractive.tsx","../src/components/tile-toggle-group/TileToggleGroupItem.tsx","../src/components/tile-toggle-group/TileToggleGroupRoot.tsx","../src/components/tile-toggle-group/index.ts","../src/components/toast/ToastProvider.tsx","../src/components/toast/ToastCloseButton.tsx","../src/components/toast/ToastIcon.tsx","../src/components/toast/Toast.tsx","../src/components/toggle-group/ToggleGroupItem.tsx","../src/components/toggle-group/ToggleGroupButton.tsx","../src/components/toggle-group/ToggleGroupRoot.tsx","../src/components/toggle-group/index.ts","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/stitches.topBar.colorscheme.config.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/video/Video.tsx","../src/components/keyboard-shortcut/KeyboardShortcut.tsx","../src/components/keyboard-shortcut/index.ts","../src/components/segmented-control/SegmentedControlContext.tsx","../src/components/segmented-control/SegmentedControlBadge.tsx","../src/components/segmented-control/SegmentedControlContent.tsx","../src/components/segmented-control/SegmentedControlDescription.tsx","../src/components/segmented-control/SegmentedControlHeading.tsx","../src/components/segmented-control/SegmentedControlIcon.tsx","../src/components/segmented-control/SegmentedControlItem.tsx","../src/components/segmented-control/SegmentedControlItemList.tsx","../src/components/segmented-control/SegmentedControlRoot.tsx","../src/components/segmented-control/SegmentedControl.tsx","../src/components/file-drop/FileDropContext.ts","../src/components/file-drop/FileDrop.tsx","../src/components/file-drop/useFileDrop.ts"],"sourcesContent":["import type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@atom-learning/stitches-react'\nimport { createStitches, defaultThemeMap } from '@atom-learning/stitches-react'\nimport type { Theme } from '@atom-learning/theme/lib/theme-atom'\nimport * as atomTheme from '@atom-learning/theme/lib/theme-atom'\nimport { themeMap } from '@atom-learning/theme/theme-map'\n\nexport const utils = {\n bg: (value: PropertyValue<'background'>) => ({\n background: value\n }),\n\n size: (value: ScaleValue<'size'> | number | string) => ({\n height: value,\n width: value\n }),\n\n p: (value: ScaleValue<'space'> | number | string) => ({\n padding: value\n }),\n pt: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value\n }),\n pr: (value: ScaleValue<'space'> | number | string) => ({\n paddingRight: value\n }),\n pb: (value: ScaleValue<'space'> | number | string) => ({\n paddingBottom: value\n }),\n pl: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value\n }),\n px: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value,\n paddingRight: value\n }),\n py: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value,\n paddingBottom: value\n }),\n\n m: (value: ScaleValue<'space'> | number | string) => ({\n margin: value\n }),\n mt: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value\n }),\n mr: (value: ScaleValue<'space'> | number | string) => ({\n marginRight: value\n }),\n mb: (value: ScaleValue<'space'> | number | string) => ({\n marginBottom: value\n }),\n ml: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value\n }),\n mx: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value,\n marginRight: value\n }),\n my: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value,\n marginBottom: value\n })\n}\n\nexport const media = {\n sm: '(min-width: 550px)',\n md: '(min-width: 800px)',\n lg: '(min-width: 1100px)',\n xl: '(min-width: 1350px)',\n reducedMotion: '(prefers-reduced-motion)',\n allowMotion: '(prefers-reduced-motion: no-preference)',\n hover: '(hover: hover)'\n}\n\nconst stitchesConfig = createStitches({\n theme: atomTheme as Theme,\n themeMap: {\n ...defaultThemeMap,\n ...themeMap\n },\n utils,\n media\n})\n\nexport const {\n css,\n getCssText,\n createTheme,\n globalCss,\n keyframes,\n styled,\n theme\n} = stitchesConfig\n\nexport type CSS = StitchesCSS<typeof stitchesConfig>\n","import { 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 { 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","import { keyframes } from '~/stitches'\n\nexport const slideUpAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideRightAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(-2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\nexport const slideDownAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(-2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideLeftAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\n\nexport const fadeIn = keyframes({\n '0%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\nexport const fadeOut = keyframes({\n '0%': { opacity: 1 },\n '100%': { opacity: 0 }\n})\n\nexport const slideInOut = ({\n outPosition = { x: 0, y: 0 },\n inPosition = { x: 0, y: 0 }\n}: {\n outPosition?: { x: string | number; y: string | number }\n inPosition?: { x: string | number; y: string | number }\n}): {\n in: ReturnType<typeof keyframes>\n out: ReturnType<typeof keyframes>\n} => {\n const slideIn = keyframes({\n '0%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n },\n '100%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n }\n })\n\n const slideOut = keyframes({\n '0%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n },\n '100%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n }\n })\n\n return {\n in: slideIn,\n out: slideOut\n }\n}\n","/*\n * Utility function to allow for overriding responsive variants using logic provided via the `overrideFunction` argument.\n *\n * It was developed out of a design requirement to override and pass through size properties to the <Icon /> component; depending\n * on the size of its parent component. It could be used for various other props where we want to tweak the value but\n * maintain the flexibility of a stitches variant property (which allows for use either via a string or a breakpoint object)\n * Documentation on stitches responsive variants: https://stitches.dev/docs/breakpoints#responsive-variants\n *\n */\nexport const overrideStitchesVariantValue = (\n prop: any,\n overrideFunction: (any) => any\n) => {\n let overrideValue\n switch (typeof prop) {\n case 'object':\n overrideValue = {}\n Object.keys(prop).forEach((breakpoint) => {\n const propAtBreakpoint = prop[breakpoint]\n overrideValue[breakpoint] = propAtBreakpoint\n ? overrideFunction(propAtBreakpoint)\n : propAtBreakpoint\n })\n break\n default:\n overrideValue = overrideFunction(prop)\n }\n\n return overrideValue\n}\n","import { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst toIconSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const getFieldIconSize = (size: any) =>\n overrideStitchesVariantValue(size, (s) => toIconSize[s])\n","import { styled } from '~/stitches'\n\nexport const NoOverflowWrapper = styled('div', {\n size: '100%',\n borderRadius: 'inherit',\n overflow: 'hidden'\n})\n\nNoOverflowWrapper.displayName = 'NoOverflowWrapper'\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities'\n\nconst open = keyframes({\n from: { height: 0 },\n to: { height: 'var(--radix-accordion-content-height)' }\n})\n\nconst close = keyframes({\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: 0 }\n})\n\nconst StyledContent = styled(Content, {\n border: 0,\n width: '100%',\n bg: '$base1',\n overflow: 'hidden',\n '&[data-state=\"open\"]': { borderRadius: '0 0 $0 $0' },\n\n '@allowMotion': {\n '&[data-state=\"open\"]': { animation: `${open} 300ms ease-out` },\n '&[data-state=\"closed\"]': { animation: `${close} 300ms ease-out` }\n }\n})\n\nexport const AccordionContent = ({\n children,\n css,\n ...remainingProps\n}: React.ComponentProps<typeof StyledContent>) => (\n <StyledContent {...remainingProps}>\n <CSSWrapper css={css}>{children}</CSSWrapper>\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const AccordionItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { createTheme } from '~/stitches'\n\nexport const colorSchemes = {}\n\nconst generateColors = ({ prefix, colorName, color0 = '' }) => {\n const colors = {}\n let i = 1\n if (color0) {\n colors[`${prefix}${i}`] = color0\n i++\n }\n let k = 1\n for (i; i <= 11; i++) {\n colors[`${prefix}${i}`] = `$${colorName}${k * 100}`\n k++\n }\n return colors\n}\n\ncolorSchemes['interactive-loContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n} as unknown as Theme)\n\ncolorSchemes['interactive-hiContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n} as unknown as Theme)\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme({\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n } as unknown as Theme)\n }\n )\n}\n\nexport const accents = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme({\n colors: generateColors({ prefix: 'accent', colorName, color0 })\n })\n }\n )\n}\n\ngenerateBase()\ngenerateAccent()\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { accents, bases, colorSchemes } from './stitches.colorscheme.config'\n\nexport type TcolorScheme = {\n base?: keyof typeof bases\n accent?: keyof typeof accents\n interactive?: 'loContrast' | 'hiContrast'\n}\n\ntype TColorSchemeOwnProps = TcolorScheme & {\n asChild?: boolean\n}\n\nconst StyledColorScheme = styled('div')\n\ntype TColorSchemeProps = React.ComponentProps<typeof StyledColorScheme> &\n TColorSchemeOwnProps\n\n/**\n * @experimental Component has not been finalised. Further design input required. Use with caution.\n */\nexport const ColorScheme: React.ForwardRefExoticComponent<TColorSchemeProps> =\n React.forwardRef(\n (\n {\n base = '',\n accent = '',\n interactive = '',\n className,\n asChild = false,\n ...rest\n },\n ref\n ) => {\n const c = [\n className,\n colorSchemes[`interactive-${interactive}`],\n colorSchemes[`accent-${accent}`],\n colorSchemes[`base-${base}`]\n ]\n .filter(Boolean)\n .join(' ')\n\n const Component = asChild ? Slot : StyledColorScheme\n return <Component ref={ref} className={c} {...rest} />\n }\n )\n\nColorScheme.displayName = 'ColorScheme'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nexport const StyledIcon = styled('svg', {\n display: 'inline-block',\n fill: 'none',\n flexShrink: 0,\n stroke: 'currentColor',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n verticalAlign: 'middle',\n variants: {\n size: {\n sm: { size: '$1', strokeWidth: '1.5' },\n md: { size: '$2', strokeWidth: '1.75' },\n lg: { size: '$3', strokeWidth: '2' }\n }\n }\n})\n\ntype IconProps = Override<\n React.ComponentProps<typeof StyledIcon>,\n {\n is: React.FC<React.SVGProps<SVGSVGElement>>\n as?: never\n }\n>\n\nexport const Icon: React.ForwardRefExoticComponent<IconProps> =\n React.forwardRef(({ is: SVG, size = 'md', ...remainingProps }, ref) => (\n <StyledIcon\n size={size}\n aria-hidden=\"true\"\n {...remainingProps}\n as={SVG}\n ref={ref}\n />\n ))\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\n\nconst RotatingIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n },\n '[data-state=\"closed\"] > &': {\n transform: 'rotate(0deg)'\n }\n})\n\nconst StyledTrigger = styled(Trigger, {\n border: 0,\n py: '$3',\n px: '$4',\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n bg: '$interactive2',\n color: '$interactiveForeground',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:active, &:hover, &:focus-visible': {\n bg: '$interactive3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[data-state=\"open\"]': {\n borderRadius: '$0 $0 0 0'\n },\n '&[data-state=\"closed\"]': {\n borderRadius: '$0'\n },\n variants: {\n arrowPosition: {\n left: {\n flexDirection: 'row-reverse',\n gap: '$2',\n justifyContent: 'flex-end'\n },\n right: {}\n }\n }\n})\n\nexport const AccordionTrigger = ({\n children,\n colorScheme = {},\n asChild,\n arrowPosition = 'right',\n ...remainingProps\n}: React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger\n asChild={asChild}\n arrowPosition={arrowPosition}\n {...remainingProps}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <RotatingIcon is={ChevronDown} data-testid=\"accordion-chevron\" />\n </>\n )}\n </StyledTrigger>\n </ColorScheme>\n)\n","import { Root } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AccordionContent } from './AccordionContent'\nimport { AccordionItem } from './AccordionItem'\nimport { AccordionTrigger } from './AccordionTrigger'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\ntype AccordionProps = React.ComponentProps<typeof StyledRoot> & {\n type: 'single' | 'multiple'\n}\n\ntype AccordionType = React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Content: typeof AccordionContent\n Trigger: typeof AccordionTrigger\n}\n\nexport const Accordion = React.forwardRef(\n ({ type = 'single', children, ...remainingProps }, ref) => (\n // eslint-disable-next-line\n // @ts-ignore TODO: Radix has an TS error that throws a warning if you pass multiple in. Needs to be fixed by the owner\n <StyledRoot ref={ref} type={type} {...remainingProps}>\n {children}\n </StyledRoot>\n )\n) as AccordionType\n\nAccordion.Item = AccordionItem\nAccordion.Content = AccordionContent\nAccordion.Trigger = AccordionTrigger\n\nAccordion.displayName = 'Accordion'\n","import { Arrow, Content } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nconst StyledContent = styled(Content, {\n backgroundColor: '$grey900',\n borderRadius: '$0',\n boxShadow: '$0',\n color: 'white',\n fontFamily: '$body',\n fontSize: '$sm',\n lineHeight: 1.5,\n whiteSpace: 'normal',\n px: '$3',\n py: '$2',\n zIndex: 10,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"delayed-open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '100px' },\n md: { maxWidth: '250px' },\n lg: { maxWidth: '400px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: '$grey900',\n '[data-align=\"end\"] &': { mr: '$2' },\n '[data-align=\"start\"] &': { ml: '$2' }\n})\n\ntype TooltipContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content>\n\nexport const TooltipContent = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}: TooltipContentProps) => (\n <StyledContent\n side={side}\n sideOffset={sideOffset}\n size={size}\n {...remainingProps}\n >\n {children}\n <StyledArrow />\n </StyledContent>\n)\n","import { Portal, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TooltipContent } from './TooltipContent'\n\ntype TooltipProps = React.ComponentProps<typeof Root>\n\nconst TooltipComponent = ({\n children,\n delayDuration = 350,\n ...remainingProps\n}: TooltipProps) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nexport const Tooltip = Object.assign(TooltipComponent, {\n Content: TooltipContent,\n Trigger: styled(Trigger, {}),\n Portal: Portal,\n Provider: Provider\n})\n\nTooltipComponent.displayName = 'Tooltip'\n","import * as React from 'react'\n\nimport { Tooltip } from '~/components/tooltip'\n\nexport type TOptionalTooltipWrapperProps = {\n hasTooltip?: boolean\n label?: React.ReactNode\n tooltipSide?: React.ComponentProps<typeof Tooltip.Content>['side']\n}\n\nexport const OptionalTooltipWrapper = ({\n hasTooltip,\n label,\n tooltipSide,\n children\n}: React.PropsWithChildren<TOptionalTooltipWrapperProps>) => {\n if (hasTooltip) {\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content side={tooltipSide}>{label}</Tooltip.Content>\n </Tooltip>\n )\n }\n\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>\n}\n\nOptionalTooltipWrapper.displayName = 'OptionalTooltipWrapper'\n","export const isExternalUrl = (url?: string) => {\n if (typeof window === 'undefined' || !url) return false\n\n const isAbsoluteUrl = /^https?:\\/\\//.test(url)\n return isAbsoluteUrl && new URL(url).origin !== window.location.origin\n}\n\nexport const getExternalAnchorProps = (url?: string) =>\n isExternalUrl(url) ? { target: '_blank', rel: 'noopener noreferrer' } : {}\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport type { TOptionalTooltipWrapperProps } from '~/utilities/optional-tooltip-wrapper'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { Icon } from '../icon/Icon'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'simple',\n css: {\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst getSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': { bg: active }\n }\n})\n\nconst getOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n bg: 'unset',\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$1',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n neutral: {},\n primary: {},\n success: {},\n warning: {},\n danger: {},\n white: {}\n },\n appearance: {\n simple: {},\n outline: {},\n solid: {}\n },\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' }\n },\n isRounded: {\n true: {\n borderRadius: '$round'\n }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getSimpleVariant('neutral', '$grey700', '$primary900', '$primary1000'),\n getSimpleVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSimpleVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSimpleVariant('success', '$success', '$successMid', '$successDark'),\n getSimpleVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSimpleVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getSimpleVariant('white', '#fff', '#fff', '#fff'),\n\n getSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSolidVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSolidVariant('success', '$success', '$successMid', '$successDark'),\n getSolidVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n\n getOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getOutlineVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getOutlineVariant('success', '$success', '$successMid', '$successDark'),\n getOutlineVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getOutlineVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getOutlineVariant('white', '#fff', '#fff', '#fff')\n ]\n})\n\ntype ActionIconProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: string | React.ReactNode\n children: React.ReactNode\n label: string\n } & Omit<TOptionalTooltipWrapperProps, 'label'> &\n NavigatorActions\n>\n\nexport const ActionIcon: React.ForwardRefExoticComponent<ActionIconProps> =\n React.forwardRef(\n (\n {\n children,\n theme = 'primary',\n appearance = 'simple',\n size = 'sm',\n label,\n href,\n disabled,\n hasTooltip = true,\n tooltipSide,\n ...remainingProps\n },\n ref\n ) => {\n const INVALID_CHILDREN_MESSAGE = `A single ${Icon.displayName} component is permitted as a child of ${ActionIcon.displayName}`\n\n invariant(React.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE)\n\n const optionalLinkProps = href\n ? ({\n as: 'a',\n href: disabled ? null : href,\n onClick: undefined,\n 'aria-disabled': !!disabled\n } as const)\n : ({ type: 'button' } as const)\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\n {...getExternalAnchorProps(href)}\n {...remainingProps}\n aria-label={label}\n theme={theme}\n appearance={appearance}\n size={size}\n ref={ref}\n disabled={disabled}\n >\n {React.Children.map(children, (child) => {\n // TS needs this check for any following code to access child.type\n // even with optional chaining\n if (!React.isValidElement(child)) {\n throw new Error(INVALID_CHILDREN_MESSAGE)\n }\n\n invariant(\n child.type === Icon,\n `Children of type ${child?.type} aren't permitted. Only an ${Icon.displayName} component is allowed in ${ActionIcon.displayName}`\n )\n\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n }\n )\n })}\n </StyledButton>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nActionIcon.displayName = 'ActionIcon'\n","import { Content, Overlay, Portal } from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { 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: 1147483646,\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: 1147483646,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n sm: { width: '380px' },\n md: { width: '480px' },\n lg: { width: '600px' }\n }\n }\n})\n\nexport const AlertDialogContent = ({\n size = 'sm',\n ...remainingProps\n}: React.ComponentProps<typeof StyledAlertDialogContent>) => (\n <Portal>\n <StyledAlertDialogOverlay />\n <StyledAlertDialogContent size={size} {...remainingProps} />\n </Portal>\n)\n","import {\n Action,\n Cancel,\n Description,\n Root,\n Title,\n Trigger\n} from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AlertDialogContent } from './AlertDialogContent'\n\nconst StyledAlertDialog = styled(Root, {})\n\nexport const AlertDialog = Object.assign(StyledAlertDialog, {\n Description: Description,\n Title: Title,\n Action: Action,\n Cancel: Cancel,\n Content: AlertDialogContent,\n Trigger: Trigger\n})\n\nAlertDialog.displayName = 'AlertDialog'\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMountedRef = () => {\n const isMountedRef = useRef<boolean>()\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n })\n\n return isMountedRef\n}\n","import { styled } from '~/stitches'\n\nexport const Flex = styled('div', {\n display: 'flex',\n variants: {\n direction: {\n row: { flexDirection: 'row' },\n 'row-reverse': { flexDirection: 'row-reverse' },\n column: { flexDirection: 'column' },\n 'column-reverse': { flexDirection: 'column-reverse' },\n inherit: { flexDirection: 'inherit' },\n initial: { flexDirection: 'initial' },\n revert: { flexDirection: 'revert' },\n 'revert-layer': { flexDirection: 'revert-layer' },\n unset: { flexDirection: 'unset' }\n },\n wrap: {\n nowrap: { flexWrap: 'nowrap' },\n wrap: { flexWrap: 'wrap' },\n 'wrap-reverse': { flexWrap: 'wrap-reverse' },\n inherit: { flexWrap: 'inherit' },\n initial: { flexWrap: 'initial' },\n revert: { flexWrap: 'revert' },\n 'revert-layer': { flexWrap: 'revert-layer' },\n unset: { flexWrap: 'unset' }\n },\n // Why is both `start` and `flex-start` valid values? Answer: https://csslayout.news/whats-the-difference-between-the-alignment-values-of-start-flex-start-and-self-start/\n justify: {\n normal: { justifyContent: 'normal' },\n unsafe: { justifyContent: 'unsafe' },\n safe: { justifyContent: 'safe' },\n start: { justifyContent: 'start' },\n center: { justifyContent: 'center' },\n end: { justifyContent: 'end' },\n 'flex-start': { justifyContent: 'flex-start' },\n 'flex-end': { justifyContent: 'flex-end' },\n left: { justifyContent: 'left' },\n right: { justifyContent: 'right' },\n 'space-between': { justifyContent: 'space-between' },\n 'space-around': { justifyContent: 'space-around' },\n 'space-evenly': { justifyContent: 'space-evenly' },\n stretch: { justifyContent: 'stretch' },\n inherit: { justifyContent: 'inherit' },\n initial: { justifyContent: 'initial' },\n revert: { justifyContent: 'revert' },\n 'revert-layer': { justifyContent: 'revert-layer' },\n unset: { justifyContent: 'unset' }\n },\n\n align: {\n normal: { alignItems: 'normal' },\n unsafe: { alignItems: 'unsafe' },\n safe: { alignItems: 'safe' },\n center: { alignItems: 'center' },\n start: { alignItems: 'start' },\n end: { alignItems: 'end' },\n 'self-start': { alignItems: 'self-start' },\n 'self-end': { alignItems: 'self-end' },\n 'flex-start': { alignItems: 'flex-start' },\n 'flex-end': { alignItems: 'flex-end' },\n baseline: { alignItems: 'baseline' },\n 'first baseline': { alignItems: 'first baseline' },\n 'last baseline': { alignItems: 'last baseline' },\n stretch: { alignItems: 'stretch' },\n inherit: { alignItems: 'inherit' },\n initial: { alignItems: 'initial' },\n revert: { alignItems: 'revert' },\n 'revert-layer': { alignItems: 'revert-layer' },\n unset: { alignItems: 'unset' }\n },\n gap: {\n '0': { gap: '$space$0' },\n '1': { gap: '$space$1' },\n '2': { gap: '$space$2' },\n '3': { gap: '$space$3' },\n '4': { gap: '$space$4' },\n '24': { gap: '$space$24' },\n '5': { gap: '$space$5' },\n '6': { gap: '$space$6' },\n '7': { gap: '$space$7' },\n '8': { gap: '$space$8' },\n '9': { gap: '$space$9' }\n }\n }\n})\n\nFlex.displayName = 'Flex'\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { CSS, keyframes, styled } from '~/stitches'\n\nconst FadeInOut = keyframes({\n '0%': { opacity: 0 },\n '30%': { opacity: 1 },\n '50%': { opacity: 1 },\n '80%': { opacity: 0 },\n '100%': { opacity: 0 }\n})\n\nconst Dot = styled('div', {\n animationName: `${FadeInOut}`,\n animationDuration: '1000ms',\n animationFillMode: 'both',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n '&:nth-child(1)': {\n animationDelay: '-300ms'\n },\n '&:nth-child(2)': {\n animationDelay: '-150ms'\n },\n '&:nth-child(3)': {\n animationDelay: 0\n },\n\n variants: {\n size: {\n sm: { size: '4px', mx: '2px' },\n md: { size: '6px', mx: '2px' },\n lg: { size: '8px', mx: '3px' }\n }\n }\n})\n\ntype LoaderProps = {\n message?: string\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n}\n\nexport const Loader = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}: LoaderProps) => (\n <Flex\n css={{\n justifyContent: 'center',\n ...css\n }}\n role=\"alert\"\n {...props}\n >\n <VisuallyHidden.Root>{message}</VisuallyHidden.Root>\n <Dot size={size} />\n <Dot size={size} />\n <Dot size={size} />\n </Flex>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { Loader } from '~/components/loader'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nconst getButtonOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': {\n opacity: 0.3,\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})\n\nconst getButtonSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: text,\n '&[disabled]': {\n opacity: 0.3,\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})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$1',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 600,\n justifyContent: 'center',\n p: 'unset',\n textDecoration: 'none',\n transition: 'all 100ms ease-out',\n whiteSpace: 'nowrap',\n width: 'max-content',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n primary: {},\n secondary: {},\n success: {},\n warning: {},\n danger: {},\n neutral: {}\n },\n appearance: {\n solid: {},\n outline: {}\n },\n size: {\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n height: '$3',\n px: '$4',\n gap: '$2',\n '& svg': { size: 16 }\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5',\n gap: '$3',\n '& svg': { size: 20 }\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5',\n gap: '$3',\n '& svg': { size: 22 }\n },\n xl: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$6',\n px: '$5',\n gap: '$3',\n '& svg': { size: 22 }\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getButtonSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonSolidVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonSolidVariant('success', '$success', '$successMid', '$successDark'),\n getButtonSolidVariant('warning', '$warning', '$warningMid', '$warningDark', '$grey900'),\n getButtonSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getButtonSolidVariant('neutral', 'white', opacify('white', -0.1), opacify('white', -0.25), '$primary800'),\n getButtonOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonOutlineVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonOutlineVariant('neutral', 'white', opacify('white', -0.2), opacify('white', -0.35))\n ],\n\n defaultVariants: {\n appearance: 'solid',\n size: 'md',\n theme: 'primary'\n }\n})\n\nconst LoaderContentsWrapper = styled('span', {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n visibility: 'hidden',\n variants: {\n size: {\n sm: { gap: '$2' },\n md: { gap: '$3' },\n lg: { gap: '$3' },\n xl: { gap: '$3' }\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst WithLoader = ({\n size,\n children\n}: React.ComponentProps<typeof LoaderContentsWrapper>) => (\n <>\n <Loader css={{ position: 'absolute' }} />\n <LoaderContentsWrapper size={size}>{children}</LoaderContentsWrapper>\n </>\n)\n\ntype ButtonProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: React.ComponentType | React.ElementType\n children: React.ReactNode\n href?: string\n isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button: React.ForwardRefExoticComponent<ButtonProps> =\n React.forwardRef(\n (\n { children, as, href, isLoading = false, onClick, disabled, ...rest },\n ref\n ) => (\n <StyledButton\n as={as || (href ? 'a' : undefined)}\n {...(!disabled && !isLoading && { href, onClick })}\n isLoading={isLoading}\n type={!href ? 'button' : undefined}\n disabled={disabled}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n >\n {isLoading ? (\n <WithLoader size={rest.size}>{children}</WithLoader>\n ) : (\n children\n )}\n </StyledButton>\n )\n )\n\nButton.displayName = 'Button'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const StyledHeading = styled('h2', {\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontFamily: '$body',\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2078)\n },\n md: {\n fontFamily: '$display',\n fontSize: '$xl',\n lineHeight: 1.14,\n letterSpacing: '0.01em',\n ...capsize(0.2114, 0.2634)\n },\n lg: {\n fontFamily: '$display',\n fontSize: '$2xl',\n lineHeight: 1.08,\n letterSpacing: '0.01em',\n ...capsize(0.1405, 0.2405)\n },\n xl: {\n fontFamily: '$display',\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.16, 0.26)\n },\n xxl: {\n fontFamily: '$display',\n fontSize: '$4xl',\n lineHeight: 1,\n ...capsize(0.1, 0.2)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n },\n weight: {\n medium: { fontWeight: 500 },\n bold: { fontWeight: 700 }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentProps<typeof StyledHeading>,\n {\n as?:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Heading: React.ForwardRefExoticComponent<HeadingProps> =\n React.forwardRef(\n ({ size = 'md', weight = 'bold', ...remainingProps }, ref) => (\n <StyledHeading\n ref={ref}\n size={size}\n weight={weight}\n {...remainingProps}\n />\n )\n )\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const textVariants = {\n size: {\n xs: {\n fontSize: '$xs',\n lineHeight: 1.6,\n ...capsize(0.4364)\n },\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n ...capsize(0.4056)\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.52,\n ...capsize(0.3983)\n },\n xl: {\n fontSize: '$xl',\n lineHeight: 1.42,\n ...capsize(0.3506)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': {\n display: 'none !important'\n }\n }\n }\n}\n\nexport const getTextVariant: (options: {\n size: keyof typeof textVariants.size\n noCapsize?: boolean\n}) => CSS = ({ size, noCapsize }) => ({\n ...textVariants.size[size],\n ...textVariants.noCapsize[`${noCapsize}`]\n})\n\nexport const StyledText = styled('p', {\n m: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: {\n ...textVariants,\n weight: {\n normal: { fontWeight: 400 },\n bold: { fontWeight: 600 }\n },\n family: {\n body: { fontFamily: '$body' },\n display: { fontFamily: '$display' },\n mono: { fontFamily: '$mono' }\n }\n }\n})\n\ntype TextProps = Override<\n React.ComponentProps<typeof StyledText>,\n {\n as?:\n | 'blockquote'\n | 'caption'\n | 'dd'\n | 'dt'\n | 'figcaption'\n | 'li'\n | 'p'\n | 'span'\n | 'legend'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Text: React.ForwardRefExoticComponent<TextProps> =\n React.forwardRef(\n ({ size = 'md', family = 'body', ...remainingProps }, ref) => (\n <StyledText size={size} family={family} {...remainingProps} ref={ref} />\n )\n )\n\nText.displayName = 'Text'\n","import { Danger, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../../icon'\n\nexport type AlertDialogTheme = 'info' | 'warning' | 'danger' | 'success'\n\nconst StyledIcon = styled(Icon, {\n alignSelf: 'flex-start',\n variants: {\n theme: {\n info: { color: '$info' },\n warning: { color: '$warningMid' },\n danger: { color: '$danger', transform: 'rotate(180deg)' },\n success: { color: '$success' }\n }\n }\n})\n\nconst iconMap: Record<\n AlertDialogTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n info: Info,\n warning: Danger,\n danger: Info,\n success: OkCircle\n}\n\nexport const AlertDialogIcon = ({ theme }: { theme: AlertDialogTheme }) => (\n <StyledIcon theme={theme} is={iconMap[theme]} />\n)\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Flex } from '../../flex'\nimport { Heading } from '../../heading'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport { AlertDialogIcon } from './AlertDialogIcon'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert = ({\n title,\n size,\n theme,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n confirmElement,\n cancelElement,\n ...remainingProps\n}: AlertDialogContentProps) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n size={size}\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n css={{\n display: 'flex',\n flexDirection: 'column',\n maxHeight: '90vh',\n gap: '$5'\n }}\n {...remainingProps}\n >\n <Flex css={{ alignItems: 'center', gap: '$2' }}>\n {theme && <AlertDialogIcon theme={theme} />}\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mr: '$4' }}>\n {title}\n </Heading>\n </Flex>\n {description && (\n <Text\n as={AlertDialog.Description}\n css={{ display: 'flex', overflowY: 'auto' }}\n >\n {description}\n </Text>\n )}\n <Flex gap=\"2\" justify=\"end\" wrap=\"wrap\">\n <AlertDialog.Cancel asChild>\n {cancelElement ||\n (cancelActionText && (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n onClick={() => onAction?.(false)}\n >\n {cancelActionText}\n </Button>\n ))}\n </AlertDialog.Cancel>\n <AlertDialog.Action asChild>\n {confirmElement || (\n <Button size=\"sm\" onClick={() => onAction?.(true)}>\n {confirmActionText}\n </Button>\n )}\n </AlertDialog.Action>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog>\n)\n","import { uid } from 'uid'\n\nimport { alert } from './types'\n\ntype State = alert[]\ntype Action =\n | { type: 'ADD'; payload: alert }\n | { type: 'REMOVE'; payload: string }\n\nexport const initialState = []\n\nexport const reducer = (state: State, action: Action): alert[] => {\n switch (action.type) {\n case 'ADD':\n return [...state, { ...action.payload, id: uid() }]\n case 'REMOVE':\n return state.filter(({ id }) => id !== action.payload)\n default:\n return state\n }\n}\n","import * as React from 'react'\n\nimport { useIsMountedRef } from '~/utilities/hooks/useIsMountedRef'\n\nimport { Alert } from './AlertDialog'\nimport { initialState, reducer } from './reducer'\nimport type { alert } from './types'\n\ntype context = {\n showAlert: (data: alert) => void\n}\n\nconst AlertContext = React.createContext<context>({\n showAlert: () => null\n})\n\nexport const AlertProvider = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const [alerts, dispatch] = React.useReducer(reducer, initialState)\n const isMountedRef = useIsMountedRef()\n\n return (\n <AlertContext.Provider\n value={{\n showAlert: (content: alert) =>\n dispatch({\n payload: content,\n type: 'ADD'\n })\n }}\n >\n {Boolean(alerts.length) && (\n <Alert\n {...alerts[0]}\n key={alerts[0].id}\n onClose={() => {\n if (isMountedRef.current)\n dispatch({\n payload: alerts[0].id,\n type: 'REMOVE'\n })\n }}\n />\n )}\n {children}\n </AlertContext.Provider>\n )\n}\n\nexport const useAlert = (): context => {\n const context = React.useContext(AlertContext)\n\n if (context === undefined) {\n throw new Error('useAlert must be used within a AlertProvider')\n }\n\n return context\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\nimport { AvatarRootContext } from './Avatar'\n\nconst toIconSize = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg',\n xxl: 'lg'\n}\n\nexport const AvatarIcon = ({ is }: { is: typeof Icon }) => {\n const rootContext = React.useContext(AvatarRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return <Icon size={iconSize} is={is} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\nexport const StyledImage = styled('img', {\n verticalAlign: 'middle',\n maxWidth: '100%',\n variants: {\n fluid: {\n true: {\n '&[width]': {\n width: 'auto'\n },\n '&[width][height]': {\n height: 'auto'\n },\n '&[src$=\".svg\"]': {\n width: '100%',\n height: 'auto',\n maxWidth: 'none'\n }\n }\n }\n }\n})\n\ntype ImageProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledImage>,\n {\n as?: never\n }\n>\n\nexport const Image = (props: ImageProps) => <StyledImage {...props} />\n\nImage.displayName = 'Image'\n","import { User } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Box } from '../box'\nimport { Icon } from '../icon'\n\nexport const AvatarPlaceholder = () => {\n return (\n <Box css={{ position: 'relative', size: '100%' }}>\n <Icon is={User} css={{ size: '100%' }} />\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Text } from '../text'\nimport { AvatarRootContext } from './Avatar'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst toTextSize = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n xl: 'md',\n xxl: 'lg'\n}\n\nexport const AvatarInitial = () => {\n const rootContext = React.useContext(AvatarRootContext)\n const { name, size } = rootContext\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n if (!name) {\n return <AvatarPlaceholder />\n }\n\n return (\n <Text size={textSize} css={{ color: '$grey800' }}>\n {name[0].toUpperCase()}\n </Text>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { AvatarInitial } from './AvatarInitial'\n\nconst StyledImage = styled(Image, {\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const AvatarImage = ({ src, alt }: { src: string; alt: string }) => {\n if (!src) {\n return <AvatarInitial />\n }\n\n return <StyledImage src={src} alt={alt} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AvatarIcon } from './AvatarIcon'\nimport { AvatarImage } from './AvatarImage'\nimport { AvatarInitial } from './AvatarInitial'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst avatarRootStyles = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '$grey800',\n borderRadius: '$round',\n border: '2px solid $grey200',\n backgroundColor: '$white',\n overflow: 'hidden',\n variants: {\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' },\n xl: { size: '$6' },\n xxl: { size: '$7' }\n }\n }\n}\n\nconst StyledDiv = styled('div', avatarRootStyles)\nconst StyledButton = styled('button', {\n all: 'unset',\n ...avatarRootStyles,\n '&:not([disabled])': {\n '&:hover': {\n borderColor: '$grey800',\n backgroundColor: '$grey100'\n },\n '&:active': {\n borderColor: '$primary800',\n backgroundColor: '$grey200'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[disabled]': {\n opacity: '30%',\n cursor: 'not-allowed'\n }\n})\n\ntype TAvatarProps = React.ComponentProps<\n typeof StyledDiv | typeof StyledButton\n> & { name?: string } & (\n | {\n onClick: React.MouseEventHandler<HTMLButtonElement>\n disabled?: boolean\n }\n | { onClick?: never; disabled?: never }\n )\n\nexport type TAvatarRootContext = {\n name?: TAvatarProps['name']\n size: TAvatarProps['size']\n}\n\nexport const AvatarRootContext = React.createContext<TAvatarRootContext>({\n name: undefined,\n size: 'lg'\n})\n\nexport const AvatarRootProvider = ({ children, name, size }: TAvatarProps) => {\n const value = React.useMemo<TAvatarRootContext>(\n () => ({ name, size }),\n [name, size]\n )\n\n return (\n <AvatarRootContext.Provider value={value}>\n {children}\n </AvatarRootContext.Provider>\n )\n}\n\nexport const AvatarRoot = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}: TAvatarProps) => (\n <AvatarRootProvider name={name} size={size}>\n {onClick ? (\n <StyledButton\n size={size}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}\n css={{ cursor: disabled ? 'auto' : 'pointer' }}\n >\n {children}\n </StyledButton>\n ) : (\n <StyledDiv size={size}>{children}</StyledDiv>\n )}\n </AvatarRootProvider>\n)\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Image: AvatarImage,\n Initial: AvatarInitial,\n Placeholder: AvatarPlaceholder,\n Icon: AvatarIcon\n})\n\nAvatarRoot.displayName = 'Avatar'\n","import * as React from 'react'\n\nexport const useCallbackRef: () => [\n React.MutableRefObject<HTMLElement | null>,\n (HTMLElement) => void\n] = () => {\n const elRef = React.useRef<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) elRef.current = el\n }, [])\n\n return [elRef, setElRefCallback]\n}\n\nexport const useCallbackRefState: () => [\n HTMLElement | null,\n (HTMLElement) => void\n] = () => {\n const [elRef, setElRef] = React.useState<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) setElRef(el)\n }, [])\n\n return [elRef, setElRefCallback]\n}\n","import * as React from 'react'\n\nimport type { TBadgeProps } from './Badge'\n\ntype TBadgeProviderProps = {\n size?: TBadgeProps['size']\n overflow?: TBadgeProps['overflow']\n}\n\ntype TBadgeContext = TBadgeProviderProps & {\n isOverflowing?: boolean\n setIsOverflowing?: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BadgeContext = React.createContext<TBadgeContext>({})\n\nexport const BadgeProvider = ({\n size,\n overflow,\n children\n}: React.PropsWithChildren<TBadgeProviderProps>) => {\n const [isOverflowing, setIsOverflowing] = React.useState(false)\n\n const value = React.useMemo<TBadgeContext>(\n () => ({ size, overflow, isOverflowing, setIsOverflowing }),\n [size, overflow, isOverflowing, setIsOverflowing]\n )\n return <BadgeContext.Provider value={value}>{children}</BadgeContext.Provider>\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledBadgeIcon = styled(Icon)\n\nexport const BadgeIcon = (\n props: React.ComponentProps<typeof StyledBadgeIcon>\n) => <StyledBadgeIcon size=\"sm\" {...props} />\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\ntype TUseResizeObserverOptions = {\n elements: (HTMLElement | undefined | null)[]\n onResize: (entries: ResizeObserverEntry[]) => void\n delay?: number\n}\n\ntype TUseResizeObserverOutput = ResizeObserver | null\n\nconst createResizeObserver = (\n callback: (entries: ResizeObserverEntry[]) => void\n) => {\n try {\n return new ResizeObserver(callback)\n } catch {\n return null\n }\n}\n\nexport const useResizeObserver = ({\n delay = 500,\n elements,\n onResize\n}: TUseResizeObserverOptions): TUseResizeObserverOutput => {\n const observer = React.useMemo(\n () => createResizeObserver(debounce(delay, onResize)),\n [delay, onResize]\n )\n\n React.useEffect(() => {\n elements.forEach((element) => {\n if (element) {\n observer?.observe(element)\n }\n })\n\n return () => {\n elements.forEach((element) => element && observer?.unobserve(element))\n }\n }, [observer, elements])\n\n return observer\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useResizeObserver } from '~/utilities/hooks/useResizeObserver'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BadgeContext } from './Badge.context'\n\n/*\n * Instead of sticking a resize observer on every `BadgeText`\n * regardless of overflow type, split the resize logic into a component.\n * Basically call the hook conditionally, only for the version with\n * the `overflow === 'ellipsis'` which needs it.\n * This saves us from initialising a resize observer for any badge which doesn't need it.\n */\nconst ObserveBadgeTextOverflow: React.VFC<{ elRef: HTMLElement | null }> = ({\n elRef\n}) => {\n const { setIsOverflowing } = React.useContext(BadgeContext)\n\n useResizeObserver({\n delay: 0,\n elements: [elRef],\n onResize: () => {\n if (!elRef?.scrollWidth || !elRef?.clientWidth) return\n setIsOverflowing?.(elRef.scrollWidth > elRef.clientWidth)\n }\n })\n\n return null\n}\n\nconst StyledBadgeText = styled(Text, {\n py: '$0',\n variants: {\n overflow: {\n ellipsis: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n },\n wrap: {\n whiteSpace: 'normal'\n }\n }\n }\n})\n\ntype TBadgeTextProps = React.ComponentProps<typeof StyledBadgeText>\n\nconst toTextSize = {\n xs: 'sm',\n sm: 'md',\n md: 'md'\n}\n\nexport const BadgeText = ({\n children,\n ...rest\n}: TBadgeTextProps): JSX.Element => {\n // We need the return type here. Otherwise typsecript breaks when this type is used in Badge. Do not remove unless you want to tackle that issue again.\n const { size: badgeSize, overflow } = React.useContext(BadgeContext)\n\n const size = React.useMemo(\n () => overrideStitchesVariantValue(badgeSize, (s) => toTextSize[s]),\n [badgeSize]\n )\n\n const [elRef, setElRef] = useCallbackRefState()\n\n return (\n <>\n {overflow === 'ellipsis' && <ObserveBadgeTextOverflow elRef={elRef} />}\n <StyledBadgeText\n noCapsize\n size={size}\n overflow={overflow}\n ref={setElRef}\n {...rest}\n >\n {children}\n </StyledBadgeText>\n </>\n )\n}\n","import { createTheme } from '~/stitches'\n\n/*\n * Semantic themes\n */\n\nconst info = createTheme({\n colors: {\n textSubtle: '$infoMid',\n backgroundSubtle: '$infoLight',\n textBold: '#FFF',\n backgroundBold: '$info',\n textOnWhite: '$info'\n }\n})\n\nconst neutral = createTheme({\n colors: {\n textSubtle: '$grey900',\n backgroundSubtle: '$grey100',\n textBold: '#FFF',\n backgroundBold: '$grey800',\n textOnWhite: '$grey800'\n }\n})\n\nconst success = createTheme({\n colors: {\n textSubtle: '$successMid',\n backgroundSubtle: '$successLight',\n textBold: '#FFF',\n backgroundBold: '$success',\n textOnWhite: '$success'\n }\n})\n\nconst danger = createTheme({\n colors: {\n textSubtle: '$dangerMid',\n backgroundSubtle: '$dangerLight',\n textBold: '#FFF',\n backgroundBold: '$danger',\n textOnWhite: '$danger'\n }\n})\n\nconst warning = createTheme({\n colors: {\n textSubtle: '$warningText',\n backgroundSubtle: '$warningLight',\n textBold: '$grey1000',\n backgroundBold: '$warning',\n textOnWhite: '$warning'\n }\n})\n\n/*\n * Non-semantic themes\n */\nconst primary = createTheme({\n colors: {\n textSubtle: '$primary1000',\n backgroundSubtle: '$primary200',\n textSubtleHover: '$primary1100',\n backgroundSubtleHover: '$primary300',\n\n textBold: 'white',\n backgroundBold: '$primary800',\n backgroundBoldHover: '$primary900',\n\n textOnWhite: '$primary800'\n }\n})\n\nconst grey = createTheme({\n colors: {\n textSubtle: '$grey1000',\n backgroundSubtle: '$grey200',\n textSubtleHover: '$grey1100',\n backgroundSubtleHover: '$grey300',\n\n textBold: '#FFF',\n backgroundBold: '$grey800',\n backgroundBoldHover: '$grey900',\n\n textOnWhite: '$grey800'\n }\n})\n\nconst blue = createTheme({\n colors: {\n textSubtle: '$blue1000',\n backgroundSubtle: '$blue200',\n textSubtleHover: '$blue1100',\n backgroundSubtleHover: '$blue300',\n\n textBold: '#FFF',\n backgroundBold: '$blue800',\n backgroundBoldHover: '$blue900',\n\n textOnWhite: '$blue800'\n }\n})\n\nconst pink = createTheme({\n colors: {\n textSubtle: '$pink1000',\n backgroundSubtle: '$pink200',\n textSubtleHover: '$pink1100',\n backgroundSubtleHover: '$pink300',\n\n textBold: '#FFF',\n backgroundBold: '$pink800',\n backgroundBoldHover: '$pink900',\n\n textOnWhite: '$pink800'\n }\n})\n\nconst purple = createTheme({\n colors: {\n textSubtle: '$purple1000',\n backgroundSubtle: '$purple200',\n textSubtleHover: '$purple1100',\n backgroundSubtleHover: '$purple300',\n\n textBold: '#FFF',\n backgroundBold: '$purple800',\n backgroundBoldHover: '$purple900',\n\n textOnWhite: '$purple700'\n }\n})\n\nconst cyan = createTheme({\n colors: {\n textSubtle: '$cyan1000',\n backgroundSubtle: '$cyan200',\n textSubtleHover: '$cyan1100',\n backgroundSubtleHover: '$cyan300',\n\n textBold: '#FFF',\n backgroundBold: '$cyan800',\n backgroundBoldHover: '$cyan900',\n\n textOnWhite: '$cyan800'\n }\n})\n\nconst green = createTheme({\n colors: {\n textSubtle: '$green1000',\n backgroundSubtle: '$green200',\n textSubtleHover: '$green1100',\n backgroundSubtleHover: '$green300',\n\n textBold: '#FFF',\n backgroundBold: '$green800',\n backgroundBoldHover: '$green900',\n\n textOnWhite: '$green800'\n }\n})\n\nconst magenta = createTheme({\n colors: {\n textSubtle: '$magenta1000',\n backgroundSubtle: '$magenta200',\n textSubtleHover: '$magenta1100',\n backgroundSubtleHover: '$magenta300',\n\n textBold: '#FFF',\n backgroundBold: '$magenta800',\n backgroundBoldHover: '$magenta900',\n\n textOnWhite: '$magenta800'\n }\n})\n\nconst red = createTheme({\n colors: {\n textSubtle: '$red1000',\n backgroundSubtle: '$red200',\n textSubtleHover: '$red1100',\n backgroundSubtleHover: '$red400',\n\n textBold: '#FFF',\n backgroundBold: '$red800',\n backgroundBoldHover: '$red900',\n\n textOnWhite: '$red800'\n }\n})\n\nconst teal = createTheme({\n colors: {\n textSubtle: '$teal1000',\n backgroundSubtle: '$teal200',\n textSubtleHover: '$teal1100',\n backgroundSubtleHover: '$teal300',\n\n textBold: '#FFF',\n backgroundBold: '$teal800',\n backgroundBoldHover: '$teal900',\n\n textOnWhite: '$teal800'\n }\n})\n\nconst orange = createTheme({\n colors: {\n textSubtle: '$orange1000',\n backgroundSubtle: '$orange200',\n textSubtleHover: '$orange1100',\n backgroundSubtleHover: '$orange300',\n\n textBold: '$grey1200',\n backgroundBold: '$orange600',\n backgroundBoldHover: '$orange700',\n\n textOnWhite: '$orange1000'\n }\n})\n\nconst yellow = createTheme({\n colors: {\n textSubtle: '$yellow1000',\n backgroundSubtle: '$yellow200',\n textSubtleHover: '$yellow1100',\n backgroundSubtleHover: '$yellow300',\n\n textBold: '$grey1200',\n backgroundBold: '$yellow500',\n backgroundBoldHover: '$yellow600',\n\n textOnWhite: '$yellow900'\n }\n})\n\nconst lime = createTheme({\n colors: {\n textSubtle: '$lime1000',\n backgroundSubtle: '$lime200',\n textSubtleHover: '$lime1100',\n backgroundSubtleHover: '$lime300',\n\n textBold: '$grey1200',\n backgroundBold: '$lime600',\n backgroundBoldHover: '$lime700',\n\n textOnWhite: '$lime900'\n }\n})\n\nconst lapis = createTheme({\n colors: {\n textSubtle: '$lapis1000',\n backgroundSubtle: '$lapis200',\n textSubtleHover: '$lapis1100',\n backgroundSubtleHover: '$lapis300',\n\n textBold: 'white',\n backgroundBold: '$lapis700',\n backgroundBoldHover: '$lapis900',\n\n textOnWhite: '$lapis700'\n }\n})\n\nconst maroon = createTheme({\n colors: {\n textSubtle: '$maroon1000',\n backgroundSubtle: '$maroon200',\n textSubtleHover: '$maroon1100',\n backgroundSubtleHover: '$maroon300',\n\n textBold: 'white',\n backgroundBold: '$maroon800',\n backgroundBoldHover: '$maroon900',\n\n textOnWhite: '$maroon700'\n }\n})\n\nconst marsh = createTheme({\n colors: {\n textSubtle: '$marsh1000',\n backgroundSubtle: '$marsh200',\n textSubtleHover: '$marsh1100',\n backgroundSubtleHover: '$marsh300',\n\n textBold: 'white',\n backgroundBold: '$marsh800',\n backgroundBoldHover: '$marsh900',\n\n textOnWhite: '$marsh700'\n }\n})\n\nexport const badgeSemanticNames = [\n 'info',\n 'neutral',\n 'success',\n 'danger',\n 'warning'\n]\n\nexport const colorSchemes = {\n info,\n neutral,\n success,\n danger,\n warning,\n primary,\n grey,\n blue,\n pink,\n purple,\n cyan,\n green,\n magenta,\n red,\n teal,\n orange,\n yellow,\n lime,\n lapis,\n maroon,\n marsh\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\n\nimport { BadgeContext, BadgeProvider } from './Badge.context'\nimport { BadgeIcon } from './BadgeIcon'\nimport { BadgeText } from './BadgeText'\nimport {\n badgeSemanticNames,\n colorSchemes as badgeColorSchemes\n} from './stitches.badge.colorscheme.config'\n\nconst StyledBadge = styled(Flex, {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n minWidth: 0,\n border: '1px solid #FFFFFF',\n fontFamily: '$body',\n '& > *:not(:last-child)': {\n mr: '$1'\n },\n variants: {\n emphasis: {\n white: {\n color: '$textOnWhite',\n background: 'white'\n },\n subtle: {\n color: '$textSubtle',\n background: '$backgroundSubtle'\n },\n bold: {\n color: '$textBold',\n background: '$backgroundBold'\n }\n },\n size: {\n xs: {\n px: '$1'\n },\n sm: {\n px: '$1',\n py: '$0'\n },\n md: {\n px: '$2',\n py: '$1'\n }\n },\n\n isClickable: {\n true: {\n cursor: 'pointer'\n }\n },\n highlighted: {\n true: {}\n }\n },\n compoundVariants: [\n {\n isClickable: true,\n emphasis: 'white',\n css: {\n '&:hover': {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'subtle',\n css: {\n '&:hover': {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'bold',\n css: {\n '&:hover': {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n },\n {\n emphasis: 'white',\n highlighted: true,\n css: {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n },\n {\n emphasis: 'subtle',\n highlighted: true,\n css: {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n },\n {\n emphasis: 'bold',\n highlighted: true,\n css: {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n ]\n})\n\nexport type TBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n theme?: keyof typeof badgeColorSchemes\n overflow?: React.ComponentProps<typeof BadgeText>['overflow']\n}\n\ntype TBadgeInnerProps = Omit<TBadgeProps, 'size' | 'overflow'>\n\nconst BadgeInner: React.ForwardRefExoticComponent<TBadgeInnerProps> =\n React.forwardRef(\n ({ theme = 'info', emphasis = 'subtle', children, ...rest }, ref) => {\n const { size, overflow, isOverflowing } = React.useContext(BadgeContext)\n const [badgeElRef, setBadgeElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => badgeElRef as HTMLDivElement)\n\n const label = badgeElRef?.textContent\n\n const isInfoOnly = badgeSemanticNames.includes(theme)\n\n const isClickable =\n Object.keys(rest).includes('onClick') ||\n Object.keys(rest).includes('href')\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={overflow === 'ellipsis' && isOverflowing}\n label={label}\n >\n <StyledBadge\n role=\"status\"\n emphasis={emphasis}\n size={size}\n {...rest}\n className={badgeColorSchemes[theme]}\n ref={setBadgeElRef}\n isClickable={isClickable && !isInfoOnly}\n >\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <BadgeText>{child}</BadgeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <BadgeIcon {...child.props} />\n }\n return child\n })}\n </StyledBadge>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nconst BadgeComponent: React.ForwardRefExoticComponent<TBadgeProps> =\n React.forwardRef(({ size = 'sm', overflow = 'wrap', ...rest }, ref) => {\n return (\n <BadgeProvider size={size} overflow={overflow}>\n <BadgeInner {...rest} ref={ref} />\n </BadgeProvider>\n )\n })\n\nexport const Badge = Object.assign(BadgeComponent, {\n Icon: BadgeIcon,\n Text: BadgeText\n})\n\nBadgeComponent.displayName = 'Badge'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nexport interface IDismissibleRootContext {\n disabled?: boolean\n isDismissed: boolean\n setIsDismissed: (boolean) => void\n onDismiss: () => void\n}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => undefined,\n onDismiss: () => undefined\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n dismissed?: boolean\n onDismiss?: () => void\n}\n\nexport const DismissibleRootProvider = ({\n dismissed: controlledIsDismissed,\n children,\n disabled,\n onDismiss = () => null\n}: React.PropsWithChildren<IDismissibleRootProps>) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n\n const value = React.useMemo<IDismissibleRootContext>(() => {\n const isControlled = typeof controlledIsDismissed === 'boolean'\n return {\n disabled,\n isDismissed: isControlled\n ? (controlledIsDismissed as boolean)\n : isDismissed,\n setIsDismissed: isControlled ? () => null : setIsDismissed,\n onDismiss\n }\n }, [disabled, isDismissed, onDismiss, controlledIsDismissed])\n\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleRootInternalProps {\n asChild?: boolean\n}\n\nconst DismissibleRootInternal = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleRootInternalProps>) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n if (isDismissed) return null\n\n const props = { ...(disabled && { [`data-disabled`]: '' }), ...rest }\n const Component = asChild ? Slot : 'div'\n return <Component {...props} />\n}\n\nexport const DismissibleRoot = ({\n disabled = false,\n dismissed,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<\n IDismissibleRootInternalProps & IDismissibleRootProps\n>) => (\n <DismissibleRootProvider\n dismissed={dismissed}\n disabled={disabled}\n onDismiss={onDismiss}\n >\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\n\nDismissibleRoot.displayName = 'Dismissible'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { DismissibleRootContext } from './DismissibleRoot'\n\nexport interface IDismissibleTriggerProps {\n asChild?: boolean\n}\n\nconst DefaultTrigger = (props) => (\n <button type=\"button\" {...props}>\n Dismiss\n </button>\n)\n\nexport const DismissibleTrigger = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleTriggerProps>) => {\n const context = React.useContext(DismissibleRootContext)\n if (context === undefined) {\n throw new Error(\n 'Dismissible.Trigger can only be used within a Dismissible.Item'\n )\n }\n\n const { setIsDismissed, disabled, onDismiss } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\n onDismiss?.()\n }\n\n const props = {\n disabled: disabled,\n onClick: handleDismiss,\n ...rest\n }\n\n const Component = asChild ? Slot : DefaultTrigger\n return <Component {...props} />\n}\n","import { DismissibleRoot } from './DismissibleRoot'\nimport { DismissibleTrigger } from './DismissibleTrigger'\n\nexport const Dismissible = Object.assign(DismissibleRoot, {\n Trigger: DismissibleTrigger\n})\n","import * as React from 'react'\n\nimport { TBannerContainerProps } from './BannerContainer'\n\nexport type TBannerProviderProps = Pick<\n TBannerContainerProps,\n 'size' | 'emphasis'\n>\n\ntype TBannerContextValue = TBannerProviderProps & {\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BannerContext = React.createContext<TBannerContextValue>({\n emphasis: 'minimal',\n size: {\n '@initial': 'sm',\n '@md': 'md'\n },\n hasDismiss: false,\n setHasDismiss: () => null\n})\n\nexport const useBannerContext = (): TBannerContextValue => {\n const context = React.useContext(BannerContext)\n\n if (context === undefined) {\n throw new Error('useBannerContext must be used within a BannerProvider')\n }\n\n return context\n}\n\nexport const BannerProvider = ({\n emphasis = 'minimal',\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n children\n}: React.PropsWithChildren<TBannerProviderProps>) => {\n const [hasDismiss, setHasDismiss] = React.useState(false)\n const value = React.useMemo<TBannerContextValue>(\n () => ({ emphasis, size, hasDismiss, setHasDismiss }),\n [emphasis, size, hasDismiss, setHasDismiss]\n )\n return (\n <BannerContext.Provider value={value}>{children}</BannerContext.Provider>\n )\n}\n\nBannerProvider.displayName = 'Banner'\n","import { Dismissible } from '../dismissible'\nimport { BannerProvider } from './BannerContext'\n\nexport const Banner = Object.assign(BannerProvider, {\n Dismiss: Dismissible.Trigger\n})\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerRegularButton = (\n props: React.ComponentProps<typeof Button>\n) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size={size}\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n {...props}\n />\n )\n}\n\nBannerRegularButton.displayName = 'BannerRegularButton'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\nimport { BannerRegularButton } from './BannerRegularButton'\n\nconst MAX_ALLOWED_CHILDREN = 2\n\nconst toGap = {\n sm: 2,\n md: 4\n}\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nexport const BannerRegularActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[s]),\n [size]\n )\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n invariant(\n React.Children.count(children) <= MAX_ALLOWED_CHILDREN,\n `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`\n )\n\n return (\n <Flex gap={gap} direction={direction} {...props}>\n {React.Children.map(children, (child, index) => {\n // if child is undefined or null, React.isValidElement returns false and hence error is thrown.\n // This line will prevent that from happening\n if (child == null) return child\n\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to ${BannerRegularActions.displayName} is not a valid element`\n )\n }\n\n invariant(\n child.type === BannerRegularButton,\n `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`\n )\n\n const propsToInject: Partial<\n React.ComponentProps<typeof BannerRegularButton>\n > = {\n // Override button appearance - make the second button outlined\n appearance: index > 0 ? 'outline' : undefined\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof BannerRegularButton>\n >,\n propsToInject\n )\n })}\n </Flex>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\n","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport { useBannerContext } from './BannerContext'\n\nconst StyledBannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$3',\n overflow: 'hidden',\n color: '$foreground',\n '--banner-heading-color': '$colors$foreground',\n '--banner-text-color': '$colors$grey900',\n variants: {\n emphasis: {\n bold: {\n background: '$base11',\n color: '$foreground7plus',\n '--banner-heading-color': '$colors$foreground7plus',\n '--banner-text-color': '$colors$grey100'\n },\n subtle: {\n background: '$base3'\n },\n minimal: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<\n typeof StyledBannerContainer\n> & {\n colorScheme?: TcolorScheme\n} & React.ComponentProps<typeof Dismissible>\n\nexport const BannerContainer = ({\n colorScheme = {},\n onDismiss,\n dismissed,\n ...props\n}: TBannerContainerProps): JSX.Element => {\n const { emphasis } = useBannerContext()\n\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild onDismiss={onDismiss} dismissed={dismissed}>\n <StyledBannerContainer role=\"banner\" emphasis={emphasis} {...props} />\n </Dismissible>\n </ColorScheme>\n )\n}\n","import * as React from 'react'\n\nimport { BannerContainer } from '../BannerContainer'\n\ntype TBannerRegularContainerProps = Omit<\n React.ComponentProps<typeof BannerContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerRegularContainer = (props: TBannerRegularContainerProps) => (\n <BannerContainer {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n width: '62%',\n flexGrow: 1,\n variants: {\n size: {\n sm: {\n p: '$4'\n },\n md: {\n p: '$24',\n pr: '$5'\n }\n }\n }\n})\n\nexport const BannerRegularContent = (\n props: React.ComponentProps<typeof Container>\n) => {\n const { size } = useBannerContext()\n\n return <Container size={size} {...props} />\n}\n\nBannerRegularContent.displayName = 'BannerRegularContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst toActionIconSize = {\n sm: 'md',\n md: 'sm'\n}\n\nconst StyledDismiss = styled(ActionIcon, {\n zIndex: 1,\n position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\ntype BannerRegularDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerRegularDismiss = ({\n label = 'dismiss',\n ...rest\n}: BannerRegularDismissProps) => {\n const { size, setHasDismiss } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n const actionIconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toActionIconSize[s]),\n [size]\n )\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size={actionIconSize}\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n appearance=\"solid\"\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerRegularDismiss.displayName = 'BannerRegularDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Heading } from '../../heading'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledHeading = styled(Heading, {\n mb: '$4',\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularHeading = (\n props: React.ComponentProps<typeof Heading>\n) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"md\"\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularHeading.displayName = 'BannerRegularHeading'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n position: 'relative',\n overflow: 'hidden',\n width: '38%',\n variants: {\n size: {\n sm: {\n display: 'none'\n },\n md: {\n display: 'block'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n position: 'absolute',\n maxWidth: 'none',\n width: '100%',\n height: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerRegularImage = (\n props: React.ComponentProps<typeof Image>\n) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerRegularImage.displayName = 'BannerRegularImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-text-color)',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularText.displayName = 'BannerRegularText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerRegularActions } from './BannerRegularActions'\nimport { BannerRegularButton } from './BannerRegularButton'\nimport { BannerRegularContainer } from './BannerRegularContainer'\nimport { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nconst BannerRegularComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof BannerRegularContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerRegularContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerRegular = Object.assign(BannerRegularComponent, {\n Content: BannerRegularContent,\n Heading: BannerRegularHeading,\n Text: BannerRegularText,\n Actions: BannerRegularActions,\n Image: BannerRegularImage,\n Button: BannerRegularButton,\n Dismiss: BannerRegularDismiss\n})\n\nBannerRegularComponent.displayName = 'BannerRegular'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledBannerSlimActions = styled(Flex, {\n variants: {\n size: {\n sm: { width: '100%' },\n md: { width: 'auto' }\n }\n }\n})\n\nexport const BannerSlimActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n return (\n <StyledBannerSlimActions size={size} gap={4} {...props}>\n {children}\n </StyledBannerSlimActions>\n )\n}\n\nBannerSlimActions.displayName = 'BannerSlimActions'\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerSlimButton = ({\n css,\n ...props\n}: React.ComponentProps<typeof Button>) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size=\"md\"\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n css={{ ml: 'auto', ...css }}\n {...props}\n />\n )\n}\n\nBannerSlimButton.displayName = 'BannerSlimButton'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BannerContainer } from '../BannerContainer'\nimport { useBannerContext } from '../BannerContext'\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nconst toAlign = {\n sm: 'flex-start',\n md: 'center'\n}\n\nconst toWrap = {\n sm: 'wrap',\n md: 'nowrap'\n}\n\nconst StyledBannerSlimContainer = styled(BannerContainer, {\n p: '$4',\n variants: {\n sizeWorkaround: {\n sm: {},\n md: {\n px: '$24'\n }\n }\n }\n})\n\ntype TBannerSlimContainerProps = Omit<\n React.ComponentProps<typeof StyledBannerSlimContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerSlimContainer = (\n props: TBannerSlimContainerProps\n): JSX.Element => {\n const { size } = useBannerContext()\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n const align = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toAlign[s]),\n [size]\n )\n\n const wrap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toWrap[s]),\n [size]\n )\n\n return (\n <StyledBannerSlimContainer\n direction={direction}\n align={align}\n sizeWorkaround={size}\n gap={4}\n wrap={wrap}\n {...props}\n />\n )\n}\n\nBannerSlimContainer.displayName = 'BannerSlimContainer'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\n\nconst StyledBannerSlimContent = styled(Flex, {\n width: '100%'\n})\n\nexport const BannerSlimContent = (\n props: React.ComponentProps<typeof StyledBannerSlimContent>\n) => <StyledBannerSlimContent align=\"center\" gap={4} {...props} />\n\nBannerSlimContent.displayName = 'BannerSlimContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledDismiss = styled(ActionIcon, {\n variants: {\n emphasis: {\n bold: {\n color: 'white !important'\n }\n },\n containerSize: {\n sm: { position: 'absolute', top: '$4', right: '$4' },\n md: { position: 'static' }\n }\n }\n})\n\ntype TBannerSlimDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerSlimDismiss = ({\n label = 'dismiss',\n ...rest\n}: TBannerSlimDismissProps): JSX.Element => {\n const { size, setHasDismiss, emphasis } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size=\"md\"\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n containerSize={size}\n emphasis={emphasis as TBannerSlimDismissProps['emphasis']}\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerSlimDismiss.displayName = 'BannerSlimDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n overflow: 'hidden',\n borderRadius: '$round',\n alignSelf: 'flex-start',\n flexShrink: 0,\n variants: {\n size: {\n sm: {\n size: '$4'\n },\n md: {\n size: '$5'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n maxWidth: 'none',\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerSlimImage = (props: React.ComponentProps<typeof Image>) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerSlimImage.displayName = 'BannerSlimImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerSlimText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size=\"md\"\n weight=\"bold\"\n containerSize={size}\n hasDismiss={hasDismiss}\n noCapsize\n {...props}\n />\n )\n}\n\nBannerSlimText.displayName = 'BannerSlimText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerContainer } from '../BannerContainer'\nimport { BannerSlimActions } from './BannerSlimActions'\nimport { BannerSlimButton } from './BannerSlimButton'\nimport { BannerSlimContainer } from './BannerSlimContainer'\nimport { BannerSlimContent } from './BannerSlimContent'\nimport { BannerSlimDismiss } from './BannerSlimDismiss'\nimport { BannerSlimImage } from './BannerSlimImage'\nimport { BannerSlimText } from './BannerSlimText'\n\nconst BannerSlimComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof Banner> &\n React.ComponentProps<typeof BannerContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerSlimContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerSlim = Object.assign(BannerSlimComponent, {\n Content: BannerSlimContent,\n Text: BannerSlimText,\n Image: BannerSlimImage,\n Button: BannerSlimButton,\n Dismiss: BannerSlimDismiss,\n Actions: BannerSlimActions\n})\n\nBannerSlimComponent.displayName = 'BannerSlim'\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport {\n ButtonBack as BaseButtonBack,\n ButtonNext as BaseButtonNext\n} from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { CSS, styled } from '~/stitches'\n\nconst buttonStyles = {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n size: '$5',\n top: '50%',\n transform: 'translateY(-50%)',\n transition: 'color 150ms ease-in-out',\n '&:hover': {\n color: '$primary900'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&:disabled': {\n color: '$grey200'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious = (props: { css: CSS }) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext = (props: { css: CSS }) => (\n <StyledButtonNext {...props}>\n <Icon is={ChevronRight} />\n </StyledButtonNext>\n)\n","import { DotGroup } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselPagination = styled(DotGroup, {\n justifyContent: 'center',\n '& button': {\n bg: '$grey600',\n border: 'none',\n borderRadius: '50%',\n cursor: 'pointer',\n mx: '$1',\n p: '$1',\n size: '$space$3',\n transition: 'all 100ms ease-in',\n '&[class*=\"selected\"]': {\n bg: '$primary800'\n },\n '&:hover, &:focus': {\n bg: '$primary900'\n }\n }\n})\n","import { Slide as BaseSlide } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nconst StyledSlide = styled(BaseSlide, {})\n\nexport const CarouselSlide = ({\n children,\n ...remainingProps\n}: React.ComponentProps<typeof StyledSlide> & { index: number }) => (\n <StyledSlide {...remainingProps} tag=\"div\">\n {/* padding to create the gap between slides */}\n <Box css={{ px: '$3' }}>{children}</Box>\n </StyledSlide>\n)\n","import { Slider as BaseSlider } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselSlider = styled(BaseSlider, {\n cursor: 'grab',\n ml: '50%',\n overflow: 'hidden',\n transform: 'translateX(-50%)',\n '& [class*=\"sliderTray_\"]': {\n p: 'unset',\n m: 'unset',\n transition: 'transform 500ms cubic-bezier(.645,.045,.355,1)'\n },\n '& [class*=\"slide_\"]': {\n float: 'left',\n pb: '0 !important'\n },\n '& [class*=\"slideInner\"]': {\n display: 'flex',\n justifyContent: 'center'\n },\n variants: {\n overflow: {\n true: {\n overflow: 'visible'\n }\n }\n }\n})\n","import { CarouselContext, CarouselProvider } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { CSSWrapper } from '~/utilities'\n\nimport { CarouselArrowNext, CarouselArrowPrevious } from './CarouselArrows'\nimport { CarouselPagination } from './CarouselPagination'\nimport { CarouselSlide } from './CarouselSlide'\nimport { CarouselSlider } from './CarouselSlider'\n\ntype CarouselProps = {\n slideHeight: number\n slideWidth: number\n numSlides: number\n}\n\nexport const CarouselComponent = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}: CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>) => (\n <CSSWrapper css={css}>\n <CarouselProvider\n naturalSlideWidth={slideWidth}\n naturalSlideHeight={slideHeight}\n totalSlides={numSlides}\n {...props}\n >\n {children}\n </CarouselProvider>\n </CSSWrapper>\n)\n\n/**\n * Documentation about the hook usage\n * https://github.com/express-labs/pure-react-carousel#hooks-and-usecontext\n */\nexport const useCarousel = () => React.useContext(CarouselContext)\n\nexport const Carousel = Object.assign(CarouselComponent, {\n ArrowNext: CarouselArrowNext,\n ArrowPrevious: CarouselArrowPrevious,\n Pagination: CarouselPagination,\n Slide: CarouselSlide,\n Slider: CarouselSlider\n})\n\nCarouselComponent.displayName = 'Carousel'\n","import { Minus, Ok } from '@atom-learning/icons'\nimport * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\n\nconst CheckboxContainer = styled('div', {\n position: 'relative',\n zIndex: 1\n})\n\nconst CheckboxHitArea = styled('div', {\n position: 'absolute',\n inset: '-$3',\n opacity: 0.5\n})\n\nconst StyledIndicator = styled(RadixCheckbox.Indicator, {})\n\nconst StyledCheckbox = styled(RadixCheckbox.Root, {\n appearance: 'none',\n position: 'relative',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '3px',\n color: 'white',\n bg: 'white',\n cursor: 'pointer',\n size: '$1',\n p: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 50ms ease-out',\n flexShrink: 0,\n\n // hover circle\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: '-$2',\n zIndex: -1,\n borderRadius: '50%',\n bg: '$primary300',\n opacity: 0,\n transform: 'scale(0)',\n transition: 'opacity 125ms ease-in-out, transform 125ms ease-in-out'\n },\n '&:hover': {\n '&::before': {\n opacity: 1,\n transform: 'scale(1)'\n }\n },\n\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '-1px'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\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: 'sm'\n}\n\nexport const Checkbox: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledCheckbox>\n> = React.forwardRef(({ size = 'md', checked, ...rest }, ref) => {\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return (\n <CheckboxContainer>\n <StyledCheckbox ref={ref} checked={checked} size={size} {...rest}>\n <CheckboxHitArea />\n <StyledIndicator asChild>\n <Icon\n is={checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3'\n }}\n size={iconSize}\n />\n </StyledIndicator>\n </StyledCheckbox>\n </CheckboxContainer>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupMountedContextValue = {\n mounted: CheckboxGroupItemValue[]\n handleItemMountedChange: (\n newItemMounted: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\nexport const CheckboxGroupMountedContext =\n React.createContext<CheckboxGroupMountedContextValue>({\n mounted: [],\n handleItemMountedChange: () => null\n })\n\nexport const CheckboxGroupMountedProvider = (props) => {\n const { handleItemMountedChange: handleItemMountedChangeFurtherUpContext } =\n React.useContext(CheckboxGroupMountedContext)\n\n const [mounted, setMounted] = React.useState<CheckboxGroupItemValue[]>([])\n const handleItemMountedChange = React.useCallback(\n (newItemMounted, itemValue) => {\n handleItemMountedChangeFurtherUpContext?.(newItemMounted, itemValue)\n setMounted((prevMounted) => {\n const newMountedSet = new Set(prevMounted)\n newItemMounted\n ? newMountedSet.add(itemValue)\n : newMountedSet.delete(itemValue)\n const newMounted = Array.from(newMountedSet)\n return newMounted\n })\n },\n [handleItemMountedChangeFurtherUpContext]\n )\n\n const value = React.useMemo<CheckboxGroupMountedContextValue>(\n () => ({ mounted, handleItemMountedChange }),\n [mounted, handleItemMountedChange]\n )\n\n return <CheckboxGroupMountedContext.Provider value={value} {...props} />\n}\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupCheckedContextValue = {\n checked: CheckboxGroupItemValue[]\n handleItemCheckedChange: (\n newItemChecked: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\ntype CheckboxGroupCheckedContextProps = {\n checked?: CheckboxGroupCheckedContextValue['checked']\n defaultChecked?: CheckboxGroupCheckedContextValue['checked']\n onCheckedChange?: (\n checked: CheckboxGroupCheckedContextValue['checked']\n ) => void\n}\n\nexport const CheckboxGroupCheckedContext =\n React.createContext<CheckboxGroupCheckedContextValue>({\n checked: [],\n handleItemCheckedChange: () => null\n })\n\nconst generateNewCheckedFn = (\n currentChecked: CheckboxGroupCheckedContextValue['checked']\n) => {\n return (newItemChecked, itemValue) => {\n const newCheckedSet = new Set(currentChecked)\n newItemChecked\n ? newCheckedSet.add(itemValue)\n : newCheckedSet.delete(itemValue)\n const newChecked = Array.from(newCheckedSet)\n return newChecked\n }\n}\n\nexport const CheckboxGroupCheckedProvider = ({\n checked: controlledChecked,\n defaultChecked = [],\n onCheckedChange,\n ...rest\n}: React.PropsWithChildren<CheckboxGroupCheckedContextProps>) => {\n const [checked, setChecked] = React.useState(defaultChecked)\n\n const handleItemControlledCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n if (!controlledChecked) return () => null\n const newCheckedFn = generateNewCheckedFn(controlledChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n },\n [onCheckedChange, controlledChecked]\n )\n\n const handleItemCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n setChecked((prevChecked) => {\n const newCheckedFn = generateNewCheckedFn(prevChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n return newChecked\n })\n },\n [onCheckedChange]\n )\n\n const value = React.useMemo<CheckboxGroupCheckedContextValue>(() => {\n const isControlled = Array.isArray(controlledChecked)\n return {\n checked: isControlled\n ? (controlledChecked as CheckboxGroupCheckedContextValue['checked']) // We're literally JUST checking it above but TS still flags it, wrongly, so casting\n : checked,\n handleItemCheckedChange: isControlled\n ? handleItemControlledCheckedChange\n : handleItemCheckedChange\n }\n }, [\n checked,\n handleItemCheckedChange,\n handleItemControlledCheckedChange,\n controlledChecked\n ])\n\n return <CheckboxGroupCheckedContext.Provider value={value} {...rest} />\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupAllItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'checked' | 'defaultChecked'\n>\n\nexport const CheckboxGroupAllItem = ({\n onCheckedChange,\n title = 'all',\n ...rest\n}: CheckboxGroupAllItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { mounted: mountedItems } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n mountedItems.forEach((value) => {\n handleItemCheckedChangeContext(newChecked, value)\n })\n onCheckedChange?.(newChecked)\n }\n\n const isAllChecked = (() => {\n if (!checkedItems.length || !mountedItems.length) return false\n\n if (mountedItems.every((mountedItem) => checkedItems.includes(mountedItem)))\n return true\n\n if (mountedItems.some((mountedItem) => checkedItems.includes(mountedItem)))\n return 'indeterminate'\n\n return false\n })()\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={isAllChecked}\n title={title}\n {...rest}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'onCheckedChange' | 'checked' | 'defaultChecked'\n> & {\n onCheckedChange?: (newChecked: boolean) => void\n}\n\nexport const CheckboxGroupItem = ({\n value,\n title,\n onCheckedChange,\n ...rest\n}: CheckboxGroupItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { handleItemMountedChange } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n handleItemCheckedChangeContext(newChecked, value)\n onCheckedChange?.(newChecked)\n }\n\n React.useEffect(() => {\n handleItemMountedChange(true, value)\n return () => {\n handleItemMountedChange(false, value)\n }\n }, [handleItemMountedChange, value])\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={checkedItems.includes(value)}\n title={title ?? String(value)}\n {...rest}\n />\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { CheckboxGroupMountedProvider } from './CheckboxGroup.context'\n\ntype CheckboxGroupSubProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n}\nconst StyledSlot = styled(Slot)\n\nexport const CheckboxGroupSub = ({\n asChild = false,\n ...rest\n}: CheckboxGroupSubProps): JSX.Element => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport {\n CheckboxGroupCheckedProvider,\n CheckboxGroupMountedProvider\n} from './CheckboxGroup.context'\nimport type { CheckboxGroupItemValue } from './CheckboxGroup.types'\nimport { CheckboxGroupAllItem } from './CheckboxGroupAllItem'\nimport { CheckboxGroupItem } from './CheckboxGroupItem'\nimport { CheckboxGroupSub } from './CheckboxGroupSub'\n\ntype CheckboxGroupRootProps = Omit<\n React.ComponentProps<typeof Box>,\n 'defaultChecked'\n> & {\n checked?: CheckboxGroupItemValue[]\n onCheckedChange?: (checked: CheckboxGroupItemValue[]) => void\n defaultChecked?: CheckboxGroupItemValue[]\n asChild?: boolean\n}\n\nconst StyledSlot = styled(Slot)\n\nconst CheckboxGroupRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n asChild = false,\n ...rest\n}: CheckboxGroupRootProps) => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupCheckedProvider\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n >\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n </CheckboxGroupCheckedProvider>\n )\n}\n\nexport const CheckboxGroup = Object.assign(CheckboxGroupRoot, {\n Item: CheckboxGroupItem,\n AllItem: CheckboxGroupAllItem,\n Sub: CheckboxGroupSub\n})\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\ntype TreeListItemProps = React.ComponentProps<typeof Flex>\n\nconst StyledTreeListItem = styled(Flex, {\n '&:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const TreeListItem = React.forwardRef(\n (\n props: TreeListItemProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <StyledTreeListItem\n as=\"li\"\n gap={2}\n align=\"center\"\n {...props}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"li\"`\n ref={ref}\n role=\"treeitem\"\n />\n )\n }\n)\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeCollapsibleContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const TreeCollapsibleContext =\n React.createContext<TreeCollapsibleContextValue>({})\nconst TreeCollapsibleProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <TreeCollapsibleContext.Provider value={{ triggerRef, setTriggerRef }}>\n {children}\n </TreeCollapsibleContext.Provider>\n )\n}\n\nconst StyledCollapsibleTreeItemRoot = styled(Root, {\n width: '100%'\n})\n\ntype TreeCollapsibleProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof StyledCollapsibleTreeItemRoot>\nexport const TreeCollapsible = React.forwardRef(\n (\n props: TreeCollapsibleProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <TreeListItem ref={ref}>\n <TreeCollapsibleProvider>\n <StyledCollapsibleTreeItemRoot {...props} />\n </TreeCollapsibleProvider>\n </TreeListItem>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(Flex, {\n width: '100%',\n p: 0,\n m: 0,\n listStyle: 'none',\n '& &': {\n pl: '$space$4'\n }\n})\n\ntype TreeListProps = Omit<React.ComponentProps<typeof Flex>, 'direction'>\n\nexport const TreeList: React.ForwardRefExoticComponent<TreeListProps> =\n React.forwardRef((props, ref) => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"ul\"`\n <StyledList as=\"ul\" ref={ref} {...props} direction=\"column\" />\n ))\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeList } from './TreeList'\n\nconst StyledTreeCollapsibleContent = styled(Content, {\n '&[data-state=\"open\"]': {},\n '&[data-state=\"closed\"]': {\n display: 'none'\n }\n})\n\ntype TreeCollapsibleContentProps = React.ComponentProps<\n typeof StyledTreeCollapsibleContent\n> &\n React.ComponentProps<typeof TreeList>\n\nexport const TreeCollapsibleContent: React.ForwardRefExoticComponent<TreeCollapsibleContentProps> =\n React.forwardRef(({ children, ...rest }, ref): JSX.Element => {\n const { triggerRef } = React.useContext(TreeCollapsibleContext)\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledTreeCollapsibleContent\n onKeyDown={handleOnKeydown}\n {...rest}\n asChild\n >\n <TreeList ref={ref} role=\"group\">\n {children}\n </TreeList>\n </StyledTreeCollapsibleContent>\n )\n })\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledTreeIcon = styled(Icon, {\n flexShrink: 0,\n alignSelf: 'start',\n my: '$1'\n})\nexport const TreeIcon = (\n props: React.ComponentProps<typeof StyledTreeIcon>\n): JSX.Element => <StyledTreeIcon size=\"md\" {...props} />\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\ntype TStyledTreeTextProps = React.ComponentProps<typeof Text>\n\nconst StyledTreeText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n py: '$0',\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n})\n\nexport const TreeText = (props: TStyledTreeTextProps): JSX.Element => {\n return <StyledTreeText size=\"md\" as=\"span\" {...props} noCapsize />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeIcon } from './TreeIcon'\nimport { TreeText } from './TreeText'\n\nconst StyledItemContent = styled(Flex, {\n width: '100%',\n position: 'relative',\n minHeight: '$3',\n pl: '$6'\n})\n\ntype TreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const TreeItemContent = React.forwardRef(\n (\n { children, ...rest }: TreeItemContentProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ): JSX.Element => {\n return (\n <StyledItemContent gap={2} align=\"center\" ref={ref} {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <TreeText>{child}</TreeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <TreeIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n }\n)\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeItemContent } from './TreeItemContent'\n\nconst StyledTreeCollapsibleTrigger = styled(TreeItemContent, {\n cursor: 'pointer'\n})\n\nconst StyledActionIcon = styled(ActionIcon, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none',\n '& svg': {\n transition: 'transform 300ms'\n },\n '&[data-state=\"closed\"] > svg': {\n transform: 'rotate(-90deg)'\n },\n '&[data-state=\"open\"] > svg': {\n transform: 'rotate(0deg)'\n }\n})\n\ntype TNavigationMenuCollapsibleTriggerProps = React.ComponentProps<\n typeof TreeItemContent\n> & {\n label: string\n}\n\nexport const TreeCollapsibleTrigger = ({\n children,\n label,\n ...rest\n}: TNavigationMenuCollapsibleTriggerProps) => {\n const { setTriggerRef, triggerRef } = React.useContext(TreeCollapsibleContext)\n\n return (\n <StyledTreeCollapsibleTrigger\n {...rest}\n onClick={(event) => {\n rest.onClick?.(event)\n triggerRef?.current?.click()\n }}\n >\n <Trigger asChild>\n <StyledActionIcon\n size=\"sm\"\n ref={setTriggerRef}\n label={label}\n theme=\"neutral\"\n hasTooltip={false}\n onClick={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon is={ChevronDown} />\n </StyledActionIcon>\n </Trigger>\n {children}\n </StyledTreeCollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { TreeItemContent } from './TreeItemContent'\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeItemProps = React.ComponentProps<typeof TreeItemContent>\n\nexport const TreeItem = ({ children, ...rest }: TreeItemProps): JSX.Element => {\n return (\n <TreeListItem>\n <TreeItemContent {...rest}>{children}</TreeItemContent>\n </TreeListItem>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsible } from './TreeCollapsible'\nimport { TreeCollapsibleContent } from './TreeCollapsibleContent'\nimport { TreeCollapsibleTrigger } from './TreeCollapsibleTrigger'\nimport { TreeIcon } from './TreeIcon'\nimport { TreeItem } from './TreeItem'\nimport { TreeList } from './TreeList'\nimport { TreeText } from './TreeText'\n\nconst StyledRoot = styled(TreeList, {})\n\ntype TreeProps = React.ComponentProps<typeof StyledRoot>\n\nexport const TreeRoot: React.ForwardRefExoticComponent<TreeProps> =\n React.forwardRef(({ children, ...rest }, ref) => {\n return (\n <StyledRoot {...rest} ref={ref} role=\"tree\">\n {children}\n </StyledRoot>\n )\n })\n\nexport const Tree = Object.assign(TreeRoot, {\n Collapsible: TreeCollapsible,\n CollapsibleContent: TreeCollapsibleContent,\n CollapsibleTrigger: TreeCollapsibleTrigger,\n Item: TreeItem,\n Icon: TreeIcon,\n Text: TreeText\n})\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleProps = Omit<\n React.ComponentProps<typeof Tree.Collapsible> &\n React.ComponentProps<typeof CheckboxGroup.Sub>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsible = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.Collapsible {...rest}>{children}</Tree.Collapsible>\n </CheckboxGroup.Sub>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleContentProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleContent>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleContent = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleContentProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.CollapsibleContent {...rest} forceMount>\n {children}\n </Tree.CollapsibleContent>\n </CheckboxGroup.Sub>\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Tree } from '~/components/tree'\nimport { styled } from '~/stitches'\n\nconst StyledItemContent = styled(Flex, {\n maxWidth: '100%'\n})\n\ntype CheckboxTreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const CheckboxTreeItemContent = ({\n children,\n ...rest\n}: CheckboxTreeItemContentProps): JSX.Element => {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"label\"`\n <StyledItemContent gap={2} align=\"center\" as=\"label\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Tree.Text>{child}</Tree.Text>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <Tree.Icon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxGroupCollapsibleTriggerProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleTrigger> &\n React.ComponentProps<typeof CheckboxGroup.AllItem>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleTrigger = ({\n onCheckedChange,\n title,\n label,\n children,\n disabled,\n ...rest\n}: CheckboxGroupCollapsibleTriggerProps): JSX.Element => {\n const treeCollapsibleTriggerProps = { label }\n const checkboxAllItemProps = { onCheckedChange, title, disabled }\n return (\n <Tree.CollapsibleTrigger {...treeCollapsibleTriggerProps} {...rest}>\n <CheckboxTreeItemContent\n onClick={\n // Don't propagate click and don't open/close the collapsible when the label/checkbox are clicked\n (e) => e.stopPropagation()\n }\n >\n <CheckboxGroup.AllItem {...checkboxAllItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.CollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxTreeItemProps = Omit<\n React.ComponentProps<typeof Tree.Item> &\n React.ComponentProps<typeof CheckboxGroup.Item>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeItem = ({\n value,\n title,\n onCheckedChange,\n children,\n disabled,\n ...rest\n}: CheckboxTreeItemProps): JSX.Element => {\n const checkboxItemProps = { value, title, onCheckedChange, disabled }\n return (\n <Tree.Item {...rest}>\n <CheckboxTreeItemContent>\n <CheckboxGroup.Item {...checkboxItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.Item>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeCollapsible } from './CheckboxTreeCollapsible'\nimport { CheckboxTreeCollapsibleContent } from './CheckboxTreeCollapsibleContent'\nimport { CheckboxTreeCollapsibleTrigger } from './CheckboxTreeCollapsibleTrigger'\nimport { CheckboxTreeItem } from './CheckboxTreeItem'\n\ntype CheckboxTreeRootProps = Omit<\n React.ComponentProps<typeof CheckboxGroup> &\n React.ComponentProps<typeof Tree>,\n 'asChild'\n>\n\nexport const CheckboxTreeRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n ...rest\n}: CheckboxTreeRootProps) => {\n const checkboxGroupProps = { checked, defaultChecked, onCheckedChange }\n return (\n <CheckboxGroup {...checkboxGroupProps} asChild>\n <Tree {...rest} />\n </CheckboxGroup>\n )\n}\n\nexport const CheckboxTree = Object.assign(CheckboxTreeRoot, {\n Collapsible: CheckboxTreeCollapsible,\n CollapsibleContent: CheckboxTreeCollapsibleContent,\n CollapsibleTrigger: CheckboxTreeCollapsibleTrigger,\n Item: CheckboxTreeItem\n})\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { InlineMessageTheme } from './InlineMessage.types'\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 { INLINE_MESSAGE_ICONS } from './InlineMessage.config'\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nconst InlineMessageContainer = styled(Flex, {\n variants: {\n theme: {\n success: { color: '$success' },\n warning: { color: '$warningText', '& svg': { color: '$warningDark' } },\n info: { color: '$info' },\n neutral: { color: '$grey800' },\n error: { color: '$danger' }\n }\n }\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}: TInlineMessageProps) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <Icon\n css={{ mr: '$2' }}\n size=\"sm\"\n is={INLINE_MESSAGE_ICONS[theme as InlineMessageTheme]}\n />\n )}\n <Text as=\"span\" size={size} css={{ transform: 'translateY($space$0)' }}>\n {children}\n </Text>\n </InlineMessageContainer>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities/types'\n\nimport { getTextVariant } from '../text'\n\nconst StyledLabel = styled('label', {\n color: '$grey900',\n fontFamily: '$body',\n m: 0,\n variants: {\n size: {\n sm: getTextVariant({ size: 'sm' }),\n md: getTextVariant({ size: 'md' })\n },\n type: {\n block: {\n display: 'block',\n fontWeight: 600\n },\n inline: {\n display: 'flex',\n fontWeight: 400,\n maxWidth: 'max-content'\n }\n },\n align: { start: {}, center: {} },\n direction: { reverse: {}, row: {} },\n appearance: { standard: {}, modern: {} }\n },\n compoundVariants: [\n {\n type: 'inline',\n align: 'start',\n css: { alignItems: 'flex-start' }\n },\n {\n type: 'inline',\n align: 'center',\n css: { alignItems: 'center' }\n },\n {\n type: 'inline',\n direction: 'reverse',\n css: { flexDirection: 'row-reverse' }\n },\n {\n type: 'inline',\n direction: 'row',\n css: { flexDirection: 'row' }\n },\n {\n type: 'block',\n appearance: 'modern',\n css: { fontWeight: 400 }\n }\n ]\n})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\nexport type LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}: LabelProps) => (\n <StyledLabel\n as={as}\n size={size}\n type={type}\n align={align}\n direction={direction}\n {...rest}\n >\n {children}\n {required && <StyledAsterisk aria-hidden>*</StyledAsterisk>}\n </StyledLabel>\n)\n\nLabel.displayName = 'Label'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { textVariants } from '../text/Text'\n\nexport const StyledLink = styled('a', {\n bg: 'unset',\n border: 'unset',\n p: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primary900',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n pointerEvents: 'none'\n },\n 'p > &, h1 > &, h2 > &, h3 > &, h4 > &, li > &, em > &': {\n fontSize: '100%',\n lineHeight: 1,\n '&::before, &::after': {\n content: 'none'\n }\n },\n variants: textVariants,\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions & { disabled?: boolean }\n>\n\nexport const Link: React.ForwardRefExoticComponent<LinkProps> =\n React.forwardRef(({ as, disabled, href, ...rest }, ref) => (\n <StyledLink\n as={as || (!href ? 'button' : undefined)}\n noCapsize={!href ? true : undefined}\n href={href}\n {...(disabled && { disabled: true })}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n />\n ))\n\nLink.displayName = 'Link'\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\n\ntype DescriptionProps = {\n css?: CSS\n}\n\nexport const Description = ({\n children,\n css\n}: React.PropsWithChildren<DescriptionProps>) => (\n <Text size=\"sm\" css={{ color: '$grey700', maxWidth: '80ch', ...css }}>\n {children}\n </Text>\n)\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { ValidationOptions } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { Link } from '~/components/link'\nimport type { CSS } from '~/stitches'\n\nimport { type LabelProps } from '../label/Label'\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 appearance?: LabelProps['appearance']\n}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel,\n appearance\n}: React.PropsWithChildren<FieldWrapperProps>) => {\n const LabelContainer = hideLabel ? VisuallyHidden.Root : Flex\n\n return (\n <Box css={css}>\n <LabelContainer\n css={{\n justifyContent: 'space-between',\n alignItems: 'center',\n mb: '$3'\n }}\n >\n <Label htmlFor={fieldId} required={required} appearance={appearance}>\n {label}\n </Label>\n {prompt && (\n <Link href={prompt?.link} onClick={prompt?.onClick} size=\"sm\">\n {prompt.label}\n </Link>\n )}\n </LabelContainer>\n {description && (\n <Description css={{ mb: '$3' }}>{description}</Description>\n )}\n {children}\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Box>\n )\n}\n\nFieldWrapper.displayName = 'FieldWrapper'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledRadioButton = styled(RadioGroup.Item, {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '$round',\n color: 'white',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 0,\n size: '$1',\n variants: {\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n },\n transition: 'all 50ms ease-out',\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n borderColor: '$grey800',\n color: '$grey800',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledIndicator = styled(RadioGroup.Indicator, {\n size: '6px',\n borderRadius: '$round',\n backgroundColor: 'currentColor',\n position: 'absolute',\n variants: {\n size: {\n md: {\n size: '6px'\n },\n lg: {\n size: '12px'\n }\n }\n }\n})\n\ntype RadioButtonProps = Override<\n React.ComponentProps<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton = ({ size, ...props }: RadioButtonProps) => {\n return (\n <StyledRadioButton {...props} size={size}>\n <StyledIndicator size={size} />\n </StyledRadioButton>\n )\n}\n\nRadioButton.displayName = 'RadioButton'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\n\nimport { styled } from '~/stitches'\n\nexport const RadioButtonGroup = styled(RadioGroup.Root, {\n display: 'flex',\n flexWrap: 'wrap',\n variants: {\n direction: {\n row: {\n flexDirection: 'row',\n '& > *:not(:last-child)': { mr: '$5' }\n },\n column: { flexDirection: 'column' }\n }\n }\n})\n\nRadioButtonGroup.displayName = 'RadioButtonGroup'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Checkbox } from '~/components/checkbox'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButton } from '~/components/radio-button'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\n\ntype InlineFieldWrapperProps = {\n css?: CSS\n error?: string\n label: string\n required?: boolean\n align?: 'start' | 'center'\n direction?: 'row' | 'reverse'\n description?: string\n}\n\nexport const InlineFieldWrapper = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}: React.PropsWithChildren<InlineFieldWrapperProps>) => (\n <Box css={css}>\n <Label\n align={align}\n direction={direction}\n required={required}\n type=\"inline\"\n >\n {React.Children.map(children, (child: any) => (\n <Box\n css={{\n ...(direction === 'reverse' && { ml: '$3' }),\n ...(direction === 'row' && { 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' && {\n mr: 'calc($space$3 + $sizes$1)'\n }),\n ...(direction === 'row' && {\n ml: 'calc($space$3 + $sizes$1)'\n })\n }}\n >\n {description}\n </Description>\n )}\n </Box>\n)\n\nInlineFieldWrapper.displayName = 'InlineFieldWrapper'\n","import * as React from 'react'\n\nimport { InputField } from '../input-field'\n\nexport type FormCustomContextType =\n | {\n appearance?: React.ComponentProps<typeof InputField>['appearance']\n }\n | undefined\n\nexport const FormCustomContext = React.createContext<FormCustomContextType>({\n appearance: 'standard'\n})\n\nexport const useFormCustomContext = () => React.useContext(FormCustomContext)\n","import * as React from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Mode,\n SubmitErrorHandler,\n SubmitHandler,\n UseFormMethods\n} from 'react-hook-form'\nimport { FormProvider, useForm } from 'react-hook-form'\n\nimport { styled } from '~/stitches'\n\nimport {\n FormCustomContext,\n type FormCustomContextType\n} from './useFormCustomContext'\n\nconst StyledForm = styled('form', {})\n\ntype StyledFormProps = Omit<\n React.ComponentPropsWithoutRef<typeof StyledForm>,\n 'onSubmit' | 'onError'\n>\n\ninterface FormProps<TFormData extends FieldValues> extends StyledFormProps {\n defaultValues?: DefaultValues<TFormData>\n validationMode?: Mode\n onSubmit: SubmitHandler<TFormData>\n onError?: SubmitErrorHandler<TFormData>\n children:\n | React.ReactNode\n | ((methods: UseFormMethods<TFormData>) => React.ReactNode)\n}\n\nexport const Form = <TFormData extends FieldValues>(\n props: FormProps<TFormData> & FormCustomContextType\n) => {\n const {\n children,\n defaultValues,\n validationMode = 'onBlur',\n onSubmit,\n onError,\n appearance,\n ...rest\n } = props\n\n const methods = useForm<TFormData>({\n defaultValues,\n mode: validationMode\n })\n\n return (\n <FormProvider {...methods}>\n <FormCustomContext.Provider value={{ appearance }}>\n <StyledForm\n aria-label=\"form\"\n onSubmit={methods.handleSubmit(onSubmit, onError)}\n {...rest}\n >\n {typeof children === 'function' ? children(methods) : children}\n </StyledForm>\n </FormCustomContext.Provider>\n </FormProvider>\n )\n}\n\nForm.displayName = 'Form'\n","import delve from 'dlv'\nimport { useFormContext } from 'react-hook-form'\n\nexport const useFieldError = (fieldName: string) => {\n const { errors } = useFormContext()\n\n // in case of migration to a newer version of react-hook-form the path needs to updated to account for dynamic fields naming convention\n const fieldPath = fieldName.split(/[,[\\].]+?/).filter(Boolean)\n\n const getErrors = () => delve(errors, fieldPath)\n\n return {\n error: getErrors()?.message\n }\n}\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { Checkbox } from '~/components/checkbox'\nimport {\n FieldElementWrapperProps,\n InlineFieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}: React.ComponentProps<typeof Checkbox> & FieldElementWrapperProps) => {\n const { control } = useFormContext()\n const { error } = useFieldError(name)\n const {\n field: { ref, onChange, value: innerChecked, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue: defaultChecked\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner checked to match what is passed in.\n if (typeof checked !== 'undefined') onChange(checked)\n }, [checked])\n\n return (\n <InlineFieldWrapper\n css={css}\n description={description}\n error={error}\n label={label}\n required={Boolean(validation?.required)}\n >\n <Checkbox\n ref={ref}\n name={innerName}\n {...remainingProps}\n onCheckedChange={(newChecked) => {\n onChange(newChecked)\n onCheckedChange?.(newChecked)\n }}\n value={innerChecked ? CheckboxValue.ON : CheckboxValue.OFF}\n checked={innerChecked}\n {...(error && { state: 'error' })}\n />\n </InlineFieldWrapper>\n )\n}\n\nCheckboxField.displayName = 'CheckboxField'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { getTextVariant } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst overflowElipsis = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}\nexport const StyledChipContent = styled('span', {\n display: 'inline-flex',\n alignItems: 'center',\n px: '$1',\n flexGrow: 1,\n ...overflowElipsis,\n '& > *:not(:last-child)': {\n mr: '$1'\n }\n})\n\nconst toIconSize = { sm: 'sm', md: 'sm', lg: 'md' }\n\nexport const ChipIcon = (props: React.ComponentProps<typeof Icon>) => {\n const rootContext = React.useContext(ChipRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n return <Icon {...props} size={iconSize} />\n}\n\nconst ChipContent = ({ children, ...rest }) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n return (\n <StyledChipContent {...rest}>\n {\n childrenArray.map((child, index) => {\n if (!isSingleChild && typeof child === 'string')\n return (\n <Box as=\"span\" css={overflowElipsis} key={child}>\n {child}\n </Box>\n )\n if (React.isValidElement(child) && child.type === Icon) {\n return <ChipIcon key={`icon-${index}`} {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledChipContent>\n )\n}\n\nexport const StyledRoot = styled(Flex, {\n px: '$2',\n border: '1px solid',\n borderRadius: '$1',\n alignItems: 'center',\n fontFamily: '$body',\n maxWidth: '100%',\n borderColor: '$primary800',\n color: '$primary900',\n bg: '$primary100',\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n sm: {\n height: '$2',\n ...getTextVariant({ size: 'sm' })\n },\n md: {\n height: '$3',\n ...getTextVariant({ size: 'sm' })\n },\n lg: {\n height: '$4',\n ...getTextVariant({ size: 'md' })\n }\n }\n }\n})\n\nexport type TChipRootContext = React.ComponentProps<typeof StyledRoot>\nexport type TChipRootProviderProps = TChipRootContext\n\nexport const ChipRootContext = React.createContext<TChipRootContext>({})\n\nexport const ChipRootProvider = ({\n size,\n children\n}: TChipRootProviderProps) => {\n const value = React.useMemo<TChipRootContext>(() => ({ size }), [size])\n return (\n <ChipRootContext.Provider value={value}>\n {children}\n </ChipRootContext.Provider>\n )\n}\n\nexport type TChipRootProps = TChipRootProviderProps\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\nexport const Chip = Object.assign(ChipRoot, {\n Content: ChipContent,\n Icon: ChipIcon\n})\n\nChipRoot.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Flex> & { as?: any }\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => (\n <Flex direction=\"row\" wrap=\"wrap\" gap={gap} {...rest} ref={ref} />\n))\n","import * as React from 'react'\n\nexport interface IDismissibleGroupContext {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\nexport const DismissibleGroupContext =\n React.createContext<IDismissibleGroupContext>({\n onDismiss: () => null\n })\n\nexport interface IDismissibleGroupProps {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\n\nexport const DismissibleGroupProvider = ({\n children,\n disabled,\n onDismiss\n}: React.PropsWithChildren<IDismissibleGroupProps>) => {\n const value = React.useMemo<IDismissibleGroupContext>(\n () => ({ disabled, onDismiss }),\n [disabled, onDismiss]\n )\n return (\n <DismissibleGroupContext.Provider value={value}>\n {children}\n </DismissibleGroupContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupRootProps extends IDismissibleGroupProps {\n as?: React.ElementType\n}\n\nexport const DismissibleGroupRoot = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<IDismissibleGroupRootProps>) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\n\nDismissibleGroupRoot.displayName = 'DismissibleGroup'\n","import * as React from 'react'\n\nimport { Dismissible } from '~/components/dismissible'\n\nimport { DismissibleGroupContext } from './DismissibleGroupRoot'\n\nexport type TDismissibleGroupItemProps = React.ComponentProps<\n typeof Dismissible\n> & {\n value: React.ReactText\n disabled?: boolean\n}\n\nexport const DismissibleGroupItem = ({\n children,\n value,\n disabled: itemDisabled = false,\n ...rest\n}: React.PropsWithChildren<TDismissibleGroupItemProps>) => {\n const groupContext = React.useContext(DismissibleGroupContext)\n if (groupContext === undefined) {\n throw new Error(\n 'DismissibleGroup.Item can only be used within a DismissibleGroup'\n )\n }\n const { onDismiss, disabled: groupDisabled } = groupContext\n return (\n <Dismissible\n disabled={groupDisabled || itemDisabled}\n {...rest}\n onDismiss={() => onDismiss(value)}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\nexport const DismissibleGroup = Object.assign(DismissibleGroupRoot, {\n Item: DismissibleGroupItem,\n Trigger: DismissibleTrigger\n})\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledChipDismissibleGroupItem = styled(Chip, { px: '$1' })\n\nexport type TChipDismissibleGroupItem = React.ComponentProps<\n typeof DismissibleGroup.Item\n> &\n React.ComponentProps<typeof StyledChipDismissibleGroupItem> & {\n dismissActionLabel: string\n }\n\nexport const ChipDismissibleGroupItem = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}: TChipDismissibleGroupItem) => {\n return (\n <DismissibleGroup.Item asChild {...rest}>\n <StyledChipDismissibleGroupItem size={size}>\n <Chip.Content>{children}</Chip.Content>\n <DismissibleGroup.Trigger asChild>\n <ActionIcon\n label={dismissActionLabel}\n css={{ color: '$grey600' }}\n size={size === 'sm' ? 'xs' : 'sm'}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DismissibleGroup.Trigger>\n </StyledChipDismissibleGroupItem>\n </DismissibleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\n\ntype TChipDismissibleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof DismissibleGroup>\n\nexport const ChipDismissibleGroupRoot: React.ForwardRefExoticComponent<TChipDismissibleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return <ChipGroup as={DismissibleGroup} ref={ref} {...props} />\n })\n","import { ChipDismissibleGroupItem } from './ChipDismissibleGroupItem'\nimport { ChipDismissibleGroupRoot } from './ChipDismissibleGroupRoot'\n\ntype TChipDismissibleGroup = typeof ChipDismissibleGroupRoot & {\n Item: typeof ChipDismissibleGroupItem\n}\n\nexport const ChipDismissibleGroup =\n ChipDismissibleGroupRoot as TChipDismissibleGroup\nChipDismissibleGroup.Item = ChipDismissibleGroupItem\nChipDismissibleGroup.displayName = 'ChipDismissibleGroup'\n","import { Ok } from '@atom-learning/icons'\nimport * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledChipToggleIcon = styled(Icon, {\n display: 'none'\n})\n\nconst StyledChipToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$grey200',\n color: '$grey1000',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: 'white',\n color: '$primary1000'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$grey800',\n bg: 'white',\n borderColor: '$grey600'\n },\n '&[data-state=\"on\"]': {\n '& svg': {\n display: 'block'\n }\n }\n})\n\ntype TChipToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledChipToggleGroupItem>\n\nexport const ChipToggleGroupItem = ({\n size = 'md',\n children,\n ...rest\n}: TChipToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem as=\"button\">\n <StyledChipToggleIcon is={Ok} size={size === 'lg' ? 'md' : 'sm'} />\n <Chip.Content>{children}</Chip.Content>\n </StyledChipToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\ntype RootType = {\n disableDeselect?: boolean\n}\n\ntype ToggleGroupRootProps = React.ComponentProps<typeof ToggleGroup.Root> &\n RootType\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<ToggleGroupRootProps> =\n React.forwardRef(\n (\n { disableDeselect = false, onValueChange, defaultValue, ...rest },\n ref\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<ToggleGroupRootProps['value']>(defaultValue)\n const handleValueChange: ToggleGroupRootProps['onValueChange'] = (\n newValue\n ) => {\n if (disableDeselect && (newValue === '' || newValue?.length === 0))\n return\n setInternalValue(newValue)\n onValueChange?.(newValue)\n }\n\n return (\n // eslint-disable-next-line\n // @ts-ignore Radix types complain on properties depending on whether `type=\"single\"` or `\"multiple\"`. Works correctly so muting.\n <ToggleGroup.Root\n ref={ref}\n onValueChange={handleValueChange}\n value={internalValue}\n {...rest}\n />\n )\n }\n )\n","import { ToggleGroupRoot } from './ToggleGroupRoot'\n\nexport const ToggleGroup = {\n Root: ToggleGroupRoot\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot: React.ForwardRefExoticComponent<TChipToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return (\n <ChipGroup\n ref={ref}\n as={ToggleGroup.Root}\n orientation=\"horizontal\"\n {...props}\n />\n )\n })\n","import { ChipToggleGroupItem } from './ChipToggleGroupItem'\nimport { ChipToggleGroupRoot } from './ChipToggleGroupRoot'\n\ntype TChipToggleGroup = typeof ChipToggleGroupRoot & {\n Item: typeof ChipToggleGroupItem\n}\n\nexport const ChipToggleGroup = ChipToggleGroupRoot as TChipToggleGroup\nChipToggleGroup.Item = ChipToggleGroupItem\nChipToggleGroup.displayName = 'ChipToggleGroupItem'\n","import { ComboboxInput as BaseComboboxInput } from '@reach/combobox'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nexport const StyledComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundRepeat: 'no-repeat, repeat',\n backgroundSize: '20px auto, 100%',\n border: '1px solid $grey700',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n height: '$4',\n pl: '$3',\n pr: '$6',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n variants: {\n size: {\n sm: {\n height: '$3',\n fontSize: '$sm',\n lineHeight: 1.7\n },\n md: {\n height: '$4',\n fontSize: '$md',\n lineHeight: 2\n },\n lg: {\n height: '$5',\n fontSize: '$md',\n lineHeight: 2\n }\n },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type ComboboxInputProps = React.ComponentProps<\n typeof StyledComboboxInput\n>\n\nexport const ComboboxInput: React.ForwardRefExoticComponent<ComboboxInputProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => (\n <StyledComboboxInput size={size} {...rest} ref={ref} />\n ))\n","import { ComboboxList as BaseComboboxList } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxList = styled(BaseComboboxList, {\n listStyle: 'none',\n m: 0,\n p: 0,\n userSelect: 'none'\n})\n","import { ComboboxOption as BaseComboboxOption } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxOption = styled(BaseComboboxOption, {\n color: '$grey900',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$grey100',\n borderRadius: '$0'\n },\n '&[data-user-value]': {\n color: '$primary800'\n }\n})\n","import { ComboboxPopover as BaseComboboxPopover } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxPopover = styled(BaseComboboxPopover, {\n bg: 'white',\n border: '1px solid $grey200',\n borderRadius: '$1',\n boxShadow: '$1',\n boxSizing: 'border-box',\n fontFamily: '$body',\n fontSize: '$md',\n outline: 'none',\n p: '$1',\n transform: 'translateY($space$2)'\n})\n","import { Combobox as BaseCombobox, ComboboxOptionText } from '@reach/combobox'\n\nimport { globalCss, styled } from '~/stitches'\n\nimport { ComboboxInput } from './ComboboxInput'\nimport { ComboboxList } from './ComboboxList'\nimport { ComboboxOption } from './ComboboxOption'\nimport { ComboboxPopover } from './ComboboxPopover'\n\nglobalCss({ ':root': { '--reach-combobox': 1 } })()\n\nexport const Combobox = Object.assign(styled(BaseCombobox, {}), {\n displayName: 'Combobox',\n Option: ComboboxOption,\n Input: ComboboxInput,\n Popover: ComboboxPopover,\n List: ComboboxList,\n OptionText: ComboboxOptionText\n})\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../flex'\nimport { Text } from '../text'\n\nexport const InputBackground = styled(Flex, {\n color: '$grey1000',\n transition: 'background 100ms ease-out, borderColor 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n borderRadius: '$1',\n '&:focus-within': {\n borderColor: '$blue800'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n borderRadius: '$1',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n size: {\n sm: { height: '$3' },\n md: { height: '$4' },\n lg: { height: '$5' },\n xl: { height: '$6' }\n },\n disabled: {\n true: {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n },\n state: {\n error: {}\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nInputBackground.displayName = 'InputBackground'\n\nconst StyledInputText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text as unknown as 'input', {\n // unsets\n appearance: 'none',\n border: 'none',\n background: 'none',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n '&:focus': {\n outline: 'none'\n },\n //\n px: '$3',\n size: '100%'\n})\n\nexport type InputTextProps = Omit<\n React.ComponentProps<typeof StyledInputText>,\n 'size' | 'type' | 'as'\n> & {\n size: React.ComponentProps<typeof Text>['size']\n // override default 'type' property to prevent Input from being used to render\n // checkboxes, radios etc — we have dedicated components for them\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n as?: never\n}\n\nconst toTextSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg'\n}\n\nexport const InputText: React.ForwardRefExoticComponent<InputTextProps> =\n React.forwardRef(({ type = 'text', css, size, ...rest }, ref) => {\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n return (\n <StyledInputText\n ref={ref}\n as=\"input\"\n type={type === 'number' ? 'text' : type}\n inputMode={type === 'number' ? 'numeric' : undefined}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n size={textSize}\n {...rest}\n />\n )\n })\n\nInputText.displayName = 'InputText'\n\ntype InputBackgroundProps = React.ComponentProps<typeof InputBackground>\nexport type InputProps = Omit<\n React.ComponentProps<typeof InputText>,\n 'size' | 'state' | 'appearance'\n> & {\n size?: InputBackgroundProps['size']\n state?: InputBackgroundProps['state']\n appearance?: InputBackgroundProps['appearance']\n}\n\nexport const Input: React.ForwardRefExoticComponent<InputProps> =\n React.forwardRef(\n (\n {\n className,\n size = 'md',\n appearance = 'standard',\n state,\n disabled,\n css,\n ...rest\n },\n ref\n ) => {\n return (\n <InputBackground\n size={size}\n appearance={appearance}\n disabled={disabled}\n state={state}\n css={css}\n className={className}\n >\n <InputText size={size} ref={ref} disabled={disabled} {...rest} />\n </InputBackground>\n )\n }\n )\n\nInput.displayName = 'Input'\n","import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport type { InputProps } from '~/components/input'\nimport { Input } from '~/components/input'\nimport { getFieldIconSize } from '~/utilities'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps> =\n React.forwardRef(\n (\n {\n css,\n hidePasswordText = 'Hide password',\n showPasswordText = 'Show password',\n size = 'md',\n ...restProps\n },\n ref\n ) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState<boolean>(false)\n const togglePasswordVisibility = () =>\n setIsPasswordVisible((currentState) => !currentState)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', ...css }}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n css={{ pr: '$sizes$2' }}\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n css={{\n bottom: size === 'lg' ? '4px' : 0,\n position: 'absolute',\n right: 0\n }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </Box>\n )\n }\n )\n\nPasswordInput.displayName = 'PasswordInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { PasswordInput } from '~/components/password-input'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n css = {},\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n ...remainingProps\n}: PasswordFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' }}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\nimport { throttle } from 'throttle-debounce'\n\nimport type { CSS } from '~/stitches'\nimport { Override } from '~/utilities'\n\nimport { Box } from '../box'\nimport { FieldElementWrapperProps } from '../field-wrapper'\nimport { Flex } from '../flex'\nimport { InlineMessage } from '../inline-message'\nimport { PasswordField } from '../password-field'\nimport { PasswordInput } from '../password-input'\n\ntype ValidationResult = Record<string, boolean>\n\ntype CreatePasswordFieldProps = Override<\n React.ComponentProps<typeof PasswordInput> & FieldElementWrapperProps,\n {\n label?: string\n name?: string\n validate: (\n password: string\n ) => Promise<ValidationResult | undefined> | ValidationResult\n defaultValidation: ValidationResult\n messageDirection?: 'row' | 'column'\n }\n>\n\nexport const CreatePasswordField = ({\n validate,\n defaultValidation,\n messageDirection = 'row',\n label = 'Create a password',\n name = 'password',\n css,\n validation,\n appearance,\n ...remainingProps\n}: CreatePasswordFieldProps) => {\n const { formState, control } = useFormContext()\n const [isFocused, setIsFocused] = React.useState<boolean>(false)\n const [validationResult, setValidationResult] =\n React.useState<ValidationResult>(defaultValidation)\n\n const touched: boolean = formState.touched[name]\n const error =\n formState.errors[name]?.type === 'validate' ||\n Object.values(validationResult).every((isValid) => !isValid)\n\n const validatePassword = React.useCallback(\n async (password: string) => {\n const result = await validate(password)\n\n if (result) {\n invariant(\n typeof result === 'object',\n 'The validate function must return an object'\n )\n\n setValidationResult(result)\n return Object.values(result).every((isValid) => isValid)\n }\n\n return false\n },\n [setValidationResult]\n )\n\n const handleChange = React.useCallback(throttle(500, validatePassword), [\n validatePassword\n ])\n\n const getMessageTheme = (result: boolean, isFocused: boolean) => {\n if (result) return 'success'\n\n return isFocused ? 'neutral' : 'error'\n }\n\n const showValidation: boolean =\n (control.mode.isOnBlur && (isFocused || touched)) ||\n (control.mode.isOnSubmit && (isFocused || (formState.isSubmitted && error)))\n\n return (\n <Box css={css}>\n <PasswordField\n label={label}\n name={name}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n validation={{ ...validation, validate: validatePassword }}\n appearance={appearance}\n {...remainingProps}\n />\n {showValidation && (\n <Flex\n style={{\n '--direction': messageDirection\n }}\n css={{\n mt: '$2',\n gap: '$2',\n flexWrap: 'wrap',\n flexDirection: 'var(--direction)'\n }}\n >\n {Object.entries(validationResult).map(([message, result]) => (\n <InlineMessage\n key={message}\n theme={getMessageTheme(result, isFocused)}\n >\n {message}\n </InlineMessage>\n ))}\n </Flex>\n )}\n </Box>\n )\n}\n\nCreatePasswordField.displayName = 'CreatePasswordField'\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\n Row,\n RowSelectionState,\n RowSelectionTableState,\n SortDirection,\n SortingTableState,\n Table,\n VisibilityTableState\n} from '@tanstack/react-table'\nimport * as React from 'react'\nexport enum AsyncDataState {\n NONE = 'none',\n PENDING = 'pending',\n FULFILLED = 'fulfilled',\n REJECTED = 'rejected'\n}\n\nexport type TAsyncDataResult = {\n total: number\n results: TableData\n}\n\nexport type TAsyncDataOptions = {\n pageIndex: number\n pageSize: number\n sortBy?: string\n sortDirection?: SortDirection\n globalFilter?: string\n}\n\nexport type TGetAsyncData = (\n options: TAsyncDataOptions\n) => Promise<TAsyncDataResult | undefined>\n\nexport type TablePosition = {\n top: number | null\n bottom: number | null\n offsetTop: number\n isVisible: boolean\n}\n\nexport type DataTableContextType<T = unknown> = Table<T> & {\n setIsSortable: React.Dispatch<React.SetStateAction<boolean>>\n applyPagination: () => void\n getTotalRows: () => number\n isSortable: boolean\n asyncDataState?: AsyncDataState\n runAsyncData?: (options: Partial<TAsyncDataOptions>) => Promise<void>\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n rowSelection: RowSelectionState\n tablePosition?: TablePosition\n setTablePosition: React.Dispatch<React.SetStateAction<TablePosition>>\n data: TAsyncDataResult\n columns: any\n tableId: string\n /**\n * Directly update the data array that the table rows are built from.\n * This is useful when re-ordering rows, but is high-risk if you're not sure what you're doing!\n *\n * Note in particular that this value is also updated if you update the value of the `DataTable`'s `data` prop\n * — it's probably best to only use one of those two methods for any given table.\n */\n setData: React.Dispatch<React.SetStateAction<TAsyncDataResult>>\n}\n\nexport type TableData = Array<Record<string, unknown>>\n\nexport type InitialState = Partial<\n VisibilityTableState &\n ColumnOrderTableState &\n ColumnPinningTableState &\n FiltersTableState &\n SortingTableState &\n ExpandedTableState &\n GroupingTableState &\n ColumnSizingTableState &\n PaginationTableState &\n RowSelectionTableState\n>\n\nexport type TDefaultSort = { column: string; direction: SortDirection }\n","import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n","import type { PaginationState } from '@tanstack/react-table'\nimport React from 'react'\n\nconst defaultPaginationState: PaginationState = { pageIndex: 0, pageSize: 10 }\nexport const usePagination = (\n initialPaginationState: PaginationState | undefined\n) => {\n const [isPaginated, setIsPaginated] = React.useState<boolean>(\n !!initialPaginationState\n )\n\n const [paginationState, setPaginationState] = React.useState<\n PaginationState | undefined\n >({\n ...defaultPaginationState,\n ...(initialPaginationState || {})\n })\n\n const applyPagination = React.useCallback(() => {\n setIsPaginated(true)\n }, [])\n\n return {\n isPaginated,\n paginationState,\n setPaginationState,\n applyPagination\n }\n}\n","import type { SortingState } from '@tanstack/react-table'\nimport React from 'react'\n\nimport { TDefaultSort } from './DataTable.types'\nexport const useSortByColumn = (defaultSort: TDefaultSort | undefined) => {\n const [isSortable, setIsSortable] = React.useState<boolean>(false)\n\n const [sorting, setSorting] = React.useState<SortingState>(\n defaultSort\n ? [\n {\n id: defaultSort.column,\n desc: defaultSort.direction === 'desc'\n }\n ]\n : []\n )\n\n return { isSortable, setIsSortable, sorting, setSorting }\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n OnChangeFn,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport { Box } from '../box'\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TablePosition,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n disabledRows,\n enableRowSelection,\n onRowSelectionChange,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const [tablePosition, setTablePosition] = React.useState<TablePosition>({\n top: null,\n bottom: null,\n offsetTop: 0,\n isVisible: true\n })\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const hasSelectedRows = Object.keys(rowSelection || {}).length > 0\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: (updaterOrValue) => {\n if (onRowSelectionChange) onRowSelectionChange(updaterOrValue)\n setRowSelection(updaterOrValue)\n },\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const isSubRow = row.depth > 0\n\n if (isSubRow) return true\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n disabledRows,\n enableRowSelection,\n rowSelection,\n tablePosition,\n setTablePosition,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTableBody = styled('tbody', {\n variants: {\n striped: {\n true: {\n '& tr': {\n '&:nth-child(odd)': { bg: 'white' },\n '&:nth-child(even)': { bg: '$grey100' }\n }\n },\n false: {\n '& tr': {\n bg: 'white'\n }\n }\n }\n }\n})\n\ntype TableBodyProps = React.ComponentProps<typeof StyledTableBody>\n\nexport const TableBody = ({ striped = true, ...rest }: TableBodyProps) => (\n <StyledTableBody striped={striped} {...rest} />\n)\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderBottom: '1px solid $grey200',\n boxSizing: 'border-box',\n color: '$grey800',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: '600' }\n})\n\nTableCell.displayName = 'TableCell'\n","import { styled } from '~/stitches'\n\nexport const TableFooter = styled('tfoot', {})\n\nTableFooter.displayName = 'TableFooter'\n","import { styled } from '~/stitches'\n\nexport const TableFooterCell = styled('td', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n textAlign: 'left',\n verticalAlign: 'middle'\n})\n\nTableFooterCell.displayName = 'TableFooterCell'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const TABLE_HEADER_THEMES = {\n PRIMARY: 'primary',\n PRIMARY_DARK: 'primaryDark',\n PRIMARY_LIGHT: 'primaryLight',\n LIGHT: 'light',\n WHITE: 'white'\n} as const\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n '& th': {\n bg: '$primary800'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n '& th': {\n bg: '$primary1000'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_LIGHT]: {\n '& th': {\n bg: '$primary200',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n '& th': {\n bg: '$grey100',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.WHITE]: {\n '& th': {\n bg: 'white',\n color: '$grey1000'\n }\n }\n },\n isSticky: {\n true: {\n position: 'sticky',\n top: 0,\n zIndex: 3\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader = ({\n theme = 'primaryDark',\n isSticky = false,\n ...rest\n}: TableHeaderProps) => {\n return <StyledTableHeader theme={theme} isSticky={isSticky} {...rest} />\n}\n\nTableHeader.displayName = 'TableHeader'\n","import { styled } from '~/stitches'\n\nexport const TableHeaderCell = styled('th', {\n borderBottom: '1px solid $grey200',\n color: 'white',\n fontFamily: '$body',\n fontWeight: 600,\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&[colspan]': {\n textAlign: 'center'\n }\n})\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledRow = styled('tr', {\n bg: 'unset'\n})\n\nexport const TableRow: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRow>\n> = React.forwardRef((props, ref) => <StyledRow {...props} ref={ref} />)\n\nTableRow.displayName = 'TableRow'\n","import * as React from 'react'\n\nimport { CSS } from '../../stitches'\n\ninterface IUseStickyColumnsCss {\n columnsCss: CSS\n}\n\nexport const useStickyColumnsCss = ({\n numberOfStickyColumns,\n wrapperRef\n}: {\n numberOfStickyColumns: number\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n}): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n const generateColumnsCss = React.useCallback(() => {\n let accWidth = 0\n\n // Getting the table header cells elements to use their width to set the left position in the sticky columns.\n const tableHeaderCells = wrapperRef.current?.querySelectorAll('th')\n const tableHeaderElements = Array.from(tableHeaderCells || [])\n\n // Getting only the number of sticky columns from the elements array that is what we are interested in.\n const stickyColumns = tableHeaderElements.slice(0, numberOfStickyColumns)\n\n const newColumnsCss = stickyColumns.reduce((acc: CSS, column, index) => {\n const elementNumber = index + 1\n const cssObject = {\n ...acc,\n [`& td:nth-of-type(${elementNumber}), th:nth-of-type(${elementNumber})`]:\n {\n position: 'sticky',\n left: `${accWidth}px`,\n minWidth: `${column.offsetWidth}px`, // fixing width for sticky columns\n zIndex: '2'\n }\n }\n\n accWidth += tableHeaderCells?.item(index).clientWidth || 0\n\n return cssObject\n }, {} as CSS)\n\n return newColumnsCss\n }, [numberOfStickyColumns, wrapperRef])\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n const newColumnsCss = generateColumnsCss()\n\n setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef, generateColumnsCss])\n\n return {\n columnsCss\n }\n}\n","import React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Box } from '../box'\nimport { useStickyColumnsCss } from './useStickyColumnsCss'\n\nexport const TableStickyColumnsContainer = ({\n children,\n numberOfStickyColumns = 0,\n css,\n ...restProps\n}: React.PropsWithChildren<{\n numberOfStickyColumns?: number\n css?: CSS\n}>) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const wrapperRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss({\n numberOfStickyColumns,\n wrapperRef\n })\n\n const handleScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const newHasScroll = event.currentTarget.scrollLeft > 0\n if (newHasScroll !== hasScroll) {\n setHasScroll(newHasScroll)\n }\n }\n\n return (\n <Box\n onScroll={handleScroll}\n role=\"scrollbar\"\n ref={wrapperRef}\n css={{\n overflow: 'auto',\n overscrollBehaviorX: 'contain',\n maxWidth: '100%',\n position: 'relative',\n ...columnsCss,\n [`& td:nth-child(${numberOfStickyColumns}), th:nth-child(${numberOfStickyColumns})`]:\n {\n ...(hasScroll && {\n boxShadow: '$colors$alpha200 -2px -3px 9px 1px',\n clipPath: 'inset(0px -10px 0px 0px)'\n })\n },\n '& td': {\n bg: 'inherit'\n },\n ...css\n }}\n {...restProps}\n >\n {children}\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { TableBody } from './TableBody'\nimport { TableCell } from './TableCell'\nimport { TableFooter } from './TableFooter'\nimport { TableFooterCell } from './TableFooterCell'\nimport { TableHeader } from './TableHeader'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { TableRow } from './TableRow'\nimport { TableStickyColumnsContainer } from './TableStickyColumnsContainer'\n\nconst StyledTable = styled('table', {\n borderCollapse: 'separate',\n borderSpacing: 0,\n fontFamily: '$sans',\n fontSize: '$sm',\n width: '100%',\n position: 'relative',\n zIndex: 0,\n variants: {\n size: {\n md: {\n '& td, & th': {\n height: '$4',\n padding: '$1 $3'\n }\n },\n lg: {\n '& td, & th': {\n height: '$5',\n padding: '$2 $3'\n }\n },\n xl: {\n '& td, & th': {\n height: '$6',\n padding: '$4 $3'\n }\n }\n },\n corners: {\n round: {\n '& th': {\n '&:first-of-type': { borderTopLeftRadius: '$0' },\n '&:last-of-type': { borderTopRightRadius: '$0' }\n },\n '& tr:last-child': {\n '& td:first-child': { borderBottomLeftRadius: '$0' },\n '& td:last-child': { borderBottomRightRadius: '$0' }\n }\n },\n square: {}\n }\n }\n})\n\ntype TableProps = React.ComponentProps<typeof StyledTable> & {\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n scrollContainerkey?: string\n maxRowDepth?: number\n}\n\nconst TableComponent = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n scrollContainerCss,\n scrollContainerkey,\n ...rest\n },\n ref\n ) => {\n const tableComponent = (\n <StyledTable ref={ref} size={size} corners={corners} {...rest} />\n )\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n key={scrollContainerkey}\n css={scrollContainerCss}\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n }\n)\n\nexport const Table = Object.assign(TableComponent, {\n Body: TableBody,\n Cell: TableCell,\n Footer: TableFooter,\n FooterCell: TableFooterCell,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Row: TableRow,\n StickyColumnsContainer: TableStickyColumnsContainer\n})\n\nTableComponent.displayName = 'Table'\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & {\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nexport const DataTableBody = ({\n striped = false,\n rowAction,\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return <DataTable.Row row={row} key={row.id} rowAction={rowAction} />\n })}\n </Table.Body>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledDivider = styled('hr', {\n border: 0,\n bg: '$grey200',\n variants: {\n orientation: {\n horizontal: { height: 1, width: '100%' },\n vertical: { height: '100%', width: 1, minHeight: '$3' }\n }\n }\n})\n\nexport const Divider: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledDivider>\n> = React.forwardRef(({ orientation = 'horizontal', ...rest }, ref) => {\n return <StyledDivider ref={ref} orientation={orientation} {...rest} />\n})\n","import * as React from 'react'\n\nimport { Button } from '~/components/button'\nimport { Divider } from '~/components/divider'\nimport { CSS, styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\nconst StyledContainer = styled(Flex, {\n p: '$2',\n width: '100%',\n mb: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '$6',\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0',\n variants: {\n isRowSelected: {\n true: {\n bg: '$primary100'\n }\n }\n }\n})\n\nconst BulkActionsDefaultActions = ({\n children\n}: {\n children: React.ReactElement\n}): React.ReactElement | null => {\n const { rowSelection } = useDataTable()\n\n if (Object.keys(rowSelection || {}).length > 0) return null\n\n return children\n}\n\nconst BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n children\n}: {\n cancelLabel?: string\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n\nexport const DataTableBulkActions = Object.assign(\n ({\n children,\n ...rest\n }: {\n css?: CSS\n children:\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n | [\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >,\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n ]\n }) => {\n const { rowSelection } = useDataTable()\n\n const isRowSelected = Object.keys(rowSelection || {}).length > 0\n\n return (\n <StyledContainer isRowSelected={isRowSelected} {...rest}>\n <DataTable.MetaData />\n\n <Flex css={{ justifyContent: 'flex-end', alignItems: 'center' }}>\n {children}\n </Flex>\n </StyledContainer>\n )\n },\n {\n DefaultActions: BulkActionsDefaultActions,\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { Divider } from '../divider'\nimport { useDataTable } from './DataTableContext'\n\nexport const BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n showDividers = true,\n children\n}: {\n cancelLabel?: string\n showDividers?: boolean\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {showDividers && React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Badge } from '../badge'\nimport { Button } from '../button'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Text } from '../text'\nimport { BulkActionsSelectedRowActions } from './DataTableBulkActionsSelectedRowActions'\nimport { useDataTable } from './DataTableContext'\n\nconst ActionBarPositioner = styled('div', {})\n\nconst StyledContainer = styled(Flex, {\n p: '$2 $1 $2 $3',\n mb: '$4',\n mt: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n borderRadius: '$3',\n bg: '$primary800',\n pointerEvents: 'all',\n zIndex: 2,\n width: '100%',\n mx: '$4',\n boxShadow: '$2',\n '@sm': {\n maxWidth: '800px'\n },\n '@lg': {\n p: '$3 $1 $3 $4',\n mb: '$5',\n maxWidth: '1000px'\n },\n '@xl': {\n p: '$4 $2 $4 $24',\n mb: '$5',\n maxWidth: '1400px'\n }\n})\n\nexport const DataTableBulkActionsFloating = Object.assign(\n ({ css, children, ...rest }: { css?: CSS; children: React.ReactNode }) => {\n const { rowSelection, toggleAllPageRowsSelected } = useDataTable()\n\n const actionBarRef = React.useRef<HTMLDivElement>(null)\n\n const numberOfSelectedRows = React.useMemo(() => {\n return Object.keys(rowSelection || {}).length\n }, [rowSelection])\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (numberOfSelectedRows === 0) return null\n\n return (\n <ActionBarPositioner\n ref={actionBarRef}\n css={{\n left: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n position: 'sticky',\n pointerEvents: 'none'\n }}\n >\n <StyledContainer {...rest}>\n <Flex\n justify=\"flex-start\"\n align=\"center\"\n gap={2}\n css={{ flex: 'auto' }}\n >\n <Badge\n theme=\"success\"\n size=\"xs\"\n emphasis=\"subtle\"\n css={{ minWidth: '24px', height: '24px' }}\n >\n {numberOfSelectedRows}\n </Badge>\n <Text size=\"sm\" weight=\"bold\" css={{ color: 'white' }}>\n selected\n </Text>\n </Flex>\n\n <Flex\n justify=\"flex-end\"\n align=\"center\"\n gap={3}\n css={{ flex: 'auto' }}\n >\n {children}\n\n <ActionIcon\n appearance=\"simple\"\n theme=\"white\"\n size=\"md\"\n onClick={handleDeselectAllPageRows}\n label=\"close\"\n >\n <Icon is={Close} />\n </ActionIcon>\n </Flex>\n </StyledContainer>\n </ActionBarPositioner>\n )\n },\n {\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import type { Cell } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\n\ntype DataTableDataCellProps = {\n cell: Cell<Record<string, unknown>, unknown>\n}\n\nexport const DataTableDataCell = ({ cell }: DataTableDataCellProps) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import * as React from 'react'\n\nimport type { EmptyStateProps } from './EmptyState'\n\ntype EmptyStateProviderProps = {\n size?: EmptyStateProps['size']\n}\n\ntype EmptyStateContextValue = EmptyStateProviderProps\n\nexport const EmptyStateContext = React.createContext<EmptyStateContextValue>({})\n\nexport const EmptyStateProvider = ({\n size,\n children\n}: React.PropsWithChildren<EmptyStateProviderProps>) => {\n const value = React.useMemo<EmptyStateContextValue>(() => ({ size }), [size])\n return (\n <EmptyStateContext.Provider value={value}>\n {children}\n </EmptyStateContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateBody = styled(Text, {\n color: '$grey800',\n fontWeight: 400,\n variants: {\n size: {\n xs: {\n fontSize: '$sm',\n mb: '$4'\n },\n sm: {\n fontSize: '$sm',\n mb: '$4'\n },\n md: {\n fontSize: '$sm',\n mb: '$4'\n },\n lg: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n },\n xl: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateBodyProps = React.ComponentProps<typeof StyledEmptyStateBody> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateBody = (props: EmptyStateBodyProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateBody size={size} {...props} />\n}\n","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateImage = styled(Image, {\n variants: {\n size: {\n xs: {\n maxWidth: '56px',\n maxHeight: '32px',\n mb: '$4'\n },\n sm: {\n maxWidth: '84px',\n maxHeight: '48px',\n mb: '$4'\n },\n md: {\n maxWidth: '126px',\n maxHeight: '72px',\n mb: '$4'\n },\n lg: {\n maxWidth: '190px',\n maxHeight: '142px',\n mb: 'calc($4 + $2)'\n },\n xl: {\n maxWidth: '285px',\n maxHeight: '213px',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateImageProps = React.ComponentProps<typeof StyledEmptyStateImage>\n\nexport const EmptyStateImage = (props: EmptyStateImageProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateImage size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateTitle = styled('h2', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n m: 0,\n variants: {\n size: {\n xs: {\n fontSize: '$md',\n mb: '$3'\n },\n sm: {\n fontSize: '$md',\n mb: '$3'\n },\n md: {\n fontSize: '$md',\n mb: '$3'\n },\n lg: {\n fontSize: '$lg',\n mb: '$4'\n },\n xl: {\n fontSize: '$lg',\n mb: '$4'\n }\n }\n }\n})\n\ntype EmptyStateTitleProps = React.ComponentProps<\n typeof StyledEmptyStateTitle\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateTitle = (props: EmptyStateTitleProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateTitle size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateProvider } from './EmptyState.context'\nimport { EmptyStateBody } from './EmptyStateBody'\nimport { EmptyStateImage } from './EmptyStateImage'\nimport { EmptyStateTitle } from './EmptyStateTitle'\n\nconst EmptyStateContainer = styled(Flex, {\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n '& > *:last-child': {\n mb: 0\n },\n variants: {\n size: {\n xs: {\n p: '$2'\n },\n sm: {\n p: '$3'\n },\n md: {\n p: '$4'\n },\n lg: {\n p: '$5'\n },\n xl: {\n p: '$6'\n }\n }\n }\n})\n\nexport type EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nconst EmptyStateComponent = ({ size = 'sm', ...rest }: EmptyStateProps) => (\n <EmptyStateProvider size={size}>\n <EmptyStateContainer size={size} {...rest} />\n </EmptyStateProvider>\n)\n\nexport const EmptyState = Object.assign(EmptyStateComponent, {\n Image: EmptyStateImage,\n Title: EmptyStateTitle,\n Body: EmptyStateBody\n})\n\nEmptyStateComponent.displayName = 'EmptyState'\n","import * as React from 'react'\n\nimport { EmptyState } from '../empty-state'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableEmptyStateProps = React.ComponentProps<typeof EmptyState>\n\nexport const DataTableEmptyState = ({\n children,\n ...rest\n}: DataTableEmptyStateProps) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (!isEmpty) return null\n\n return <EmptyState {...rest}>{children}</EmptyState>\n}\n","import * as React from 'react'\n\nimport { AsyncDataState, DataTableContextType } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableError = ({\n children\n}: {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}) => {\n const { asyncDataState, runAsyncData } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.REJECTED) return null\n\n return children(runAsyncData)\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nexport const OptionalVisuallyHiddenWrapper = ({\n children,\n hidden = false\n}: React.PropsWithChildren<{\n hidden?: boolean\n}>) => {\n if (hidden) return <VisuallyHidden.Root>{children}</VisuallyHidden.Root>\n\n return children ? (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n ) : null\n}\n\nOptionalVisuallyHiddenWrapper.displayName = 'OptionalVisuallyHiddenWrapper'\n","import { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { Input, InputBackground, InputText } from '~/components/input'\nimport { CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n value?: string\n defaultValue?: string\n onValueChange?: (newValue: string) => void\n clearText?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nenum INPUT_ICON {\n SEARCH = 'SEARCH',\n CLEAR = 'CLEAR'\n}\n\nconst StyledIcon = styled(Icon, {\n color: '$grey700',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n right: '$2',\n size: '$1'\n },\n md: {\n right: 10,\n size: 20\n },\n lg: {\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInputText = styled(InputText, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.ForwardRefExoticComponent<SearchInputProps> =\n React.forwardRef(\n (\n {\n size = 'md',\n appearance = 'standard',\n css,\n value,\n defaultValue = '',\n onValueChange,\n clearText = 'Clear',\n onChange,\n ...remainingProps\n },\n ref\n ) => {\n const [inputElRef, setInputElRef] = useCallbackRef()\n const [innerValue, setInnerValue] = React.useState(defaultValue)\n const [activeIcon, setActiveIcon] = React.useState<INPUT_ICON>(\n defaultValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH\n )\n React.useEffect(() => {\n if (typeof value === 'undefined') return\n setInnerValue(value)\n setActiveIcon(value ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }, [value])\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n React.useImperativeHandle(\n ref,\n () => inputElRef.current as HTMLInputElement\n )\n\n const handleClear = () => {\n const inputEl = inputElRef.current\n if (!inputEl) return\n\n // https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call?.(inputEl, '')\n const ev2 = new Event('input', {\n bubbles: true\n })\n inputEl.dispatchEvent(ev2)\n inputEl.focus()\n onValueChange?.('')\n }\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n\n const newValue = event.target.value\n setInnerValue(newValue)\n onValueChange?.(newValue)\n setActiveIcon(newValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }\n\n const getIcon = () => {\n if (activeIcon === INPUT_ICON.SEARCH)\n return (\n <StyledIcon\n is={Search}\n size={size}\n css={{\n size: size == 'sm' ? '$1' : 20,\n top: '50%',\n transform: 'translateY(-50%)'\n }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={iconSize}\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '$1'\n }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <InputBackground\n css={{ position: 'relative', width: 'auto', ...css }}\n size={size}\n appearance={appearance}\n >\n <StyledSearchInputText\n ref={setInputElRef}\n size={size}\n type=\"search\"\n {...remainingProps}\n value={innerValue}\n onChange={handleOnChange}\n css={{ pr: size === 'sm' ? '$5' : '$6' }}\n />\n {getIcon()}\n </InputBackground>\n )\n }\n )\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionalVisuallyHiddenWrapper } from '../../utilities/optional-visually-hidden-wrapper'\nimport { Label } from '../label'\nimport { SearchInput } from '../search-input'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableSearchProps = React.ComponentProps<typeof SearchInput> & {\n label: string\n hideLabel?: boolean\n}\nexport const DataTableGlobalFilter = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}: DataTableSearchProps) => {\n const {\n setGlobalFilter,\n getState,\n resetPagination,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n const { globalFilter } = getState()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n const handleChange = debounce(250, (event) => {\n const {\n target: { value }\n } = event\n\n onChange?.(event)\n resetPagination()\n setGlobalFilter(value)\n })\n\n return (\n <>\n <OptionalVisuallyHiddenWrapper hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionalVisuallyHiddenWrapper>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n size=\"lg\"\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n isSticky?: boolean\n stickyOffset?: number\n headerCss?: CSS\n}\n\nexport const DataTableHead = ({\n sortable = true,\n theme = 'light',\n isSticky = false,\n stickyOffset = 0,\n style,\n css,\n ...props\n}: DataTableHeadProps): React.ReactElement => {\n const {\n getHeaderGroups,\n setIsSortable,\n enableRowSelection,\n getCanSomeRowsExpand,\n tablePosition,\n setTablePosition\n } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n const tableHeaderRowRef = React.useRef<HTMLTableRowElement>(null)\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const headerOffsetRef = React.useRef(0)\n\n const [headerOffset, setHeaderOffset] = React.useState<number>(0)\n const [headerHide, setHeaderHide] = React.useState<boolean>(false)\n\n const tableHeadElement = tableHeaderRowRef?.current?.closest('thead')\n\n if (tableHeadElement && tablePosition?.offsetTop === null) {\n const tableHeadHeight = tableHeadElement.getBoundingClientRect().height\n const intersectionOffset = stickyOffset + tableHeadHeight\n if (tablePosition) {\n setTablePosition({ ...tablePosition, offsetTop: intersectionOffset || 0 })\n }\n }\n\n React.useEffect(() => {\n if (!isSticky) return\n\n if (!tableRef.current && tableHeaderRowRef.current) {\n tableRef.current = tableHeaderRowRef.current.closest(\n 'table'\n ) as HTMLTableElement | null\n }\n\n if (tableRef.current) {\n if (tablePosition?.top !== null && tablePosition?.bottom !== null) {\n const newOffset =\n tablePosition?.top != null &&\n tablePosition?.bottom != null &&\n tablePosition.top < stickyOffset &&\n tablePosition.bottom > 100\n ? -tablePosition.top + stickyOffset\n : 0\n\n if (newOffset !== 0) setHeaderHide(true)\n\n headerOffsetRef.current = newOffset\n setHeaderOffset(newOffset)\n\n requestAnimationFrame(() => {\n setHeaderHide(false)\n })\n }\n }\n }, [isSticky, stickyOffset, tablePosition])\n\n return (\n <Table.Header\n theme={theme}\n style={{\n ...style,\n '--header-offset': `${headerOffset}px`\n }}\n css={{\n position: 'relative',\n zIndex: 3,\n '& tr:not(:last-child) > th': {\n borderBottom: 'none'\n },\n '& tr:not(:first-child) > th': {\n borderRadius: '0 !important'\n },\n ...css\n }}\n {...props}\n >\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row\n key={headerGroup.id}\n ref={tableHeaderRowRef}\n css={{\n ...(isSticky &&\n headerOffset !== 0 && {\n transform: `translateY(var(--header-offset))`,\n opacity: headerHide ? 0 : 1,\n transition: headerHide ? 'none' : `opacity 100ms`,\n transitionDelay: headerHide ? '0ms' : `150ms`,\n '& th:last-child:before': {\n content: '',\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n width: '100%',\n boxShadow: '$0',\n pointerEvents: 'none'\n }\n })\n }}\n >\n {getCanSomeRowsExpand() && (\n <Table.HeaderCell css={{ width: '$4' }} />\n )}\n {enableRowSelection && (\n <Table.HeaderCell css={{ width: '$4' }}>\n <DataTableSelectAllRowsCheckbox />\n </Table.HeaderCell>\n )}\n {headerGroup.headers.map((header) => (\n <DataTable.HeaderCell header={header} key={header.id} />\n ))}\n </Table.Row>\n )\n })}\n </Table.Header>\n )\n}\n","import { ArrowDown, ArrowUp } from '@atom-learning/icons'\nimport { styled } from '@atom-learning/stitches-react'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\nimport { useHover } from 'react-aria'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\ntype DataTableHeaderProps = React.ComponentProps<typeof Table.HeaderCell> & {\n header: Header<Record<string, unknown>, unknown>\n}\n\nconst StyledTableHeaderCell = styled(Table.HeaderCell, {\n variants: {\n isSortable: {\n true: {\n cursor: 'pointer',\n position: 'relative',\n '& > *': {\n position: 'relative'\n },\n '&:before': {\n content: '',\n position: 'absolute',\n inset: 0,\n opacity: 0,\n backgroundColor: '$primary100',\n transition: 'opacity 200ms ease'\n },\n '&:hover': {\n '&::before': {\n opacity: 0.5\n }\n }\n }\n }\n }\n})\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown\n}\n\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1', stroke: '$primary900' }}\n />\n)\n\nexport const DataTableHeaderCell = ({\n header,\n children,\n css,\n ...props\n}: DataTableHeaderProps) => {\n const sortDirection = header.column.getIsSorted()\n const { isSortable: isSortableTable } = useDataTable()\n // false for display columns, e.g. \"Actions\"\n const isDataColumn = header.column.getCanSort()\n\n const { hoverProps, isHovered } = useHover({})\n\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLTableCellElement>,\n callback: (event: unknown) => void | undefined\n ) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n callback(event as unknown)\n }\n }\n\n const headerSortingHandler = header.column.getToggleSortingHandler()\n\n return (\n <StyledTableHeaderCell\n isSortable={isSortableTable && isDataColumn}\n colSpan={header.colSpan}\n onClick={\n isSortableTable && isDataColumn && headerSortingHandler\n ? headerSortingHandler\n : undefined\n }\n onKeyDown={(event) =>\n isSortableTable &&\n isDataColumn &&\n headerSortingHandler &&\n handleKeyDown(event, headerSortingHandler)\n }\n tabIndex={isSortableTable && isDataColumn ? 0 : -1}\n {...hoverProps}\n css={css}\n {...props}\n >\n <Flex\n align=\"center\"\n justify={header.colSpan > 1 ? 'center' : 'flex-start'}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex\n align=\"center\"\n css={{\n position: 'relative',\n width: '24px',\n height: '24px',\n ml: '$2',\n bg: isHovered ? '$primary200' : '$primary100',\n borderRadius: '$0'\n }}\n >\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n </Flex>\n </StyledTableHeaderCell>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Loader } from '../loader'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nconst PendingState = styled(Loader, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 1\n})\n\nexport const DataTableLoading = (\n props: React.ComponentProps<typeof PendingState>\n) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData = ({\n copy,\n css\n}: {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}) => {\n const { getState, columns, getRowModel, rowSelection } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.length\n\n const selectedRows = Object.keys(rowSelection || {}).length\n\n const copyMerged = { ...defaultCopy, ...copy }\n\n const getColumnDisplayName = (id: string) => {\n const sortedColumn = columns.find((col) => col.id === id)\n return sortedColumn?.header || id\n }\n\n const getSortingString = (sorting) => {\n return `${copyMerged.separator} ${\n copyMerged.sorted_by\n } ${getColumnDisplayName(sorting[0].id)} ${\n sorting[0].desc ? copyMerged.descending : copyMerged.ascending\n }`\n }\n\n return (\n <Text weight=\"bold\" css={css}>{`${selectedRows || totalRows} ${\n (selectedRows || totalRows) === 1 ? 'item' : 'items'\n } ${selectedRows ? 'selected' : ''} ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableRowSelectionCheckbox = ({\n row,\n checked,\n onCheckedChange,\n label = `Row ${row.id} selection`\n}: {\n row: Row<Record<string, unknown>>\n checked: boolean | 'indeterminate'\n onCheckedChange: (value: boolean) => void\n label?: string\n}): React.ReactElement => {\n const { tableId } = useDataTable()\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_row_${row.id}_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n <Checkbox\n size=\"lg\"\n style={{ '--depth': row.depth }}\n css={{ ml: 'calc((var(--depth, 0) * 2) * 4px)' }}\n checked={checked}\n onCheckedChange={onCheckedChange}\n name={`${tableId}_row_${row.id}_selection`}\n disabled={!row.getCanSelect()}\n />\n </>\n )\n}\n","import { ChevronDown, ChevronRight } from '@atom-learning/icons'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\n\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nconst StyledRow = styled(Table.Row, {\n bg: 'initial',\n variants: {\n isSelected: {\n true: {\n '&:nth-child(odd), &:nth-child(even)': {\n bg: '$primary100'\n }\n }\n },\n isDisabled: {\n true: {\n opacity: '30%'\n }\n },\n isFocusable: {\n true: {\n transition: 'transform 150ms ease-in-out, box-shadow 150ms ease-in-out',\n '&:hover': {\n transform: 'translateY(-1px)',\n boxShadow: '0px 4px 11px 0px hsla(0, 0%, 12%, 0.12)',\n position: 'relative',\n zIndex: 3\n },\n '&:focus': {\n outline: '2px solid $primary500',\n outlineOffset: '-4px',\n '& td': {\n bg: 'transparent'\n }\n }\n }\n }\n }\n})\n\nconst isElementInteractive = (element: Element | null): boolean => {\n if (!element) return false\n if (element.closest('button, a, input, select, textarea')) return true\n if (element.getAttribute('role') === 'button') return true\n return false\n}\n\nexport const DataTableRow = ({ row, rowAction }: DataTableRowProps) => {\n const { enableRowSelection, disabledRows, getCanSomeRowsExpand } =\n useDataTable()\n\n const isDisabled = !!disabledRows?.[row.id]\n\n const toggleExpandHandler = row.getToggleExpandedHandler()\n const toggleSelectHandler = row.getToggleSelectedHandler()\n\n const getCheckedState = (): boolean | 'indeterminate' => {\n if (row.getIsSomeSelected()) return 'indeterminate'\n return row.getIsSelected()\n }\n\n const handleRowClick = (\n rowData: Row<Record<string, unknown>>,\n event: React.MouseEvent<HTMLTableRowElement>\n ) => {\n if (!rowAction) return\n\n // Skip if clicking on an interactive element\n const rowElement = (event.target as Element).closest('tr')\n if (!rowElement || isElementInteractive(event.target as Element)) {\n return\n }\n\n rowAction(rowData.original, event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n if (isElementInteractive(event.target as Element)) {\n return\n }\n event.preventDefault()\n handleRowClick(\n row,\n event as unknown as React.MouseEvent<HTMLTableRowElement>\n )\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const nextRow = currentRow?.nextElementSibling as HTMLElement\n if (nextRow && nextRow.tagName === 'TR') {\n nextRow.focus()\n }\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const previousRow = currentRow?.previousElementSibling as HTMLElement\n if (previousRow && previousRow.tagName === 'TR') {\n previousRow.focus()\n }\n }\n }\n\n return (\n <StyledRow\n isSelected={row.getIsSelected()}\n isDisabled={isDisabled}\n isFocusable={!!rowAction && !isDisabled}\n {...(rowAction && {\n onClick: (event) => handleRowClick(row, event),\n tabIndex: 0,\n css: { cursor: 'pointer' },\n onKeyDown: handleKeyDown\n })}\n >\n {getCanSomeRowsExpand() && (\n <Table.Cell\n data-testid={`expand-icon-${row.id}`}\n css={{ width: '$4', cursor: row.getCanExpand() ? 'pointer' : 'auto' }}\n onClick={toggleExpandHandler}\n >\n {row.getCanExpand() && (\n <Icon is={row.getIsExpanded() ? ChevronDown : ChevronRight} />\n )}\n </Table.Cell>\n )}\n\n {enableRowSelection && (\n <Table.Cell css={{ width: '$4' }}>\n <DataTableRowSelectionCheckbox\n row={row}\n checked={getCheckedState()}\n onCheckedChange={toggleSelectHandler}\n />\n </Table.Cell>\n )}\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </StyledRow>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n stickyHeaderOffset?: number\n headerCss?: CSS\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme = 'white',\n css,\n scrollOptions = {\n numberOfStickyColumns: 0,\n stickyHeaderOffset: 0,\n hasStickyHeader: false\n },\n rowAction,\n ...props\n}: DataTableTableProps): JSX.Element | null => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n rowSelection,\n enableRowSelection,\n tableId,\n setTablePosition\n } = useDataTable()\n\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const isTableVisible = React.useRef(false)\n const isScrolling = React.useRef<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n if (typeof document === 'undefined') return null\n return document.body\n }, [])\n\n React.useEffect(() => {\n if (!scrollTarget || typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const updatePosition = () => {\n if (tableRef.current) {\n const tableTop = tableRef.current.getBoundingClientRect().top\n const tableBottom = tableRef.current.getBoundingClientRect().bottom\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n top: tableTop,\n bottom: tableBottom\n }))\n }\n isScrolling.current = false\n }\n\n const handleScroll = () => {\n if (!isScrolling.current) {\n requestAnimationFrame(updatePosition)\n isScrolling.current = true\n }\n }\n\n if (!tableRef.current) return\n\n const observerOffset = scrollOptions?.stickyHeaderOffset || 0\n\n const observerOptions = {\n rootMargin: `-${observerOffset}px 0px -${observerOffset}px 0px`,\n threshold: 0\n }\n\n const handleTableIntersection = (entries: IntersectionObserverEntry[]) => {\n if (!entries || entries.length === 0) return\n const entry = entries[0]\n\n isTableVisible.current = entry.isIntersecting\n\n if (scrollTarget) {\n if (entry.isIntersecting) {\n // add scroll listener\n scrollTarget?.addEventListener('scroll', handleScroll)\n } else {\n // remove scroll listener\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n isVisible: entry.isIntersecting\n }))\n }\n\n const tableObserver = new IntersectionObserver(\n handleTableIntersection,\n observerOptions\n )\n\n //only track table position if we have a sticky header or bulk actions active\n if (\n tableRef.current &&\n (scrollOptions.hasStickyHeader ||\n Object.keys(rowSelection || {}).length > 0)\n ) {\n tableObserver.observe(tableRef.current)\n }\n\n return () => {\n tableObserver.disconnect()\n if (scrollTarget) {\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n }, [\n rowSelection,\n scrollOptions.hasStickyHeader,\n scrollOptions?.stickyHeaderOffset,\n scrollTarget,\n setTablePosition\n ])\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n <div style={{ display: 'contents' }}>\n <Table\n {...props}\n ref={tableRef}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCss={{\n ...scrollOptions.scrollContainerCss\n }}\n scrollContainerkey={buildScrollContainerKey()}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n stickyOffset={scrollOptions.stickyHeaderOffset}\n css={scrollOptions.headerCss}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n </div>\n </>\n )\n}\n","import { DragHandle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nexport const StyledHandle = styled(ActionIcon, {\n color: 'inherit !important',\n fill: 'currentColor',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n '& *': {\n pointerEvents: 'none'\n }\n },\n variants: {\n isDragging: {\n true: {\n cursor: 'grabbing'\n },\n false: {\n cursor: 'grab'\n }\n }\n }\n})\n\nexport type THandleProps = Omit<\n React.ComponentProps<typeof StyledHandle>,\n 'children'\n> &\n Pick<React.ComponentProps<typeof Icon>, 'size'>\n\nexport const Handle: React.ForwardRefExoticComponent<THandleProps> =\n React.forwardRef(({ isDragging, size, ...rest }, ref) => {\n return (\n <StyledHandle\n ref={ref}\n isDragging={isDragging}\n appearance=\"simple\"\n hasTooltip={false}\n size={size}\n {...rest}\n >\n <Icon is={DragHandle} />\n </StyledHandle>\n )\n })\n\nHandle.displayName = 'Handle'\n","import { useSortable } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Handle as DragHandle, THandleProps } from './Handle'\n\nexport type TSortableHandleProps = {\n targetId: React.ReactText\n disabled?: boolean\n label?: string\n} & Omit<THandleProps, 'label'>\n\nexport const SortableHandle = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}: TSortableHandleProps) => {\n const { attributes, listeners, isDragging, setActivatorNodeRef } =\n useSortable({ id: targetId })\n\n return (\n <DragHandle\n ref={setActivatorNodeRef}\n isDragging={isDragging}\n label={label}\n disabled={disabled}\n {...(!disabled ? listeners : {})}\n {...(!disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableHandle.displayName = 'SortableHandle'\n","import type { UniqueIdentifier } from '@dnd-kit/core'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport type TSortableItemProps = {\n id: UniqueIdentifier\n asChild?: boolean\n isDragHandle?: boolean\n disabled?: boolean\n css?: CSS\n style?: Pick<React.ComponentProps<typeof Box>, 'style'>\n}\n\nconst StyledSlot = styled(Slot)\n\nexport const SortableItem = ({\n id,\n asChild = false,\n css,\n style,\n isDragHandle = false,\n disabled,\n ...rest\n}: React.PropsWithChildren<TSortableItemProps>) => {\n const { transform, setNodeRef, isDragging, listeners, attributes } =\n useSortable({ id })\n\n const Component = asChild ? StyledSlot : Box\n return (\n <Component\n ref={setNodeRef}\n style={{\n ...style,\n '--scale': 1,\n '--translate-x': transform?.x || 0,\n '--translate-y': transform?.y || 0\n }}\n css={{\n transform:\n 'translateX(calc(var(--translate-x) * 1px)) translateY(calc(var(--translate-y) * 1px)) scale(var(--scale))',\n zIndex: isDragging ? 5 : undefined,\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n '& *': { pointerEvents: 'none' }\n },\n ...(isDragHandle && { cursor: isDragging ? 'grabbing' : 'grab' }),\n ...css\n }}\n data-dragging={isDragging}\n data-disabled={disabled}\n {...(isDragHandle && !disabled ? listeners : {})}\n {...(isDragHandle && !disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableItem.displayName = 'SortableItem'\n","import type { DragEndEvent, UniqueIdentifier } from '@dnd-kit/core'\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates\n} from '@dnd-kit/sortable'\nimport * as React from 'react'\n\ntype TSortableRootProps = {\n sortableIds: React.ReactText[]\n onSortChange: (onSortChangeData: {\n order: UniqueIdentifier[]\n oldIndex: number\n newIndex: number\n }) => void\n}\n\nexport const SortableRoot = ({\n sortableIds,\n onSortChange,\n children\n}: React.PropsWithChildren<TSortableRootProps>) => {\n const [order, setOrder] = React.useState<React.ReactText[]>(sortableIds)\n React.useEffect(() => {\n setOrder(sortableIds)\n }, [sortableIds])\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n )\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (active.id && over?.id && active.id !== over?.id) {\n setOrder((order) => {\n const oldIndex = order.indexOf(active.id)\n const newIndex = order.indexOf(over.id)\n const newOrder = arrayMove(order, oldIndex, newIndex)\n onSortChange({ order: newOrder, oldIndex, newIndex })\n return newOrder\n })\n }\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={order}>{children}</SortableContext>\n </DndContext>\n )\n}\n\nSortableRoot.displayName = 'SortableRoot'\n","import { SortableHandle as Handle } from './SortableHandle'\nimport { SortableItem as Item } from './SortableItem'\nimport { SortableRoot as Root } from './SortableRoot'\n\nexport const Sortable = { Root, Item, Handle }\n","import type { Row } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Sortable } from '~/components/sortable'\n\nimport { Table } from '../../table'\nimport { DataTableDataCell } from '../DataTableDataCell'\nexport type DataTableDraggableRowProps = React.ComponentProps<\n typeof Table.Row\n> & {\n row: Row<Record<string, unknown>>\n idColumn?: string\n}\n\nexport const DragAndDropTableRow = ({\n row,\n idColumn = 'id'\n}: DataTableDraggableRowProps) => {\n const rowId = row.original[idColumn] as React.ReactText\n return (\n <Sortable.Item id={rowId} asChild>\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n if (i === 0) {\n return (\n <Table.Cell key={cell.id}>\n <Sortable.Handle\n targetId={rowId}\n css={{ display: 'inline-block' }}\n />\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n }\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n </Sortable.Item>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../../table'\nimport { useDataTable } from '../DataTableContext'\nimport { DragAndDropTableRow } from './DragAndDropTableRow'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & { idColumn?: string }\n\nexport const DragAndDropTableBody = ({\n striped = false,\n idColumn = 'id',\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return (\n <DragAndDropTableRow row={row} key={row.id} idColumn={idColumn} />\n )\n })}\n </Table.Body>\n )\n}\n","import { arrayMove } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Sortable } from '../../sortable'\nimport { Table } from '../../table'\nimport { DataTable } from '../DataTable'\nimport { AsyncDataState, TAsyncDataResult } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DataTableLoading } from '../DataTableLoading'\nimport type { DataTableTableProps } from '../DataTableTable'\nimport { DragAndDropTableBody } from './DragAndDropTableBody'\n\ntype DragAndDropTableProps = DataTableTableProps & {\n idColumn?: string\n onDragAndDrop?: (onDragAndDropData: {\n oldIndex: number\n newIndex: number\n newData: TAsyncDataResult\n }) => void\n}\n\nexport const DragAndDropTable = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}: DragAndDropTableProps) => {\n const { asyncDataState, data, setData } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n\n const rowIds = React.useMemo(\n () =>\n data.results.map((row) => {\n return row[idColumn] as React.ReactText\n }),\n [data]\n )\n const handleSortChange = React.useCallback(\n ({ oldIndex, newIndex }) => {\n const sortedResults = arrayMove(data.results, oldIndex, newIndex)\n const newData = { results: sortedResults, total: data.total }\n setData({ results: sortedResults, total: data.total })\n onDragAndDrop?.({ oldIndex, newIndex, newData })\n },\n [data, onDragAndDrop]\n )\n\n return (\n <Sortable.Root onSortChange={handleSortChange} sortableIds={rowIds}>\n <DataTableLoading />\n <Table\n {...props}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head theme={theme} sortable={sortable} />\n <DragAndDropTableBody striped={striped} idColumn={idColumn} />\n </Table>\n </Sortable.Root>\n )\n}\n","export enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n\nexport const VIEW_ALL_POPOVER = 'VIEW_ALL_POPOVER'\nexport const GO_TO_PREVIOUS_PAGE = 'GO_TO_PREVIOUS_PAGE'\nexport const GO_TO_NEXT_PAGE = 'GO_TO_NEXT_PAGE'\n","import {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationItemsToRender } from './types'\n\nexport const getPaginationElementsToRender = (\n currentPage: number,\n pagesCount: number,\n visibleElementsCount: number\n): PaginationItemsToRender => {\n const paginationPages = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n /*\n * As we always show the `<` `>` arrows,\n * subtract 2 from `visibleElementsCount` (one for each of the GO_TO_PREVIOUS/NEXT_PAGE arrows)\n * to get the `visiblePagesCount`\n */\n let visiblePagesCount = visibleElementsCount - 2\n const withPreviousNextPageArrows = (paginationPages) => [\n GO_TO_PREVIOUS_PAGE,\n ...paginationPages,\n GO_TO_NEXT_PAGE\n ]\n\n /**\n * If fewer pages than threshold for truncating render them all.\n *\n * pagesCount: 6\n * visibleElementsCount: >=6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, 3, 4, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | 3 | | 4 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (pagesCount <= visiblePagesCount) {\n return withPreviousNextPageArrows(paginationPages)\n }\n\n /**\n * If current page is either at the very start or at the very end of the pages\n */\n const canFitEdgePage = visibleElementsCount >= 5\n const canFitViewAllPopover = visibleElementsCount >= 4\n const canFitPages = visibleElementsCount >= 3\n\n if (canFitViewAllPopover) {\n // Subtract one from visiblePagesCount to accomodate for us adding the `[…]` VIEW_ALL_POPOVER\n visiblePagesCount -= 1\n }\n\n if (canFitEdgePage) {\n // Subtract one more from visiblePagesCount to accomodate for us adding the GO_TO_PREVIOUS/NEXT_PAGE arrows\n visiblePagesCount -= 1\n }\n\n const firstPage = paginationPages[0]\n const lastPage = paginationPages[paginationPages.length - 1]\n\n /**\n * If we're truncating and current page is at the start of the page list,\n * render the initial truncated page list, e.g.\n *\n * pagesCount: 8\n * currentPage: 1/2\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | … | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage < visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitPages) {\n newPaginationItems.push(...paginationPages.slice(0, visiblePagesCount))\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitEdgePage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page is towards the end of the\n * page list (depending on visibleElementsCount),\n * render a truncated page list from the end, e.g.\n *\n * pagesCount: 8\n * currentPage: 7/8\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, VIEW_ALL_POPOVER, 7, 8, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | … | | 7 | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage > pagesCount - visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitEdgePage) {\n newPaginationItems.push(firstPage)\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitPages) {\n newPaginationItems.push(\n ...paginationPages.slice(pagesCount - visiblePagesCount, pagesCount)\n )\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page doesn't meet any of the previous conditions\n * (we're in the middle)\n * render a truncated page list from a specific index relative to `currentPage`, e.g.\n *\n * currentPage: 4\n * visibleElementsCount: 6 // VisibleElementsAmount.LESS\n * returns [GO_TO_PREVIOUS_PAGE, 3, 4, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 3 | | 4 | | … | | 6 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n * currentPage: 6\n * visibleElementsCount: 8 // VisibleElementsAmount.MORE\n * returns [GO_TO_PREVIOUS_PAGE, 4, 5, 6, 7, VIEW_ALL_POPOVER, 10, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 4 | | 5 | | 6 | | 7 | | … | | 10 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n */\n const canFitCurrentPage = canFitPages\n const canFitCurrentPageAndPreviousPage = visibleElementsCount >= 6\n const canFitCurrentPageAndPreviousPageAndNextPage = visibleElementsCount >= 7\n const canFitLastPage = canFitEdgePage\n\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitCurrentPageAndPreviousPageAndNextPage) {\n newPaginationItems.push(\n ...paginationPages.slice(\n currentPage + 1 - visiblePagesCount,\n currentPage + 1\n )\n )\n } else if (canFitCurrentPageAndPreviousPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - visiblePagesCount, currentPage)\n )\n } else if (canFitCurrentPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - 1, currentPage - 1 + 1)\n )\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitLastPage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[],\n pagesCount: number\n): number | undefined => {\n if (startPage > pagesCount) return\n let nextPage = startPage\n while (disabledPages.includes(nextPage)) {\n nextPage++\n }\n return nextPage\n}\n\nexport const findPreviousAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number | undefined => {\n if (startPage < 1) return\n let previousPage = startPage\n while (disabledPages.includes(previousPage)) {\n previousPage--\n }\n return previousPage\n}\n","import * as React from 'react'\n\nimport { VisibleElementsAmount } from '../pagination.constants'\nimport {\n findNextAvailablePage,\n findPreviousAvailablePage,\n getPaginationElementsToRender\n} from '../pagination.helper'\nimport type { PaginationContextValue, PaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<PaginationContextValue>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n pagesCount: 0,\n onItemHover: () => null,\n paginationItems: [],\n labels: {},\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}: React.PropsWithChildren<PaginationProviderProps>) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n\n const currentPage = selectedPage || internalCurrentPage\n\n const goToPage = React.useCallback(\n (pageNumber: number) => {\n setInternalCurrentPage(pageNumber)\n onSelectedPageChange?.(pageNumber)\n },\n [onSelectedPageChange]\n )\n\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n const goToPreviousPage = React.useCallback(() => {\n if (previousAvailablePage) goToPage(previousAvailablePage)\n }, [goToPage, previousAvailablePage])\n\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(\n nextPage,\n disabledPages,\n pagesCount\n )\n const goToNextPage = React.useCallback(() => {\n if (nextAvailablePage) goToPage(nextAvailablePage)\n }, [goToPage, nextAvailablePage])\n\n const paginationItems = getPaginationElementsToRender(\n currentPage,\n pagesCount,\n visibleElementsCount\n )\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n paginationItems,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n indicatedPages,\n paginationItems,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n ])\n\n return (\n <PaginationContext.Provider value={value}>\n {children}\n </PaginationContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { PaginationContext } from './pagination-context/PaginationContext'\nimport type { PaginationContextValue } from './types'\n\nexport const usePagination = (): PaginationContextValue => {\n const context = React.useContext(PaginationContext)\n\n if (!context) {\n throw new Error(\n 'Ensure that you wrap any components with the PaginationProvider component'\n )\n }\n\n return context\n}\n","import { ChevronRight } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n ml: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationNextButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToNextPage, labels, nextAvailablePage } = usePagination()\n\n const isDisabled = !nextAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToNextPage}\n disabled={isDisabled}\n {...props}\n label={labels?.nextPageButtonLabel || 'Next page'}\n >\n <Icon is={ChevronRight} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport type { PaginationPageProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: '1px solid transparent',\n borderRadius: '$0',\n cursor: 'pointer',\n fontFamily: '$body',\n justifyContent: 'center',\n whiteSpace: 'nowrap',\n width: 'max-content',\n display: 'flex',\n flexDirection: 'column',\n p: '0',\n fontWeight: 400,\n color: '$textSubtle',\n bg: '$base1',\n position: 'relative',\n\n '&:not(:disabled)': {\n '&:hover': {\n color: '$textRegular',\n bg: '$base2'\n },\n '&:active': {\n color: '$textBold',\n bg: '$base3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n md: {\n width: '$4',\n height: '$4'\n }\n },\n selected: {\n true: {\n border: '1px solid $accent9',\n color: '$accent9',\n fontWeight: 600,\n '&:not(:disabled)': {\n '&:hover': {\n borderColor: '$accent10',\n color: '$accent10'\n },\n '&:active': {\n borderColor: '$accent11',\n color: '$accent11'\n }\n }\n }\n },\n indicated: {\n true: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n },\n\n compoundVariants: [\n {\n selected: true,\n indicated: true,\n css: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n boxShadow: '$colors$accent9 0px 0px 0px 1px',\n '&:not(:focus-visible)': {\n borderColor: 'white !important'\n },\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n ]\n})\n\nexport const PaginationPage = ({\n pageNumber,\n css,\n onClick\n}: PaginationPageProps) => {\n const { currentPage, goToPage, indicatedPages, disabledPages, onItemHover } =\n usePagination()\n\n const isIndicated = indicatedPages.includes(pageNumber)\n const isDisabled = disabledPages.includes(pageNumber)\n\n const isSelected = currentPage === pageNumber\n\n const handleOnHover = () => {\n if (isSelected || isDisabled) return\n onItemHover?.(pageNumber)\n }\n\n const handleOnClick = (pageNumber) => {\n onClick?.()\n goToPage(pageNumber)\n }\n\n return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => handleOnClick(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {pageNumber}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Flex, Icon, Popover } from '..'\nimport { PaginationPage } from './PaginationPage'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n const [isOpen, setIsOpen] = React.useState<boolean>(false)\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen} defaultOpen={false}>\n <Popover.Trigger asChild>\n {children || (\n <ActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n label={labels?.popoverTriggerLabel || 'Open pagination popover'}\n data-testid=\"pagination_popover_trigger\"\n >\n <Icon is={Ellypsis} />\n </ActionIcon>\n )}\n </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Flex\n css={{\n p: '$4',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '$1',\n justifyContent: 'center'\n }}\n >\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationPage\n key={pageNumber}\n pageNumber={pageNumber}\n onClick={() => setIsOpen(false)}\n />\n )\n })}\n </Flex>\n </Popover.Content>\n </Popover>\n )\n}\n","import { ChevronLeft } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n mr: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationPreviousButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToPreviousPage, labels, previousAvailablePage } = usePagination()\n\n const isDisabled = !previousAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToPreviousPage}\n disabled={isDisabled}\n {...props}\n label={labels?.previousPageButtonLabel || 'Previous page'}\n >\n <Icon is={ChevronLeft} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPage } from './PaginationPage'\nimport { PaginationPopover } from './PaginationPopover'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport { usePagination } from './usePagination'\n\nexport const PaginationItems = (): JSX.Element => {\n const { paginationItems } = usePagination()\n\n return (\n <>\n {paginationItems.map((paginationItem, i) => {\n switch (paginationItem) {\n case VIEW_ALL_POPOVER:\n return <PaginationPopover key={paginationItem + i} />\n case GO_TO_PREVIOUS_PAGE:\n return <PaginationPreviousButton key={paginationItem} />\n case GO_TO_NEXT_PAGE:\n return <PaginationNextButton key={paginationItem} />\n default:\n return (\n <PaginationPage\n key={paginationItem}\n pageNumber={paginationItem}\n />\n )\n }\n })}\n </>\n )\n}\n","import * as React from 'react'\n\nimport { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '../flex'\nimport { VisibleElementsAmount } from './pagination.constants'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationItems } from './PaginationItems'\nimport { PaginationPopover } from './PaginationPopover'\nimport type { PaginationProps, PaginationProviderProps } from './types'\n\nconst PaginationComponent = ({\n colorScheme,\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children,\n ...rest\n}: PaginationProps) => {\n if (!pagesCount) return null\n\n const paginationProviderProps: PaginationProviderProps = {\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount,\n pagesCount,\n indicatedPages,\n disabledPages,\n onItemHover,\n labels\n }\n\n return (\n <PaginationProvider {...paginationProviderProps}>\n <ColorScheme base=\"grey1\" accent=\"primary1\" {...colorScheme} asChild>\n <Flex gap={1} {...rest}>\n {children || <PaginationItems />}\n </Flex>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums',\n flexWrap: 'wrap',\n width: '100%',\n gap: '$4',\n mt: '$4',\n '@md': {\n flexDirection: 'row'\n }\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n","import { DataTableBody } from './DataTableBody'\nimport { DataTableBulkActions } from './DataTableBulkActions'\nimport { DataTableBulkActionsFloating } from './DataTableBulkActionsFloating'\nimport { DataTableProvider } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableEmptyState } from './DataTableEmptyState'\nimport { DataTableError } from './DataTableError'\nimport { DataTableGlobalFilter } from './DataTableGlobalFilter'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableHeaderCell } from './DataTableHeaderCell'\nimport { DataTableLoading } from './DataTableLoading'\nimport { DataTableMetaData } from './DataTableMetaData'\nimport { DataTableRow } from './DataTableRow'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\n/** Context provider for DataTable state and logic.\n *\n * Children can call `useDataTable` to access everything provided by `@tanstack/react-table` plus\n * the functionality we've built on top.\n */\nexport const DataTable = Object.assign(DataTableProvider, {\n /** Default table body implementation for `DataTable`.\n *\n * Can be configured with alternating colours of rows. If you need more customisation options,\n * you can build your own implementation with `useDataTable()` and the UI-only `Table` components.\n */\n Body: DataTableBody,\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: DataTableDataCell,\n\n /**\n * Used in place of `DataTable.Table` to render a table with rows that the user can sort by drag-and-drop\n */\n DragAndDropTable: DragAndDropTable,\n\n /** Default global search implementation for `DataTable`\n *\n * If you need more customisation options, you can compose your own implementation with our UI-only input components and `useDataTable`.\n */\n GlobalFilter: DataTableGlobalFilter,\n\n /** Default table head implementation\n *\n * Can be configured to be sortable and with different visual themes.\n * If you need more customisation options, you can build your own implementation\n * with `useDataTable` and the UI-only `Table` components.\n */\n Head: DataTableHead,\n\n /** Default header implementation for `DataTable`\n *\n * Can be configured to make the column sortable. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n HeaderCell: DataTableHeaderCell,\n\n /** Default pagination implementation for `DataTable`\n *\n * Can navigate forward, backward, or to any specific page. If you need more customisation options,\n * you can build your own implementation with `useDataTable` and other UI components.\n *\n */\n MetaData: DataTableMetaData,\n\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n Pagination: Pagination,\n\n /** Default row implementation for `DataTable`\n *\n * Renders all visible cells as `Table.Cell`. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n Row: DataTableRow,\n\n /** Default table implementation for `DataTable`.\n *\n * Can be configured with sortable columns and different visual themes.\n *\n * If you need more customisation options, you can compose your own implementation with\n * lower-level `DataTable` components or build the whole thing from\n * scratch with `useDataTable` and the UI-only `Table` components.\n *\n */\n Table: DataTableTable,\n\n /** Default loading implementation for remote data\n *\n * Renders a loading component while fetching the paginated data using `getAsyncData`.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState`\n * can be retrieved from `useDataTable`\n */\n Loading: DataTableLoading,\n\n /** Default error implementation for remote data\n *\n * Renders an error component when `getAsyncData` promise rejects.\n * Children are rendered as a function, it exposes a `runAsyncData` function to the children component.\n * `runAsyncData()` can be used to retry fetching the paginated data with the current pageIndex, pageSize\n * and sorting parameters or your own custom paginated options.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState` and `runAsyncData()`\n * can be retrieved from `useDataTable`\n *\n */\n Error: DataTableError,\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: DataTableEmptyState,\n\n /** Select all rows checkbox.\n *\n * Renders a checkbox on the header, allowing for bulk selection/deselection of all selectable rows\n */\n SelectAllRowsCheckbox: DataTableSelectAllRowsCheckbox,\n\n /** Individual row selection checkbox.\n *\n * Renders a checkbox on each row, allowing for individual selection/deselection of any selectable row\n */\n RowSelectionCheckbox: DataTableRowSelectionCheckbox,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActions: DataTableBulkActions,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActionsFloating: DataTableBulkActionsFloating\n})\n","export const monthNamesShort = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n\nexport const weekdayNamesShort = [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n]\n\nexport const DEFAULT_LABELS = {\n open: 'Open calendar',\n next: 'Next month',\n previous: 'Previous month',\n nextYear: 'Next year',\n previousYear: 'Previous year'\n}\n","import { styled } from '~/stitches'\n\nexport const Day = styled('button', {\n bg: 'transparent',\n border: 'none',\n borderRadius: '$round',\n color: '$grey900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$grey200'\n },\n '&:active': {\n color: 'white',\n bg: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: '0.3',\n cursor: 'default'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary800',\n color: 'white',\n '&:hover': { bg: '$primary800' }\n }\n },\n isToday: {\n true: { bg: '$grey200' }\n },\n isOutsideMonth: {\n true: { color: '$grey600' }\n }\n }\n})\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport { useDayzed } from 'dayzed'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Button } from '~/components/button'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { DEFAULT_LABELS, monthNamesShort, weekdayNamesShort } from './constants'\nimport { Day } from './Day'\n\nconst Grid = styled('div', {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gridGap: '$1 $2'\n})\n\nconst StyledButton = styled(Button, {\n color: '$grey1000',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$grey1000 !important',\n fontWeight: 400,\n '&:hover': {\n bg: '$grey200 !important',\n color: '$grey1000 !important'\n },\n '&[disabled]': { bg: 'white !important' }\n }\n }\n }\n})\n\nexport type CalendarTranslationProps = {\n monthNames?: string[]\n weekdayNames?: string[]\n labels?: {\n open: string\n next: string\n previous: string\n nextYear: string\n previousYear: string\n }\n}\n\ntype CalendarProps = DayzedInterface &\n CalendarTranslationProps & {\n css?: CSS\n refDateToday?: React.RefObject<HTMLButtonElement>\n refDateSelected?: React.RefObject<HTMLButtonElement>\n setYear: (date: Date) => Promise<void>\n }\n\nconst offsetWeekdayNames = (\n weekdayNames: string[],\n firstDayOfWeek: number\n): string[] => {\n const start = weekdayNames.slice(0, firstDayOfWeek)\n const end = weekdayNames.slice(firstDayOfWeek)\n return end.concat(start)\n}\n\nexport const Calendar = ({\n css,\n refDateSelected,\n refDateToday,\n firstDayOfWeek = 0,\n monthNames = monthNamesShort,\n weekdayNames = weekdayNamesShort,\n labels = DEFAULT_LABELS,\n date = new Date(),\n minDate,\n maxDate,\n setYear,\n ...remainingProps\n}: CalendarProps) => {\n const [showYears, setShowYears] = React.useState<boolean>(false)\n const [currentYear, setCurrentYear] = React.useState<number>(\n date?.getFullYear()\n )\n\n const handleSetYear = (year: number): void => {\n const newDate = date\n newDate.setFullYear(year)\n setYear(newDate)\n setShowYears(false)\n }\n\n const isAtMinYear = minDate && currentYear - 16 <= minDate.getFullYear()\n const isAtMaxYear = maxDate && currentYear >= maxDate.getFullYear()\n\n const yearList = Array.from({ length: 16 }, (_, i) => {\n const year = currentYear - i\n if (\n (maxDate && year > maxDate.getFullYear()) ||\n (minDate && year < minDate.getFullYear())\n )\n return 0\n return year\n })\n\n const { calendars, getBackProps, getForwardProps, getDateProps } = useDayzed({\n firstDayOfWeek,\n showOutsideDays: true,\n date,\n minDate,\n maxDate,\n ...remainingProps\n })\n\n if (!calendars.length) return null\n\n return (\n <Box\n css={{ position: 'relative', width: 'min-content', mt: '-$1', ...css }}\n >\n <Flex css={{ position: 'absolute', top: 0, right: '-$1' }}>\n <ActionIcon\n label={labels[showYears ? 'previousYear' : 'previous']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getBackProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear - 16)\n })}\n disabled={showYears && isAtMinYear}\n >\n <Icon is={ChevronLeft} />\n </ActionIcon>\n <ActionIcon\n label={labels[showYears ? 'nextYear' : 'next']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getForwardProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear + 16)\n })}\n disabled={showYears && isAtMaxYear}\n >\n <Icon is={ChevronRight} />\n </ActionIcon>\n </Flex>\n {showYears && (\n <Grid\n css={{\n gridTemplateColumns: 'repeat(4, 1fr)',\n pt: '$7',\n direction: 'rtl',\n gridGap: '$3 $1'\n }}\n >\n {yearList.map((year, i) => {\n const isCurrentYear = year === date.getFullYear()\n if (!year)\n return <Box key={i} css={{ width: '$6', height: '$4' }} />\n\n return (\n <StyledButton\n key={`${year}${i}`}\n theme={isCurrentYear ? 'primary' : 'neutral'}\n onClick={() => handleSetYear(year)}\n selected={isCurrentYear}\n >\n {year}\n </StyledButton>\n )\n })}\n </Grid>\n )}\n {!showYears &&\n calendars.map(({ month, year, weeks }) => (\n <Box key={`${month}${year}`}>\n <Flex css={{ height: '$4', alignItems: 'center', mb: '$4' }}>\n <Button\n theme=\"neutral\"\n css={{ px: '0', color: '$grey1000' }}\n onClick={() => setShowYears(true)}\n >\n {monthNames[month]} {year}\n </Button>\n </Flex>\n <Grid css={{ mb: '$3' }}>\n {offsetWeekdayNames(weekdayNames, firstDayOfWeek).map(\n (weekday) => (\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"bold\"\n key={`${month}${year}${weekday}`}\n css={{ textAlign: 'center' }}\n >\n {weekday}\n </Text>\n )\n )}\n </Grid>\n <Grid>\n {weeks.map((week, weekIndex) =>\n week.map((dateObj, index) => {\n const key = `${month}${year}${weekIndex}${index}`\n\n if (!dateObj) return <div key={key} />\n\n const { date, selected, today, prevMonth, nextMonth } =\n dateObj\n\n return (\n <Day\n isOutsideMonth={prevMonth || nextMonth}\n isSelected={selected}\n isToday={today}\n key={key}\n ref={\n selected ? refDateSelected : today ? refDateToday : null\n }\n {...getDateProps({ dateObj })}\n type=\"button\"\n >\n {date.getDate()}\n </Day>\n )\n })\n )}\n </Grid>\n </Box>\n ))}\n </Box>\n )\n}\n\nCalendar.displayName = 'Calendar'\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Arrow, Close, Content } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { 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: 10,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '200px' },\n md: { maxWidth: '400px' },\n lg: { maxWidth: '600px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: 'white',\n zIndex: 1,\n '[data-align=\"end\"] &': { mr: '$sizes$2' },\n '[data-align=\"start\"] &': { ml: '$sizes$2' }\n})\n\ntype PopoverContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content> & {\n closePopoverText?: string\n showCloseButton?: boolean\n }\n\nexport const PopoverContent = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}: PopoverContentProps) => (\n <StyledContent\n size={size}\n side={side}\n sideOffset={sideOffset}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$0', top: '$0' }}\n label={closePopoverText}\n size=\"md\"\n hasTooltip={false}\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {children}\n <StyledArrow width={16} height={8} />\n </StyledContent>\n)\n","import { Portal, Root, Trigger } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { PopoverContent } from './PopoverContent'\n\nconst StyledRoot = styled(Root, {})\n\nexport const Popover = Object.assign(StyledRoot, {\n Content: PopoverContent,\n Portal: Portal,\n Trigger: Trigger\n})\n\nStyledRoot.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import { CalendarEvent } from '@atom-learning/icons'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Box } from '../box/Box'\nimport { Calendar, CalendarTranslationProps } from '../calendar/Calendar'\nimport { DEFAULT_LABELS } from '../calendar/constants'\nimport { Icon } from '../icon/Icon'\nimport { Input } from '../input/Input'\nimport { Popover } from '../popover/Popover'\nimport { DEFAULT_DATE_FORMAT } from './constants'\ndayjs.extend(customParseFormat)\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md' | 'lg'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nconst formatDateToString = (date?: Date, dateFormat = DEFAULT_DATE_FORMAT) =>\n date ? dayjs(date).format(dateFormat) : ''\n\nexport const DateInput: React.ForwardRefExoticComponent<DateInputProps> =\n React.forwardRef(\n (\n {\n initialDate,\n dateFormat = DEFAULT_DATE_FORMAT,\n firstDayOfWeek = 1,\n disabled,\n monthNames,\n weekdayNames,\n size = 'md',\n labels,\n revalidate,\n onChange,\n minDate,\n maxDate,\n ...remainingProps\n },\n ref\n ) => {\n const [date, setDate] = React.useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n\n const [inputElRef, setInputElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => inputElRef as HTMLInputElement)\n\n const dateString = formatDateToString(date, dateFormat)\n\n const handleInputChange = React.useCallback(\n (event) => {\n const newDateString = event.target.value\n const parsedInputDate = dayjs(newDateString, dateFormat)\n const newDate = parsedInputDate.isValid()\n ? parsedInputDate.toDate()\n : undefined\n setDate(newDate)\n onChange?.(newDate)\n },\n [dateFormat, onChange]\n )\n\n const handleCalendarChange = React.useCallback(\n (newDate) => {\n setDate(newDate)\n\n const mirrorChangeToInputElement = () => {\n if (!inputElRef) return\n\n // Call the `set` function on the input value directly to mirror the change.\n // Props to: https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(\n inputElRef,\n formatDateToString(newDate, dateFormat)\n )\n const event = new Event('input', { bubbles: true })\n inputElRef.dispatchEvent(event)\n }\n mirrorChangeToInputElement()\n },\n [dateFormat, inputElRef]\n )\n\n const updatedLabels = {\n ...DEFAULT_LABELS,\n ...labels\n }\n\n const [calendarOpen, setCalendarOpen] = React.useState(false)\n\n const refDateToday = React.useRef<HTMLButtonElement>(null)\n const refDateSelected = React.useRef<HTMLButtonElement>(null)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', height: 'max-content' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={handleInputChange}\n ref={setInputElRef}\n defaultValue={dateString}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '0'\n }}\n disabled={disabled}\n label={updatedLabels.open}\n size={iconSize}\n theme=\"neutral\"\n hasTooltip={false}\n >\n <Icon is={CalendarEvent} />\n </ActionIcon>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n css={{ pr: '$sizes$2', zIndex: 1147483646 }}\n side=\"bottom\"\n align=\"end\"\n showCloseButton={false}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n if (date) {\n refDateSelected.current?.focus()\n } else {\n refDateToday.current?.focus()\n }\n }}\n >\n <Calendar\n date={date || new Date()}\n selected={date}\n onDateSelected={async (date) => {\n setCalendarOpen(false)\n await handleCalendarChange(date.date)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await handleCalendarChange(date)\n if (revalidate) revalidate()\n }}\n minDate={minDate}\n maxDate={maxDate}\n refDateToday={refDateToday}\n refDateSelected={refDateSelected}\n firstDayOfWeek={firstDayOfWeek}\n monthNames={monthNames}\n weekdayNames={weekdayNames}\n labels={updatedLabels}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover>\n </Box>\n )\n }\n )\n\nDateInput.displayName = 'DateInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { DateInput, DateInputProps } from '~/components/date-input'\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\ntype DateFieldProps = DateInputProps & FieldElementWrapperProps\n\nexport const DateField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: DateFieldProps) => {\n const { register, trigger } = useFormContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={appearance}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\n appearance={appearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n revalidate={trigger}\n />\n </FieldWrapper>\n )\n}\n\nDateField.displayName = 'DateField'\n","import { styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport const DialogBackground = styled(Box, { width: '100vw', height: '100vh' })\n","import { Close } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DialogClose = styled(Close, {})\n","import { fadeIn, fadeOut } from '~/utilities'\n\nexport const backdropOverlay = {\n backgroundColor: '$alpha600',\n position: 'fixed',\n inset: 0,\n zIndex: 1147483646,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n}\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { DialogBackground } from './DialogBackground'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\nconst modalOverlayId = 'modal_overlay'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledDialogOverlay = styled(Overlay, backdropOverlay)\n\nconst sizeReset = {\n width: 'auto',\n height: 'auto',\n maxWidth: 'auto',\n maxHeight: 'auto',\n '@supports (height: 100svh)': {\n height: 'auto',\n maxHeight: 'auto'\n }\n}\nconst StyledDialogContent = styled(Content, {\n bg: 'white',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n maxHeight: '90vh',\n overflowY: 'auto',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n zIndex: 1147483646,\n '&:focus': {\n outline: 'none'\n },\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n xs: {\n ...sizeReset,\n borderRadius: '$1',\n width: '380px'\n },\n sm: {\n ...sizeReset,\n borderRadius: '$1',\n width: '480px'\n },\n md: {\n ...sizeReset,\n borderRadius: '$1',\n width: '600px'\n },\n lg: {\n ...sizeReset,\n borderRadius: '$1',\n width: '800px'\n },\n xl: {\n ...sizeReset,\n borderRadius: '$1',\n width: '1100px'\n },\n fullscreen: {\n width: '100vw',\n height: '100vh',\n maxWidth: '100vw',\n maxHeight: '100vh',\n '@supports (height: 100svh)': {\n height: '100svh',\n maxHeight: '100svh'\n }\n }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}: DialogContentProps) => (\n <Portal>\n <StyledDialogOverlay id={modalOverlayId}>\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type === DialogBackground && child\n )}\n <StyledDialogContent\n size={size}\n aria-label=\"Dialog\"\n onPointerDownOutside={(event) => {\n const element = event.target as HTMLElement\n if (element?.id !== modalOverlayId) {\n event.preventDefault()\n }\n }}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$4', top: '$4', size: '$5' }}\n label={closeDialogText}\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type !== DialogBackground && child\n )}\n </StyledDialogContent>\n </StyledDialogOverlay>\n </Portal>\n)\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\n\nexport const DialogFooter = ({\n css,\n ...props\n}: React.ComponentProps<typeof Flex>) => (\n <Flex justify=\"end\" gap={3} css={{ pt: '$4', ...css }} {...props} />\n)\n","import * as React from 'react'\n\nimport { Heading } from '../heading'\n\nexport const DialogHeading = ({\n css,\n ...props\n}: React.ComponentProps<typeof Heading>) => (\n <Heading\n size=\"sm\"\n css={{\n borderBottom: '1px solid $grey200',\n p: `0 $5 $5 $5`,\n mb: '$5',\n mx: '-$5',\n boxSizing: 'content-box',\n ...css\n }}\n {...props}\n />\n)\n","import { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\nimport { DialogFooter } from './DialogFooter'\nimport { DialogHeading } from './DialogHeading'\n\nconst StyledDialog = styled(Root, {})\n\nexport const Dialog = Object.assign(StyledDialog, {\n Background: DialogBackground,\n Close: DialogClose,\n Content: DialogContent,\n Heading: DialogHeading,\n Footer: DialogFooter,\n\n Description: Description,\n Title: Title,\n Trigger: Trigger\n})\n\nDialog.displayName = 'Dialog'\n","import * as React from 'react'\n\nimport { StyledContent } from './DrawerContent'\n\ntype TDrawerProviderProps = {\n position?: React.ComponentProps<typeof StyledContent>['position']\n}\n\ntype TDrawerContext = TDrawerProviderProps\n\nexport const DrawerContext = React.createContext<TDrawerContext>({\n position: 'left'\n})\n\nexport const DrawerProvider = ({\n position = 'left',\n ...rest\n}: React.PropsWithChildren<TDrawerProviderProps>): JSX.Element => {\n const value = React.useMemo<TDrawerContext>(() => ({ position }), [position])\n return <DrawerContext.Provider value={value} {...rest} />\n}\n","import { Close } from '@atom-learning/icons'\nimport { Close as DialogClose } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nexport const DrawerClose = (\n props: Omit<React.ComponentProps<typeof ActionIcon>, 'children'>\n) => (\n <DialogClose asChild>\n <ActionIcon\n theme=\"neutral\"\n appearance=\"simple\"\n size=\"md\"\n hasTooltip={false}\n {...props}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nexport const DrawerOverlay = styled(Overlay, backdropOverlay)\n","import { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { ColorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { slideInOut } from '~/utilities'\n\nimport { DrawerContext } from './Drawer.context'\nimport { DrawerOverlay } from './DrawerOverlay'\n\nconst animationTop = slideInOut({ outPosition: { x: 0, y: '-100%' } })\nconst animationRight = slideInOut({ outPosition: { x: '100%', y: 0 } })\nconst animationBottom = slideInOut({ outPosition: { x: 0, y: '100%' } })\nconst animationLeft = slideInOut({ outPosition: { x: '-100%', y: 0 } })\nconst setupAnimation = (animation: ReturnType<typeof slideInOut>) => {\n return {\n '&[data-state=\"open\"]': {\n animationName: animation.in\n },\n '&[data-state=\"closed\"]': {\n animationName: animation.out\n }\n }\n}\n\nconst positionY = {\n left: 0,\n width: '100%',\n maxHeight: '85%'\n}\n\nconst positionX = {\n top: 0,\n height: '100%',\n width: 'var(--drawer-content-width, 100%)',\n maxWidth: '100%'\n}\n\nexport const StyledContent = styled(Content, {\n bg: '$base1',\n boxShadow: '$2',\n position: 'fixed',\n zIndex: 1147483646,\n '@allowMotion': {\n animationTimingFunction: 'ease-out',\n animationDuration: '250ms'\n },\n variants: {\n position: {\n top: {\n top: 0,\n ...positionY,\n ...setupAnimation(animationTop)\n },\n right: {\n right: 0,\n ...positionX,\n ...setupAnimation(animationRight)\n },\n bottom: {\n bottom: 0,\n ...positionY,\n ...setupAnimation(animationBottom)\n },\n left: {\n left: 0,\n ...positionX,\n ...setupAnimation(animationLeft)\n }\n },\n size: {\n xs: {\n '--drawer-content-width': '240px'\n },\n sm: {\n '--drawer-content-width': '256px'\n },\n md: {\n '--drawer-content-width': '288px'\n },\n lg: {\n '--drawer-content-width': '304px'\n },\n xl: {\n '--drawer-content-width': '320px'\n },\n '2xl': {\n '--drawer-content-width': '720px'\n },\n '3xl': {\n '--drawer-content-width': '1000px'\n }\n }\n }\n})\n\nexport const DrawerContent = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledContent>) => {\n const { position } = React.useContext(DrawerContext)\n\n return (\n <Portal>\n <DrawerOverlay />\n <ColorScheme base=\"grey1\" accent=\"primary1\" asChild>\n <StyledContent size=\"lg\" position={position} {...rest} asChild>\n <Flex direction=\"column\">{children}</Flex>\n </StyledContent>\n </ColorScheme>\n </Portal>\n )\n}\n","import { styled } from '~/stitches'\n\nexport const DrawerFooter = styled('div', {\n p: '$4',\n width: '100%',\n borderTop: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nexport const DrawerHeader = styled('div', {\n p: '$4',\n width: '100%',\n minHeight: '$6', // At least the height of the TopBar\n borderBottom: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nexport const DrawerMain = styled('div', {\n p: '$4',\n width: '100%',\n flexGrow: 1,\n overflowY: 'auto'\n})\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DrawerTrigger = styled(Trigger, {})\n","import { Root } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { DrawerProvider } from './Drawer.context'\nimport { DrawerClose } from './DrawerClose'\nimport { DrawerContent } from './DrawerContent'\nimport { DrawerFooter } from './DrawerFooter'\nimport { DrawerHeader } from './DrawerHeader'\nimport { DrawerMain } from './DrawerMain'\nimport { DrawerTrigger } from './DrawerTrigger'\n\ntype TDrawerProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof DrawerProvider>\n\nexport const Drawer = ({\n children,\n position,\n ...rest\n}: TDrawerProps): JSX.Element => {\n return (\n <DrawerProvider position={position}>\n <Root {...rest}>{children}</Root>\n </DrawerProvider>\n )\n}\n\nDrawer.Close = DrawerClose\nDrawer.Content = DrawerContent\nDrawer.Main = DrawerMain\nDrawer.Header = DrawerHeader\nDrawer.Footer = DrawerFooter\nDrawer.Trigger = DrawerTrigger\n","import { Content } from '@radix-ui/react-dropdown-menu'\n\nimport { 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: 10,\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: '$grey1000',\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 opacity: 0.3,\n cursor: 'not-allowed',\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: '$primary900',\n outline: 'none'\n },\n '&:hover': { textDecoration: 'underline' }\n}\n\nexport const DropdownMenuItem = styled(Item, itemStyles)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem = ({\n children,\n href,\n ...props\n}: React.ComponentProps<typeof DropdownMenuItem> & { href: string }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\" {...getExternalAnchorProps(href)}>\n {children}\n </StyledLink>\n </DropdownMenuItem>\n)\n","import { Separator } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuSeparator = styled(Separator, {\n height: '1px',\n backgroundColor: '$grey600',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuTrigger = styled(Trigger, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n","import { Portal, Root as DropdownMenuRoot } from '@radix-ui/react-dropdown-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DropdownMenuContent } from './DropdownMenuContent'\nimport { DropdownMenuItem } from './DropdownMenuItem'\nimport { DropdownMenuLinkItem } from './DropdownMenuLinkItem'\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator'\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger'\n\nconst Root = styled(DropdownMenuRoot, {})\n\nexport const DropdownMenu = Object.assign(Root, {\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n Portal: Portal,\n Separator: DropdownMenuSeparator,\n Trigger: DropdownMenuTrigger\n})\n","import { Upload } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\nexport type FileInputProps = React.ComponentProps<typeof Button> & {\n onFileSelect: (selection: FileList | null) => void\n accept?: string\n multiple?: boolean\n}\n\nexport const FileInput = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}: FileInputProps) => {\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target\n\n onFileSelect(files)\n }\n\n return (\n <Button as=\"label\" {...rest}>\n <Icon is={Upload} />\n {children}\n <input\n type=\"file\"\n onChange={handleFileSelect}\n accept={accept}\n multiple={multiple}\n hidden\n />\n </Button>\n )\n}\n\nFileInput.displayName = 'FileInput'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst GridContainer = styled('div', {\n display: 'grid',\n variants: {\n gap: {\n '0': { gap: '$space$0' },\n '1': { gap: '$space$1' },\n '2': { gap: '$space$2' },\n '3': { gap: '$space$3' },\n '4': { gap: '$space$4' },\n '24': { gap: '$space$24' },\n '5': { gap: '$space$5' },\n '6': { gap: '$space$6' },\n '7': { gap: '$space$7' },\n '8': { gap: '$space$8' },\n '9': { gap: '$space$9' }\n }\n }\n})\n\ntype GridProps = React.ComponentProps<typeof GridContainer> & {\n minItemSize?: string\n maxItemSize?: string\n} & {\n as?: any\n} // (!) `css` and `as` are both props that come from `stitches`. It would be better to figure out and export the appropriate type for them in stitches!\n\nexport const Grid = ({\n css,\n style,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}: GridProps) => (\n <GridContainer\n style={{\n ...style,\n '--min-item-size': minItemSize,\n '--max-item-size': maxItemSize\n }}\n css={{\n ...(minItemSize && {\n gridTemplateColumns: `repeat(auto-fit, minmax(var(--min-item-size), var(--max-item-size)))`\n }),\n ...css\n }}\n gap={gap}\n {...remainingProps}\n />\n)\n\nGrid.displayName = 'Grid'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n hideLabel,\n appearance,\n ...remainingProps\n}: InputFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import * 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 '& > li': {\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 '& > li': {\n pl: '$1',\n '&::marker': { fontSize: '.875em', fontWeight: 'bold' }\n }\n },\n ul: {\n pl: '$3',\n '& > li': {\n pl: '$2',\n '&::marker': { content: '• ', fontWeight: 'bold' }\n }\n }\n },\n theme: {\n primary: {\n '& > li': {\n '&::marker': { color: '$primary800' }\n }\n }\n }\n }\n})\n\ntype ListProps = React.ComponentProps<typeof StyledList> & {\n ordered?: boolean\n}\n\ntype ListType = React.ForwardRefExoticComponent<ListProps> & {\n Item: typeof StyledLi\n}\n\nexport const List = React.forwardRef(\n ({ size = 'md', noCapsize = true, ordered, ...remainingProps }, ref) => (\n <StyledList\n ref={ref}\n as={ordered ? 'ol' : 'ul'}\n size={size}\n noCapsize={noCapsize}\n {...remainingProps}\n />\n )\n) as ListType\n\nList.Item = StyledLi\n","import type { Code } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownCodeProps = {\n node: Code\n}\n\nconst StyledMarkdownCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$1',\n color: '$grey1000',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode = ({ node }: MarkdownCodeProps) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import type { Content, Emphasis } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownEmphasisProps = {\n node: Emphasis\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const StyledMarkdownEmphasis = styled('em', { fontStyle: 'italic' })\n\nexport const MarkdownEmphasis = ({\n node,\n handleNode\n}: MarkdownEmphasisProps) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import type { Content, Heading as HeadingType } from 'mdast'\nimport * as React from 'react'\n\nimport { Heading, HeadingProps } from '../../heading/Heading'\n\ntype MarkdownHeadingProps = {\n node: HeadingType\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst getHeadingProps = (depth: number): HeadingProps => {\n switch (depth) {\n case 1:\n return { size: 'xl', as: 'h1' }\n case 2:\n return { size: 'lg', as: 'h2' }\n case 3:\n return { size: 'md', as: 'h3' }\n case 4:\n return { size: 'sm', as: 'h4' }\n case 5:\n return { size: 'xs', as: 'h5' }\n default:\n return { size: 'xs', as: 'h6' }\n }\n}\n\nexport const MarkdownHeading = ({\n node,\n handleNode,\n ...rest\n}: MarkdownHeadingProps) => {\n const { as, size } = getHeadingProps(node.depth)\n\n return (\n <Heading as={as} size={size} {...rest}>\n {node.children?.map(handleNode)}\n </Heading>\n )\n}\n","import type { InlineCode } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownInlineCodeProps = {\n node: InlineCode\n}\n\nconst StyledMarkdownInlineCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$0',\n color: '$grey1000',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode = ({ node }: MarkdownInlineCodeProps) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n css?: CSS\n}\n\nexport const MarkdownImage = ({ node, css }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { type CSS } from '~/stitches'\n\nimport { List } from '../../list'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n css?: CSS\n}\n\nexport const MarkdownList = ({ node, handleNode, css }: MarkdownListProps) => (\n <List\n css={{\n '& p': { display: 'inline' },\n '& p:before, & p:after': { display: 'none' },\n ...css\n }}\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import type { Content, ListItem } from 'mdast'\nimport * as React from 'react'\n\nimport { List } from '../../list'\n\ntype MarkdownListItemProps = {\n node: ListItem\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownListItem = ({\n node,\n handleNode\n}: MarkdownListItemProps) => (\n <List.Item>{node.children?.map(handleNode)}</List.Item>\n)\n","import type { Content, Paragraph } from 'mdast'\nimport * as React from 'react'\n\nimport { Text } from '../../text'\n\ntype MarkdownParagraphProps = {\n node: Paragraph\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownParagraph = ({\n node,\n handleNode,\n ...rest\n}: MarkdownParagraphProps) => (\n <Text {...rest}>{node.children?.map(handleNode)}</Text>\n)\n","import type { Content, Strong } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownStrongProps = {\n node: Strong\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst StyledMarkdownStrong = styled('strong', { fontWeight: 600 })\n\nexport const MarkdownStrong = ({ node, handleNode }: MarkdownStrongProps) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import type { Text as TextType } from 'mdast'\nimport * as React from 'react'\n\ntype MarkdownTextProps = {\n node: TextType\n}\n\nexport const MarkdownText = ({ node }: MarkdownTextProps): React.ReactNode =>\n node.value\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Divider } from '../../divider'\n\ntype MarkdownThematicBreakProps = {\n css?: CSS\n}\n\nexport const MarkdownThematicBreak = ({ css }: MarkdownThematicBreakProps) => (\n <Divider css={{ width: '100%', ...css }} />\n)\n","import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex/Flex'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n '& > h1, & > h2, & > h3, & > h4': { maxWidth: '65ch' },\n '& > p': { maxWidth: '75ch' },\n '& > ul': { maxWidth: '75ch' }\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n css\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} css={css}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n","import React from 'react'\n\ninterface NavigationMenuContextValue {\n onNodeUpdate: (\n trigger: HTMLButtonElement,\n itemValue: string\n ) => HTMLButtonElement\n}\n\nexport const NavigationMenuContext = React.createContext<\n NavigationMenuContextValue | undefined\n>(undefined)\n\nexport const useNavigationMenuContext = (): NavigationMenuContextValue => {\n const context = React.useContext(NavigationMenuContext)\n\n if (context === undefined) {\n throw new Error(\n 'useNavigationMenuContext must be used within a NavigationMenuContextProvider'\n )\n }\n\n return context\n}\n","/*\nUsed to block default radix hover to open menu behaviour\nProps: https://github.com/radix-ui/primitives/issues/1630\n*/\nexport const preventEvent = (\n event: React.PointerEvent | Event | React.SyntheticEvent\n): void => {\n const e = event as Event\n e.preventDefault()\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nconst StyledList = styled('ul', {\n listStyle: 'none',\n m: 0,\n p: 0\n})\n\nconst StyledContent = styled(NavigationMenuPrimitive.Content, {\n p: '$3',\n bg: '$dropdownBackground',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\ntype NavigationMenuDropdownContentProps = React.ComponentProps<\n typeof StyledContent\n>\n\nexport const NavigationMenuDropdownContent = ({\n children,\n ...rest\n}: NavigationMenuDropdownContentProps) => (\n <StyledContent\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n {...rest}\n >\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$text',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$text',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n background: '$background',\n '&:hover': { background: '$backgroundHover', color: '$textHover' },\n '&:active': {\n background: '$backgroundActive',\n color: '$textActive'\n },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary800'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: 600,\n color: '$itemTextSelected',\n '&::after': {\n backgroundColor: '$itemBackgroundSelected',\n borderRadius: '$1',\n bottom: 0,\n content: '',\n display: 'block',\n height: '2px',\n left: '50%',\n position: 'absolute',\n transform: 'translate(-50%,0)',\n width: '$2'\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(\n NavigationMenuPrimitive.Trigger,\n navigationMenuBaseItemStyles,\n {\n display: 'flex',\n alignItems: 'center',\n borderRadius: '$1',\n justifyContent: 'space-between',\n '&[data-state=\"open\"]': {\n background: '$triggerBackgroundOpen'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledTrigger>\n> = React.forwardRef(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n >\n {children}\n <Icon\n is={ChevronDown}\n css={{\n ml: '$1',\n '[data-state=open] &': { transform: 'rotate(-180deg)' },\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'transform 200ms ease'\n }\n }}\n size=\"sm\"\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React, { ComponentProps, ReactElement } from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { useNavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\n\ntype NavigationMenuDropdownProps = {\n active?: boolean\n css?: CSS\n id: string\n} & React.HTMLProps<HTMLButtonElement>\n\ntype DropdownTriggerProps = ComponentProps<typeof NavigationMenuDropdownTrigger>\n\nexport const NavigationMenuDropdown = ({\n children,\n id,\n ...props\n}: NavigationMenuDropdownProps) => {\n const { onNodeUpdate } = useNavigationMenuContext()\n\n return (\n <NavigationMenuPrimitive.Item value={id}>\n {React.Children.map(children, (child) => {\n const isTrigger =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownTrigger\n const isContent =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownContent\n\n if (!isTrigger && !isContent) {\n throw new Error(\n 'Only NavigationMenu.Trigger and NavigationMenu.Content can be the passed as a \"children\" of NavigationMenu.Dropdown'\n )\n }\n return isTrigger\n ? React.cloneElement(\n child as ReactElement<DropdownTriggerProps>,\n {\n ...props,\n ref: (node: HTMLButtonElement) => onNodeUpdate(node, id)\n } as React.PropsWithRef<DropdownTriggerProps>\n )\n : child\n })}\n </NavigationMenuPrimitive.Item>\n )\n}\n\nNavigationMenuDropdown.displayName = 'NavigationMenuDropdown'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles,\n navigationMenuDisabledItemStyles\n} from './NavigationMenu.styles'\n\nconst DisabledButton = styled('button', {\n ...navigationMenuBaseItemStyles,\n ...navigationMenuDisabledItemStyles\n})\n\nconst ListItem = styled(NavigationMenuPrimitive.Item)\n\nconst StyledLink = styled(\n NavigationMenuPrimitive.Link,\n navigationMenuBaseItemStyles,\n {\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1,\n variants: {\n elementType: {\n dropdownItem: {\n '&[data-active]': {\n background: '$backgroundSelected',\n color: '$textSelected',\n '&:hover': {\n background: '$backgroundSelectedHover',\n color: '$textSelectedHover'\n },\n '&:active': {\n background: '$backgroundSelectedPressed',\n color: '$textSelectedPressed'\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary800',\n color: '$textSelectedFocus'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\nexport const NavigationMenuLink: React.ForwardRefExoticComponent<\n Omit<React.ComponentProps<typeof StyledLink>, 'elementType'> & {\n disabled?: boolean\n variant?: React.ComponentProps<typeof StyledLink>['elementType']\n }\n> = React.forwardRef(\n (\n { children, href, disabled, css, variant = 'link', ref, ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled css={css}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\n {...getExternalAnchorProps(href)}\n {...props}\n >\n {children}\n </StyledLink>\n )}\n </ListItem>\n )\n)\n\nNavigationMenuLink.displayName = 'NavigationMenuLink'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nexport const NavigationMenuDropdownItem: React.ForwardRefExoticComponent<\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n> = React.forwardRef((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$grey900',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$textSubtle',\n background: 'white',\n backgroundHover: '$grey100',\n textHover: '$grey1000',\n backgroundActive: '$grey200',\n textActive: '$grey1000',\n backgroundSelected: '$primary100',\n textSelected: '$primary800',\n textSelectedHover: '$primary800',\n textSelectedPressed: '$primary800',\n textSelectedFocus: '$primary800',\n backgroundSelectedHover: '$grey100',\n backgroundSelectedPressed: '$grey200',\n itemTextSelected: '$grey900',\n itemBackgroundSelected: '$grey900',\n triggerBackgroundOpen: '$grey200',\n dropdownBackground: 'white'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { fadeOut } from '~/utilities/style/keyframe-animations'\n\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\nimport { colorSchemes as navigationMenuColorSchemes } from './stitches.navigationMenu.colorscheme.config'\n\nconst delayedFadeIn = keyframes({\n '0%, 50%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n display: 'flex',\n justifyContent: 'center',\n position: 'relative'\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n all: 'unset',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '$1',\n listStyle: 'none'\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n zIndex: 2147483647\n})\n\nconst ViewportPosition = styled('div', {\n position: 'absolute',\n left: 0,\n top: '100%',\n width: '100%',\n display: 'flex',\n justifyContent: 'center'\n})\n\nconst NavigationMenuComponent = ({\n children,\n css,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), 200)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n css={css}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n css={{\n transform: `translateX(var(--navigation-menu-viewport-offset))`,\n '&[data-state=\"open\"]': {\n animation: `${delayedFadeIn} 200ms ease`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 200ms ease-out`\n }\n }}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n","import { Item } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalItem = styled(Item, {})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the `value` prop does nothing, so removing it from typescript\n */\ntype TNavigationMenuVerticalItemProps = Omit<\n React.ComponentProps<typeof StyledNavigationMenuVerticalItem>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => <StyledNavigationMenuVerticalItem {...props} />\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\n\ntype TNavigationMenuVerticalAccordionContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const NavigationMenuVerticalAccordionContext =\n React.createContext<TNavigationMenuVerticalAccordionContextValue>({})\nconst NavigationMenuVerticalAccordionProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <NavigationMenuVerticalAccordionContext.Provider\n value={{ triggerRef, setTriggerRef }}\n >\n {children}\n </NavigationMenuVerticalAccordionContext.Provider>\n )\n}\n\ntype TNavigationMenuVerticalAccordionProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof NavigationMenuVerticalItem>\nexport const NavigationMenuVerticalAccordion = ({\n defaultOpen,\n open,\n onOpenChange,\n disabled,\n ...rest\n}: TNavigationMenuVerticalAccordionProps): JSX.Element => {\n const collapsibleProps = { defaultOpen, open, onOpenChange, disabled }\n return (\n <NavigationMenuVerticalAccordionProvider>\n <Root {...collapsibleProps} asChild>\n <NavigationMenuVerticalItem {...rest} />\n </Root>\n </NavigationMenuVerticalAccordionProvider>\n )\n}\n","import { List } from '@radix-ui/react-navigation-menu'\n\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(List, {\n p: 0,\n m: 0,\n listStyle: 'none',\n '--navigation-menu-vertical-item-pl': '$space$4',\n '& &': {\n '--navigation-menu-vertical-item-pl': '$space$5'\n },\n '& & &': {\n '--navigation-menu-vertical-item-pl': '$space$7'\n },\n '& & & &': {\n '--navigation-menu-vertical-item-pl': '$space$8'\n },\n '& > *:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const NavigationMenuVerticalList = StyledList\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\n\nconst StyledNavigationMenuVerticalAccordionContent = styled(Content, {})\n\ntype TNavigationMenuVerticalAccordionContentProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionContent\n> &\n React.ComponentProps<typeof NavigationMenuVerticalList>\n\nexport const NavigationMenuVerticalAccordionContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalAccordionContentProps): JSX.Element => {\n const { triggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledNavigationMenuVerticalAccordionContent\n onKeyDown={handleOnKeydown}\n {...rest}\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledNavigationMenuVerticalAccordionContent>\n )\n}\n","export const navigationMenuVerticalItemStyles = {\n border: 'none',\n outline: 'none',\n font: 'inherit',\n background: 'none',\n textAlign: 'inherit',\n textDecoration: 'unset',\n cursor: 'pointer',\n borderRadius: '$2',\n display: 'flex',\n alignItems: 'center',\n p: '$2',\n pl: `var(--navigation-menu-vertical-item-pl)`,\n width: '100%',\n color: '$text',\n bg: '$background',\n '--navigation-menu-vertical-item-font-weight': 400,\n '&[data-active]': {\n bg: '$backgroundSelected',\n color: '$textSelected',\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[data-state=open]': {\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover': {\n bg: '$backgroundHover'\n },\n '&:active': {\n bg: '$backgroundActive'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n variants: {\n size: {\n md: {\n minHeight: '$4'\n },\n lg: {\n minHeight: '$5'\n }\n }\n }\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalIcon = styled(Icon, {\n alignSelf: 'start'\n})\nexport const NavigationMenuVerticalIcon = (\n props: React.ComponentProps<typeof StyledNavigationMenuVerticalIcon>\n): JSX.Element => <StyledNavigationMenuVerticalIcon size=\"md\" {...props} />\n","import { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const SideBarHeader = styled('div', {\n borderBottom: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBody = styled('div', {\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarFooter = styled('div', {\n borderTop: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBrand = styled('a', {\n alignItems: 'flex-end',\n color: '$text',\n display: 'flex',\n gap: '$4',\n textDecoration: 'none',\n '&:hover, &:focus': {\n textDecoration: 'none'\n }\n})\n\nexport const SideBarBrandLogo = Image\n\nexport const SideBarBrandName = styled(Text, {\n color: '$text',\n whiteSpace: 'nowrap'\n})\n","import * as React from 'react'\n\nexport const SideBarContext = React.createContext<{\n isExpanded?: boolean\n}>({\n isExpanded: undefined\n})\n\nexport const useSidebarState = () => React.useContext(SideBarContext)\n","import React from 'react'\nimport { useFocusWithin, useHover, useInteractOutside } from 'react-aria'\n\nimport { createTheme, styled } from '~/stitches'\n\nimport {\n SideBarBody,\n SideBarBrand,\n SideBarBrandLogo,\n SideBarBrandName,\n SideBarFooter,\n SideBarHeader\n} from './SideBarComponents'\nimport { SideBarContext } from './SideBarContext'\n\nconst SIZE_COLLAPSED = '5.5rem'\nconst SIZE_EXPANDED = '16rem'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n text: '$grey800',\n border: '$grey200'\n }\n})\n\nconst Root = styled('div', {\n position: 'sticky',\n zIndex: 1,\n variants: {\n type: {\n static: {},\n expandable: { width: SIZE_COLLAPSED }\n }\n }\n})\n\nconst Content = styled('div', {\n bg: '$background',\n borderRight: '1px solid $border',\n boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0)',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflow: 'hidden',\n willChange: 'width',\n '@allowMotion': {\n transition: 'width 125ms ease-out, box-shadow 125ms ease-out'\n },\n variants: {\n type: {\n static: {},\n expandable: {}\n },\n isExpanded: {\n true: { width: SIZE_EXPANDED },\n false: { width: SIZE_COLLAPSED }\n }\n },\n compoundVariants: [\n {\n isExpanded: true,\n type: 'expandable',\n css: { boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0.1)' }\n }\n ]\n})\n\nconst PointerBlocker = styled('div', {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transition: 'all',\n variants: {\n isVisible: {\n true: { visibility: 'visible', transitionDelay: '0ms' },\n false: { visibility: 'hidden', transitionDelay: '50ms' }\n }\n }\n})\n\ntype SideBarProps = React.ComponentProps<typeof Root> & {\n offset?: number | string\n}\n\nexport const SideBar = ({\n className = light,\n children,\n type = 'expandable',\n offset = '0px',\n css,\n style,\n ...rest\n}: SideBarProps) => {\n const [isExpanded, setIsExpanded] = React.useState(type === 'static')\n const ref = React.useRef<HTMLDivElement>(null)\n\n useInteractOutside({\n ref,\n onInteractOutside: () => setIsExpanded(false)\n })\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => setIsExpanded(true),\n onBlurWithin: () => setIsExpanded(false)\n })\n const { hoverProps, isHovered } = useHover({\n onHoverStart: () => setIsExpanded(true),\n onHoverEnd: () => setIsExpanded(false)\n })\n const touchProps = {\n onTouchEnd: () => setIsExpanded(true)\n }\n\n const expandableProps =\n type === 'expandable'\n ? {\n ...focusWithinProps,\n ...hoverProps,\n ...touchProps,\n ref\n }\n : {}\n\n return (\n <SideBarContext.Provider value={{ isExpanded }}>\n <Root\n {...rest}\n style={{ ...style, '--offset': offset }}\n className={className}\n css={{\n height: `calc(100svh - var(--offset))`,\n top: 'var(--offset)',\n ...css\n }}\n type={type}\n >\n <Content {...expandableProps} isExpanded={isExpanded} type={type}>\n {children}\n {/**\n * When the SideBar is collapsed, ensure that the initial tap event\n * is used to expand the nav first before making the items available\n */}\n {type === 'expandable' && (\n <PointerBlocker isVisible={!isHovered && !isExpanded} />\n )}\n </Content>\n </Root>\n </SideBarContext.Provider>\n )\n}\n\nSideBar.Brand = SideBarBrand\nSideBar.BrandLogo = SideBarBrandLogo\nSideBar.BrandName = SideBarBrandName\nSideBar.Header = SideBarHeader\nSideBar.Body = SideBarBody\nSideBar.Footer = SideBarFooter\n\nSideBar.displayName = 'SideBar'\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { useSidebarState } from '../side-bar'\n\nconst SIZE_EXPANDED_MAX = '10rem'\n\nconst StyledNavigationMenuVerticalText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n fontWeight: 'var(--navigation-menu-vertical-item-font-weight)',\n lineHeight: 1.2,\n width: 'max-content',\n maxWidth: SIZE_EXPANDED_MAX,\n variants: {\n isExpanded: {\n true: {\n opacity: 1,\n '@allowMotion': {\n transform: 'translate(0)',\n transition: 'opacity 125ms ease-out, transform 125ms ease-out'\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n transform: 'translate(8px)',\n transition: 'opacity 125ms ease-out, transform 0ms ease-out 125ms'\n }\n }\n }\n }\n})\n\ntype TStyledNavigationMenuVerticalTextProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalText\n>\n\nexport const NavigationMenuVerticalText = (\n props: TStyledNavigationMenuVerticalTextProps\n): JSX.Element => {\n const { isExpanded } = useSidebarState()\n return (\n <StyledNavigationMenuVerticalText\n size=\"md\"\n as=\"span\"\n {...props}\n isExpanded={isExpanded}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => {\n return (\n <Flex gap={2} align=\"center\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <NavigationMenuVerticalText>{child}</NavigationMenuVerticalText>\n )\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <NavigationMenuVerticalIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n )\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalAccordionTrigger = styled(\n Trigger,\n navigationMenuVerticalItemStyles\n)\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\ntype TNavigationMenuAccordionTriggerProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionTrigger\n>\n\nexport const NavigationMenuVerticalAccordionTrigger = ({\n children,\n ...rest\n}: TNavigationMenuAccordionTriggerProps) => {\n const { setTriggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n return (\n <Link asChild>\n <StyledNavigationMenuVerticalAccordionTrigger size=\"lg\" {...rest} asChild>\n <Flex\n as=\"button\"\n type=\"button\"\n align=\"center\"\n justify=\"space-between\"\n gap={3}\n ref={setTriggerRef}\n >\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n <StyledIcon size=\"sm\" is={ChevronDown} />\n </Flex>\n </StyledNavigationMenuVerticalAccordionTrigger>\n </Link>\n )\n}\n","import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(\n Link,\n navigationMenuVerticalItemStyles\n)\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const Component = as || (href ? 'a' : 'button')\n const componentProps = as\n ? {}\n : href\n ? getExternalAnchorProps(href)\n : { type: 'button' }\n\n return (\n <NavigationMenuVerticalItem>\n <StyledNavigationMenuVerticalLink\n size=\"lg\"\n href={href}\n {...rest}\n {...componentProps}\n onSelect={preventEvent}\n asChild // ?: Can't use `as` for this as we lose `data-active` etc. attributes when we try to. Using `asChild` and `Component` as a workaround.\n >\n <Component>\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n </Component>\n </StyledNavigationMenuVerticalLink>\n </NavigationMenuVerticalItem>\n )\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$foreground',\n background: '$base1',\n backgroundHover: '$base2',\n backgroundActive: '$base3',\n textSelected: '$accent9',\n backgroundSelected: '$accent2'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import { Root } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordion } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalAccordionContent } from './NavigationMenuVerticalAccordionContent'\nimport { NavigationMenuVerticalAccordionTrigger } from './NavigationMenuVerticalAccordionTrigger'\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\nimport { NavigationMenuVerticalLink } from './NavigationMenuVerticalLink'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\nimport { colorSchemes as navigationMenuVerticalColorSchemes } from './stitches.navigationMenuVertical.colorscheme.config'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the below `value` based props and `Trigger`/`Content`\n * animations do nothing, so removing them from typescript\n */\ntype TNavigationVerticalProps = Omit<\n React.ComponentProps<typeof StyledRoot>,\n | 'delayDuration'\n | 'skipDelayDuration'\n | 'defaultValue'\n | 'value'\n | 'onValueChange'\n>\n\nexport const NavigationMenuVertical = Object.assign(\n ({ children, ...rest }: TNavigationVerticalProps) => (\n <StyledRoot\n className={navigationMenuVerticalColorSchemes['light']}\n {...rest}\n orientation=\"vertical\"\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledRoot>\n ),\n {\n Link: NavigationMenuVerticalLink,\n Accordion: NavigationMenuVerticalAccordion,\n AccordionContent: NavigationMenuVerticalAccordionContent,\n AccordionTrigger: NavigationMenuVerticalAccordionTrigger,\n Item: NavigationMenuVerticalItem,\n ItemContent: NavigationMenuVerticalItemContent,\n Icon: NavigationMenuVerticalIcon,\n Text: NavigationMenuVerticalText\n }\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nconst StyledWrapper = styled(Box, {\n position: 'relative'\n})\n\nconst StyledBadge = styled(Flex, {\n fontFamily: '$body',\n fontSize: '$sm',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translate(calc($sizes$2 / 2), -50%)',\n borderRadius: '$round',\n p: '$2',\n height: '$2',\n minWidth: '$2',\n textAlign: 'center',\n color: '#fff',\n bg: '$primary800'\n})\n\ntype NotificationBadgeProps = {\n value: number | string\n}\n\nexport const NotificationBadge = ({\n value,\n children\n}: React.PropsWithChildren<NotificationBadgeProps>) => (\n <StyledWrapper>\n {!!value && <StyledBadge role=\"status\">{value}</StyledBadge>}\n {children}\n </StyledWrapper>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\n\nconst StyledSpan = styled('span', { zIndex: 1 })\n\nconst StyledStepperButton = styled(ActionIcon, {\n borderRadius: '$1',\n zIndex: 1,\n height: '100% !important',\n '&:hover': {\n bg: '$grey100',\n '& svg': {\n color: '$grey800'\n }\n },\n '& svg': {\n color: '$grey700'\n },\n '&:active': {\n bg: '$grey200',\n '& svg': {\n color: '$grey900'\n }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n },\n variants: {\n fieldAppearance: {\n standard: {\n backgroundColor: 'white',\n borderColor: '$grey800 !important'\n },\n modern: {\n backgroundColor: '$grey100',\n borderColor: '$grey100 !important'\n }\n }\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> &\n Omit<React.ComponentProps<typeof StyledStepperButton>, 'children'> & {\n icon: React.FC<React.SVGProps<SVGSVGElement>>\n showTooltip?: boolean\n disabledTooltipContent?: string\n }\n\nexport const NumberInputStepper: React.ForwardRefExoticComponent<NumberInputStepperProps> =\n React.forwardRef((props, forwardedRef) => {\n const {\n icon,\n disabledTooltipContent,\n showTooltip,\n fieldAppearance = 'standard',\n ...rest\n } = props\n\n /**\n * Focus has been removed from the button\n * as the increment and decrement buttons should be keyboard accessible via arrow keys.\n * see MDN docs https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/spinbutton_role\n */\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>\n <StyledSpan tabIndex={-1}>\n <StyledStepperButton\n hasTooltip={false}\n tabIndex={-1}\n appearance=\"outline\"\n fieldAppearance={fieldAppearance}\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </StyledStepperButton>\n </StyledSpan>\n </Tooltip.Trigger>\n {showTooltip && (\n <Tooltip.Content>{disabledTooltipContent}</Tooltip.Content>\n )}\n </Tooltip>\n )\n })\n","import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { type CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nconst NumberInputContainer = styled(Flex, {\n variants: {\n appearance: {\n standard: {},\n modern: { gap: '1px' }\n }\n }\n})\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport {\n useFieldError,\n useFormCustomContext,\n ValidationOptions\n} from '~/components/form'\nimport type { CSS } from '~/stitches'\n\nimport type { NumberInputProps } from '../number-input/NumberInput'\nimport { NumberInput } from '../number-input/NumberInput'\n\nexport interface NumberInputFieldProps extends NumberInputProps {\n css?: CSS\n hideLabel?: boolean\n description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField = ({\n css,\n defaultValue = 0,\n hideLabel,\n value,\n prompt,\n description,\n label,\n name,\n validation,\n onValueChange,\n appearance,\n ...remainingProps\n}: NumberInputFieldProps) => {\n const { control } = useFormContext()\n const context = useFormCustomContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n const formAppearance = context?.appearance || appearance\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <NumberInput\n id={name}\n name={innerName}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n appearance={formAppearance}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledProgressBar = styled(Progress.Root, {\n borderRadius: '$round',\n background: '$grey200',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n size: {\n sm: { height: '4px' },\n md: { height: '$0' }\n },\n theme: {\n primary: { color: '$primary800' },\n info: { color: '$info' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' },\n neutral: { color: '$grey800', bg: '$grey400' }\n }\n }\n})\n\nconst StyledIndicator = styled(Progress.Indicator, {\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n boxSizing: 'border-box',\n height: '100%',\n position: 'absolute',\n transition: 'all 300ms ease-out'\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n style={{\n width: '100%',\n transform: `translateX(-${100 - ((value || 0) / max) * 100}%)`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n","import * as React from 'react'\n\nimport { InlineFieldWrapper } from '~/components/field-wrapper'\nimport { ValidationOptions } from '~/components/form'\nimport { RadioButton } from '~/components/radio-button'\nimport { CSS } from '~/stitches'\n\ntype RadioFieldProps = {\n css?: CSS\n defaultChecked?: boolean\n error?: string\n label: string\n validation?: ValidationOptions\n} & React.ComponentProps<typeof RadioButton>\n\nexport const RadioField = ({\n css,\n label,\n value,\n ...remainingProps\n}: RadioFieldProps) => (\n <InlineFieldWrapper css={css} label={label}>\n <RadioButton value={value} {...remainingProps} />\n </InlineFieldWrapper>\n)\n\nRadioField.displayName = 'RadioField'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldElementWrapperProps } from '~/components/field-wrapper'\nimport { Description as FieldDescription } from '~/components/field-wrapper/FieldDescription'\nimport { useFieldError } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButtonGroup } from '~/components/radio-button'\nimport { styled } from '~/stitches'\n\nimport { RadioField } from './RadioField'\n\nconst Fieldset = styled('fieldset', {\n all: 'unset'\n})\n\ntype RadioButtonFieldProps = React.ComponentProps<typeof RadioButtonGroup> &\n FieldElementWrapperProps\n\nconst RadioButtonFieldComponent = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}: RadioButtonFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <Fieldset css={css}>\n <Label\n as=\"legend\"\n css={{ p: 0, mb: '$3' }}\n required={Boolean(validation?.required)}\n >\n {label}\n </Label>\n {description && (\n <FieldDescription css={{ mb: '$3' }}>{description}</FieldDescription>\n )}\n\n <RadioButtonGroup\n ref={ref}\n direction={direction}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n {...remainingProps}\n >\n {children}\n </RadioButtonGroup>\n\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Fieldset>\n )\n}\n\nexport const RadioButtonField = Object.assign(RadioButtonFieldComponent, {\n Item: RadioField\n})\n\nRadioButtonFieldComponent.displayName = 'RadioButtonField'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box/Box'\n\nexport const StyledRadioCard = styled(RadioGroup.Item, {\n alignItems: 'center',\n bg: 'white',\n border: '1px solid $grey600',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary800',\n outlineOffset: '-2px'\n },\n variants: {\n align: {\n left: { flexDirection: 'row' },\n right: { flexDirection: 'row-reverse' }\n },\n size: {\n md: { px: '$4', py: '$3' },\n lg: { px: '$5', py: '$4' }\n },\n isFullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n }\n})\n\nconst RadioButton = styled('div', {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey900',\n borderRadius: '$round',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 0,\n size: '$1',\n transition: 'all 50ms ease-out',\n '[data-state=\"checked\"] &': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n variants: {\n containerIsFullWidth: {\n true: {},\n false: {}\n },\n align: {\n left: { mr: '$4' },\n right: {}\n }\n },\n\n compoundVariants: [\n {\n containerIsFullWidth: true,\n align: 'right',\n css: { ml: 'auto' }\n },\n {\n containerIsFullWidth: false,\n align: 'right',\n css: { ml: '$4' }\n }\n ]\n})\n\nconst Indicator = styled(RadioGroup.Indicator, {\n backgroundColor: 'white',\n borderRadius: '$round',\n position: 'absolute',\n size: '6px'\n})\n\ntype RadioCardProps = React.ComponentProps<typeof StyledRadioCard>\n\nexport const RadioCard = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}: RadioCardProps) => (\n <StyledRadioCard\n {...rest}\n align={align}\n isFullWidth={isFullWidth}\n size={size}\n >\n <RadioButton align={align} containerIsFullWidth={isFullWidth}>\n <Indicator />\n </RadioButton>\n <Box>{children}</Box>\n </StyledRadioCard>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Flex>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <Flex direction=\"row\" justify={justify} gap={gap} wrap=\"wrap\" css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof RadioCard>>,\n { size, isFullWidth, align }\n )\n }\n return child\n })}\n </Flex>\n </RadioGroup.Root>\n)\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SearchFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nSearchField.displayName = 'SearchField'\n","import React from 'react'\n\nimport type { SectionMessageTheme } from './SectionMessage'\n\nexport type SectionMessageContextValue = {\n theme: SectionMessageTheme\n hasIcon: boolean\n setHasIcon: React.Dispatch<React.SetStateAction<boolean>>\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\nexport type SectionMessageProviderProps = {\n theme: SectionMessageTheme\n children: React.ReactNode\n}\n\nexport const SectionMessageContext =\n React.createContext<SectionMessageContextValue | null>(null)\n\nexport const SectionMessageProvider = ({\n theme = 'info',\n children\n}: SectionMessageProviderProps): JSX.Element => {\n const [hasIcon, setHasIcon] = React.useState(false)\n const [hasDismiss, setHasDismiss] = React.useState(false)\n\n const value = React.useMemo<SectionMessageContextValue>(\n () => ({ theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss }),\n [theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss]\n )\n\n return (\n <SectionMessageContext.Provider value={value}>\n {children}\n </SectionMessageContext.Provider>\n )\n}\n\nexport const useSectionMessageContext = (): SectionMessageContextValue => {\n const context = React.useContext(SectionMessageContext)\n\n if (!context) {\n throw new Error(\n 'useSectionMessageContext must be used within a SectionMessageProvider'\n )\n }\n\n return context\n}\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageDescription = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n color: '$grey900',\n ...css\n }}\n size=\"sm\"\n {...rest}\n />\n)\n","import { Close } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Dismissible } from '../dismissible'\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nexport const SectionMessageDismiss = ({\n label = 'Dismiss',\n css,\n ...rest\n}: React.ComponentProps<typeof ActionIcon>): JSX.Element => {\n const { setHasDismiss } = useSectionMessageContext()\n\n useEffect(() => {\n setHasDismiss(true)\n return () => setHasDismiss(false)\n }, [setHasDismiss])\n\n return (\n <Dismissible.Trigger asChild>\n <ActionIcon\n label={label}\n css={{\n m: 'auto',\n position: 'absolute',\n top: '$2',\n right: '$2',\n ...css\n }}\n size=\"sm\"\n appearance=\"simple\"\n theme=\"neutral\"\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n </Dismissible.Trigger>\n )\n}\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nconst themeIcons = {\n success: OkCircle,\n warning: Danger,\n error: Error,\n neutral: Info,\n info: Info\n}\n\ntype SectionMessageIconProps = Partial<React.ComponentProps<typeof Icon>>\n\nexport const SectionMessageIcon = ({\n css,\n is,\n ...rest\n}: SectionMessageIconProps): JSX.Element => {\n const { theme, setHasIcon } = useSectionMessageContext()\n\n useEffect(() => {\n setHasIcon(true)\n return () => setHasIcon(false)\n }, [setHasIcon])\n\n return (\n <Icon\n css={{\n m: 'auto',\n position: 'absolute',\n left: '$4',\n top: '$4',\n color: 'currentColor',\n ...css\n }}\n is={is || themeIcons[theme]}\n size=\"sm\"\n {...rest}\n />\n )\n}\n","import React from 'react'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nexport const SectionMessageContent = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Box>): JSX.Element => (\n <Box\n css={{\n maxWidth: '100%',\n flexShrink: 0,\n paddingTop: '$0',\n '& > *:not(:last-child)': { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Flex>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Flex wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = (\n props: React.ComponentProps<typeof Text>\n): JSX.Element => <Text size=\"md\" weight=\"bold\" {...props} />\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport {\n SectionMessageProvider,\n useSectionMessageContext\n} from './SectionMessageContext'\nimport { SectionMessageDescription } from './SectionMessageDescription'\nimport { SectionMessageDismiss } from './SectionMessageDismiss'\nimport { SectionMessageIcon } from './SectionMessageIcon'\nimport {\n SectionMessageActions,\n SectionMessageContent\n} from './SectionMessageLayout'\nimport { SectionMessageTitle } from './SectionMessageTitle'\n\nconst StyledSectionMessage = styled(Dismissible, {\n position: 'relative',\n borderRadius: '$1',\n display: 'flex',\n minHeight: '$5',\n p: '$4',\n border: '1px solid white',\n variants: {\n theme: {\n success: {\n bg: '$successLight',\n color: '$successDark'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n error: {\n bg: '$dangerLight',\n color: '$dangerDark'\n },\n neutral: {\n bg: '$grey100',\n color: '$grey1000'\n },\n info: {\n bg: '$infoLight',\n color: '$infoDark'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst SectionMessageRoot = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledSectionMessage>): JSX.Element => {\n const { theme, hasIcon, hasDismiss } = useSectionMessageContext()\n\n return (\n <StyledSectionMessage\n {...rest}\n theme={theme}\n hasIcon={hasIcon}\n hasDismiss={hasDismiss}\n >\n <Flex gap={3} justify=\"space-between\" css={{ flexGrow: 1 }}>\n {children}\n </Flex>\n </StyledSectionMessage>\n )\n}\n\nexport type SectionMessageTheme =\n | 'success'\n | 'warning'\n | 'error'\n | 'neutral'\n | 'info'\n\nexport interface SectionMessageProps\n extends React.ComponentProps<typeof SectionMessageRoot> {\n theme?: SectionMessageTheme\n}\n\nexport const SectionMessage = ({\n theme = 'info',\n ...rest\n}: SectionMessageProps): JSX.Element => {\n return (\n <TooltipProvider>\n <SectionMessageProvider theme={theme}>\n <SectionMessageRoot {...rest} />\n </SectionMessageProvider>\n </TooltipProvider>\n )\n}\n\nSectionMessage.Title = SectionMessageTitle\nSectionMessage.Description = SectionMessageDescription\nSectionMessage.Icon = SectionMessageIcon\nSectionMessage.Dismiss = SectionMessageDismiss\nSectionMessage.Content = SectionMessageContent\nSectionMessage.Actions = SectionMessageActions\n","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n borderRadius: '$1',\n color: '$grey1000',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': {\n opacity: 0.3,\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 lg: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$5',\n pl: '$3',\n pr: '$6'\n }\n },\n state: {\n error: {}\n },\n appearance: {\n standard: {\n backgroundColor: 'white',\n border: '1px solid $grey700',\n '&:focus': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n backgroundColor: '$grey100',\n border: 'none',\n '&:focus': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n backgroundColor: '$dangerLight',\n '&:focus': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type SelectProps = Override<\n React.ComponentProps<typeof StyledSelect>,\n {\n as?: never\n placeholder?: string\n }\n // TODO: figure out why uncommenting this causes TS errors in\n // component declaration\n // & (\n // | { id: string; 'aria-label'?: string }\n // | { 'aria-label': string; id?: string }\n // )\n>\n\nexport const Select: React.ForwardRefExoticComponent<SelectProps> =\n React.forwardRef(\n (\n {\n placeholder,\n children,\n size = 'md',\n appearance = 'standard',\n ...remainingProps\n },\n ref\n ) => {\n const props = { size, appearance, ref, ...remainingProps }\n\n if (\n [remainingProps.value, remainingProps.defaultValue].every(\n (value) => value === undefined\n )\n ) {\n props.defaultValue = ''\n }\n\n return (\n <StyledSelect {...props}>\n {placeholder && (\n <option disabled hidden value=\"\">\n {placeholder}\n </option>\n )}\n {children}\n </StyledSelect>\n )\n }\n )\n\nSelect.displayName = 'Select'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField = ({\n css = undefined,\n hideLabel,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SelectFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Select\n name={name}\n id={name}\n appearance={formAppearance}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n height: '$space$3',\n mt: '$3',\n position: 'relative',\n width: '100%'\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n css={{\n position: 'absolute',\n color: '$grey700'\n }}\n style={{\n left: `${getPercentValue(step.value, min, max)}%`,\n transform: `translateX(-${getTransformValue(\n step.value,\n min,\n max\n )}%)`\n }}\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text css={{ mt: '$4', color: '$grey700', width: '100%' }}>\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { 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 variants: {\n theme: {\n light: { bg: '#fff' },\n tonal: { bg: '$grey600' }\n }\n }\n})\n\nconst StyledSlider = styled(Root, {\n alignItems: 'center',\n display: 'flex',\n position: 'relative',\n touchAction: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n '&[data-orientation=\"horizontal\"]': {\n height: '$1'\n },\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$1'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary800',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primary900',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primary1000'\n },\n '&:focus': {\n outline: '2px solid $primary900',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider> &\n VariantProps<typeof StyledTrack>\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 defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack theme={theme}>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n","import React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { Slider, SliderProps } from '~/components/slider'\nimport { SliderStepsType } from '~/components/slider/SliderSteps'\n\nimport { SliderValueType } from '../slider/SliderValue'\n\ntype SliderFieldProps = SliderProps &\n SliderStepsType &\n SliderValueType &\n FieldElementWrapperProps\n\nexport const SliderField = ({\n css,\n hideLabel,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}: SliderFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (value?.length) onChange(value)\n }, [JSON.stringify(value)])\n\n return (\n <FieldWrapper css={css} fieldId={name} label={label} hideLabel={hideLabel}>\n <Slider\n ref={ref}\n name={innerName}\n onValueChange={onChange}\n value={innerValue}\n min={min}\n max={max}\n {...remainingProps}\n >\n <Slider.Steps min={min} max={max} steps={steps} />\n\n <Slider.Value value={innerValue} outputLabel={outputLabel} />\n </Slider>\n </FieldWrapper>\n )\n}\n\nSliderField.displayName = 'SliderField'\n","import { styled } from '~/stitches'\n\n/**\n * A flexible flex spacer that expands along the major axis of its containing flex layout.\n * It renders a `div` by default, and takes up any available space.\n */\nexport const Spacer = styled('div', {\n flex: 1,\n justifySelf: 'stretch',\n alignSelf: 'stretch'\n})\n\nSpacer.displayName = 'Spacer'\n","import * as React from 'react'\n\nimport { Context, StepperProviderProps } from '../types'\n\nconst StepperContext = React.createContext<Context>({\n steps: [],\n goToPreviousStep: () => null,\n goToNextStep: () => null,\n goToStep: () => null,\n activeStep: 0,\n viewedSteps: [],\n allowSkip: false,\n direction: 'horizontal',\n hideLabels: false,\n completedSteps: [],\n showCompletedIcons: false\n})\n\nexport const StepperProvider = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}: React.PropsWithChildren<StepperProviderProps>) => {\n const [activeStep, setActiveStep] = React.useState(0)\n\n const [viewedSteps, setviewedSteps] = React.useState<number[]>([0])\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([])\n\n const isControlled = !stepCount\n\n React.useEffect(() => {\n setviewedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n\n onStepChange?.(activeStep)\n }, [activeStep, onStepChange])\n\n const goToNextStep = () => {\n const isCompleted = onComplete && activeStep === stepCount - 1\n const isNextStep = activeStep < stepCount - 1\n\n if (onComplete || isNextStep) {\n setCompletedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n }\n\n if (isCompleted) {\n return onComplete?.()\n }\n if (isNextStep) {\n return setActiveStep((current) => current + 1)\n }\n }\n\n const goToPreviousStep = () => {\n setActiveStep((current) => current - 1)\n }\n\n const goToStep = (index: number) => {\n setActiveStep(index)\n }\n\n return (\n <StepperContext.Provider\n value={{\n steps: steps || Array(stepCount).fill(''),\n goToPreviousStep: isControlled ? undefined : goToPreviousStep,\n goToNextStep: isControlled ? undefined : goToNextStep,\n goToStep: isControlled ? undefined : goToStep,\n activeStep,\n viewedSteps,\n completedSteps,\n allowSkip,\n direction,\n hideLabels,\n showCompletedIcons\n }}\n >\n {children}\n </StepperContext.Provider>\n )\n}\n\nexport const useStepper = (): Context => {\n const context = React.useContext(StepperContext)\n if (!context)\n throw new Error(\n 'Ensure that you wrap any components with the root component Stepper'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepBack = ({\n label,\n children,\n ...rest\n}: IStepperNavigateProps & React.ComponentProps<typeof Button>) => {\n const { activeStep, goToPreviousStep } = useStepper()\n return (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n {...rest}\n disabled={activeStep === 0}\n onClick={goToPreviousStep}\n >\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepForward = ({\n label,\n children,\n onClick,\n ...rest\n}: IStepperNavigateProps & Partial<React.ComponentProps<typeof Button>>) => {\n const { goToNextStep, activeStep } = useStepper()\n\n const handleClick = () => {\n if (onClick) {\n return onClick(() => goToNextStep?.())\n }\n goToNextStep?.()\n }\n\n return (\n <Button size=\"sm\" {...rest} onClick={handleClick} css={{ ml: 'auto' }}>\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepBullet = styled(Flex, {\n position: 'relative',\n p: '$2',\n justifyContent: 'center',\n alignItems: 'center',\n size: '$3',\n borderRadius: '50%',\n border: 'none',\n bg: '$grey200',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$grey200', color: '$grey700' },\n active: {\n bg: 'white',\n color: '$primary900',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $grey600',\n color: '$grey1000'\n },\n completed: { bg: '$primary800', color: 'white' },\n reviewed: { bg: '$primary900', color: 'white' },\n success: { bg: '$success', color: 'white' }\n }\n }\n})\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepContainer = styled(Flex, {\n position: 'relative',\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n alignItems: 'center',\n '&:not(:last-child)': {\n '&::after': {\n content: '',\n position: 'absolute'\n }\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)': {\n '&::after': {\n height: '100%',\n width: '4px',\n left: '14px',\n top: '50%'\n }\n }\n },\n horizontal: {\n px: '$2',\n flexDirection: 'column',\n '&:not(:last-child)': {\n '&::after': {\n width: '100%',\n height: '4px',\n left: '50%',\n top: '14px'\n }\n }\n }\n },\n separator: {\n default: {\n '&:not(:last-child)': {\n '&::after': { bg: '$grey200' }\n }\n },\n active: {\n '&:not(:last-child)': {\n '&::after': { bg: '$primary800' }\n }\n },\n success: {\n '&:not(:last-child)': {\n '&::after': { bg: '$success' }\n }\n },\n viewed: {\n '&:not(:last-child)': {\n '&::after': { bg: '$grey600' }\n }\n }\n },\n status: {\n completed: {},\n active: {},\n default: {},\n viewed: {},\n success: {},\n reviewed: {}\n }\n },\n compoundVariants: [\n {\n canInteract: true,\n status: 'completed',\n css: {\n '&:hover': {\n '& :first-child': { bg: '$primary900', color: 'white !important' },\n '& :last-child': { color: '$primary900' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'reviewed',\n css: {\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n }\n ]\n})\n","import { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport const StepperStepLabel = styled(Text, {\n fontWeight: 600,\n variants: {\n direction: {\n vertical: { ml: '$3', textAlign: 'left' },\n horizontal: { mt: '$3', textAlign: 'center' }\n },\n status: {\n default: { color: '$grey700', fontWeight: 400 },\n active: {\n color: '$primary900'\n },\n viewed: { color: '$grey1000' },\n completed: { color: '$primary800' },\n success: { color: '$success' },\n reviewed: {}\n }\n }\n})\n","import { CSS } from '~/stitches'\n\nexport enum Status {\n ACTIVE = 'active',\n VIEWED = 'viewed',\n SUCCESS = 'success',\n DEFAULT = 'default',\n COMPLETED = 'completed',\n REVIEWED = 'reviewed'\n}\nexport interface Step {\n label?: string\n status: `${Status}`\n}\n\nexport type Direction = 'vertical' | 'horizontal'\n\nexport type Context = {\n steps: Step[]\n goToPreviousStep?: () => void\n goToNextStep?: () => void\n goToStep?: (index: number) => void\n activeStep: number\n viewedSteps: number[]\n completedSteps: number[]\n allowSkip?: boolean\n direction?: Direction\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport type StepperProviderProps = {\n stepCount: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps: Step[]\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport interface IStepperProps {\n css?: CSS\n stepCount?: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps?: Step[]\n hideLabels?: boolean\n showCompletedIcons?: boolean\n}\n\nexport interface IStepperNavigateProps {\n label?: (currentStep?: number) => string\n onClick?: (next: () => void) => void\n}\n\nexport interface IStepperStepsProps {\n css?: CSS\n}\n","import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n justifyContent: 'space-between',\n variants: {\n direction: {\n vertical: { flexDirection: 'column' },\n horizontal: { flexDirection: 'row' }\n }\n }\n})\n\nexport const StepperSteps = ({ css }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer css={css} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n style={{ '--steps': steps.length }}\n css={\n direction === 'horizontal'\n ? { width: `calc(100% / var(--steps, 0))` }\n : { height: `calc(100% / var(--steps, 0))` }\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n css={{\n cursor:\n allowSkip && viewedSteps.includes(index) ? 'pointer' : 'auto'\n }}\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Box } from '../box/Box'\nimport { StepperProvider } from './stepper-context/StepperContext'\nimport { StepperStepBack } from './StepperStepBack'\nimport { StepperStepForward } from './StepperStepForward'\nimport { StepperSteps } from './StepperSteps'\nimport { IStepperProps } from './types'\n\nconst StepperComponent = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}: React.PropsWithChildren<IStepperProps>) => {\n invariant(\n !(stepCount && steps),\n '`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.'\n )\n\n const count = steps?.length || stepCount || 0\n\n return (\n <StepperProvider\n stepCount={count}\n allowSkip={allowSkip}\n onComplete={onComplete}\n onStepChange={stepCount ? onStepChange : undefined}\n direction={direction}\n steps={steps || Array(count).fill('')}\n hideLabels={hideLabels}\n showCompletedIcons={showCompletedIcons}\n >\n <Box\n aria-label=\"progress\"\n css={{\n width: '100%',\n ...css\n }}\n >\n {children}\n </Box>\n </StepperProvider>\n )\n}\n\nexport const Stepper = Object.assign(StepperComponent, {\n StepBack: StepperStepBack,\n StepForward: StepperStepForward,\n Steps: StepperSteps\n})\n\nStepperComponent.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$grey600',\n border: 'none',\n borderRadius: '$round',\n cursor: 'pointer',\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 50ms ease-out',\n '&:hover': {\n backgroundColor: '$grey700'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n '&:hover': {\n backgroundColor: '$primary900'\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\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 = ({ size = 'md', ...rest }: SwitchProps) => (\n <StyledSwitch size={size} {...rest}>\n <StyledThumb size={size} />\n </StyledSwitch>\n)\n\nSwitch.displayName = 'Switch'\n","import { Content } from '@radix-ui/react-tabs'\n\nimport { styled } from '~/stitches'\n\nconst StyledTabsContent = styled(Content, {\n flexGrow: 1,\n fontFamily: '$body'\n})\n\nexport const TabsContent = StyledTabsContent\n\nTabsContent.displayName = 'TabsContent'\n","import { Trigger } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nconst StyledTabsTriggerHoverBackground = styled('div', {\n position: 'absolute',\n inset: 0,\n height: 'calc(100% + 2px)',\n opacity: 0,\n bg: '$interactive1'\n})\n\nconst StyledTabsTrigger = styled(Trigger, {\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n flexShrink: 0,\n p: '$4',\n userSelect: 'none',\n borderBottom: '2px solid transparent',\n position: 'relative',\n '&[data-state=\"active\"]': {\n color: '$interactive1',\n fontWeight: 600,\n letterSpacing: '-0.005em',\n borderColor: 'currentColor'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible': {\n color: '$interactive2',\n '& div': {\n opacity: 0.07\n }\n },\n '&:active': {\n color: '$interactive3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n})\n\nexport const TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTabsTrigger> & { value: string }\n>(({ children, ...rest }, ref) => (\n <StyledTabsTrigger {...rest} ref={ref}>\n <Text size=\"sm\" as=\"span\">\n {children}\n </Text>\n <StyledTabsTriggerHoverBackground />\n </StyledTabsTrigger>\n))\n\nTabsTrigger.displayName = 'TabsTrigger'\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseScrollPositionOptions = {\n element?: HTMLElement | null\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseScrollPositionOutput = {\n left: number\n top: number\n}\n\nexport const useScrollPosition = ({\n element,\n delay = 500,\n delayMethod = 'throttle'\n}: TUseScrollPositionOptions): TUseScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ left: 0, top: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n if (!element) return\n\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ left: element.scrollLeft, top: element.scrollTop })\n })\n\n element.addEventListener('scroll', handleScroll)\n\n return () => {\n element.removeEventListener('scroll', handleScroll)\n }\n }, [element, delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\n\ninterface Size {\n width: number | undefined\n height: number | undefined\n}\n\nexport const useSize = ({\n element,\n delay = 500\n}: {\n element?: HTMLElement | null\n delay?: number\n}): Size => {\n const [size, setSize] = useState<Size>({\n width: undefined,\n height: undefined\n })\n\n const handleResize = useCallback(() => {\n setSize({\n width: element?.clientWidth,\n height: element?.clientHeight\n })\n }, [element])\n\n const elements = useMemo(() => [element], [element])\n\n useResizeObserver({\n delay,\n elements: elements,\n onResize: handleResize\n })\n\n return size\n}\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport { List } from '@radix-ui/react-tabs'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useScrollPosition } from '~/utilities/hooks/useScrollPosition'\nimport { useSize } from '~/utilities/hooks/useSize'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledContainer = styled(ColorScheme, {\n position: 'relative',\n borderBottom: '1px solid $base4',\n width: '100%'\n})\n\nconst StyledTriggerList = styled(List, {\n flexShrink: 0,\n display: 'flex',\n width: '100%',\n overflowX: 'auto',\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none'\n})\n\nconst StyledChevronActionIcon = styled(ActionIcon, {\n height: '100% !important',\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'pointer',\n background: '$base1 !important',\n color: '$interactive1 !important',\n borderRadius: 0,\n opacity: 0.9\n})\n\nconst SCROLL_STEP = 0.8 // Used to scroll 80% of clientWidth\n\nexport const TabsTriggerList = ({\n children,\n colorScheme = {},\n ...rest\n}: React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n}) => {\n const [listRef, setListRefCallback] = useCallbackRefState()\n\n const { width } = useSize({ element: listRef, delay: 500 })\n const { left } = useScrollPosition({\n element: listRef,\n delay: 100,\n delayMethod: 'debounce'\n })\n\n const canScrollXAxis = React.useMemo(() => {\n if (!listRef) return false\n return listRef.scrollWidth > listRef.clientWidth\n }, [width, listRef])\n\n const canScrollLeft = React.useMemo(() => {\n if (!canScrollXAxis) return false\n return left > 0\n }, [left, canScrollXAxis])\n\n const canScrollRight = React.useMemo(() => {\n if (!listRef || !canScrollXAxis) return false\n return listRef.scrollWidth - left - listRef.clientWidth > 1 // 1 rather than 0 to account for sub-pixel widths and calculations\n }, [listRef, left, canScrollXAxis])\n\n const scrollList = React.useCallback(\n (stepModifier) => {\n if (!listRef) return\n listRef.scroll({\n left: listRef.scrollLeft + listRef.clientWidth * stepModifier,\n behavior: 'smooth'\n })\n },\n [listRef]\n )\n\n return (\n <StyledContainer\n base=\"grey1\"\n accent=\"primary1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronRight} />\n </StyledChevronActionIcon>\n )}\n </StyledContainer>\n )\n}\n\nTabsTriggerList.displayName = 'TabsTriggerList'\n","import { Root } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TabsContent } from './TabsContent'\nimport { TabsTrigger } from './TabsTrigger'\nimport { TabsTriggerList } from './TabsTriggerList'\n\ntype TabsProps = React.ComponentProps<typeof StyledRoot>\n\nconst StyledRoot = styled(Root, { width: '100%' })\n\nexport const Tabs = Object.assign(StyledRoot, {\n TriggerList: TabsTriggerList,\n Trigger: TabsTrigger,\n Content: TabsContent\n})\n\nStyledRoot.displayName = 'Tabs'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTextarea = styled('textarea', {\n boxShadow: 'none', // remove iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n m: 0,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n width: '100%',\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n state: {\n error: {}\n }\n },\n defaultVariants: {\n appearance: 'standard'\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.ForwardRefExoticComponent<TextareaProps> =\n React.forwardRef((props, ref) => <StyledTextarea {...props} ref={ref} />)\n\nTextarea.displayName = 'Textarea'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField = ({\n css = undefined,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: TextareaFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nexport const StyledTile = styled('div', {\n all: 'unset', // important for buttons etc\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative', // for pseudo-elements\n border: '1px solid',\n bg: '$base1',\n color: '$foreground',\n borderColor: 'transparent',\n variants: {\n borderRadius: {\n sm: { borderRadius: '$0' },\n md: { borderRadius: '$1' },\n lg: { borderRadius: '$3' }\n },\n border: {\n true: { borderColor: '$base3' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $base1 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n }\n }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n colorScheme?: TcolorScheme\n}\n\nexport const Tile: React.ForwardRefExoticComponent<TTileProps> =\n React.forwardRef(\n ({ children, borderRadius = 'lg', colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"primary2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} borderRadius={borderRadius} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n )\n\nTile.displayName = 'Tile'\n","import { Flex } from '~/components/flex'\n\nexport const TileGroup = Flex\n","import React from 'react'\n\nimport { Tile } from '~/components/tile'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\n\nconst StyledTileInteractive = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Tile, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n cursor: 'pointer',\n transform: 'translateY(0)',\n transition: 'transform 250ms ease',\n '&::after': {\n content: '',\n position: 'absolute',\n inset: 0,\n boxShadow: '$2',\n opacity: 0,\n transition: 'opacity 250ms ease-out',\n borderRadius: 'inherit',\n pointerEvents: 'none'\n },\n '&:hover': {\n transform: 'translateY(-$space$0)',\n '&::after': {\n opacity: 1\n }\n },\n '&:active': {\n bg: '$base2'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n})\n\ntype TTileInteractiveProps = React.ComponentProps<\n typeof StyledTileInteractive\n> & {\n as?: React.ComponentType | React.ElementType\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\n NavigatorActions\n\nexport const TileInteractive: React.ForwardRefExoticComponent<TTileInteractiveProps> =\n React.forwardRef(({ onClick, href, type = 'button', as, ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n as: as || ('a' as React.ElementType),\n href,\n onClick: undefined\n }\n : { as: as || ('button' as React.ElementType), type, onClick }\n\n return (\n <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\n )\n })\n\nTileInteractive.displayName = 'TileInteractive'\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileInteractive } from '~/components/tile-interactive'\nimport { styled } from '~/stitches'\n\nconst StyledTileToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(TileInteractive, {\n '&:not([disabled])': {\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$interactive2'\n },\n '&:active': {\n bg: '$interactive3'\n }\n }\n },\n '&[data-state=\"on\"]': {\n bg: '$interactive1',\n borderColor: '$accent8',\n '&::before': {\n content: '',\n position: 'absolute',\n inset: -1, // account for 1px Tile border\n boxShadow: 'inset $colors$accent8 0px 0px 0px 2px',\n borderRadius: 'inherit',\n zIndex: 1 // so it's over anything nested which touches sides\n }\n }\n})\n\ntype TTileToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledTileToggleGroupItem>\n\nexport const TileToggleGroupItem = ({\n children,\n ...rest\n}: TTileToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem as=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TTileToggleGroupRootProps = React.ComponentProps<typeof TileGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal'\n ? 'row'\n : orientation === 'vertical'\n ? 'column'\n : undefined\n\nexport const TileToggleGroupRoot: React.ForwardRefExoticComponent<TTileToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n gap=\"2\"\n wrap=\"wrap\"\n {...props}\n />\n )\n })\n","import { TileToggleGroupItem } from './TileToggleGroupItem'\nimport { TileToggleGroupRoot } from './TileToggleGroupRoot'\n\ntype TTileToggleGroup = typeof TileToggleGroupRoot & {\n Item: typeof TileToggleGroupItem\n}\n\nexport const TileToggleGroup = TileToggleGroupRoot as TTileToggleGroup\nTileToggleGroup.Item = TileToggleGroupItem\nTileToggleGroup.displayName = 'TileToggleGroup'\n","import { Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { CSS, keyframes, styled } from '~/stitches'\nexport { default as toast } from 'react-hot-toast'\nimport type { Toast as ToastType } from 'react-hot-toast/dist/core/types'\n\nimport { Spacer } from '../spacer'\nimport { Text } from '../text'\nimport { Toast } from './Toast'\n\nconst ToastProviderBase = styled('div', {\n position: 'fixed',\n zIndex: 2147483647,\n inset: '$2',\n pointerEvents: 'none',\n '@sm': {\n top: '$3'\n }\n})\n\nconst slideIn = keyframes({\n '0%': { transform: 'translateY(-100%)', opacity: 0 },\n '100%': { transform: `translateY(0)`, opacity: 1 }\n})\n\nconst slideOut = keyframes({\n '0%': { transform: `translateY(0)`, opacity: 1 },\n '100%': { transform: `translateY(-100%)`, opacity: 0 }\n})\n\nconst ToastWrapper = styled('div', {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n boxSizing: 'border-box',\n minHeight: '$5',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst ToastContext = React.createContext<Pick<\n ToastType,\n 'type' | 'id' | 'message'\n> | null>(null)\n\nexport const ToastProvider = ({\n children,\n css\n}: React.PropsWithChildren<{ css?: CSS }>) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <ToastProviderBase\n onMouseEnter={startPause}\n onMouseLeave={endPause}\n css={css}\n >\n {toasts.map((toast) => {\n const { message: children } = toast\n\n const offset = calculateOffset(toast.id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el: HTMLDivElement | null) => {\n if (el && toast.height === undefined) {\n updateHeight(toast.id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastWrapper\n key={toast.id}\n ref={ref}\n visible={toast.visible}\n role={toast.role}\n aria-live={toast.ariaLive}\n style={{ '--offset': `${offset}px` }}\n css={{ top: 'var(--offset)' }}\n >\n <ToastContext.Provider value={toast}>\n {typeof children === 'function' ? (\n children(toast)\n ) : React.isValidElement(children) ? (\n children\n ) : (\n <Toast css={{ width: '400px' }}>\n {toast.type === 'error' && <Toast.Icon is={Error} />}\n <Text>{children}</Text>\n <Spacer />\n <Toast.Close />\n </Toast>\n )}\n </ToastContext.Provider>\n </ToastWrapper>\n )\n })}\n </ToastProviderBase>\n {children}\n </>\n )\n}\n\nexport const useToastContext = () => {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastContext must be used within a ToastProvider')\n }\n\n return context\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast } from 'react-hot-toast/dist/core/types'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { useToastContext } from './ToastProvider'\n\nexport interface ToastCloseButtonProps\n extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {\n onDismiss?: () => void\n label?: string\n}\n\nexport const ToastCloseButton = ({\n onDismiss,\n label = 'Close alert',\n ...rest\n}: ToastCloseButtonProps): JSX.Element => {\n const { id } = useToastContext()\n\n return (\n <ActionIcon\n css={{\n color: 'white',\n mr: '-$2',\n '&:hover,&:focus': { color: 'white', opacity: 0.8 }\n }}\n label={label}\n onClick={() => {\n toast.dismiss(id)\n onDismiss?.()\n }}\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n}\n","import React from 'react'\n\nimport { Icon } from '../icon'\n\nexport const ToastIcon = (\n props: React.ComponentProps<typeof Icon>\n): JSX.Element => (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { ToastCloseButton } from './ToastCloseButton'\nimport { ToastIcon } from './ToastIcon'\nimport { useToastContext } from './ToastProvider'\n\nexport const StyledToast = styled(Flex, {\n pointerEvents: 'auto',\n borderRadius: '$3',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n minHeight: '$5',\n position: 'relative',\n px: '$4',\n py: '$1',\n transition: 'background-color 125ms ease-out',\n '@allowMotion': {\n transition: 'background-color 125ms ease-out, transform 125ms ease-out'\n },\n variants: {\n type: {\n loading: { bg: '$info' },\n blank: { bg: '$info' },\n success: { bg: '$success' },\n error: { bg: '$danger' }\n }\n }\n})\n\nexport const Toast = (props: React.ComponentProps<typeof StyledToast>) => {\n const { type } = useToastContext()\n return <StyledToast align=\"center\" type={props.type || type} {...props} />\n}\n\nToast.Icon = ToastIcon\nToast.Close = ToastCloseButton\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\n\nimport { styled } from '~/stitches'\n\nexport const StyledItem = styled(ToggleGroup.Item, {\n cursor: 'pointer',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n standard: {\n bg: 'white',\n color: '$grey800',\n border: '1px solid $grey600',\n '&::before': {\n background: '$grey600'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible, &[data-state=\"on\"]': {\n '&::before': {\n background: 'none'\n }\n },\n '&:hover': {\n borderColor: 'currentColor !important',\n color: '$primary900'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`,\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$primary800',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n },\n modern: {\n bg: '$grey200',\n borderRadius: '$1',\n overflow: 'hidden',\n border: '0',\n '&:not([disabled])': {\n '&:hover': {\n color: '$primary900'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`,\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$grey800',\n border: '1px solid $grey200 !important',\n bg: 'white',\n boxShadow: 'none !important'\n }\n }\n }\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { StyledItem } from './ToggleGroupItem'\n\nexport const StyledButton = styled(StyledItem, {\n flexGrow: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n lineHeight: 1,\n py: '$1',\n variants: {\n size: {\n sm: {\n fontSize: `$sm`,\n px: '$4',\n minHeight: '32px',\n '& > *:not(:last-child)': {\n mr: '$2'\n }\n },\n md: {\n fontSize: `$md`,\n px: '$5',\n minHeight: '40px',\n '& > *:not(:last-child)': {\n mr: '$3'\n }\n },\n lg: {\n fontSize: `$lg`,\n px: '$5',\n minHeight: '48px',\n '& > *:not(:last-child)': {\n mr: '$3'\n }\n }\n },\n isIconOnly: {\n true: {}\n },\n theme: {\n standard: {},\n modern: {}\n }\n },\n compoundVariants: [\n {\n isIconOnly: true,\n size: 'sm',\n css: {\n minWidth: '32px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n css: {\n minWidth: '40px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n css: {\n minWidth: '48px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'sm',\n theme: 'modern',\n css: {\n minWidth: '40px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n theme: 'modern',\n css: {\n minWidth: '48px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n theme: 'modern',\n css: {\n minWidth: '60px',\n p: 0\n }\n }\n ]\n})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(\n ({ size = 'md', theme = 'standard', children, ...rest }, ref) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n const isIconOnly =\n isSingleChild &&\n React.isValidElement(childrenArray[0]) &&\n childrenArray[0]?.type === Icon\n\n return (\n <StyledButton\n ref={ref}\n size={size}\n isIconOnly={isIconOnly}\n theme={theme}\n {...rest}\n >\n {\n childrenArray.map((child) => {\n if (\n !isSingleChild &&\n (typeof child === 'string' || typeof child === 'number')\n )\n return <span key={child}>{child}</span>\n if (React.isValidElement(child)) {\n if (child?.type === Icon)\n return React.cloneElement(child, { ...child.props, size })\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledButton>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n isFullWidth?: boolean\n}\n\nexport const StyledRoot = styled(ToggleGroup.Root, {\n width: 'fit-content',\n variants: {\n isFullWidth: {\n true: {\n width: '100%',\n '& [data-radix-collection-item]': {\n flexBasis: 0,\n flexGrow: 1\n }\n },\n false: {\n width: 'auto'\n }\n },\n hasGap: {\n true: {\n '& [data-radix-collection-item]': {\n borderRadius: '$1'\n }\n },\n false: {\n borderRadius: '$1',\n '& [data-radix-collection-item]': {\n position: 'relative',\n '&:not(:last-child)': {\n '&::before': {\n content: '',\n position: 'absolute'\n }\n }\n }\n }\n },\n direction: {\n column: {},\n row: {}\n },\n theme: {\n standard: {},\n modern: { bg: '$grey200' }\n }\n },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\n theme: 'standard',\n css: {\n '& [data-radix-collection-item]': {\n borderRadius: 0,\n '&:not(:last-child)::before': {\n top: '-1px',\n height: 'calc(100% + 2px)',\n width: '1px',\n right: '0',\n transform: 'translateX(150%)'\n },\n '&:not(:first-child)': {\n borderLeftColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderRightColor: 'transparent'\n },\n '&:first-child': {\n borderTopLeftRadius: '$1',\n borderBottomLeftRadius: '$1'\n },\n '&:last-child': {\n borderTopRightRadius: '$1',\n borderBottomRightRadius: '$1'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\n theme: 'standard',\n css: {\n '& [data-radix-collection-item]': {\n '&:not(:last-child)::before': {\n bottom: 0,\n left: '-1px',\n height: '1px',\n width: 'calc(100% + 2px)',\n transform: 'translateY(150%)'\n },\n '&:first-child': {\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0'\n },\n '&:last-child': {\n borderBottomLeftRadius: '$0',\n borderBottomRightRadius: '$0'\n },\n '&:not(:first-child)': {\n borderTopColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderBottomColor: 'transparent'\n }\n }\n }\n },\n {\n hasGap: false,\n theme: 'modern',\n css: {}\n },\n {\n hasGap: false,\n theme: 'standard',\n css: {\n bg: 'white',\n '& [data-radix-collection-item]': {\n bg: 'transparent',\n borderRadius: 0\n }\n }\n }\n ]\n})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n Pick<React.ComponentProps<typeof Flex>, 'gap' | 'wrap'> &\n React.ComponentProps<typeof StyledRoot> &\n RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap,\n isFullWidth,\n children,\n theme = 'standard',\n wrap,\n ...rest\n },\n ref\n ) => {\n const hasGap = typeof gap === 'number'\n const direction = orientationToDirection(orientation)\n return (\n <StyledRoot\n ref={ref}\n direction={direction}\n hasGap={hasGap}\n isFullWidth={isFullWidth}\n orientation={orientation}\n theme={theme}\n {...rest}\n >\n <Flex\n direction={direction}\n gap={hasGap ? gap : undefined}\n wrap={wrap || 'nowrap'}\n >\n {\n React.Children.toArray(children).map((child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { ...child.props, theme })\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n </StyledRoot>\n )\n }\n)\n","import { ToggleGroupButton as Button } from './ToggleGroupButton'\nimport { ToggleGroupItem as Item } from './ToggleGroupItem'\nimport { ToggleGroupRoot as Root } from './ToggleGroupRoot'\nexport const ToggleGroup = { Item, Button, Root }\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseWindowScrollPositionOptions = {\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseWindowScrollPositionOutput = {\n x: number\n y: number\n}\n\nexport const useWindowScrollPosition = ({\n delay = 500,\n delayMethod = 'throttle'\n}: TUseWindowScrollPositionOptions = {}): TUseWindowScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ x: window.scrollX, y: window.scrollY })\n })\n\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n divider: '$grey200',\n borderBottom: '$grey200'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import React from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\ntype TopBarActionIconProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'size' | 'children'\n> & { icon: React.FC<React.SVGProps<SVGSVGElement>>; label: string }\n\nexport const TopBarActionIcon: React.ForwardRefExoticComponent<TopBarActionIconProps> =\n React.forwardRef(({ icon, ...rest }, forwardedRef) => {\n return (\n <ActionIcon\n size=\"md\"\n appearance=\"simple\"\n theme=\"neutral\"\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </ActionIcon>\n )\n })\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: Pick<\n React.ComponentProps<typeof Image>,\n 'src' | 'alt' | 'css'\n>): JSX.Element => {\n return (\n <Image\n src={src}\n alt={alt}\n css={{\n height: '$3',\n mr: '$3',\n width: 'auto',\n ...css\n }}\n />\n )\n}\n\nexport const TopBarBrandName = styled(Text, {\n color: '$grey800'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$grey800',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { useWindowScrollPosition } from '~/utilities/hooks/useWindowScrollPosition'\n\nimport { Divider } from '../divider'\nimport { Flex } from '../flex'\nimport { colorSchemes as topBarColorSchemes } from './stitches.topBar.colorscheme.config'\nimport { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$divider' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: '$background',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n\n zIndex: 1,\n transition: 'box-shadow 200ms ease-out',\n variants: {\n hasScrolled: {\n true: { boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1)' }\n },\n size: {\n md: { height: '$6' },\n lg: { height: '$7' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $background 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n },\n appearance: {\n standard: {\n width: '100vw',\n maxWidth: '100%',\n top: '0',\n borderBottom: '1px solid $borderBottom'\n },\n rounded: {\n width: '100%',\n top: '$2',\n p: '$2',\n border: '1px solid #ffffff',\n borderRadius: '$round'\n }\n }\n }\n})\n\nconst Container = styled(Flex, {\n alignItems: 'center',\n height: '$4',\n mx: '$4',\n width: '100%',\n '@md': {\n mx: '$5'\n }\n})\n\ntype StyledRootProps = React.ComponentProps<typeof StyledRoot>\n\ntype TopBarProps = StyledRootProps & {\n css?: CSS\n className?: string\n}\n\nconst TopBarComponent = ({\n size = 'md',\n diffused,\n className = topBarColorSchemes['light'],\n appearance = 'standard',\n ...props\n}: React.PropsWithChildren<TopBarProps>) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot\n className={className}\n hasScrolled={!!scrollPositionY}\n diffused={diffused}\n appearance={appearance}\n size={size}\n >\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nexport const TopBar = Object.assign(TopBarComponent, {\n Brand: TopBarBrand,\n BrandLogo: TopBarBrandLogo,\n BrandName: TopBarBrandName,\n ActionIcon: TopBarActionIcon,\n Divider: TopBarDivider\n})\n\nTopBarComponent.displayName = 'TopBar'\n","import * as React from 'react'\n// Note: Only loading vimeo to reduce the bundle size https://www.npmjs.com/package/react-player\nimport ReactPlayer from 'react-player/vimeo'\n\nimport { Box } from '~/components/box'\nimport { CSS, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\nimport { Override } from '~/utilities/types'\n\nconst StyledVideo = styled(ReactPlayer, {})\n\ntype VideoProps = Override<\n React.ComponentProps<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video: React.ForwardRefExoticComponent<VideoProps> =\n React.forwardRef(({ id, ratio = 9 / 16, css, ...remainingProps }, ref) => (\n <CSSWrapper css={css}>\n <Box\n style={{ '--ratio': `${ratio * 100}%` }}\n css={{\n borderRadius: '$0',\n position: 'relative',\n paddingTop: 'var(--ratio)',\n overflow: 'hidden',\n height: 0,\n width: '100%'\n }}\n >\n <StyledVideo\n {...remainingProps}\n role=\"figure\"\n url={`https://player.vimeo.com/video/${id}`}\n height=\"100%\"\n width=\"100%\"\n css={{ position: 'absolute', top: 0, left: 0 }}\n ref={ref}\n />\n </Box>\n </CSSWrapper>\n ))\n\nVideo.displayName = 'Video'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { Box } from '../box'\nimport { Text } from '../text'\n\nconst StyledSlot = styled(Slot)\n\ntype KeyboardEventWindowOrElement =\n | KeyboardEvent\n | React.KeyboardEvent<HTMLDivElement>\ntype ShortcutConfig = Partial<KeyboardEvent>\n\ntype KeyboardShortcutProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n config: {\n shortcut: ShortcutConfig\n action: ({\n event,\n shortcut\n }: {\n event: KeyboardEvent | React.KeyboardEvent<HTMLDivElement>\n shortcut: ShortcutConfig\n }) => void\n }[]\n targetWindow?: boolean\n onKeyDown?: (e: KeyboardEventWindowOrElement) => void\n}\n\nexport const KeyboardShortcut: React.ForwardRefExoticComponent<KeyboardShortcutProps> =\n React.forwardRef(\n ({ asChild, config, targetWindow = false, onKeyDown, ...rest }, ref) => {\n const [targetElRef, setTargetElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => targetElRef as HTMLDivElement)\n\n const handleOnKeydown = React.useCallback(\n (e: KeyboardEventWindowOrElement) => {\n config.forEach(({ shortcut, action }) => {\n if (\n Object.entries(shortcut).every(([key, value]) => e[key] === value)\n )\n action({ event: e, shortcut })\n })\n onKeyDown?.(e)\n },\n [config, onKeyDown]\n )\n\n React.useEffect(() => {\n if (targetWindow) window.addEventListener('keydown', handleOnKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleOnKeydown)\n }\n }, [targetWindow, handleOnKeydown])\n\n const Component = asChild ? StyledSlot : Box\n\n return (\n <Component\n onKeyDown={targetWindow ? undefined : handleOnKeydown}\n ref={setTargetElRef}\n {...rest}\n />\n )\n }\n )\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\nconst StyledKeyboardShortcutIndicator = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n bg: '$grey100',\n color: '$textSubtle',\n px: '$2',\n py: '$0',\n minWidth: '$2',\n minHeight: '$2',\n fontWeight: 400,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$1',\n flexShrink: 0\n})\n\ntype KeyboardShortcutIndicatorProps = React.ComponentProps<\n typeof StyledKeyboardShortcutIndicator\n>\n\nexport const KeyboardShortcutIndicator = (\n props: KeyboardShortcutIndicatorProps\n) => {\n return <StyledKeyboardShortcutIndicator size=\"sm\" as=\"kbd\" {...props} />\n}\n\nKeyboardShortcutIndicator.displayName = 'KeyboardShortcut'\n","import {\n KeyboardShortcut as KeyboardShortcutComponent,\n KeyboardShortcutIndicator\n} from './KeyboardShortcut'\n\nexport const KeyboardShortcut = Object.assign(KeyboardShortcutComponent, {\n Indicator: KeyboardShortcutIndicator\n})\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport type { SegmentedControlRootProps } from './SegmentedControlRoot'\n\nexport interface SegmentedControlContextValue\n extends Pick<\n React.ComponentProps<typeof Tabs>,\n 'defaultValue' | 'value' | 'onValueChange'\n > {\n size: SegmentedControlRootProps['size']\n theme: SegmentedControlTheme\n}\n\nexport const SegmentedControlContext =\n React.createContext<SegmentedControlContextValue>({\n size: 'md',\n theme: 'primary',\n defaultValue: '',\n value: '',\n onValueChange: () => null\n })\n","import * as React from 'react'\n\nimport { Badge } from '../badge'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst badgeSizeMap = {\n sm: 'xs',\n md: 'xs',\n lg: 'sm'\n}\n\nexport const SegmentedControlBadge = ({\n css,\n ...props\n}: Omit<React.ComponentProps<typeof Badge>, 'size'>): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return (\n <Badge\n {...props}\n css={{ border: 'none', ...css, fontWeight: 'normal' }}\n size={badgeSizeMap[size as string]}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\n\nexport const SegmentedControlContent = Tabs.Content\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(Text, {\n fontFamily: '$body',\n color: '$textSubtle',\n fontWeight: 400,\n variants: {\n size: {\n sm: {\n fontSize: '$xs'\n },\n md: {\n fontSize: '$sm'\n },\n lg: {\n fontSize: '$md'\n }\n }\n }\n})\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(Text, {\n fontFamily: '$body',\n color: '$textRegular',\n variants: {\n size: {\n sm: {\n fontSize: '$sm'\n },\n md: {\n fontSize: '$md'\n },\n lg: {\n fontSize: '$lg'\n }\n }\n }\n})\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { Icon } from '../icon'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst sizeMap = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const SegmentedControlIcon = (\n props: Omit<React.ComponentProps<typeof Icon>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <Icon {...props} size={sizeMap[size as string]} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledItem = styled(Tabs.Trigger, {\n position: 'relative',\n bg: 'transparent',\n borderRadius: '$2',\n p: 0,\n zIndex: 2,\n minWidth: '140px',\n border: '2px solid transparent',\n variants: {\n theme: {\n primary: {\n '&[data-state=inactive]': {\n '&:hover': {\n bg: '$primary300'\n }\n },\n '&:focus-visible': {\n borderColor: '$primary800'\n }\n },\n marsh: {\n '&[data-state=inactive]': {\n '&:hover': {\n bg: '$marsh300'\n }\n },\n '&:focus-visible': {\n borderColor: '$marsh800'\n }\n }\n },\n size: {\n sm: {\n flex: 'unset',\n p: '$4 $24',\n gap: '$3'\n },\n md: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n },\n lg: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n }\n }\n },\n '& > div': { display: 'none' },\n '& > span': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n '&[data-state=active]': {\n boxShadow: 'none',\n border: '2px solid transparent',\n fontWeight: 600,\n color: '$textBold',\n '&:focus-visible': {\n boxShadow: 'none',\n borderColor: '$primary800'\n }\n },\n '&[data-state=inactive]': {\n fontWeight: 400,\n color: '$grey900'\n },\n '&[disabled]': {\n opacity: 0.3\n }\n})\n\nexport const SegmentedControlItem = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentProps<typeof StyledItem>, 'size'>\n>(({ children, ...props }, ref) => {\n const { size, theme } = React.useContext(SegmentedControlContext)\n\n return (\n <StyledItem {...props} theme={theme} size={size} ref={ref}>\n {children}\n </StyledItem>\n )\n})\n\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Box } from '../box'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\nimport { SegmentedControlItem } from './SegmentedControlItem'\n\nconst StyledTriggerList = styled(Tabs.TriggerList, {\n position: 'relative',\n p: '$1',\n borderRadius: '$3',\n overflow: 'hidden',\n variants: {\n theme: {\n primary: { bg: '$primary200' },\n marsh: { bg: '$marsh200' }\n }\n },\n '& > div[role=\"tablist\"]': {\n position: 'relative'\n },\n '& > button': {\n zIndex: 2\n }\n})\n\nconst SelectionIndicator = styled(Box, {\n content: '',\n position: 'absolute',\n bg: 'white',\n borderRadius: '$2',\n variants: {\n interacted: {\n true: {\n transition: 'all 300ms ease'\n },\n false: {\n transition: 'none'\n }\n }\n }\n})\n\nexport const SegmentedControlItemList = (\n props: React.ComponentProps<typeof Tabs.TriggerList>\n): JSX.Element => {\n const { theme, defaultValue, value } = React.useContext(\n SegmentedControlContext\n )\n\n const tabsRef = React.useRef<(HTMLElement | null)[]>([])\n\n const selectedIndex = React.Children.toArray(props.children).findIndex(\n (child) => (child as React.ReactElement)?.props.value === value\n )\n\n const [indicatorStyles, setIndicatorStyles] = React.useState({\n left: 0,\n height: 0,\n width: 0\n })\n const [hasInteracted, setHasInteracted] = React.useState(false)\n\n const updateIndicatorPosition = React.useCallback(() => {\n const currentTab = tabsRef.current[selectedIndex]\n if (!currentTab) return\n\n const { width, height } = currentTab.getBoundingClientRect()\n setIndicatorStyles({ left: currentTab.offsetLeft, height, width })\n }, [selectedIndex])\n\n React.useEffect(() => {\n const resizeObserver = new ResizeObserver(updateIndicatorPosition)\n const currentTabs = tabsRef.current\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.observe(tab)\n })\n\n return () => {\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.unobserve(tab)\n })\n resizeObserver.disconnect()\n }\n }, [selectedIndex, updateIndicatorPosition])\n\n React.useEffect(() => {\n window.addEventListener('resize', updateIndicatorPosition)\n return () => {\n window.removeEventListener('resize', updateIndicatorPosition)\n }\n }, [updateIndicatorPosition])\n\n React.useEffect(() => {\n updateIndicatorPosition()\n }, [selectedIndex, updateIndicatorPosition])\n\n return (\n <StyledTriggerList theme={theme} defaultValue={defaultValue} {...props}>\n <SelectionIndicator\n css={{\n ...indicatorStyles\n }}\n interacted={hasInteracted}\n />\n {React.Children.map(props.children, (child, index) => {\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to SegmentedControlItemList is not a valid element`\n )\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof SegmentedControlItem>\n >,\n {\n onClick: (e) => {\n setHasInteracted(true)\n if (child.props.onClick) child.props.onClick(e)\n },\n ref: (el) => (tabsRef.current[index] = el)\n }\n )\n })}\n </StyledTriggerList>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledSegmentedControlRoot = styled(Tabs, {\n '& > div': { border: 'none' },\n variants: {\n size: {\n sm: {\n width: 'unset'\n },\n md: {},\n lg: {}\n }\n }\n})\n\nexport interface SegmentedControlRootProps\n extends React.ComponentProps<typeof StyledSegmentedControlRoot> {\n theme?: SegmentedControlTheme\n}\n\nexport const SegmentedControlRoot = ({\n size,\n theme = 'primary',\n defaultValue,\n children,\n ...props\n}: React.PropsWithChildren<SegmentedControlRootProps>): React.JSX.Element => {\n const isControlled = props.value !== undefined\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n\n const currentValue = isControlled ? props.value : internalValue\n const handleValueChange = isControlled\n ? props.onValueChange\n : setInternalValue\n\n React.useEffect(() => {\n if (!isControlled && defaultValue) {\n setInternalValue(defaultValue)\n }\n }, [defaultValue, isControlled])\n\n const value = React.useMemo(\n () => ({\n size,\n theme,\n defaultValue,\n onValueChange: handleValueChange,\n value: currentValue\n }),\n [size, theme, defaultValue, handleValueChange, currentValue]\n )\n\n return (\n <SegmentedControlContext.Provider value={value}>\n <StyledSegmentedControlRoot\n size={size}\n value={currentValue}\n onValueChange={handleValueChange}\n {...props}\n >\n {children}\n </StyledSegmentedControlRoot>\n </SegmentedControlContext.Provider>\n )\n}\n","import { SegmentedControlBadge } from './SegmentedControlBadge'\nimport { SegmentedControlContent } from './SegmentedControlContent'\nimport { SegmentedControlDescription } from './SegmentedControlDescription'\nimport { SegmentedControlHeading } from './SegmentedControlHeading'\nimport { SegmentedControlIcon } from './SegmentedControlIcon'\nimport { SegmentedControlItem } from './SegmentedControlItem'\nimport { SegmentedControlItemList } from './SegmentedControlItemList'\nimport { SegmentedControlRoot } from './SegmentedControlRoot'\n\nexport const SegmentedControl = {\n Root: SegmentedControlRoot,\n Item: SegmentedControlItem,\n Heading: SegmentedControlHeading,\n Description: SegmentedControlDescription,\n Icon: SegmentedControlIcon,\n Content: SegmentedControlContent,\n Badge: SegmentedControlBadge,\n ItemList: SegmentedControlItemList\n}\n","import React from 'react'\n\nimport { FileDropContextValue } from './types'\n\nexport const FileDropContext = React.createContext<FileDropContextValue>({\n isDragging: false,\n files: []\n})\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\nimport { FileDropContext } from './FileDropContext'\nimport { type FileDropContextValue } from './types'\n\ninterface FileDropProps\n extends Omit<React.ComponentProps<typeof Flex>, 'onDrop'> {\n onDrop: (files: File[]) => void\n children?:\n | React.ReactNode\n | ((value: FileDropContextValue) => React.ReactNode)\n accept?: React.InputHTMLAttributes<HTMLInputElement>['accept']\n multiple?: React.InputHTMLAttributes<HTMLInputElement>['multiple']\n}\n\nexport const FileDrop = ({\n css,\n children,\n accept,\n multiple,\n onDrop,\n ...props\n}: FileDropProps): JSX.Element => {\n const [isDragging, setIsDragging] = React.useState(false)\n const [files, setFiles] = React.useState<File[]>([])\n const fileUploadInputRef = React.useRef<HTMLInputElement>(null)\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleDragLeave = () => setIsDragging(false)\n\n const handleDrop = (fileList: FileList | null) => {\n if (!fileList) return\n\n setIsDragging(false)\n\n const files = Array.from(fileList)\n onDrop(files)\n setFiles(files)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (['Space', 'Enter'].includes(event.key)) {\n fileUploadInputRef.current?.click()\n }\n }\n\n const value: FileDropContextValue = { isDragging, files }\n\n return (\n <FileDropContext.Provider value={value}>\n <Flex\n direction=\"column\"\n gap=\"24\"\n align=\"center\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={(event) => {\n event.preventDefault()\n handleDrop(event.dataTransfer.files)\n }}\n onClick={() => fileUploadInputRef.current?.click()}\n css={{\n border: '1px dashed $grey500',\n p: '$5 $7',\n borderRadius: '$1',\n cursor: 'pointer',\n '& *': { pointerEvents: 'none' },\n ...css\n }}\n role=\"button\"\n onKeyDown={handleKeyDown}\n tabIndex={0}\n {...props}\n >\n {typeof children === 'function' ? children(value) : children}\n <input\n type=\"file\"\n ref={fileUploadInputRef}\n style={{ visibility: 'hidden' }}\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n handleDrop(event.target.files)\n }}\n />\n </Flex>\n </FileDropContext.Provider>\n )\n}\n\nFileDrop.displayName = 'FileDrop'\n","import React from 'react'\n\nimport { FileDropContext } from './FileDropContext'\nimport { FileDropContextValue } from './types'\n\nexport const useFileDrop = (): FileDropContextValue =>\n React.useContext(FileDropContext)\n"],"names":["utils","value","media","stitchesConfig","createStitches","atomTheme","defaultThemeMap","themeMap","css","getCssText","createTheme","globalCss","keyframes","styled","theme","Box","CSSWrapper","children","React","capsize","before","after","icons","color","encodeBackgroundIcon","icon","toHex","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInOut","outPosition","inPosition","slideIn","slideOut","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","getFieldIconSize","size","s","NoOverflowWrapper","open","close","StyledContent","Content","AccordionContent","remainingProps","AccordionItem","Item","colorSchemes","generateColors","prefix","colorName","color0","colors","i","k","bases","generateBase","name","themeName","accents","generateAccent","StyledColorScheme","ColorScheme","base","accent","interactive","className","asChild","rest","ref","c","Slot","StyledIcon","Icon","SVG","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","arrowPosition","ChevronDown","StyledRoot","Root","Accordion","type","StyledArrow","Arrow","TooltipContent","side","sideOffset","TooltipComponent","delayDuration","Tooltip","Portal","Provider","OptionalTooltipWrapper","hasTooltip","label","tooltipSide","isExternalUrl","url","getExternalAnchorProps","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","Flex","FadeInOut","Dot","Loader","message","props","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","LoaderContentsWrapper","WithLoader","Button","as","isLoading","onClick","StyledHeading","Heading","weight","textVariants","getTextVariant","noCapsize","StyledText","Text","family","iconMap","Info","Danger","OkCircle","AlertDialogIcon","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","confirmElement","cancelElement","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","BadgeContext","BadgeProvider","overflow","isOverflowing","setIsOverflowing","StyledBadgeIcon","BadgeIcon","createResizeObserver","callback","useResizeObserver","delay","elements","onResize","observer","debounce","element","ObserveBadgeTextOverflow","StyledBadgeText","BadgeText","badgeSize","info","neutral","success","danger","warning","primary","grey","blue","pink","purple","cyan","green","magenta","red","teal","orange","yellow","lime","lapis","maroon","marsh","badgeSemanticNames","StyledBadge","BadgeInner","emphasis","badgeElRef","setBadgeElRef","isInfoOnly","isClickable","badgeColorSchemes","BadgeComponent","Badge","DismissibleRootContext","DismissibleRootProvider","controlledIsDismissed","onDismiss","isDismissed","setIsDismissed","isControlled","DismissibleRootInternal","DismissibleRoot","dismissed","DefaultTrigger","DismissibleTrigger","Dismissible","BannerContext","useBannerContext","BannerProvider","hasDismiss","setHasDismiss","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","toDirection","BannerRegularActions","gap","direction","index","propsToInject","StyledBannerContainer","BannerContainer","BannerRegularContainer","Container","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","Close","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegularComponent","BannerRegular","StyledBannerSlimActions","BannerSlimActions","BannerSlimButton","toAlign","toWrap","StyledBannerSlimContainer","BannerSlimContainer","align","wrap","StyledBannerSlimContent","BannerSlimContent","BannerSlimDismiss","BannerSlimImage","BannerSlimText","BannerSlimComponent","BannerSlim","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","CarouselComponent","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","Carousel","CheckboxContainer","CheckboxHitArea","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","checked","Minus","Ok","CheckboxGroupMountedContext","CheckboxGroupMountedProvider","handleItemMountedChangeFurtherUpContext","mounted","setMounted","handleItemMountedChange","newItemMounted","itemValue","prevMounted","newMountedSet","CheckboxGroupCheckedContext","generateNewCheckedFn","currentChecked","newItemChecked","newCheckedSet","CheckboxGroupCheckedProvider","controlledChecked","defaultChecked","onCheckedChange","setChecked","handleItemControlledCheckedChange","newChecked","handleItemCheckedChange","prevChecked","CheckboxGroupAllItem","checkedItems","handleItemCheckedChangeContext","mountedItems","isAllChecked","mountedItem","CheckboxGroupItem","StyledSlot","CheckboxGroupSub","CheckboxGroupRoot","CheckboxGroup","StyledTreeListItem","TreeListItem","TreeCollapsibleContext","TreeCollapsibleProvider","triggerRef","setTriggerRef","StyledCollapsibleTreeItemRoot","TreeCollapsible","StyledList","TreeList","StyledTreeCollapsibleContent","TreeCollapsibleContent","StyledTreeIcon","TreeIcon","StyledTreeText","propName","TreeText","StyledItemContent","TreeItemContent","StyledTreeCollapsibleTrigger","StyledActionIcon","TreeCollapsibleTrigger","event","_a","_b","TreeItem","TreeRoot","Tree","CheckboxTreeCollapsible","CheckboxTreeCollapsibleContent","CheckboxTreeItemContent","CheckboxTreeCollapsibleTrigger","treeCollapsibleTriggerProps","checkboxAllItemProps","CheckboxTreeItem","checkboxItemProps","CheckboxTreeRoot","CheckboxTree","INLINE_MESSAGE_ICONS","Error","InlineMessageContainer","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","required","StyledLink","Link","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","FormCustomContext","useFormCustomContext","StyledForm","Form","defaultValues","validationMode","onSubmit","onError","methods","useForm","FormProvider","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","control","onChange","innerChecked","innerName","useController","overflowElipsis","StyledChipContent","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","ChipRootProvider","ChipRoot","Chip","ChipGroup","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ToggleGroupRoot","disableDeselect","onValueChange","defaultValue","internalValue","setInternalValue","handleValueChange","newValue","ChipToggleGroupRoot","ChipToggleGroup","StyledComboboxInput","BaseComboboxInput","ComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","Combobox","BaseCombobox","ComboboxOptionText","InputBackground","StyledInputText","InputText","Input","PasswordInput","hidePasswordText","showPasswordText","restProps","isPasswordVisible","setIsPasswordVisible","useState","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","register","formAppearance","CreatePasswordField","validate","defaultValidation","messageDirection","formState","isFocused","setIsFocused","validationResult","setValidationResult","touched","isValid","validatePassword","password","result","handleChange","throttle","getMessageTheme","showValidation","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","params","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","disabledRows","enableRowSelection","onRowSelectionChange","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","tablePosition","setTablePosition","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","row","updaterOrValue","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","isSticky","TableHeaderCell","StyledRow","TableRow","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","generateColumnsCss","accWidth","tableHeaderCells","acc","column","elementNumber","cssObject","newColumnsCss","TableStickyColumnsContainer","hasScroll","setHasScroll","newHasScroll","StyledTable","TableComponent","corners","scrollContainerCss","scrollContainerkey","tableComponent","Table","DataTableBody","rowAction","getRowModel","DataTable","StyledDivider","Divider","orientation","StyledContainer","BulkActionsDefaultActions","BulkActionsSelectedRowActions","cancelLabel","toggleAllPageRowsSelected","handleDeselectAllPageRows","DataTableBulkActions","isRowSelected","showDividers","ActionBarPositioner","DataTableBulkActionsFloating","actionBarRef","numberOfSelectedRows","DataTableDataCell","cell","flexRender","EmptyStateContext","EmptyStateProvider","StyledEmptyStateBody","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","StyledEmptyStateTitle","EmptyStateTitle","EmptyStateContainer","EmptyStateComponent","EmptyState","DataTableEmptyState","DataTableError","OptionalVisuallyHiddenWrapper","hidden","INPUT_ICON","StyledSearchInputText","SearchInput","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","DataTableSelectAllRowsCheckbox","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getCheckedState","updateCheckedState","DataTableHead","sortable","stickyOffset","style","getHeaderGroups","getCanSomeRowsExpand","tableHeaderRowRef","tableRef","headerOffsetRef","headerOffset","setHeaderOffset","headerHide","setHeaderHide","tableHeadElement","tableHeadHeight","intersectionOffset","newOffset","headerGroup","header","StyledTableHeaderCell","sortIcons","ArrowUp","ArrowDown","SortIcon","DataTableHeaderCell","sortDirection","isSortableTable","isDataColumn","hoverProps","isHovered","useHover","handleKeyDown","headerSortingHandler","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","totalRows","selectedRows","copyMerged","getColumnDisplayName","sortedColumn","col","DataTableRowSelectionCheckbox","isElementInteractive","DataTableRow","isDisabled","toggleExpandHandler","toggleSelectHandler","handleRowClick","rowData","currentRow","nextRow","previousRow","DataTableTable","scrollOptions","isTableVisible","isScrolling","scrollTarget","updatePosition","tableTop","tableBottom","prevPosition","handleScroll","observerOffset","observerOptions","handleTableIntersection","entries","entry","tableObserver","isPending","isEmpty","buildScrollContainerKey","controlColumnCount","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","SortableItem","isDragHandle","transform","setNodeRef","SortableRoot","sortableIds","onSortChange","order","setOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","Sortable","DragAndDropTableRow","idColumn","rowId","DragAndDropTableBody","DragAndDropTable","onDragAndDrop","rowIds","handleSortChange","sortedResults","VisibleElementsAmount","_","VIEW_ALL_POPOVER","GO_TO_PREVIOUS_PAGE","GO_TO_NEXT_PAGE","getPaginationElementsToRender","currentPage","pagesCount","visibleElementsCount","paginationPages","visiblePagesCount","withPreviousNextPageArrows","canFitEdgePage","canFitViewAllPopover","canFitPages","firstPage","lastPage","newPaginationItems","canFitCurrentPage","canFitCurrentPageAndPreviousPage","canFitCurrentPageAndPreviousPageAndNextPage","canFitLastPage","findNextAvailablePage","startPage","disabledPages","nextPage","findPreviousAvailablePage","previousPage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","indicatedPages","onItemHover","labels","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","previousAvailablePage","goToPreviousPage","nextAvailablePage","goToNextPage","paginationItems","PaginationNextButton","PaginationPage","isIndicated","isSelected","handleOnHover","handleOnClick","PaginationPopover","isOpen","setIsOpen","Popover","Ellypsis","PaginationPreviousButton","PaginationItems","paginationItem","PaginationComponent","Pagination","StyledNav","getPageCount","setPageIndex","showPagination","recordsCountFrom","recordsCountTo","setPage","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","date","minDate","maxDate","setYear","showYears","setShowYears","currentYear","setCurrentYear","handleSetYear","year","newDate","isAtMinYear","isAtMaxYear","yearList","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","isCurrentYear","month","weeks","weekday","week","weekIndex","dateObj","key","selected","today","prevMonth","nextMonth","PopoverContent","closePopoverText","showCloseButton","CloseIcon","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","formatDateToString","dateFormat","DateInput","initialDate","revalidate","setDate","dateString","handleInputChange","newDateString","parsedInputDate","handleCalendarChange","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","trigger","DialogBackground","DialogClose","backdropOverlay","modalOverlayId","StyledDialogOverlay","sizeReset","StyledDialogContent","DialogContent","closeDialogText","DialogFooter","DialogHeading","StyledDialog","Dialog","DrawerContext","DrawerProvider","position","DrawerClose","DrawerOverlay","animationTop","animationRight","animationBottom","animationLeft","setupAnimation","animation","positionY","positionX","DrawerContent","DrawerFooter","DrawerHeader","DrawerMain","DrawerTrigger","Drawer","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledLi","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","MarkdownThematicBreak","StyledMarkdownContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventEvent","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","variant","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","light","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenuComponent","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","timer","listCenter","triggerOffsetRight","navigationMenuColorSchemes","NavigationMenu","StyledNavigationMenuVerticalItem","NavigationMenuVerticalItem","NavigationMenuVerticalAccordionContext","NavigationMenuVerticalAccordionProvider","NavigationMenuVerticalAccordion","defaultOpen","onOpenChange","NavigationMenuVerticalList","StyledNavigationMenuVerticalAccordionContent","NavigationMenuVerticalAccordionContent","navigationMenuVerticalItemStyles","StyledNavigationMenuVerticalIcon","NavigationMenuVerticalIcon","SideBarHeader","SideBarBody","SideBarFooter","SideBarBrand","SideBarBrandLogo","SideBarBrandName","SideBarContext","useSidebarState","SIZE_COLLAPSED","SIZE_EXPANDED","PointerBlocker","SideBar","isExpanded","setIsExpanded","useInteractOutside","focusWithinProps","useFocusWithin","expandableProps","SIZE_EXPANDED_MAX","StyledNavigationMenuVerticalText","NavigationMenuVerticalText","NavigationMenuVerticalItemContent","StyledNavigationMenuVerticalAccordionTrigger","NavigationMenuVerticalAccordionTrigger","StyledNavigationMenuVerticalLink","NavigationMenuVerticalLink","componentProps","NavigationMenuVertical","navigationMenuVerticalColorSchemes","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","fieldAppearance","NumberInputContainer","NumberInput","min","max","step","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonFieldComponent","FieldDescription","RadioButtonField","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","justify","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","StyledSelect","Select","placeholder","SelectField","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","Spacer","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","prev","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","StepperComponent","count","Stepper","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","useSize","setSize","handleResize","useCallback","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","StyledTile","Tile","borderRadius","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","orientationToDirection","TileToggleGroupRoot","TileToggleGroup","ToastProviderBase","ToastWrapper","ToastContext","ToastProvider","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","toast","Toast","useToastContext","ToastCloseButton","ToastIcon","StyledToast","StyledItem","ToggleGroupItem","ToggleGroupButton","isIconOnly","hasGap","useWindowScrollPosition","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","TopBarComponent","diffused","topBarColorSchemes","scrollPositionY","TopBar","StyledVideo","ReactPlayer","Video","ratio","KeyboardShortcut","config","targetWindow","targetElRef","setTargetElRef","handleOnKeydown","shortcut","StyledKeyboardShortcutIndicator","KeyboardShortcutIndicator","KeyboardShortcutComponent","SegmentedControlContext","badgeSizeMap","SegmentedControlBadge","SegmentedControlContent","SegmentedControlDescription","SegmentedControlHeading","sizeMap","SegmentedControlIcon","SegmentedControlItem","SelectionIndicator","SegmentedControlItemList","tabsRef","selectedIndex","indicatorStyles","setIndicatorStyles","hasInteracted","setHasInteracted","updateIndicatorPosition","currentTab","height","resizeObserver","currentTabs","tab","StyledSegmentedControlRoot","SegmentedControlRoot","currentValue","SegmentedControl","FileDropContext","FileDrop","onDrop","setIsDragging","setFiles","fileUploadInputRef","handleDragOver","handleDragLeave","handleDrop","fileList","useFileDrop"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/stitches.ts","../src/components/box/Box.tsx","../src/utilities/css-wrapper/CSSWrapper.tsx","../src/utilities/style/capsize.ts","../src/utilities/style/encode-background-icon.ts","../src/utilities/style/keyframe-animations.ts","../src/utilities/override-stitches-variant-value/overrideStitchesVariantValue.ts","../src/utilities/style/get-icon-size.ts","../src/utilities/no-overflow-wrapper/NoOverflowWrapper.tsx","../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/components/tooltip/TooltipContent.tsx","../src/components/tooltip/Tooltip.tsx","../src/utilities/optional-tooltip-wrapper/OptionalTooltipWrapper.tsx","../src/utilities/uri/index.ts","../src/components/action-icon/ActionIcon.constants.ts","../src/components/action-icon/ActionIcon.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialog.tsx","../src/utilities/hooks/useIsMountedRef.ts","../src/components/flex/Flex.tsx","../src/components/loader/Loader.tsx","../src/components/button/Button.tsx","../src/components/heading/Heading.tsx","../src/components/text/Text.tsx","../src/components/alert-dialog/alert-context/AlertDialogIcon.tsx","../src/components/alert-dialog/alert-context/AlertDialog.tsx","../src/components/alert-dialog/alert-context/reducer.ts","../src/components/alert-dialog/alert-context/AlertContext.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/image/Image.tsx","../src/components/avatar/AvatarPlaceholder.tsx","../src/components/avatar/AvatarInitial.tsx","../src/components/avatar/AvatarImage.tsx","../src/components/avatar/Avatar.tsx","../src/utilities/hooks/useCallbackRef.ts","../src/components/badge/Badge.context.tsx","../src/components/badge/BadgeIcon.tsx","../src/utilities/hooks/useResizeObserver.ts","../src/components/badge/BadgeText.tsx","../src/components/badge/stitches.badge.colorscheme.config.ts","../src/components/badge/Badge.tsx","../src/components/dismissible/DismissibleRoot.tsx","../src/components/dismissible/DismissibleTrigger.tsx","../src/components/dismissible/index.ts","../src/components/banner/BannerContext.tsx","../src/components/banner/Banner.tsx","../src/components/banner/banner-regular/BannerRegularButton.tsx","../src/components/banner/banner-regular/BannerRegularActions.tsx","../src/components/banner/BannerContainer.tsx","../src/components/banner/banner-regular/BannerRegularContainer.tsx","../src/components/banner/banner-regular/BannerRegularContent.tsx","../src/components/banner/banner-regular/BannerRegularDismiss.tsx","../src/components/banner/banner-regular/BannerRegularHeading.tsx","../src/components/banner/banner-regular/BannerRegularImage.tsx","../src/components/banner/banner-regular/BannerRegularText.tsx","../src/components/banner/banner-regular/BannerRegular.tsx","../src/components/banner/banner-slim/BannerSlimActions.tsx","../src/components/banner/banner-slim/BannerSlimButton.tsx","../src/components/banner/banner-slim/BannerSlimContainer.tsx","../src/components/banner/banner-slim/BannerSlimContent.tsx","../src/components/banner/banner-slim/BannerSlimDismiss.tsx","../src/components/banner/banner-slim/BannerSlimImage.tsx","../src/components/banner/banner-slim/BannerSlimText.tsx","../src/components/banner/banner-slim/BannerSlim.tsx","../src/components/carousel/CarouselArrows.tsx","../src/components/carousel/CarouselPagination.tsx","../src/components/carousel/CarouselSlide.tsx","../src/components/carousel/CarouselSlider.tsx","../src/components/carousel/Carousel.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/checkbox-group/context/CheckboxGroupMounted.context.tsx","../src/components/checkbox-group/context/CheckboxGroupChecked.context.tsx","../src/components/checkbox-group/CheckboxGroupAllItem.tsx","../src/components/checkbox-group/CheckboxGroupItem.tsx","../src/components/checkbox-group/CheckboxGroupSub.tsx","../src/components/checkbox-group/CheckboxGroup.tsx","../src/components/tree/TreeListItem.tsx","../src/components/tree/TreeCollapsible.tsx","../src/components/tree/TreeList.tsx","../src/components/tree/TreeCollapsibleContent.tsx","../src/components/tree/TreeIcon.tsx","../src/components/tree/TreeText.tsx","../src/components/tree/TreeItemContent.tsx","../src/components/tree/TreeCollapsibleTrigger.tsx","../src/components/tree/TreeItem.tsx","../src/components/tree/Tree.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsible.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleContent.tsx","../src/components/checkbox-tree/CheckboxTreeItemContent.tsx","../src/components/checkbox-tree/CheckboxTreeCollapsibleTrigger.tsx","../src/components/checkbox-tree/CheckboxTreeItem.tsx","../src/components/checkbox-tree/CheckboxTree.tsx","../src/components/inline-message/InlineMessage.config.ts","../src/components/inline-message/InlineMessage.tsx","../src/components/label/Label.tsx","../src/components/link/Link.tsx","../src/components/field-wrapper/FieldDescription.tsx","../src/components/field-wrapper/FieldWrapper.tsx","../src/components/radio-button/RadioButton.tsx","../src/components/radio-button/RadioButtonGroup.tsx","../src/components/field-wrapper/InlineFieldWrapper.tsx","../src/components/form/useFormCustomContext.ts","../src/components/form/Form.tsx","../src/components/form/useFieldError.ts","../src/components/checkbox-field/CheckboxField.tsx","../src/components/chip/Chip.tsx","../src/components/chip/ChipGroup.tsx","../src/components/dismissible-group/DismissibleGroupRoot.tsx","../src/components/dismissible-group/DismissibleGroupItem.tsx","../src/components/dismissible-group/index.ts","../src/components/chip-dismissible-group/ChipDismissibleGroupItem.tsx","../src/components/chip-dismissible-group/ChipDismissibleGroupRoot.tsx","../src/components/chip-dismissible-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupItem.tsx","../src/utilities/radix-overrides/toggle-group/ToggleGroupRoot.tsx","../src/utilities/radix-overrides/toggle-group/index.ts","../src/components/chip-toggle-group/ChipToggleGroupRoot.tsx","../src/components/chip-toggle-group/index.ts","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxOption.tsx","../src/components/combobox/ComboboxPopover.tsx","../src/components/combobox/Combobox.tsx","../src/components/input/Input.tsx","../src/components/password-input/PasswordInput.tsx","../src/components/password-field/PasswordField.tsx","../src/components/create-password-field/CreatePasswordField.tsx","../src/components/data-table/DataTable.types.ts","../src/components/data-table/getNewAsyncData.ts","../src/components/data-table/usePagination.ts","../src/components/data-table/useSorting.ts","../src/components/data-table/DataTableContext.tsx","../src/components/table/TableBody.tsx","../src/components/table/TableCell.tsx","../src/components/table/TableFooter.tsx","../src/components/table/TableFooterCell.tsx","../src/components/table/TableHeader.tsx","../src/components/table/TableHeaderCell.tsx","../src/components/table/TableRow.tsx","../src/components/table/useStickyColumnsCss.ts","../src/components/table/TableStickyColumnsContainer.tsx","../src/components/table/Table.tsx","../src/components/data-table/DataTableBody.tsx","../src/components/divider/Divider.tsx","../src/components/data-table/DataTableBulkActions.tsx","../src/components/data-table/DataTableBulkActionsSelectedRowActions.tsx","../src/components/data-table/DataTableBulkActionsFloating.tsx","../src/components/data-table/DataTableDataCell.tsx","../src/components/empty-state/EmptyState.context.tsx","../src/components/empty-state/EmptyStateBody.tsx","../src/components/empty-state/EmptyStateImage.tsx","../src/components/empty-state/EmptyStateTitle.tsx","../src/components/empty-state/EmptyState.tsx","../src/components/data-table/DataTableEmptyState.tsx","../src/components/data-table/DataTableError.tsx","../src/utilities/optional-visually-hidden-wrapper/OptionalVisuallyHiddenWrapper.tsx","../src/components/search-input/SearchInput.tsx","../src/components/data-table/DataTableGlobalFilter.tsx","../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx","../src/components/data-table/DataTableHead.tsx","../src/components/data-table/DataTableHeaderCell.tsx","../src/components/data-table/DataTableLoading.tsx","../src/components/data-table/DataTableMetaData.tsx","../src/components/data-table/DataTableRowSelectionCheckbox.tsx","../src/components/data-table/DataTableRow.tsx","../src/components/data-table/DataTableTable.tsx","../src/components/sortable/Handle.tsx","../src/components/sortable/SortableHandle.tsx","../src/components/sortable/SortableItem.tsx","../src/components/sortable/SortableRoot.tsx","../src/components/sortable/index.ts","../src/components/data-table/drag-and-drop/DragAndDropTableRow.tsx","../src/components/data-table/drag-and-drop/DragAndDropTableBody.tsx","../src/components/data-table/drag-and-drop/DragAndDropTable.tsx","../src/components/pagination/pagination.constants.ts","../src/components/pagination/pagination.helper.ts","../src/components/pagination/pagination-context/PaginationContext.tsx","../src/components/pagination/usePagination.tsx","../src/components/pagination/PaginationNextButton.tsx","../src/components/pagination/PaginationPage.tsx","../src/components/pagination/PaginationPopover.tsx","../src/components/pagination/PaginationPreviousButton.tsx","../src/components/pagination/PaginationItems.tsx","../src/components/pagination/Pagination.tsx","../src/components/data-table/pagination/Pagination.tsx","../src/components/data-table/DataTable.tsx","../src/components/calendar/constants.ts","../src/components/calendar/Day.tsx","../src/components/calendar/Calendar.tsx","../src/components/popover/PopoverContent.tsx","../src/components/popover/Popover.tsx","../src/components/date-input/constants.ts","../src/components/date-input/DateInput.tsx","../src/components/date-field/DateField.tsx","../src/components/dialog/DialogBackground.tsx","../src/components/dialog/DialogClose.tsx","../src/utilities/style/backdrop-overlay.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogFooter.tsx","../src/components/dialog/DialogHeading.tsx","../src/components/dialog/Dialog.tsx","../src/components/drawer/Drawer.context.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerOverlay.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerMain.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/Drawer.tsx","../src/components/dropdown-menu/DropdownMenuContent.tsx","../src/components/dropdown-menu/DropdownMenuItem.tsx","../src/components/dropdown-menu/DropdownMenuLinkItem.tsx","../src/components/dropdown-menu/DropdownMenuSeparator.tsx","../src/components/dropdown-menu/DropdownMenuTrigger.tsx","../src/components/dropdown-menu/DropdownMenu.tsx","../src/components/file-input/FileInput.tsx","../src/components/grid/Grid.tsx","../src/components/input-field/InputField.tsx","../src/components/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/markdown-content/components/MarkdownThematicBreak.tsx","../src/components/markdown-content/MarkdownContent.tsx","../src/components/navigation/NavigationMenuContext.tsx","../src/utilities/event/preventEvent.ts","../src/components/navigation/NavigationMenuDropdownContent.tsx","../src/components/navigation/NavigationMenu.styles.ts","../src/components/navigation/NavigationMenuDropdownTrigger.tsx","../src/components/navigation/NavigationMenuDropdown.tsx","../src/components/navigation/NavigationMenuLink.tsx","../src/components/navigation/NavigationMenuDropdownItem.tsx","../src/components/navigation/stitches.navigationMenu.colorscheme.config.ts","../src/components/navigation/NavigationMenu.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordion.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalList.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVertical.styles.ts","../src/components/navigation-menu-vertical/NavigationMenuVerticalIcon.tsx","../src/components/side-bar/SideBarComponents.tsx","../src/components/side-bar/SideBarContext.tsx","../src/components/side-bar/SideBar.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalText.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.tsx","../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx","../src/components/navigation-menu-vertical/stitches.navigationMenuVertical.colorscheme.config.ts","../src/components/navigation-menu-vertical/NavigationMenuVertical.tsx","../src/components/notification-badge/NotificationBadge.tsx","../src/components/number-input/NumberInputStepper.tsx","../src/components/number-input/NumberInput.tsx","../src/components/number-input-field/NumberInputField.tsx","../src/components/progress-bar/ProgressBar.tsx","../src/components/radio-button-field/RadioField.tsx","../src/components/radio-button-field/RadioButtonField.tsx","../src/components/radio-card/RadioCard.tsx","../src/components/radio-card/RadioCardGroup.tsx","../src/components/search-field/SearchField.tsx","../src/components/section-message/SectionMessageContext.tsx","../src/components/section-message/SectionMessageDescription.tsx","../src/components/section-message/SectionMessageDismiss.tsx","../src/components/section-message/SectionMessageIcon.tsx","../src/components/section-message/SectionMessageLayout.tsx","../src/components/section-message/SectionMessageTitle.tsx","../src/components/section-message/SectionMessage.tsx","../src/components/select/Select.tsx","../src/components/select-field/SelectField.tsx","../src/components/slider/SliderSteps.tsx","../src/components/slider/SliderValue.tsx","../src/components/slider/Slider.tsx","../src/components/slider-field/SliderField.tsx","../src/components/spacer/Spacer.tsx","../src/components/stepper/stepper-context/StepperContext.tsx","../src/components/stepper/StepperStepBack.tsx","../src/components/stepper/StepperStepForward.tsx","../src/components/stepper/StepperStepBullet.tsx","../src/components/stepper/StepperStepContainer.tsx","../src/components/stepper/StepperStepLabel.tsx","../src/components/stepper/types.ts","../src/components/stepper/StepperSteps.tsx","../src/components/stepper/Stepper.tsx","../src/components/switch/Switch.tsx","../src/components/tabs/TabsContent.tsx","../src/components/tabs/TabsTrigger.tsx","../src/utilities/hooks/useScrollPosition.ts","../src/utilities/hooks/useSize.ts","../src/components/tabs/TabsTriggerList.tsx","../src/components/tabs/Tabs.tsx","../src/components/textarea/Textarea.tsx","../src/components/textarea-field/TextareaField.tsx","../src/components/tile/Tile.tsx","../src/components/tile/TileGroup.tsx","../src/components/tile-interactive/TileInteractive.tsx","../src/components/tile-toggle-group/TileToggleGroupItem.tsx","../src/components/tile-toggle-group/TileToggleGroupRoot.tsx","../src/components/tile-toggle-group/index.ts","../src/components/toast/ToastProvider.tsx","../src/components/toast/ToastCloseButton.tsx","../src/components/toast/ToastIcon.tsx","../src/components/toast/Toast.tsx","../src/components/toggle-group/ToggleGroupItem.tsx","../src/components/toggle-group/ToggleGroupButton.tsx","../src/components/toggle-group/ToggleGroupRoot.tsx","../src/components/toggle-group/index.ts","../src/utilities/hooks/useWindowScrollPosition.ts","../src/components/top-bar/stitches.topBar.colorscheme.config.ts","../src/components/top-bar/TopBarActionIcon.tsx","../src/components/top-bar/TopBarBrand.tsx","../src/components/top-bar/TopBar.tsx","../src/components/video/Video.tsx","../src/components/keyboard-shortcut/KeyboardShortcut.tsx","../src/components/keyboard-shortcut/index.ts","../src/components/segmented-control/SegmentedControlContext.tsx","../src/components/segmented-control/SegmentedControlBadge.tsx","../src/components/segmented-control/SegmentedControlContent.tsx","../src/components/segmented-control/SegmentedControlDescription.tsx","../src/components/segmented-control/SegmentedControlHeading.tsx","../src/components/segmented-control/SegmentedControlIcon.tsx","../src/components/segmented-control/SegmentedControlItem.tsx","../src/components/segmented-control/SegmentedControlItemList.tsx","../src/components/segmented-control/SegmentedControlRoot.tsx","../src/components/segmented-control/SegmentedControl.tsx","../src/components/file-drop/FileDropContext.ts","../src/components/file-drop/FileDrop.tsx","../src/components/file-drop/useFileDrop.ts"],"sourcesContent":["import type {\n CSS as StitchesCSS,\n PropertyValue,\n ScaleValue\n} from '@atom-learning/stitches-react'\nimport { createStitches, defaultThemeMap } from '@atom-learning/stitches-react'\nimport type { Theme } from '@atom-learning/theme/lib/theme-atom'\nimport * as atomTheme from '@atom-learning/theme/lib/theme-atom'\nimport { themeMap } from '@atom-learning/theme/theme-map'\n\nexport const utils = {\n bg: (value: PropertyValue<'background'>) => ({\n background: value\n }),\n\n size: (value: ScaleValue<'size'> | number | string) => ({\n height: value,\n width: value\n }),\n\n p: (value: ScaleValue<'space'> | number | string) => ({\n padding: value\n }),\n pt: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value\n }),\n pr: (value: ScaleValue<'space'> | number | string) => ({\n paddingRight: value\n }),\n pb: (value: ScaleValue<'space'> | number | string) => ({\n paddingBottom: value\n }),\n pl: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value\n }),\n px: (value: ScaleValue<'space'> | number | string) => ({\n paddingLeft: value,\n paddingRight: value\n }),\n py: (value: ScaleValue<'space'> | number | string) => ({\n paddingTop: value,\n paddingBottom: value\n }),\n\n m: (value: ScaleValue<'space'> | number | string) => ({\n margin: value\n }),\n mt: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value\n }),\n mr: (value: ScaleValue<'space'> | number | string) => ({\n marginRight: value\n }),\n mb: (value: ScaleValue<'space'> | number | string) => ({\n marginBottom: value\n }),\n ml: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value\n }),\n mx: (value: ScaleValue<'space'> | number | string) => ({\n marginLeft: value,\n marginRight: value\n }),\n my: (value: ScaleValue<'space'> | number | string) => ({\n marginTop: value,\n marginBottom: value\n })\n}\n\nexport const media = {\n sm: '(min-width: 550px)',\n md: '(min-width: 800px)',\n lg: '(min-width: 1100px)',\n xl: '(min-width: 1350px)',\n reducedMotion: '(prefers-reduced-motion)',\n allowMotion: '(prefers-reduced-motion: no-preference)',\n hover: '(hover: hover)'\n}\n\nconst stitchesConfig = createStitches({\n theme: atomTheme as Theme,\n themeMap: {\n ...defaultThemeMap,\n ...themeMap\n },\n utils,\n media\n})\n\nexport const {\n css,\n getCssText,\n createTheme,\n globalCss,\n keyframes,\n styled,\n theme\n} = stitchesConfig\n\nexport type CSS = StitchesCSS<typeof stitchesConfig>\n","import { 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 { 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","import { keyframes } from '~/stitches'\n\nexport const slideUpAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideRightAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(-2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\nexport const slideDownAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateY(-2px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' }\n})\nexport const slideLeftAndFade = keyframes({\n '0%': { opacity: 0, transform: 'translateX(2px)' },\n '100%': { opacity: 1, transform: 'translateX(0)' }\n})\n\nexport const fadeIn = keyframes({\n '0%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\nexport const fadeOut = keyframes({\n '0%': { opacity: 1 },\n '100%': { opacity: 0 }\n})\n\nexport const slideInOut = ({\n outPosition = { x: 0, y: 0 },\n inPosition = { x: 0, y: 0 }\n}: {\n outPosition?: { x: string | number; y: string | number }\n inPosition?: { x: string | number; y: string | number }\n}): {\n in: ReturnType<typeof keyframes>\n out: ReturnType<typeof keyframes>\n} => {\n const slideIn = keyframes({\n '0%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n },\n '100%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n }\n })\n\n const slideOut = keyframes({\n '0%': {\n transform: `translateX(${inPosition.x}) translateY(${inPosition.y})`\n },\n '100%': {\n transform: `translateX(${outPosition.x}) translateY(${outPosition.y})`\n }\n })\n\n return {\n in: slideIn,\n out: slideOut\n }\n}\n","/*\n * Utility function to allow for overriding responsive variants using logic provided via the `overrideFunction` argument.\n *\n * It was developed out of a design requirement to override and pass through size properties to the <Icon /> component; depending\n * on the size of its parent component. It could be used for various other props where we want to tweak the value but\n * maintain the flexibility of a stitches variant property (which allows for use either via a string or a breakpoint object)\n * Documentation on stitches responsive variants: https://stitches.dev/docs/breakpoints#responsive-variants\n *\n */\nexport const overrideStitchesVariantValue = (\n prop: any,\n overrideFunction: (any) => any\n) => {\n let overrideValue\n switch (typeof prop) {\n case 'object':\n overrideValue = {}\n Object.keys(prop).forEach((breakpoint) => {\n const propAtBreakpoint = prop[breakpoint]\n overrideValue[breakpoint] = propAtBreakpoint\n ? overrideFunction(propAtBreakpoint)\n : propAtBreakpoint\n })\n break\n default:\n overrideValue = overrideFunction(prop)\n }\n\n return overrideValue\n}\n","import { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst toIconSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const getFieldIconSize = (size: any) =>\n overrideStitchesVariantValue(size, (s) => toIconSize[s])\n","import { styled } from '~/stitches'\n\nexport const NoOverflowWrapper = styled('div', {\n size: '100%',\n borderRadius: 'inherit',\n overflow: 'hidden'\n})\n\nNoOverflowWrapper.displayName = 'NoOverflowWrapper'\n","import { Content } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities'\n\nconst open = keyframes({\n from: { height: 0 },\n to: { height: 'var(--radix-accordion-content-height)' }\n})\n\nconst close = keyframes({\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: 0 }\n})\n\nconst StyledContent = styled(Content, {\n border: 0,\n width: '100%',\n bg: '$base1',\n overflow: 'hidden',\n '&[data-state=\"open\"]': { borderRadius: '0 0 $0 $0' },\n\n '@allowMotion': {\n '&[data-state=\"open\"]': { animation: `${open} 300ms ease-out` },\n '&[data-state=\"closed\"]': { animation: `${close} 300ms ease-out` }\n }\n})\n\nexport const AccordionContent = ({\n children,\n css,\n ...remainingProps\n}: React.ComponentProps<typeof StyledContent>) => (\n <StyledContent {...remainingProps}>\n <CSSWrapper css={css}>{children}</CSSWrapper>\n </StyledContent>\n)\n","import { Item } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const AccordionItem = styled(Item, {\n width: '100%',\n\n '&:not(:last-child)': {\n mb: '$1'\n }\n})\n","import { Theme } from '@atom-learning/theme/lib/theme-atom'\n\nimport { createTheme } from '~/stitches'\n\nexport const colorSchemes = {}\n\nconst generateColors = ({ prefix, colorName, color0 = '' }) => {\n const colors = {}\n let i = 1\n if (color0) {\n colors[`${prefix}${i}`] = color0\n i++\n }\n let k = 1\n for (i; i <= 11; i++) {\n colors[`${prefix}${i}`] = `$${colorName}${k * 100}`\n k++\n }\n return colors\n}\n\ncolorSchemes['interactive-loContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground',\n interactive1: '$accent1',\n interactive2: '$accent2',\n interactive3: '$accent3'\n }\n} as unknown as Theme)\n\ncolorSchemes['interactive-hiContrast'] = createTheme({\n colors: {\n interactiveForeground: '$foreground7plus',\n interactive1: '$accent9',\n interactive2: '$accent10',\n interactive3: '$accent11'\n }\n} as unknown as Theme)\n\ntype TcolorSetup = {\n colorName: string\n color0?: string\n}\n\nexport const bases = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateBase = () => {\n Object.entries(bases).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `base-${name}`\n colorSchemes[themeName] = createTheme({\n colors: {\n foreground: '$grey1000',\n foreground7plus: '#FFFFFF',\n ...generateColors({ prefix: 'base', colorName, color0 })\n }\n } as unknown as Theme)\n }\n )\n}\n\nexport const accents = {\n primary1: { colorName: 'primary', color0: '#FFFFFF' },\n primary2: { colorName: 'primary' },\n grey1: { colorName: 'grey', color0: '#FFFFFF' },\n grey2: { colorName: 'grey' },\n blue1: { colorName: 'blue', color0: '#FFFFFF' },\n blue2: { colorName: 'blue' },\n pink1: { colorName: 'pink', color0: '#FFFFFF' },\n pink2: { colorName: 'pink' },\n purple1: { colorName: 'purple', color0: '#FFFFFF' },\n purple2: { colorName: 'purple' },\n cyan1: { colorName: 'cyan', color0: '#FFFFFF' },\n cyan2: { colorName: 'cyan' },\n green1: { colorName: 'green', color0: '#FFFFFF' },\n green2: { colorName: 'green' },\n magenta1: { colorName: 'magenta', color0: '#FFFFFF' },\n magenta2: { colorName: 'magenta' },\n red1: { colorName: 'red', color0: '#FFFFFF' },\n red2: { colorName: 'red' },\n teal1: { colorName: 'teal', color0: '#FFFFFF' },\n teal2: { colorName: 'teal' },\n orange1: { colorName: 'orange', color0: '#FFFFFF' },\n orange2: { colorName: 'orange' },\n yellow1: { colorName: 'yellow', color0: '#FFFFFF' },\n yellow2: { colorName: 'yellow' },\n lime1: { colorName: 'lime', color0: '#FFFFFF' },\n lime2: { colorName: 'lime' }\n}\nconst generateAccent = () => {\n Object.entries(accents).forEach(\n ([name, { colorName, color0 = '' }]: [string, TcolorSetup]) => {\n const themeName = `accent-${name}`\n colorSchemes[themeName] = createTheme({\n colors: generateColors({ prefix: 'accent', colorName, color0 })\n })\n }\n )\n}\n\ngenerateBase()\ngenerateAccent()\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { accents, bases, colorSchemes } from './stitches.colorscheme.config'\n\nexport type TcolorScheme = {\n base?: keyof typeof bases\n accent?: keyof typeof accents\n interactive?: 'loContrast' | 'hiContrast'\n}\n\ntype TColorSchemeOwnProps = TcolorScheme & {\n asChild?: boolean\n}\n\nconst StyledColorScheme = styled('div')\n\ntype TColorSchemeProps = React.ComponentProps<typeof StyledColorScheme> &\n TColorSchemeOwnProps\n\n/**\n * @experimental Component has not been finalised. Further design input required. Use with caution.\n */\nexport const ColorScheme: React.ForwardRefExoticComponent<TColorSchemeProps> =\n React.forwardRef(\n (\n {\n base = '',\n accent = '',\n interactive = '',\n className,\n asChild = false,\n ...rest\n },\n ref\n ) => {\n const c = [\n className,\n colorSchemes[`interactive-${interactive}`],\n colorSchemes[`accent-${accent}`],\n colorSchemes[`base-${base}`]\n ]\n .filter(Boolean)\n .join(' ')\n\n const Component = asChild ? Slot : StyledColorScheme\n return <Component ref={ref} className={c} {...rest} />\n }\n )\n\nColorScheme.displayName = 'ColorScheme'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nexport const StyledIcon = styled('svg', {\n display: 'inline-block',\n fill: 'none',\n flexShrink: 0,\n stroke: 'currentColor',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n verticalAlign: 'middle',\n variants: {\n size: {\n sm: { size: '$1', strokeWidth: '1.5' },\n md: { size: '$2', strokeWidth: '1.75' },\n lg: { size: '$3', strokeWidth: '2' }\n }\n }\n})\n\ntype IconProps = Override<\n React.ComponentProps<typeof StyledIcon>,\n {\n is: React.FC<React.SVGProps<SVGSVGElement>>\n as?: never\n }\n>\n\nexport const Icon: React.ForwardRefExoticComponent<IconProps> =\n React.forwardRef(({ is: SVG, size = 'md', ...remainingProps }, ref) => (\n <StyledIcon\n size={size}\n aria-hidden=\"true\"\n {...remainingProps}\n as={SVG}\n ref={ref}\n />\n ))\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\n\nconst RotatingIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n },\n '[data-state=\"closed\"] > &': {\n transform: 'rotate(0deg)'\n }\n})\n\nconst StyledTrigger = styled(Trigger, {\n border: 0,\n py: '$3',\n px: '$4',\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n cursor: 'pointer',\n bg: '$interactive2',\n color: '$interactiveForeground',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:active, &:hover, &:focus-visible': {\n bg: '$interactive3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[data-state=\"open\"]': {\n borderRadius: '$0 $0 0 0'\n },\n '&[data-state=\"closed\"]': {\n borderRadius: '$0'\n },\n variants: {\n arrowPosition: {\n left: {\n flexDirection: 'row-reverse',\n gap: '$2',\n justifyContent: 'flex-end'\n },\n right: {}\n }\n }\n})\n\nexport const AccordionTrigger = ({\n children,\n colorScheme = {},\n asChild,\n arrowPosition = 'right',\n ...remainingProps\n}: React.ComponentProps<typeof StyledTrigger> & {\n colorScheme?: TcolorScheme\n}) => (\n <ColorScheme asChild accent=\"grey1\" interactive=\"loContrast\" {...colorScheme}>\n <StyledTrigger\n asChild={asChild}\n arrowPosition={arrowPosition}\n {...remainingProps}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <RotatingIcon is={ChevronDown} data-testid=\"accordion-chevron\" />\n </>\n )}\n </StyledTrigger>\n </ColorScheme>\n)\n","import { Root } from '@radix-ui/react-accordion'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AccordionContent } from './AccordionContent'\nimport { AccordionItem } from './AccordionItem'\nimport { AccordionTrigger } from './AccordionTrigger'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\ntype AccordionProps = React.ComponentProps<typeof StyledRoot> & {\n type: 'single' | 'multiple'\n}\n\ntype AccordionType = React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Content: typeof AccordionContent\n Trigger: typeof AccordionTrigger\n}\n\nexport const Accordion = React.forwardRef(\n ({ type = 'single', children, ...remainingProps }, ref) => (\n // eslint-disable-next-line\n // @ts-ignore TODO: Radix has an TS error that throws a warning if you pass multiple in. Needs to be fixed by the owner\n <StyledRoot ref={ref} type={type} {...remainingProps}>\n {children}\n </StyledRoot>\n )\n) as AccordionType\n\nAccordion.Item = AccordionItem\nAccordion.Content = AccordionContent\nAccordion.Trigger = AccordionTrigger\n\nAccordion.displayName = 'Accordion'\n","import { Arrow, Content } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport {\n slideDownAndFade,\n slideLeftAndFade,\n slideRightAndFade,\n slideUpAndFade\n} from '~/utilities'\n\nconst StyledContent = styled(Content, {\n backgroundColor: '$grey900',\n borderRadius: '$0',\n boxShadow: '$0',\n color: 'white',\n fontFamily: '$body',\n fontSize: '$sm',\n lineHeight: 1.5,\n whiteSpace: 'normal',\n px: '$3',\n py: '$2',\n zIndex: 10,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"delayed-open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '100px' },\n md: { maxWidth: '250px' },\n lg: { maxWidth: '400px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: '$grey900',\n '[data-align=\"end\"] &': { mr: '$2' },\n '[data-align=\"start\"] &': { ml: '$2' }\n})\n\ntype TooltipContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content>\n\nexport const TooltipContent = ({\n children,\n side = 'top',\n sideOffset = 4,\n size = 'md',\n ...remainingProps\n}: TooltipContentProps) => (\n <StyledContent\n side={side}\n sideOffset={sideOffset}\n size={size}\n {...remainingProps}\n >\n {children}\n <StyledArrow />\n </StyledContent>\n)\n","import { Portal, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TooltipContent } from './TooltipContent'\n\ntype TooltipProps = React.ComponentProps<typeof Root>\n\nconst TooltipComponent = ({\n children,\n delayDuration = 350,\n ...remainingProps\n}: TooltipProps) => (\n <Root delayDuration={delayDuration} {...remainingProps}>\n {children}\n </Root>\n)\n\nexport const Tooltip = Object.assign(TooltipComponent, {\n Content: TooltipContent,\n Trigger: styled(Trigger, {}),\n Portal: Portal,\n Provider: Provider\n})\n\nTooltipComponent.displayName = 'Tooltip'\n","import * as React from 'react'\n\nimport { Tooltip } from '~/components/tooltip'\n\nexport type TOptionalTooltipWrapperProps = {\n hasTooltip?: boolean\n label?: React.ReactNode\n tooltipSide?: React.ComponentProps<typeof Tooltip.Content>['side']\n}\n\nexport const OptionalTooltipWrapper = ({\n hasTooltip,\n label,\n tooltipSide,\n children\n}: React.PropsWithChildren<TOptionalTooltipWrapperProps>) => {\n if (hasTooltip) {\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content side={tooltipSide}>{label}</Tooltip.Content>\n </Tooltip>\n )\n }\n\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>\n}\n\nOptionalTooltipWrapper.displayName = 'OptionalTooltipWrapper'\n","export const isExternalUrl = (url?: string) => {\n if (typeof window === 'undefined' || !url) return false\n\n const isAbsoluteUrl = /^https?:\\/\\//.test(url)\n return isAbsoluteUrl && new URL(url).origin !== window.location.origin\n}\n\nexport const getExternalAnchorProps = (url?: string) =>\n isExternalUrl(url) ? { target: '_blank', rel: 'noopener noreferrer' } : {}\n","export const ActionIconSizeMap = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'lg'\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport invariant from 'invariant'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport type { TOptionalTooltipWrapperProps } from '~/utilities/optional-tooltip-wrapper'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { Icon } from '../icon/Icon'\nimport { ActionIconSizeMap } from './ActionIcon.constants'\n\nconst getSimpleVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'simple',\n css: {\n bg: 'transparent',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst getSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: 'white',\n '&:not(:disabled):hover, &:not(:disabled):focus': {\n bg: interact,\n color: 'white'\n },\n '&:not(:disabled):active': { bg: active }\n }\n})\n\nconst getOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n bg: 'unset',\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&:not(:disabled):hover, &:not(:disabled):focus': { color: interact },\n '&:not(:disabled):active': { color: active }\n }\n})\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n appearance: 'none',\n bg: 'white',\n border: 'unset',\n borderRadius: '$1',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 'unset',\n transition: 'all 100ms ease-out',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n neutral: {},\n primary: {},\n success: {},\n warning: {},\n danger: {},\n white: {}\n },\n appearance: {\n simple: {},\n outline: {},\n solid: {}\n },\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' }\n },\n isRounded: {\n true: {\n borderRadius: '$round'\n }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getSimpleVariant('neutral', '$grey700', '$primary900', '$primary1000'),\n getSimpleVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSimpleVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSimpleVariant('success', '$success', '$successMid', '$successDark'),\n getSimpleVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSimpleVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getSimpleVariant('white', '#fff', '#fff', '#fff'),\n\n getSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getSolidVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getSolidVariant('success', '$success', '$successMid', '$successDark'),\n getSolidVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n\n getOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getOutlineVariant('primaryDark', '$primary1000', '$primary1100', '$primary1200'),\n getOutlineVariant('success', '$success', '$successMid', '$successDark'),\n getOutlineVariant('warning', '$warning', '$warningMid', '$warningDark'),\n getOutlineVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getOutlineVariant('white', '#fff', '#fff', '#fff')\n ]\n})\n\ntype ActionIconProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: string | React.ReactNode\n children: React.ReactNode\n label: string\n } & Omit<TOptionalTooltipWrapperProps, 'label'> &\n NavigatorActions\n>\n\nexport const ActionIcon: React.ForwardRefExoticComponent<ActionIconProps> =\n React.forwardRef(\n (\n {\n children,\n theme = 'primary',\n appearance = 'simple',\n size = 'sm',\n label,\n href,\n disabled,\n hasTooltip = true,\n tooltipSide,\n ...remainingProps\n },\n ref\n ) => {\n const INVALID_CHILDREN_MESSAGE = `A single ${Icon.displayName} component is permitted as a child of ${ActionIcon.displayName}`\n\n invariant(React.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE)\n\n const optionalLinkProps = href\n ? ({\n as: 'a',\n href: disabled ? null : href,\n onClick: undefined,\n 'aria-disabled': !!disabled\n } as const)\n : ({ type: 'button' } as const)\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={hasTooltip}\n label={label}\n tooltipSide={tooltipSide}\n >\n <StyledButton\n {...optionalLinkProps}\n {...getExternalAnchorProps(href)}\n {...remainingProps}\n aria-label={label}\n theme={theme}\n appearance={appearance}\n size={size}\n ref={ref}\n disabled={disabled}\n >\n {React.Children.map(children, (child) => {\n // TS needs this check for any following code to access child.type\n // even with optional chaining\n if (!React.isValidElement(child)) {\n throw new Error(INVALID_CHILDREN_MESSAGE)\n }\n\n invariant(\n child.type === Icon,\n `Children of type ${child?.type} aren't permitted. Only an ${Icon.displayName} component is allowed in ${ActionIcon.displayName}`\n )\n\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Icon>>,\n {\n size: ActionIconSizeMap[size as string],\n css: { ...(child.props.css ? child.props.css : {}) }\n }\n )\n })}\n </StyledButton>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nActionIcon.displayName = 'ActionIcon'\n","import { Content, Overlay, Portal } from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { 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: 1147483646,\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: 1147483646,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n sm: { width: '380px' },\n md: { width: '480px' },\n lg: { width: '600px' }\n }\n }\n})\n\nexport const AlertDialogContent = ({\n size = 'sm',\n ...remainingProps\n}: React.ComponentProps<typeof StyledAlertDialogContent>) => (\n <Portal>\n <StyledAlertDialogOverlay />\n <StyledAlertDialogContent size={size} {...remainingProps} />\n </Portal>\n)\n","import {\n Action,\n Cancel,\n Description,\n Root,\n Title,\n Trigger\n} from '@radix-ui/react-alert-dialog'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AlertDialogContent } from './AlertDialogContent'\n\nconst StyledAlertDialog = styled(Root, {})\n\nexport const AlertDialog = Object.assign(StyledAlertDialog, {\n Description: Description,\n Title: Title,\n Action: Action,\n Cancel: Cancel,\n Content: AlertDialogContent,\n Trigger: Trigger\n})\n\nAlertDialog.displayName = 'AlertDialog'\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMountedRef = () => {\n const isMountedRef = useRef<boolean>()\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n })\n\n return isMountedRef\n}\n","import { styled } from '~/stitches'\n\nexport const Flex = styled('div', {\n display: 'flex',\n variants: {\n direction: {\n row: { flexDirection: 'row' },\n 'row-reverse': { flexDirection: 'row-reverse' },\n column: { flexDirection: 'column' },\n 'column-reverse': { flexDirection: 'column-reverse' },\n inherit: { flexDirection: 'inherit' },\n initial: { flexDirection: 'initial' },\n revert: { flexDirection: 'revert' },\n 'revert-layer': { flexDirection: 'revert-layer' },\n unset: { flexDirection: 'unset' }\n },\n wrap: {\n nowrap: { flexWrap: 'nowrap' },\n wrap: { flexWrap: 'wrap' },\n 'wrap-reverse': { flexWrap: 'wrap-reverse' },\n inherit: { flexWrap: 'inherit' },\n initial: { flexWrap: 'initial' },\n revert: { flexWrap: 'revert' },\n 'revert-layer': { flexWrap: 'revert-layer' },\n unset: { flexWrap: 'unset' }\n },\n // Why is both `start` and `flex-start` valid values? Answer: https://csslayout.news/whats-the-difference-between-the-alignment-values-of-start-flex-start-and-self-start/\n justify: {\n normal: { justifyContent: 'normal' },\n unsafe: { justifyContent: 'unsafe' },\n safe: { justifyContent: 'safe' },\n start: { justifyContent: 'start' },\n center: { justifyContent: 'center' },\n end: { justifyContent: 'end' },\n 'flex-start': { justifyContent: 'flex-start' },\n 'flex-end': { justifyContent: 'flex-end' },\n left: { justifyContent: 'left' },\n right: { justifyContent: 'right' },\n 'space-between': { justifyContent: 'space-between' },\n 'space-around': { justifyContent: 'space-around' },\n 'space-evenly': { justifyContent: 'space-evenly' },\n stretch: { justifyContent: 'stretch' },\n inherit: { justifyContent: 'inherit' },\n initial: { justifyContent: 'initial' },\n revert: { justifyContent: 'revert' },\n 'revert-layer': { justifyContent: 'revert-layer' },\n unset: { justifyContent: 'unset' }\n },\n\n align: {\n normal: { alignItems: 'normal' },\n unsafe: { alignItems: 'unsafe' },\n safe: { alignItems: 'safe' },\n center: { alignItems: 'center' },\n start: { alignItems: 'start' },\n end: { alignItems: 'end' },\n 'self-start': { alignItems: 'self-start' },\n 'self-end': { alignItems: 'self-end' },\n 'flex-start': { alignItems: 'flex-start' },\n 'flex-end': { alignItems: 'flex-end' },\n baseline: { alignItems: 'baseline' },\n 'first baseline': { alignItems: 'first baseline' },\n 'last baseline': { alignItems: 'last baseline' },\n stretch: { alignItems: 'stretch' },\n inherit: { alignItems: 'inherit' },\n initial: { alignItems: 'initial' },\n revert: { alignItems: 'revert' },\n 'revert-layer': { alignItems: 'revert-layer' },\n unset: { alignItems: 'unset' }\n },\n gap: {\n '0': { gap: '$space$0' },\n '1': { gap: '$space$1' },\n '2': { gap: '$space$2' },\n '3': { gap: '$space$3' },\n '4': { gap: '$space$4' },\n '24': { gap: '$space$24' },\n '5': { gap: '$space$5' },\n '6': { gap: '$space$6' },\n '7': { gap: '$space$7' },\n '8': { gap: '$space$8' },\n '9': { gap: '$space$9' }\n }\n }\n})\n\nFlex.displayName = 'Flex'\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { CSS, keyframes, styled } from '~/stitches'\n\nconst FadeInOut = keyframes({\n '0%': { opacity: 0 },\n '30%': { opacity: 1 },\n '50%': { opacity: 1 },\n '80%': { opacity: 0 },\n '100%': { opacity: 0 }\n})\n\nconst Dot = styled('div', {\n animationName: `${FadeInOut}`,\n animationDuration: '1000ms',\n animationFillMode: 'both',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n '&:nth-child(1)': {\n animationDelay: '-300ms'\n },\n '&:nth-child(2)': {\n animationDelay: '-150ms'\n },\n '&:nth-child(3)': {\n animationDelay: 0\n },\n\n variants: {\n size: {\n sm: { size: '4px', mx: '2px' },\n md: { size: '6px', mx: '2px' },\n lg: { size: '8px', mx: '3px' }\n }\n }\n})\n\ntype LoaderProps = {\n message?: string\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n}\n\nexport const Loader = ({\n css = {},\n message = 'Loading',\n size = 'md',\n ...props\n}: LoaderProps) => (\n <Flex\n css={{\n justifyContent: 'center',\n ...css\n }}\n role=\"alert\"\n {...props}\n >\n <VisuallyHidden.Root>{message}</VisuallyHidden.Root>\n <Dot size={size} />\n <Dot size={size} />\n <Dot size={size} />\n </Flex>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { opacify } from 'color2k'\nimport * as React from 'react'\n\nimport { Loader } from '~/components/loader'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nconst getButtonOutlineVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string\n) => ({\n theme,\n appearance: 'outline',\n css: {\n border: '1px solid',\n borderColor: 'currentColor',\n color: base,\n '&[disabled]': {\n opacity: 0.3,\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})\n\nconst getButtonSolidVariant = (\n theme: string,\n base: string,\n interact: string,\n active: string,\n text = 'white'\n) => ({\n theme,\n appearance: 'solid',\n css: {\n bg: base,\n color: text,\n '&[disabled]': {\n opacity: 0.3,\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})\n\nexport const StyledButton = styled('button', {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n borderRadius: '$1',\n cursor: 'pointer',\n display: 'flex',\n fontFamily: '$body',\n fontWeight: 600,\n justifyContent: 'center',\n p: 'unset',\n textDecoration: 'none',\n transition: 'all 100ms ease-out',\n whiteSpace: 'nowrap',\n width: 'max-content',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n primary: {},\n secondary: {},\n success: {},\n warning: {},\n danger: {},\n neutral: {}\n },\n appearance: {\n solid: {},\n outline: {}\n },\n size: {\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n height: '$3',\n px: '$4',\n gap: '$2',\n '& svg': { size: 16 }\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n height: '$4',\n px: '$5',\n gap: '$3',\n '& svg': { size: 20 }\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$5',\n px: '$5',\n gap: '$3',\n '& svg': { size: 22 }\n },\n xl: {\n fontSize: '$lg',\n lineHeight: 1.5,\n height: '$6',\n px: '$5',\n gap: '$3',\n '& svg': { size: 22 }\n }\n },\n isLoading: {\n true: {\n cursor: 'not-allowed',\n opacity: 0.6,\n pointerEvents: 'none'\n }\n },\n fullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n },\n\n // prettier-ignore\n compoundVariants: [\n getButtonSolidVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonSolidVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonSolidVariant('success', '$success', '$successMid', '$successDark'),\n getButtonSolidVariant('warning', '$warning', '$warningMid', '$warningDark', '$grey900'),\n getButtonSolidVariant('danger', '$danger', '$dangerMid', '$dangerDark'),\n getButtonSolidVariant('neutral', 'white', opacify('white', -0.1), opacify('white', -0.25), '$primary800'),\n getButtonOutlineVariant('primary', '$primary800', '$primary900', '$primary1000'),\n getButtonOutlineVariant('secondary', '$primary1000', '$primary1100', '$primary1200'),\n getButtonOutlineVariant('neutral', 'white', opacify('white', -0.2), opacify('white', -0.35))\n ],\n\n defaultVariants: {\n appearance: 'solid',\n size: 'md',\n theme: 'primary'\n }\n})\n\nconst LoaderContentsWrapper = styled('span', {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n visibility: 'hidden',\n variants: {\n size: {\n sm: { gap: '$2' },\n md: { gap: '$3' },\n lg: { gap: '$3' },\n xl: { gap: '$3' }\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst WithLoader = ({\n size,\n children\n}: React.ComponentProps<typeof LoaderContentsWrapper>) => (\n <>\n <Loader css={{ position: 'absolute' }} />\n <LoaderContentsWrapper size={size}>{children}</LoaderContentsWrapper>\n </>\n)\n\ntype ButtonProps = Override<\n React.ComponentProps<typeof StyledButton>,\n VariantProps<typeof StyledButton> & {\n as?: React.ComponentType | React.ElementType\n children: React.ReactNode\n href?: string\n isLoading?: boolean\n } & NavigatorActions\n>\n\nexport const Button: React.ForwardRefExoticComponent<ButtonProps> =\n React.forwardRef(\n (\n { children, as, href, isLoading = false, onClick, disabled, ...rest },\n ref\n ) => (\n <StyledButton\n as={as || (href ? 'a' : undefined)}\n {...(!disabled && !isLoading && { href, onClick })}\n isLoading={isLoading}\n type={!href ? 'button' : undefined}\n disabled={disabled}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n >\n {isLoading ? (\n <WithLoader size={rest.size}>{children}</WithLoader>\n ) : (\n children\n )}\n </StyledButton>\n )\n )\n\nButton.displayName = 'Button'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const StyledHeading = styled('h2', {\n m: 0,\n variants: {\n size: {\n xs: {\n fontFamily: '$body',\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n sm: {\n fontFamily: '$body',\n fontSize: '$lg',\n lineHeight: 1.14,\n ...capsize(0.2078)\n },\n md: {\n fontFamily: '$display',\n fontSize: '$xl',\n lineHeight: 1.14,\n letterSpacing: '0.01em',\n ...capsize(0.2114, 0.2634)\n },\n lg: {\n fontFamily: '$display',\n fontSize: '$2xl',\n lineHeight: 1.08,\n letterSpacing: '0.01em',\n ...capsize(0.1405, 0.2405)\n },\n xl: {\n fontFamily: '$display',\n fontSize: '$3xl',\n lineHeight: 1.12,\n ...capsize(0.16, 0.26)\n },\n xxl: {\n fontFamily: '$display',\n fontSize: '$4xl',\n lineHeight: 1,\n ...capsize(0.1, 0.2)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': { display: 'none !important' }\n }\n },\n weight: {\n medium: { fontWeight: 500 },\n bold: { fontWeight: 700 }\n }\n }\n})\n\nexport type HeadingProps = Override<\n React.ComponentProps<typeof StyledHeading>,\n {\n as?:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Heading: React.ForwardRefExoticComponent<HeadingProps> =\n React.forwardRef(\n ({ size = 'md', weight = 'bold', ...remainingProps }, ref) => (\n <StyledHeading\n ref={ref}\n size={size}\n weight={weight}\n {...remainingProps}\n />\n )\n )\n\nHeading.displayName = 'Heading'\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport type { Override } from '~/utilities'\nimport { capsize } from '~/utilities'\n\nexport const textVariants = {\n size: {\n xs: {\n fontSize: '$xs',\n lineHeight: 1.6,\n ...capsize(0.4364)\n },\n sm: {\n fontSize: '$sm',\n lineHeight: 1.53,\n ...capsize(0.4056)\n },\n md: {\n fontSize: '$md',\n lineHeight: 1.5,\n ...capsize(0.3864)\n },\n lg: {\n fontSize: '$lg',\n lineHeight: 1.52,\n ...capsize(0.3983)\n },\n xl: {\n fontSize: '$xl',\n lineHeight: 1.42,\n ...capsize(0.3506)\n }\n },\n noCapsize: {\n true: {\n '&::before, &::after': {\n display: 'none !important'\n }\n }\n }\n}\n\nexport const getTextVariant: (options: {\n size: keyof typeof textVariants.size\n noCapsize?: boolean\n}) => CSS = ({ size, noCapsize }) => ({\n ...textVariants.size[size],\n ...textVariants.noCapsize[`${noCapsize}`]\n})\n\nexport const StyledText = styled('p', {\n m: 0,\n /** Allow nesting `<Text />` inside `<Text />` without forcing a new line and spacing. */\n '& > &': {\n '&:before, &:after': { display: 'none' }\n },\n variants: {\n ...textVariants,\n weight: {\n normal: { fontWeight: 400 },\n bold: { fontWeight: 600 }\n },\n family: {\n body: { fontFamily: '$body' },\n display: { fontFamily: '$display' },\n mono: { fontFamily: '$mono' }\n }\n }\n})\n\ntype TextProps = Override<\n React.ComponentProps<typeof StyledText>,\n {\n as?:\n | 'blockquote'\n | 'caption'\n | 'dd'\n | 'dt'\n | 'figcaption'\n | 'li'\n | 'p'\n | 'span'\n | 'legend'\n | React.ComponentType\n | React.ElementType\n }\n>\n\nexport const Text: React.ForwardRefExoticComponent<TextProps> =\n React.forwardRef(\n ({ size = 'md', family = 'body', ...remainingProps }, ref) => (\n <StyledText size={size} family={family} {...remainingProps} ref={ref} />\n )\n )\n\nText.displayName = 'Text'\n","import { Danger, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../../icon'\n\nexport type AlertDialogTheme = 'info' | 'warning' | 'danger' | 'success'\n\nconst StyledIcon = styled(Icon, {\n alignSelf: 'flex-start',\n variants: {\n theme: {\n info: { color: '$info' },\n warning: { color: '$warningMid' },\n danger: { color: '$danger', transform: 'rotate(180deg)' },\n success: { color: '$success' }\n }\n }\n})\n\nconst iconMap: Record<\n AlertDialogTheme,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n info: Info,\n warning: Danger,\n danger: Info,\n success: OkCircle\n}\n\nexport const AlertDialogIcon = ({ theme }: { theme: AlertDialogTheme }) => (\n <StyledIcon theme={theme} is={iconMap[theme]} />\n)\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Button } from '../../button'\nimport { Flex } from '../../flex'\nimport { Heading } from '../../heading'\nimport { Text } from '../../text'\nimport { AlertDialog } from '../AlertDialog'\nimport { AlertDialogIcon } from './AlertDialogIcon'\nimport type { alert } from './types'\n\ntype AlertDialogContentProps = React.ComponentProps<typeof AlertDialog> & {\n css?: CSS\n onClose: () => void\n} & alert\n\nexport const Alert = ({\n title,\n size,\n theme,\n description,\n onAction,\n cancelActionText,\n confirmActionText,\n onClose,\n confirmElement,\n cancelElement,\n ...remainingProps\n}: AlertDialogContentProps) => (\n <AlertDialog defaultOpen>\n <AlertDialog.Content\n size={size}\n onEscapeKeyDown={(e) => e.preventDefault()}\n onCloseAutoFocus={onClose}\n css={{\n display: 'flex',\n flexDirection: 'column',\n maxHeight: '90vh',\n gap: '$5'\n }}\n {...remainingProps}\n >\n <Flex css={{ alignItems: 'center', gap: '$2' }}>\n {theme && <AlertDialogIcon theme={theme} />}\n <Heading as={AlertDialog.Title} size=\"sm\" css={{ mr: '$4' }}>\n {title}\n </Heading>\n </Flex>\n {description && (\n <Text\n as={AlertDialog.Description}\n css={{ display: 'flex', overflowY: 'auto' }}\n >\n {description}\n </Text>\n )}\n <Flex gap=\"2\" justify=\"end\" wrap=\"wrap\">\n <AlertDialog.Cancel asChild>\n {cancelElement ||\n (cancelActionText && (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n onClick={() => onAction?.(false)}\n >\n {cancelActionText}\n </Button>\n ))}\n </AlertDialog.Cancel>\n <AlertDialog.Action asChild>\n {confirmElement || (\n <Button size=\"sm\" onClick={() => onAction?.(true)}>\n {confirmActionText}\n </Button>\n )}\n </AlertDialog.Action>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog>\n)\n","import { uid } from 'uid'\n\nimport { alert } from './types'\n\ntype State = alert[]\ntype Action =\n | { type: 'ADD'; payload: alert }\n | { type: 'REMOVE'; payload: string }\n\nexport const initialState = []\n\nexport const reducer = (state: State, action: Action): alert[] => {\n switch (action.type) {\n case 'ADD':\n return [...state, { ...action.payload, id: uid() }]\n case 'REMOVE':\n return state.filter(({ id }) => id !== action.payload)\n default:\n return state\n }\n}\n","import * as React from 'react'\n\nimport { useIsMountedRef } from '~/utilities/hooks/useIsMountedRef'\n\nimport { Alert } from './AlertDialog'\nimport { initialState, reducer } from './reducer'\nimport type { alert } from './types'\n\ntype context = {\n showAlert: (data: alert) => void\n}\n\nconst AlertContext = React.createContext<context>({\n showAlert: () => null\n})\n\nexport const AlertProvider = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const [alerts, dispatch] = React.useReducer(reducer, initialState)\n const isMountedRef = useIsMountedRef()\n\n return (\n <AlertContext.Provider\n value={{\n showAlert: (content: alert) =>\n dispatch({\n payload: content,\n type: 'ADD'\n })\n }}\n >\n {Boolean(alerts.length) && (\n <Alert\n {...alerts[0]}\n key={alerts[0].id}\n onClose={() => {\n if (isMountedRef.current)\n dispatch({\n payload: alerts[0].id,\n type: 'REMOVE'\n })\n }}\n />\n )}\n {children}\n </AlertContext.Provider>\n )\n}\n\nexport const useAlert = (): context => {\n const context = React.useContext(AlertContext)\n\n if (context === undefined) {\n throw new Error('useAlert must be used within a AlertProvider')\n }\n\n return context\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\nimport { AvatarRootContext } from './Avatar'\n\nconst toIconSize = {\n xs: 'sm',\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg',\n xxl: 'lg'\n}\n\nexport const AvatarIcon = ({ is }: { is: typeof Icon }) => {\n const rootContext = React.useContext(AvatarRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return <Icon size={iconSize} is={is} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\nexport const StyledImage = styled('img', {\n verticalAlign: 'middle',\n maxWidth: '100%',\n variants: {\n fluid: {\n true: {\n '&[width]': {\n width: 'auto'\n },\n '&[width][height]': {\n height: 'auto'\n },\n '&[src$=\".svg\"]': {\n width: '100%',\n height: 'auto',\n maxWidth: 'none'\n }\n }\n }\n }\n})\n\ntype ImageProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledImage>,\n {\n as?: never\n }\n>\n\nexport const Image = (props: ImageProps) => <StyledImage {...props} />\n\nImage.displayName = 'Image'\n","import { User } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Box } from '../box'\nimport { Icon } from '../icon'\n\nexport const AvatarPlaceholder = () => {\n return (\n <Box css={{ position: 'relative', size: '100%' }}>\n <Icon is={User} css={{ size: '100%' }} />\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Text } from '../text'\nimport { AvatarRootContext } from './Avatar'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst toTextSize = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n xl: 'md',\n xxl: 'lg'\n}\n\nexport const AvatarInitial = () => {\n const rootContext = React.useContext(AvatarRootContext)\n const { name, size } = rootContext\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n if (!name) {\n return <AvatarPlaceholder />\n }\n\n return (\n <Text size={textSize} css={{ color: '$grey800' }}>\n {name[0].toUpperCase()}\n </Text>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { AvatarInitial } from './AvatarInitial'\n\nconst StyledImage = styled(Image, {\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const AvatarImage = ({ src, alt }: { src: string; alt: string }) => {\n if (!src) {\n return <AvatarInitial />\n }\n\n return <StyledImage src={src} alt={alt} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { AvatarIcon } from './AvatarIcon'\nimport { AvatarImage } from './AvatarImage'\nimport { AvatarInitial } from './AvatarInitial'\nimport { AvatarPlaceholder } from './AvatarPlaceholder'\n\nconst avatarRootStyles = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '$grey800',\n borderRadius: '$round',\n border: '2px solid $grey200',\n backgroundColor: '$white',\n overflow: 'hidden',\n variants: {\n size: {\n xs: { size: '$2' },\n sm: { size: '$3' },\n md: { size: '$4' },\n lg: { size: '$5' },\n xl: { size: '$6' },\n xxl: { size: '$7' }\n }\n }\n}\n\nconst StyledDiv = styled('div', avatarRootStyles)\nconst StyledButton = styled('button', {\n all: 'unset',\n ...avatarRootStyles,\n '&:not([disabled])': {\n '&:hover': {\n borderColor: '$grey800',\n backgroundColor: '$grey100'\n },\n '&:active': {\n borderColor: '$primary800',\n backgroundColor: '$grey200'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[disabled]': {\n opacity: '30%',\n cursor: 'not-allowed'\n }\n})\n\ntype TAvatarProps = React.ComponentProps<\n typeof StyledDiv | typeof StyledButton\n> & { name?: string } & (\n | {\n onClick: React.MouseEventHandler<HTMLButtonElement>\n disabled?: boolean\n }\n | { onClick?: never; disabled?: never }\n )\n\nexport type TAvatarRootContext = {\n name?: TAvatarProps['name']\n size: TAvatarProps['size']\n}\n\nexport const AvatarRootContext = React.createContext<TAvatarRootContext>({\n name: undefined,\n size: 'lg'\n})\n\nexport const AvatarRootProvider = ({ children, name, size }: TAvatarProps) => {\n const value = React.useMemo<TAvatarRootContext>(\n () => ({ name, size }),\n [name, size]\n )\n\n return (\n <AvatarRootContext.Provider value={value}>\n {children}\n </AvatarRootContext.Provider>\n )\n}\n\nexport const AvatarRoot = ({\n children,\n size = 'lg',\n name,\n disabled = false,\n onClick\n}: TAvatarProps) => (\n <AvatarRootProvider name={name} size={size}>\n {onClick ? (\n <StyledButton\n size={size}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}\n css={{ cursor: disabled ? 'auto' : 'pointer' }}\n >\n {children}\n </StyledButton>\n ) : (\n <StyledDiv size={size}>{children}</StyledDiv>\n )}\n </AvatarRootProvider>\n)\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Image: AvatarImage,\n Initial: AvatarInitial,\n Placeholder: AvatarPlaceholder,\n Icon: AvatarIcon\n})\n\nAvatarRoot.displayName = 'Avatar'\n","import * as React from 'react'\n\nexport const useCallbackRef: () => [\n React.MutableRefObject<HTMLElement | null>,\n (HTMLElement) => void\n] = () => {\n const elRef = React.useRef<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) elRef.current = el\n }, [])\n\n return [elRef, setElRefCallback]\n}\n\nexport const useCallbackRefState: () => [\n HTMLElement | null,\n (HTMLElement) => void\n] = () => {\n const [elRef, setElRef] = React.useState<HTMLElement | null>(null)\n\n const setElRefCallback = React.useCallback((el) => {\n if (el) setElRef(el)\n }, [])\n\n return [elRef, setElRefCallback]\n}\n","import * as React from 'react'\n\nimport type { TBadgeProps } from './Badge'\n\ntype TBadgeProviderProps = {\n size?: TBadgeProps['size']\n overflow?: TBadgeProps['overflow']\n}\n\ntype TBadgeContext = TBadgeProviderProps & {\n isOverflowing?: boolean\n setIsOverflowing?: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BadgeContext = React.createContext<TBadgeContext>({})\n\nexport const BadgeProvider = ({\n size,\n overflow,\n children\n}: React.PropsWithChildren<TBadgeProviderProps>) => {\n const [isOverflowing, setIsOverflowing] = React.useState(false)\n\n const value = React.useMemo<TBadgeContext>(\n () => ({ size, overflow, isOverflowing, setIsOverflowing }),\n [size, overflow, isOverflowing, setIsOverflowing]\n )\n return <BadgeContext.Provider value={value}>{children}</BadgeContext.Provider>\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledBadgeIcon = styled(Icon)\n\nexport const BadgeIcon = (\n props: React.ComponentProps<typeof StyledBadgeIcon>\n) => <StyledBadgeIcon size=\"sm\" {...props} />\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\ntype TUseResizeObserverOptions = {\n elements: (HTMLElement | undefined | null)[]\n onResize: (entries: ResizeObserverEntry[]) => void\n delay?: number\n}\n\ntype TUseResizeObserverOutput = ResizeObserver | null\n\nconst createResizeObserver = (\n callback: (entries: ResizeObserverEntry[]) => void\n) => {\n try {\n return new ResizeObserver(callback)\n } catch {\n return null\n }\n}\n\nexport const useResizeObserver = ({\n delay = 500,\n elements,\n onResize\n}: TUseResizeObserverOptions): TUseResizeObserverOutput => {\n const observer = React.useMemo(\n () => createResizeObserver(debounce(delay, onResize)),\n [delay, onResize]\n )\n\n React.useEffect(() => {\n elements.forEach((element) => {\n if (element) {\n observer?.observe(element)\n }\n })\n\n return () => {\n elements.forEach((element) => element && observer?.unobserve(element))\n }\n }, [observer, elements])\n\n return observer\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useResizeObserver } from '~/utilities/hooks/useResizeObserver'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BadgeContext } from './Badge.context'\n\n/*\n * Instead of sticking a resize observer on every `BadgeText`\n * regardless of overflow type, split the resize logic into a component.\n * Basically call the hook conditionally, only for the version with\n * the `overflow === 'ellipsis'` which needs it.\n * This saves us from initialising a resize observer for any badge which doesn't need it.\n */\nconst ObserveBadgeTextOverflow: React.VFC<{ elRef: HTMLElement | null }> = ({\n elRef\n}) => {\n const { setIsOverflowing } = React.useContext(BadgeContext)\n\n useResizeObserver({\n delay: 0,\n elements: [elRef],\n onResize: () => {\n if (!elRef?.scrollWidth || !elRef?.clientWidth) return\n setIsOverflowing?.(elRef.scrollWidth > elRef.clientWidth)\n }\n })\n\n return null\n}\n\nconst StyledBadgeText = styled(Text, {\n py: '$0',\n variants: {\n overflow: {\n ellipsis: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n },\n wrap: {\n whiteSpace: 'normal'\n }\n }\n }\n})\n\ntype TBadgeTextProps = React.ComponentProps<typeof StyledBadgeText>\n\nconst toTextSize = {\n xs: 'sm',\n sm: 'md',\n md: 'md'\n}\n\nexport const BadgeText = ({\n children,\n ...rest\n}: TBadgeTextProps): JSX.Element => {\n // We need the return type here. Otherwise typsecript breaks when this type is used in Badge. Do not remove unless you want to tackle that issue again.\n const { size: badgeSize, overflow } = React.useContext(BadgeContext)\n\n const size = React.useMemo(\n () => overrideStitchesVariantValue(badgeSize, (s) => toTextSize[s]),\n [badgeSize]\n )\n\n const [elRef, setElRef] = useCallbackRefState()\n\n return (\n <>\n {overflow === 'ellipsis' && <ObserveBadgeTextOverflow elRef={elRef} />}\n <StyledBadgeText\n noCapsize\n size={size}\n overflow={overflow}\n ref={setElRef}\n {...rest}\n >\n {children}\n </StyledBadgeText>\n </>\n )\n}\n","import { createTheme } from '~/stitches'\n\n/*\n * Semantic themes\n */\n\nconst info = createTheme({\n colors: {\n textSubtle: '$infoMid',\n backgroundSubtle: '$infoLight',\n textBold: '#FFF',\n backgroundBold: '$info',\n textOnWhite: '$info'\n }\n})\n\nconst neutral = createTheme({\n colors: {\n textSubtle: '$grey900',\n backgroundSubtle: '$grey100',\n textBold: '#FFF',\n backgroundBold: '$grey800',\n textOnWhite: '$grey800'\n }\n})\n\nconst success = createTheme({\n colors: {\n textSubtle: '$successMid',\n backgroundSubtle: '$successLight',\n textBold: '#FFF',\n backgroundBold: '$success',\n textOnWhite: '$success'\n }\n})\n\nconst danger = createTheme({\n colors: {\n textSubtle: '$dangerMid',\n backgroundSubtle: '$dangerLight',\n textBold: '#FFF',\n backgroundBold: '$danger',\n textOnWhite: '$danger'\n }\n})\n\nconst warning = createTheme({\n colors: {\n textSubtle: '$warningText',\n backgroundSubtle: '$warningLight',\n textBold: '$grey1000',\n backgroundBold: '$warning',\n textOnWhite: '$warning'\n }\n})\n\n/*\n * Non-semantic themes\n */\nconst primary = createTheme({\n colors: {\n textSubtle: '$primary1000',\n backgroundSubtle: '$primary200',\n textSubtleHover: '$primary1100',\n backgroundSubtleHover: '$primary300',\n\n textBold: 'white',\n backgroundBold: '$primary800',\n backgroundBoldHover: '$primary900',\n\n textOnWhite: '$primary800'\n }\n})\n\nconst grey = createTheme({\n colors: {\n textSubtle: '$grey1000',\n backgroundSubtle: '$grey200',\n textSubtleHover: '$grey1100',\n backgroundSubtleHover: '$grey300',\n\n textBold: '#FFF',\n backgroundBold: '$grey800',\n backgroundBoldHover: '$grey900',\n\n textOnWhite: '$grey800'\n }\n})\n\nconst blue = createTheme({\n colors: {\n textSubtle: '$blue1000',\n backgroundSubtle: '$blue200',\n textSubtleHover: '$blue1100',\n backgroundSubtleHover: '$blue300',\n\n textBold: '#FFF',\n backgroundBold: '$blue800',\n backgroundBoldHover: '$blue900',\n\n textOnWhite: '$blue800'\n }\n})\n\nconst pink = createTheme({\n colors: {\n textSubtle: '$pink1000',\n backgroundSubtle: '$pink200',\n textSubtleHover: '$pink1100',\n backgroundSubtleHover: '$pink300',\n\n textBold: '#FFF',\n backgroundBold: '$pink800',\n backgroundBoldHover: '$pink900',\n\n textOnWhite: '$pink800'\n }\n})\n\nconst purple = createTheme({\n colors: {\n textSubtle: '$purple1000',\n backgroundSubtle: '$purple200',\n textSubtleHover: '$purple1100',\n backgroundSubtleHover: '$purple300',\n\n textBold: '#FFF',\n backgroundBold: '$purple800',\n backgroundBoldHover: '$purple900',\n\n textOnWhite: '$purple700'\n }\n})\n\nconst cyan = createTheme({\n colors: {\n textSubtle: '$cyan1000',\n backgroundSubtle: '$cyan200',\n textSubtleHover: '$cyan1100',\n backgroundSubtleHover: '$cyan300',\n\n textBold: '#FFF',\n backgroundBold: '$cyan800',\n backgroundBoldHover: '$cyan900',\n\n textOnWhite: '$cyan800'\n }\n})\n\nconst green = createTheme({\n colors: {\n textSubtle: '$green1000',\n backgroundSubtle: '$green200',\n textSubtleHover: '$green1100',\n backgroundSubtleHover: '$green300',\n\n textBold: '#FFF',\n backgroundBold: '$green800',\n backgroundBoldHover: '$green900',\n\n textOnWhite: '$green800'\n }\n})\n\nconst magenta = createTheme({\n colors: {\n textSubtle: '$magenta1000',\n backgroundSubtle: '$magenta200',\n textSubtleHover: '$magenta1100',\n backgroundSubtleHover: '$magenta300',\n\n textBold: '#FFF',\n backgroundBold: '$magenta800',\n backgroundBoldHover: '$magenta900',\n\n textOnWhite: '$magenta800'\n }\n})\n\nconst red = createTheme({\n colors: {\n textSubtle: '$red1000',\n backgroundSubtle: '$red200',\n textSubtleHover: '$red1100',\n backgroundSubtleHover: '$red400',\n\n textBold: '#FFF',\n backgroundBold: '$red800',\n backgroundBoldHover: '$red900',\n\n textOnWhite: '$red800'\n }\n})\n\nconst teal = createTheme({\n colors: {\n textSubtle: '$teal1000',\n backgroundSubtle: '$teal200',\n textSubtleHover: '$teal1100',\n backgroundSubtleHover: '$teal300',\n\n textBold: '#FFF',\n backgroundBold: '$teal800',\n backgroundBoldHover: '$teal900',\n\n textOnWhite: '$teal800'\n }\n})\n\nconst orange = createTheme({\n colors: {\n textSubtle: '$orange1000',\n backgroundSubtle: '$orange200',\n textSubtleHover: '$orange1100',\n backgroundSubtleHover: '$orange300',\n\n textBold: '$grey1200',\n backgroundBold: '$orange600',\n backgroundBoldHover: '$orange700',\n\n textOnWhite: '$orange1000'\n }\n})\n\nconst yellow = createTheme({\n colors: {\n textSubtle: '$yellow1000',\n backgroundSubtle: '$yellow200',\n textSubtleHover: '$yellow1100',\n backgroundSubtleHover: '$yellow300',\n\n textBold: '$grey1200',\n backgroundBold: '$yellow500',\n backgroundBoldHover: '$yellow600',\n\n textOnWhite: '$yellow900'\n }\n})\n\nconst lime = createTheme({\n colors: {\n textSubtle: '$lime1000',\n backgroundSubtle: '$lime200',\n textSubtleHover: '$lime1100',\n backgroundSubtleHover: '$lime300',\n\n textBold: '$grey1200',\n backgroundBold: '$lime600',\n backgroundBoldHover: '$lime700',\n\n textOnWhite: '$lime900'\n }\n})\n\nconst lapis = createTheme({\n colors: {\n textSubtle: '$lapis1000',\n backgroundSubtle: '$lapis200',\n textSubtleHover: '$lapis1100',\n backgroundSubtleHover: '$lapis300',\n\n textBold: 'white',\n backgroundBold: '$lapis700',\n backgroundBoldHover: '$lapis900',\n\n textOnWhite: '$lapis700'\n }\n})\n\nconst maroon = createTheme({\n colors: {\n textSubtle: '$maroon1000',\n backgroundSubtle: '$maroon200',\n textSubtleHover: '$maroon1100',\n backgroundSubtleHover: '$maroon300',\n\n textBold: 'white',\n backgroundBold: '$maroon800',\n backgroundBoldHover: '$maroon900',\n\n textOnWhite: '$maroon700'\n }\n})\n\nconst marsh = createTheme({\n colors: {\n textSubtle: '$marsh1000',\n backgroundSubtle: '$marsh200',\n textSubtleHover: '$marsh1100',\n backgroundSubtleHover: '$marsh300',\n\n textBold: 'white',\n backgroundBold: '$marsh800',\n backgroundBoldHover: '$marsh900',\n\n textOnWhite: '$marsh700'\n }\n})\n\nexport const badgeSemanticNames = [\n 'info',\n 'neutral',\n 'success',\n 'danger',\n 'warning'\n]\n\nexport const colorSchemes = {\n info,\n neutral,\n success,\n danger,\n warning,\n primary,\n grey,\n blue,\n pink,\n purple,\n cyan,\n green,\n magenta,\n red,\n teal,\n orange,\n yellow,\n lime,\n lapis,\n maroon,\n marsh\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { OptionalTooltipWrapper } from '~/utilities/optional-tooltip-wrapper'\n\nimport { BadgeContext, BadgeProvider } from './Badge.context'\nimport { BadgeIcon } from './BadgeIcon'\nimport { BadgeText } from './BadgeText'\nimport {\n badgeSemanticNames,\n colorSchemes as badgeColorSchemes\n} from './stitches.badge.colorscheme.config'\n\nconst StyledBadge = styled(Flex, {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n minWidth: 0,\n border: '1px solid #FFFFFF',\n fontFamily: '$body',\n '& > *:not(:last-child)': {\n mr: '$1'\n },\n variants: {\n emphasis: {\n white: {\n color: '$textOnWhite',\n background: 'white'\n },\n subtle: {\n color: '$textSubtle',\n background: '$backgroundSubtle'\n },\n bold: {\n color: '$textBold',\n background: '$backgroundBold'\n }\n },\n size: {\n xs: {\n px: '$1'\n },\n sm: {\n px: '$1',\n py: '$0'\n },\n md: {\n px: '$2',\n py: '$1'\n }\n },\n\n isClickable: {\n true: {\n cursor: 'pointer'\n }\n },\n highlighted: {\n true: {}\n }\n },\n compoundVariants: [\n {\n isClickable: true,\n emphasis: 'white',\n css: {\n '&:hover': {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'subtle',\n css: {\n '&:hover': {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n }\n },\n {\n isClickable: true,\n emphasis: 'bold',\n css: {\n '&:hover': {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n },\n {\n emphasis: 'white',\n highlighted: true,\n css: {\n color: '$textOnWhite',\n background: 'color-mix(in srgb, $textOnWhite, transparent 92%)'\n }\n },\n {\n emphasis: 'subtle',\n highlighted: true,\n css: {\n color: '$textSubtleHover',\n background: '$backgroundSubtleHover'\n }\n },\n {\n emphasis: 'bold',\n highlighted: true,\n css: {\n color: '$textBold',\n background: '$backgroundBoldHover'\n }\n }\n ]\n})\n\nexport type TBadgeProps = React.ComponentProps<typeof StyledBadge> & {\n theme?: keyof typeof badgeColorSchemes\n overflow?: React.ComponentProps<typeof BadgeText>['overflow']\n}\n\ntype TBadgeInnerProps = Omit<TBadgeProps, 'size' | 'overflow'>\n\nconst BadgeInner: React.ForwardRefExoticComponent<TBadgeInnerProps> =\n React.forwardRef(\n ({ theme = 'info', emphasis = 'subtle', children, ...rest }, ref) => {\n const { size, overflow, isOverflowing } = React.useContext(BadgeContext)\n const [badgeElRef, setBadgeElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => badgeElRef as HTMLDivElement)\n\n const label = badgeElRef?.textContent\n\n const isInfoOnly = badgeSemanticNames.includes(theme)\n\n const isClickable =\n Object.keys(rest).includes('onClick') ||\n Object.keys(rest).includes('href')\n\n return (\n <OptionalTooltipWrapper\n hasTooltip={overflow === 'ellipsis' && isOverflowing}\n label={label}\n >\n <StyledBadge\n role=\"status\"\n emphasis={emphasis}\n size={size}\n {...rest}\n className={badgeColorSchemes[theme]}\n ref={setBadgeElRef}\n isClickable={isClickable && !isInfoOnly}\n >\n {React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <BadgeText>{child}</BadgeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <BadgeIcon {...child.props} />\n }\n return child\n })}\n </StyledBadge>\n </OptionalTooltipWrapper>\n )\n }\n )\n\nconst BadgeComponent: React.ForwardRefExoticComponent<TBadgeProps> =\n React.forwardRef(({ size = 'sm', overflow = 'wrap', ...rest }, ref) => {\n return (\n <BadgeProvider size={size} overflow={overflow}>\n <BadgeInner {...rest} ref={ref} />\n </BadgeProvider>\n )\n })\n\nexport const Badge = Object.assign(BadgeComponent, {\n Icon: BadgeIcon,\n Text: BadgeText\n})\n\nBadgeComponent.displayName = 'Badge'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nexport interface IDismissibleRootContext {\n disabled?: boolean\n isDismissed: boolean\n setIsDismissed: (boolean) => void\n onDismiss: () => void\n}\n\nexport const DismissibleRootContext =\n React.createContext<IDismissibleRootContext>({\n isDismissed: false,\n setIsDismissed: () => undefined,\n onDismiss: () => undefined\n })\n\nexport interface IDismissibleRootProps {\n disabled?: boolean\n dismissed?: boolean\n onDismiss?: () => void\n}\n\nexport const DismissibleRootProvider = ({\n dismissed: controlledIsDismissed,\n children,\n disabled,\n onDismiss = () => null\n}: React.PropsWithChildren<IDismissibleRootProps>) => {\n const [isDismissed, setIsDismissed] = React.useState(false)\n\n const value = React.useMemo<IDismissibleRootContext>(() => {\n const isControlled = typeof controlledIsDismissed === 'boolean'\n return {\n disabled,\n isDismissed: isControlled\n ? (controlledIsDismissed as boolean)\n : isDismissed,\n setIsDismissed: isControlled ? () => null : setIsDismissed,\n onDismiss\n }\n }, [disabled, isDismissed, onDismiss, controlledIsDismissed])\n\n return (\n <DismissibleRootContext.Provider value={value}>\n {children}\n </DismissibleRootContext.Provider>\n )\n}\n\nexport interface IDismissibleRootInternalProps {\n asChild?: boolean\n}\n\nconst DismissibleRootInternal = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleRootInternalProps>) => {\n const rootContext = React.useContext(DismissibleRootContext)\n\n const { isDismissed, disabled } = rootContext\n\n if (isDismissed) return null\n\n const props = { ...(disabled && { [`data-disabled`]: '' }), ...rest }\n const Component = asChild ? Slot : 'div'\n return <Component {...props} />\n}\n\nexport const DismissibleRoot = ({\n disabled = false,\n dismissed,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<\n IDismissibleRootInternalProps & IDismissibleRootProps\n>) => (\n <DismissibleRootProvider\n dismissed={dismissed}\n disabled={disabled}\n onDismiss={onDismiss}\n >\n <DismissibleRootInternal {...rest} />\n </DismissibleRootProvider>\n)\n\nDismissibleRoot.displayName = 'Dismissible'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { DismissibleRootContext } from './DismissibleRoot'\n\nexport interface IDismissibleTriggerProps {\n asChild?: boolean\n}\n\nconst DefaultTrigger = (props) => (\n <button type=\"button\" {...props}>\n Dismiss\n </button>\n)\n\nexport const DismissibleTrigger = ({\n asChild = false,\n ...rest\n}: React.PropsWithChildren<IDismissibleTriggerProps>) => {\n const context = React.useContext(DismissibleRootContext)\n if (context === undefined) {\n throw new Error(\n 'Dismissible.Trigger can only be used within a Dismissible.Item'\n )\n }\n\n const { setIsDismissed, disabled, onDismiss } = context\n\n const handleDismiss = () => {\n setIsDismissed(true)\n onDismiss?.()\n }\n\n const props = {\n disabled: disabled,\n onClick: handleDismiss,\n ...rest\n }\n\n const Component = asChild ? Slot : DefaultTrigger\n return <Component {...props} />\n}\n","import { DismissibleRoot } from './DismissibleRoot'\nimport { DismissibleTrigger } from './DismissibleTrigger'\n\nexport const Dismissible = Object.assign(DismissibleRoot, {\n Trigger: DismissibleTrigger\n})\n","import * as React from 'react'\n\nimport { TBannerContainerProps } from './BannerContainer'\n\nexport type TBannerProviderProps = Pick<\n TBannerContainerProps,\n 'size' | 'emphasis'\n>\n\ntype TBannerContextValue = TBannerProviderProps & {\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const BannerContext = React.createContext<TBannerContextValue>({\n emphasis: 'minimal',\n size: {\n '@initial': 'sm',\n '@md': 'md'\n },\n hasDismiss: false,\n setHasDismiss: () => null\n})\n\nexport const useBannerContext = (): TBannerContextValue => {\n const context = React.useContext(BannerContext)\n\n if (context === undefined) {\n throw new Error('useBannerContext must be used within a BannerProvider')\n }\n\n return context\n}\n\nexport const BannerProvider = ({\n emphasis = 'minimal',\n size = {\n '@initial': 'sm',\n '@md': 'md'\n },\n children\n}: React.PropsWithChildren<TBannerProviderProps>) => {\n const [hasDismiss, setHasDismiss] = React.useState(false)\n const value = React.useMemo<TBannerContextValue>(\n () => ({ emphasis, size, hasDismiss, setHasDismiss }),\n [emphasis, size, hasDismiss, setHasDismiss]\n )\n return (\n <BannerContext.Provider value={value}>{children}</BannerContext.Provider>\n )\n}\n\nBannerProvider.displayName = 'Banner'\n","import { Dismissible } from '../dismissible'\nimport { BannerProvider } from './BannerContext'\n\nexport const Banner = Object.assign(BannerProvider, {\n Dismiss: Dismissible.Trigger\n})\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerRegularButton = (\n props: React.ComponentProps<typeof Button>\n) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size={size}\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n {...props}\n />\n )\n}\n\nBannerRegularButton.displayName = 'BannerRegularButton'\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\nimport { BannerRegularButton } from './BannerRegularButton'\n\nconst MAX_ALLOWED_CHILDREN = 2\n\nconst toGap = {\n sm: 2,\n md: 4\n}\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nexport const BannerRegularActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n\n const gap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toGap[s]),\n [size]\n )\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n invariant(\n React.Children.count(children) <= MAX_ALLOWED_CHILDREN,\n `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`\n )\n\n return (\n <Flex gap={gap} direction={direction} {...props}>\n {React.Children.map(children, (child, index) => {\n // if child is undefined or null, React.isValidElement returns false and hence error is thrown.\n // This line will prevent that from happening\n if (child == null) return child\n\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to ${BannerRegularActions.displayName} is not a valid element`\n )\n }\n\n invariant(\n child.type === BannerRegularButton,\n `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`\n )\n\n const propsToInject: Partial<\n React.ComponentProps<typeof BannerRegularButton>\n > = {\n // Override button appearance - make the second button outlined\n appearance: index > 0 ? 'outline' : undefined\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof BannerRegularButton>\n >,\n propsToInject\n )\n })}\n </Flex>\n )\n}\n\nBannerRegularActions.displayName = 'BannerRegularActions'\n","import * as React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport { useBannerContext } from './BannerContext'\n\nconst StyledBannerContainer = styled(Flex, {\n position: 'relative',\n width: '100%',\n borderRadius: '$3',\n overflow: 'hidden',\n color: '$foreground',\n '--banner-heading-color': '$colors$foreground',\n '--banner-text-color': '$colors$grey900',\n variants: {\n emphasis: {\n bold: {\n background: '$base11',\n color: '$foreground7plus',\n '--banner-heading-color': '$colors$foreground7plus',\n '--banner-text-color': '$colors$grey100'\n },\n subtle: {\n background: '$base3'\n },\n minimal: {\n background: '$base1'\n }\n },\n size: {\n sm: {},\n md: {}\n }\n }\n})\n\nexport type TBannerContainerProps = React.ComponentProps<\n typeof StyledBannerContainer\n> & {\n colorScheme?: TcolorScheme\n} & React.ComponentProps<typeof Dismissible>\n\nexport const BannerContainer = ({\n colorScheme = {},\n onDismiss,\n dismissed,\n ...props\n}: TBannerContainerProps): JSX.Element => {\n const { emphasis } = useBannerContext()\n\n return (\n <ColorScheme {...colorScheme} asChild>\n <Dismissible asChild onDismiss={onDismiss} dismissed={dismissed}>\n <StyledBannerContainer role=\"banner\" emphasis={emphasis} {...props} />\n </Dismissible>\n </ColorScheme>\n )\n}\n","import * as React from 'react'\n\nimport { BannerContainer } from '../BannerContainer'\n\ntype TBannerRegularContainerProps = Omit<\n React.ComponentProps<typeof BannerContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerRegularContainer = (props: TBannerRegularContainerProps) => (\n <BannerContainer {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n width: '62%',\n flexGrow: 1,\n variants: {\n size: {\n sm: {\n p: '$4'\n },\n md: {\n p: '$24',\n pr: '$5'\n }\n }\n }\n})\n\nexport const BannerRegularContent = (\n props: React.ComponentProps<typeof Container>\n) => {\n const { size } = useBannerContext()\n\n return <Container size={size} {...props} />\n}\n\nBannerRegularContent.displayName = 'BannerRegularContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst toActionIconSize = {\n sm: 'md',\n md: 'sm'\n}\n\nconst StyledDismiss = styled(ActionIcon, {\n zIndex: 1,\n position: 'absolute',\n top: '$3',\n right: '$3'\n})\n\ntype BannerRegularDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerRegularDismiss = ({\n label = 'dismiss',\n ...rest\n}: BannerRegularDismissProps) => {\n const { size, setHasDismiss } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n const actionIconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toActionIconSize[s]),\n [size]\n )\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size={actionIconSize}\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n appearance=\"solid\"\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerRegularDismiss.displayName = 'BannerRegularDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Heading } from '../../heading'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledHeading = styled(Heading, {\n mb: '$4',\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularHeading = (\n props: React.ComponentProps<typeof Heading>\n) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledHeading\n size=\"md\"\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularHeading.displayName = 'BannerRegularHeading'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n position: 'relative',\n overflow: 'hidden',\n width: '38%',\n variants: {\n size: {\n sm: {\n display: 'none'\n },\n md: {\n display: 'block'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n position: 'absolute',\n maxWidth: 'none',\n width: '100%',\n height: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerRegularImage = (\n props: React.ComponentProps<typeof Image>\n) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerRegularImage.displayName = 'BannerRegularImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-text-color)',\n variants: {\n containerSize: {\n sm: {\n mb: '$4'\n },\n md: {\n mb: '$24'\n }\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerRegularText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size={size}\n containerSize={size}\n hasDismiss={hasDismiss}\n {...props}\n />\n )\n}\n\nBannerRegularText.displayName = 'BannerRegularText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerRegularActions } from './BannerRegularActions'\nimport { BannerRegularButton } from './BannerRegularButton'\nimport { BannerRegularContainer } from './BannerRegularContainer'\nimport { BannerRegularContent } from './BannerRegularContent'\nimport { BannerRegularDismiss } from './BannerRegularDismiss'\nimport { BannerRegularHeading } from './BannerRegularHeading'\nimport { BannerRegularImage } from './BannerRegularImage'\nimport { BannerRegularText } from './BannerRegularText'\n\nconst BannerRegularComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof BannerRegularContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerRegularContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerRegular = Object.assign(BannerRegularComponent, {\n Content: BannerRegularContent,\n Heading: BannerRegularHeading,\n Text: BannerRegularText,\n Actions: BannerRegularActions,\n Image: BannerRegularImage,\n Button: BannerRegularButton,\n Dismiss: BannerRegularDismiss\n})\n\nBannerRegularComponent.displayName = 'BannerRegular'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledBannerSlimActions = styled(Flex, {\n variants: {\n size: {\n sm: { width: '100%' },\n md: { width: 'auto' }\n }\n }\n})\n\nexport const BannerSlimActions = ({\n children,\n ...props\n}: React.ComponentProps<typeof Flex>) => {\n const { size } = useBannerContext()\n return (\n <StyledBannerSlimActions size={size} gap={4} {...props}>\n {children}\n </StyledBannerSlimActions>\n )\n}\n\nBannerSlimActions.displayName = 'BannerSlimActions'\n","import * as React from 'react'\n\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Button } from '../../button'\nimport { useBannerContext } from '../BannerContext'\n\nexport const BannerSlimButton = ({\n css,\n ...props\n}: React.ComponentProps<typeof Button>) => {\n const { emphasis, size } = useBannerContext()\n\n const fullWidth = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => s === 'sm'),\n [size]\n )\n\n return (\n <Button\n size=\"md\"\n fullWidth={fullWidth}\n theme={emphasis === 'bold' ? 'neutral' : 'primary'}\n css={{ ml: 'auto', ...css }}\n {...props}\n />\n )\n}\n\nBannerSlimButton.displayName = 'BannerSlimButton'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { BannerContainer } from '../BannerContainer'\nimport { useBannerContext } from '../BannerContext'\n\nconst toDirection = {\n sm: 'column',\n md: 'row'\n}\n\nconst toAlign = {\n sm: 'flex-start',\n md: 'center'\n}\n\nconst toWrap = {\n sm: 'wrap',\n md: 'nowrap'\n}\n\nconst StyledBannerSlimContainer = styled(BannerContainer, {\n p: '$4',\n variants: {\n sizeWorkaround: {\n sm: {},\n md: {\n px: '$24'\n }\n }\n }\n})\n\ntype TBannerSlimContainerProps = Omit<\n React.ComponentProps<typeof StyledBannerSlimContainer>,\n 'direction' | 'align' | 'wrap' | 'gap' | 'justify'\n>\n\nexport const BannerSlimContainer = (\n props: TBannerSlimContainerProps\n): JSX.Element => {\n const { size } = useBannerContext()\n\n const direction = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toDirection[s]),\n [size]\n )\n\n const align = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toAlign[s]),\n [size]\n )\n\n const wrap = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toWrap[s]),\n [size]\n )\n\n return (\n <StyledBannerSlimContainer\n direction={direction}\n align={align}\n sizeWorkaround={size}\n gap={4}\n wrap={wrap}\n {...props}\n />\n )\n}\n\nBannerSlimContainer.displayName = 'BannerSlimContainer'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../../flex'\n\nconst StyledBannerSlimContent = styled(Flex, {\n width: '100%'\n})\n\nexport const BannerSlimContent = (\n props: React.ComponentProps<typeof StyledBannerSlimContent>\n) => <StyledBannerSlimContent align=\"center\" gap={4} {...props} />\n\nBannerSlimContent.displayName = 'BannerSlimContent'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../../action-icon'\nimport { Icon } from '../../icon'\nimport { Banner } from '../Banner'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledDismiss = styled(ActionIcon, {\n variants: {\n emphasis: {\n bold: {\n color: 'white !important'\n }\n },\n containerSize: {\n sm: { position: 'absolute', top: '$4', right: '$4' },\n md: { position: 'static' }\n }\n }\n})\n\ntype TBannerSlimDismissProps = Omit<\n React.ComponentProps<typeof StyledDismiss>,\n 'children' | 'onClick' | 'href'\n>\n\nexport const BannerSlimDismiss = ({\n label = 'dismiss',\n ...rest\n}: TBannerSlimDismissProps): JSX.Element => {\n const { size, setHasDismiss, emphasis } = useBannerContext()\n\n React.useEffect(() => {\n setHasDismiss(true)\n return () => {\n setHasDismiss(false)\n }\n }, [setHasDismiss])\n\n return (\n <Banner.Dismiss asChild>\n <StyledDismiss\n label={label}\n size=\"md\"\n hasTooltip={false}\n isRounded\n theme=\"neutral\"\n containerSize={size}\n emphasis={emphasis as TBannerSlimDismissProps['emphasis']}\n {...rest}\n >\n <Icon is={Close} />\n </StyledDismiss>\n </Banner.Dismiss>\n )\n}\n\nBannerSlimDismiss.displayName = 'BannerSlimDismiss'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box'\nimport { Image } from '../../image'\nimport { useBannerContext } from '../BannerContext'\n\nconst Container = styled(Box, {\n overflow: 'hidden',\n borderRadius: '$round',\n alignSelf: 'flex-start',\n flexShrink: 0,\n variants: {\n size: {\n sm: {\n size: '$4'\n },\n md: {\n size: '$5'\n }\n }\n }\n})\n\nconst StyledImage = styled(Image, {\n maxWidth: 'none',\n size: '100%',\n objectFit: 'cover'\n})\n\nexport const BannerSlimImage = (props: React.ComponentProps<typeof Image>) => {\n const { size } = useBannerContext()\n\n return (\n <Container size={size}>\n <StyledImage {...props} />\n </Container>\n )\n}\n\nBannerSlimImage.displayName = 'BannerSlimImage'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../../text'\nimport { useBannerContext } from '../BannerContext'\n\nconst StyledText = styled(Text, {\n color: 'var(--banner-heading-color)',\n variants: {\n containerSize: {\n sm: {},\n md: {}\n },\n hasDismiss: {\n true: {}\n }\n },\n compoundVariants: [\n {\n containerSize: 'sm',\n hasDismiss: true,\n css: {\n mr: '$6'\n }\n }\n ]\n})\n\nexport const BannerSlimText = (props: React.ComponentProps<typeof Text>) => {\n const { size, hasDismiss } = useBannerContext()\n\n return (\n <StyledText\n size=\"md\"\n weight=\"bold\"\n containerSize={size}\n hasDismiss={hasDismiss}\n noCapsize\n {...props}\n />\n )\n}\n\nBannerSlimText.displayName = 'BannerSlimText'\n","import * as React from 'react'\n\nimport { Banner } from '../Banner'\nimport { BannerContainer } from '../BannerContainer'\nimport { BannerSlimActions } from './BannerSlimActions'\nimport { BannerSlimButton } from './BannerSlimButton'\nimport { BannerSlimContainer } from './BannerSlimContainer'\nimport { BannerSlimContent } from './BannerSlimContent'\nimport { BannerSlimDismiss } from './BannerSlimDismiss'\nimport { BannerSlimImage } from './BannerSlimImage'\nimport { BannerSlimText } from './BannerSlimText'\n\nconst BannerSlimComponent = ({\n colorScheme,\n size,\n emphasis,\n onDismiss,\n ...rest\n}: React.ComponentProps<typeof Banner> &\n React.ComponentProps<typeof BannerContainer>) => (\n <Banner size={size} emphasis={emphasis}>\n <BannerSlimContainer\n colorScheme={colorScheme}\n onDismiss={onDismiss}\n {...rest}\n />\n </Banner>\n)\n\nexport const BannerSlim = Object.assign(BannerSlimComponent, {\n Content: BannerSlimContent,\n Text: BannerSlimText,\n Image: BannerSlimImage,\n Button: BannerSlimButton,\n Dismiss: BannerSlimDismiss,\n Actions: BannerSlimActions\n})\n\nBannerSlimComponent.displayName = 'BannerSlim'\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport {\n ButtonBack as BaseButtonBack,\n ButtonNext as BaseButtonNext\n} from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { CSS, styled } from '~/stitches'\n\nconst buttonStyles = {\n alignItems: 'center',\n bg: 'unset',\n border: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 'unset',\n size: '$5',\n top: '50%',\n transform: 'translateY(-50%)',\n transition: 'color 150ms ease-in-out',\n '&:hover': {\n color: '$primary900'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&:disabled': {\n color: '$grey200'\n }\n}\n\nconst StyledButtonBack = styled(BaseButtonBack, buttonStyles)\n\nconst StyledButtonNext = styled(BaseButtonNext, buttonStyles)\n\nexport const CarouselArrowPrevious = (props: { css: CSS }) => (\n <StyledButtonBack {...props}>\n <Icon is={ChevronLeft} />\n </StyledButtonBack>\n)\nexport const CarouselArrowNext = (props: { css: CSS }) => (\n <StyledButtonNext {...props}>\n <Icon is={ChevronRight} />\n </StyledButtonNext>\n)\n","import { DotGroup } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselPagination = styled(DotGroup, {\n justifyContent: 'center',\n '& button': {\n bg: '$grey600',\n border: 'none',\n borderRadius: '50%',\n cursor: 'pointer',\n mx: '$1',\n p: '$1',\n size: '$space$3',\n transition: 'all 100ms ease-in',\n '&[class*=\"selected\"]': {\n bg: '$primary800'\n },\n '&:hover, &:focus': {\n bg: '$primary900'\n }\n }\n})\n","import { Slide as BaseSlide } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { styled } from '~/stitches'\n\nconst StyledSlide = styled(BaseSlide, {})\n\nexport const CarouselSlide = ({\n children,\n ...remainingProps\n}: React.ComponentProps<typeof StyledSlide> & { index: number }) => (\n <StyledSlide {...remainingProps} tag=\"div\">\n {/* padding to create the gap between slides */}\n <Box css={{ px: '$3' }}>{children}</Box>\n </StyledSlide>\n)\n","import { Slider as BaseSlider } from 'pure-react-carousel'\n\nimport { styled } from '~/stitches'\n\nexport const CarouselSlider = styled(BaseSlider, {\n cursor: 'grab',\n ml: '50%',\n overflow: 'hidden',\n transform: 'translateX(-50%)',\n '& [class*=\"sliderTray_\"]': {\n p: 'unset',\n m: 'unset',\n transition: 'transform 500ms cubic-bezier(.645,.045,.355,1)'\n },\n '& [class*=\"slide_\"]': {\n float: 'left',\n pb: '0 !important'\n },\n '& [class*=\"slideInner\"]': {\n display: 'flex',\n justifyContent: 'center'\n },\n variants: {\n overflow: {\n true: {\n overflow: 'visible'\n }\n }\n }\n})\n","import { CarouselContext, CarouselProvider } from 'pure-react-carousel'\nimport * as React from 'react'\n\nimport { CSSWrapper } from '~/utilities'\n\nimport { CarouselArrowNext, CarouselArrowPrevious } from './CarouselArrows'\nimport { CarouselPagination } from './CarouselPagination'\nimport { CarouselSlide } from './CarouselSlide'\nimport { CarouselSlider } from './CarouselSlider'\n\ntype CarouselProps = {\n slideHeight: number\n slideWidth: number\n numSlides: number\n}\n\nexport const CarouselComponent = ({\n children,\n css,\n slideHeight,\n slideWidth,\n numSlides,\n ...props\n}: CarouselProps &\n Omit<\n React.ComponentProps<typeof CarouselProvider>,\n 'naturalSlideWidth' | 'naturalSlideHeight' | 'totalSlides'\n > &\n React.ComponentProps<typeof CSSWrapper>) => (\n <CSSWrapper css={css}>\n <CarouselProvider\n naturalSlideWidth={slideWidth}\n naturalSlideHeight={slideHeight}\n totalSlides={numSlides}\n {...props}\n >\n {children}\n </CarouselProvider>\n </CSSWrapper>\n)\n\n/**\n * Documentation about the hook usage\n * https://github.com/express-labs/pure-react-carousel#hooks-and-usecontext\n */\nexport const useCarousel = () => React.useContext(CarouselContext)\n\nexport const Carousel = Object.assign(CarouselComponent, {\n ArrowNext: CarouselArrowNext,\n ArrowPrevious: CarouselArrowPrevious,\n Pagination: CarouselPagination,\n Slide: CarouselSlide,\n Slider: CarouselSlider\n})\n\nCarouselComponent.displayName = 'Carousel'\n","import { Minus, Ok } from '@atom-learning/icons'\nimport * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Icon } from '../icon'\n\nconst CheckboxContainer = styled('div', {\n position: 'relative',\n zIndex: 1\n})\n\nconst CheckboxHitArea = styled('div', {\n position: 'absolute',\n inset: '-$3',\n opacity: 0.5\n})\n\nconst StyledIndicator = styled(RadixCheckbox.Indicator, {})\n\nconst StyledCheckbox = styled(RadixCheckbox.Root, {\n appearance: 'none',\n position: 'relative',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '3px',\n color: 'white',\n bg: 'white',\n cursor: 'pointer',\n size: '$1',\n p: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 50ms ease-out',\n flexShrink: 0,\n\n //hover circle\n '&:not([disabled]):before': {\n content: '\"\"',\n position: 'absolute',\n inset: '-$2',\n zIndex: -1,\n borderRadius: '50%',\n bg: '$primary300',\n opacity: 0,\n transform: 'scale(0)',\n transition: 'opacity 125ms ease-in-out, transform 125ms ease-in-out'\n },\n '&:not([disabled]):hover:before': {\n opacity: 1,\n transform: 'scale(1)'\n },\n\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[data-state=\"indeterminate\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '-1px'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\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: '1px'\n }\n }\n }\n})\n\nconst toIconSize = {\n md: 'sm',\n lg: 'sm'\n}\n\nexport const Checkbox: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledCheckbox>\n> = React.forwardRef(({ size = 'md', checked, ...rest }, ref) => {\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n\n return (\n <CheckboxContainer>\n <StyledCheckbox ref={ref} checked={checked} size={size} {...rest}>\n <CheckboxHitArea />\n <StyledIndicator asChild>\n <Icon\n is={checked === 'indeterminate' ? Minus : Ok}\n css={{\n strokeWidth: '3'\n }}\n size={iconSize}\n />\n </StyledIndicator>\n </StyledCheckbox>\n </CheckboxContainer>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupMountedContextValue = {\n mounted: CheckboxGroupItemValue[]\n handleItemMountedChange: (\n newItemMounted: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\nexport const CheckboxGroupMountedContext =\n React.createContext<CheckboxGroupMountedContextValue>({\n mounted: [],\n handleItemMountedChange: () => null\n })\n\nexport const CheckboxGroupMountedProvider = (props) => {\n const { handleItemMountedChange: handleItemMountedChangeFurtherUpContext } =\n React.useContext(CheckboxGroupMountedContext)\n\n const [mounted, setMounted] = React.useState<CheckboxGroupItemValue[]>([])\n const handleItemMountedChange = React.useCallback(\n (newItemMounted, itemValue) => {\n handleItemMountedChangeFurtherUpContext?.(newItemMounted, itemValue)\n setMounted((prevMounted) => {\n const newMountedSet = new Set(prevMounted)\n newItemMounted\n ? newMountedSet.add(itemValue)\n : newMountedSet.delete(itemValue)\n const newMounted = Array.from(newMountedSet)\n return newMounted\n })\n },\n [handleItemMountedChangeFurtherUpContext]\n )\n\n const value = React.useMemo<CheckboxGroupMountedContextValue>(\n () => ({ mounted, handleItemMountedChange }),\n [mounted, handleItemMountedChange]\n )\n\n return <CheckboxGroupMountedContext.Provider value={value} {...props} />\n}\n","import * as React from 'react'\n\nimport type { CheckboxGroupItemValue } from '../CheckboxGroup.types'\n\ntype CheckboxGroupCheckedContextValue = {\n checked: CheckboxGroupItemValue[]\n handleItemCheckedChange: (\n newItemChecked: boolean,\n itemValue: CheckboxGroupItemValue\n ) => void\n}\n\ntype CheckboxGroupCheckedContextProps = {\n checked?: CheckboxGroupCheckedContextValue['checked']\n defaultChecked?: CheckboxGroupCheckedContextValue['checked']\n onCheckedChange?: (\n checked: CheckboxGroupCheckedContextValue['checked']\n ) => void\n}\n\nexport const CheckboxGroupCheckedContext =\n React.createContext<CheckboxGroupCheckedContextValue>({\n checked: [],\n handleItemCheckedChange: () => null\n })\n\nconst generateNewCheckedFn = (\n currentChecked: CheckboxGroupCheckedContextValue['checked']\n) => {\n return (newItemChecked, itemValue) => {\n const newCheckedSet = new Set(currentChecked)\n newItemChecked\n ? newCheckedSet.add(itemValue)\n : newCheckedSet.delete(itemValue)\n const newChecked = Array.from(newCheckedSet)\n return newChecked\n }\n}\n\nexport const CheckboxGroupCheckedProvider = ({\n checked: controlledChecked,\n defaultChecked = [],\n onCheckedChange,\n ...rest\n}: React.PropsWithChildren<CheckboxGroupCheckedContextProps>) => {\n const [checked, setChecked] = React.useState(defaultChecked)\n\n const handleItemControlledCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n if (!controlledChecked) return () => null\n const newCheckedFn = generateNewCheckedFn(controlledChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n },\n [onCheckedChange, controlledChecked]\n )\n\n const handleItemCheckedChange = React.useCallback(\n (newItemChecked, itemValue) => {\n setChecked((prevChecked) => {\n const newCheckedFn = generateNewCheckedFn(prevChecked)\n const newChecked = newCheckedFn(newItemChecked, itemValue)\n onCheckedChange?.(newChecked)\n return newChecked\n })\n },\n [onCheckedChange]\n )\n\n const value = React.useMemo<CheckboxGroupCheckedContextValue>(() => {\n const isControlled = Array.isArray(controlledChecked)\n return {\n checked: isControlled\n ? (controlledChecked as CheckboxGroupCheckedContextValue['checked']) // We're literally JUST checking it above but TS still flags it, wrongly, so casting\n : checked,\n handleItemCheckedChange: isControlled\n ? handleItemControlledCheckedChange\n : handleItemCheckedChange\n }\n }, [\n checked,\n handleItemCheckedChange,\n handleItemControlledCheckedChange,\n controlledChecked\n ])\n\n return <CheckboxGroupCheckedContext.Provider value={value} {...rest} />\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupAllItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'checked' | 'defaultChecked'\n>\n\nexport const CheckboxGroupAllItem = ({\n onCheckedChange,\n title = 'all',\n ...rest\n}: CheckboxGroupAllItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { mounted: mountedItems } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n mountedItems.forEach((value) => {\n handleItemCheckedChangeContext(newChecked, value)\n })\n onCheckedChange?.(newChecked)\n }\n\n const isAllChecked = (() => {\n if (!checkedItems.length || !mountedItems.length) return false\n\n if (mountedItems.every((mountedItem) => checkedItems.includes(mountedItem)))\n return true\n\n if (mountedItems.some((mountedItem) => checkedItems.includes(mountedItem)))\n return 'indeterminate'\n\n return false\n })()\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={isAllChecked}\n title={title}\n {...rest}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport {\n CheckboxGroupCheckedContext,\n CheckboxGroupMountedContext\n} from './CheckboxGroup.context'\n\ntype CheckboxGroupItemProps = Omit<\n React.ComponentProps<typeof Checkbox>,\n 'onCheckedChange' | 'checked' | 'defaultChecked'\n> & {\n onCheckedChange?: (newChecked: boolean) => void\n}\n\nexport const CheckboxGroupItem = ({\n value,\n title,\n onCheckedChange,\n ...rest\n}: CheckboxGroupItemProps): JSX.Element => {\n const {\n checked: checkedItems,\n handleItemCheckedChange: handleItemCheckedChangeContext\n } = React.useContext(CheckboxGroupCheckedContext)\n const { handleItemMountedChange } = React.useContext(\n CheckboxGroupMountedContext\n )\n\n const handleItemCheckedChange = (newChecked) => {\n handleItemCheckedChangeContext(newChecked, value)\n onCheckedChange?.(newChecked)\n }\n\n React.useEffect(() => {\n handleItemMountedChange(true, value)\n return () => {\n handleItemMountedChange(false, value)\n }\n }, [handleItemMountedChange, value])\n\n return (\n <Checkbox\n onCheckedChange={handleItemCheckedChange}\n checked={checkedItems.includes(value)}\n title={title ?? String(value)}\n {...rest}\n />\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { CheckboxGroupMountedProvider } from './CheckboxGroup.context'\n\ntype CheckboxGroupSubProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n}\nconst StyledSlot = styled(Slot)\n\nexport const CheckboxGroupSub = ({\n asChild = false,\n ...rest\n}: CheckboxGroupSubProps): JSX.Element => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport {\n CheckboxGroupCheckedProvider,\n CheckboxGroupMountedProvider\n} from './CheckboxGroup.context'\nimport type { CheckboxGroupItemValue } from './CheckboxGroup.types'\nimport { CheckboxGroupAllItem } from './CheckboxGroupAllItem'\nimport { CheckboxGroupItem } from './CheckboxGroupItem'\nimport { CheckboxGroupSub } from './CheckboxGroupSub'\n\ntype CheckboxGroupRootProps = Omit<\n React.ComponentProps<typeof Box>,\n 'defaultChecked'\n> & {\n checked?: CheckboxGroupItemValue[]\n onCheckedChange?: (checked: CheckboxGroupItemValue[]) => void\n defaultChecked?: CheckboxGroupItemValue[]\n asChild?: boolean\n}\n\nconst StyledSlot = styled(Slot)\n\nconst CheckboxGroupRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n asChild = false,\n ...rest\n}: CheckboxGroupRootProps) => {\n const Component = asChild ? StyledSlot : Box\n\n return (\n <CheckboxGroupCheckedProvider\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n >\n <CheckboxGroupMountedProvider>\n <Component {...rest} />\n </CheckboxGroupMountedProvider>\n </CheckboxGroupCheckedProvider>\n )\n}\n\nexport const CheckboxGroup = Object.assign(CheckboxGroupRoot, {\n Item: CheckboxGroupItem,\n AllItem: CheckboxGroupAllItem,\n Sub: CheckboxGroupSub\n})\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\ntype TreeListItemProps = React.ComponentProps<typeof Flex>\n\nconst StyledTreeListItem = styled(Flex, {\n '&:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const TreeListItem = React.forwardRef(\n (\n props: TreeListItemProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <StyledTreeListItem\n as=\"li\"\n gap={2}\n align=\"center\"\n {...props}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"li\"`\n ref={ref}\n role=\"treeitem\"\n />\n )\n }\n)\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeCollapsibleContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const TreeCollapsibleContext =\n React.createContext<TreeCollapsibleContextValue>({})\nconst TreeCollapsibleProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <TreeCollapsibleContext.Provider value={{ triggerRef, setTriggerRef }}>\n {children}\n </TreeCollapsibleContext.Provider>\n )\n}\n\nconst StyledCollapsibleTreeItemRoot = styled(Root, {\n width: '100%'\n})\n\ntype TreeCollapsibleProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof StyledCollapsibleTreeItemRoot>\nexport const TreeCollapsible = React.forwardRef(\n (\n props: TreeCollapsibleProps,\n ref: React.ForwardedRef<HTMLLIElement>\n ): JSX.Element => {\n return (\n <TreeListItem ref={ref}>\n <TreeCollapsibleProvider>\n <StyledCollapsibleTreeItemRoot {...props} />\n </TreeCollapsibleProvider>\n </TreeListItem>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(Flex, {\n width: '100%',\n p: 0,\n m: 0,\n listStyle: 'none',\n '& &': {\n pl: '$space$4'\n }\n})\n\ntype TreeListProps = Omit<React.ComponentProps<typeof Flex>, 'direction'>\n\nexport const TreeList: React.ForwardRefExoticComponent<TreeListProps> =\n React.forwardRef((props, ref) => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"ul\"`\n <StyledList as=\"ul\" ref={ref} {...props} direction=\"column\" />\n ))\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeList } from './TreeList'\n\nconst StyledTreeCollapsibleContent = styled(Content, {\n '&[data-state=\"open\"]': {},\n '&[data-state=\"closed\"]': {\n display: 'none'\n }\n})\n\ntype TreeCollapsibleContentProps = React.ComponentProps<\n typeof StyledTreeCollapsibleContent\n> &\n React.ComponentProps<typeof TreeList>\n\nexport const TreeCollapsibleContent: React.ForwardRefExoticComponent<TreeCollapsibleContentProps> =\n React.forwardRef(({ children, ...rest }, ref): JSX.Element => {\n const { triggerRef } = React.useContext(TreeCollapsibleContext)\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledTreeCollapsibleContent\n onKeyDown={handleOnKeydown}\n {...rest}\n asChild\n >\n <TreeList ref={ref} role=\"group\">\n {children}\n </TreeList>\n </StyledTreeCollapsibleContent>\n )\n })\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledTreeIcon = styled(Icon, {\n flexShrink: 0,\n alignSelf: 'start',\n my: '$1'\n})\nexport const TreeIcon = (\n props: React.ComponentProps<typeof StyledTreeIcon>\n): JSX.Element => <StyledTreeIcon size=\"md\" {...props} />\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\ntype TStyledTreeTextProps = React.ComponentProps<typeof Text>\n\nconst StyledTreeText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n py: '$0',\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis'\n})\n\nexport const TreeText = (props: TStyledTreeTextProps): JSX.Element => {\n return <StyledTreeText size=\"md\" as=\"span\" {...props} noCapsize />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeIcon } from './TreeIcon'\nimport { TreeText } from './TreeText'\n\nconst StyledItemContent = styled(Flex, {\n width: '100%',\n position: 'relative',\n minHeight: '$3',\n pl: '$6'\n})\n\ntype TreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const TreeItemContent = React.forwardRef(\n (\n { children, ...rest }: TreeItemContentProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ): JSX.Element => {\n return (\n <StyledItemContent gap={2} align=\"center\" ref={ref} {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <TreeText>{child}</TreeText>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <TreeIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n }\n)\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsibleContext } from './TreeCollapsible'\nimport { TreeItemContent } from './TreeItemContent'\n\nconst StyledTreeCollapsibleTrigger = styled(TreeItemContent, {\n cursor: 'pointer'\n})\n\nconst StyledActionIcon = styled(ActionIcon, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none',\n '& svg': {\n transition: 'transform 300ms'\n },\n '&[data-state=\"closed\"] > svg': {\n transform: 'rotate(-90deg)'\n },\n '&[data-state=\"open\"] > svg': {\n transform: 'rotate(0deg)'\n }\n})\n\ntype TNavigationMenuCollapsibleTriggerProps = React.ComponentProps<\n typeof TreeItemContent\n> & {\n label: string\n}\n\nexport const TreeCollapsibleTrigger = ({\n children,\n label,\n ...rest\n}: TNavigationMenuCollapsibleTriggerProps) => {\n const { setTriggerRef, triggerRef } = React.useContext(TreeCollapsibleContext)\n\n return (\n <StyledTreeCollapsibleTrigger\n {...rest}\n onClick={(event) => {\n rest.onClick?.(event)\n triggerRef?.current?.click()\n }}\n >\n <Trigger asChild>\n <StyledActionIcon\n size=\"sm\"\n ref={setTriggerRef}\n label={label}\n theme=\"neutral\"\n hasTooltip={false}\n onClick={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon is={ChevronDown} />\n </StyledActionIcon>\n </Trigger>\n {children}\n </StyledTreeCollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { TreeItemContent } from './TreeItemContent'\nimport { TreeListItem } from './TreeListItem'\n\ntype TreeItemProps = React.ComponentProps<typeof TreeItemContent>\n\nexport const TreeItem = ({ children, ...rest }: TreeItemProps): JSX.Element => {\n return (\n <TreeListItem>\n <TreeItemContent {...rest}>{children}</TreeItemContent>\n </TreeListItem>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TreeCollapsible } from './TreeCollapsible'\nimport { TreeCollapsibleContent } from './TreeCollapsibleContent'\nimport { TreeCollapsibleTrigger } from './TreeCollapsibleTrigger'\nimport { TreeIcon } from './TreeIcon'\nimport { TreeItem } from './TreeItem'\nimport { TreeList } from './TreeList'\nimport { TreeText } from './TreeText'\n\nconst StyledRoot = styled(TreeList, {})\n\ntype TreeProps = React.ComponentProps<typeof StyledRoot>\n\nexport const TreeRoot: React.ForwardRefExoticComponent<TreeProps> =\n React.forwardRef(({ children, ...rest }, ref) => {\n return (\n <StyledRoot {...rest} ref={ref} role=\"tree\">\n {children}\n </StyledRoot>\n )\n })\n\nexport const Tree = Object.assign(TreeRoot, {\n Collapsible: TreeCollapsible,\n CollapsibleContent: TreeCollapsibleContent,\n CollapsibleTrigger: TreeCollapsibleTrigger,\n Item: TreeItem,\n Icon: TreeIcon,\n Text: TreeText\n})\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleProps = Omit<\n React.ComponentProps<typeof Tree.Collapsible> &\n React.ComponentProps<typeof CheckboxGroup.Sub>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsible = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.Collapsible {...rest}>{children}</Tree.Collapsible>\n </CheckboxGroup.Sub>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\n\ntype CheckboxTreeCollapsibleContentProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleContent>,\n 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleContent = ({\n children,\n ...rest\n}: CheckboxTreeCollapsibleContentProps): JSX.Element => {\n return (\n <CheckboxGroup.Sub asChild>\n <Tree.CollapsibleContent {...rest} forceMount>\n {children}\n </Tree.CollapsibleContent>\n </CheckboxGroup.Sub>\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Tree } from '~/components/tree'\nimport { styled } from '~/stitches'\n\nconst StyledItemContent = styled(Flex, {\n maxWidth: '100%'\n})\n\ntype CheckboxTreeItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const CheckboxTreeItemContent = ({\n children,\n ...rest\n}: CheckboxTreeItemContentProps): JSX.Element => {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Stitches polymorphic components issue due to `as=\"label\"`\n <StyledItemContent gap={2} align=\"center\" as=\"label\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Tree.Text>{child}</Tree.Text>\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <Tree.Icon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledItemContent>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxGroupCollapsibleTriggerProps = Omit<\n React.ComponentProps<typeof Tree.CollapsibleTrigger> &\n React.ComponentProps<typeof CheckboxGroup.AllItem>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeCollapsibleTrigger = ({\n onCheckedChange,\n title,\n label,\n children,\n disabled,\n ...rest\n}: CheckboxGroupCollapsibleTriggerProps): JSX.Element => {\n const treeCollapsibleTriggerProps = { label }\n const checkboxAllItemProps = { onCheckedChange, title, disabled }\n return (\n <Tree.CollapsibleTrigger {...treeCollapsibleTriggerProps} {...rest}>\n <CheckboxTreeItemContent\n onClick={\n // Don't propagate click and don't open/close the collapsible when the label/checkbox are clicked\n (e) => e.stopPropagation()\n }\n >\n <CheckboxGroup.AllItem {...checkboxAllItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.CollapsibleTrigger>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeItemContent } from './CheckboxTreeItemContent'\n\ntype CheckboxTreeItemProps = Omit<\n React.ComponentProps<typeof Tree.Item> &\n React.ComponentProps<typeof CheckboxGroup.Item>,\n 'required' | 'asChild'\n>\n\nexport const CheckboxTreeItem = ({\n value,\n title,\n onCheckedChange,\n children,\n disabled,\n ...rest\n}: CheckboxTreeItemProps): JSX.Element => {\n const checkboxItemProps = { value, title, onCheckedChange, disabled }\n return (\n <Tree.Item {...rest}>\n <CheckboxTreeItemContent>\n <CheckboxGroup.Item {...checkboxItemProps} />\n {children}\n </CheckboxTreeItemContent>\n </Tree.Item>\n )\n}\n","import React from 'react'\n\nimport { CheckboxGroup } from '../checkbox-group'\nimport { Tree } from '../tree'\nimport { CheckboxTreeCollapsible } from './CheckboxTreeCollapsible'\nimport { CheckboxTreeCollapsibleContent } from './CheckboxTreeCollapsibleContent'\nimport { CheckboxTreeCollapsibleTrigger } from './CheckboxTreeCollapsibleTrigger'\nimport { CheckboxTreeItem } from './CheckboxTreeItem'\n\ntype CheckboxTreeRootProps = Omit<\n React.ComponentProps<typeof CheckboxGroup> &\n React.ComponentProps<typeof Tree>,\n 'asChild'\n>\n\nexport const CheckboxTreeRoot = ({\n checked,\n defaultChecked,\n onCheckedChange,\n ...rest\n}: CheckboxTreeRootProps) => {\n const checkboxGroupProps = { checked, defaultChecked, onCheckedChange }\n return (\n <CheckboxGroup {...checkboxGroupProps} asChild>\n <Tree {...rest} />\n </CheckboxGroup>\n )\n}\n\nexport const CheckboxTree = Object.assign(CheckboxTreeRoot, {\n Collapsible: CheckboxTreeCollapsible,\n CollapsibleContent: CheckboxTreeCollapsibleContent,\n CollapsibleTrigger: CheckboxTreeCollapsibleTrigger,\n Item: CheckboxTreeItem\n})\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { InlineMessageTheme } from './InlineMessage.types'\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 { INLINE_MESSAGE_ICONS } from './InlineMessage.config'\nimport { InlineMessageTheme } from './InlineMessage.types'\n\nconst InlineMessageContainer = styled(Flex, {\n variants: {\n theme: {\n success: { color: '$success' },\n warning: { color: '$warningText', '& svg': { color: '$warningDark' } },\n info: { color: '$info' },\n neutral: { color: '$grey800' },\n error: { color: '$danger' }\n }\n }\n})\n\ntype TInlineMessageProps = React.ComponentProps<\n typeof InlineMessageContainer\n> & {\n showIcon?: boolean\n size?: 'xs' | 'sm' | 'md'\n}\n\nexport const InlineMessage = ({\n css,\n showIcon = true,\n theme = 'error',\n size = 'sm',\n children,\n ...rest\n}: TInlineMessageProps) => (\n <InlineMessageContainer theme={theme} css={css} {...rest}>\n {showIcon && (\n <Icon\n css={{ mr: '$2' }}\n size=\"sm\"\n is={INLINE_MESSAGE_ICONS[theme as InlineMessageTheme]}\n />\n )}\n <Text as=\"span\" size={size} css={{ transform: 'translateY($space$0)' }}>\n {children}\n </Text>\n </InlineMessageContainer>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport type { Override } from '~/utilities/types'\n\nimport { getTextVariant } from '../text'\n\nconst StyledLabel = styled('label', {\n color: '$grey900',\n fontFamily: '$body',\n m: 0,\n variants: {\n size: {\n sm: getTextVariant({ size: 'sm' }),\n md: getTextVariant({ size: 'md' })\n },\n type: {\n block: {\n display: 'block',\n fontWeight: 600\n },\n inline: {\n display: 'flex',\n fontWeight: 400,\n maxWidth: 'max-content'\n }\n },\n align: { start: {}, center: {} },\n direction: { reverse: {}, row: {} },\n appearance: { standard: {}, modern: {} }\n },\n compoundVariants: [\n {\n type: 'inline',\n align: 'start',\n css: { alignItems: 'flex-start' }\n },\n {\n type: 'inline',\n align: 'center',\n css: { alignItems: 'center' }\n },\n {\n type: 'inline',\n direction: 'reverse',\n css: { flexDirection: 'row-reverse' }\n },\n {\n type: 'inline',\n direction: 'row',\n css: { flexDirection: 'row' }\n },\n {\n type: 'block',\n appearance: 'modern',\n css: { fontWeight: 400 }\n }\n ]\n})\n\nconst StyledAsterisk = styled('span', {\n color: '$danger',\n ml: '$1',\n fontWeight: 400\n})\n\nexport type LabelProps = Override<\n React.ComponentPropsWithoutRef<typeof StyledLabel>,\n {\n as?: 'label' | 'legend'\n required?: boolean\n }\n>\n\nexport const Label = ({\n align = 'start',\n as = 'label',\n direction = 'row',\n size = 'md',\n type = 'block',\n children,\n required,\n ...rest\n}: LabelProps) => (\n <StyledLabel\n as={as}\n size={size}\n type={type}\n align={align}\n direction={direction}\n {...rest}\n >\n {children}\n {required && <StyledAsterisk aria-hidden>*</StyledAsterisk>}\n </StyledLabel>\n)\n\nLabel.displayName = 'Label'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\nimport { Override } from '~/utilities'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { textVariants } from '../text/Text'\n\nexport const StyledLink = styled('a', {\n bg: 'unset',\n border: 'unset',\n p: 'unset',\n color: '$primary800',\n cursor: 'pointer',\n fontFamily: '$body',\n textDecoration: 'none',\n '&:focus, &:hover': {\n color: '$primary900',\n textDecoration: 'underline'\n },\n '&:active': {\n color: '$primary1000'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n pointerEvents: 'none'\n },\n 'p > &, h1 > &, h2 > &, h3 > &, h4 > &, li > &, em > &': {\n fontSize: '100%',\n lineHeight: 1,\n '&::before, &::after': {\n content: 'none'\n }\n },\n variants: textVariants,\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype LinkProps = Override<\n React.ComponentProps<typeof StyledLink>,\n {\n as?: React.ComponentType | React.ElementType\n } & NavigatorActions & { disabled?: boolean }\n>\n\nexport const Link: React.ForwardRefExoticComponent<LinkProps> =\n React.forwardRef(({ as, disabled, href, ...rest }, ref) => (\n <StyledLink\n as={as || (!href ? 'button' : undefined)}\n noCapsize={!href ? true : undefined}\n href={href}\n {...(disabled && { disabled: true })}\n {...rest}\n {...getExternalAnchorProps(href)}\n ref={ref}\n />\n ))\n\nLink.displayName = 'Link'\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\n\ntype DescriptionProps = {\n css?: CSS\n}\n\nexport const Description = ({\n children,\n css\n}: React.PropsWithChildren<DescriptionProps>) => (\n <Text size=\"sm\" css={{ color: '$grey700', maxWidth: '80ch', ...css }}>\n {children}\n </Text>\n)\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { ValidationOptions } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { Link } from '~/components/link'\nimport type { CSS } from '~/stitches'\n\nimport { type LabelProps } from '../label/Label'\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 appearance?: LabelProps['appearance']\n}\n\nexport type FieldElementWrapperProps = Omit<FieldWrapperProps, 'fieldId'> & {\n name: string\n validation?: ValidationOptions\n}\n\nexport const FieldWrapper = ({\n css,\n children,\n error,\n fieldId,\n label,\n prompt,\n description,\n required,\n hideLabel,\n appearance\n}: React.PropsWithChildren<FieldWrapperProps>) => {\n const LabelContainer = hideLabel ? VisuallyHidden.Root : Flex\n\n return (\n <Box css={css}>\n <LabelContainer\n css={{\n justifyContent: 'space-between',\n alignItems: 'center',\n mb: '$3'\n }}\n >\n <Label htmlFor={fieldId} required={required} appearance={appearance}>\n {label}\n </Label>\n {prompt && (\n <Link href={prompt?.link} onClick={prompt?.onClick} size=\"sm\">\n {prompt.label}\n </Link>\n )}\n </LabelContainer>\n {description && (\n <Description css={{ mb: '$3' }}>{description}</Description>\n )}\n {children}\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Box>\n )\n}\n\nFieldWrapper.displayName = 'FieldWrapper'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { Override } from '~/utilities/types'\n\nconst StyledRadioButton = styled(RadioGroup.Item, {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey800',\n borderRadius: '$round',\n color: 'white',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n p: 0,\n size: '$1',\n variants: {\n size: {\n md: {\n size: '$1'\n },\n lg: {\n size: '$2',\n mt: '-$1'\n }\n }\n },\n transition: 'all 50ms ease-out',\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n borderColor: '$grey800',\n color: '$grey800',\n cursor: 'not-allowed'\n }\n})\n\nconst StyledIndicator = styled(RadioGroup.Indicator, {\n size: '6px',\n borderRadius: '$round',\n backgroundColor: 'currentColor',\n position: 'absolute',\n variants: {\n size: {\n md: {\n size: '6px'\n },\n lg: {\n size: '12px'\n }\n }\n }\n})\n\ntype RadioButtonProps = Override<\n React.ComponentProps<typeof StyledRadioButton>,\n {\n as?: never\n } & {\n 'aria-label'?: string\n }\n>\n\nexport const RadioButton = ({ size, ...props }: RadioButtonProps) => {\n return (\n <StyledRadioButton {...props} size={size}>\n <StyledIndicator size={size} />\n </StyledRadioButton>\n )\n}\n\nRadioButton.displayName = 'RadioButton'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\n\nimport { styled } from '~/stitches'\n\nexport const RadioButtonGroup = styled(RadioGroup.Root, {\n display: 'flex',\n flexWrap: 'wrap',\n variants: {\n direction: {\n row: {\n flexDirection: 'row',\n '& > *:not(:last-child)': { mr: '$5' }\n },\n column: { flexDirection: 'column' }\n }\n }\n})\n\nRadioButtonGroup.displayName = 'RadioButtonGroup'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Checkbox } from '~/components/checkbox'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButton } from '~/components/radio-button'\nimport type { CSS } from '~/stitches'\n\nimport { Description } from './FieldDescription'\n\ntype InlineFieldWrapperProps = {\n css?: CSS\n error?: string\n label: string\n required?: boolean\n align?: 'start' | 'center'\n direction?: 'row' | 'reverse'\n description?: string\n}\n\nexport const InlineFieldWrapper = ({\n align = 'start',\n children,\n css,\n description,\n direction = 'row',\n error,\n label,\n required\n}: React.PropsWithChildren<InlineFieldWrapperProps>) => (\n <Box css={css}>\n <Label\n align={align}\n direction={direction}\n required={required}\n type=\"inline\"\n >\n {React.Children.map(children, (child: any) => (\n <Box\n css={{\n ...(direction === 'reverse' && { ml: '$3' }),\n ...(direction === 'row' && { 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' && {\n mr: 'calc($space$3 + $sizes$1)'\n }),\n ...(direction === 'row' && {\n ml: 'calc($space$3 + $sizes$1)'\n })\n }}\n >\n {description}\n </Description>\n )}\n </Box>\n)\n\nInlineFieldWrapper.displayName = 'InlineFieldWrapper'\n","import * as React from 'react'\n\nimport { InputField } from '../input-field'\n\nexport type FormCustomContextType =\n | {\n appearance?: React.ComponentProps<typeof InputField>['appearance']\n }\n | undefined\n\nexport const FormCustomContext = React.createContext<FormCustomContextType>({\n appearance: 'standard'\n})\n\nexport const useFormCustomContext = () => React.useContext(FormCustomContext)\n","import * as React from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Mode,\n SubmitErrorHandler,\n SubmitHandler,\n UseFormMethods\n} from 'react-hook-form'\nimport { FormProvider, useForm } from 'react-hook-form'\n\nimport { styled } from '~/stitches'\n\nimport {\n FormCustomContext,\n type FormCustomContextType\n} from './useFormCustomContext'\n\nconst StyledForm = styled('form', {})\n\ntype StyledFormProps = Omit<\n React.ComponentPropsWithoutRef<typeof StyledForm>,\n 'onSubmit' | 'onError'\n>\n\ninterface FormProps<TFormData extends FieldValues> extends StyledFormProps {\n defaultValues?: DefaultValues<TFormData>\n validationMode?: Mode\n onSubmit: SubmitHandler<TFormData>\n onError?: SubmitErrorHandler<TFormData>\n children:\n | React.ReactNode\n | ((methods: UseFormMethods<TFormData>) => React.ReactNode)\n}\n\nexport const Form = <TFormData extends FieldValues>(\n props: FormProps<TFormData> & FormCustomContextType\n) => {\n const {\n children,\n defaultValues,\n validationMode = 'onBlur',\n onSubmit,\n onError,\n appearance,\n ...rest\n } = props\n\n const methods = useForm<TFormData>({\n defaultValues,\n mode: validationMode\n })\n\n return (\n <FormProvider {...methods}>\n <FormCustomContext.Provider value={{ appearance }}>\n <StyledForm\n aria-label=\"form\"\n onSubmit={methods.handleSubmit(onSubmit, onError)}\n {...rest}\n >\n {typeof children === 'function' ? children(methods) : children}\n </StyledForm>\n </FormCustomContext.Provider>\n </FormProvider>\n )\n}\n\nForm.displayName = 'Form'\n","import delve from 'dlv'\nimport { useFormContext } from 'react-hook-form'\n\nexport const useFieldError = (fieldName: string) => {\n const { errors } = useFormContext()\n\n // in case of migration to a newer version of react-hook-form the path needs to updated to account for dynamic fields naming convention\n const fieldPath = fieldName.split(/[,[\\].]+?/).filter(Boolean)\n\n const getErrors = () => delve(errors, fieldPath)\n\n return {\n error: getErrors()?.message\n }\n}\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { Checkbox } from '~/components/checkbox'\nimport {\n FieldElementWrapperProps,\n InlineFieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\nenum CheckboxValue {\n ON = 'on',\n OFF = 'off'\n}\n\nexport const CheckboxField = ({\n css,\n label,\n name,\n validation,\n description,\n defaultChecked = false,\n checked,\n onCheckedChange,\n ...remainingProps\n}: React.ComponentProps<typeof Checkbox> & FieldElementWrapperProps) => {\n const { control } = useFormContext()\n const { error } = useFieldError(name)\n const {\n field: { ref, onChange, value: innerChecked, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue: defaultChecked\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner checked to match what is passed in.\n if (typeof checked !== 'undefined') onChange(checked)\n }, [checked])\n\n return (\n <InlineFieldWrapper\n css={css}\n description={description}\n error={error}\n label={label}\n required={Boolean(validation?.required)}\n >\n <Checkbox\n ref={ref}\n name={innerName}\n {...remainingProps}\n onCheckedChange={(newChecked) => {\n onChange(newChecked)\n onCheckedChange?.(newChecked)\n }}\n value={innerChecked ? CheckboxValue.ON : CheckboxValue.OFF}\n checked={innerChecked}\n {...(error && { state: 'error' })}\n />\n </InlineFieldWrapper>\n )\n}\n\nCheckboxField.displayName = 'CheckboxField'\n","import * as React from 'react'\n\nimport { Box } from '~/components/box'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { getTextVariant } from '~/components/text'\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nconst overflowElipsis = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}\nexport const StyledChipContent = styled('span', {\n display: 'inline-flex',\n alignItems: 'center',\n px: '$1',\n flexGrow: 1,\n ...overflowElipsis,\n '& > *:not(:last-child)': {\n mr: '$1'\n }\n})\n\nconst toIconSize = { sm: 'sm', md: 'sm', lg: 'md' }\n\nexport const ChipIcon = (props: React.ComponentProps<typeof Icon>) => {\n const rootContext = React.useContext(ChipRootContext)\n const { size } = rootContext\n const iconSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toIconSize[s]),\n [size]\n )\n return <Icon {...props} size={iconSize} />\n}\n\nconst ChipContent = ({ children, ...rest }) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n return (\n <StyledChipContent {...rest}>\n {\n childrenArray.map((child, index) => {\n if (!isSingleChild && typeof child === 'string')\n return (\n <Box as=\"span\" css={overflowElipsis} key={child}>\n {child}\n </Box>\n )\n if (React.isValidElement(child) && child.type === Icon) {\n return <ChipIcon key={`icon-${index}`} {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledChipContent>\n )\n}\n\nexport const StyledRoot = styled(Flex, {\n px: '$2',\n border: '1px solid',\n borderRadius: '$1',\n alignItems: 'center',\n fontFamily: '$body',\n maxWidth: '100%',\n borderColor: '$primary800',\n color: '$primary900',\n bg: '$primary100',\n '&[disabled]': {\n opacity: '0.3',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n sm: {\n height: '$2',\n ...getTextVariant({ size: 'sm' })\n },\n md: {\n height: '$3',\n ...getTextVariant({ size: 'sm' })\n },\n lg: {\n height: '$4',\n ...getTextVariant({ size: 'md' })\n }\n }\n }\n})\n\nexport type TChipRootContext = React.ComponentProps<typeof StyledRoot>\nexport type TChipRootProviderProps = TChipRootContext\n\nexport const ChipRootContext = React.createContext<TChipRootContext>({})\n\nexport const ChipRootProvider = ({\n size,\n children\n}: TChipRootProviderProps) => {\n const value = React.useMemo<TChipRootContext>(() => ({ size }), [size])\n return (\n <ChipRootContext.Provider value={value}>\n {children}\n </ChipRootContext.Provider>\n )\n}\n\nexport type TChipRootProps = TChipRootProviderProps\n\nconst ChipRoot: React.ForwardRefExoticComponent<TChipRootProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => {\n return (\n <ChipRootProvider size={size}>\n <StyledRoot ref={ref} size={size} {...rest} />\n </ChipRootProvider>\n )\n })\n\nexport const Chip = Object.assign(ChipRoot, {\n Content: ChipContent,\n Icon: ChipIcon\n})\n\nChipRoot.displayName = 'Chip'\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\n\ntype TChipGroupProps = {\n gap: 1 | 2 | 3\n}\n\nexport const ChipGroup: React.ForwardRefExoticComponent<\n TChipGroupProps & React.ComponentProps<typeof Flex> & { as?: any }\n> = React.forwardRef(({ gap = 2, ...rest }, ref) => (\n <Flex direction=\"row\" wrap=\"wrap\" gap={gap} {...rest} ref={ref} />\n))\n","import * as React from 'react'\n\nexport interface IDismissibleGroupContext {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\nexport const DismissibleGroupContext =\n React.createContext<IDismissibleGroupContext>({\n onDismiss: () => null\n })\n\nexport interface IDismissibleGroupProps {\n disabled?: boolean\n onDismiss: (value: React.ReactText) => void\n}\n\nexport const DismissibleGroupProvider = ({\n children,\n disabled,\n onDismiss\n}: React.PropsWithChildren<IDismissibleGroupProps>) => {\n const value = React.useMemo<IDismissibleGroupContext>(\n () => ({ disabled, onDismiss }),\n [disabled, onDismiss]\n )\n return (\n <DismissibleGroupContext.Provider value={value}>\n {children}\n </DismissibleGroupContext.Provider>\n )\n}\n\nexport interface IDismissibleGroupRootProps extends IDismissibleGroupProps {\n as?: React.ElementType\n}\n\nexport const DismissibleGroupRoot = ({\n as: Component = 'div',\n disabled,\n onDismiss,\n ...rest\n}: React.PropsWithChildren<IDismissibleGroupRootProps>) => {\n return (\n <DismissibleGroupProvider disabled={disabled} onDismiss={onDismiss}>\n <Component {...rest} />\n </DismissibleGroupProvider>\n )\n}\n\nDismissibleGroupRoot.displayName = 'DismissibleGroup'\n","import * as React from 'react'\n\nimport { Dismissible } from '~/components/dismissible'\n\nimport { DismissibleGroupContext } from './DismissibleGroupRoot'\n\nexport type TDismissibleGroupItemProps = React.ComponentProps<\n typeof Dismissible\n> & {\n value: React.ReactText\n disabled?: boolean\n}\n\nexport const DismissibleGroupItem = ({\n children,\n value,\n disabled: itemDisabled = false,\n ...rest\n}: React.PropsWithChildren<TDismissibleGroupItemProps>) => {\n const groupContext = React.useContext(DismissibleGroupContext)\n if (groupContext === undefined) {\n throw new Error(\n 'DismissibleGroup.Item can only be used within a DismissibleGroup'\n )\n }\n const { onDismiss, disabled: groupDisabled } = groupContext\n return (\n <Dismissible\n disabled={groupDisabled || itemDisabled}\n {...rest}\n onDismiss={() => onDismiss(value)}\n >\n {children}\n </Dismissible>\n )\n}\n","import { DismissibleTrigger } from '~/components/dismissible/DismissibleTrigger'\n\nimport { DismissibleGroupItem } from './DismissibleGroupItem'\nimport { DismissibleGroupRoot } from './DismissibleGroupRoot'\n\nexport const DismissibleGroup = Object.assign(DismissibleGroupRoot, {\n Item: DismissibleGroupItem,\n Trigger: DismissibleTrigger\n})\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledChipDismissibleGroupItem = styled(Chip, { px: '$1' })\n\nexport type TChipDismissibleGroupItem = React.ComponentProps<\n typeof DismissibleGroup.Item\n> &\n React.ComponentProps<typeof StyledChipDismissibleGroupItem> & {\n dismissActionLabel: string\n }\n\nexport const ChipDismissibleGroupItem = ({\n size = 'md',\n children,\n dismissActionLabel = 'Dismiss',\n ...rest\n}: TChipDismissibleGroupItem) => {\n return (\n <DismissibleGroup.Item asChild {...rest}>\n <StyledChipDismissibleGroupItem size={size}>\n <Chip.Content>{children}</Chip.Content>\n <DismissibleGroup.Trigger asChild>\n <ActionIcon\n label={dismissActionLabel}\n css={{ color: '$grey600' }}\n size={size === 'sm' ? 'xs' : 'sm'}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DismissibleGroup.Trigger>\n </StyledChipDismissibleGroupItem>\n </DismissibleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { DismissibleGroup } from '~/components/dismissible-group'\n\ntype TChipDismissibleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof DismissibleGroup>\n\nexport const ChipDismissibleGroupRoot: React.ForwardRefExoticComponent<TChipDismissibleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return <ChipGroup as={DismissibleGroup} ref={ref} {...props} />\n })\n","import { ChipDismissibleGroupItem } from './ChipDismissibleGroupItem'\nimport { ChipDismissibleGroupRoot } from './ChipDismissibleGroupRoot'\n\ntype TChipDismissibleGroup = typeof ChipDismissibleGroupRoot & {\n Item: typeof ChipDismissibleGroupItem\n}\n\nexport const ChipDismissibleGroup =\n ChipDismissibleGroupRoot as TChipDismissibleGroup\nChipDismissibleGroup.Item = ChipDismissibleGroupItem\nChipDismissibleGroup.displayName = 'ChipDismissibleGroup'\n","import { Ok } from '@atom-learning/icons'\nimport * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { Chip } from '~/components/chip'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledChipToggleIcon = styled(Icon, {\n display: 'none'\n})\n\nconst StyledChipToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Chip, {\n '&:not([disabled])': {\n cursor: 'pointer',\n '&:hover': {\n bg: '$grey200',\n color: '$grey1000',\n borderColor: 'currentColor'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n },\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: 'white',\n color: '$primary1000'\n }\n }\n },\n '&[data-state=\"off\"]': {\n color: '$grey800',\n bg: 'white',\n borderColor: '$grey600'\n },\n '&[data-state=\"on\"]': {\n '& svg': {\n display: 'block'\n }\n }\n})\n\ntype TChipToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledChipToggleGroupItem>\n\nexport const ChipToggleGroupItem = ({\n size = 'md',\n children,\n ...rest\n}: TChipToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledChipToggleGroupItem as=\"button\">\n <StyledChipToggleIcon is={Ok} size={size === 'lg' ? 'md' : 'sm'} />\n <Chip.Content>{children}</Chip.Content>\n </StyledChipToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\ntype RootType = {\n disableDeselect?: boolean\n}\n\ntype ToggleGroupRootProps = React.ComponentProps<typeof ToggleGroup.Root> &\n RootType\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<ToggleGroupRootProps> =\n React.forwardRef(\n (\n { disableDeselect = false, onValueChange, defaultValue, ...rest },\n ref\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<ToggleGroupRootProps['value']>(defaultValue)\n const handleValueChange: ToggleGroupRootProps['onValueChange'] = (\n newValue\n ) => {\n if (disableDeselect && (newValue === '' || newValue?.length === 0))\n return\n setInternalValue(newValue)\n onValueChange?.(newValue)\n }\n\n return (\n // eslint-disable-next-line\n // @ts-ignore Radix types complain on properties depending on whether `type=\"single\"` or `\"multiple\"`. Works correctly so muting.\n <ToggleGroup.Root\n ref={ref}\n onValueChange={handleValueChange}\n value={internalValue}\n {...rest}\n />\n )\n }\n )\n","import { ToggleGroupRoot } from './ToggleGroupRoot'\n\nexport const ToggleGroup = {\n Root: ToggleGroupRoot\n}\n","import * as React from 'react'\n\nimport { ChipGroup } from '~/components/chip'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TChipToggleGroupRootProps = React.ComponentProps<typeof ChipGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nexport const ChipToggleGroupRoot: React.ForwardRefExoticComponent<TChipToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n return (\n <ChipGroup\n ref={ref}\n as={ToggleGroup.Root}\n orientation=\"horizontal\"\n {...props}\n />\n )\n })\n","import { ChipToggleGroupItem } from './ChipToggleGroupItem'\nimport { ChipToggleGroupRoot } from './ChipToggleGroupRoot'\n\ntype TChipToggleGroup = typeof ChipToggleGroupRoot & {\n Item: typeof ChipToggleGroupItem\n}\n\nexport const ChipToggleGroup = ChipToggleGroupRoot as TChipToggleGroup\nChipToggleGroup.Item = ChipToggleGroupItem\nChipToggleGroup.displayName = 'ChipToggleGroupItem'\n","import { ComboboxInput as BaseComboboxInput } from '@reach/combobox'\nimport * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nexport const StyledComboboxInput = styled(BaseComboboxInput, {\n boxShadow: 'none', // prevent default iOS default styling\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundRepeat: 'no-repeat, repeat',\n backgroundSize: '20px auto, 100%',\n border: '1px solid $grey700',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n cursor: 'text',\n display: 'block',\n fontFamily: '$body',\n height: '$4',\n pl: '$3',\n pr: '$6',\n transition: 'all 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n },\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n variants: {\n size: {\n sm: {\n height: '$3',\n fontSize: '$sm',\n lineHeight: 1.7\n },\n md: {\n height: '$4',\n fontSize: '$md',\n lineHeight: 2\n },\n lg: {\n height: '$5',\n fontSize: '$md',\n lineHeight: 2\n }\n },\n state: {\n error: {\n border: '1px solid $danger'\n }\n }\n }\n})\n\nexport type ComboboxInputProps = React.ComponentProps<\n typeof StyledComboboxInput\n>\n\nexport const ComboboxInput: React.ForwardRefExoticComponent<ComboboxInputProps> =\n React.forwardRef(({ size = 'md', ...rest }, ref) => (\n <StyledComboboxInput size={size} {...rest} ref={ref} />\n ))\n","import { ComboboxList as BaseComboboxList } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxList = styled(BaseComboboxList, {\n listStyle: 'none',\n m: 0,\n p: 0,\n userSelect: 'none'\n})\n","import { ComboboxOption as BaseComboboxOption } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxOption = styled(BaseComboboxOption, {\n color: '$grey900',\n cursor: 'pointer',\n m: 0,\n p: '$2',\n '&:hover, &[aria-selected=\"true\"]': {\n bg: '$grey100',\n borderRadius: '$0'\n },\n '&[data-user-value]': {\n color: '$primary800'\n }\n})\n","import { ComboboxPopover as BaseComboboxPopover } from '@reach/combobox'\n\nimport { styled } from '~/stitches'\n\nexport const ComboboxPopover = styled(BaseComboboxPopover, {\n bg: 'white',\n border: '1px solid $grey200',\n borderRadius: '$1',\n boxShadow: '$1',\n boxSizing: 'border-box',\n fontFamily: '$body',\n fontSize: '$md',\n outline: 'none',\n p: '$1',\n transform: 'translateY($space$2)'\n})\n","import { Combobox as BaseCombobox, ComboboxOptionText } from '@reach/combobox'\n\nimport { globalCss, styled } from '~/stitches'\n\nimport { ComboboxInput } from './ComboboxInput'\nimport { ComboboxList } from './ComboboxList'\nimport { ComboboxOption } from './ComboboxOption'\nimport { ComboboxPopover } from './ComboboxPopover'\n\nglobalCss({ ':root': { '--reach-combobox': 1 } })()\n\nexport const Combobox = Object.assign(styled(BaseCombobox, {}), {\n displayName: 'Combobox',\n Option: ComboboxOption,\n Input: ComboboxInput,\n Popover: ComboboxPopover,\n List: ComboboxList,\n OptionText: ComboboxOptionText\n})\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { overrideStitchesVariantValue } from '~/utilities/override-stitches-variant-value/overrideStitchesVariantValue'\n\nimport { Flex } from '../flex'\nimport { Text } from '../text'\n\nexport const InputBackground = styled(Flex, {\n color: '$grey1000',\n transition: 'background 100ms ease-out, borderColor 100ms ease-out',\n width: '100%',\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n borderRadius: '$1',\n '&:focus-within': {\n borderColor: '$blue800'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n borderRadius: '$1',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n size: {\n sm: { height: '$3' },\n md: { height: '$4' },\n lg: { height: '$5' },\n xl: { height: '$6' }\n },\n disabled: {\n true: {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n },\n state: {\n error: {}\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nInputBackground.displayName = 'InputBackground'\n\nconst StyledInputText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text as unknown as 'input', {\n // unsets\n appearance: 'none',\n border: 'none',\n background: 'none',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n boxShadow: 'none', // prevent default iOS default styling\n boxSizing: 'border-box',\n '&:focus': {\n outline: 'none'\n },\n //\n px: '$3',\n size: '100%'\n})\n\nexport type InputTextProps = Omit<\n React.ComponentProps<typeof StyledInputText>,\n 'size' | 'type' | 'as'\n> & {\n size: React.ComponentProps<typeof Text>['size']\n // override default 'type' property to prevent Input from being used to render\n // checkboxes, radios etc — we have dedicated components for them\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search'\n as?: never\n}\n\nconst toTextSize = {\n sm: 'sm',\n md: 'md',\n lg: 'md',\n xl: 'lg'\n}\n\nexport const InputText: React.ForwardRefExoticComponent<InputTextProps> =\n React.forwardRef(({ type = 'text', css, size, ...rest }, ref) => {\n const textSize = React.useMemo(\n () => overrideStitchesVariantValue(size, (s) => toTextSize[s]),\n [size]\n )\n\n return (\n <StyledInputText\n ref={ref}\n as=\"input\"\n type={type === 'number' ? 'text' : type}\n inputMode={type === 'number' ? 'numeric' : undefined}\n pattern={type === 'number' ? '[0-9]*' : undefined}\n size={textSize}\n {...rest}\n />\n )\n })\n\nInputText.displayName = 'InputText'\n\ntype InputBackgroundProps = React.ComponentProps<typeof InputBackground>\nexport type InputProps = Omit<\n React.ComponentProps<typeof InputText>,\n 'size' | 'state' | 'appearance'\n> & {\n size?: InputBackgroundProps['size']\n state?: InputBackgroundProps['state']\n appearance?: InputBackgroundProps['appearance']\n}\n\nexport const Input: React.ForwardRefExoticComponent<InputProps> =\n React.forwardRef(\n (\n {\n className,\n size = 'md',\n appearance = 'standard',\n state,\n disabled,\n css,\n ...rest\n },\n ref\n ) => {\n return (\n <InputBackground\n size={size}\n appearance={appearance}\n disabled={disabled}\n state={state}\n css={css}\n className={className}\n >\n <InputText size={size} ref={ref} disabled={disabled} {...rest} />\n </InputBackground>\n )\n }\n )\n\nInput.displayName = 'Input'\n","import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Icon } from '~/components/icon'\nimport type { InputProps } from '~/components/input'\nimport { Input } from '~/components/input'\nimport { getFieldIconSize } from '~/utilities'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps> =\n React.forwardRef(\n (\n {\n css,\n hidePasswordText = 'Hide password',\n showPasswordText = 'Show password',\n size = 'md',\n ...restProps\n },\n ref\n ) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState<boolean>(false)\n const togglePasswordVisibility = () =>\n setIsPasswordVisible((currentState) => !currentState)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', ...css }}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n css={{ pr: '$sizes$2' }}\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n css={{\n bottom: size === 'lg' ? '4px' : 0,\n position: 'absolute',\n right: 0\n }}\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </Box>\n )\n }\n )\n\nPasswordInput.displayName = 'PasswordInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { PasswordInput } from '~/components/password-input'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n css = {},\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n ...remainingProps\n}: PasswordFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={{ ...css, position: 'relative' }}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n","import invariant from 'invariant'\nimport * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\nimport { throttle } from 'throttle-debounce'\n\nimport type { CSS } from '~/stitches'\nimport { Override } from '~/utilities'\n\nimport { Box } from '../box'\nimport { FieldElementWrapperProps } from '../field-wrapper'\nimport { Flex } from '../flex'\nimport { InlineMessage } from '../inline-message'\nimport { PasswordField } from '../password-field'\nimport { PasswordInput } from '../password-input'\n\ntype ValidationResult = Record<string, boolean>\n\ntype CreatePasswordFieldProps = Override<\n React.ComponentProps<typeof PasswordInput> & FieldElementWrapperProps,\n {\n label?: string\n name?: string\n validate: (\n password: string\n ) => Promise<ValidationResult | undefined> | ValidationResult\n defaultValidation: ValidationResult\n messageDirection?: 'row' | 'column'\n }\n>\n\nexport const CreatePasswordField = ({\n validate,\n defaultValidation,\n messageDirection = 'row',\n label = 'Create a password',\n name = 'password',\n css,\n validation,\n appearance,\n ...remainingProps\n}: CreatePasswordFieldProps) => {\n const { formState, control } = useFormContext()\n const [isFocused, setIsFocused] = React.useState<boolean>(false)\n const [validationResult, setValidationResult] =\n React.useState<ValidationResult>(defaultValidation)\n\n const touched: boolean = formState.touched[name]\n const error =\n formState.errors[name]?.type === 'validate' ||\n Object.values(validationResult).every((isValid) => !isValid)\n\n const validatePassword = React.useCallback(\n async (password: string) => {\n const result = await validate(password)\n\n if (result) {\n invariant(\n typeof result === 'object',\n 'The validate function must return an object'\n )\n\n setValidationResult(result)\n return Object.values(result).every((isValid) => isValid)\n }\n\n return false\n },\n [setValidationResult]\n )\n\n const handleChange = React.useCallback(throttle(500, validatePassword), [\n validatePassword\n ])\n\n const getMessageTheme = (result: boolean, isFocused: boolean) => {\n if (result) return 'success'\n\n return isFocused ? 'neutral' : 'error'\n }\n\n const showValidation: boolean =\n (control.mode.isOnBlur && (isFocused || touched)) ||\n (control.mode.isOnSubmit && (isFocused || (formState.isSubmitted && error)))\n\n return (\n <Box css={css}>\n <PasswordField\n label={label}\n name={name}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n validation={{ ...validation, validate: validatePassword }}\n appearance={appearance}\n {...remainingProps}\n />\n {showValidation && (\n <Flex\n style={{\n '--direction': messageDirection\n }}\n css={{\n mt: '$2',\n gap: '$2',\n flexWrap: 'wrap',\n flexDirection: 'var(--direction)'\n }}\n >\n {Object.entries(validationResult).map(([message, result]) => (\n <InlineMessage\n key={message}\n theme={getMessageTheme(result, isFocused)}\n >\n {message}\n </InlineMessage>\n ))}\n </Flex>\n )}\n </Box>\n )\n}\n\nCreatePasswordField.displayName = 'CreatePasswordField'\n","import type {\n ColumnOrderTableState,\n ColumnPinningTableState,\n ColumnSizingTableState,\n ExpandedTableState,\n FiltersTableState,\n GroupingTableState,\n PaginationTableState,\n Row,\n RowSelectionState,\n RowSelectionTableState,\n SortDirection,\n SortingTableState,\n Table,\n VisibilityTableState\n} from '@tanstack/react-table'\nimport * as React from 'react'\nexport enum AsyncDataState {\n NONE = 'none',\n PENDING = 'pending',\n FULFILLED = 'fulfilled',\n REJECTED = 'rejected'\n}\n\nexport type TAsyncDataResult = {\n total: number\n results: TableData\n}\n\nexport type TAsyncDataOptions = {\n pageIndex: number\n pageSize: number\n sortBy?: string\n sortDirection?: SortDirection\n globalFilter?: string\n}\n\nexport type TGetAsyncData = (\n options: TAsyncDataOptions\n) => Promise<TAsyncDataResult | undefined>\n\nexport type TablePosition = {\n top: number | null\n bottom: number | null\n offsetTop: number\n isVisible: boolean\n}\n\nexport type DataTableContextType<T = unknown> = Table<T> & {\n setIsSortable: React.Dispatch<React.SetStateAction<boolean>>\n applyPagination: () => void\n getTotalRows: () => number\n isSortable: boolean\n asyncDataState?: AsyncDataState\n runAsyncData?: (options: Partial<TAsyncDataOptions>) => Promise<void>\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n rowSelection: RowSelectionState\n tablePosition?: TablePosition\n setTablePosition: React.Dispatch<React.SetStateAction<TablePosition>>\n data: TAsyncDataResult\n columns: any\n tableId: string\n /**\n * Directly update the data array that the table rows are built from.\n * This is useful when re-ordering rows, but is high-risk if you're not sure what you're doing!\n *\n * Note in particular that this value is also updated if you update the value of the `DataTable`'s `data` prop\n * — it's probably best to only use one of those two methods for any given table.\n */\n setData: React.Dispatch<React.SetStateAction<TAsyncDataResult>>\n}\n\nexport type TableData = Array<Record<string, unknown>>\n\nexport type InitialState = Partial<\n VisibilityTableState &\n ColumnOrderTableState &\n ColumnPinningTableState &\n FiltersTableState &\n SortingTableState &\n ExpandedTableState &\n GroupingTableState &\n ColumnSizingTableState &\n PaginationTableState &\n RowSelectionTableState\n>\n\nexport type TDefaultSort = { column: string; direction: SortDirection }\n","import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n","import type { PaginationState } from '@tanstack/react-table'\nimport React from 'react'\n\nconst defaultPaginationState: PaginationState = { pageIndex: 0, pageSize: 10 }\nexport const usePagination = (\n initialPaginationState: PaginationState | undefined\n) => {\n const [isPaginated, setIsPaginated] = React.useState<boolean>(\n !!initialPaginationState\n )\n\n const [paginationState, setPaginationState] = React.useState<\n PaginationState | undefined\n >({\n ...defaultPaginationState,\n ...(initialPaginationState || {})\n })\n\n const applyPagination = React.useCallback(() => {\n setIsPaginated(true)\n }, [])\n\n return {\n isPaginated,\n paginationState,\n setPaginationState,\n applyPagination\n }\n}\n","import type { SortingState } from '@tanstack/react-table'\nimport React from 'react'\n\nimport { TDefaultSort } from './DataTable.types'\nexport const useSortByColumn = (defaultSort: TDefaultSort | undefined) => {\n const [isSortable, setIsSortable] = React.useState<boolean>(false)\n\n const [sorting, setSorting] = React.useState<SortingState>(\n defaultSort\n ? [\n {\n id: defaultSort.column,\n desc: defaultSort.direction === 'desc'\n }\n ]\n : []\n )\n\n return { isSortable, setIsSortable, sorting, setSorting }\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n OnChangeFn,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport { Box } from '../box'\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TablePosition,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n disabledRows?: Record<string, boolean>\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n disabledRows,\n enableRowSelection,\n onRowSelectionChange,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const [tablePosition, setTablePosition] = React.useState<TablePosition>({\n top: null,\n bottom: null,\n offsetTop: 0,\n isVisible: true\n })\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const hasSelectedRows = Object.keys(rowSelection || {}).length > 0\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: (updaterOrValue) => {\n if (onRowSelectionChange) onRowSelectionChange(updaterOrValue)\n setRowSelection(updaterOrValue)\n },\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const isSubRow = row.depth > 0\n\n if (isSubRow) return true\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n disabledRows,\n enableRowSelection,\n rowSelection,\n tablePosition,\n setTablePosition,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTableBody = styled('tbody', {\n variants: {\n striped: {\n true: {\n '& tr': {\n '&:nth-child(odd)': { bg: 'white' },\n '&:nth-child(even)': { bg: '$grey100' }\n }\n },\n false: {\n '& tr': {\n bg: 'white'\n }\n }\n }\n }\n})\n\ntype TableBodyProps = React.ComponentProps<typeof StyledTableBody>\n\nexport const TableBody = ({ striped = true, ...rest }: TableBodyProps) => (\n <StyledTableBody striped={striped} {...rest} />\n)\n\nTableBody.displayName = 'TableBody'\n","import { styled } from '~/stitches'\n\nexport const TableCell = styled('td', {\n borderTop: '1px solid $grey100',\n boxSizing: 'border-box',\n color: '$grey800',\n fontFamily: '$body',\n lineHeight: 1.5,\n textAlign: 'left',\n verticalAlign: 'middle',\n '&:first-child': { fontWeight: '600' }\n})\n\nTableCell.displayName = 'TableCell'\n","import { styled } from '~/stitches'\n\nexport const TableFooter = styled('tfoot', {})\n\nTableFooter.displayName = 'TableFooter'\n","import { styled } from '~/stitches'\n\nexport const TableFooterCell = styled('td', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n textAlign: 'left',\n verticalAlign: 'middle'\n})\n\nTableFooterCell.displayName = 'TableFooterCell'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const TABLE_HEADER_THEMES = {\n PRIMARY: 'primary',\n PRIMARY_DARK: 'primaryDark',\n PRIMARY_LIGHT: 'primaryLight',\n LIGHT: 'light',\n WHITE: 'white'\n} as const\n\nconst StyledTableHeader = styled('thead', {\n variants: {\n theme: {\n [TABLE_HEADER_THEMES.PRIMARY]: {\n '& th': {\n bg: '$primary800'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_DARK]: {\n '& th': {\n bg: '$primary1000'\n }\n },\n [TABLE_HEADER_THEMES.PRIMARY_LIGHT]: {\n '& th': {\n bg: '$primary200',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.LIGHT]: {\n '& th': {\n bg: '$grey100',\n color: '$grey1000'\n }\n },\n [TABLE_HEADER_THEMES.WHITE]: {\n '& th': {\n bg: 'white',\n color: '$grey1000'\n }\n }\n },\n isSticky: {\n true: {\n position: 'sticky',\n top: 0,\n zIndex: 3\n }\n }\n }\n})\n\ntype TableHeaderProps = React.ComponentProps<typeof StyledTableHeader>\n\nexport const TableHeader = ({\n theme = 'primaryDark',\n isSticky = false,\n ...rest\n}: TableHeaderProps) => {\n return <StyledTableHeader theme={theme} isSticky={isSticky} {...rest} />\n}\n\nTableHeader.displayName = 'TableHeader'\n","import { 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 '&[colspan]': {\n textAlign: 'center'\n }\n})\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledRow = styled('tr', {\n bg: 'unset'\n})\n\nexport const TableRow: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledRow>\n> = React.forwardRef((props, ref) => <StyledRow {...props} ref={ref} />)\n\nTableRow.displayName = 'TableRow'\n","import * as React from 'react'\n\nimport { CSS } from '../../stitches'\n\ninterface IUseStickyColumnsCss {\n columnsCss: CSS\n}\n\nexport const useStickyColumnsCss = ({\n numberOfStickyColumns,\n wrapperRef\n}: {\n numberOfStickyColumns: number\n wrapperRef: React.RefObject<HTMLTableSectionElement>\n}): IUseStickyColumnsCss => {\n const [columnsCss, setColumnsCss] = React.useState<CSS>({})\n\n const generateColumnsCss = React.useCallback(() => {\n let accWidth = 0\n\n // Getting the table header cells elements to use their width to set the left position in the sticky columns.\n const tableHeaderCells = wrapperRef.current?.querySelectorAll('th')\n const tableHeaderElements = Array.from(tableHeaderCells || [])\n\n // Getting only the number of sticky columns from the elements array that is what we are interested in.\n const stickyColumns = tableHeaderElements.slice(0, numberOfStickyColumns)\n\n const newColumnsCss = stickyColumns.reduce((acc: CSS, column, index) => {\n const elementNumber = index + 1\n const cssObject = {\n ...acc,\n [`& td:nth-of-type(${elementNumber}), th:nth-of-type(${elementNumber})`]:\n {\n position: 'sticky',\n left: `${accWidth}px`,\n minWidth: `${column.offsetWidth}px`, // fixing width for sticky columns\n zIndex: '2'\n }\n }\n\n accWidth += tableHeaderCells?.item(index).clientWidth || 0\n\n return cssObject\n }, {} as CSS)\n\n return newColumnsCss\n }, [numberOfStickyColumns, wrapperRef])\n\n React.useLayoutEffect(() => {\n if (!numberOfStickyColumns) return\n const newColumnsCss = generateColumnsCss()\n\n setColumnsCss(newColumnsCss)\n }, [numberOfStickyColumns, wrapperRef, generateColumnsCss])\n\n return {\n columnsCss\n }\n}\n","import React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Box } from '../box'\nimport { useStickyColumnsCss } from './useStickyColumnsCss'\n\nexport const TableStickyColumnsContainer = ({\n children,\n numberOfStickyColumns = 0,\n css,\n ...restProps\n}: React.PropsWithChildren<{\n numberOfStickyColumns?: number\n css?: CSS\n}>) => {\n const [hasScroll, setHasScroll] = React.useState<boolean>(false)\n const wrapperRef = React.useRef(null)\n const { columnsCss } = useStickyColumnsCss({\n numberOfStickyColumns,\n wrapperRef\n })\n\n const handleScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const newHasScroll = event.currentTarget.scrollLeft > 0\n if (newHasScroll !== hasScroll) {\n setHasScroll(newHasScroll)\n }\n }\n\n return (\n <Box\n onScroll={handleScroll}\n role=\"scrollbar\"\n ref={wrapperRef}\n css={{\n overflow: 'auto',\n overscrollBehaviorX: 'contain',\n maxWidth: '100%',\n position: 'relative',\n ...columnsCss,\n [`& td:nth-child(${numberOfStickyColumns}), th:nth-child(${numberOfStickyColumns})`]:\n {\n ...(hasScroll && {\n boxShadow: '$colors$alpha200 -2px -3px 9px 1px',\n clipPath: 'inset(0px -10px 0px 0px)'\n })\n },\n '& td': {\n bg: 'inherit'\n },\n ...css\n }}\n {...restProps}\n >\n {children}\n </Box>\n )\n}\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { TableBody } from './TableBody'\nimport { TableCell } from './TableCell'\nimport { TableFooter } from './TableFooter'\nimport { TableFooterCell } from './TableFooterCell'\nimport { TableHeader } from './TableHeader'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { TableRow } from './TableRow'\nimport { TableStickyColumnsContainer } from './TableStickyColumnsContainer'\n\nconst StyledTable = styled('table', {\n borderCollapse: 'separate',\n borderSpacing: 0,\n fontFamily: '$sans',\n fontSize: '$sm',\n width: '100%',\n position: 'relative',\n zIndex: 0,\n variants: {\n size: {\n md: {\n '& td, & th': {\n height: '$4',\n padding: '$1 $3'\n }\n },\n lg: {\n '& td, & th': {\n height: '$5',\n padding: '0 0 0 $3',\n '&:last-child': {\n pr: '$3'\n }\n }\n },\n xl: {\n '& th': {\n height: '$5',\n padding: '0 0 0 $3',\n '&:last-child': {\n pr: '$3'\n }\n },\n '& td': {\n height: '$6',\n padding: '0 0 0 $3',\n '&:last-child': {\n pr: '$3'\n }\n }\n }\n },\n corners: {\n round: {\n borderRadius: '$3'\n },\n square: {}\n }\n }\n})\n\ntype TableProps = React.ComponentProps<typeof StyledTable> & {\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n scrollContainerkey?: string\n maxRowDepth?: number\n}\n\nconst TableComponent = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n size = 'md',\n corners = 'round',\n numberOfStickyColumns = 0,\n scrollContainerCss,\n scrollContainerkey,\n ...rest\n },\n ref\n ) => {\n const tableComponent = (\n <StyledTable ref={ref} size={size} corners={corners} {...rest} />\n )\n\n if (numberOfStickyColumns) {\n return (\n <TableStickyColumnsContainer\n key={scrollContainerkey}\n css={scrollContainerCss}\n numberOfStickyColumns={numberOfStickyColumns}\n >\n {tableComponent}\n </TableStickyColumnsContainer>\n )\n }\n\n return tableComponent\n }\n)\n\nexport const Table = Object.assign(TableComponent, {\n Body: TableBody,\n Cell: TableCell,\n Footer: TableFooter,\n FooterCell: TableFooterCell,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Row: TableRow,\n StickyColumnsContainer: TableStickyColumnsContainer\n})\n\nTableComponent.displayName = 'Table'\n","import * as React from 'react'\n\nimport { Table } from '../table'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & {\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nexport const DataTableBody = ({\n striped = false,\n rowAction,\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return <DataTable.Row row={row} key={row.id} rowAction={rowAction} />\n })}\n </Table.Body>\n )\n}\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nexport const StyledDivider = styled('hr', {\n border: 0,\n bg: '$grey200',\n variants: {\n orientation: {\n horizontal: { height: 1, width: '100%' },\n vertical: { height: '100%', width: 1, minHeight: '$3' }\n }\n }\n})\n\nexport const Divider: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledDivider>\n> = React.forwardRef(({ orientation = 'horizontal', ...rest }, ref) => {\n return <StyledDivider ref={ref} orientation={orientation} {...rest} />\n})\n","import * as React from 'react'\n\nimport { Button } from '~/components/button'\nimport { Divider } from '~/components/divider'\nimport { CSS, styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { DataTable } from '.'\nimport { useDataTable } from './DataTableContext'\n\nconst StyledContainer = styled(Flex, {\n p: '$2',\n width: '100%',\n mb: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '$6',\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0',\n variants: {\n isRowSelected: {\n true: {\n bg: '$primary100'\n }\n }\n }\n})\n\nconst BulkActionsDefaultActions = ({\n children\n}: {\n children: React.ReactElement\n}): React.ReactElement | null => {\n const { rowSelection } = useDataTable()\n\n if (Object.keys(rowSelection || {}).length > 0) return null\n\n return children\n}\n\nconst BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n children\n}: {\n cancelLabel?: string\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n\nexport const DataTableBulkActions = Object.assign(\n ({\n children,\n ...rest\n }: {\n css?: CSS\n children:\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >\n | React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n | [\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsDefaultActions>\n >,\n React.ReactElement<\n React.ComponentProps<typeof BulkActionsSelectedRowActions>\n >\n ]\n }) => {\n const { rowSelection } = useDataTable()\n\n const isRowSelected = Object.keys(rowSelection || {}).length > 0\n\n return (\n <StyledContainer isRowSelected={isRowSelected} {...rest}>\n <DataTable.MetaData />\n\n <Flex css={{ justifyContent: 'flex-end', alignItems: 'center' }}>\n {children}\n </Flex>\n </StyledContainer>\n )\n },\n {\n DefaultActions: BulkActionsDefaultActions,\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { Divider } from '../divider'\nimport { useDataTable } from './DataTableContext'\n\nexport const BulkActionsSelectedRowActions = ({\n cancelLabel = 'Cancel',\n showDividers = true,\n children\n}: {\n cancelLabel?: string\n showDividers?: boolean\n children: React.ReactNode\n}) => {\n const { toggleAllPageRowsSelected, rowSelection } = useDataTable()\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (Object.keys(rowSelection || {}).length === 0) return null\n\n return (\n <>\n {children}\n {showDividers && React.Children.count(children) > 0 && (\n <Divider orientation=\"vertical\" css={{ mx: '$4' }} />\n )}\n <Button theme=\"neutral\" onClick={handleDeselectAllPageRows}>\n {cancelLabel}\n </Button>\n </>\n )\n}\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Badge } from '../badge'\nimport { Button } from '../button'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Text } from '../text'\nimport { BulkActionsSelectedRowActions } from './DataTableBulkActionsSelectedRowActions'\nimport { useDataTable } from './DataTableContext'\n\nconst ActionBarPositioner = styled('div', {})\n\nconst StyledContainer = styled(Flex, {\n p: '$2 $1 $2 $3',\n mb: '$4',\n mt: '$2',\n justifyContent: 'space-between',\n alignItems: 'center',\n borderRadius: '$3',\n bg: '$primary800',\n pointerEvents: 'all',\n zIndex: 2,\n width: '100%',\n mx: '$4',\n boxShadow: '$2',\n '@sm': {\n maxWidth: '800px'\n },\n '@lg': {\n p: '$3 $1 $3 $4',\n mb: '$5',\n maxWidth: '1000px'\n },\n '@xl': {\n p: '$4 $2 $4 $24',\n mb: '$5',\n maxWidth: '1400px'\n }\n})\n\nexport const DataTableBulkActionsFloating = Object.assign(\n ({ css, children, ...rest }: { css?: CSS; children: React.ReactNode }) => {\n const { rowSelection, toggleAllPageRowsSelected } = useDataTable()\n\n const actionBarRef = React.useRef<HTMLDivElement>(null)\n\n const numberOfSelectedRows = React.useMemo(() => {\n return Object.keys(rowSelection || {}).length\n }, [rowSelection])\n\n const handleDeselectAllPageRows = () => toggleAllPageRowsSelected(false)\n\n if (numberOfSelectedRows === 0) return null\n\n return (\n <ActionBarPositioner\n ref={actionBarRef}\n css={{\n left: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n position: 'sticky',\n pointerEvents: 'none'\n }}\n >\n <StyledContainer {...rest}>\n <Flex\n justify=\"flex-start\"\n align=\"center\"\n gap={2}\n css={{ flex: 'auto' }}\n >\n <Badge\n theme=\"success\"\n size=\"xs\"\n emphasis=\"subtle\"\n css={{ minWidth: '24px', height: '24px' }}\n >\n {numberOfSelectedRows}\n </Badge>\n <Text size=\"sm\" weight=\"bold\" css={{ color: 'white' }}>\n selected\n </Text>\n </Flex>\n\n <Flex\n justify=\"flex-end\"\n align=\"center\"\n gap={3}\n css={{ flex: 'auto' }}\n >\n {children}\n\n <ActionIcon\n appearance=\"simple\"\n theme=\"white\"\n size=\"md\"\n onClick={handleDeselectAllPageRows}\n label=\"close\"\n >\n <Icon is={Close} />\n </ActionIcon>\n </Flex>\n </StyledContainer>\n </ActionBarPositioner>\n )\n },\n {\n SelectedRowActions: BulkActionsSelectedRowActions\n }\n)\n","import type { Cell } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Table } from '../table'\n\ntype DataTableDataCellProps = {\n cell: Cell<Record<string, unknown>, unknown>\n}\n\nexport const DataTableDataCell = ({ cell }: DataTableDataCellProps) => {\n return (\n <Table.Cell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n}\n","import * as React from 'react'\n\nimport type { EmptyStateProps } from './EmptyState'\n\ntype EmptyStateProviderProps = {\n size?: EmptyStateProps['size']\n}\n\ntype EmptyStateContextValue = EmptyStateProviderProps\n\nexport const EmptyStateContext = React.createContext<EmptyStateContextValue>({})\n\nexport const EmptyStateProvider = ({\n size,\n children\n}: React.PropsWithChildren<EmptyStateProviderProps>) => {\n const value = React.useMemo<EmptyStateContextValue>(() => ({ size }), [size])\n return (\n <EmptyStateContext.Provider value={value}>\n {children}\n </EmptyStateContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateBody = styled(Text, {\n color: '$grey800',\n fontWeight: 400,\n variants: {\n size: {\n xs: {\n fontSize: '$sm',\n mb: '$4'\n },\n sm: {\n fontSize: '$sm',\n mb: '$4'\n },\n md: {\n fontSize: '$sm',\n mb: '$4'\n },\n lg: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n },\n xl: {\n fontSize: '$md',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateBodyProps = React.ComponentProps<typeof StyledEmptyStateBody> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateBody = (props: EmptyStateBodyProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateBody size={size} {...props} />\n}\n","import React from 'react'\n\nimport { Image } from '~/components/image'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateImage = styled(Image, {\n variants: {\n size: {\n xs: {\n maxWidth: '56px',\n maxHeight: '32px',\n mb: '$4'\n },\n sm: {\n maxWidth: '84px',\n maxHeight: '48px',\n mb: '$4'\n },\n md: {\n maxWidth: '126px',\n maxHeight: '72px',\n mb: '$4'\n },\n lg: {\n maxWidth: '190px',\n maxHeight: '142px',\n mb: 'calc($4 + $2)'\n },\n xl: {\n maxWidth: '285px',\n maxHeight: '213px',\n mb: 'calc($4 + $2)'\n }\n }\n }\n})\n\ntype EmptyStateImageProps = React.ComponentProps<typeof StyledEmptyStateImage>\n\nexport const EmptyStateImage = (props: EmptyStateImageProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateImage size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { EmptyStateContext } from './EmptyState.context'\n\nconst StyledEmptyStateTitle = styled('h2', {\n color: '$grey800',\n fontFamily: '$body',\n fontWeight: 600,\n m: 0,\n variants: {\n size: {\n xs: {\n fontSize: '$md',\n mb: '$3'\n },\n sm: {\n fontSize: '$md',\n mb: '$3'\n },\n md: {\n fontSize: '$md',\n mb: '$3'\n },\n lg: {\n fontSize: '$lg',\n mb: '$4'\n },\n xl: {\n fontSize: '$lg',\n mb: '$4'\n }\n }\n }\n})\n\ntype EmptyStateTitleProps = React.ComponentProps<\n typeof StyledEmptyStateTitle\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const EmptyStateTitle = (props: EmptyStateTitleProps) => {\n const { size } = React.useContext(EmptyStateContext)\n return <StyledEmptyStateTitle size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\n\nimport { EmptyStateProvider } from './EmptyState.context'\nimport { EmptyStateBody } from './EmptyStateBody'\nimport { EmptyStateImage } from './EmptyStateImage'\nimport { EmptyStateTitle } from './EmptyStateTitle'\n\nconst EmptyStateContainer = styled(Flex, {\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n '& > *:last-child': {\n mb: 0\n },\n variants: {\n size: {\n xs: {\n p: '$2'\n },\n sm: {\n p: '$3'\n },\n md: {\n p: '$4'\n },\n lg: {\n p: '$5'\n },\n xl: {\n p: '$6'\n }\n }\n }\n})\n\nexport type EmptyStateProps = React.ComponentProps<typeof EmptyStateContainer>\n\nconst EmptyStateComponent = ({ size = 'sm', ...rest }: EmptyStateProps) => (\n <EmptyStateProvider size={size}>\n <EmptyStateContainer size={size} {...rest} />\n </EmptyStateProvider>\n)\n\nexport const EmptyState = Object.assign(EmptyStateComponent, {\n Image: EmptyStateImage,\n Title: EmptyStateTitle,\n Body: EmptyStateBody\n})\n\nEmptyStateComponent.displayName = 'EmptyState'\n","import * as React from 'react'\n\nimport { EmptyState } from '../empty-state'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableEmptyStateProps = React.ComponentProps<typeof EmptyState>\n\nexport const DataTableEmptyState = ({\n children,\n ...rest\n}: DataTableEmptyStateProps) => {\n const { asyncDataState, getTotalRows } = useDataTable()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (!isEmpty) return null\n\n return <EmptyState {...rest}>{children}</EmptyState>\n}\n","import * as React from 'react'\n\nimport { AsyncDataState, DataTableContextType } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableError = ({\n children\n}: {\n children: (retry?: DataTableContextType['runAsyncData']) => React.ReactElement\n}) => {\n const { asyncDataState, runAsyncData } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.REJECTED) return null\n\n return children(runAsyncData)\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nexport const OptionalVisuallyHiddenWrapper = ({\n children,\n hidden = false\n}: React.PropsWithChildren<{\n hidden?: boolean\n}>) => {\n if (hidden) return <VisuallyHidden.Root>{children}</VisuallyHidden.Root>\n\n return children ? (\n // children could be multiple elements/components,\n // so we need a fragment here.\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{children}</>\n ) : null\n}\n\nOptionalVisuallyHiddenWrapper.displayName = 'OptionalVisuallyHiddenWrapper'\n","import { Close, Search } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Icon } from '~/components/icon'\nimport { Input, InputBackground, InputText } from '~/components/input'\nimport { CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nexport type SearchInputProps = React.ComponentProps<typeof Input> & {\n size?: 'sm' | 'md' | 'lg'\n css?: CSS\n value?: string\n defaultValue?: string\n onValueChange?: (newValue: string) => void\n clearText?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nenum INPUT_ICON {\n SEARCH = 'SEARCH',\n CLEAR = 'CLEAR'\n}\n\nconst StyledIcon = styled(Icon, {\n color: '$grey700',\n position: 'absolute',\n pointerEvents: 'none',\n variants: {\n size: {\n sm: {\n right: '$2',\n size: '$1'\n },\n md: {\n right: 10,\n size: 20\n },\n lg: {\n right: 10,\n size: 20\n }\n }\n }\n})\n\nconst StyledSearchInputText = styled(InputText, {\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button':\n {\n display: 'none'\n }\n})\n\nexport const SearchInput: React.ForwardRefExoticComponent<SearchInputProps> =\n React.forwardRef(\n (\n {\n size = 'md',\n appearance = 'standard',\n css,\n value,\n defaultValue = '',\n onValueChange,\n clearText = 'Clear',\n onChange,\n ...remainingProps\n },\n ref\n ) => {\n const [inputElRef, setInputElRef] = useCallbackRef()\n const [innerValue, setInnerValue] = React.useState(defaultValue)\n const [activeIcon, setActiveIcon] = React.useState<INPUT_ICON>(\n defaultValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH\n )\n React.useEffect(() => {\n if (typeof value === 'undefined') return\n setInnerValue(value)\n setActiveIcon(value ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }, [value])\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n React.useImperativeHandle(\n ref,\n () => inputElRef.current as HTMLInputElement\n )\n\n const handleClear = () => {\n const inputEl = inputElRef.current\n if (!inputEl) return\n\n // https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call?.(inputEl, '')\n const ev2 = new Event('input', {\n bubbles: true\n })\n inputEl.dispatchEvent(ev2)\n inputEl.focus()\n onValueChange?.('')\n }\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n\n const newValue = event.target.value\n setInnerValue(newValue)\n onValueChange?.(newValue)\n setActiveIcon(newValue ? INPUT_ICON.CLEAR : INPUT_ICON.SEARCH)\n }\n\n const getIcon = () => {\n if (activeIcon === INPUT_ICON.SEARCH)\n return (\n <StyledIcon\n is={Search}\n size={size}\n css={{\n size: size == 'sm' ? '$1' : 20,\n top: '50%',\n transform: 'translateY(-50%)'\n }}\n />\n )\n\n return (\n <ActionIcon\n label={clearText}\n theme=\"neutral\"\n size={iconSize}\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '$1'\n }}\n onClick={handleClear}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n }\n\n return (\n <InputBackground\n css={{ position: 'relative', width: 'auto', ...css }}\n size={size}\n appearance={appearance}\n >\n <StyledSearchInputText\n ref={setInputElRef}\n size={size}\n type=\"search\"\n {...remainingProps}\n value={innerValue}\n onChange={handleOnChange}\n css={{ pr: size === 'sm' ? '$5' : '$6' }}\n />\n {getIcon()}\n </InputBackground>\n )\n }\n )\n\nSearchInput.displayName = 'SearchInput'\n","import * as React from 'react'\nimport { debounce } from 'throttle-debounce'\n\nimport { OptionalVisuallyHiddenWrapper } from '../../utilities/optional-visually-hidden-wrapper'\nimport { Label } from '../label'\nimport { SearchInput } from '../search-input'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\ntype DataTableSearchProps = React.ComponentProps<typeof SearchInput> & {\n label: string\n hideLabel?: boolean\n}\nexport const DataTableGlobalFilter = ({\n onChange,\n label,\n hideLabel = false,\n ...props\n}: DataTableSearchProps) => {\n const {\n setGlobalFilter,\n getState,\n resetPagination,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n const { globalFilter } = getState()\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n if (isEmpty) return null\n\n const handleChange = debounce(250, (event) => {\n const {\n target: { value }\n } = event\n\n onChange?.(event)\n resetPagination()\n setGlobalFilter(value)\n })\n\n return (\n <>\n <OptionalVisuallyHiddenWrapper hidden={hideLabel}>\n <Label css={{ mb: '$3' }} htmlFor={label}>\n {label}\n </Label>\n </OptionalVisuallyHiddenWrapper>\n <SearchInput\n {...props}\n defaultValue={globalFilter}\n onChange={handleChange}\n name={label}\n />\n </>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n size=\"lg\"\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Table } from '../table'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTable, useDataTable } from './index'\n\ntype DataTableHeadProps = Omit<\n React.ComponentProps<typeof Table.Header>,\n 'children'\n> & {\n sortable?: boolean\n isSticky?: boolean\n stickyOffset?: number\n showTotalInFirstColumn?: boolean\n totalSuffix?: string\n headerCss?: CSS\n}\n\nexport const DataTableHead = ({\n sortable = true,\n theme = 'light',\n isSticky = false,\n stickyOffset = 0,\n showTotalInFirstColumn,\n totalSuffix,\n style,\n css,\n ...props\n}: DataTableHeadProps): React.ReactElement => {\n const {\n getHeaderGroups,\n setIsSortable,\n enableRowSelection,\n getCanSomeRowsExpand,\n tablePosition,\n setTablePosition\n } = useDataTable()\n\n React.useEffect(() => {\n setIsSortable(sortable)\n }, [sortable, setIsSortable])\n\n const tableHeaderRowRef = React.useRef<HTMLTableRowElement>(null)\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const headerOffsetRef = React.useRef(0)\n\n const [headerOffset, setHeaderOffset] = React.useState<number>(0)\n const [headerHide, setHeaderHide] = React.useState<boolean>(false)\n\n const tableHeadElement = tableHeaderRowRef?.current?.closest('thead')\n\n if (tableHeadElement && tablePosition?.offsetTop === null) {\n const tableHeadHeight = tableHeadElement.getBoundingClientRect().height\n const intersectionOffset = stickyOffset + tableHeadHeight\n if (tablePosition) {\n setTablePosition({ ...tablePosition, offsetTop: intersectionOffset || 0 })\n }\n }\n\n React.useEffect(() => {\n if (!isSticky) return\n\n if (!tableRef.current && tableHeaderRowRef.current) {\n tableRef.current = tableHeaderRowRef.current.closest(\n 'table'\n ) as HTMLTableElement | null\n }\n\n if (tableRef.current) {\n if (tablePosition?.top !== null && tablePosition?.bottom !== null) {\n const newOffset =\n tablePosition?.top != null &&\n tablePosition?.bottom != null &&\n tablePosition.top < stickyOffset &&\n tablePosition.bottom > 100\n ? -tablePosition.top + stickyOffset\n : 0\n\n if (newOffset !== 0) setHeaderHide(true)\n\n headerOffsetRef.current = newOffset\n setHeaderOffset(newOffset)\n\n requestAnimationFrame(() => {\n setHeaderHide(false)\n })\n }\n }\n }, [isSticky, stickyOffset, tablePosition])\n\n return (\n <Table.Header\n theme={theme}\n style={{\n ...style,\n '--header-offset': `${headerOffset}px`\n }}\n css={{\n position: 'relative',\n zIndex: 3,\n '& tr:not(:last-child) > th': {\n borderBottom: 'none'\n },\n '& tr:not(:first-child) > th': {\n borderRadius: '0 !important'\n },\n ...css\n }}\n {...props}\n >\n {getHeaderGroups().map((headerGroup) => {\n return (\n <Table.Row\n key={headerGroup.id}\n ref={tableHeaderRowRef}\n css={{\n ...(isSticky &&\n headerOffset !== 0 && {\n transform: `translateY(var(--header-offset))`,\n opacity: headerHide ? 0 : 1,\n transition: headerHide ? 'none' : `opacity 100ms`,\n transitionDelay: headerHide ? '0ms' : `150ms`,\n '& th:last-child:before': {\n content: '',\n position: 'absolute',\n right: 0,\n top: 0,\n bottom: 0,\n width: '100%',\n boxShadow: '$0',\n pointerEvents: 'none'\n }\n })\n }}\n >\n {getCanSomeRowsExpand() && (\n <Table.HeaderCell css={{ width: '$4' }} />\n )}\n {enableRowSelection && (\n <Table.HeaderCell css={{ width: '$4' }}>\n <DataTableSelectAllRowsCheckbox />\n </Table.HeaderCell>\n )}\n {headerGroup.headers.map((header, index) => (\n <DataTable.HeaderCell\n header={header}\n key={header.id}\n includeTotal={index === 0 && showTotalInFirstColumn}\n totalSuffix={totalSuffix}\n />\n ))}\n </Table.Row>\n )\n })}\n </Table.Header>\n )\n}\n","import { ArrowDown, ArrowUp } from '@atom-learning/icons'\nimport { styled } from '@atom-learning/stitches-react'\nimport type { Header } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\nimport { useHover } from 'react-aria'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\nimport { Text } from '../text'\ntype DataTableHeaderProps = React.ComponentProps<typeof Table.HeaderCell> & {\n header: Header<Record<string, unknown>, unknown>\n includeTotal?: boolean\n totalSuffix?: string\n}\n\nconst StyledCount = styled(Text, {\n color: '$grey600',\n whiteSpace: 'nowrap',\n display: 'none',\n '@media (min-width: 800px)': {\n display: 'block'\n }\n})\n\nconst StyledTableHeaderCell = styled(Table.HeaderCell, {\n variants: {\n isSortable: {\n true: {\n cursor: 'pointer',\n position: 'relative',\n '& > *': {\n position: 'relative'\n },\n '&:before': {\n content: '',\n position: 'absolute',\n inset: 0,\n opacity: 0,\n backgroundColor: '$primary100',\n transition: 'opacity 200ms ease'\n },\n '&:hover': {\n '&::before': {\n opacity: 0.5\n }\n }\n }\n }\n }\n})\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown\n}\n\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' }) => (\n <Icon\n is={sortIcons[direction]}\n size=\"sm\"\n css={{ position: 'absolute', left: '$1', stroke: '$primary900' }}\n />\n)\n\nexport const DataTableHeaderCell = ({\n header,\n includeTotal = false,\n totalSuffix = 'items',\n children,\n css,\n ...props\n}: DataTableHeaderProps) => {\n const sortDirection = header.column.getIsSorted()\n const { isSortable: isSortableTable, getRowModel } = useDataTable()\n // false for display columns, e.g. \"Actions\"\n const isDataColumn = header.column.getCanSort()\n\n const totalRows = getRowModel()?.rows?.length\n\n const { hoverProps, isHovered } = useHover({})\n\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLTableCellElement>,\n callback: (event: unknown) => void | undefined\n ) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n callback(event as unknown)\n }\n }\n\n const headerSortingHandler = header.column.getToggleSortingHandler()\n\n return (\n <StyledTableHeaderCell\n isSortable={isSortableTable && isDataColumn}\n colSpan={header.colSpan}\n onClick={\n isSortableTable && isDataColumn && headerSortingHandler\n ? headerSortingHandler\n : undefined\n }\n onKeyDown={(event) =>\n isSortableTable &&\n isDataColumn &&\n headerSortingHandler &&\n handleKeyDown(event, headerSortingHandler)\n }\n tabIndex={isSortableTable && isDataColumn ? 0 : -1}\n {...hoverProps}\n css={css}\n {...props}\n >\n <Flex\n align=\"center\"\n gap={1}\n justify={header.colSpan > 1 ? 'center' : 'flex-start'}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sortDirection && isSortableTable && (\n <Flex\n align=\"center\"\n css={{\n position: 'relative',\n width: '24px',\n height: '24px',\n ml: '$2',\n bg: isHovered ? '$primary200' : '$primary100',\n borderRadius: '$0'\n }}\n >\n <SortIcon direction={sortDirection} />\n </Flex>\n )}\n {includeTotal && (\n <StyledCount size=\"sm\" weight=\"normal\">\n ({totalRows} {totalSuffix})\n </StyledCount>\n )}\n </Flex>\n </StyledTableHeaderCell>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Loader } from '../loader'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\n\nconst PendingState = styled(Loader, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 1\n})\n\nexport const DataTableLoading = (\n props: React.ComponentProps<typeof PendingState>\n) => {\n const { asyncDataState } = useDataTable()\n\n if (asyncDataState !== AsyncDataState.PENDING) return null\n\n return <PendingState {...props} />\n}\n","import * as React from 'react'\n\nimport type { CSS } from '~/stitches'\n\nimport { Text } from '../text'\nimport { useDataTable } from './index'\n\nconst defaultCopy = {\n sorted_by: 'Sorted by',\n ascending: 'ascending',\n descending: 'descending',\n separator: '-'\n}\n\nexport const DataTableMetaData = ({\n copy,\n css\n}: {\n copy?: {\n sorted_by?: string\n ascending?: string\n descending?: string\n separator?: string\n }\n sortLabel?: string\n css?: CSS\n}) => {\n const { getState, columns, getRowModel, rowSelection } = useDataTable()\n const { sorting } = getState()\n const isSorted = sorting.length > 0\n\n const totalRows = getRowModel()?.rows?.length\n\n const selectedRows = Object.keys(rowSelection || {}).length\n\n const copyMerged = { ...defaultCopy, ...copy }\n\n const getColumnDisplayName = (id: string) => {\n const sortedColumn = columns.find((col) => col.id === id)\n return sortedColumn?.header || id\n }\n\n const getSortingString = (sorting) => {\n return `${copyMerged.separator} ${\n copyMerged.sorted_by\n } ${getColumnDisplayName(sorting[0].id)} ${\n sorting[0].desc ? copyMerged.descending : copyMerged.ascending\n }`\n }\n\n return (\n <Text weight=\"bold\" css={css}>{`${selectedRows || totalRows} ${\n (selectedRows || totalRows) === 1 ? 'item' : 'items'\n } ${selectedRows ? 'selected' : ''} ${\n isSorted ? getSortingString(sorting) : ''\n }`}</Text>\n )\n}\n","import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableRowSelectionCheckbox = ({\n row,\n checked,\n onCheckedChange,\n label = `Row ${row.id} selection`\n}: {\n row: Row<Record<string, unknown>>\n checked: boolean | 'indeterminate'\n onCheckedChange: (value: boolean) => void\n label?: string\n}): React.ReactElement => {\n const { tableId } = useDataTable()\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_row_${row.id}_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n <Checkbox\n size=\"lg\"\n style={{ '--depth': row.depth }}\n css={{ mr: '$3', ml: 'calc((var(--depth, 0) * 2) * 4px)' }}\n checked={checked}\n onCheckedChange={onCheckedChange}\n name={`${tableId}_row_${row.id}_selection`}\n disabled={!row.getCanSelect()}\n />\n </>\n )\n}\n","import { ChevronDown, ChevronRight } from '@atom-learning/icons'\nimport type { Row } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { Table } from '../table'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\n\nexport type DataTableRowProps = React.ComponentProps<typeof Table.Row> & {\n row: Row<Record<string, unknown>>\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n}\n\nconst StyledRow = styled(Table.Row, {\n bg: 'initial',\n position: 'relative',\n variants: {\n isSelected: {\n true: {\n '&:nth-child(odd), &:nth-child(even)': {\n bg: '$primary100'\n }\n }\n },\n isDisabled: {\n true: {\n opacity: '30%'\n }\n },\n isFocusable: {\n true: {\n transform: 'translateY(0)',\n boxShadow: '0px 4px 11px 0px hsla(0, 0%, 12%, 0)',\n transition: 'transform 300ms ease-in-out, box-shadow 300ms ease-in-out',\n '&:hover': {\n transform: 'translateY(-1px)',\n boxShadow: '0px 4px 11px 0px hsla(0, 0%, 12%, 0.12)',\n transitionDuration: '100ms',\n zIndex: 3\n },\n '&:focus': {\n outline: '2px solid $primary500',\n outlineOffset: '-4px',\n '& td': {\n bg: 'transparent'\n }\n }\n }\n }\n }\n})\n\nconst isElementInteractive = (element: Element | null): boolean => {\n if (!element) return false\n if (element.closest('button, a, input, select, textarea')) return true\n if (element.getAttribute('role') === 'button') return true\n return false\n}\n\nexport const DataTableRow = ({ row, rowAction }: DataTableRowProps) => {\n const { enableRowSelection, disabledRows, getCanSomeRowsExpand } =\n useDataTable()\n\n const isDisabled = !!disabledRows?.[row.id]\n\n const toggleExpandHandler = row.getToggleExpandedHandler()\n const toggleSelectHandler = row.getToggleSelectedHandler()\n\n const getCheckedState = (): boolean | 'indeterminate' => {\n if (row.getIsSomeSelected()) return 'indeterminate'\n return row.getIsSelected()\n }\n\n const handleRowClick = (\n rowData: Row<Record<string, unknown>>,\n event: React.MouseEvent<HTMLTableRowElement>\n ) => {\n if (!rowAction) return\n\n // Skip if clicking on an interactive element\n const rowElement = (event.target as Element).closest('tr')\n if (!rowElement || isElementInteractive(event.target as Element)) {\n return\n }\n\n rowAction(rowData.original, event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n if (isElementInteractive(event.target as Element)) {\n return\n }\n event.preventDefault()\n handleRowClick(\n row,\n event as unknown as React.MouseEvent<HTMLTableRowElement>\n )\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const nextRow = currentRow?.nextElementSibling as HTMLElement\n if (nextRow && nextRow.tagName === 'TR') {\n nextRow.focus()\n }\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n const currentRow = (event.target as HTMLElement).closest('tr')\n const previousRow = currentRow?.previousElementSibling as HTMLElement\n if (previousRow && previousRow.tagName === 'TR') {\n previousRow.focus()\n }\n }\n }\n\n return (\n <StyledRow\n isSelected={row.getIsSelected()}\n isDisabled={isDisabled}\n isFocusable={!!rowAction && !isDisabled}\n {...(rowAction && {\n onClick: (event) => handleRowClick(row, event),\n tabIndex: 0,\n css: { cursor: 'pointer' },\n onKeyDown: handleKeyDown\n })}\n >\n {getCanSomeRowsExpand() && (\n <Table.Cell\n data-testid={`expand-icon-${row.id}`}\n css={{ width: '$4', cursor: row.getCanExpand() ? 'pointer' : 'auto' }}\n onClick={toggleExpandHandler}\n >\n {row.getCanExpand() && (\n <Icon is={row.getIsExpanded() ? ChevronDown : ChevronRight} />\n )}\n </Table.Cell>\n )}\n\n {enableRowSelection && (\n <Table.Cell css={{ width: '$4' }}>\n <DataTableRowSelectionCheckbox\n row={row}\n checked={getCheckedState()}\n onCheckedChange={toggleSelectHandler}\n />\n </Table.Cell>\n )}\n {row.getVisibleCells().map((cell, i) => {\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </StyledRow>\n )\n}\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nconst TableContainer = styled(Box, {\n p: '$2',\n bg: 'white',\n borderRadius: '$3'\n})\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n stickyHeaderOffset?: number\n headerCss?: CSS\n numberOfStickyColumns?: number\n scrollContainerCss?: CSS\n showTotalInFirstColumn?: boolean\n totalSuffix?: string\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme = 'white',\n css,\n scrollOptions = {\n numberOfStickyColumns: 0,\n stickyHeaderOffset: 0,\n hasStickyHeader: false,\n showTotalInFirstColumn: true,\n totalSuffix: 'items'\n },\n rowAction,\n ...props\n}: DataTableTableProps): JSX.Element | null => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n rowSelection,\n enableRowSelection,\n tableId,\n setTablePosition\n } = useDataTable()\n\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const isTableVisible = React.useRef(false)\n const isScrolling = React.useRef<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n if (typeof window === 'undefined') return null\n return window\n }, [])\n\n React.useEffect(() => {\n if (!scrollTarget || typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const updatePosition = () => {\n if (tableRef.current) {\n const tableTop = tableRef.current.getBoundingClientRect().top\n const tableBottom = tableRef.current.getBoundingClientRect().bottom\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n top: tableTop,\n bottom: tableBottom\n }))\n }\n isScrolling.current = false\n }\n\n const handleScroll = () => {\n if (!isScrolling.current) {\n requestAnimationFrame(updatePosition)\n isScrolling.current = true\n }\n }\n\n if (!tableRef.current) return\n\n const observerOffset = scrollOptions?.stickyHeaderOffset || 0\n\n const observerOptions = {\n rootMargin: `-${observerOffset}px 0px -${observerOffset}px 0px`,\n threshold: 0\n }\n\n const handleTableIntersection = (entries: IntersectionObserverEntry[]) => {\n if (!entries || entries.length === 0) return\n const entry = entries[0]\n\n isTableVisible.current = entry.isIntersecting\n\n if (scrollTarget) {\n if (entry.isIntersecting) {\n // add scroll listener\n scrollTarget?.addEventListener('scroll', handleScroll)\n } else {\n // remove scroll listener\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n isVisible: entry.isIntersecting\n }))\n }\n\n const tableObserver = new IntersectionObserver(\n handleTableIntersection,\n observerOptions\n )\n\n //only track table position if we have a sticky header or bulk actions active\n if (\n tableRef.current &&\n (scrollOptions.hasStickyHeader ||\n Object.keys(rowSelection || {}).length > 0)\n ) {\n tableObserver.observe(tableRef.current)\n }\n\n return () => {\n tableObserver.disconnect()\n if (scrollTarget) {\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n }, [\n rowSelection,\n scrollOptions.hasStickyHeader,\n scrollOptions?.stickyHeaderOffset,\n scrollTarget,\n setTablePosition\n ])\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n return (\n <>\n <DataTableLoading />\n <TableContainer>\n <Table\n corners=\"round\"\n size=\"lg\"\n {...props}\n ref={tableRef}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCss={{\n ...scrollOptions.scrollContainerCss\n }}\n scrollContainerkey={buildScrollContainerKey()}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n stickyOffset={scrollOptions.stickyHeaderOffset}\n css={scrollOptions.headerCss}\n showTotalInFirstColumn={scrollOptions.showTotalInFirstColumn}\n totalSuffix={scrollOptions.totalSuffix}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n </TableContainer>\n </>\n )\n}\n","import { DragHandle } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nexport const StyledHandle = styled(ActionIcon, {\n color: 'inherit !important',\n fill: 'currentColor',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n '& *': {\n pointerEvents: 'none'\n }\n },\n variants: {\n isDragging: {\n true: {\n cursor: 'grabbing'\n },\n false: {\n cursor: 'grab'\n }\n }\n }\n})\n\nexport type THandleProps = Omit<\n React.ComponentProps<typeof StyledHandle>,\n 'children'\n> &\n Pick<React.ComponentProps<typeof Icon>, 'size'>\n\nexport const Handle: React.ForwardRefExoticComponent<THandleProps> =\n React.forwardRef(({ isDragging, size, ...rest }, ref) => {\n return (\n <StyledHandle\n ref={ref}\n isDragging={isDragging}\n appearance=\"simple\"\n hasTooltip={false}\n size={size}\n {...rest}\n >\n <Icon is={DragHandle} />\n </StyledHandle>\n )\n })\n\nHandle.displayName = 'Handle'\n","import { useSortable } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Handle as DragHandle, THandleProps } from './Handle'\n\nexport type TSortableHandleProps = {\n targetId: React.ReactText\n disabled?: boolean\n label?: string\n} & Omit<THandleProps, 'label'>\n\nexport const SortableHandle = ({\n targetId,\n disabled = false,\n label = 'drag handle',\n ...rest\n}: TSortableHandleProps) => {\n const { attributes, listeners, isDragging, setActivatorNodeRef } =\n useSortable({ id: targetId })\n\n return (\n <DragHandle\n ref={setActivatorNodeRef}\n isDragging={isDragging}\n label={label}\n disabled={disabled}\n {...(!disabled ? listeners : {})}\n {...(!disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableHandle.displayName = 'SortableHandle'\n","import type { UniqueIdentifier } from '@dnd-kit/core'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport type TSortableItemProps = {\n id: UniqueIdentifier\n asChild?: boolean\n isDragHandle?: boolean\n disabled?: boolean\n css?: CSS\n style?: Pick<React.ComponentProps<typeof Box>, 'style'>\n}\n\nconst StyledSlot = styled(Slot)\n\nexport const SortableItem = ({\n id,\n asChild = false,\n css,\n style,\n isDragHandle = false,\n disabled,\n ...rest\n}: React.PropsWithChildren<TSortableItemProps>) => {\n const { transform, setNodeRef, isDragging, listeners, attributes } =\n useSortable({ id })\n\n const Component = asChild ? StyledSlot : Box\n return (\n <Component\n ref={setNodeRef}\n style={{\n ...style,\n '--scale': 1,\n '--translate-x': transform?.x || 0,\n '--translate-y': transform?.y || 0\n }}\n css={{\n transform:\n 'translateX(calc(var(--translate-x) * 1px)) translateY(calc(var(--translate-y) * 1px)) scale(var(--scale))',\n zIndex: isDragging ? 5 : undefined,\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n '& *': { pointerEvents: 'none' }\n },\n ...(isDragHandle && { cursor: isDragging ? 'grabbing' : 'grab' }),\n ...css\n }}\n data-dragging={isDragging}\n data-disabled={disabled}\n {...(isDragHandle && !disabled ? listeners : {})}\n {...(isDragHandle && !disabled ? attributes : {})}\n {...rest}\n />\n )\n}\n\nSortableItem.displayName = 'SortableItem'\n","import type { DragEndEvent, UniqueIdentifier } from '@dnd-kit/core'\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates\n} from '@dnd-kit/sortable'\nimport * as React from 'react'\n\ntype TSortableRootProps = {\n sortableIds: React.ReactText[]\n onSortChange: (onSortChangeData: {\n order: UniqueIdentifier[]\n oldIndex: number\n newIndex: number\n }) => void\n}\n\nexport const SortableRoot = ({\n sortableIds,\n onSortChange,\n children\n}: React.PropsWithChildren<TSortableRootProps>) => {\n const [order, setOrder] = React.useState<React.ReactText[]>(sortableIds)\n React.useEffect(() => {\n setOrder(sortableIds)\n }, [sortableIds])\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n )\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (active.id && over?.id && active.id !== over?.id) {\n setOrder((order) => {\n const oldIndex = order.indexOf(active.id)\n const newIndex = order.indexOf(over.id)\n const newOrder = arrayMove(order, oldIndex, newIndex)\n onSortChange({ order: newOrder, oldIndex, newIndex })\n return newOrder\n })\n }\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={order}>{children}</SortableContext>\n </DndContext>\n )\n}\n\nSortableRoot.displayName = 'SortableRoot'\n","import { SortableHandle as Handle } from './SortableHandle'\nimport { SortableItem as Item } from './SortableItem'\nimport { SortableRoot as Root } from './SortableRoot'\n\nexport const Sortable = { Root, Item, Handle }\n","import type { Row } from '@tanstack/react-table'\nimport { flexRender } from '@tanstack/react-table'\nimport * as React from 'react'\n\nimport { Sortable } from '~/components/sortable'\n\nimport { Table } from '../../table'\nimport { DataTableDataCell } from '../DataTableDataCell'\nexport type DataTableDraggableRowProps = React.ComponentProps<\n typeof Table.Row\n> & {\n row: Row<Record<string, unknown>>\n idColumn?: string\n}\n\nexport const DragAndDropTableRow = ({\n row,\n idColumn = 'id'\n}: DataTableDraggableRowProps) => {\n const rowId = row.original[idColumn] as React.ReactText\n return (\n <Sortable.Item id={rowId} asChild>\n <Table.Row>\n {row.getVisibleCells().map((cell, i) => {\n if (i === 0) {\n return (\n <Table.Cell key={cell.id}>\n <Sortable.Handle\n targetId={rowId}\n css={{ display: 'inline-block' }}\n />\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n }\n return <DataTableDataCell key={cell.id} cell={cell} />\n })}\n </Table.Row>\n </Sortable.Item>\n )\n}\n","import * as React from 'react'\n\nimport { Table } from '../../table'\nimport { useDataTable } from '../DataTableContext'\nimport { DragAndDropTableRow } from './DragAndDropTableRow'\n\ntype DataTableBodyProps = Omit<\n React.ComponentProps<typeof Table.Body>,\n 'children'\n> & { idColumn?: string }\n\nexport const DragAndDropTableBody = ({\n striped = false,\n idColumn = 'id',\n ...props\n}: DataTableBodyProps) => {\n const { getRowModel } = useDataTable()\n return (\n <Table.Body {...props} striped={striped}>\n {getRowModel().rows.map((row) => {\n return (\n <DragAndDropTableRow row={row} key={row.id} idColumn={idColumn} />\n )\n })}\n </Table.Body>\n )\n}\n","import { arrayMove } from '@dnd-kit/sortable'\nimport * as React from 'react'\n\nimport { Sortable } from '../../sortable'\nimport { Table } from '../../table'\nimport { DataTable } from '../DataTable'\nimport { AsyncDataState, TAsyncDataResult } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\nimport { DataTableLoading } from '../DataTableLoading'\nimport type { DataTableTableProps } from '../DataTableTable'\nimport { DragAndDropTableBody } from './DragAndDropTableBody'\n\ntype DragAndDropTableProps = DataTableTableProps & {\n idColumn?: string\n onDragAndDrop?: (onDragAndDropData: {\n oldIndex: number\n newIndex: number\n newData: TAsyncDataResult\n }) => void\n}\n\nexport const DragAndDropTable = ({\n idColumn = 'id',\n onDragAndDrop,\n sortable,\n striped,\n theme,\n css,\n ...props\n}: DragAndDropTableProps) => {\n const { asyncDataState, data, setData } = useDataTable()\n const isPending = asyncDataState === AsyncDataState.PENDING\n\n const rowIds = React.useMemo(\n () =>\n data.results.map((row) => {\n return row[idColumn] as React.ReactText\n }),\n [data]\n )\n const handleSortChange = React.useCallback(\n ({ oldIndex, newIndex }) => {\n const sortedResults = arrayMove(data.results, oldIndex, newIndex)\n const newData = { results: sortedResults, total: data.total }\n setData({ results: sortedResults, total: data.total })\n onDragAndDrop?.({ oldIndex, newIndex, newData })\n },\n [data, onDragAndDrop]\n )\n\n return (\n <Sortable.Root onSortChange={handleSortChange} sortableIds={rowIds}>\n <DataTableLoading />\n <Table\n {...props}\n css={{\n ...css,\n ...(isPending && {\n opacity: 0.5,\n pointerEvents: 'none',\n transition: 'opacity 250ms linear 150ms'\n })\n }}\n >\n <DataTable.Head theme={theme} sortable={sortable} />\n <DragAndDropTableBody striped={striped} idColumn={idColumn} />\n </Table>\n </Sortable.Root>\n )\n}\n","export enum VisibleElementsAmount {\n LESS = 6,\n MORE = 8\n}\n\nexport const VIEW_ALL_POPOVER = 'VIEW_ALL_POPOVER'\nexport const GO_TO_PREVIOUS_PAGE = 'GO_TO_PREVIOUS_PAGE'\nexport const GO_TO_NEXT_PAGE = 'GO_TO_NEXT_PAGE'\n","import {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationItemsToRender } from './types'\n\nexport const getPaginationElementsToRender = (\n currentPage: number,\n pagesCount: number,\n visibleElementsCount: number\n): PaginationItemsToRender => {\n const paginationPages = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n /*\n * As we always show the `<` `>` arrows,\n * subtract 2 from `visibleElementsCount` (one for each of the GO_TO_PREVIOUS/NEXT_PAGE arrows)\n * to get the `visiblePagesCount`\n */\n let visiblePagesCount = visibleElementsCount - 2\n const withPreviousNextPageArrows = (paginationPages) => [\n GO_TO_PREVIOUS_PAGE,\n ...paginationPages,\n GO_TO_NEXT_PAGE\n ]\n\n /**\n * If fewer pages than threshold for truncating render them all.\n *\n * pagesCount: 6\n * visibleElementsCount: >=6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, 3, 4, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | 3 | | 4 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (pagesCount <= visiblePagesCount) {\n return withPreviousNextPageArrows(paginationPages)\n }\n\n /**\n * If current page is either at the very start or at the very end of the pages\n */\n const canFitEdgePage = visibleElementsCount >= 5\n const canFitViewAllPopover = visibleElementsCount >= 4\n const canFitPages = visibleElementsCount >= 3\n\n if (canFitViewAllPopover) {\n // Subtract one from visiblePagesCount to accomodate for us adding the `[…]` VIEW_ALL_POPOVER\n visiblePagesCount -= 1\n }\n\n if (canFitEdgePage) {\n // Subtract one more from visiblePagesCount to accomodate for us adding the GO_TO_PREVIOUS/NEXT_PAGE arrows\n visiblePagesCount -= 1\n }\n\n const firstPage = paginationPages[0]\n const lastPage = paginationPages[paginationPages.length - 1]\n\n /**\n * If we're truncating and current page is at the start of the page list,\n * render the initial truncated page list, e.g.\n *\n * pagesCount: 8\n * currentPage: 1/2\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, 2, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | 2 | | … | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage < visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitPages) {\n newPaginationItems.push(...paginationPages.slice(0, visiblePagesCount))\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitEdgePage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page is towards the end of the\n * page list (depending on visibleElementsCount),\n * render a truncated page list from the end, e.g.\n *\n * pagesCount: 8\n * currentPage: 7/8\n * visibleElementsCount: 6\n * returns [GO_TO_PREVIOUS_PAGE, 1, VIEW_ALL_POPOVER, 7, 8, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 1 | | … | | 7 | | 8 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n */\n if (currentPage > pagesCount - visiblePagesCount) {\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitEdgePage) {\n newPaginationItems.push(firstPage)\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitPages) {\n newPaginationItems.push(\n ...paginationPages.slice(pagesCount - visiblePagesCount, pagesCount)\n )\n }\n return withPreviousNextPageArrows(newPaginationItems)\n }\n\n /**\n * If we're truncating and the current page doesn't meet any of the previous conditions\n * (we're in the middle)\n * render a truncated page list from a specific index relative to `currentPage`, e.g.\n *\n * currentPage: 4\n * visibleElementsCount: 6 // VisibleElementsAmount.LESS\n * returns [GO_TO_PREVIOUS_PAGE, 3, 4, VIEW_ALL_POPOVER, 6, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 3 | | 4 | | … | | 6 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+\n *\n * currentPage: 6\n * visibleElementsCount: 8 // VisibleElementsAmount.MORE\n * returns [GO_TO_PREVIOUS_PAGE, 4, 5, 6, 7, VIEW_ALL_POPOVER, 10, GO_TO_NEXT_PAGE]\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n * | < | | 4 | | 5 | | 6 | | 7 | | … | | 10 | | > |\n * +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+\n */\n const canFitCurrentPage = canFitPages\n const canFitCurrentPageAndPreviousPage = visibleElementsCount >= 6\n const canFitCurrentPageAndPreviousPageAndNextPage = visibleElementsCount >= 7\n const canFitLastPage = canFitEdgePage\n\n const newPaginationItems = [] as PaginationItemsToRender\n if (canFitCurrentPageAndPreviousPageAndNextPage) {\n newPaginationItems.push(\n ...paginationPages.slice(\n currentPage + 1 - visiblePagesCount,\n currentPage + 1\n )\n )\n } else if (canFitCurrentPageAndPreviousPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - visiblePagesCount, currentPage)\n )\n } else if (canFitCurrentPage) {\n newPaginationItems.push(\n ...paginationPages.slice(currentPage - 1, currentPage - 1 + 1)\n )\n }\n if (canFitViewAllPopover) {\n newPaginationItems.push(VIEW_ALL_POPOVER)\n }\n if (canFitLastPage) {\n newPaginationItems.push(lastPage)\n }\n return withPreviousNextPageArrows(newPaginationItems)\n}\n\nexport const findNextAvailablePage = (\n startPage: number,\n disabledPages: number[],\n pagesCount: number\n): number | undefined => {\n if (startPage > pagesCount) return\n let nextPage = startPage\n while (disabledPages.includes(nextPage)) {\n nextPage++\n }\n return nextPage\n}\n\nexport const findPreviousAvailablePage = (\n startPage: number,\n disabledPages: number[]\n): number | undefined => {\n if (startPage < 1) return\n let previousPage = startPage\n while (disabledPages.includes(previousPage)) {\n previousPage--\n }\n return previousPage\n}\n","import * as React from 'react'\n\nimport { VisibleElementsAmount } from '../pagination.constants'\nimport {\n findNextAvailablePage,\n findPreviousAvailablePage,\n getPaginationElementsToRender\n} from '../pagination.helper'\nimport type { PaginationContextValue, PaginationProviderProps } from '../types'\n\nexport const PaginationContext = React.createContext<PaginationContextValue>({\n goToPage: () => null,\n goToPreviousPage: () => null,\n goToNextPage: () => null,\n currentPage: 1,\n pagesCount: 0,\n onItemHover: () => null,\n paginationItems: [],\n labels: {},\n indicatedPages: [],\n disabledPages: []\n})\n\nexport const PaginationProvider = ({\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children\n}: React.PropsWithChildren<PaginationProviderProps>) => {\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(1)\n\n const currentPage = selectedPage || internalCurrentPage\n\n const goToPage = React.useCallback(\n (pageNumber: number) => {\n setInternalCurrentPage(pageNumber)\n onSelectedPageChange?.(pageNumber)\n },\n [onSelectedPageChange]\n )\n\n const previousPage = currentPage - 1\n const previousAvailablePage = findPreviousAvailablePage(\n previousPage,\n disabledPages\n )\n\n const goToPreviousPage = React.useCallback(() => {\n if (previousAvailablePage) goToPage(previousAvailablePage)\n }, [goToPage, previousAvailablePage])\n\n const nextPage = currentPage + 1\n const nextAvailablePage = findNextAvailablePage(\n nextPage,\n disabledPages,\n pagesCount\n )\n const goToNextPage = React.useCallback(() => {\n if (nextAvailablePage) goToPage(nextAvailablePage)\n }, [goToPage, nextAvailablePage])\n\n const paginationItems = getPaginationElementsToRender(\n currentPage,\n pagesCount,\n visibleElementsCount\n )\n\n const value = React.useMemo(() => {\n return {\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n paginationItems,\n indicatedPages,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n }\n }, [\n goToNextPage,\n goToPreviousPage,\n goToPage,\n currentPage,\n indicatedPages,\n paginationItems,\n disabledPages,\n pagesCount,\n onItemHover,\n previousAvailablePage,\n nextAvailablePage,\n labels\n ])\n\n return (\n <PaginationContext.Provider value={value}>\n {children}\n </PaginationContext.Provider>\n )\n}\n","import * as React from 'react'\n\nimport { PaginationContext } from './pagination-context/PaginationContext'\nimport type { PaginationContextValue } from './types'\n\nexport const usePagination = (): PaginationContextValue => {\n const context = React.useContext(PaginationContext)\n\n if (!context) {\n throw new Error(\n 'Ensure that you wrap any components with the PaginationProvider component'\n )\n }\n\n return context\n}\n","import { ChevronRight } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n ml: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationNextButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToNextPage, labels, nextAvailablePage } = usePagination()\n\n const isDisabled = !nextAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToNextPage}\n disabled={isDisabled}\n {...props}\n label={labels?.nextPageButtonLabel || 'Next page'}\n >\n <Icon is={ChevronRight} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport type { PaginationPageProps } from './types'\nimport { usePagination } from './usePagination'\n\nconst StyledButton = styled('button', {\n alignItems: 'center',\n border: '1px solid transparent',\n borderRadius: '$0',\n cursor: 'pointer',\n fontFamily: '$body',\n justifyContent: 'center',\n whiteSpace: 'nowrap',\n width: 'max-content',\n display: 'flex',\n flexDirection: 'column',\n p: '0',\n fontWeight: 400,\n color: '$textSubtle',\n bg: '$base1',\n position: 'relative',\n\n '&:not(:disabled)': {\n '&:hover': {\n color: '$textRegular',\n bg: '$base2'\n },\n '&:active': {\n color: '$textBold',\n bg: '$base3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed',\n pointerEvents: 'none'\n },\n variants: {\n size: {\n md: {\n width: '$4',\n height: '$4'\n }\n },\n selected: {\n true: {\n border: '1px solid $accent9',\n color: '$accent9',\n fontWeight: 600,\n '&:not(:disabled)': {\n '&:hover': {\n borderColor: '$accent10',\n color: '$accent10'\n },\n '&:active': {\n borderColor: '$accent11',\n color: '$accent11'\n }\n }\n }\n },\n indicated: {\n true: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n },\n\n compoundVariants: [\n {\n selected: true,\n indicated: true,\n css: {\n fontWeight: 600,\n color: 'white',\n bg: '$accent9',\n boxShadow: '$colors$accent9 0px 0px 0px 1px',\n '&:not(:focus-visible)': {\n borderColor: 'white !important'\n },\n '&:not(:disabled)': {\n '&:hover': {\n color: 'white',\n bg: '$accent10'\n },\n '&:active': {\n color: 'white',\n bg: '$accent11'\n }\n }\n }\n }\n ]\n})\n\nexport const PaginationPage = ({\n pageNumber,\n css,\n onClick\n}: PaginationPageProps) => {\n const { currentPage, goToPage, indicatedPages, disabledPages, onItemHover } =\n usePagination()\n\n const isIndicated = indicatedPages.includes(pageNumber)\n const isDisabled = disabledPages.includes(pageNumber)\n\n const isSelected = currentPage === pageNumber\n\n const handleOnHover = () => {\n if (isSelected || isDisabled) return\n onItemHover?.(pageNumber)\n }\n\n const handleOnClick = (pageNumber) => {\n onClick?.()\n goToPage(pageNumber)\n }\n\n return (\n <StyledButton\n selected={isSelected}\n size=\"md\"\n onClick={() => handleOnClick(pageNumber)}\n css={css}\n indicated={isIndicated}\n disabled={isDisabled}\n aria-current={isSelected && 'page'}\n aria-disabled={isDisabled}\n onMouseOver={handleOnHover}\n >\n {pageNumber}\n </StyledButton>\n )\n}\n","import { Ellypsis } from '@atom-learning/icons'\nimport React from 'react'\n\nimport { ActionIcon, Flex, Icon, Popover } from '..'\nimport { PaginationPage } from './PaginationPage'\nimport { usePagination } from './usePagination'\n\nexport const PaginationPopover = ({\n children\n}: React.PropsWithChildren<unknown>) => {\n const { pagesCount, labels } = usePagination()\n const paginationItems = Array.from(\n { length: pagesCount },\n (_, index) => index + 1\n )\n\n const [isOpen, setIsOpen] = React.useState<boolean>(false)\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen} defaultOpen={false}>\n <Popover.Trigger asChild>\n {children || (\n <ActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n label={labels?.popoverTriggerLabel || 'Open pagination popover'}\n data-testid=\"pagination_popover_trigger\"\n >\n <Icon is={Ellypsis} />\n </ActionIcon>\n )}\n </Popover.Trigger>\n <Popover.Content size=\"md\" showCloseButton={false} css={{ p: 0 }}>\n <Flex\n css={{\n p: '$4',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '$1',\n justifyContent: 'center'\n }}\n >\n {paginationItems?.map((pageNumber) => {\n return (\n <PaginationPage\n key={pageNumber}\n pageNumber={pageNumber}\n onClick={() => setIsOpen(false)}\n />\n )\n })}\n </Flex>\n </Popover.Content>\n </Popover>\n )\n}\n","import { ChevronLeft } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { usePagination } from './usePagination'\n\nconst StyledActionIcon = styled(ActionIcon, {\n mr: '$1',\n '&:disabled': {\n opacity: '0.3'\n }\n})\n\nexport const PaginationPreviousButton = (\n props: Partial<React.ComponentProps<typeof StyledActionIcon>>\n) => {\n const { goToPreviousPage, labels, previousAvailablePage } = usePagination()\n\n const isDisabled = !previousAvailablePage\n\n return (\n <StyledActionIcon\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n onClick={goToPreviousPage}\n disabled={isDisabled}\n {...props}\n label={labels?.previousPageButtonLabel || 'Previous page'}\n >\n <Icon is={ChevronLeft} />\n </StyledActionIcon>\n )\n}\n","import * as React from 'react'\n\nimport {\n GO_TO_NEXT_PAGE,\n GO_TO_PREVIOUS_PAGE,\n VIEW_ALL_POPOVER\n} from './pagination.constants'\nimport { PaginationNextButton } from './PaginationNextButton'\nimport { PaginationPage } from './PaginationPage'\nimport { PaginationPopover } from './PaginationPopover'\nimport { PaginationPreviousButton } from './PaginationPreviousButton'\nimport { usePagination } from './usePagination'\n\nexport const PaginationItems = (): JSX.Element => {\n const { paginationItems } = usePagination()\n\n return (\n <>\n {paginationItems.map((paginationItem, i) => {\n switch (paginationItem) {\n case VIEW_ALL_POPOVER:\n return <PaginationPopover key={paginationItem + i} />\n case GO_TO_PREVIOUS_PAGE:\n return <PaginationPreviousButton key={paginationItem} />\n case GO_TO_NEXT_PAGE:\n return <PaginationNextButton key={paginationItem} />\n default:\n return (\n <PaginationPage\n key={paginationItem}\n pageNumber={paginationItem}\n />\n )\n }\n })}\n </>\n )\n}\n","import * as React from 'react'\n\nimport { ColorScheme } from '../../experiments/color-scheme'\nimport { Flex } from '../flex'\nimport { VisibleElementsAmount } from './pagination.constants'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { PaginationItems } from './PaginationItems'\nimport { PaginationPopover } from './PaginationPopover'\nimport type { PaginationProps, PaginationProviderProps } from './types'\n\nconst PaginationComponent = ({\n colorScheme,\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount = VisibleElementsAmount.LESS,\n pagesCount,\n indicatedPages = [],\n disabledPages = [],\n onItemHover = () => null,\n labels = {},\n children,\n ...rest\n}: PaginationProps) => {\n if (!pagesCount) return null\n\n const paginationProviderProps: PaginationProviderProps = {\n onSelectedPageChange,\n selectedPage,\n visibleElementsCount,\n pagesCount,\n indicatedPages,\n disabledPages,\n onItemHover,\n labels\n }\n\n return (\n <PaginationProvider {...paginationProviderProps}>\n <ColorScheme base=\"grey1\" accent=\"primary1\" {...colorScheme} asChild>\n <Flex gap={1} {...rest}>\n {children || <PaginationItems />}\n </Flex>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n fontVariantNumeric: 'tabular-nums',\n flexWrap: 'wrap',\n width: '100%',\n gap: '$4',\n mt: '$4',\n '@md': {\n flexDirection: 'row'\n }\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n","import { DataTableBody } from './DataTableBody'\nimport { DataTableBulkActions } from './DataTableBulkActions'\nimport { DataTableBulkActionsFloating } from './DataTableBulkActionsFloating'\nimport { DataTableProvider } from './DataTableContext'\nimport { DataTableDataCell } from './DataTableDataCell'\nimport { DataTableEmptyState } from './DataTableEmptyState'\nimport { DataTableError } from './DataTableError'\nimport { DataTableGlobalFilter } from './DataTableGlobalFilter'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableHeaderCell } from './DataTableHeaderCell'\nimport { DataTableLoading } from './DataTableLoading'\nimport { DataTableMetaData } from './DataTableMetaData'\nimport { DataTableRow } from './DataTableRow'\nimport { DataTableRowSelectionCheckbox } from './DataTableRowSelectionCheckbox'\nimport { DataTableSelectAllRowsCheckbox } from './DataTableSelectAllRowsCheckbox'\nimport { DataTableTable } from './DataTableTable'\nimport { DragAndDropTable } from './drag-and-drop'\nimport { Pagination } from './pagination'\n\n/** Context provider for DataTable state and logic.\n *\n * Children can call `useDataTable` to access everything provided by `@tanstack/react-table` plus\n * the functionality we've built on top.\n */\nexport const DataTable = Object.assign(DataTableProvider, {\n /** Default table body implementation for `DataTable`.\n *\n * Can be configured with alternating colours of rows. If you need more customisation options,\n * you can build your own implementation with `useDataTable()` and the UI-only `Table` components.\n */\n Body: DataTableBody,\n\n /** Default table data cell implementation for `DataTable`\n *\n *\n */\n DataCell: DataTableDataCell,\n\n /**\n * Used in place of `DataTable.Table` to render a table with rows that the user can sort by drag-and-drop\n */\n DragAndDropTable: DragAndDropTable,\n\n /** Default global search implementation for `DataTable`\n *\n * If you need more customisation options, you can compose your own implementation with our UI-only input components and `useDataTable`.\n */\n GlobalFilter: DataTableGlobalFilter,\n\n /** Default table head implementation\n *\n * Can be configured to be sortable and with different visual themes.\n * If you need more customisation options, you can build your own implementation\n * with `useDataTable` and the UI-only `Table` components.\n */\n Head: DataTableHead,\n\n /** Default header implementation for `DataTable`\n *\n * Can be configured to make the column sortable. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n HeaderCell: DataTableHeaderCell,\n\n /** Default pagination implementation for `DataTable`\n *\n * Can navigate forward, backward, or to any specific page. If you need more customisation options,\n * you can build your own implementation with `useDataTable` and other UI components.\n *\n */\n MetaData: DataTableMetaData,\n\n /** Default display of amount of items and current sorting status for 'DataTable'\n *\n */\n Pagination: Pagination,\n\n /** Default row implementation for `DataTable`\n *\n * Renders all visible cells as `Table.Cell`. If you need more customisation options,\n * you can build your own implementation with the UI-only `Table` components.\n */\n Row: DataTableRow,\n\n /** Default table implementation for `DataTable`.\n *\n * Can be configured with sortable columns and different visual themes.\n *\n * If you need more customisation options, you can compose your own implementation with\n * lower-level `DataTable` components or build the whole thing from\n * scratch with `useDataTable` and the UI-only `Table` components.\n *\n */\n Table: DataTableTable,\n\n /** Default loading implementation for remote data\n *\n * Renders a loading component while fetching the paginated data using `getAsyncData`.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState`\n * can be retrieved from `useDataTable`\n */\n Loading: DataTableLoading,\n\n /** Default error implementation for remote data\n *\n * Renders an error component when `getAsyncData` promise rejects.\n * Children are rendered as a function, it exposes a `runAsyncData` function to the children component.\n * `runAsyncData()` can be used to retry fetching the paginated data with the current pageIndex, pageSize\n * and sorting parameters or your own custom paginated options.\n *\n * If you need more customisation, you can compose your own implentation, `asyncDataState` and `runAsyncData()`\n * can be retrieved from `useDataTable`\n *\n */\n Error: DataTableError,\n\n /** Empty state implementation for `DataTable`.\n *\n * Extends the EmptyState component\n */\n EmptyState: DataTableEmptyState,\n\n /** Select all rows checkbox.\n *\n * Renders a checkbox on the header, allowing for bulk selection/deselection of all selectable rows\n */\n SelectAllRowsCheckbox: DataTableSelectAllRowsCheckbox,\n\n /** Individual row selection checkbox.\n *\n * Renders a checkbox on each row, allowing for individual selection/deselection of any selectable row\n */\n RowSelectionCheckbox: DataTableRowSelectionCheckbox,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActions: DataTableBulkActions,\n\n /** Bulk actions for selected rows.\n *\n * Renders a toolbar with actions that can be applied to all selected rows\n */\n BulkActionsFloating: DataTableBulkActionsFloating\n})\n","export const monthNamesShort = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n\nexport const weekdayNamesShort = [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n]\n\nexport const DEFAULT_LABELS = {\n open: 'Open calendar',\n next: 'Next month',\n previous: 'Previous month',\n nextYear: 'Next year',\n previousYear: 'Previous year'\n}\n","import { styled } from '~/stitches'\n\nexport const Day = styled('button', {\n bg: 'transparent',\n border: 'none',\n borderRadius: '$round',\n color: '$grey900',\n cursor: 'pointer',\n fontFamily: '$body',\n fontSize: '$sm',\n size: '$3',\n p: 0,\n transition: 'all 75ms',\n '&:hover': {\n bg: '$grey200'\n },\n '&:active': {\n color: 'white',\n bg: '$primary800'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: '0.3',\n cursor: 'default'\n },\n variants: {\n isSelected: {\n true: {\n bg: '$primary800',\n color: 'white',\n '&:hover': { bg: '$primary800' }\n }\n },\n isToday: {\n true: { bg: '$grey200' }\n },\n isOutsideMonth: {\n true: { color: '$grey600' }\n }\n }\n})\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport { useDayzed } from 'dayzed'\nimport * as React from 'react'\n\nimport { ActionIcon } from '~/components/action-icon'\nimport { Box } from '~/components/box'\nimport { Button } from '~/components/button'\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { Text } from '~/components/text'\nimport type { CSS } from '~/stitches'\nimport { styled } from '~/stitches'\n\nimport { DEFAULT_LABELS, monthNamesShort, weekdayNamesShort } from './constants'\nimport { Day } from './Day'\n\nconst Grid = styled('div', {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gridGap: '$1 $2'\n})\n\nconst StyledButton = styled(Button, {\n color: '$grey1000',\n p: '$3',\n width: '$6',\n variants: {\n selected: {\n false: {\n color: '$grey1000 !important',\n fontWeight: 400,\n '&:hover': {\n bg: '$grey200 !important',\n color: '$grey1000 !important'\n },\n '&[disabled]': { bg: 'white !important' }\n }\n }\n }\n})\n\nexport type CalendarTranslationProps = {\n monthNames?: string[]\n weekdayNames?: string[]\n labels?: {\n open: string\n next: string\n previous: string\n nextYear: string\n previousYear: string\n }\n}\n\ntype CalendarProps = DayzedInterface &\n CalendarTranslationProps & {\n css?: CSS\n refDateToday?: React.RefObject<HTMLButtonElement>\n refDateSelected?: React.RefObject<HTMLButtonElement>\n setYear: (date: Date) => Promise<void>\n }\n\nconst offsetWeekdayNames = (\n weekdayNames: string[],\n firstDayOfWeek: number\n): string[] => {\n const start = weekdayNames.slice(0, firstDayOfWeek)\n const end = weekdayNames.slice(firstDayOfWeek)\n return end.concat(start)\n}\n\nexport const Calendar = ({\n css,\n refDateSelected,\n refDateToday,\n firstDayOfWeek = 0,\n monthNames = monthNamesShort,\n weekdayNames = weekdayNamesShort,\n labels = DEFAULT_LABELS,\n date = new Date(),\n minDate,\n maxDate,\n setYear,\n ...remainingProps\n}: CalendarProps) => {\n const [showYears, setShowYears] = React.useState<boolean>(false)\n const [currentYear, setCurrentYear] = React.useState<number>(\n date?.getFullYear()\n )\n\n const handleSetYear = (year: number): void => {\n const newDate = date\n newDate.setFullYear(year)\n setYear(newDate)\n setShowYears(false)\n }\n\n const isAtMinYear = minDate && currentYear - 16 <= minDate.getFullYear()\n const isAtMaxYear = maxDate && currentYear >= maxDate.getFullYear()\n\n const yearList = Array.from({ length: 16 }, (_, i) => {\n const year = currentYear - i\n if (\n (maxDate && year > maxDate.getFullYear()) ||\n (minDate && year < minDate.getFullYear())\n )\n return 0\n return year\n })\n\n const { calendars, getBackProps, getForwardProps, getDateProps } = useDayzed({\n firstDayOfWeek,\n showOutsideDays: true,\n date,\n minDate,\n maxDate,\n ...remainingProps\n })\n\n if (!calendars.length) return null\n\n return (\n <Box\n css={{ position: 'relative', width: 'min-content', mt: '-$1', ...css }}\n >\n <Flex css={{ position: 'absolute', top: 0, right: '-$1' }}>\n <ActionIcon\n label={labels[showYears ? 'previousYear' : 'previous']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getBackProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear - 16)\n })}\n disabled={showYears && isAtMinYear}\n >\n <Icon is={ChevronLeft} />\n </ActionIcon>\n <ActionIcon\n label={labels[showYears ? 'nextYear' : 'next']}\n theme=\"neutral\"\n size=\"md\"\n {...(!showYears && getForwardProps({ calendars }))}\n {...(showYears && {\n onClick: () => setCurrentYear(currentYear + 16)\n })}\n disabled={showYears && isAtMaxYear}\n >\n <Icon is={ChevronRight} />\n </ActionIcon>\n </Flex>\n {showYears && (\n <Grid\n css={{\n gridTemplateColumns: 'repeat(4, 1fr)',\n pt: '$7',\n direction: 'rtl',\n gridGap: '$3 $1'\n }}\n >\n {yearList.map((year, i) => {\n const isCurrentYear = year === date.getFullYear()\n if (!year)\n return <Box key={i} css={{ width: '$6', height: '$4' }} />\n\n return (\n <StyledButton\n key={`${year}${i}`}\n theme={isCurrentYear ? 'primary' : 'neutral'}\n onClick={() => handleSetYear(year)}\n selected={isCurrentYear}\n >\n {year}\n </StyledButton>\n )\n })}\n </Grid>\n )}\n {!showYears &&\n calendars.map(({ month, year, weeks }) => (\n <Box key={`${month}${year}`}>\n <Flex css={{ height: '$4', alignItems: 'center', mb: '$4' }}>\n <Button\n theme=\"neutral\"\n css={{ px: '0', color: '$grey1000' }}\n onClick={() => setShowYears(true)}\n >\n {monthNames[month]} {year}\n </Button>\n </Flex>\n <Grid css={{ mb: '$3' }}>\n {offsetWeekdayNames(weekdayNames, firstDayOfWeek).map(\n (weekday) => (\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"bold\"\n key={`${month}${year}${weekday}`}\n css={{ textAlign: 'center' }}\n >\n {weekday}\n </Text>\n )\n )}\n </Grid>\n <Grid>\n {weeks.map((week, weekIndex) =>\n week.map((dateObj, index) => {\n const key = `${month}${year}${weekIndex}${index}`\n\n if (!dateObj) return <div key={key} />\n\n const { date, selected, today, prevMonth, nextMonth } =\n dateObj\n\n return (\n <Day\n isOutsideMonth={prevMonth || nextMonth}\n isSelected={selected}\n isToday={today}\n key={key}\n ref={\n selected ? refDateSelected : today ? refDateToday : null\n }\n {...getDateProps({ dateObj })}\n type=\"button\"\n >\n {date.getDate()}\n </Day>\n )\n })\n )}\n </Grid>\n </Box>\n ))}\n </Box>\n )\n}\n\nCalendar.displayName = 'Calendar'\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Arrow, Close, Content } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { 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: 10,\n '@allowMotion': {\n animationDuration: '75ms',\n animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': {\n '&[data-side=\"top\"]': { animationName: slideDownAndFade },\n '&[data-side=\"right\"]': { animationName: slideLeftAndFade },\n '&[data-side=\"bottom\"]': { animationName: slideUpAndFade },\n '&[data-side=\"left\"]': { animationName: slideRightAndFade }\n }\n },\n variants: {\n size: {\n sm: { maxWidth: '200px' },\n md: { maxWidth: '400px' },\n lg: { maxWidth: '600px' }\n }\n }\n})\n\nconst StyledArrow = styled(Arrow, {\n fill: 'white',\n zIndex: 1,\n '[data-align=\"end\"] &': { mr: '$sizes$2' },\n '[data-align=\"start\"] &': { ml: '$sizes$2' }\n})\n\ntype PopoverContentProps = React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Content> & {\n closePopoverText?: string\n showCloseButton?: boolean\n }\n\nexport const PopoverContent = ({\n children,\n side = 'top',\n sideOffset = 8,\n closePopoverText = 'Close popover',\n showCloseButton = true,\n size = 'md',\n ...remainingProps\n}: PopoverContentProps) => (\n <StyledContent\n size={size}\n side={side}\n sideOffset={sideOffset}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$0', top: '$0' }}\n label={closePopoverText}\n size=\"md\"\n hasTooltip={false}\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {children}\n <StyledArrow width={16} height={8} />\n </StyledContent>\n)\n","import { Portal, Root, Trigger } from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { PopoverContent } from './PopoverContent'\n\nconst StyledRoot = styled(Root, {})\n\nexport const Popover = Object.assign(StyledRoot, {\n Content: PopoverContent,\n Portal: Portal,\n Trigger: Trigger\n})\n\nStyledRoot.displayName = 'Popover'\n","export const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'\n","import { CalendarEvent } from '@atom-learning/icons'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport type { Props as DayzedInterface } from 'dayzed'\nimport * as React from 'react'\n\nimport { getFieldIconSize } from '~/utilities'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Box } from '../box/Box'\nimport { Calendar, CalendarTranslationProps } from '../calendar/Calendar'\nimport { DEFAULT_LABELS } from '../calendar/constants'\nimport { Icon } from '../icon/Icon'\nimport { Input } from '../input/Input'\nimport { Popover } from '../popover/Popover'\nimport { DEFAULT_DATE_FORMAT } from './constants'\ndayjs.extend(customParseFormat)\n\nexport type DateInputProps = Omit<DayzedInterface, 'onDateSelected'> &\n CalendarTranslationProps & {\n initialDate?: Date\n dateFormat?: string\n disabled?: boolean\n size?: 'sm' | 'md' | 'lg'\n revalidate?: () => Promise<boolean>\n onChange?: (value?: Date) => void\n }\n\nconst formatDateToString = (date?: Date, dateFormat = DEFAULT_DATE_FORMAT) =>\n date ? dayjs(date).format(dateFormat) : ''\n\nexport const DateInput: React.ForwardRefExoticComponent<DateInputProps> =\n React.forwardRef(\n (\n {\n initialDate,\n dateFormat = DEFAULT_DATE_FORMAT,\n firstDayOfWeek = 1,\n disabled,\n monthNames,\n weekdayNames,\n size = 'md',\n labels,\n revalidate,\n onChange,\n minDate,\n maxDate,\n ...remainingProps\n },\n ref\n ) => {\n const [date, setDate] = React.useState(\n initialDate ? dayjs(initialDate).toDate() : undefined\n )\n\n const [inputElRef, setInputElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => inputElRef as HTMLInputElement)\n\n const dateString = formatDateToString(date, dateFormat)\n\n const handleInputChange = React.useCallback(\n (event) => {\n const newDateString = event.target.value\n const parsedInputDate = dayjs(newDateString, dateFormat)\n const newDate = parsedInputDate.isValid()\n ? parsedInputDate.toDate()\n : undefined\n setDate(newDate)\n onChange?.(newDate)\n },\n [dateFormat, onChange]\n )\n\n const handleCalendarChange = React.useCallback(\n (newDate) => {\n setDate(newDate)\n\n const mirrorChangeToInputElement = () => {\n if (!inputElRef) return\n\n // Call the `set` function on the input value directly to mirror the change.\n // Props to: https://stackoverflow.com/a/46012210\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(\n inputElRef,\n formatDateToString(newDate, dateFormat)\n )\n const event = new Event('input', { bubbles: true })\n inputElRef.dispatchEvent(event)\n }\n mirrorChangeToInputElement()\n },\n [dateFormat, inputElRef]\n )\n\n const updatedLabels = {\n ...DEFAULT_LABELS,\n ...labels\n }\n\n const [calendarOpen, setCalendarOpen] = React.useState(false)\n\n const refDateToday = React.useRef<HTMLButtonElement>(null)\n const refDateSelected = React.useRef<HTMLButtonElement>(null)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n return (\n <Box css={{ position: 'relative', height: 'max-content' }}>\n <Input\n name=\"date\"\n disabled={disabled}\n size={size}\n {...remainingProps}\n onChange={handleInputChange}\n ref={setInputElRef}\n defaultValue={dateString}\n />\n <Popover modal open={calendarOpen} onOpenChange={setCalendarOpen}>\n <Popover.Trigger asChild>\n <ActionIcon\n css={{\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n right: '0'\n }}\n disabled={disabled}\n label={updatedLabels.open}\n size={iconSize}\n theme=\"neutral\"\n hasTooltip={false}\n >\n <Icon is={CalendarEvent} />\n </ActionIcon>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n css={{ pr: '$sizes$2', zIndex: 1147483646 }}\n side=\"bottom\"\n align=\"end\"\n showCloseButton={false}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n if (date) {\n refDateSelected.current?.focus()\n } else {\n refDateToday.current?.focus()\n }\n }}\n >\n <Calendar\n date={date || new Date()}\n selected={date}\n onDateSelected={async (date) => {\n setCalendarOpen(false)\n await handleCalendarChange(date.date)\n if (revalidate) revalidate()\n }}\n setYear={async (date) => {\n await handleCalendarChange(date)\n if (revalidate) revalidate()\n }}\n minDate={minDate}\n maxDate={maxDate}\n refDateToday={refDateToday}\n refDateSelected={refDateSelected}\n firstDayOfWeek={firstDayOfWeek}\n monthNames={monthNames}\n weekdayNames={weekdayNames}\n labels={updatedLabels}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover>\n </Box>\n )\n }\n )\n\nDateInput.displayName = 'DateInput'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport { DateInput, DateInputProps } from '~/components/date-input'\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError } from '~/components/form'\n\ntype DateFieldProps = DateInputProps & FieldElementWrapperProps\n\nexport const DateField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: DateFieldProps) => {\n const { register, trigger } = useFormContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={appearance}\n >\n <DateInput\n id={name}\n name={name}\n ref={ref}\n appearance={appearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n revalidate={trigger}\n />\n </FieldWrapper>\n )\n}\n\nDateField.displayName = 'DateField'\n","import { styled } from '~/stitches'\n\nimport { Box } from '../box'\n\nexport const DialogBackground = styled(Box, { width: '100vw', height: '100vh' })\n","import { Close } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DialogClose = styled(Close, {})\n","import { fadeIn, fadeOut } from '~/utilities'\n\nexport const backdropOverlay = {\n backgroundColor: '$alpha600',\n position: 'fixed',\n inset: 0,\n zIndex: 1147483646,\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${fadeIn} 250ms ease-out`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 550ms ease-out`\n }\n }\n}\n","import { Close as CloseIcon } from '@atom-learning/icons'\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'\nimport * as React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { DialogBackground } from './DialogBackground'\n\nconst contentOnScreen = 'translate3d(-50%, -50%, 0)'\nconst contentOffScreen = 'translate3d(-50%, 50vh, 0)'\nconst modalOverlayId = 'modal_overlay'\n\nconst slideIn = keyframes({\n '0%': { transform: contentOffScreen },\n '100%': { transform: contentOnScreen }\n})\nconst slideOut = keyframes({\n '0%': { transform: contentOnScreen },\n '100%': { transform: contentOffScreen }\n})\n\nconst StyledDialogOverlay = styled(Overlay, backdropOverlay)\n\nconst sizeReset = {\n width: 'auto',\n height: 'auto',\n maxWidth: 'auto',\n maxHeight: 'auto',\n '@supports (height: 100svh)': {\n height: 'auto',\n maxHeight: 'auto'\n }\n}\nconst StyledDialogContent = styled(Content, {\n bg: 'white',\n boxShadow: '$3',\n boxSizing: 'border-box',\n left: '50%',\n maxWidth: '90vw',\n maxHeight: '90vh',\n overflowY: 'auto',\n p: '$5',\n position: 'fixed',\n top: '50%',\n transform: contentOnScreen,\n zIndex: 1147483646,\n '&:focus': {\n outline: 'none'\n },\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${slideIn} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideOut} 550ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n variants: {\n size: {\n xs: {\n ...sizeReset,\n borderRadius: '$1',\n width: '380px'\n },\n sm: {\n ...sizeReset,\n borderRadius: '$1',\n width: '480px'\n },\n md: {\n ...sizeReset,\n borderRadius: '$1',\n width: '600px'\n },\n lg: {\n ...sizeReset,\n borderRadius: '$1',\n width: '800px'\n },\n xl: {\n ...sizeReset,\n borderRadius: '$1',\n width: '1100px'\n },\n fullscreen: {\n width: '100vw',\n height: '100vh',\n maxWidth: '100vw',\n maxHeight: '100vh',\n '@supports (height: 100svh)': {\n height: '100svh',\n maxHeight: '100svh'\n }\n }\n }\n }\n})\n\ntype DialogContentProps = React.ComponentProps<typeof StyledDialogContent> & {\n closeDialogText?: string\n showCloseButton?: boolean\n}\n\nexport const DialogContent = ({\n size = 'sm',\n children,\n closeDialogText = 'Close dialog',\n showCloseButton = true,\n ...remainingProps\n}: DialogContentProps) => (\n <Portal>\n <StyledDialogOverlay id={modalOverlayId}>\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type === DialogBackground && child\n )}\n <StyledDialogContent\n size={size}\n aria-label=\"Dialog\"\n onPointerDownOutside={(event) => {\n const element = event.target as HTMLElement\n if (element?.id !== modalOverlayId) {\n event.preventDefault()\n }\n }}\n {...remainingProps}\n >\n {showCloseButton && (\n <ActionIcon\n as={Close}\n css={{ position: 'absolute', right: '$4', top: '$4', size: '$5' }}\n label={closeDialogText}\n hasTooltip={false}\n size=\"md\"\n theme=\"neutral\"\n >\n <Icon is={CloseIcon} />\n </ActionIcon>\n )}\n {React.Children.map(\n children,\n (child?: React.ReactElement) =>\n child?.type !== DialogBackground && child\n )}\n </StyledDialogContent>\n </StyledDialogOverlay>\n </Portal>\n)\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\n\nexport const DialogFooter = ({\n css,\n ...props\n}: React.ComponentProps<typeof Flex>) => (\n <Flex justify=\"end\" gap={3} css={{ pt: '$4', ...css }} {...props} />\n)\n","import * as React from 'react'\n\nimport { Heading } from '../heading'\n\nexport const DialogHeading = ({\n css,\n ...props\n}: React.ComponentProps<typeof Heading>) => (\n <Heading\n size=\"sm\"\n css={{\n borderBottom: '1px solid $grey200',\n p: `0 $5 $5 $5`,\n mb: '$5',\n mx: '-$5',\n boxSizing: 'content-box',\n ...css\n }}\n {...props}\n />\n)\n","import { Description, Root, Title, Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nimport { DialogBackground } from './DialogBackground'\nimport { DialogClose } from './DialogClose'\nimport { DialogContent } from './DialogContent'\nimport { DialogFooter } from './DialogFooter'\nimport { DialogHeading } from './DialogHeading'\n\nconst StyledDialog = styled(Root, {})\n\nexport const Dialog = Object.assign(StyledDialog, {\n Background: DialogBackground,\n Close: DialogClose,\n Content: DialogContent,\n Heading: DialogHeading,\n Footer: DialogFooter,\n\n Description: Description,\n Title: Title,\n Trigger: Trigger\n})\n\nDialog.displayName = 'Dialog'\n","import * as React from 'react'\n\nimport { StyledContent } from './DrawerContent'\n\ntype TDrawerProviderProps = {\n position?: React.ComponentProps<typeof StyledContent>['position']\n}\n\ntype TDrawerContext = TDrawerProviderProps\n\nexport const DrawerContext = React.createContext<TDrawerContext>({\n position: 'left'\n})\n\nexport const DrawerProvider = ({\n position = 'left',\n ...rest\n}: React.PropsWithChildren<TDrawerProviderProps>): JSX.Element => {\n const value = React.useMemo<TDrawerContext>(() => ({ position }), [position])\n return <DrawerContext.Provider value={value} {...rest} />\n}\n","import { Close } from '@atom-learning/icons'\nimport { Close as DialogClose } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\n\nexport const DrawerClose = (\n props: Omit<React.ComponentProps<typeof ActionIcon>, 'children'>\n) => (\n <DialogClose asChild>\n <ActionIcon\n theme=\"neutral\"\n appearance=\"simple\"\n size=\"md\"\n hasTooltip={false}\n {...props}\n >\n <Icon is={Close} />\n </ActionIcon>\n </DialogClose>\n)\n","import { Overlay } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\nimport { backdropOverlay } from '~/utilities/style/backdrop-overlay'\n\nexport const DrawerOverlay = styled(Overlay, backdropOverlay)\n","import { Content, Portal } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { ColorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { slideInOut } from '~/utilities'\n\nimport { DrawerContext } from './Drawer.context'\nimport { DrawerOverlay } from './DrawerOverlay'\n\nconst animationTop = slideInOut({ outPosition: { x: 0, y: '-100%' } })\nconst animationRight = slideInOut({ outPosition: { x: '100%', y: 0 } })\nconst animationBottom = slideInOut({ outPosition: { x: 0, y: '100%' } })\nconst animationLeft = slideInOut({ outPosition: { x: '-100%', y: 0 } })\nconst setupAnimation = (animation: ReturnType<typeof slideInOut>) => {\n return {\n '&[data-state=\"open\"]': {\n animationName: animation.in\n },\n '&[data-state=\"closed\"]': {\n animationName: animation.out\n }\n }\n}\n\nconst positionY = {\n left: 0,\n width: '100%',\n maxHeight: '85%'\n}\n\nconst positionX = {\n top: 0,\n height: '100%',\n width: 'var(--drawer-content-width, 100%)',\n maxWidth: '100%'\n}\n\nexport const StyledContent = styled(Content, {\n bg: '$base1',\n boxShadow: '$2',\n position: 'fixed',\n zIndex: 1147483646,\n '@allowMotion': {\n animationTimingFunction: 'ease-out',\n animationDuration: '250ms'\n },\n variants: {\n position: {\n top: {\n top: 0,\n ...positionY,\n ...setupAnimation(animationTop)\n },\n right: {\n right: 0,\n ...positionX,\n ...setupAnimation(animationRight)\n },\n bottom: {\n bottom: 0,\n ...positionY,\n ...setupAnimation(animationBottom)\n },\n left: {\n left: 0,\n ...positionX,\n ...setupAnimation(animationLeft)\n }\n },\n size: {\n xs: {\n '--drawer-content-width': '240px'\n },\n sm: {\n '--drawer-content-width': '256px'\n },\n md: {\n '--drawer-content-width': '288px'\n },\n lg: {\n '--drawer-content-width': '304px'\n },\n xl: {\n '--drawer-content-width': '320px'\n },\n '2xl': {\n '--drawer-content-width': '720px'\n },\n '3xl': {\n '--drawer-content-width': '1000px'\n }\n }\n }\n})\n\nexport const DrawerContent = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledContent>) => {\n const { position } = React.useContext(DrawerContext)\n\n return (\n <Portal>\n <DrawerOverlay />\n <ColorScheme base=\"grey1\" accent=\"primary1\" asChild>\n <StyledContent size=\"lg\" position={position} {...rest} asChild>\n <Flex direction=\"column\">{children}</Flex>\n </StyledContent>\n </ColorScheme>\n </Portal>\n )\n}\n","import { styled } from '~/stitches'\n\nexport const DrawerFooter = styled('div', {\n p: '$4',\n width: '100%',\n borderTop: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nexport const DrawerHeader = styled('div', {\n p: '$4',\n width: '100%',\n minHeight: '$6', // At least the height of the TopBar\n borderBottom: '1px solid $base3'\n})\n","import { styled } from '~/stitches'\n\nexport const DrawerMain = styled('div', {\n p: '$4',\n width: '100%',\n flexGrow: 1,\n overflowY: 'auto'\n})\n","import { Trigger } from '@radix-ui/react-dialog'\n\nimport { styled } from '~/stitches'\n\nexport const DrawerTrigger = styled(Trigger, {})\n","import { Root } from '@radix-ui/react-dialog'\nimport React from 'react'\n\nimport { DrawerProvider } from './Drawer.context'\nimport { DrawerClose } from './DrawerClose'\nimport { DrawerContent } from './DrawerContent'\nimport { DrawerFooter } from './DrawerFooter'\nimport { DrawerHeader } from './DrawerHeader'\nimport { DrawerMain } from './DrawerMain'\nimport { DrawerTrigger } from './DrawerTrigger'\n\ntype TDrawerProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof DrawerProvider>\n\nexport const Drawer = ({\n children,\n position,\n ...rest\n}: TDrawerProps): JSX.Element => {\n return (\n <DrawerProvider position={position}>\n <Root {...rest}>{children}</Root>\n </DrawerProvider>\n )\n}\n\nDrawer.Close = DrawerClose\nDrawer.Content = DrawerContent\nDrawer.Main = DrawerMain\nDrawer.Header = DrawerHeader\nDrawer.Footer = DrawerFooter\nDrawer.Trigger = DrawerTrigger\n","import { Content } from '@radix-ui/react-dropdown-menu'\n\nimport { 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: 10,\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: '$grey1000',\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 opacity: 0.3,\n cursor: 'not-allowed',\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: '$primary900',\n outline: 'none'\n },\n '&:hover': { textDecoration: 'underline' }\n}\n\nexport const DropdownMenuItem = styled(Item, itemStyles)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { DropdownMenuItem } from './DropdownMenuItem'\n\nconst StyledLink = styled('a', {\n textDecoration: 'none'\n})\n\nexport const DropdownMenuLinkItem = ({\n children,\n href,\n ...props\n}: React.ComponentProps<typeof DropdownMenuItem> & { href: string }) => (\n <DropdownMenuItem {...props} asChild>\n <StyledLink href={href} role=\"menuitem\" {...getExternalAnchorProps(href)}>\n {children}\n </StyledLink>\n </DropdownMenuItem>\n)\n","import { Separator } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuSeparator = styled(Separator, {\n height: '1px',\n backgroundColor: '$grey600',\n my: '$2'\n})\n","import { Trigger } from '@radix-ui/react-dropdown-menu'\n\nimport { styled } from '~/stitches'\n\nexport const DropdownMenuTrigger = styled(Trigger, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n","import { Portal, Root as DropdownMenuRoot } from '@radix-ui/react-dropdown-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { DropdownMenuContent } from './DropdownMenuContent'\nimport { DropdownMenuItem } from './DropdownMenuItem'\nimport { DropdownMenuLinkItem } from './DropdownMenuLinkItem'\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator'\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger'\n\nconst Root = styled(DropdownMenuRoot, {})\n\nexport const DropdownMenu = Object.assign(Root, {\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n Portal: Portal,\n Separator: DropdownMenuSeparator,\n Trigger: DropdownMenuTrigger\n})\n","import { Upload } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\nexport type FileInputProps = React.ComponentProps<typeof Button> & {\n onFileSelect: (selection: FileList | null) => void\n accept?: string\n multiple?: boolean\n}\n\nexport const FileInput = ({\n accept,\n children,\n multiple = false,\n onFileSelect,\n ...rest\n}: FileInputProps) => {\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target\n\n onFileSelect(files)\n }\n\n return (\n <Button as=\"label\" {...rest}>\n <Icon is={Upload} />\n {children}\n <input\n type=\"file\"\n onChange={handleFileSelect}\n accept={accept}\n multiple={multiple}\n hidden\n />\n </Button>\n )\n}\n\nFileInput.displayName = 'FileInput'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst GridContainer = styled('div', {\n display: 'grid',\n variants: {\n gap: {\n '0': { gap: '$space$0' },\n '1': { gap: '$space$1' },\n '2': { gap: '$space$2' },\n '3': { gap: '$space$3' },\n '4': { gap: '$space$4' },\n '24': { gap: '$space$24' },\n '5': { gap: '$space$5' },\n '6': { gap: '$space$6' },\n '7': { gap: '$space$7' },\n '8': { gap: '$space$8' },\n '9': { gap: '$space$9' }\n }\n }\n})\n\ntype GridProps = React.ComponentProps<typeof GridContainer> & {\n minItemSize?: string\n maxItemSize?: string\n} & {\n as?: any\n} // (!) `css` and `as` are both props that come from `stitches`. It would be better to figure out and export the appropriate type for them in stitches!\n\nexport const Grid = ({\n css,\n style,\n gap = 2,\n minItemSize,\n maxItemSize = '1fr',\n ...remainingProps\n}: GridProps) => (\n <GridContainer\n style={{\n ...style,\n '--min-item-size': minItemSize,\n '--max-item-size': maxItemSize\n }}\n css={{\n ...(minItemSize && {\n gridTemplateColumns: `repeat(auto-fit, minmax(var(--min-item-size), var(--max-item-size)))`\n }),\n ...css\n }}\n gap={gap}\n {...remainingProps}\n />\n)\n\nGrid.displayName = 'Grid'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Input, InputProps } from '~/components/input'\n\ntype InputFieldProps = InputProps & FieldElementWrapperProps\n\nexport const InputField = ({\n css,\n label,\n name,\n validation,\n prompt,\n description,\n hideLabel,\n appearance,\n ...remainingProps\n}: InputFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Input\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nInputField.displayName = 'InputField'\n","import * 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 '& > li': {\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 '& > li': {\n pl: '$1',\n '&::marker': { fontSize: '.875em', fontWeight: 'bold' }\n }\n },\n ul: {\n pl: '$3',\n '& > li': {\n pl: '$2',\n '&::marker': { content: '• ', fontWeight: 'bold' }\n }\n }\n },\n theme: {\n primary: {\n '& > li': {\n '&::marker': { color: '$primary800' }\n }\n }\n }\n }\n})\n\ntype ListProps = React.ComponentProps<typeof StyledList> & {\n ordered?: boolean\n}\n\ntype ListType = React.ForwardRefExoticComponent<ListProps> & {\n Item: typeof StyledLi\n}\n\nexport const List = React.forwardRef(\n ({ size = 'md', noCapsize = true, ordered, ...remainingProps }, ref) => (\n <StyledList\n ref={ref}\n as={ordered ? 'ol' : 'ul'}\n size={size}\n noCapsize={noCapsize}\n {...remainingProps}\n />\n )\n) as ListType\n\nList.Item = StyledLi\n","import type { Code } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownCodeProps = {\n node: Code\n}\n\nconst StyledMarkdownCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$1',\n color: '$grey1000',\n fontFamily: '$mono',\n fontSize: '$sm',\n lineHeight: 1.4,\n my: '$4',\n p: '$3'\n})\n\nexport const MarkdownCode = ({ node }: MarkdownCodeProps) => (\n <StyledMarkdownCode as=\"pre\">{node.value}</StyledMarkdownCode>\n)\n","import type { Content, Emphasis } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownEmphasisProps = {\n node: Emphasis\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const StyledMarkdownEmphasis = styled('em', { fontStyle: 'italic' })\n\nexport const MarkdownEmphasis = ({\n node,\n handleNode\n}: MarkdownEmphasisProps) => (\n <StyledMarkdownEmphasis>\n {node.children?.map(handleNode)}\n </StyledMarkdownEmphasis>\n)\n","import type { Content, Heading as HeadingType } from 'mdast'\nimport * as React from 'react'\n\nimport { Heading, HeadingProps } from '../../heading/Heading'\n\ntype MarkdownHeadingProps = {\n node: HeadingType\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst getHeadingProps = (depth: number): HeadingProps => {\n switch (depth) {\n case 1:\n return { size: 'xl', as: 'h1' }\n case 2:\n return { size: 'lg', as: 'h2' }\n case 3:\n return { size: 'md', as: 'h3' }\n case 4:\n return { size: 'sm', as: 'h4' }\n case 5:\n return { size: 'xs', as: 'h5' }\n default:\n return { size: 'xs', as: 'h6' }\n }\n}\n\nexport const MarkdownHeading = ({\n node,\n handleNode,\n ...rest\n}: MarkdownHeadingProps) => {\n const { as, size } = getHeadingProps(node.depth)\n\n return (\n <Heading as={as} size={size} {...rest}>\n {node.children?.map(handleNode)}\n </Heading>\n )\n}\n","import type { InlineCode } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../../box/Box'\n\ntype MarkdownInlineCodeProps = {\n node: InlineCode\n}\n\nconst StyledMarkdownInlineCode = styled(Box, {\n bg: '$grey200',\n borderRadius: '$0',\n color: '$grey1000',\n display: 'inline-block',\n fontFamily: '$mono',\n fontSize: '85%',\n p: '$0 $1'\n})\n\nexport const MarkdownInlineCode = ({ node }: MarkdownInlineCodeProps) => (\n <StyledMarkdownInlineCode as=\"code\">{node.value}</StyledMarkdownInlineCode>\n)\n","import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n css?: CSS\n}\n\nexport const MarkdownImage = ({ node, css }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} css={css} />\n)\n","import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n","import type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { type CSS } from '~/stitches'\n\nimport { List } from '../../list'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n css?: CSS\n}\n\nexport const MarkdownList = ({ node, handleNode, css }: MarkdownListProps) => (\n <List\n css={{\n '& p': { display: 'inline' },\n '& p:before, & p:after': { display: 'none' },\n ...css\n }}\n ordered={node.ordered || undefined}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n","import type { Content, ListItem } from 'mdast'\nimport * as React from 'react'\n\nimport { List } from '../../list'\n\ntype MarkdownListItemProps = {\n node: ListItem\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownListItem = ({\n node,\n handleNode\n}: MarkdownListItemProps) => (\n <List.Item>{node.children?.map(handleNode)}</List.Item>\n)\n","import type { Content, Paragraph } from 'mdast'\nimport * as React from 'react'\n\nimport { Text } from '../../text'\n\ntype MarkdownParagraphProps = {\n node: Paragraph\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownParagraph = ({\n node,\n handleNode,\n ...rest\n}: MarkdownParagraphProps) => (\n <Text {...rest}>{node.children?.map(handleNode)}</Text>\n)\n","import type { Content, Strong } from 'mdast'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\ntype MarkdownStrongProps = {\n node: Strong\n handleNode: (node: Content) => React.ReactElement\n}\n\nconst StyledMarkdownStrong = styled('strong', { fontWeight: 600 })\n\nexport const MarkdownStrong = ({ node, handleNode }: MarkdownStrongProps) => (\n <StyledMarkdownStrong>{node.children?.map(handleNode)}</StyledMarkdownStrong>\n)\n","import type { Text as TextType } from 'mdast'\nimport * as React from 'react'\n\ntype MarkdownTextProps = {\n node: TextType\n}\n\nexport const MarkdownText = ({ node }: MarkdownTextProps): React.ReactNode =>\n node.value\n","import * as React from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { Divider } from '../../divider'\n\ntype MarkdownThematicBreakProps = {\n css?: CSS\n}\n\nexport const MarkdownThematicBreak = ({ css }: MarkdownThematicBreakProps) => (\n <Divider css={{ width: '100%', ...css }} />\n)\n","import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex/Flex'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n '& > h1, & > h2, & > h3, & > h4': { maxWidth: '65ch' },\n '& > p': { maxWidth: '75ch' },\n '& > ul': { maxWidth: '75ch' }\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n css\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} css={css}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n","import React from 'react'\n\ninterface NavigationMenuContextValue {\n onNodeUpdate: (\n trigger: HTMLButtonElement,\n itemValue: string\n ) => HTMLButtonElement\n}\n\nexport const NavigationMenuContext = React.createContext<\n NavigationMenuContextValue | undefined\n>(undefined)\n\nexport const useNavigationMenuContext = (): NavigationMenuContextValue => {\n const context = React.useContext(NavigationMenuContext)\n\n if (context === undefined) {\n throw new Error(\n 'useNavigationMenuContext must be used within a NavigationMenuContextProvider'\n )\n }\n\n return context\n}\n","/*\nUsed to block default radix hover to open menu behaviour\nProps: https://github.com/radix-ui/primitives/issues/1630\n*/\nexport const preventEvent = (\n event: React.PointerEvent | Event | React.SyntheticEvent\n): void => {\n const e = event as Event\n e.preventDefault()\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nconst StyledList = styled('ul', {\n listStyle: 'none',\n m: 0,\n p: 0\n})\n\nconst StyledContent = styled(NavigationMenuPrimitive.Content, {\n p: '$3',\n bg: '$dropdownBackground',\n mt: '4px',\n boxShadow: '$1',\n borderRadius: '$1'\n})\n\ntype NavigationMenuDropdownContentProps = React.ComponentProps<\n typeof StyledContent\n>\n\nexport const NavigationMenuDropdownContent = ({\n children,\n ...rest\n}: NavigationMenuDropdownContentProps) => (\n <StyledContent\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n {...rest}\n >\n <StyledList>{children}</StyledList>\n </StyledContent>\n)\n\nNavigationMenuDropdownContent.displayName = 'NavigationMenuDropdownContent'\n","export const navigationMenuDisabledItemStyles = {\n background: 'none',\n color: '$text',\n opacity: '30%',\n cursor: 'default'\n}\n\nexport const navigationMenuBaseItemStyles = {\n all: 'unset',\n position: 'relative',\n color: '$text',\n outline: 'none',\n cursor: 'pointer',\n fontFamily: '$body',\n userSelect: 'none',\n padding: '$3',\n borderRadius: '$1',\n background: '$background',\n '&:hover': { background: '$backgroundHover', color: '$textHover' },\n '&:active': {\n background: '$backgroundActive',\n color: '$textActive'\n },\n '&:focus-visible': {\n boxShadow: 'inset 0 0 0 2px $colors$primary800'\n },\n '&:disabled': {\n ...navigationMenuDisabledItemStyles\n }\n}\n\nexport const navigationMenuActiveItemStyles = {\n fontWeight: 600,\n color: '$itemTextSelected',\n '&::after': {\n backgroundColor: '$itemBackgroundSelected',\n borderRadius: '$1',\n bottom: 0,\n content: '',\n display: 'block',\n height: '2px',\n left: '50%',\n position: 'absolute',\n transform: 'translate(-50%,0)',\n width: '$2'\n }\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\n\nimport { Icon } from '../icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(\n NavigationMenuPrimitive.Trigger,\n navigationMenuBaseItemStyles,\n {\n display: 'flex',\n alignItems: 'center',\n borderRadius: '$1',\n justifyContent: 'space-between',\n '&[data-state=\"open\"]': {\n background: '$triggerBackgroundOpen'\n },\n variants: {\n active: { true: { ...navigationMenuActiveItemStyles } }\n }\n }\n)\n\nexport const NavigationMenuDropdownTrigger: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledTrigger>\n> = React.forwardRef(({ children, active, ...props }, forwardedRef) => (\n <StyledTrigger\n active={active}\n {...props}\n ref={forwardedRef}\n onPointerMove={preventEvent}\n onPointerLeave={preventEvent}\n >\n {children}\n <Icon\n is={ChevronDown}\n css={{\n ml: '$1',\n '[data-state=open] &': { transform: 'rotate(-180deg)' },\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'transform 200ms ease'\n }\n }}\n size=\"sm\"\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React, { ComponentProps, ReactElement } from 'react'\n\nimport { CSS } from '~/stitches'\n\nimport { useNavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\n\ntype NavigationMenuDropdownProps = {\n active?: boolean\n css?: CSS\n id: string\n} & React.HTMLProps<HTMLButtonElement>\n\ntype DropdownTriggerProps = ComponentProps<typeof NavigationMenuDropdownTrigger>\n\nexport const NavigationMenuDropdown = ({\n children,\n id,\n ...props\n}: NavigationMenuDropdownProps) => {\n const { onNodeUpdate } = useNavigationMenuContext()\n\n return (\n <NavigationMenuPrimitive.Item value={id}>\n {React.Children.map(children, (child) => {\n const isTrigger =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownTrigger\n const isContent =\n React.isValidElement(child) &&\n child.type === NavigationMenuDropdownContent\n\n if (!isTrigger && !isContent) {\n throw new Error(\n 'Only NavigationMenu.Trigger and NavigationMenu.Content can be the passed as a \"children\" of NavigationMenu.Dropdown'\n )\n }\n return isTrigger\n ? React.cloneElement(\n child as ReactElement<DropdownTriggerProps>,\n {\n ...props,\n ref: (node: HTMLButtonElement) => onNodeUpdate(node, id)\n } as React.PropsWithRef<DropdownTriggerProps>\n )\n : child\n })}\n </NavigationMenuPrimitive.Item>\n )\n}\n\nNavigationMenuDropdown.displayName = 'NavigationMenuDropdown'\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles,\n navigationMenuDisabledItemStyles\n} from './NavigationMenu.styles'\n\nconst DisabledButton = styled('button', {\n ...navigationMenuBaseItemStyles,\n ...navigationMenuDisabledItemStyles\n})\n\nconst ListItem = styled(NavigationMenuPrimitive.Item)\n\nconst StyledLink = styled(\n NavigationMenuPrimitive.Link,\n navigationMenuBaseItemStyles,\n {\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1,\n variants: {\n elementType: {\n dropdownItem: {\n '&[data-active]': {\n background: '$backgroundSelected',\n color: '$textSelected',\n '&:hover': {\n background: '$backgroundSelectedHover',\n color: '$textSelectedHover'\n },\n '&:active': {\n background: '$backgroundSelectedPressed',\n color: '$textSelectedPressed'\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 2px $colors$primary800',\n color: '$textSelectedFocus'\n }\n }\n },\n link: {\n '&[data-active]': { ...navigationMenuActiveItemStyles }\n }\n }\n }\n }\n)\n\nexport const NavigationMenuLink: React.ForwardRefExoticComponent<\n Omit<React.ComponentProps<typeof StyledLink>, 'elementType'> & {\n disabled?: boolean\n variant?: React.ComponentProps<typeof StyledLink>['elementType']\n }\n> = React.forwardRef(\n (\n { children, href, disabled, css, variant = 'link', ref, ...props },\n forwardedRef\n ) => (\n <ListItem>\n {disabled ? (\n <DisabledButton disabled css={css}>\n {children}\n </DisabledButton>\n ) : (\n <StyledLink\n href={href}\n ref={forwardedRef}\n elementType={variant}\n css={css}\n {...getExternalAnchorProps(href)}\n {...props}\n >\n {children}\n </StyledLink>\n )}\n </ListItem>\n )\n)\n\nNavigationMenuLink.displayName = 'NavigationMenuLink'\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nexport const NavigationMenuDropdownItem: React.ForwardRefExoticComponent<\n React.PropsWithChildren<React.ComponentProps<typeof NavigationMenuLink>>\n> = React.forwardRef((props, forwardedRef) => {\n return (\n <NavigationMenuLink ref={forwardedRef} variant=\"dropdownItem\" {...props} />\n )\n})\n\nexport const NavigationMenuDropdownItemTitle = styled(Text, {\n color: '$grey900',\n fontWeight: 600\n})\n\nNavigationMenuDropdownItem.displayName = 'NavigationMenuDropdownItem'\nNavigationMenuDropdownItemTitle.displayName = 'NavigationMenuDropdownItemTitle'\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$textSubtle',\n background: 'white',\n backgroundHover: '$grey100',\n textHover: '$grey1000',\n backgroundActive: '$grey200',\n textActive: '$grey1000',\n backgroundSelected: '$primary100',\n textSelected: '$primary800',\n textSelectedHover: '$primary800',\n textSelectedPressed: '$primary800',\n textSelectedFocus: '$primary800',\n backgroundSelectedHover: '$grey100',\n backgroundSelectedPressed: '$grey200',\n itemTextSelected: '$grey900',\n itemBackgroundSelected: '$grey900',\n triggerBackgroundOpen: '$grey200',\n dropdownBackground: 'white'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { keyframes, styled } from '~/stitches'\nimport { fadeOut } from '~/utilities/style/keyframe-animations'\n\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\nimport { colorSchemes as navigationMenuColorSchemes } from './stitches.navigationMenu.colorscheme.config'\n\nconst delayedFadeIn = keyframes({\n '0%, 50%': { opacity: 0 },\n '100%': { opacity: 1 }\n})\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n display: 'flex',\n justifyContent: 'center',\n position: 'relative'\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n all: 'unset',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '$1',\n listStyle: 'none'\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n zIndex: 2147483647\n})\n\nconst ViewportPosition = styled('div', {\n position: 'absolute',\n left: 0,\n top: '100%',\n width: '100%',\n display: 'flex',\n justifyContent: 'center'\n})\n\nconst NavigationMenuComponent = ({\n children,\n css,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), 200)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n css={css}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n css={{\n transform: `translateX(var(--navigation-menu-viewport-offset))`,\n '&[data-state=\"open\"]': {\n animation: `${delayedFadeIn} 200ms ease`\n },\n '&[data-state=\"closed\"]': {\n animation: `${fadeOut} 200ms ease-out`\n }\n }}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n","import { Item } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalItem = styled(Item, {})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the `value` prop does nothing, so removing it from typescript\n */\ntype TNavigationMenuVerticalItemProps = Omit<\n React.ComponentProps<typeof StyledNavigationMenuVerticalItem>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => <StyledNavigationMenuVerticalItem {...props} />\n","import { Root } from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { useCallbackRef } from '~/utilities/hooks/useCallbackRef'\n\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\n\ntype TNavigationMenuVerticalAccordionContextValue = {\n triggerRef?: React.MutableRefObject<HTMLElement | null>\n setTriggerRef?: (HTMLElement) => void\n}\nexport const NavigationMenuVerticalAccordionContext =\n React.createContext<TNavigationMenuVerticalAccordionContextValue>({})\nconst NavigationMenuVerticalAccordionProvider = ({ children }) => {\n const [triggerRef, setTriggerRef] = useCallbackRef()\n return (\n <NavigationMenuVerticalAccordionContext.Provider\n value={{ triggerRef, setTriggerRef }}\n >\n {children}\n </NavigationMenuVerticalAccordionContext.Provider>\n )\n}\n\ntype TNavigationMenuVerticalAccordionProps = React.ComponentProps<typeof Root> &\n React.ComponentProps<typeof NavigationMenuVerticalItem>\nexport const NavigationMenuVerticalAccordion = ({\n defaultOpen,\n open,\n onOpenChange,\n disabled,\n ...rest\n}: TNavigationMenuVerticalAccordionProps): JSX.Element => {\n const collapsibleProps = { defaultOpen, open, onOpenChange, disabled }\n return (\n <NavigationMenuVerticalAccordionProvider>\n <Root {...collapsibleProps} asChild>\n <NavigationMenuVerticalItem {...rest} />\n </Root>\n </NavigationMenuVerticalAccordionProvider>\n )\n}\n","import { List } from '@radix-ui/react-navigation-menu'\n\nimport { styled } from '~/stitches'\n\nconst StyledList = styled(List, {\n p: 0,\n m: 0,\n listStyle: 'none',\n '--navigation-menu-vertical-item-pl': '$space$4',\n '& &': {\n '--navigation-menu-vertical-item-pl': '$space$5'\n },\n '& & &': {\n '--navigation-menu-vertical-item-pl': '$space$7'\n },\n '& & & &': {\n '--navigation-menu-vertical-item-pl': '$space$8'\n },\n '& > *:not(:first-child)': {\n mt: '$0'\n }\n})\n\nexport const NavigationMenuVerticalList = StyledList\n","import { Content } from '@radix-ui/react-collapsible'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\n\nconst StyledNavigationMenuVerticalAccordionContent = styled(Content, {})\n\ntype TNavigationMenuVerticalAccordionContentProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionContent\n> &\n React.ComponentProps<typeof NavigationMenuVerticalList>\n\nexport const NavigationMenuVerticalAccordionContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalAccordionContentProps): JSX.Element => {\n const { triggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n const handleOnKeydown = (e) => {\n if (!triggerRef?.current) return\n if (e.key === 'Escape') {\n e.stopPropagation()\n e.preventDefault()\n triggerRef.current.focus()\n triggerRef.current.click()\n }\n }\n\n return (\n <StyledNavigationMenuVerticalAccordionContent\n onKeyDown={handleOnKeydown}\n {...rest}\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledNavigationMenuVerticalAccordionContent>\n )\n}\n","export const navigationMenuVerticalItemStyles = {\n border: 'none',\n outline: 'none',\n font: 'inherit',\n background: 'none',\n textAlign: 'inherit',\n textDecoration: 'unset',\n cursor: 'pointer',\n borderRadius: '$2',\n display: 'flex',\n alignItems: 'center',\n p: '$2',\n pl: `var(--navigation-menu-vertical-item-pl)`,\n width: '100%',\n color: '$text',\n bg: '$background',\n '--navigation-menu-vertical-item-font-weight': 400,\n '&[data-active]': {\n bg: '$backgroundSelected',\n color: '$textSelected',\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[data-state=open]': {\n '--navigation-menu-vertical-item-font-weight': 600\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover': {\n bg: '$backgroundHover'\n },\n '&:active': {\n bg: '$backgroundActive'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n },\n variants: {\n size: {\n md: {\n minHeight: '$4'\n },\n lg: {\n minHeight: '$5'\n }\n }\n }\n}\n","import * as React from 'react'\n\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nconst StyledNavigationMenuVerticalIcon = styled(Icon, {\n alignSelf: 'start'\n})\nexport const NavigationMenuVerticalIcon = (\n props: React.ComponentProps<typeof StyledNavigationMenuVerticalIcon>\n): JSX.Element => <StyledNavigationMenuVerticalIcon size=\"md\" {...props} />\n","import { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const SideBarHeader = styled('div', {\n borderBottom: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBody = styled('div', {\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarFooter = styled('div', {\n borderTop: '1px solid $border',\n p: '$4',\n width: '100%'\n})\n\nexport const SideBarBrand = styled('a', {\n alignItems: 'flex-end',\n color: '$text',\n display: 'flex',\n gap: '$4',\n textDecoration: 'none',\n '&:hover, &:focus': {\n textDecoration: 'none'\n }\n})\n\nexport const SideBarBrandLogo = Image\n\nexport const SideBarBrandName = styled(Text, {\n color: '$text',\n whiteSpace: 'nowrap'\n})\n","import * as React from 'react'\n\nexport const SideBarContext = React.createContext<{\n isExpanded?: boolean\n}>({\n isExpanded: undefined\n})\n\nexport const useSidebarState = () => React.useContext(SideBarContext)\n","import React from 'react'\nimport { useFocusWithin, useHover, useInteractOutside } from 'react-aria'\n\nimport { createTheme, styled } from '~/stitches'\n\nimport {\n SideBarBody,\n SideBarBrand,\n SideBarBrandLogo,\n SideBarBrandName,\n SideBarFooter,\n SideBarHeader\n} from './SideBarComponents'\nimport { SideBarContext } from './SideBarContext'\n\nconst SIZE_COLLAPSED = '5.5rem'\nconst SIZE_EXPANDED = '16rem'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n text: '$grey800',\n border: '$grey200'\n }\n})\n\nconst Root = styled('div', {\n position: 'sticky',\n zIndex: 1,\n variants: {\n type: {\n static: {},\n expandable: { width: SIZE_COLLAPSED }\n }\n }\n})\n\nconst Content = styled('div', {\n bg: '$background',\n borderRight: '1px solid $border',\n boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0)',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflow: 'hidden',\n willChange: 'width',\n '@allowMotion': {\n transition: 'width 125ms ease-out, box-shadow 125ms ease-out'\n },\n variants: {\n type: {\n static: {},\n expandable: {}\n },\n isExpanded: {\n true: { width: SIZE_EXPANDED },\n false: { width: SIZE_COLLAPSED }\n }\n },\n compoundVariants: [\n {\n isExpanded: true,\n type: 'expandable',\n css: { boxShadow: '4px 0 4px -2px rgba(31, 31, 31, 0.1)' }\n }\n ]\n})\n\nconst PointerBlocker = styled('div', {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transition: 'all',\n variants: {\n isVisible: {\n true: { visibility: 'visible', transitionDelay: '0ms' },\n false: { visibility: 'hidden', transitionDelay: '50ms' }\n }\n }\n})\n\ntype SideBarProps = React.ComponentProps<typeof Root> & {\n offset?: number | string\n}\n\nexport const SideBar = ({\n className = light,\n children,\n type = 'expandable',\n offset = '0px',\n css,\n style,\n ...rest\n}: SideBarProps) => {\n const [isExpanded, setIsExpanded] = React.useState(type === 'static')\n const ref = React.useRef<HTMLDivElement>(null)\n\n useInteractOutside({\n ref,\n onInteractOutside: () => setIsExpanded(false)\n })\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => setIsExpanded(true),\n onBlurWithin: () => setIsExpanded(false)\n })\n const { hoverProps, isHovered } = useHover({\n onHoverStart: () => setIsExpanded(true),\n onHoverEnd: () => setIsExpanded(false)\n })\n const touchProps = {\n onTouchEnd: () => setIsExpanded(true)\n }\n\n const expandableProps =\n type === 'expandable'\n ? {\n ...focusWithinProps,\n ...hoverProps,\n ...touchProps,\n ref\n }\n : {}\n\n return (\n <SideBarContext.Provider value={{ isExpanded }}>\n <Root\n {...rest}\n style={{ ...style, '--offset': offset }}\n className={className}\n css={{\n height: `calc(100svh - var(--offset))`,\n top: 'var(--offset)',\n ...css\n }}\n type={type}\n >\n <Content {...expandableProps} isExpanded={isExpanded} type={type}>\n {children}\n {/**\n * When the SideBar is collapsed, ensure that the initial tap event\n * is used to expand the nav first before making the items available\n */}\n {type === 'expandable' && (\n <PointerBlocker isVisible={!isHovered && !isExpanded} />\n )}\n </Content>\n </Root>\n </SideBarContext.Provider>\n )\n}\n\nSideBar.Brand = SideBarBrand\nSideBar.BrandLogo = SideBarBrandLogo\nSideBar.BrandName = SideBarBrandName\nSideBar.Header = SideBarHeader\nSideBar.Body = SideBarBody\nSideBar.Footer = SideBarFooter\n\nSideBar.displayName = 'SideBar'\n","import React from 'react'\n\nimport { Text } from '~/components/text'\nimport { styled } from '~/stitches'\n\nimport { useSidebarState } from '../side-bar'\n\nconst SIZE_EXPANDED_MAX = '10rem'\n\nconst StyledNavigationMenuVerticalText = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n fontWeight: 'var(--navigation-menu-vertical-item-font-weight)',\n lineHeight: 1.2,\n width: 'max-content',\n maxWidth: SIZE_EXPANDED_MAX,\n variants: {\n isExpanded: {\n true: {\n opacity: 1,\n '@allowMotion': {\n transform: 'translate(0)',\n transition: 'opacity 125ms ease-out, transform 125ms ease-out'\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n transform: 'translate(8px)',\n transition: 'opacity 125ms ease-out, transform 0ms ease-out 125ms'\n }\n }\n }\n }\n})\n\ntype TStyledNavigationMenuVerticalTextProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalText\n>\n\nexport const NavigationMenuVerticalText = (\n props: TStyledNavigationMenuVerticalTextProps\n): JSX.Element => {\n const { isExpanded } = useSidebarState()\n return (\n <StyledNavigationMenuVerticalText\n size=\"md\"\n as=\"span\"\n {...props}\n isExpanded={isExpanded}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<typeof Flex>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => {\n return (\n <Flex gap={2} align=\"center\" {...rest}>\n {\n React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return (\n <NavigationMenuVerticalText>{child}</NavigationMenuVerticalText>\n )\n }\n if (React.isValidElement(child) && child.type === Icon) {\n return <NavigationMenuVerticalIcon {...child.props} />\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n )\n}\n","import { ChevronDown } from '@atom-learning/icons'\nimport { Trigger } from '@radix-ui/react-collapsible'\nimport { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { Icon } from '~/components/icon'\nimport { styled } from '~/stitches'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalAccordionContext } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalAccordionTrigger = styled(\n Trigger,\n navigationMenuVerticalItemStyles\n)\n\nconst StyledIcon = styled(Icon, {\n transition: 'transform 300ms',\n '[data-state=\"open\"] > &': {\n transform: 'rotate(180deg)'\n }\n})\n\ntype TNavigationMenuAccordionTriggerProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalAccordionTrigger\n>\n\nexport const NavigationMenuVerticalAccordionTrigger = ({\n children,\n ...rest\n}: TNavigationMenuAccordionTriggerProps) => {\n const { setTriggerRef } = React.useContext(\n NavigationMenuVerticalAccordionContext\n )\n\n return (\n <Link asChild>\n <StyledNavigationMenuVerticalAccordionTrigger size=\"lg\" {...rest} asChild>\n <Flex\n as=\"button\"\n type=\"button\"\n align=\"center\"\n justify=\"space-between\"\n gap={3}\n ref={setTriggerRef}\n >\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n <StyledIcon size=\"sm\" is={ChevronDown} />\n </Flex>\n </StyledNavigationMenuVerticalAccordionTrigger>\n </Link>\n )\n}\n","import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\nimport { preventEvent } from '~/utilities/event'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(\n Link,\n navigationMenuVerticalItemStyles\n)\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n> & {\n as?: React.ComponentType | React.ElementType\n}\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const Component = as || (href ? 'a' : 'button')\n const componentProps = as\n ? {}\n : href\n ? getExternalAnchorProps(href)\n : { type: 'button' }\n\n return (\n <NavigationMenuVerticalItem>\n <StyledNavigationMenuVerticalLink\n size=\"lg\"\n href={href}\n {...rest}\n {...componentProps}\n onSelect={preventEvent}\n asChild // ?: Can't use `as` for this as we lose `data-active` etc. attributes when we try to. Using `asChild` and `Component` as a workaround.\n >\n <Component>\n <NavigationMenuVerticalItemContent>\n {children}\n </NavigationMenuVerticalItemContent>\n </Component>\n </StyledNavigationMenuVerticalLink>\n </NavigationMenuVerticalItem>\n )\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n text: '$foreground',\n background: '$base1',\n backgroundHover: '$base2',\n backgroundActive: '$base3',\n textSelected: '$accent9',\n backgroundSelected: '$accent2'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import { Root } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { NavigationMenuVerticalAccordion } from './NavigationMenuVerticalAccordion'\nimport { NavigationMenuVerticalAccordionContent } from './NavigationMenuVerticalAccordionContent'\nimport { NavigationMenuVerticalAccordionTrigger } from './NavigationMenuVerticalAccordionTrigger'\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\nimport { NavigationMenuVerticalLink } from './NavigationMenuVerticalLink'\nimport { NavigationMenuVerticalList } from './NavigationMenuVerticalList'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\nimport { colorSchemes as navigationMenuVerticalColorSchemes } from './stitches.navigationMenuVertical.colorscheme.config'\n\nconst StyledRoot = styled(Root, {\n width: '100%'\n})\n\n/*\n * (!)\n * NavigationMenu vertical behaviour was buggy so had to build the\n * opening/closing nested Content(Accordion) based on `Collapsible` instead.\n * This means that the below `value` based props and `Trigger`/`Content`\n * animations do nothing, so removing them from typescript\n */\ntype TNavigationVerticalProps = Omit<\n React.ComponentProps<typeof StyledRoot>,\n | 'delayDuration'\n | 'skipDelayDuration'\n | 'defaultValue'\n | 'value'\n | 'onValueChange'\n>\n\nexport const NavigationMenuVertical = Object.assign(\n ({ children, ...rest }: TNavigationVerticalProps) => (\n <StyledRoot\n className={navigationMenuVerticalColorSchemes['light']}\n {...rest}\n orientation=\"vertical\"\n >\n <NavigationMenuVerticalList>{children}</NavigationMenuVerticalList>\n </StyledRoot>\n ),\n {\n Link: NavigationMenuVerticalLink,\n Accordion: NavigationMenuVerticalAccordion,\n AccordionContent: NavigationMenuVerticalAccordionContent,\n AccordionTrigger: NavigationMenuVerticalAccordionTrigger,\n Item: NavigationMenuVerticalItem,\n ItemContent: NavigationMenuVerticalItemContent,\n Icon: NavigationMenuVerticalIcon,\n Text: NavigationMenuVerticalText\n }\n)\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nconst StyledWrapper = styled(Box, {\n position: 'relative'\n})\n\nconst StyledBadge = styled(Flex, {\n fontFamily: '$body',\n fontSize: '$sm',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translate(calc($sizes$2 / 2), -50%)',\n borderRadius: '$round',\n p: '$2',\n height: '$2',\n minWidth: '$2',\n textAlign: 'center',\n color: '#fff',\n bg: '$primary800'\n})\n\ntype NotificationBadgeProps = {\n value: number | string\n}\n\nexport const NotificationBadge = ({\n value,\n children\n}: React.PropsWithChildren<NotificationBadgeProps>) => (\n <StyledWrapper>\n {!!value && <StyledBadge role=\"status\">{value}</StyledBadge>}\n {children}\n </StyledWrapper>\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\n\nconst StyledSpan = styled('span', { zIndex: 1 })\n\nconst StyledStepperButton = styled(ActionIcon, {\n borderRadius: '$1',\n zIndex: 1,\n height: '100% !important',\n '&:hover': {\n bg: '$grey100',\n '& svg': {\n color: '$grey800'\n }\n },\n '& svg': {\n color: '$grey700'\n },\n '&:active': {\n bg: '$grey200',\n '& svg': {\n color: '$grey900'\n }\n },\n '&:disabled': {\n opacity: 0.3,\n pointerEvents: 'none'\n },\n variants: {\n fieldAppearance: {\n standard: {\n backgroundColor: 'white',\n borderColor: '$grey800 !important'\n },\n modern: {\n backgroundColor: '$grey100',\n borderColor: '$grey100 !important'\n }\n }\n }\n})\n\ntype NumberInputStepperProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'children'\n> &\n Omit<React.ComponentProps<typeof StyledStepperButton>, 'children'> & {\n icon: React.FC<React.SVGProps<SVGSVGElement>>\n showTooltip?: boolean\n disabledTooltipContent?: string\n }\n\nexport const NumberInputStepper: React.ForwardRefExoticComponent<NumberInputStepperProps> =\n React.forwardRef((props, forwardedRef) => {\n const {\n icon,\n disabledTooltipContent,\n showTooltip,\n fieldAppearance = 'standard',\n ...rest\n } = props\n\n /**\n * Focus has been removed from the button\n * as the increment and decrement buttons should be keyboard accessible via arrow keys.\n * see MDN docs https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/spinbutton_role\n */\n return (\n <Tooltip>\n <Tooltip.Trigger asChild>\n <StyledSpan tabIndex={-1}>\n <StyledStepperButton\n hasTooltip={false}\n tabIndex={-1}\n appearance=\"outline\"\n fieldAppearance={fieldAppearance}\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </StyledStepperButton>\n </StyledSpan>\n </Tooltip.Trigger>\n {showTooltip && (\n <Tooltip.Content>{disabledTooltipContent}</Tooltip.Content>\n )}\n </Tooltip>\n )\n })\n","import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { type CSS, styled } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nconst NumberInputContainer = styled(Flex, {\n variants: {\n appearance: {\n standard: {},\n modern: { gap: '1px' }\n }\n }\n})\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldWrapper } from '~/components/field-wrapper'\nimport {\n useFieldError,\n useFormCustomContext,\n ValidationOptions\n} from '~/components/form'\nimport type { CSS } from '~/stitches'\n\nimport type { NumberInputProps } from '../number-input/NumberInput'\nimport { NumberInput } from '../number-input/NumberInput'\n\nexport interface NumberInputFieldProps extends NumberInputProps {\n css?: CSS\n hideLabel?: boolean\n description?: string\n label: string\n name: string\n prompt?: { link: string; label: string }\n validation?: ValidationOptions\n}\n\nexport const NumberInputField = ({\n css,\n defaultValue = 0,\n hideLabel,\n value,\n prompt,\n description,\n label,\n name,\n validation,\n onValueChange,\n appearance,\n ...remainingProps\n}: NumberInputFieldProps) => {\n const { control } = useFormContext()\n const context = useFormCustomContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n const formAppearance = context?.appearance || appearance\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <NumberInput\n id={name}\n name={innerName}\n ref={ref}\n {...(error && { state: 'error', 'aria-invalid': true })}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n appearance={formAppearance}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nNumberInputField.displayName = 'NumberInputField'\n","import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledProgressBar = styled(Progress.Root, {\n borderRadius: '$round',\n background: '$grey200',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n variants: {\n size: {\n sm: { height: '4px' },\n md: { height: '$0' }\n },\n theme: {\n primary: { color: '$primary800' },\n info: { color: '$info' },\n success: { color: '$success' },\n warning: { color: '$warning' },\n danger: { color: '$danger' },\n neutral: { color: '$grey800', bg: '$grey400' }\n }\n }\n})\n\nconst StyledIndicator = styled(Progress.Indicator, {\n backgroundColor: 'currentColor',\n borderRadius: '$round',\n boxSizing: 'border-box',\n height: '100%',\n position: 'absolute',\n transition: 'all 300ms ease-out'\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n style={{\n width: '100%',\n transform: `translateX(-${100 - ((value || 0) / max) * 100}%)`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n","import * as React from 'react'\n\nimport { InlineFieldWrapper } from '~/components/field-wrapper'\nimport { ValidationOptions } from '~/components/form'\nimport { RadioButton } from '~/components/radio-button'\nimport { CSS } from '~/stitches'\n\ntype RadioFieldProps = {\n css?: CSS\n defaultChecked?: boolean\n error?: string\n label: string\n validation?: ValidationOptions\n} & React.ComponentProps<typeof RadioButton>\n\nexport const RadioField = ({\n css,\n label,\n value,\n ...remainingProps\n}: RadioFieldProps) => (\n <InlineFieldWrapper css={css} label={label}>\n <RadioButton value={value} {...remainingProps} />\n </InlineFieldWrapper>\n)\n\nRadioField.displayName = 'RadioField'\n","import * as React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport { FieldElementWrapperProps } from '~/components/field-wrapper'\nimport { Description as FieldDescription } from '~/components/field-wrapper/FieldDescription'\nimport { useFieldError } from '~/components/form'\nimport { InlineMessage } from '~/components/inline-message'\nimport { Label } from '~/components/label'\nimport { RadioButtonGroup } from '~/components/radio-button'\nimport { styled } from '~/stitches'\n\nimport { RadioField } from './RadioField'\n\nconst Fieldset = styled('fieldset', {\n all: 'unset'\n})\n\ntype RadioButtonFieldProps = React.ComponentProps<typeof RadioButtonGroup> &\n FieldElementWrapperProps\n\nconst RadioButtonFieldComponent = ({\n children,\n css,\n direction = 'column',\n defaultValue,\n value,\n description,\n label,\n name,\n validation,\n onValueChange,\n ...remainingProps\n}: RadioButtonFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n const { error } = useFieldError(name)\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (typeof value !== 'undefined') onChange(value)\n }, [value])\n\n return (\n <Fieldset css={css}>\n <Label\n as=\"legend\"\n css={{ p: 0, mb: '$3' }}\n required={Boolean(validation?.required)}\n >\n {label}\n </Label>\n {description && (\n <FieldDescription css={{ mb: '$3' }}>{description}</FieldDescription>\n )}\n\n <RadioButtonGroup\n ref={ref}\n direction={direction}\n defaultValue={defaultValue}\n onValueChange={(newValue) => {\n onChange(newValue)\n onValueChange?.(newValue)\n }}\n value={innerValue}\n {...remainingProps}\n >\n {children}\n </RadioButtonGroup>\n\n {error && <InlineMessage css={{ mt: '$2' }}>{error}</InlineMessage>}\n </Fieldset>\n )\n}\n\nexport const RadioButtonField = Object.assign(RadioButtonFieldComponent, {\n Item: RadioField\n})\n\nRadioButtonFieldComponent.displayName = 'RadioButtonField'\n","import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Box } from '../box/Box'\n\nexport const StyledRadioCard = styled(RadioGroup.Item, {\n alignItems: 'center',\n bg: 'white',\n border: '1px solid $grey600',\n borderRadius: '$0',\n cursor: 'pointer',\n display: 'flex',\n textAlign: 'left',\n '&[data-state=\"checked\"]': {\n outline: '2px solid $primary800',\n outlineOffset: '-2px'\n },\n variants: {\n align: {\n left: { flexDirection: 'row' },\n right: { flexDirection: 'row-reverse' }\n },\n size: {\n md: { px: '$4', py: '$3' },\n lg: { px: '$5', py: '$4' }\n },\n isFullWidth: {\n true: { width: '100%' },\n false: { width: 'max-content' }\n }\n }\n})\n\nconst RadioButton = styled('div', {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: 'transparent',\n border: '1px solid $grey900',\n borderRadius: '$round',\n display: 'flex',\n flexShrink: 0,\n justifyContent: 'center',\n p: 0,\n size: '$1',\n transition: 'all 50ms ease-out',\n '[data-state=\"checked\"] &': {\n backgroundColor: '$primary800',\n borderColor: '$primary800'\n },\n variants: {\n containerIsFullWidth: {\n true: {},\n false: {}\n },\n align: {\n left: { mr: '$4' },\n right: {}\n }\n },\n\n compoundVariants: [\n {\n containerIsFullWidth: true,\n align: 'right',\n css: { ml: 'auto' }\n },\n {\n containerIsFullWidth: false,\n align: 'right',\n css: { ml: '$4' }\n }\n ]\n})\n\nconst Indicator = styled(RadioGroup.Indicator, {\n backgroundColor: 'white',\n borderRadius: '$round',\n position: 'absolute',\n size: '6px'\n})\n\ntype RadioCardProps = React.ComponentProps<typeof StyledRadioCard>\n\nexport const RadioCard = ({\n children,\n isFullWidth = false,\n size = 'md',\n align = 'left',\n ...rest\n}: RadioCardProps) => (\n <StyledRadioCard\n {...rest}\n align={align}\n isFullWidth={isFullWidth}\n size={size}\n >\n <RadioButton align={align} containerIsFullWidth={isFullWidth}>\n <Indicator />\n </RadioButton>\n <Box>{children}</Box>\n </StyledRadioCard>\n)\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { RadioCard, StyledRadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n Pick<React.ComponentProps<typeof Flex>, 'justify' | 'gap' | 'css'> &\n VariantProps<typeof StyledRadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n css,\n children,\n size,\n isFullWidth,\n align,\n gap = '3',\n justify,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <Flex direction=\"row\" justify={justify} gap={gap} wrap=\"wrap\" css={css}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child?.type === RadioCard) {\n return React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof RadioCard>>,\n { size, isFullWidth, align }\n )\n }\n return child\n })}\n </Flex>\n </RadioGroup.Root>\n)\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { SearchInput, SearchInputProps } from '~/components/search-input'\n\ntype SearchFieldProps = SearchInputProps & FieldElementWrapperProps\n\nexport const SearchField = ({\n css,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SearchFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <SearchInput\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nSearchField.displayName = 'SearchField'\n","import React from 'react'\n\nimport type { SectionMessageTheme } from './SectionMessage'\n\nexport type SectionMessageContextValue = {\n theme: SectionMessageTheme\n hasIcon: boolean\n setHasIcon: React.Dispatch<React.SetStateAction<boolean>>\n hasDismiss: boolean\n setHasDismiss: React.Dispatch<React.SetStateAction<boolean>>\n}\nexport type SectionMessageProviderProps = {\n theme: SectionMessageTheme\n children: React.ReactNode\n}\n\nexport const SectionMessageContext =\n React.createContext<SectionMessageContextValue | null>(null)\n\nexport const SectionMessageProvider = ({\n theme = 'info',\n children\n}: SectionMessageProviderProps): JSX.Element => {\n const [hasIcon, setHasIcon] = React.useState(false)\n const [hasDismiss, setHasDismiss] = React.useState(false)\n\n const value = React.useMemo<SectionMessageContextValue>(\n () => ({ theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss }),\n [theme, hasIcon, setHasIcon, hasDismiss, setHasDismiss]\n )\n\n return (\n <SectionMessageContext.Provider value={value}>\n {children}\n </SectionMessageContext.Provider>\n )\n}\n\nexport const useSectionMessageContext = (): SectionMessageContextValue => {\n const context = React.useContext(SectionMessageContext)\n\n if (!context) {\n throw new Error(\n 'useSectionMessageContext must be used within a SectionMessageProvider'\n )\n }\n\n return context\n}\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageDescription = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Text>): JSX.Element => (\n <Text\n css={{\n color: '$grey900',\n ...css\n }}\n size=\"sm\"\n {...rest}\n />\n)\n","import { Close } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Dismissible } from '../dismissible'\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nexport const SectionMessageDismiss = ({\n label = 'Dismiss',\n css,\n ...rest\n}: React.ComponentProps<typeof ActionIcon>): JSX.Element => {\n const { setHasDismiss } = useSectionMessageContext()\n\n useEffect(() => {\n setHasDismiss(true)\n return () => setHasDismiss(false)\n }, [setHasDismiss])\n\n return (\n <Dismissible.Trigger asChild>\n <ActionIcon\n label={label}\n css={{\n m: 'auto',\n position: 'absolute',\n top: '$2',\n right: '$2',\n ...css\n }}\n size=\"sm\"\n appearance=\"simple\"\n theme=\"neutral\"\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n </Dismissible.Trigger>\n )\n}\n","import { Danger, Error, Info, OkCircle } from '@atom-learning/icons'\nimport React, { useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSectionMessageContext } from './SectionMessageContext'\n\nconst themeIcons = {\n success: OkCircle,\n warning: Danger,\n error: Error,\n neutral: Info,\n info: Info\n}\n\ntype SectionMessageIconProps = Partial<React.ComponentProps<typeof Icon>>\n\nexport const SectionMessageIcon = ({\n css,\n is,\n ...rest\n}: SectionMessageIconProps): JSX.Element => {\n const { theme, setHasIcon } = useSectionMessageContext()\n\n useEffect(() => {\n setHasIcon(true)\n return () => setHasIcon(false)\n }, [setHasIcon])\n\n return (\n <Icon\n css={{\n m: 'auto',\n position: 'absolute',\n left: '$4',\n top: '$4',\n color: 'currentColor',\n ...css\n }}\n is={is || themeIcons[theme]}\n size=\"sm\"\n {...rest}\n />\n )\n}\n","import React from 'react'\n\nimport { Box } from '../box'\nimport { Flex } from '../flex'\n\nexport const SectionMessageContent = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Box>): JSX.Element => (\n <Box\n css={{\n maxWidth: '100%',\n flexShrink: 0,\n paddingTop: '$0',\n '& > *:not(:last-child)': { mb: '$2' },\n ...css\n }}\n {...rest}\n />\n)\n\nexport const SectionMessageActions = ({\n css,\n ...rest\n}: React.ComponentProps<typeof Flex>): JSX.Element => (\n <Box css={{ maxWidth: '100%', flexShrink: 0, ...css }}>\n <Flex wrap=\"wrap\" gap={3} {...rest} />\n </Box>\n)\n","import React from 'react'\n\nimport { Text } from '../text'\n\nexport const SectionMessageTitle = (\n props: React.ComponentProps<typeof Text>\n): JSX.Element => <Text size=\"md\" weight=\"bold\" {...props} />\n","import { TooltipProvider } from '@radix-ui/react-tooltip'\nimport React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Dismissible } from '../dismissible'\nimport { Flex } from '../flex'\nimport {\n SectionMessageProvider,\n useSectionMessageContext\n} from './SectionMessageContext'\nimport { SectionMessageDescription } from './SectionMessageDescription'\nimport { SectionMessageDismiss } from './SectionMessageDismiss'\nimport { SectionMessageIcon } from './SectionMessageIcon'\nimport {\n SectionMessageActions,\n SectionMessageContent\n} from './SectionMessageLayout'\nimport { SectionMessageTitle } from './SectionMessageTitle'\n\nconst StyledSectionMessage = styled(Dismissible, {\n position: 'relative',\n borderRadius: '$1',\n display: 'flex',\n minHeight: '$5',\n p: '$4',\n border: '1px solid white',\n variants: {\n theme: {\n success: {\n bg: '$successLight',\n color: '$successDark'\n },\n warning: {\n bg: '$warningLight',\n color: '$warningText'\n },\n error: {\n bg: '$dangerLight',\n color: '$dangerDark'\n },\n neutral: {\n bg: '$grey100',\n color: '$grey1000'\n },\n info: {\n bg: '$infoLight',\n color: '$infoDark'\n }\n },\n hasIcon: {\n true: {\n pl: '$6'\n }\n },\n hasDismiss: {\n true: {\n pr: '$7'\n }\n }\n }\n})\n\nconst SectionMessageRoot = ({\n children,\n ...rest\n}: React.ComponentProps<typeof StyledSectionMessage>): JSX.Element => {\n const { theme, hasIcon, hasDismiss } = useSectionMessageContext()\n\n return (\n <StyledSectionMessage\n {...rest}\n theme={theme}\n hasIcon={hasIcon}\n hasDismiss={hasDismiss}\n >\n <Flex gap={3} justify=\"space-between\" css={{ flexGrow: 1 }}>\n {children}\n </Flex>\n </StyledSectionMessage>\n )\n}\n\nexport type SectionMessageTheme =\n | 'success'\n | 'warning'\n | 'error'\n | 'neutral'\n | 'info'\n\nexport interface SectionMessageProps\n extends React.ComponentProps<typeof SectionMessageRoot> {\n theme?: SectionMessageTheme\n}\n\nexport const SectionMessage = ({\n theme = 'info',\n ...rest\n}: SectionMessageProps): JSX.Element => {\n return (\n <TooltipProvider>\n <SectionMessageProvider theme={theme}>\n <SectionMessageRoot {...rest} />\n </SectionMessageProvider>\n </TooltipProvider>\n )\n}\n\nSectionMessage.Title = SectionMessageTitle\nSectionMessage.Description = SectionMessageDescription\nSectionMessage.Icon = SectionMessageIcon\nSectionMessage.Dismiss = SectionMessageDismiss\nSectionMessage.Content = SectionMessageContent\nSectionMessage.Actions = SectionMessageActions\n","import * as React from 'react'\n\nimport { styled, theme } from '~/stitches'\nimport { encodeBackgroundIcon } from '~/utilities'\nimport { Override } from '~/utilities/types'\n\nconst StyledSelect = styled('select', {\n appearance: 'none',\n backgroundImage: encodeBackgroundIcon(theme.colors.grey700.value, 'chevron'),\n backgroundRepeat: 'no-repeat, repeat',\n borderRadius: '$1',\n color: '$grey1000',\n display: 'block',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n width: '100%',\n '&:hover': {\n cursor: 'pointer'\n },\n '&::-ms-expand': {\n display: 'none'\n },\n '&[disabled], > option[disabled]': {\n opacity: 0.3,\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 lg: {\n backgroundPosition: 'right $space$3 top 50%, 0 0',\n backgroundSize: '20px auto, 100%',\n fontSize: '$md',\n height: '$5',\n pl: '$3',\n pr: '$6'\n }\n },\n state: {\n error: {}\n },\n appearance: {\n standard: {\n backgroundColor: 'white',\n border: '1px solid $grey700',\n '&:focus': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n backgroundColor: '$grey100',\n border: 'none',\n '&:focus': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n }\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n backgroundColor: '$dangerLight',\n '&:focus': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type SelectProps = Override<\n React.ComponentProps<typeof StyledSelect>,\n {\n as?: never\n placeholder?: string\n }\n // TODO: figure out why uncommenting this causes TS errors in\n // component declaration\n // & (\n // | { id: string; 'aria-label'?: string }\n // | { 'aria-label': string; id?: string }\n // )\n>\n\nexport const Select: React.ForwardRefExoticComponent<SelectProps> =\n React.forwardRef(\n (\n {\n placeholder,\n children,\n size = 'md',\n appearance = 'standard',\n ...remainingProps\n },\n ref\n ) => {\n const props = { size, appearance, ref, ...remainingProps }\n\n if (\n [remainingProps.value, remainingProps.defaultValue].every(\n (value) => value === undefined\n )\n ) {\n props.defaultValue = ''\n }\n\n return (\n <StyledSelect {...props}>\n {placeholder && (\n <option disabled hidden value=\"\">\n {placeholder}\n </option>\n )}\n {children}\n </StyledSelect>\n )\n }\n )\n\nSelect.displayName = 'Select'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Select, SelectProps } from '~/components/select'\n\ntype SelectFieldProps = SelectProps & FieldElementWrapperProps\n\nexport const SelectField = ({\n css = undefined,\n hideLabel,\n children,\n name,\n label,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: SelectFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Select\n name={name}\n id={name}\n appearance={formAppearance}\n {...remainingProps}\n ref={ref}\n {...(error && { state: 'error' })}\n >\n {children}\n </Select>\n </FieldWrapper>\n )\n}\n\nSelectField.displayName = 'SelectField'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n height: '$space$3',\n mt: '$3',\n position: 'relative',\n width: '100%'\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n css={{\n position: 'absolute',\n color: '$grey700'\n }}\n style={{\n left: `${getPercentValue(step.value, min, max)}%`,\n transform: `translateX(-${getTransformValue(\n step.value,\n min,\n max\n )}%)`\n }}\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n","import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text css={{ mt: '$4', color: '$grey700', width: '100%' }}>\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n","import type { VariantProps } from '@atom-learning/stitches-react'\nimport { 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 variants: {\n theme: {\n light: { bg: '#fff' },\n tonal: { bg: '$grey600' }\n }\n }\n})\n\nconst StyledSlider = styled(Root, {\n alignItems: 'center',\n display: 'flex',\n position: 'relative',\n touchAction: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n '&[data-orientation=\"horizontal\"]': {\n height: '$1'\n },\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$1'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nconst StyledRange = styled(Range, {\n bg: '$primary800',\n borderRadius: '$round',\n height: '100%',\n position: 'absolute',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nconst StyledThumb = styled(Thumb, {\n bg: '$primary900',\n borderRadius: '$round',\n display: 'block',\n size: '$1',\n '&:hover': {\n bg: '$primary1000'\n },\n '&:focus': {\n outline: '2px solid $primary900',\n outlineOffset: '2px'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n }\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider> &\n VariantProps<typeof StyledTrack>\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 defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack theme={theme}>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n","import React from 'react'\nimport { useController, useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { Slider, SliderProps } from '~/components/slider'\nimport { SliderStepsType } from '~/components/slider/SliderSteps'\n\nimport { SliderValueType } from '../slider/SliderValue'\n\ntype SliderFieldProps = SliderProps &\n SliderStepsType &\n SliderValueType &\n FieldElementWrapperProps\n\nexport const SliderField = ({\n css,\n hideLabel,\n label,\n name,\n defaultValue,\n value,\n validation,\n outputLabel,\n min = 0,\n max = 100,\n steps = [],\n ...remainingProps\n}: SliderFieldProps) => {\n const { control } = useFormContext()\n const {\n field: { ref, onChange, value: innerValue, name: innerName }\n } = useController({\n name,\n control,\n rules: validation,\n defaultValue\n })\n\n React.useEffect(() => {\n // Update the react-hook-form inner value to match what is passed in.\n if (value?.length) onChange(value)\n }, [JSON.stringify(value)])\n\n return (\n <FieldWrapper css={css} fieldId={name} label={label} hideLabel={hideLabel}>\n <Slider\n ref={ref}\n name={innerName}\n onValueChange={onChange}\n value={innerValue}\n min={min}\n max={max}\n {...remainingProps}\n >\n <Slider.Steps min={min} max={max} steps={steps} />\n\n <Slider.Value value={innerValue} outputLabel={outputLabel} />\n </Slider>\n </FieldWrapper>\n )\n}\n\nSliderField.displayName = 'SliderField'\n","import { styled } from '~/stitches'\n\n/**\n * A flexible flex spacer that expands along the major axis of its containing flex layout.\n * It renders a `div` by default, and takes up any available space.\n */\nexport const Spacer = styled('div', {\n flex: 1,\n justifySelf: 'stretch',\n alignSelf: 'stretch'\n})\n\nSpacer.displayName = 'Spacer'\n","import * as React from 'react'\n\nimport { Context, StepperProviderProps } from '../types'\n\nconst StepperContext = React.createContext<Context>({\n steps: [],\n goToPreviousStep: () => null,\n goToNextStep: () => null,\n goToStep: () => null,\n activeStep: 0,\n viewedSteps: [],\n allowSkip: false,\n direction: 'horizontal',\n hideLabels: false,\n completedSteps: [],\n showCompletedIcons: false\n})\n\nexport const StepperProvider = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction,\n steps,\n hideLabels,\n showCompletedIcons\n}: React.PropsWithChildren<StepperProviderProps>) => {\n const [activeStep, setActiveStep] = React.useState(0)\n\n const [viewedSteps, setviewedSteps] = React.useState<number[]>([0])\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([])\n\n const isControlled = !stepCount\n\n React.useEffect(() => {\n setviewedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n\n onStepChange?.(activeStep)\n }, [activeStep, onStepChange])\n\n const goToNextStep = () => {\n const isCompleted = onComplete && activeStep === stepCount - 1\n const isNextStep = activeStep < stepCount - 1\n\n if (onComplete || isNextStep) {\n setCompletedSteps((prev) =>\n prev.includes(activeStep) ? prev : [...prev, activeStep]\n )\n }\n\n if (isCompleted) {\n return onComplete?.()\n }\n if (isNextStep) {\n return setActiveStep((current) => current + 1)\n }\n }\n\n const goToPreviousStep = () => {\n setActiveStep((current) => current - 1)\n }\n\n const goToStep = (index: number) => {\n setActiveStep(index)\n }\n\n return (\n <StepperContext.Provider\n value={{\n steps: steps || Array(stepCount).fill(''),\n goToPreviousStep: isControlled ? undefined : goToPreviousStep,\n goToNextStep: isControlled ? undefined : goToNextStep,\n goToStep: isControlled ? undefined : goToStep,\n activeStep,\n viewedSteps,\n completedSteps,\n allowSkip,\n direction,\n hideLabels,\n showCompletedIcons\n }}\n >\n {children}\n </StepperContext.Provider>\n )\n}\n\nexport const useStepper = (): Context => {\n const context = React.useContext(StepperContext)\n if (!context)\n throw new Error(\n 'Ensure that you wrap any components with the root component Stepper'\n )\n\n return context\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepBack = ({\n label,\n children,\n ...rest\n}: IStepperNavigateProps & React.ComponentProps<typeof Button>) => {\n const { activeStep, goToPreviousStep } = useStepper()\n return (\n <Button\n size=\"sm\"\n appearance=\"outline\"\n {...rest}\n disabled={activeStep === 0}\n onClick={goToPreviousStep}\n >\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import * as React from 'react'\n\nimport { Button } from '../button'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { IStepperNavigateProps } from './types'\n\nexport const StepperStepForward = ({\n label,\n children,\n onClick,\n ...rest\n}: IStepperNavigateProps & Partial<React.ComponentProps<typeof Button>>) => {\n const { goToNextStep, activeStep } = useStepper()\n\n const handleClick = () => {\n if (onClick) {\n return onClick(() => goToNextStep?.())\n }\n goToNextStep?.()\n }\n\n return (\n <Button size=\"sm\" {...rest} onClick={handleClick} css={{ ml: 'auto' }}>\n {children || label?.(activeStep)}\n </Button>\n )\n}\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepBullet = styled(Flex, {\n position: 'relative',\n p: '$2',\n justifyContent: 'center',\n alignItems: 'center',\n size: '$3',\n borderRadius: '50%',\n border: 'none',\n bg: '$grey200',\n zIndex: 1,\n flex: 'none',\n variants: {\n status: {\n default: { bg: '$grey200', color: '$grey700' },\n active: {\n bg: 'white',\n color: '$primary900',\n border: '2px solid',\n borderColor: 'currentColor'\n },\n viewed: {\n bg: 'white',\n border: '2px solid $grey600',\n color: '$grey1000'\n },\n completed: { bg: '$primary800', color: 'white' },\n reviewed: { bg: '$primary900', color: 'white' },\n success: { bg: '$success', color: 'white' }\n }\n }\n})\n","import { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\n\nexport const StepperStepContainer = styled(Flex, {\n position: 'relative',\n fontFamily: '$body',\n fontWeight: 600,\n fontSize: '$md',\n alignItems: 'center',\n '&:not(:last-child)': {\n '&::after': {\n content: '',\n position: 'absolute'\n }\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)': {\n '&::after': {\n height: '100%',\n width: '4px',\n left: '14px',\n top: '50%'\n }\n }\n },\n horizontal: {\n px: '$2',\n flexDirection: 'column',\n '&:not(:last-child)': {\n '&::after': {\n width: '100%',\n height: '4px',\n left: '50%',\n top: '14px'\n }\n }\n }\n },\n separator: {\n default: {\n '&:not(:last-child)': {\n '&::after': { bg: '$grey200' }\n }\n },\n active: {\n '&:not(:last-child)': {\n '&::after': { bg: '$primary800' }\n }\n },\n success: {\n '&:not(:last-child)': {\n '&::after': { bg: '$success' }\n }\n },\n viewed: {\n '&:not(:last-child)': {\n '&::after': { bg: '$grey600' }\n }\n }\n },\n status: {\n completed: {},\n active: {},\n default: {},\n viewed: {},\n success: {},\n reviewed: {}\n }\n },\n compoundVariants: [\n {\n canInteract: true,\n status: 'completed',\n css: {\n '&:hover': {\n '& :first-child': { bg: '$primary900', color: 'white !important' },\n '& :last-child': { color: '$primary900' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'active',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800',\n outlineOffset: '2px'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'viewed',\n css: {\n '&:hover': {\n '& :first-child': { borderColor: '$grey800', color: '$grey1000' },\n '& :last-child': { color: '$grey1000' }\n },\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n },\n {\n canInteract: true,\n status: 'reviewed',\n css: {\n '&:focus-visible': {\n '& :first-child': {\n outline: '2px solid $primary800 !important',\n outlineOffset: '2px !important'\n }\n }\n }\n }\n ]\n})\n","import { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nexport const StepperStepLabel = styled(Text, {\n fontWeight: 600,\n variants: {\n direction: {\n vertical: { ml: '$3', textAlign: 'left' },\n horizontal: { mt: '$3', textAlign: 'center' }\n },\n status: {\n default: { color: '$grey700', fontWeight: 400 },\n active: {\n color: '$primary900'\n },\n viewed: { color: '$grey1000' },\n completed: { color: '$primary800' },\n success: { color: '$success' },\n reviewed: {}\n }\n }\n})\n","import { CSS } from '~/stitches'\n\nexport enum Status {\n ACTIVE = 'active',\n VIEWED = 'viewed',\n SUCCESS = 'success',\n DEFAULT = 'default',\n COMPLETED = 'completed',\n REVIEWED = 'reviewed'\n}\nexport interface Step {\n label?: string\n status: `${Status}`\n}\n\nexport type Direction = 'vertical' | 'horizontal'\n\nexport type Context = {\n steps: Step[]\n goToPreviousStep?: () => void\n goToNextStep?: () => void\n goToStep?: (index: number) => void\n activeStep: number\n viewedSteps: number[]\n completedSteps: number[]\n allowSkip?: boolean\n direction?: Direction\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport type StepperProviderProps = {\n stepCount: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps: Step[]\n hideLabels: boolean\n showCompletedIcons: boolean\n}\n\nexport interface IStepperProps {\n css?: CSS\n stepCount?: number\n allowSkip?: boolean\n onComplete?: () => void\n onStepChange?: (activeStep: number) => void\n direction?: Direction\n steps?: Step[]\n hideLabels?: boolean\n showCompletedIcons?: boolean\n}\n\nexport interface IStepperNavigateProps {\n label?: (currentStep?: number) => string\n onClick?: (next: () => void) => void\n}\n\nexport interface IStepperStepsProps {\n css?: CSS\n}\n","import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n justifyContent: 'space-between',\n variants: {\n direction: {\n vertical: { flexDirection: 'column' },\n horizontal: { flexDirection: 'row' }\n }\n }\n})\n\nexport const StepperSteps = ({ css }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer css={css} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n style={{ '--steps': steps.length }}\n css={\n direction === 'horizontal'\n ? { width: `calc(100% / var(--steps, 0))` }\n : { height: `calc(100% / var(--steps, 0))` }\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n css={{\n cursor:\n allowSkip && viewedSteps.includes(index) ? 'pointer' : 'auto'\n }}\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n","import invariant from 'invariant'\nimport * as React from 'react'\n\nimport { Box } from '../box/Box'\nimport { StepperProvider } from './stepper-context/StepperContext'\nimport { StepperStepBack } from './StepperStepBack'\nimport { StepperStepForward } from './StepperStepForward'\nimport { StepperSteps } from './StepperSteps'\nimport { IStepperProps } from './types'\n\nconst StepperComponent = ({\n children,\n stepCount,\n allowSkip,\n onComplete,\n onStepChange,\n direction = 'horizontal',\n steps,\n hideLabels = false,\n showCompletedIcons = false,\n css\n}: React.PropsWithChildren<IStepperProps>) => {\n invariant(\n !(stepCount && steps),\n '`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.'\n )\n\n const count = steps?.length || stepCount || 0\n\n return (\n <StepperProvider\n stepCount={count}\n allowSkip={allowSkip}\n onComplete={onComplete}\n onStepChange={stepCount ? onStepChange : undefined}\n direction={direction}\n steps={steps || Array(count).fill('')}\n hideLabels={hideLabels}\n showCompletedIcons={showCompletedIcons}\n >\n <Box\n aria-label=\"progress\"\n css={{\n width: '100%',\n ...css\n }}\n >\n {children}\n </Box>\n </StepperProvider>\n )\n}\n\nexport const Stepper = Object.assign(StepperComponent, {\n StepBack: StepperStepBack,\n StepForward: StepperStepForward,\n Steps: StepperSteps\n})\n\nStepperComponent.displayName = 'Stepper'\n","import * as RadixSwitch from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledSwitch = styled(RadixSwitch.Root, {\n appearance: 'none',\n backgroundColor: '$grey600',\n border: 'none',\n borderRadius: '$round',\n cursor: 'pointer',\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n transition: 'all 50ms ease-out',\n '&:hover': {\n backgroundColor: '$grey700'\n },\n '&:focus': {\n outline: '2px solid $primary800',\n outlineOffset: '1px'\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary800',\n '&:hover': {\n backgroundColor: '$primary900'\n }\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\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 = ({ size = 'md', ...rest }: SwitchProps) => (\n <StyledSwitch size={size} {...rest}>\n <StyledThumb size={size} />\n </StyledSwitch>\n)\n\nSwitch.displayName = 'Switch'\n","import { Content } from '@radix-ui/react-tabs'\n\nimport { styled } from '~/stitches'\n\nconst StyledTabsContent = styled(Content, {\n flexGrow: 1,\n fontFamily: '$body'\n})\n\nexport const TabsContent = StyledTabsContent\n\nTabsContent.displayName = 'TabsContent'\n","import { Trigger } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Text } from '../text'\n\nconst StyledTabsTriggerHoverBackground = styled('div', {\n position: 'absolute',\n inset: 0,\n height: 'calc(100% + 2px)',\n opacity: 0,\n bg: '$interactive1'\n})\n\nconst StyledTabsTrigger = styled(Trigger, {\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n flexShrink: 0,\n p: '$4',\n userSelect: 'none',\n borderBottom: '2px solid transparent',\n position: 'relative',\n '&[data-state=\"active\"]': {\n color: '$interactive1',\n fontWeight: 600,\n letterSpacing: '-0.005em',\n borderColor: 'currentColor'\n },\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible': {\n color: '$interactive2',\n '& div': {\n opacity: 0.07\n }\n },\n '&:active': {\n color: '$interactive3'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n})\n\nexport const TabsTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTabsTrigger> & { value: string }\n>(({ children, ...rest }, ref) => (\n <StyledTabsTrigger {...rest} ref={ref}>\n <Text size=\"sm\" as=\"span\">\n {children}\n </Text>\n <StyledTabsTriggerHoverBackground />\n </StyledTabsTrigger>\n))\n\nTabsTrigger.displayName = 'TabsTrigger'\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseScrollPositionOptions = {\n element?: HTMLElement | null\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseScrollPositionOutput = {\n left: number\n top: number\n}\n\nexport const useScrollPosition = ({\n element,\n delay = 500,\n delayMethod = 'throttle'\n}: TUseScrollPositionOptions): TUseScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ left: 0, top: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n if (!element) return\n\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ left: element.scrollLeft, top: element.scrollTop })\n })\n\n element.addEventListener('scroll', handleScroll)\n\n return () => {\n element.removeEventListener('scroll', handleScroll)\n }\n }, [element, delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\n\ninterface Size {\n width: number | undefined\n height: number | undefined\n}\n\nexport const useSize = ({\n element,\n delay = 500\n}: {\n element?: HTMLElement | null\n delay?: number\n}): Size => {\n const [size, setSize] = useState<Size>({\n width: undefined,\n height: undefined\n })\n\n const handleResize = useCallback(() => {\n setSize({\n width: element?.clientWidth,\n height: element?.clientHeight\n })\n }, [element])\n\n const elements = useMemo(() => [element], [element])\n\n useResizeObserver({\n delay,\n elements: elements,\n onResize: handleResize\n })\n\n return size\n}\n","import { ChevronLeft, ChevronRight } from '@atom-learning/icons'\nimport { List } from '@radix-ui/react-tabs'\nimport React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\nimport { useScrollPosition } from '~/utilities/hooks/useScrollPosition'\nimport { useSize } from '~/utilities/hooks/useSize'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\nconst StyledContainer = styled(ColorScheme, {\n position: 'relative',\n borderBottom: '1px solid $base4',\n width: '100%'\n})\n\nconst StyledTriggerList = styled(List, {\n flexShrink: 0,\n display: 'flex',\n width: '100%',\n overflowX: 'auto',\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none'\n})\n\nconst StyledChevronActionIcon = styled(ActionIcon, {\n height: '100% !important',\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'pointer',\n background: '$base1 !important',\n color: '$interactive1 !important',\n borderRadius: 0,\n opacity: 0.9\n})\n\nconst SCROLL_STEP = 0.8 // Used to scroll 80% of clientWidth\n\nexport const TabsTriggerList = ({\n children,\n colorScheme = {},\n ...rest\n}: React.ComponentProps<typeof StyledTriggerList> & {\n colorScheme?: TcolorScheme\n}) => {\n const [listRef, setListRefCallback] = useCallbackRefState()\n\n const { width } = useSize({ element: listRef, delay: 500 })\n const { left } = useScrollPosition({\n element: listRef,\n delay: 100,\n delayMethod: 'debounce'\n })\n\n const canScrollXAxis = React.useMemo(() => {\n if (!listRef) return false\n return listRef.scrollWidth > listRef.clientWidth\n }, [width, listRef])\n\n const canScrollLeft = React.useMemo(() => {\n if (!canScrollXAxis) return false\n return left > 0\n }, [left, canScrollXAxis])\n\n const canScrollRight = React.useMemo(() => {\n if (!listRef || !canScrollXAxis) return false\n return listRef.scrollWidth - left - listRef.clientWidth > 1 // 1 rather than 0 to account for sub-pixel widths and calculations\n }, [listRef, left, canScrollXAxis])\n\n const scrollList = React.useCallback(\n (stepModifier) => {\n if (!listRef) return\n listRef.scroll({\n left: listRef.scrollLeft + listRef.clientWidth * stepModifier,\n behavior: 'smooth'\n })\n },\n [listRef]\n )\n\n return (\n <StyledContainer\n base=\"grey1\"\n accent=\"primary1\"\n interactive=\"hiContrast\"\n {...colorScheme}\n {...rest}\n >\n <StyledTriggerList ref={setListRefCallback}>{children}</StyledTriggerList>\n\n {canScrollLeft && (\n <StyledChevronActionIcon\n label=\"scroll left\"\n size=\"md\"\n css={{\n left: 0\n }}\n onClick={() => scrollList(-SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronLeft} />\n </StyledChevronActionIcon>\n )}\n\n {canScrollRight && (\n <StyledChevronActionIcon\n label=\"scroll right\"\n size=\"md\"\n css={{\n right: 0\n }}\n onClick={() => scrollList(SCROLL_STEP)}\n tabIndex={-1}\n >\n <Icon is={ChevronRight} />\n </StyledChevronActionIcon>\n )}\n </StyledContainer>\n )\n}\n\nTabsTriggerList.displayName = 'TabsTriggerList'\n","import { Root } from '@radix-ui/react-tabs'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { TabsContent } from './TabsContent'\nimport { TabsTrigger } from './TabsTrigger'\nimport { TabsTriggerList } from './TabsTriggerList'\n\ntype TabsProps = React.ComponentProps<typeof StyledRoot>\n\nconst StyledRoot = styled(Root, { width: '100%' })\n\nexport const Tabs = Object.assign(StyledRoot, {\n TriggerList: TabsTriggerList,\n Trigger: TabsTrigger,\n Content: TabsContent\n})\n\nStyledRoot.displayName = 'Tabs'\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nconst StyledTextarea = styled('textarea', {\n boxShadow: 'none', // remove iOS default styling\n fontSize: '$md', // prevent iOS zooming on focus\n appearance: 'none',\n borderRadius: '$1',\n boxSizing: 'border-box',\n color: '$grey1000',\n fontFamily: '$body',\n fontWeight: 400,\n lineHeight: 1.4,\n m: 0,\n minHeight: '$7',\n px: '$3',\n py: 'calc($2 + $1)', // offset the line height of the text\n resize: 'vertical',\n width: '100%',\n '&[disabled]': {\n backgroundColor: '$grey200',\n color: '$grey800',\n cursor: 'not-allowed'\n },\n '&::placeholder': {\n color: '$grey700',\n opacity: 1\n },\n variants: {\n appearance: {\n standard: {\n background: 'white',\n border: '1px solid $grey800',\n '&:focus-within': {\n borderColor: '$primary800',\n outline: 'none'\n }\n },\n modern: {\n background: '$grey100',\n border: 'none',\n '&:focus-within': {\n outline: '2px solid $blue800',\n outlineOffset: 1,\n zIndex: 1\n }\n }\n },\n state: {\n error: {}\n }\n },\n defaultVariants: {\n appearance: 'standard'\n },\n compoundVariants: [\n {\n state: 'error',\n appearance: 'standard',\n css: { borderColor: '$danger' }\n },\n {\n state: 'error',\n appearance: 'modern',\n css: {\n bg: '$dangerLight',\n '&:focus-within': {\n outlineColor: '$danger'\n }\n }\n }\n ]\n})\n\nexport type TextareaProps = React.ComponentProps<typeof StyledTextarea>\n\nexport const Textarea: React.ForwardRefExoticComponent<TextareaProps> =\n React.forwardRef((props, ref) => <StyledTextarea {...props} ref={ref} />)\n\nTextarea.displayName = 'Textarea'\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper'\nimport { useFieldError, useFormCustomContext } from '~/components/form'\nimport { Textarea, TextareaProps } from '~/components/textarea'\n\ntype TextareaFieldProps = TextareaProps & FieldElementWrapperProps\n\nexport const TextareaField = ({\n css = undefined,\n hideLabel,\n label,\n name,\n validation,\n prompt,\n description,\n appearance,\n ...remainingProps\n}: TextareaFieldProps) => {\n const { register } = useFormContext()\n const context = useFormCustomContext()\n const { error } = useFieldError(name)\n const ref = validation ? register(validation) : register\n const formAppearance = context?.appearance || appearance\n\n return (\n <FieldWrapper\n css={css}\n description={description}\n error={error}\n fieldId={name}\n hideLabel={hideLabel}\n label={label}\n prompt={prompt}\n required={Boolean(validation?.required)}\n appearance={formAppearance}\n >\n <Textarea\n id={name}\n name={name}\n ref={ref}\n appearance={formAppearance}\n {...(error && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nTextareaField.displayName = 'TextareaField'\n","import React from 'react'\n\nimport { ColorScheme, TcolorScheme } from '~/experiments/color-scheme'\nimport { styled } from '~/stitches'\n\nexport const StyledTile = styled('div', {\n all: 'unset', // important for buttons etc\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative', // for pseudo-elements\n border: '1px solid',\n bg: '$base1',\n color: '$foreground',\n borderColor: 'transparent',\n variants: {\n borderRadius: {\n sm: { borderRadius: '$0' },\n md: { borderRadius: '$1' },\n lg: { borderRadius: '$3' }\n },\n border: {\n true: { borderColor: '$base3' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $base1 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n }\n }\n})\n\ntype TTileProps = React.ComponentProps<typeof StyledTile> & {\n colorScheme?: TcolorScheme\n}\n\nexport const Tile: React.ForwardRefExoticComponent<TTileProps> =\n React.forwardRef(\n ({ children, borderRadius = 'lg', colorScheme = {}, ...rest }, ref) => (\n <ColorScheme\n asChild\n base=\"grey1\"\n accent=\"primary2\"\n interactive=\"loContrast\"\n {...colorScheme}\n >\n <StyledTile ref={ref} borderRadius={borderRadius} {...rest}>\n {children}\n </StyledTile>\n </ColorScheme>\n )\n )\n\nTile.displayName = 'Tile'\n","import { Flex } from '~/components/flex'\n\nexport const TileGroup = Flex\n","import React from 'react'\n\nimport { Tile } from '~/components/tile'\nimport { styled } from '~/stitches'\nimport { NavigatorActions } from '~/types'\n\nconst StyledTileInteractive = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Tile, {\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n '&:not([disabled])': {\n cursor: 'pointer',\n transform: 'translateY(0)',\n transition: 'transform 250ms ease',\n '&::after': {\n content: '',\n position: 'absolute',\n inset: 0,\n boxShadow: '$2',\n opacity: 0,\n transition: 'opacity 250ms ease-out',\n borderRadius: 'inherit',\n pointerEvents: 'none'\n },\n '&:hover': {\n transform: 'translateY(-$space$0)',\n '&::after': {\n opacity: 1\n }\n },\n '&:active': {\n bg: '$base2'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n})\n\ntype TTileInteractiveProps = React.ComponentProps<\n typeof StyledTileInteractive\n> & {\n as?: React.ComponentType | React.ElementType\n} & React.ButtonHTMLAttributes<HTMLButtonElement> &\n NavigatorActions\n\nexport const TileInteractive: React.ForwardRefExoticComponent<TTileInteractiveProps> =\n React.forwardRef(({ onClick, href, type = 'button', as, ...rest }, ref) => {\n const isLink = !!href\n const elementSpecificProps = isLink\n ? {\n as: as || ('a' as React.ElementType),\n href,\n onClick: undefined\n }\n : { as: as || ('button' as React.ElementType), type, onClick }\n\n return (\n <StyledTileInteractive {...rest} {...elementSpecificProps} ref={ref} />\n )\n })\n\nTileInteractive.displayName = 'TileInteractive'\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport * as React from 'react'\n\nimport { TileInteractive } from '~/components/tile-interactive'\nimport { styled } from '~/stitches'\n\nconst StyledTileToggleGroupItem = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(TileInteractive, {\n '&:not([disabled])': {\n '&[data-state=\"on\"]': {\n '&:hover': {\n bg: '$interactive2'\n },\n '&:active': {\n bg: '$interactive3'\n }\n }\n },\n '&[data-state=\"on\"]': {\n bg: '$interactive1',\n borderColor: '$accent8',\n '&::before': {\n content: '',\n position: 'absolute',\n inset: -1, // account for 1px Tile border\n boxShadow: 'inset $colors$accent8 0px 0px 0px 2px',\n borderRadius: 'inherit',\n zIndex: 1 // so it's over anything nested which touches sides\n }\n }\n})\n\ntype TTileToggleGroupItem = React.ComponentProps<typeof ToggleGroup.Item> &\n React.ComponentProps<typeof StyledTileToggleGroupItem>\n\nexport const TileToggleGroupItem = ({\n children,\n ...rest\n}: TTileToggleGroupItem) => {\n return (\n <ToggleGroup.Item {...rest} asChild>\n <StyledTileToggleGroupItem as=\"button\">\n {children}\n </StyledTileToggleGroupItem>\n </ToggleGroup.Item>\n )\n}\n","import * as React from 'react'\n\nimport { TileGroup } from '~/components/tile'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\ntype TTileToggleGroupRootProps = React.ComponentProps<typeof TileGroup> &\n React.ComponentProps<typeof ToggleGroup.Root>\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal'\n ? 'row'\n : orientation === 'vertical'\n ? 'column'\n : undefined\n\nexport const TileToggleGroupRoot: React.ForwardRefExoticComponent<TTileToggleGroupRootProps> =\n React.forwardRef((props, ref) => {\n const direction = orientationToDirection(props.orientation)\n return (\n <TileGroup\n ref={ref}\n as={ToggleGroup.Root}\n direction={direction}\n gap=\"2\"\n wrap=\"wrap\"\n {...props}\n />\n )\n })\n","import { TileToggleGroupItem } from './TileToggleGroupItem'\nimport { TileToggleGroupRoot } from './TileToggleGroupRoot'\n\ntype TTileToggleGroup = typeof TileToggleGroupRoot & {\n Item: typeof TileToggleGroupItem\n}\n\nexport const TileToggleGroup = TileToggleGroupRoot as TTileToggleGroup\nTileToggleGroup.Item = TileToggleGroupItem\nTileToggleGroup.displayName = 'TileToggleGroup'\n","import { Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { CSS, keyframes, styled } from '~/stitches'\nexport { default as toast } from 'react-hot-toast'\nimport type { Toast as ToastType } from 'react-hot-toast/dist/core/types'\n\nimport { Spacer } from '../spacer'\nimport { Text } from '../text'\nimport { Toast } from './Toast'\n\nconst ToastProviderBase = styled('div', {\n position: 'fixed',\n zIndex: 2147483647,\n inset: '$2',\n pointerEvents: 'none',\n '@sm': {\n top: '$3'\n }\n})\n\nconst slideIn = keyframes({\n '0%': { transform: 'translateY(-100%)', opacity: 0 },\n '100%': { transform: `translateY(0)`, opacity: 1 }\n})\n\nconst slideOut = keyframes({\n '0%': { transform: `translateY(0)`, opacity: 1 },\n '100%': { transform: `translateY(-100%)`, opacity: 0 }\n})\n\nconst ToastWrapper = styled('div', {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n boxSizing: 'border-box',\n minHeight: '$5',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst ToastContext = React.createContext<Pick<\n ToastType,\n 'type' | 'id' | 'message'\n> | null>(null)\n\nexport const ToastProvider = ({\n children,\n css\n}: React.PropsWithChildren<{ css?: CSS }>) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <ToastProviderBase\n onMouseEnter={startPause}\n onMouseLeave={endPause}\n css={css}\n >\n {toasts.map((toast) => {\n const { message: children } = toast\n\n const offset = calculateOffset(toast.id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el: HTMLDivElement | null) => {\n if (el && toast.height === undefined) {\n updateHeight(toast.id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastWrapper\n key={toast.id}\n ref={ref}\n visible={toast.visible}\n role={toast.role}\n aria-live={toast.ariaLive}\n style={{ '--offset': `${offset}px` }}\n css={{ top: 'var(--offset)' }}\n >\n <ToastContext.Provider value={toast}>\n {typeof children === 'function' ? (\n children(toast)\n ) : React.isValidElement(children) ? (\n children\n ) : (\n <Toast css={{ width: '400px' }}>\n {toast.type === 'error' && <Toast.Icon is={Error} />}\n <Text>{children}</Text>\n <Spacer />\n <Toast.Close />\n </Toast>\n )}\n </ToastContext.Provider>\n </ToastWrapper>\n )\n })}\n </ToastProviderBase>\n {children}\n </>\n )\n}\n\nexport const useToastContext = () => {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastContext must be used within a ToastProvider')\n }\n\n return context\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast } from 'react-hot-toast/dist/core/types'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { useToastContext } from './ToastProvider'\n\nexport interface ToastCloseButtonProps\n extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {\n onDismiss?: () => void\n label?: string\n}\n\nexport const ToastCloseButton = ({\n onDismiss,\n label = 'Close alert',\n ...rest\n}: ToastCloseButtonProps): JSX.Element => {\n const { id } = useToastContext()\n\n return (\n <ActionIcon\n css={{\n color: 'white',\n mr: '-$2',\n '&:hover,&:focus': { color: 'white', opacity: 0.8 }\n }}\n label={label}\n onClick={() => {\n toast.dismiss(id)\n onDismiss?.()\n }}\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n}\n","import React from 'react'\n\nimport { Icon } from '../icon'\n\nexport const ToastIcon = (\n props: React.ComponentProps<typeof Icon>\n): JSX.Element => (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} {...props} />\n)\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { ToastCloseButton } from './ToastCloseButton'\nimport { ToastIcon } from './ToastIcon'\nimport { useToastContext } from './ToastProvider'\n\nexport const StyledToast = styled(Flex, {\n pointerEvents: 'auto',\n borderRadius: '$3',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n minHeight: '$5',\n position: 'relative',\n px: '$4',\n py: '$1',\n transition: 'background-color 125ms ease-out',\n '@allowMotion': {\n transition: 'background-color 125ms ease-out, transform 125ms ease-out'\n },\n variants: {\n type: {\n loading: { bg: '$info' },\n blank: { bg: '$info' },\n success: { bg: '$success' },\n error: { bg: '$danger' }\n }\n }\n})\n\nexport const Toast = (props: React.ComponentProps<typeof StyledToast>) => {\n const { type } = useToastContext()\n return <StyledToast align=\"center\" type={props.type || type} {...props} />\n}\n\nToast.Icon = ToastIcon\nToast.Close = ToastCloseButton\n","import * as ToggleGroup from '@radix-ui/react-toggle-group'\n\nimport { styled } from '~/stitches'\n\nexport const StyledItem = styled(ToggleGroup.Item, {\n cursor: 'pointer',\n '&[disabled]': {\n opacity: 0.3,\n cursor: 'not-allowed'\n },\n variants: {\n theme: {\n standard: {\n bg: 'white',\n color: '$grey800',\n border: '1px solid $grey600',\n '&::before': {\n background: '$grey600'\n },\n '&:not([disabled])': {\n '&:hover, &:focus-visible, &[data-state=\"on\"]': {\n '&::before': {\n background: 'none'\n }\n },\n '&:hover': {\n borderColor: 'currentColor !important',\n color: '$primary900'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`,\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px, white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$primary800',\n borderColor: 'currentColor !important',\n boxShadow: 'inset currentColor 0px 0px 0px 1px'\n }\n },\n modern: {\n bg: '$grey200',\n borderRadius: '$1',\n overflow: 'hidden',\n border: '0',\n '&:not([disabled])': {\n '&:hover': {\n color: '$primary900'\n },\n '&:focus-visible': {\n outline: 'none',\n position: 'relative',\n zIndex: 1,\n boxShadow: `white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`,\n '&[data-state=\"off\"]': {\n borderColor: '$grey600 !important'\n },\n '&[data-state=\"on\"]': {\n boxShadow: `inset currentColor 0px 0px 0px 1px white 0px 0px 0px 2px, $colors$primary800 0px 0px 0px 4px`\n }\n }\n },\n '&[data-state=\"on\"]': {\n color: '$grey800',\n border: '1px solid $grey200 !important',\n bg: 'white',\n boxShadow: 'none !important'\n }\n }\n }\n }\n})\n\nexport const ToggleGroupItem = StyledItem\n","import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Icon } from '../icon'\nimport { StyledItem } from './ToggleGroupItem'\n\nexport const StyledButton = styled(StyledItem, {\n flexGrow: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n lineHeight: 1,\n py: '$1',\n variants: {\n size: {\n sm: {\n fontSize: `$sm`,\n px: '$4',\n minHeight: '32px',\n '& > *:not(:last-child)': {\n mr: '$2'\n }\n },\n md: {\n fontSize: `$md`,\n px: '$5',\n minHeight: '40px',\n '& > *:not(:last-child)': {\n mr: '$3'\n }\n },\n lg: {\n fontSize: `$lg`,\n px: '$5',\n minHeight: '48px',\n '& > *:not(:last-child)': {\n mr: '$3'\n }\n }\n },\n isIconOnly: {\n true: {}\n },\n theme: {\n standard: {},\n modern: {}\n }\n },\n compoundVariants: [\n {\n isIconOnly: true,\n size: 'sm',\n css: {\n minWidth: '32px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n css: {\n minWidth: '40px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n css: {\n minWidth: '48px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'sm',\n theme: 'modern',\n css: {\n minWidth: '40px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'md',\n theme: 'modern',\n css: {\n minWidth: '48px',\n p: 0\n }\n },\n {\n isIconOnly: true,\n size: 'lg',\n theme: 'modern',\n css: {\n minWidth: '60px',\n p: 0\n }\n }\n ]\n})\n\nexport const ToggleGroupButton: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof StyledButton>\n> = React.forwardRef(\n ({ size = 'md', theme = 'standard', children, ...rest }, ref) => {\n const childrenArray = React.Children.toArray(children)\n const isSingleChild = childrenArray.length <= 1\n const isIconOnly =\n isSingleChild &&\n React.isValidElement(childrenArray[0]) &&\n childrenArray[0]?.type === Icon\n\n return (\n <StyledButton\n ref={ref}\n size={size}\n isIconOnly={isIconOnly}\n theme={theme}\n {...rest}\n >\n {\n childrenArray.map((child) => {\n if (\n !isSingleChild &&\n (typeof child === 'string' || typeof child === 'number')\n )\n return <span key={child}>{child}</span>\n if (React.isValidElement(child)) {\n if (child?.type === Icon)\n return React.cloneElement(child, { ...child.props, size })\n }\n return child\n }) as React.ReactElement[]\n }\n </StyledButton>\n )\n }\n)\n","import * as React from 'react'\n\nimport { Flex } from '~/components/flex'\nimport { styled } from '~/stitches'\nimport { ToggleGroup } from '~/utilities/radix-overrides/toggle-group'\n\nimport { StyledItem } from './ToggleGroupItem'\n\ntype RootType = {\n orientation?: 'horizontal' | 'vertical'\n isFullWidth?: boolean\n}\n\nexport const StyledRoot = styled(ToggleGroup.Root, {\n width: 'fit-content',\n variants: {\n isFullWidth: {\n true: {\n width: '100%',\n '& [data-radix-collection-item]': {\n flexBasis: 0,\n flexGrow: 1\n }\n },\n false: {\n width: 'auto'\n }\n },\n hasGap: {\n true: {\n '& [data-radix-collection-item]': {\n borderRadius: '$1'\n }\n },\n false: {\n borderRadius: '$1',\n '& [data-radix-collection-item]': {\n position: 'relative',\n '&:not(:last-child)': {\n '&::before': {\n content: '',\n position: 'absolute'\n }\n }\n }\n }\n },\n direction: {\n column: {},\n row: {}\n },\n theme: {\n standard: {},\n modern: { bg: '$grey200' }\n }\n },\n compoundVariants: [\n {\n hasGap: false,\n direction: 'row',\n theme: 'standard',\n css: {\n '& [data-radix-collection-item]': {\n borderRadius: 0,\n '&:not(:last-child)::before': {\n top: '-1px',\n height: 'calc(100% + 2px)',\n width: '1px',\n right: '0',\n transform: 'translateX(150%)'\n },\n '&:not(:first-child)': {\n borderLeftColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderRightColor: 'transparent'\n },\n '&:first-child': {\n borderTopLeftRadius: '$1',\n borderBottomLeftRadius: '$1'\n },\n '&:last-child': {\n borderTopRightRadius: '$1',\n borderBottomRightRadius: '$1'\n }\n }\n }\n },\n {\n hasGap: false,\n direction: 'column',\n theme: 'standard',\n css: {\n '& [data-radix-collection-item]': {\n '&:not(:last-child)::before': {\n bottom: 0,\n left: '-1px',\n height: '1px',\n width: 'calc(100% + 2px)',\n transform: 'translateY(150%)'\n },\n '&:first-child': {\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0'\n },\n '&:last-child': {\n borderBottomLeftRadius: '$0',\n borderBottomRightRadius: '$0'\n },\n '&:not(:first-child)': {\n borderTopColor: 'transparent'\n },\n '&:not(:last-child)': {\n borderBottomColor: 'transparent'\n }\n }\n }\n },\n {\n hasGap: false,\n theme: 'modern',\n css: {}\n },\n {\n hasGap: false,\n theme: 'standard',\n css: {\n bg: 'white',\n '& [data-radix-collection-item]': {\n bg: 'transparent',\n borderRadius: 0\n }\n }\n }\n ]\n})\n\nconst orientationToDirection = (orientation) =>\n orientation === 'horizontal' ? 'row' : 'column'\n\nexport const ToggleGroupRoot: React.ForwardRefExoticComponent<\n Pick<React.ComponentProps<typeof Flex>, 'gap' | 'wrap'> &\n React.ComponentProps<typeof StyledRoot> &\n RootType\n> = React.forwardRef(\n (\n {\n orientation = 'horizontal',\n gap,\n isFullWidth,\n children,\n theme = 'standard',\n wrap,\n ...rest\n },\n ref\n ) => {\n const hasGap = typeof gap === 'number'\n const direction = orientationToDirection(orientation)\n return (\n <StyledRoot\n ref={ref}\n direction={direction}\n hasGap={hasGap}\n isFullWidth={isFullWidth}\n orientation={orientation}\n theme={theme}\n {...rest}\n >\n <Flex\n direction={direction}\n gap={hasGap ? gap : undefined}\n wrap={wrap || 'nowrap'}\n >\n {\n React.Children.toArray(children).map((child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { ...child.props, theme })\n }\n return child\n }) as React.ReactElement[]\n }\n </Flex>\n </StyledRoot>\n )\n }\n)\n","import { ToggleGroupButton as Button } from './ToggleGroupButton'\nimport { ToggleGroupItem as Item } from './ToggleGroupItem'\nimport { ToggleGroupRoot as Root } from './ToggleGroupRoot'\nexport const ToggleGroup = { Item, Button, Root }\n","import { useEffect, useMemo, useState } from 'react'\nimport { debounce, throttle } from 'throttle-debounce'\n\ntype TUseWindowScrollPositionOptions = {\n delay?: number\n delayMethod?: 'throttle' | 'debounce'\n}\n\ntype TUseWindowScrollPositionOutput = {\n x: number\n y: number\n}\n\nexport const useWindowScrollPosition = ({\n delay = 500,\n delayMethod = 'throttle'\n}: TUseWindowScrollPositionOptions = {}): TUseWindowScrollPositionOutput => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const delayMethodFn = useMemo(\n () => (delayMethod === 'debounce' ? debounce : throttle),\n [delayMethod]\n )\n\n useEffect(() => {\n const handleScroll = delayMethodFn(delay, () => {\n setScrollPosition({ x: window.scrollX, y: window.scrollY })\n })\n\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [delayMethodFn, delay])\n\n return scrollPosition\n}\n","import { createTheme } from '~/stitches'\n\nconst light = createTheme({\n colors: {\n background: 'white',\n divider: '$grey200',\n borderBottom: '$grey200'\n }\n})\n\nexport const colorSchemes = {\n light\n}\n","import React from 'react'\n\nimport { ActionIcon } from '../action-icon'\nimport { Icon } from '../icon'\n\ntype TopBarActionIconProps = Omit<\n React.ComponentProps<typeof ActionIcon>,\n 'size' | 'children'\n> & { icon: React.FC<React.SVGProps<SVGSVGElement>>; label: string }\n\nexport const TopBarActionIcon: React.ForwardRefExoticComponent<TopBarActionIconProps> =\n React.forwardRef(({ icon, ...rest }, forwardedRef) => {\n return (\n <ActionIcon\n size=\"md\"\n appearance=\"simple\"\n theme=\"neutral\"\n ref={forwardedRef}\n {...rest}\n >\n <Icon is={icon} />\n </ActionIcon>\n )\n })\n","import React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Image } from '../image'\nimport { Text } from '../text'\n\nexport const TopBarBrandLogo = ({\n src,\n alt = 'Atom Learning logo',\n css\n}: Pick<\n React.ComponentProps<typeof Image>,\n 'src' | 'alt' | 'css'\n>): JSX.Element => {\n return (\n <Image\n src={src}\n alt={alt}\n css={{\n height: '$3',\n mr: '$3',\n width: 'auto',\n ...css\n }}\n />\n )\n}\n\nexport const TopBarBrandName = styled(Text, {\n color: '$grey800'\n})\n\nexport const TopBarBrand = styled('a', {\n display: 'flex',\n alignItems: 'center',\n textDecoration: 'none',\n color: '$grey800',\n '&:hover, &:focus': { textDecoration: 'none' }\n})\n","import * as React from 'react'\n\nimport { CSS, styled } from '~/stitches'\nimport { useWindowScrollPosition } from '~/utilities/hooks/useWindowScrollPosition'\n\nimport { Divider } from '../divider'\nimport { Flex } from '../flex'\nimport { colorSchemes as topBarColorSchemes } from './stitches.topBar.colorscheme.config'\nimport { TopBarActionIcon } from './TopBarActionIcon'\nimport { TopBarBrand, TopBarBrandLogo, TopBarBrandName } from './TopBarBrand'\n\nconst TopBarDivider = () => (\n <Divider orientation=\"vertical\" css={{ height: '$2', bg: '$divider' }} />\n)\n\nconst StyledRoot = styled('div', {\n bg: '$background',\n position: 'sticky',\n display: 'flex',\n alignItems: 'center',\n\n zIndex: 1,\n transition: 'box-shadow 200ms ease-out',\n variants: {\n hasScrolled: {\n true: { boxShadow: '0px 4px 4px -2px rgba(31, 31, 31, 0.1)' }\n },\n size: {\n md: { height: '$6' },\n lg: { height: '$7' }\n },\n diffused: {\n true: {\n '@supports (background-color: color-mix(in hsl, white 50%, transparent))':\n {\n bg: 'color-mix(in hsl, $background 70%, transparent)',\n backdropFilter: 'blur(8px)'\n }\n }\n },\n appearance: {\n standard: {\n width: '100vw',\n maxWidth: '100%',\n top: '0',\n borderBottom: '1px solid $borderBottom'\n },\n rounded: {\n width: '100%',\n top: '$2',\n p: '$2',\n border: '1px solid #ffffff',\n borderRadius: '$round'\n }\n }\n }\n})\n\nconst Container = styled(Flex, {\n alignItems: 'center',\n height: '$4',\n mx: '$4',\n width: '100%',\n '@md': {\n mx: '$5'\n }\n})\n\ntype StyledRootProps = React.ComponentProps<typeof StyledRoot>\n\ntype TopBarProps = StyledRootProps & {\n css?: CSS\n className?: string\n}\n\nconst TopBarComponent = ({\n size = 'md',\n diffused,\n className = topBarColorSchemes['light'],\n appearance = 'standard',\n ...props\n}: React.PropsWithChildren<TopBarProps>) => {\n const { y: scrollPositionY } = useWindowScrollPosition()\n\n return (\n <StyledRoot\n className={className}\n hasScrolled={!!scrollPositionY}\n diffused={diffused}\n appearance={appearance}\n size={size}\n >\n <Container {...props} />\n </StyledRoot>\n )\n}\n\nexport const TopBar = Object.assign(TopBarComponent, {\n Brand: TopBarBrand,\n BrandLogo: TopBarBrandLogo,\n BrandName: TopBarBrandName,\n ActionIcon: TopBarActionIcon,\n Divider: TopBarDivider\n})\n\nTopBarComponent.displayName = 'TopBar'\n","import * as React from 'react'\n// Note: Only loading vimeo to reduce the bundle size https://www.npmjs.com/package/react-player\nimport ReactPlayer from 'react-player/vimeo'\n\nimport { Box } from '~/components/box'\nimport { CSS, styled } from '~/stitches'\nimport { CSSWrapper } from '~/utilities/css-wrapper'\nimport { Override } from '~/utilities/types'\n\nconst StyledVideo = styled(ReactPlayer, {})\n\ntype VideoProps = Override<\n React.ComponentProps<typeof StyledVideo>,\n {\n id: string\n ratio?: number\n css?: CSS\n }\n>\n\nexport const Video: React.ForwardRefExoticComponent<VideoProps> =\n React.forwardRef(({ id, ratio = 9 / 16, css, ...remainingProps }, ref) => (\n <CSSWrapper css={css}>\n <Box\n style={{ '--ratio': `${ratio * 100}%` }}\n css={{\n borderRadius: '$0',\n position: 'relative',\n paddingTop: 'var(--ratio)',\n overflow: 'hidden',\n height: 0,\n width: '100%'\n }}\n >\n <StyledVideo\n {...remainingProps}\n role=\"figure\"\n url={`https://player.vimeo.com/video/${id}`}\n height=\"100%\"\n width=\"100%\"\n css={{ position: 'absolute', top: 0, left: 0 }}\n ref={ref}\n />\n </Box>\n </CSSWrapper>\n ))\n\nVideo.displayName = 'Video'\n","import { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { styled } from '~/stitches'\nimport { useCallbackRefState } from '~/utilities/hooks/useCallbackRef'\n\nimport { Box } from '../box'\nimport { Text } from '../text'\n\nconst StyledSlot = styled(Slot)\n\ntype KeyboardEventWindowOrElement =\n | KeyboardEvent\n | React.KeyboardEvent<HTMLDivElement>\ntype ShortcutConfig = Partial<KeyboardEvent>\n\ntype KeyboardShortcutProps = React.ComponentProps<typeof Box> & {\n asChild?: boolean\n config: {\n shortcut: ShortcutConfig\n action: ({\n event,\n shortcut\n }: {\n event: KeyboardEvent | React.KeyboardEvent<HTMLDivElement>\n shortcut: ShortcutConfig\n }) => void\n }[]\n targetWindow?: boolean\n onKeyDown?: (e: KeyboardEventWindowOrElement) => void\n}\n\nexport const KeyboardShortcut: React.ForwardRefExoticComponent<KeyboardShortcutProps> =\n React.forwardRef(\n ({ asChild, config, targetWindow = false, onKeyDown, ...rest }, ref) => {\n const [targetElRef, setTargetElRef] = useCallbackRefState()\n React.useImperativeHandle(ref, () => targetElRef as HTMLDivElement)\n\n const handleOnKeydown = React.useCallback(\n (e: KeyboardEventWindowOrElement) => {\n config.forEach(({ shortcut, action }) => {\n if (\n Object.entries(shortcut).every(([key, value]) => e[key] === value)\n )\n action({ event: e, shortcut })\n })\n onKeyDown?.(e)\n },\n [config, onKeyDown]\n )\n\n React.useEffect(() => {\n if (targetWindow) window.addEventListener('keydown', handleOnKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleOnKeydown)\n }\n }, [targetWindow, handleOnKeydown])\n\n const Component = asChild ? StyledSlot : Box\n\n return (\n <Component\n onKeyDown={targetWindow ? undefined : handleOnKeydown}\n ref={setTargetElRef}\n {...rest}\n />\n )\n }\n )\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n\nconst StyledKeyboardShortcutIndicator = styled.withConfig({\n shouldForwardStitchesProp: (propName) => ['as'].includes(propName)\n})(Text, {\n bg: '$grey100',\n color: '$textSubtle',\n px: '$2',\n py: '$0',\n minWidth: '$2',\n minHeight: '$2',\n fontWeight: 400,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$1',\n flexShrink: 0\n})\n\ntype KeyboardShortcutIndicatorProps = React.ComponentProps<\n typeof StyledKeyboardShortcutIndicator\n>\n\nexport const KeyboardShortcutIndicator = (\n props: KeyboardShortcutIndicatorProps\n) => {\n return <StyledKeyboardShortcutIndicator size=\"sm\" as=\"kbd\" {...props} />\n}\n\nKeyboardShortcutIndicator.displayName = 'KeyboardShortcut'\n","import {\n KeyboardShortcut as KeyboardShortcutComponent,\n KeyboardShortcutIndicator\n} from './KeyboardShortcut'\n\nexport const KeyboardShortcut = Object.assign(KeyboardShortcutComponent, {\n Indicator: KeyboardShortcutIndicator\n})\n\nKeyboardShortcut.displayName = 'KeyboardShortcut'\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport type { SegmentedControlRootProps } from './SegmentedControlRoot'\n\nexport interface SegmentedControlContextValue\n extends Pick<\n React.ComponentProps<typeof Tabs>,\n 'defaultValue' | 'value' | 'onValueChange'\n > {\n size: SegmentedControlRootProps['size']\n theme: SegmentedControlTheme\n}\n\nexport const SegmentedControlContext =\n React.createContext<SegmentedControlContextValue>({\n size: 'md',\n theme: 'primary',\n defaultValue: '',\n value: '',\n onValueChange: () => null\n })\n","import * as React from 'react'\n\nimport { Badge } from '../badge'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst badgeSizeMap = {\n sm: 'xs',\n md: 'xs',\n lg: 'sm'\n}\n\nexport const SegmentedControlBadge = ({\n css,\n ...props\n}: Omit<React.ComponentProps<typeof Badge>, 'size'>): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return (\n <Badge\n {...props}\n css={{ border: 'none', ...css, fontWeight: 'normal' }}\n size={badgeSizeMap[size as string]}\n />\n )\n}\n","import * as React from 'react'\n\nimport { Tabs } from '../tabs'\n\nexport const SegmentedControlContent = Tabs.Content\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(Text, {\n fontFamily: '$body',\n color: '$textSubtle',\n fontWeight: 400,\n variants: {\n size: {\n sm: {\n fontSize: '$xs'\n },\n md: {\n fontSize: '$sm'\n },\n lg: {\n fontSize: '$md'\n }\n }\n }\n})\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(Text, {\n fontFamily: '$body',\n color: '$textRegular',\n variants: {\n size: {\n sm: {\n fontSize: '$sm'\n },\n md: {\n fontSize: '$md'\n },\n lg: {\n fontSize: '$lg'\n }\n }\n }\n})\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n","import * as React from 'react'\n\nimport { Icon } from '../icon'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst sizeMap = {\n sm: 'sm',\n md: 'md',\n lg: 'md'\n}\n\nexport const SegmentedControlIcon = (\n props: Omit<React.ComponentProps<typeof Icon>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <Icon {...props} size={sizeMap[size as string]} />\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledItem = styled(Tabs.Trigger, {\n position: 'relative',\n bg: 'transparent',\n borderRadius: '$2',\n p: 0,\n zIndex: 2,\n minWidth: '140px',\n border: '2px solid transparent',\n variants: {\n theme: {\n primary: {\n '&[data-state=inactive]': {\n '&:hover': {\n bg: '$primary300'\n }\n },\n '&:focus-visible': {\n borderColor: '$primary800'\n }\n },\n marsh: {\n '&[data-state=inactive]': {\n '&:hover': {\n bg: '$marsh300'\n }\n },\n '&:focus-visible': {\n borderColor: '$marsh800'\n }\n }\n },\n size: {\n sm: {\n flex: 'unset',\n p: '$4 $24',\n gap: '$3'\n },\n md: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n },\n lg: {\n flex: 1,\n p: '$24 $4',\n gap: '$4'\n }\n }\n },\n '& > div': { display: 'none' },\n '& > span': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n '&[data-state=active]': {\n boxShadow: 'none',\n border: '2px solid transparent',\n fontWeight: 600,\n color: '$textBold',\n '&:focus-visible': {\n boxShadow: 'none',\n borderColor: '$primary800'\n }\n },\n '&[data-state=inactive]': {\n fontWeight: 400,\n color: '$grey900'\n },\n '&[disabled]': {\n opacity: 0.3\n }\n})\n\nexport const SegmentedControlItem = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentProps<typeof StyledItem>, 'size'>\n>(({ children, ...props }, ref) => {\n const { size, theme } = React.useContext(SegmentedControlContext)\n\n return (\n <StyledItem {...props} theme={theme} size={size} ref={ref}>\n {children}\n </StyledItem>\n )\n})\n\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Box } from '../box'\nimport { Tabs } from '../tabs'\nimport { SegmentedControlContext } from './SegmentedControlContext'\nimport { SegmentedControlItem } from './SegmentedControlItem'\n\nconst StyledTriggerList = styled(Tabs.TriggerList, {\n position: 'relative',\n p: '$1',\n borderRadius: '$3',\n overflow: 'hidden',\n variants: {\n theme: {\n primary: { bg: '$primary200' },\n marsh: { bg: '$marsh200' }\n }\n },\n '& > div[role=\"tablist\"]': {\n position: 'relative'\n },\n '& > button': {\n zIndex: 2\n }\n})\n\nconst SelectionIndicator = styled(Box, {\n content: '',\n position: 'absolute',\n bg: 'white',\n borderRadius: '$2',\n variants: {\n interacted: {\n true: {\n transition: 'all 300ms ease'\n },\n false: {\n transition: 'none'\n }\n }\n }\n})\n\nexport const SegmentedControlItemList = (\n props: React.ComponentProps<typeof Tabs.TriggerList>\n): JSX.Element => {\n const { theme, defaultValue, value } = React.useContext(\n SegmentedControlContext\n )\n\n const tabsRef = React.useRef<(HTMLElement | null)[]>([])\n\n const selectedIndex = React.Children.toArray(props.children).findIndex(\n (child) => (child as React.ReactElement)?.props.value === value\n )\n\n const [indicatorStyles, setIndicatorStyles] = React.useState({\n left: 0,\n height: 0,\n width: 0\n })\n const [hasInteracted, setHasInteracted] = React.useState(false)\n\n const updateIndicatorPosition = React.useCallback(() => {\n const currentTab = tabsRef.current[selectedIndex]\n if (!currentTab) return\n\n const { width, height } = currentTab.getBoundingClientRect()\n setIndicatorStyles({ left: currentTab.offsetLeft, height, width })\n }, [selectedIndex])\n\n React.useEffect(() => {\n const resizeObserver = new ResizeObserver(updateIndicatorPosition)\n const currentTabs = tabsRef.current\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.observe(tab)\n })\n\n return () => {\n currentTabs.forEach((tab) => {\n if (tab) resizeObserver.unobserve(tab)\n })\n resizeObserver.disconnect()\n }\n }, [selectedIndex, updateIndicatorPosition])\n\n React.useEffect(() => {\n window.addEventListener('resize', updateIndicatorPosition)\n return () => {\n window.removeEventListener('resize', updateIndicatorPosition)\n }\n }, [updateIndicatorPosition])\n\n React.useEffect(() => {\n updateIndicatorPosition()\n }, [selectedIndex, updateIndicatorPosition])\n\n return (\n <StyledTriggerList theme={theme} defaultValue={defaultValue} {...props}>\n <SelectionIndicator\n css={{\n ...indicatorStyles\n }}\n interacted={hasInteracted}\n />\n {React.Children.map(props.children, (child, index) => {\n if (!React.isValidElement(child)) {\n throw new Error(\n `Child passed to SegmentedControlItemList is not a valid element`\n )\n }\n\n return React.cloneElement(\n child as React.ReactElement<\n React.ComponentProps<typeof SegmentedControlItem>\n >,\n {\n onClick: (e) => {\n setHasInteracted(true)\n if (child.props.onClick) child.props.onClick(e)\n },\n ref: (el) => (tabsRef.current[index] = el)\n }\n )\n })}\n </StyledTriggerList>\n )\n}\n","import * as React from 'react'\n\nimport { styled } from '../../stitches'\nimport { Tabs } from '../tabs'\nimport type { SegmentedControlTheme } from './SegmentedControl.types'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledSegmentedControlRoot = styled(Tabs, {\n '& > div': { border: 'none' },\n variants: {\n size: {\n sm: {\n width: 'unset'\n },\n md: {},\n lg: {}\n }\n }\n})\n\nexport interface SegmentedControlRootProps\n extends React.ComponentProps<typeof StyledSegmentedControlRoot> {\n theme?: SegmentedControlTheme\n}\n\nexport const SegmentedControlRoot = ({\n size,\n theme = 'primary',\n defaultValue,\n children,\n ...props\n}: React.PropsWithChildren<SegmentedControlRootProps>): React.JSX.Element => {\n const isControlled = props.value !== undefined\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n\n const currentValue = isControlled ? props.value : internalValue\n const handleValueChange = isControlled\n ? props.onValueChange\n : setInternalValue\n\n React.useEffect(() => {\n if (!isControlled && defaultValue) {\n setInternalValue(defaultValue)\n }\n }, [defaultValue, isControlled])\n\n const value = React.useMemo(\n () => ({\n size,\n theme,\n defaultValue,\n onValueChange: handleValueChange,\n value: currentValue\n }),\n [size, theme, defaultValue, handleValueChange, currentValue]\n )\n\n return (\n <SegmentedControlContext.Provider value={value}>\n <StyledSegmentedControlRoot\n size={size}\n value={currentValue}\n onValueChange={handleValueChange}\n {...props}\n >\n {children}\n </StyledSegmentedControlRoot>\n </SegmentedControlContext.Provider>\n )\n}\n","import { SegmentedControlBadge } from './SegmentedControlBadge'\nimport { SegmentedControlContent } from './SegmentedControlContent'\nimport { SegmentedControlDescription } from './SegmentedControlDescription'\nimport { SegmentedControlHeading } from './SegmentedControlHeading'\nimport { SegmentedControlIcon } from './SegmentedControlIcon'\nimport { SegmentedControlItem } from './SegmentedControlItem'\nimport { SegmentedControlItemList } from './SegmentedControlItemList'\nimport { SegmentedControlRoot } from './SegmentedControlRoot'\n\nexport const SegmentedControl = {\n Root: SegmentedControlRoot,\n Item: SegmentedControlItem,\n Heading: SegmentedControlHeading,\n Description: SegmentedControlDescription,\n Icon: SegmentedControlIcon,\n Content: SegmentedControlContent,\n Badge: SegmentedControlBadge,\n ItemList: SegmentedControlItemList\n}\n","import React from 'react'\n\nimport { FileDropContextValue } from './types'\n\nexport const FileDropContext = React.createContext<FileDropContextValue>({\n isDragging: false,\n files: []\n})\n","import * as React from 'react'\n\nimport { Flex } from '../flex'\nimport { FileDropContext } from './FileDropContext'\nimport { type FileDropContextValue } from './types'\n\ninterface FileDropProps\n extends Omit<React.ComponentProps<typeof Flex>, 'onDrop'> {\n onDrop: (files: File[]) => void\n children?:\n | React.ReactNode\n | ((value: FileDropContextValue) => React.ReactNode)\n accept?: React.InputHTMLAttributes<HTMLInputElement>['accept']\n multiple?: React.InputHTMLAttributes<HTMLInputElement>['multiple']\n}\n\nexport const FileDrop = ({\n css,\n children,\n accept,\n multiple,\n onDrop,\n ...props\n}: FileDropProps): JSX.Element => {\n const [isDragging, setIsDragging] = React.useState(false)\n const [files, setFiles] = React.useState<File[]>([])\n const fileUploadInputRef = React.useRef<HTMLInputElement>(null)\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleDragLeave = () => setIsDragging(false)\n\n const handleDrop = (fileList: FileList | null) => {\n if (!fileList) return\n\n setIsDragging(false)\n\n const files = Array.from(fileList)\n onDrop(files)\n setFiles(files)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (['Space', 'Enter'].includes(event.key)) {\n fileUploadInputRef.current?.click()\n }\n }\n\n const value: FileDropContextValue = { isDragging, files }\n\n return (\n <FileDropContext.Provider value={value}>\n <Flex\n direction=\"column\"\n gap=\"24\"\n align=\"center\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={(event) => {\n event.preventDefault()\n handleDrop(event.dataTransfer.files)\n }}\n onClick={() => fileUploadInputRef.current?.click()}\n css={{\n border: '1px dashed $grey500',\n p: '$5 $7',\n borderRadius: '$1',\n cursor: 'pointer',\n '& *': { pointerEvents: 'none' },\n ...css\n }}\n role=\"button\"\n onKeyDown={handleKeyDown}\n tabIndex={0}\n {...props}\n >\n {typeof children === 'function' ? children(value) : children}\n <input\n type=\"file\"\n ref={fileUploadInputRef}\n style={{ visibility: 'hidden' }}\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n handleDrop(event.target.files)\n }}\n />\n </Flex>\n </FileDropContext.Provider>\n )\n}\n\nFileDrop.displayName = 'FileDrop'\n","import React from 'react'\n\nimport { FileDropContext } from './FileDropContext'\nimport { FileDropContextValue } from './types'\n\nexport const useFileDrop = (): FileDropContextValue =>\n React.useContext(FileDropContext)\n"],"names":["utils","value","media","stitchesConfig","createStitches","atomTheme","defaultThemeMap","themeMap","css","getCssText","createTheme","globalCss","keyframes","styled","theme","Box","CSSWrapper","children","React","capsize","before","after","icons","color","encodeBackgroundIcon","icon","toHex","slideUpAndFade","slideRightAndFade","slideDownAndFade","slideLeftAndFade","fadeIn","fadeOut","slideInOut","outPosition","inPosition","slideIn","slideOut","overrideStitchesVariantValue","prop","overrideFunction","overrideValue","breakpoint","propAtBreakpoint","toIconSize","getFieldIconSize","size","s","NoOverflowWrapper","open","close","StyledContent","Content","AccordionContent","remainingProps","AccordionItem","Item","colorSchemes","generateColors","prefix","colorName","color0","colors","i","k","bases","generateBase","name","themeName","accents","generateAccent","StyledColorScheme","ColorScheme","base","accent","interactive","className","asChild","rest","ref","c","Slot","StyledIcon","Icon","SVG","RotatingIcon","StyledTrigger","Trigger","AccordionTrigger","colorScheme","arrowPosition","ChevronDown","StyledRoot","Root","Accordion","type","StyledArrow","Arrow","TooltipContent","side","sideOffset","TooltipComponent","delayDuration","Tooltip","Portal","Provider","OptionalTooltipWrapper","hasTooltip","label","tooltipSide","isExternalUrl","url","getExternalAnchorProps","ActionIconSizeMap","getSimpleVariant","interact","active","getSolidVariant","getOutlineVariant","StyledButton","ActionIcon","appearance","href","disabled","INVALID_CHILDREN_MESSAGE","invariant","child","contentOnScreen","contentOffScreen","StyledAlertDialogOverlay","Overlay","StyledAlertDialogContent","AlertDialogContent","StyledAlertDialog","AlertDialog","Description","Title","Action","Cancel","useIsMountedRef","isMountedRef","useRef","useEffect","Flex","FadeInOut","Dot","Loader","message","props","VisuallyHidden","getButtonOutlineVariant","getButtonSolidVariant","text","opacify","LoaderContentsWrapper","WithLoader","Button","as","isLoading","onClick","StyledHeading","Heading","weight","textVariants","getTextVariant","noCapsize","StyledText","Text","family","iconMap","Info","Danger","OkCircle","AlertDialogIcon","Alert","title","description","onAction","cancelActionText","confirmActionText","onClose","confirmElement","cancelElement","e","initialState","reducer","state","action","uid","id","AlertContext","AlertProvider","alerts","dispatch","content","useAlert","context","AvatarIcon","is","rootContext","AvatarRootContext","iconSize","StyledImage","Image","AvatarPlaceholder","User","toTextSize","AvatarInitial","textSize","AvatarImage","src","alt","avatarRootStyles","StyledDiv","AvatarRootProvider","AvatarRoot","Avatar","useCallbackRef","elRef","setElRefCallback","el","useCallbackRefState","setElRef","BadgeContext","BadgeProvider","overflow","isOverflowing","setIsOverflowing","StyledBadgeIcon","BadgeIcon","createResizeObserver","callback","useResizeObserver","delay","elements","onResize","observer","debounce","element","ObserveBadgeTextOverflow","StyledBadgeText","BadgeText","badgeSize","info","neutral","success","danger","warning","primary","grey","blue","pink","purple","cyan","green","magenta","red","teal","orange","yellow","lime","lapis","maroon","marsh","badgeSemanticNames","StyledBadge","BadgeInner","emphasis","badgeElRef","setBadgeElRef","isInfoOnly","isClickable","badgeColorSchemes","BadgeComponent","Badge","DismissibleRootContext","DismissibleRootProvider","controlledIsDismissed","onDismiss","isDismissed","setIsDismissed","isControlled","DismissibleRootInternal","DismissibleRoot","dismissed","DefaultTrigger","DismissibleTrigger","Dismissible","BannerContext","useBannerContext","BannerProvider","hasDismiss","setHasDismiss","Banner","BannerRegularButton","fullWidth","MAX_ALLOWED_CHILDREN","toGap","toDirection","BannerRegularActions","gap","direction","index","propsToInject","StyledBannerContainer","BannerContainer","BannerRegularContainer","Container","BannerRegularContent","toActionIconSize","StyledDismiss","BannerRegularDismiss","actionIconSize","Close","BannerRegularHeading","BannerRegularImage","BannerRegularText","BannerRegularComponent","BannerRegular","StyledBannerSlimActions","BannerSlimActions","BannerSlimButton","toAlign","toWrap","StyledBannerSlimContainer","BannerSlimContainer","align","wrap","StyledBannerSlimContent","BannerSlimContent","BannerSlimDismiss","BannerSlimImage","BannerSlimText","BannerSlimComponent","BannerSlim","buttonStyles","StyledButtonBack","BaseButtonBack","StyledButtonNext","BaseButtonNext","CarouselArrowPrevious","ChevronLeft","CarouselArrowNext","ChevronRight","CarouselPagination","DotGroup","StyledSlide","BaseSlide","CarouselSlide","CarouselSlider","BaseSlider","CarouselComponent","slideHeight","slideWidth","numSlides","CarouselProvider","useCarousel","CarouselContext","Carousel","CheckboxContainer","CheckboxHitArea","StyledIndicator","RadixCheckbox","StyledCheckbox","Checkbox","checked","Minus","Ok","CheckboxGroupMountedContext","CheckboxGroupMountedProvider","handleItemMountedChangeFurtherUpContext","mounted","setMounted","handleItemMountedChange","newItemMounted","itemValue","prevMounted","newMountedSet","CheckboxGroupCheckedContext","generateNewCheckedFn","currentChecked","newItemChecked","newCheckedSet","CheckboxGroupCheckedProvider","controlledChecked","defaultChecked","onCheckedChange","setChecked","handleItemControlledCheckedChange","newChecked","handleItemCheckedChange","prevChecked","CheckboxGroupAllItem","checkedItems","handleItemCheckedChangeContext","mountedItems","isAllChecked","mountedItem","CheckboxGroupItem","StyledSlot","CheckboxGroupSub","CheckboxGroupRoot","CheckboxGroup","StyledTreeListItem","TreeListItem","TreeCollapsibleContext","TreeCollapsibleProvider","triggerRef","setTriggerRef","StyledCollapsibleTreeItemRoot","TreeCollapsible","StyledList","TreeList","StyledTreeCollapsibleContent","TreeCollapsibleContent","StyledTreeIcon","TreeIcon","StyledTreeText","propName","TreeText","StyledItemContent","TreeItemContent","StyledTreeCollapsibleTrigger","StyledActionIcon","TreeCollapsibleTrigger","event","_a","_b","TreeItem","TreeRoot","Tree","CheckboxTreeCollapsible","CheckboxTreeCollapsibleContent","CheckboxTreeItemContent","CheckboxTreeCollapsibleTrigger","treeCollapsibleTriggerProps","checkboxAllItemProps","CheckboxTreeItem","checkboxItemProps","CheckboxTreeRoot","CheckboxTree","INLINE_MESSAGE_ICONS","Error","InlineMessageContainer","InlineMessage","showIcon","StyledLabel","StyledAsterisk","Label","required","StyledLink","Link","FieldWrapper","error","fieldId","prompt","hideLabel","LabelContainer","StyledRadioButton","RadioGroup","RadioButton","RadioButtonGroup","InlineFieldWrapper","FormCustomContext","useFormCustomContext","StyledForm","Form","defaultValues","validationMode","onSubmit","onError","methods","useForm","FormProvider","useFieldError","fieldName","errors","useFormContext","fieldPath","delve","CheckboxValue","CheckboxField","validation","control","onChange","innerChecked","innerName","useController","overflowElipsis","StyledChipContent","ChipIcon","ChipRootContext","ChipContent","childrenArray","isSingleChild","ChipRootProvider","ChipRoot","Chip","ChipGroup","DismissibleGroupContext","DismissibleGroupProvider","DismissibleGroupRoot","Component","DismissibleGroupItem","itemDisabled","groupContext","groupDisabled","DismissibleGroup","StyledChipDismissibleGroupItem","ChipDismissibleGroupItem","dismissActionLabel","ChipDismissibleGroupRoot","ChipDismissibleGroup","StyledChipToggleIcon","StyledChipToggleGroupItem","ChipToggleGroupItem","ToggleGroup","ToggleGroupRoot","disableDeselect","onValueChange","defaultValue","internalValue","setInternalValue","handleValueChange","newValue","ChipToggleGroupRoot","ChipToggleGroup","StyledComboboxInput","BaseComboboxInput","ComboboxInput","ComboboxList","BaseComboboxList","ComboboxOption","BaseComboboxOption","ComboboxPopover","BaseComboboxPopover","Combobox","BaseCombobox","ComboboxOptionText","InputBackground","StyledInputText","InputText","Input","PasswordInput","hidePasswordText","showPasswordText","restProps","isPasswordVisible","setIsPasswordVisible","useState","togglePasswordVisibility","currentState","Eye","EyeCrossed","PasswordField","register","formAppearance","CreatePasswordField","validate","defaultValidation","messageDirection","formState","isFocused","setIsFocused","validationResult","setValidationResult","touched","isValid","validatePassword","password","result","handleChange","throttle","getMessageTheme","showValidation","AsyncDataState","getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_c","_d","_e","_f","pageIndex","pageSize","params","newData","defaultPaginationState","usePagination","initialPaginationState","isPaginated","setIsPaginated","setPaginationState","applyPagination","useSortByColumn","defaultSort","isSortable","setIsSortable","setSorting","DataTableContext","DataTableProvider","columns","dataProp","disabledRows","enableRowSelection","onRowSelectionChange","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","tablePosition","setTablePosition","asyncDataState","setAsyncDataState","setGlobalFilter","runAsyncData","overrideAsyncDataOptions","useDeepCompareEffect","getTotalRows","table","useReactTable","row","updaterOrValue","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","useDataTable","StyledTableBody","TableBody","striped","TableCell","TableFooter","TableFooterCell","TABLE_HEADER_THEMES","StyledTableHeader","TableHeader","isSticky","TableHeaderCell","StyledRow","TableRow","useStickyColumnsCss","numberOfStickyColumns","wrapperRef","columnsCss","setColumnsCss","generateColumnsCss","accWidth","tableHeaderCells","acc","column","elementNumber","cssObject","newColumnsCss","TableStickyColumnsContainer","hasScroll","setHasScroll","newHasScroll","StyledTable","TableComponent","corners","scrollContainerCss","scrollContainerkey","tableComponent","Table","DataTableBody","rowAction","getRowModel","DataTable","StyledDivider","Divider","orientation","StyledContainer","BulkActionsDefaultActions","BulkActionsSelectedRowActions","cancelLabel","toggleAllPageRowsSelected","handleDeselectAllPageRows","DataTableBulkActions","isRowSelected","showDividers","ActionBarPositioner","DataTableBulkActionsFloating","actionBarRef","numberOfSelectedRows","DataTableDataCell","cell","flexRender","EmptyStateContext","EmptyStateProvider","StyledEmptyStateBody","EmptyStateBody","StyledEmptyStateImage","EmptyStateImage","StyledEmptyStateTitle","EmptyStateTitle","EmptyStateContainer","EmptyStateComponent","EmptyState","DataTableEmptyState","DataTableError","OptionalVisuallyHiddenWrapper","hidden","INPUT_ICON","StyledSearchInputText","SearchInput","clearText","inputElRef","setInputElRef","innerValue","setInnerValue","activeIcon","setActiveIcon","handleClear","inputEl","nativeInputValueSetter","ev2","handleOnChange","getIcon","Search","DataTableGlobalFilter","getState","resetPagination","DataTableSelectAllRowsCheckbox","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getCheckedState","updateCheckedState","DataTableHead","sortable","stickyOffset","showTotalInFirstColumn","totalSuffix","style","getHeaderGroups","getCanSomeRowsExpand","tableHeaderRowRef","tableRef","headerOffsetRef","headerOffset","setHeaderOffset","headerHide","setHeaderHide","tableHeadElement","tableHeadHeight","intersectionOffset","newOffset","headerGroup","header","StyledCount","StyledTableHeaderCell","sortIcons","ArrowUp","ArrowDown","SortIcon","DataTableHeaderCell","includeTotal","sortDirection","isSortableTable","isDataColumn","totalRows","hoverProps","isHovered","useHover","handleKeyDown","headerSortingHandler","PendingState","DataTableLoading","defaultCopy","DataTableMetaData","copy","isSorted","selectedRows","copyMerged","getColumnDisplayName","sortedColumn","col","DataTableRowSelectionCheckbox","isElementInteractive","DataTableRow","isDisabled","toggleExpandHandler","toggleSelectHandler","handleRowClick","rowData","currentRow","nextRow","previousRow","TableContainer","DataTableTable","scrollOptions","isTableVisible","isScrolling","scrollTarget","updatePosition","tableTop","tableBottom","prevPosition","handleScroll","observerOffset","observerOptions","handleTableIntersection","entries","entry","tableObserver","isPending","isEmpty","buildScrollContainerKey","controlColumnCount","StyledHandle","Handle","isDragging","DragHandle","SortableHandle","targetId","attributes","listeners","setActivatorNodeRef","useSortable","SortableItem","isDragHandle","transform","setNodeRef","SortableRoot","sortableIds","onSortChange","order","setOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","Sortable","DragAndDropTableRow","idColumn","rowId","DragAndDropTableBody","DragAndDropTable","onDragAndDrop","rowIds","handleSortChange","sortedResults","VisibleElementsAmount","_","VIEW_ALL_POPOVER","GO_TO_PREVIOUS_PAGE","GO_TO_NEXT_PAGE","getPaginationElementsToRender","currentPage","pagesCount","visibleElementsCount","paginationPages","visiblePagesCount","withPreviousNextPageArrows","canFitEdgePage","canFitViewAllPopover","canFitPages","firstPage","lastPage","newPaginationItems","canFitCurrentPage","canFitCurrentPageAndPreviousPage","canFitCurrentPageAndPreviousPageAndNextPage","canFitLastPage","findNextAvailablePage","startPage","disabledPages","nextPage","findPreviousAvailablePage","previousPage","PaginationContext","PaginationProvider","onSelectedPageChange","selectedPage","indicatedPages","onItemHover","labels","internalCurrentPage","setInternalCurrentPage","goToPage","pageNumber","previousAvailablePage","goToPreviousPage","nextAvailablePage","goToNextPage","paginationItems","PaginationNextButton","PaginationPage","isIndicated","isSelected","handleOnHover","handleOnClick","PaginationPopover","isOpen","setIsOpen","Popover","Ellypsis","PaginationPreviousButton","PaginationItems","paginationItem","PaginationComponent","Pagination","StyledNav","getPageCount","setPageIndex","showPagination","recordsCountFrom","recordsCountTo","setPage","monthNamesShort","weekdayNamesShort","DEFAULT_LABELS","Day","Grid","offsetWeekdayNames","weekdayNames","firstDayOfWeek","start","Calendar","refDateSelected","refDateToday","monthNames","date","minDate","maxDate","setYear","showYears","setShowYears","currentYear","setCurrentYear","handleSetYear","year","newDate","isAtMinYear","isAtMaxYear","yearList","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","isCurrentYear","month","weeks","weekday","week","weekIndex","dateObj","key","selected","today","prevMonth","nextMonth","PopoverContent","closePopoverText","showCloseButton","CloseIcon","DEFAULT_DATE_FORMAT","dayjs","customParseFormat","formatDateToString","dateFormat","DateInput","initialDate","revalidate","setDate","dateString","handleInputChange","newDateString","parsedInputDate","handleCalendarChange","updatedLabels","calendarOpen","setCalendarOpen","CalendarEvent","DateField","trigger","DialogBackground","DialogClose","backdropOverlay","modalOverlayId","StyledDialogOverlay","sizeReset","StyledDialogContent","DialogContent","closeDialogText","DialogFooter","DialogHeading","StyledDialog","Dialog","DrawerContext","DrawerProvider","position","DrawerClose","DrawerOverlay","animationTop","animationRight","animationBottom","animationLeft","setupAnimation","animation","positionY","positionX","DrawerContent","DrawerFooter","DrawerHeader","DrawerMain","DrawerTrigger","Drawer","DropdownMenuContent","itemStyles","DropdownMenuItem","DropdownMenuLinkItem","DropdownMenuSeparator","Separator","DropdownMenuTrigger","DropdownMenuRoot","DropdownMenu","FileInput","accept","multiple","onFileSelect","handleFileSelect","files","Upload","GridContainer","minItemSize","maxItemSize","InputField","StyledLi","List","ordered","StyledMarkdownCode","MarkdownCode","node","StyledMarkdownEmphasis","MarkdownEmphasis","handleNode","getHeadingProps","depth","MarkdownHeading","StyledMarkdownInlineCode","MarkdownInlineCode","MarkdownImage","MarkdownLink","MarkdownList","MarkdownListItem","MarkdownParagraph","StyledMarkdownStrong","MarkdownStrong","MarkdownText","MarkdownThematicBreak","StyledMarkdownContent","defaultComponentsMap","generateNodeKey","line","offset","MarkdownContent","customComponents","AST","fromMarkdown","syntax","directive","componentsMap","MarkdownComponent","NavigationMenuContext","useNavigationMenuContext","preventEvent","NavigationMenuPrimitive","NavigationMenuDropdownContent","navigationMenuDisabledItemStyles","navigationMenuBaseItemStyles","navigationMenuActiveItemStyles","NavigationMenuDropdownTrigger","forwardedRef","NavigationMenuDropdown","onNodeUpdate","isTrigger","isContent","DisabledButton","ListItem","NavigationMenuLink","variant","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","light","delayedFadeIn","StyledMenu","StyledViewport","ViewportPosition","NavigationMenuComponent","setOffset","activeItem","setActiveItem","listWidth","setListWidth","listRef","timer","listCenter","triggerOffsetRight","navigationMenuColorSchemes","NavigationMenu","StyledNavigationMenuVerticalItem","NavigationMenuVerticalItem","NavigationMenuVerticalAccordionContext","NavigationMenuVerticalAccordionProvider","NavigationMenuVerticalAccordion","defaultOpen","onOpenChange","NavigationMenuVerticalList","StyledNavigationMenuVerticalAccordionContent","NavigationMenuVerticalAccordionContent","navigationMenuVerticalItemStyles","StyledNavigationMenuVerticalIcon","NavigationMenuVerticalIcon","SideBarHeader","SideBarBody","SideBarFooter","SideBarBrand","SideBarBrandLogo","SideBarBrandName","SideBarContext","useSidebarState","SIZE_COLLAPSED","SIZE_EXPANDED","PointerBlocker","SideBar","isExpanded","setIsExpanded","useInteractOutside","focusWithinProps","useFocusWithin","expandableProps","SIZE_EXPANDED_MAX","StyledNavigationMenuVerticalText","NavigationMenuVerticalText","NavigationMenuVerticalItemContent","StyledNavigationMenuVerticalAccordionTrigger","NavigationMenuVerticalAccordionTrigger","StyledNavigationMenuVerticalLink","NavigationMenuVerticalLink","componentProps","NavigationMenuVertical","navigationMenuVerticalColorSchemes","StyledWrapper","NotificationBadge","StyledSpan","StyledStepperButton","NumberInputStepper","disabledTooltipContent","showTooltip","fieldAppearance","NumberInputContainer","NumberInput","min","max","step","isReadOnly","stepperButtonLabelsProp","disabledTooltipContentProp","inputRef","stepperButtonLabels","isAtMax","isAtMin","clamp","updateValue","onInputChange","parsedValue","increment","decrement","onKeyDown","eventKey","inputProps","Plus","NumberInputField","StyledProgressBar","Progress","ProgressBar","RadioField","Fieldset","RadioButtonFieldComponent","FieldDescription","RadioButtonField","StyledRadioCard","Indicator","RadioCard","isFullWidth","RadioCardGroup","justify","SearchField","SectionMessageContext","SectionMessageProvider","hasIcon","setHasIcon","useSectionMessageContext","SectionMessageDescription","SectionMessageDismiss","themeIcons","SectionMessageIcon","SectionMessageContent","SectionMessageActions","SectionMessageTitle","StyledSectionMessage","SectionMessageRoot","SectionMessage","TooltipProvider","StyledSelect","Select","placeholder","SelectField","SliderStepsContainer","getPercentValue","getTransformValue","percentage","SliderSteps","steps","SliderValue","outputLabel","StyledTrack","Track","StyledSlider","StyledRange","Range","StyledThumb","Thumb","Slider","values","SliderField","Spacer","StepperContext","StepperProvider","stepCount","allowSkip","onComplete","onStepChange","hideLabels","showCompletedIcons","activeStep","setActiveStep","viewedSteps","setviewedSteps","completedSteps","setCompletedSteps","prev","goToNextStep","isCompleted","isNextStep","current","goToPreviousStep","goToStep","useStepper","StepperStepBack","StepperStepForward","StepperStepBullet","StepperStepContainer","StepperStepLabel","Status","StepperStepsContainer","StepperSteps","getBulletStatus","activeBullet","getSeparatorStatus","bulletStatus","separatorStatus","StepperComponent","count","Stepper","StyledSwitch","RadixSwitch","Switch","StyledTabsContent","TabsContent","StyledTabsTriggerHoverBackground","StyledTabsTrigger","TabsTrigger","useScrollPosition","delayMethod","scrollPosition","setScrollPosition","delayMethodFn","useMemo","useSize","setSize","handleResize","useCallback","StyledTriggerList","StyledChevronActionIcon","SCROLL_STEP","TabsTriggerList","setListRefCallback","width","left","canScrollXAxis","canScrollLeft","canScrollRight","scrollList","stepModifier","Tabs","StyledTextarea","Textarea","TextareaField","StyledTile","Tile","borderRadius","TileGroup","StyledTileInteractive","TileInteractive","StyledTileToggleGroupItem","TileToggleGroupItem","orientationToDirection","TileToggleGroupRoot","TileToggleGroup","ToastProviderBase","ToastWrapper","ToastContext","ToastProvider","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","toast","Toast","useToastContext","ToastCloseButton","ToastIcon","StyledToast","StyledItem","ToggleGroupItem","ToggleGroupButton","isIconOnly","hasGap","useWindowScrollPosition","TopBarActionIcon","TopBarBrandLogo","TopBarBrandName","TopBarBrand","TopBarDivider","TopBarComponent","diffused","topBarColorSchemes","scrollPositionY","TopBar","StyledVideo","ReactPlayer","Video","ratio","KeyboardShortcut","config","targetWindow","targetElRef","setTargetElRef","handleOnKeydown","shortcut","StyledKeyboardShortcutIndicator","KeyboardShortcutIndicator","KeyboardShortcutComponent","SegmentedControlContext","badgeSizeMap","SegmentedControlBadge","SegmentedControlContent","SegmentedControlDescription","SegmentedControlHeading","sizeMap","SegmentedControlIcon","SegmentedControlItem","SelectionIndicator","SegmentedControlItemList","tabsRef","selectedIndex","indicatorStyles","setIndicatorStyles","hasInteracted","setHasInteracted","updateIndicatorPosition","currentTab","height","resizeObserver","currentTabs","tab","StyledSegmentedControlRoot","SegmentedControlRoot","currentValue","SegmentedControl","FileDropContext","FileDrop","onDrop","setIsDragging","setFiles","fileUploadInputRef","handleDragOver","handleDragLeave","handleDrop","fileList","useFileDrop"],"mappings":"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"}