@atom-learning/components 6.14.4 → 6.16.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 (158) hide show
  1. package/dist/components/accordion/Accordion.js +2 -2
  2. package/dist/components/accordion/Accordion.js.map +1 -1
  3. package/dist/components/action-icon/ActionIcon.d.ts +1 -0
  4. package/dist/components/action-icon/ActionIcon.js +4 -2
  5. package/dist/components/action-icon/ActionIcon.js.map +1 -1
  6. package/dist/components/avatar/Avatar.js +2 -3
  7. package/dist/components/avatar/Avatar.js.map +1 -1
  8. package/dist/components/banner/banner-regular/BannerRegular.d.ts +1 -0
  9. package/dist/components/banner/banner-regular/BannerRegularActions.js +2 -2
  10. package/dist/components/banner/banner-regular/BannerRegularActions.js.map +1 -1
  11. package/dist/components/banner/banner-regular/BannerRegularDismiss.d.ts +2 -1
  12. package/dist/components/banner/banner-slim/BannerSlim.d.ts +1 -0
  13. package/dist/components/banner/banner-slim/BannerSlimButton.js +2 -2
  14. package/dist/components/banner/banner-slim/BannerSlimButton.js.map +1 -1
  15. package/dist/components/banner/banner-slim/BannerSlimContainer.js +2 -3
  16. package/dist/components/banner/banner-slim/BannerSlimContainer.js.map +1 -1
  17. package/dist/components/banner/banner-slim/BannerSlimDismiss.d.ts +2 -1
  18. package/dist/components/button/Button.d.ts +1 -0
  19. package/dist/components/button/Button.js +17 -13
  20. package/dist/components/button/Button.js.map +1 -1
  21. package/dist/components/calendar/Calendar.js +2 -3
  22. package/dist/components/calendar/Calendar.js.map +1 -1
  23. package/dist/components/carousel/CarouselSlider.js +2 -2
  24. package/dist/components/carousel/CarouselSlider.js.map +1 -1
  25. package/dist/components/data-table/DataTableGlobalFilter.js +2 -2
  26. package/dist/components/data-table/DataTableGlobalFilter.js.map +1 -1
  27. package/dist/components/data-table/DataTableHead.js +3 -3
  28. package/dist/components/data-table/DataTableHead.js.map +1 -1
  29. package/dist/components/data-table/DataTableHeaderCell.js +2 -3
  30. package/dist/components/data-table/DataTableHeaderCell.js.map +1 -1
  31. package/dist/components/data-table/DataTableRow.js +2 -3
  32. package/dist/components/data-table/DataTableRow.js.map +1 -1
  33. package/dist/components/data-table/DataTableTable.js +3 -4
  34. package/dist/components/data-table/DataTableTable.js.map +1 -1
  35. package/dist/components/data-table/drag-and-drop/DragAndDropTable.js +2 -2
  36. package/dist/components/data-table/drag-and-drop/DragAndDropTable.js.map +1 -1
  37. package/dist/components/dialog/DialogHeading.js +2 -2
  38. package/dist/components/dialog/DialogHeading.js.map +1 -1
  39. package/dist/components/dropdown-menu/DropdownMenu.d.ts +2 -1
  40. package/dist/components/dropdown-menu/DropdownMenuLinkItem.d.ts +2 -1
  41. package/dist/components/dropdown-menu/DropdownMenuLinkItem.js +13 -8
  42. package/dist/components/dropdown-menu/DropdownMenuLinkItem.js.map +1 -1
  43. package/dist/components/field-wrapper/FieldDescription.js +2 -2
  44. package/dist/components/field-wrapper/FieldDescription.js.map +1 -1
  45. package/dist/components/field-wrapper/FieldWrapper.js +2 -2
  46. package/dist/components/field-wrapper/FieldWrapper.js.map +1 -1
  47. package/dist/components/field-wrapper/InlineFieldWrapper.js +2 -2
  48. package/dist/components/field-wrapper/InlineFieldWrapper.js.map +1 -1
  49. package/dist/components/grid/Grid.js +2 -3
  50. package/dist/components/grid/Grid.js.map +1 -1
  51. package/dist/components/index.d.ts +1 -0
  52. package/dist/components/link/Link.d.ts +1 -0
  53. package/dist/components/link/Link.js +13 -9
  54. package/dist/components/link/Link.js.map +1 -1
  55. package/dist/components/loader/Loader.js +2 -3
  56. package/dist/components/loader/Loader.js.map +1 -1
  57. package/dist/components/markdown-content/components/MarkdownList.js +2 -2
  58. package/dist/components/markdown-content/components/MarkdownList.js.map +1 -1
  59. package/dist/components/markdown-content/components/MarkdownThematicBreak.js +2 -2
  60. package/dist/components/markdown-content/components/MarkdownThematicBreak.js.map +1 -1
  61. package/dist/components/navigation/NavigationMenu.js +3 -4
  62. package/dist/components/navigation/NavigationMenu.js.map +1 -1
  63. package/dist/components/navigation/NavigationMenuDropdownTrigger.js +2 -3
  64. package/dist/components/navigation/NavigationMenuDropdownTrigger.js.map +1 -1
  65. package/dist/components/navigation-menu-vertical/NavigationMenuVertical.d.ts +3 -1
  66. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItem.js +2 -2
  67. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItem.js.map +1 -1
  68. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.js +2 -2
  69. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.js.map +1 -1
  70. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalLink.d.ts +4 -2
  71. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalLink.js +5 -3
  72. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalLink.js.map +1 -1
  73. package/dist/components/number-input/NumberInput.js +4 -5
  74. package/dist/components/number-input/NumberInput.js.map +1 -1
  75. package/dist/components/number-input/NumberInputStepper.d.ts +2 -1
  76. package/dist/components/pagination/Pagination.js +2 -2
  77. package/dist/components/pagination/Pagination.js.map +1 -1
  78. package/dist/components/pagination/PaginationNextButton.d.ts +2 -1
  79. package/dist/components/pagination/PaginationPreviousButton.d.ts +2 -1
  80. package/dist/components/password-field/PasswordField.js +2 -2
  81. package/dist/components/password-field/PasswordField.js.map +1 -1
  82. package/dist/components/password-input/PasswordInput.js +3 -3
  83. package/dist/components/password-input/PasswordInput.js.map +1 -1
  84. package/dist/components/radio-card/RadioCardGroup.js +2 -2
  85. package/dist/components/radio-card/RadioCardGroup.js.map +1 -1
  86. package/dist/components/router-provider/RouterProvider.d.ts +17 -0
  87. package/dist/components/router-provider/RouterProvider.js +15 -0
  88. package/dist/components/router-provider/RouterProvider.js.map +1 -0
  89. package/dist/components/search-input/SearchInput.js +4 -5
  90. package/dist/components/search-input/SearchInput.js.map +1 -1
  91. package/dist/components/section-message/SectionMessageDescription.js +2 -2
  92. package/dist/components/section-message/SectionMessageDescription.js.map +1 -1
  93. package/dist/components/section-message/SectionMessageDismiss.js +2 -2
  94. package/dist/components/section-message/SectionMessageDismiss.js.map +1 -1
  95. package/dist/components/section-message/SectionMessageIcon.js +2 -2
  96. package/dist/components/section-message/SectionMessageIcon.js.map +1 -1
  97. package/dist/components/section-message/SectionMessageLayout.js +2 -3
  98. package/dist/components/section-message/SectionMessageLayout.js.map +1 -1
  99. package/dist/components/segmented-control/SegmentedControlBadge.js +2 -2
  100. package/dist/components/segmented-control/SegmentedControlBadge.js.map +1 -1
  101. package/dist/components/side-bar/SideBar.js +2 -3
  102. package/dist/components/side-bar/SideBar.js.map +1 -1
  103. package/dist/components/skeleton-loader/SkeletonBarChart.js +2 -2
  104. package/dist/components/skeleton-loader/SkeletonBarChart.js.map +1 -1
  105. package/dist/components/skeleton-loader/SkeletonButton.js +2 -2
  106. package/dist/components/skeleton-loader/SkeletonButton.js.map +1 -1
  107. package/dist/components/skeleton-loader/SkeletonCard.js +2 -2
  108. package/dist/components/skeleton-loader/SkeletonCard.js.map +1 -1
  109. package/dist/components/skeleton-loader/SkeletonColumnChart.js +2 -2
  110. package/dist/components/skeleton-loader/SkeletonColumnChart.js.map +1 -1
  111. package/dist/components/skeleton-loader/SkeletonDoughnutChart.js +2 -2
  112. package/dist/components/skeleton-loader/SkeletonDoughnutChart.js.map +1 -1
  113. package/dist/components/skeleton-loader/SkeletonHeading.js +2 -2
  114. package/dist/components/skeleton-loader/SkeletonHeading.js.map +1 -1
  115. package/dist/components/skeleton-loader/SkeletonPanelList.js +2 -2
  116. package/dist/components/skeleton-loader/SkeletonPanelList.js.map +1 -1
  117. package/dist/components/skeleton-loader/SkeletonSubjectList.js +2 -2
  118. package/dist/components/skeleton-loader/SkeletonSubjectList.js.map +1 -1
  119. package/dist/components/skeleton-loader/SkeletonTable.js +2 -2
  120. package/dist/components/skeleton-loader/SkeletonTable.js.map +1 -1
  121. package/dist/components/skeleton-loader/SkeletonTabs.js +3 -3
  122. package/dist/components/skeleton-loader/SkeletonTabs.js.map +1 -1
  123. package/dist/components/sortable/Handle.d.ts +2 -1
  124. package/dist/components/sortable/SortableItem.js +2 -2
  125. package/dist/components/sortable/SortableItem.js.map +1 -1
  126. package/dist/components/stepper/Stepper.js +2 -2
  127. package/dist/components/stepper/Stepper.js.map +1 -1
  128. package/dist/components/table/Table.js +2 -3
  129. package/dist/components/table/Table.js.map +1 -1
  130. package/dist/components/table/TableStickyColumnsContainer.js +2 -2
  131. package/dist/components/table/TableStickyColumnsContainer.js.map +1 -1
  132. package/dist/components/tile-toggle-group/TileToggleGroupRoot.js +2 -2
  133. package/dist/components/tile-toggle-group/TileToggleGroupRoot.js.map +1 -1
  134. package/dist/components/toast/ToastCloseButton.js +2 -2
  135. package/dist/components/toast/ToastCloseButton.js.map +1 -1
  136. package/dist/components/toggle-group/ToggleGroupRoot.js +2 -3
  137. package/dist/components/toggle-group/ToggleGroupRoot.js.map +1 -1
  138. package/dist/components/top-bar/TopBar.d.ts +2 -1
  139. package/dist/components/top-bar/TopBarBrand.js +2 -3
  140. package/dist/components/top-bar/TopBarBrand.js.map +1 -1
  141. package/dist/components/tree/TreeCollapsibleContent.js +2 -2
  142. package/dist/components/tree/TreeCollapsibleContent.js.map +1 -1
  143. package/dist/components/tree/TreeCollapsibleTrigger.js +2 -3
  144. package/dist/components/tree/TreeCollapsibleTrigger.js.map +1 -1
  145. package/dist/components/tree/TreeIcon.js +2 -2
  146. package/dist/components/tree/TreeIcon.js.map +1 -1
  147. package/dist/components/tree/TreeListItem.js +2 -2
  148. package/dist/components/tree/TreeListItem.js.map +1 -1
  149. package/dist/components/tree/TreeText.js +2 -2
  150. package/dist/components/tree/TreeText.js.map +1 -1
  151. package/dist/docgen.json +1 -1
  152. package/dist/index.cjs.js +134 -108
  153. package/dist/index.cjs.js.map +1 -1
  154. package/dist/index.js +3 -2
  155. package/dist/styled.d.ts +2 -0
  156. package/dist/styled.js +5 -4
  157. package/dist/styled.js.map +1 -1
  158. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
+ import { cn } from "../../../styled.js";
1
2
  import { List } from "../../list/List.js";
2
- import clsx from "clsx";
3
3
  import * as React$1 from "react";
4
4
  //#region src/components/markdown-content/components/MarkdownList.tsx
5
5
  var MarkdownList = ({ node, handleNode, className }) => /* @__PURE__ */ React$1.createElement(List, {
6
6
  ordered: node.ordered || void 0,
7
- className: clsx("[&_p]:inline", "[&_p]:before:hidden", "[&_p]:after:hidden", className)
7
+ className: cn("[&_p]:inline", "[&_p]:before:hidden", "[&_p]:after:hidden", className)
8
8
  }, node.children?.map(handleNode));
9
9
  //#endregion
10
10
  export { MarkdownList };
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownList.js","names":[],"sources":["../../../../src/components/markdown-content/components/MarkdownList.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { List } from '../../list/List'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n className?: string\n}\n\nexport const MarkdownList = ({\n node,\n handleNode,\n className\n}: MarkdownListProps) => (\n <List\n ordered={node.ordered || undefined}\n className={clsx(\n '[&_p]:inline',\n '[&_p]:before:hidden',\n '[&_p]:after:hidden',\n className\n )}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n"],"mappings":";;;;AAYA,IAAa,gBAAgB,EAC3B,MACA,YACA,gBAEA,wBAAA,cAAC,MAAD;CACE,SAAS,KAAK,WAAW,KAAA;CACzB,WAAW,KACT,gBACA,uBACA,sBACA,UACD;CAGI,EADJ,KAAK,UAAU,IAAI,WAAW,CAC1B"}
1
+ {"version":3,"file":"MarkdownList.js","names":[],"sources":["../../../../src/components/markdown-content/components/MarkdownList.tsx"],"sourcesContent":["import type { Content, List as ListType } from 'mdast'\nimport * as React from 'react'\n\nimport { cn } from '~/styled'\n\nimport { List } from '../../list/List'\n\ntype MarkdownListProps = {\n node: ListType\n handleNode: (node: Content) => React.ReactElement\n className?: string\n}\n\nexport const MarkdownList = ({\n node,\n handleNode,\n className\n}: MarkdownListProps) => (\n <List\n ordered={node.ordered || undefined}\n className={cn(\n '[&_p]:inline',\n '[&_p]:before:hidden',\n '[&_p]:after:hidden',\n className\n )}\n >\n {node.children?.map(handleNode)}\n </List>\n)\n"],"mappings":";;;;AAaA,IAAa,gBAAgB,EAC3B,MACA,YACA,gBAEA,wBAAA,cAAC,MAAD;CACE,SAAS,KAAK,WAAW,KAAA;CACzB,WAAW,GACT,gBACA,uBACA,sBACA,UACD;CAGI,EADJ,KAAK,UAAU,IAAI,WAAW,CAC1B"}
@@ -1,8 +1,8 @@
1
+ import { cn } from "../../../styled.js";
1
2
  import { Divider } from "../../divider/Divider.js";
2
- import clsx from "clsx";
3
3
  import * as React$1 from "react";
4
4
  //#region src/components/markdown-content/components/MarkdownThematicBreak.tsx
5
- var MarkdownThematicBreak = ({ className }) => /* @__PURE__ */ React$1.createElement(Divider, { className: clsx("w-full", className) });
5
+ var MarkdownThematicBreak = ({ className }) => /* @__PURE__ */ React$1.createElement(Divider, { className: cn("w-full", className) });
6
6
  //#endregion
7
7
  export { MarkdownThematicBreak };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownThematicBreak.js","names":[],"sources":["../../../../src/components/markdown-content/components/MarkdownThematicBreak.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\n\nimport { Divider } from '../../divider/Divider'\n\ntype MarkdownThematicBreakProps = {\n className?: string\n}\n\nexport const MarkdownThematicBreak = ({\n className\n}: MarkdownThematicBreakProps) => (\n <Divider className={clsx('w-full', className)} />\n)\n"],"mappings":";;;;AASA,IAAa,yBAAyB,EACpC,gBAEA,wBAAA,cAAC,SAAD,EAAS,WAAW,KAAK,UAAU,UAAU,EAAI,CAAA"}
1
+ {"version":3,"file":"MarkdownThematicBreak.js","names":[],"sources":["../../../../src/components/markdown-content/components/MarkdownThematicBreak.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { cn } from '~/styled'\n\nimport { Divider } from '../../divider/Divider'\n\ntype MarkdownThematicBreakProps = {\n className?: string\n}\n\nexport const MarkdownThematicBreak = ({\n className\n}: MarkdownThematicBreakProps) => (\n <Divider className={cn('w-full', className)} />\n)\n"],"mappings":";;;;AAUA,IAAa,yBAAyB,EACpC,gBAEA,wBAAA,cAAC,SAAD,EAAS,WAAW,GAAG,UAAU,UAAU,EAAI,CAAA"}
@@ -1,4 +1,4 @@
1
- import { styled } from "../../styled.js";
1
+ import { cn, styled } from "../../styled.js";
2
2
  import { colorSchemes } from "./NavigationMenu.colorscheme.config.js";
3
3
  import { NavigationMenuContext } from "./NavigationMenuContext.js";
4
4
  import { NavigationMenuDropdownContent } from "./NavigationMenuDropdownContent.js";
@@ -6,7 +6,6 @@ import { NavigationMenuDropdownTrigger } from "./NavigationMenuDropdownTrigger.j
6
6
  import { NavigationMenuDropdown } from "./NavigationMenuDropdown.js";
7
7
  import { NavigationMenuLink } from "./NavigationMenuLink.js";
8
8
  import { NavigationMenuDropdownItem, NavigationMenuDropdownItemTitle } from "./NavigationMenuDropdownItem.js";
9
- import clsx from "clsx";
10
9
  import React from "react";
11
10
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
12
11
  //#region src/components/navigation/NavigationMenu.tsx
@@ -55,13 +54,13 @@ var NavigationMenuComponent = ({ children, className, ...props }) => {
55
54
  return trigger;
56
55
  };
57
56
  return /* @__PURE__ */ React.createElement(NavigationMenuContext.Provider, { value: { onNodeUpdate } }, /* @__PURE__ */ React.createElement(StyledMenu, {
58
- className: clsx(className),
57
+ className: cn(className),
59
58
  style: colorSchemes["light"],
60
59
  onValueChange: setActiveItem,
61
60
  ...props
62
61
  }, /* @__PURE__ */ React.createElement(StyledList, { ref: listRef }, children), /* @__PURE__ */ React.createElement(ViewportPosition, null, /* @__PURE__ */ React.createElement(StyledViewport, {
63
62
  style: { "--navigation-menu-viewport-offset": `${offset || 0}px` },
64
- className: clsx([
63
+ className: cn([
65
64
  "data-[state=open]:animate-fade-in",
66
65
  "data-[state=closed]:animate-fade-out",
67
66
  "translate-x-(--navigation-menu-viewport-offset)"
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenu.js","names":[],"sources":["../../../src/components/navigation/NavigationMenu.tsx"],"sourcesContent":["import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport clsx from 'clsx'\nimport React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { colorSchemes as navigationMenuColorSchemes } from './NavigationMenu.colorscheme.config'\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n base: ['flex', 'justify-center', 'relative']\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n base: ['flex', 'justify-center', 'items-center', 'gap-1', 'list-none']\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n base: ['z-2147483647']\n})\n\nconst ViewportPosition = styled('div', {\n base: ['absolute', 'left-0', 'top-full', 'w-full', 'flex', 'justify-center']\n})\n\nconst NavigationMenuComponent = ({\n children,\n className,\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={clsx(className)}\n style={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n className={clsx([\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n 'translate-x-(--navigation-menu-viewport-offset)'\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"],"mappings":";;;;;;;;;;;;AAiBA,IAAM,aAAa,OAAO,wBAAwB,MAAM,EACtD,MAAM;CAAC;CAAQ;CAAkB;CAAW,EAC7C,CAAC;AAEF,IAAM,aAAa,OAAO,wBAAwB,MAAM,EACtD,MAAM;CAAC;CAAQ;CAAkB;CAAgB;CAAS;CAAY,EACvE,CAAC;AAEF,IAAM,iBAAiB,OAAO,wBAAwB,UAAU,EAC9D,MAAM,CAAC,eAAe,EACvB,CAAC;AAEF,IAAM,mBAAmB,OAAO,OAAO,EACrC,MAAM;CAAC;CAAY;CAAU;CAAY;CAAU;CAAQ;CAAiB,EAC7E,CAAC;AAEF,IAAM,2BAA2B,EAC/B,UACA,WACA,GAAG,YAC0C;CAC7C,MAAM,CAAC,QAAQ,aAAa,MAAM,UAAqC;CACvE,MAAM,CAAC,YAAY,iBAAiB,MAAM,UAA8B;CACxE,MAAM,CAAC,WAAW,gBAAgB,MAAM,SAAS,EAAE;CACnD,MAAM,UAAU,MAAM,OAAyB,KAAK;AAEpD,OAAM,sBAAsB;AAC1B,MAAI,QAAQ,QACV,cAAa,QAAQ,QAAQ,YAAY;IAE1C,CAAC,MAAM,SAAS,QAAQ,SAAS,CAAC,OAAO,CAAC;AAE7C,OAAM,gBAAgB;EACpB,IAAI;AAIJ,MAAI,eAAe,GACjB,SAAQ,iBAAiB,UAAU,KAAK,EAAE,IAAI;AAGhD,eAAa;AACX,OAAI,UAAU,KACZ,cAAa,MAAM;;IAGtB,CAAC,WAAW,CAAC;CAGhB,MAAM,gBAAgB,SAA4B,cAAsB;AACtE,MAAI,WAAW,aAAa,eAAe,WAAW;GACpD,MAAM,aAAa,YAAY;GAE/B,MAAM,qBACJ,YACA,QAAQ,aACR,QAAQ,cACR,QAAQ,cAAc;AAExB,aAAU,KAAK,MAAM,aAAa,mBAAmB,CAAC;;AAGxD,SAAO;;AAGT,QACE,sBAAA,cAAC,sBAAsB,UAAvB,EAAgC,OAAO,EAAE,cAAc,EAmBtB,EAlB/B,sBAAA,cAAC,YAAD;EACE,WAAW,KAAK,UAAU;EAC1B,OAAO,aAA2B;EAClC,eAAe;EACf,GAAI;EAaO,EAXX,sBAAA,cAAC,YAAD,EAAY,KAAK,SAAgC,EAAtB,SAAsB,EACjD,sBAAA,cAAC,kBAAA,MACC,sBAAA,cAAC,gBAAD;EACE,OAAO,EAAE,qCAAqC,GAAG,UAAU,EAAE,KAAK;EAClE,WAAW,KAAK;GACd;GACA;GACA;GACD,CAAC;EACF,CAAA,CACe,CACR,CACkB;;AAIrC,IAAa,iBAAiB,OAAO,OAAO,yBAAyB;CACnE,MAAM;CACN,UAAU;CACV,iBAAiB;CACjB,cAAc;CACd,mBAAmB;CACnB,iBAAiB;CAClB,CAAC;AAEF,wBAAwB,cAAc"}
1
+ {"version":3,"file":"NavigationMenu.js","names":[],"sources":["../../../src/components/navigation/NavigationMenu.tsx"],"sourcesContent":["import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/styled'\nimport { cn } from '~/styled'\n\nimport { colorSchemes as navigationMenuColorSchemes } from './NavigationMenu.colorscheme.config'\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n base: ['flex', 'justify-center', 'relative']\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n base: ['flex', 'justify-center', 'items-center', 'gap-1', 'list-none']\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n base: ['z-2147483647']\n})\n\nconst ViewportPosition = styled('div', {\n base: ['absolute', 'left-0', 'top-full', 'w-full', 'flex', 'justify-center']\n})\n\nconst NavigationMenuComponent = ({\n children,\n className,\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={cn(className)}\n style={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n className={cn([\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n 'translate-x-(--navigation-menu-viewport-offset)'\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"],"mappings":";;;;;;;;;;;AAiBA,IAAM,aAAa,OAAO,wBAAwB,MAAM,EACtD,MAAM;CAAC;CAAQ;CAAkB;CAAW,EAC7C,CAAC;AAEF,IAAM,aAAa,OAAO,wBAAwB,MAAM,EACtD,MAAM;CAAC;CAAQ;CAAkB;CAAgB;CAAS;CAAY,EACvE,CAAC;AAEF,IAAM,iBAAiB,OAAO,wBAAwB,UAAU,EAC9D,MAAM,CAAC,eAAe,EACvB,CAAC;AAEF,IAAM,mBAAmB,OAAO,OAAO,EACrC,MAAM;CAAC;CAAY;CAAU;CAAY;CAAU;CAAQ;CAAiB,EAC7E,CAAC;AAEF,IAAM,2BAA2B,EAC/B,UACA,WACA,GAAG,YAC0C;CAC7C,MAAM,CAAC,QAAQ,aAAa,MAAM,UAAqC;CACvE,MAAM,CAAC,YAAY,iBAAiB,MAAM,UAA8B;CACxE,MAAM,CAAC,WAAW,gBAAgB,MAAM,SAAS,EAAE;CACnD,MAAM,UAAU,MAAM,OAAyB,KAAK;AAEpD,OAAM,sBAAsB;AAC1B,MAAI,QAAQ,QACV,cAAa,QAAQ,QAAQ,YAAY;IAE1C,CAAC,MAAM,SAAS,QAAQ,SAAS,CAAC,OAAO,CAAC;AAE7C,OAAM,gBAAgB;EACpB,IAAI;AAIJ,MAAI,eAAe,GACjB,SAAQ,iBAAiB,UAAU,KAAK,EAAE,IAAI;AAGhD,eAAa;AACX,OAAI,UAAU,KACZ,cAAa,MAAM;;IAGtB,CAAC,WAAW,CAAC;CAGhB,MAAM,gBAAgB,SAA4B,cAAsB;AACtE,MAAI,WAAW,aAAa,eAAe,WAAW;GACpD,MAAM,aAAa,YAAY;GAE/B,MAAM,qBACJ,YACA,QAAQ,aACR,QAAQ,cACR,QAAQ,cAAc;AAExB,aAAU,KAAK,MAAM,aAAa,mBAAmB,CAAC;;AAGxD,SAAO;;AAGT,QACE,sBAAA,cAAC,sBAAsB,UAAvB,EAAgC,OAAO,EAAE,cAAc,EAmBtB,EAlB/B,sBAAA,cAAC,YAAD;EACE,WAAW,GAAG,UAAU;EACxB,OAAO,aAA2B;EAClC,eAAe;EACf,GAAI;EAaO,EAXX,sBAAA,cAAC,YAAD,EAAY,KAAK,SAAgC,EAAtB,SAAsB,EACjD,sBAAA,cAAC,kBAAA,MACC,sBAAA,cAAC,gBAAD;EACE,OAAO,EAAE,qCAAqC,GAAG,UAAU,EAAE,KAAK;EAClE,WAAW,GAAG;GACZ;GACA;GACA;GACD,CAAC;EACF,CAAA,CACe,CACR,CACkB;;AAIrC,IAAa,iBAAiB,OAAO,OAAO,yBAAyB;CACnE,MAAM;CACN,UAAU;CACV,iBAAiB;CACjB,cAAc;CACd,mBAAmB;CACnB,iBAAiB;CAClB,CAAC;AAEF,wBAAwB,cAAc"}
@@ -1,8 +1,7 @@
1
- import { styled } from "../../styled.js";
1
+ import { cn, styled } from "../../styled.js";
2
2
  import { Icon } from "../icon/Icon.js";
3
3
  import { preventEvent } from "../../utilities/event/preventEvent.js";
4
4
  import { navigationMenuActiveItemStyles, navigationMenuBaseItemStyles } from "./NavigationMenu.styles.js";
5
- import clsx from "clsx";
6
5
  import React from "react";
7
6
  import { ChevronDown } from "@atom-learning/icons";
8
7
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
@@ -27,7 +26,7 @@ var NavigationMenuDropdownTrigger = React.forwardRef(({ children, active, ...pro
27
26
  }, children, /* @__PURE__ */ React.createElement(Icon, {
28
27
  is: ChevronDown,
29
28
  size: "sm",
30
- className: clsx("ml-1", "in-data-[state=open]:-rotate-180", "motion-safe:duration-200", "motion-safe:ease-in", "motion-safe:transition-transform")
29
+ className: cn("ml-1", "in-data-[state=open]:-rotate-180", "motion-safe:duration-200", "motion-safe:ease-in", "motion-safe:transition-transform")
31
30
  })));
32
31
  NavigationMenuDropdownTrigger.displayName = "NavigationMenuDropdownTrigger";
33
32
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuDropdownTrigger.js","names":[],"sources":["../../../src/components/navigation/NavigationMenuDropdownTrigger.tsx"],"sourcesContent":["import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport clsx from 'clsx'\nimport React from 'react'\n\nimport { styled } from '~/styled'\nimport { preventEvent } from '~/utilities/event/preventEvent'\n\nimport { Icon } from '../icon/Icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(NavigationMenuPrimitive.Trigger, {\n base: [\n ...navigationMenuBaseItemStyles,\n 'flex',\n 'items-center',\n 'rounded-md',\n 'justify-between',\n 'data-[state=open]:bg-(--trigger-background-open)'\n ],\n variants: {\n active: {\n true: navigationMenuActiveItemStyles\n }\n }\n})\n\nexport const NavigationMenuDropdownTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTrigger>\n>(({ 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 size=\"sm\"\n className={clsx(\n 'ml-1',\n 'in-data-[state=open]:-rotate-180',\n 'motion-safe:duration-200',\n 'motion-safe:ease-in',\n 'motion-safe:transition-transform'\n )}\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n"],"mappings":";;;;;;;;;AAcA,IAAM,gBAAgB,OAAO,wBAAwB,SAAS;CAC5D,MAAM;EACJ,GAAG;EACH;EACA;EACA;EACA;EACA;EACD;CACD,UAAU,EACR,QAAQ,EACN,MAAM,gCACP,EACF;CACF,CAAC;AAEF,IAAa,gCAAgC,MAAM,YAGhD,EAAE,UAAU,QAAQ,GAAG,SAAS,iBACjC,sBAAA,cAAC,eAAD;CACU;CACR,GAAI;CACJ,KAAK;CACL,eAAe;CACf,gBAAgB;CAcF,EAZb,UACD,sBAAA,cAAC,MAAD;CACE,IAAI;CACJ,MAAK;CACL,WAAW,KACT,QACA,oCACA,4BACA,uBACA,mCACD;CACD,CAAA,CACY,CAChB;AAEF,8BAA8B,cAAc"}
1
+ {"version":3,"file":"NavigationMenuDropdownTrigger.js","names":[],"sources":["../../../src/components/navigation/NavigationMenuDropdownTrigger.tsx"],"sourcesContent":["import { ChevronDown } from '@atom-learning/icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/styled'\nimport { cn } from '~/styled'\nimport { preventEvent } from '~/utilities/event/preventEvent'\n\nimport { Icon } from '../icon/Icon'\nimport {\n navigationMenuActiveItemStyles,\n navigationMenuBaseItemStyles\n} from './NavigationMenu.styles'\n\nconst StyledTrigger = styled(NavigationMenuPrimitive.Trigger, {\n base: [\n ...navigationMenuBaseItemStyles,\n 'flex',\n 'items-center',\n 'rounded-md',\n 'justify-between',\n 'data-[state=open]:bg-(--trigger-background-open)'\n ],\n variants: {\n active: {\n true: navigationMenuActiveItemStyles\n }\n }\n})\n\nexport const NavigationMenuDropdownTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof StyledTrigger>\n>(({ 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 size=\"sm\"\n className={cn(\n 'ml-1',\n 'in-data-[state=open]:-rotate-180',\n 'motion-safe:duration-200',\n 'motion-safe:ease-in',\n 'motion-safe:transition-transform'\n )}\n />\n </StyledTrigger>\n))\n\nNavigationMenuDropdownTrigger.displayName = 'NavigationMenuDropdownTrigger'\n"],"mappings":";;;;;;;;AAcA,IAAM,gBAAgB,OAAO,wBAAwB,SAAS;CAC5D,MAAM;EACJ,GAAG;EACH;EACA;EACA;EACA;EACA;EACD;CACD,UAAU,EACR,QAAQ,EACN,MAAM,gCACP,EACF;CACF,CAAC;AAEF,IAAa,gCAAgC,MAAM,YAGhD,EAAE,UAAU,QAAQ,GAAG,SAAS,iBACjC,sBAAA,cAAC,eAAD;CACU;CACR,GAAI;CACJ,KAAK;CACL,eAAe;CACf,gBAAgB;CAcF,EAZb,UACD,sBAAA,cAAC,MAAD;CACE,IAAI;CACJ,MAAK;CACL,WAAW,GACT,QACA,oCACA,4BACA,uBACA,mCACD;CACD,CAAA,CACY,CAChB;AAEF,8BAA8B,cAAc"}
@@ -4,10 +4,12 @@ declare const StyledRoot: React.ForwardRefExoticComponent<Omit<import("@radix-ui
4
4
  }>;
5
5
  type TNavigationVerticalProps = Omit<React.ComponentProps<typeof StyledRoot>, 'delayDuration' | 'skipDelayDuration' | 'defaultValue' | 'value' | 'onValueChange'>;
6
6
  export declare const NavigationMenuVertical: (({ children, ...rest }: TNavigationVerticalProps) => React.JSX.Element) & {
7
- Link: ({ as, href, children, ...rest }: Omit<import("@radix-ui/react-navigation-menu").NavigationMenuLinkProps & React.RefAttributes<HTMLAnchorElement>, "size"> & {
7
+ Link: ({ as, href, children, reloadDocument, ...rest }: Omit<import("@radix-ui/react-navigation-menu").NavigationMenuLinkProps & React.RefAttributes<HTMLAnchorElement>, "size"> & {
8
8
  size?: "md" | "lg" | undefined;
9
9
  } & {
10
10
  as?: React.ElementType;
11
+ } & {
12
+ reloadDocument?: boolean;
11
13
  }) => React.JSX.Element;
12
14
  Accordion: ({ defaultOpen, open, onOpenChange, disabled, ...rest }: import("@radix-ui/react-collapsible").CollapsibleProps & React.RefAttributes<HTMLDivElement> & {
13
15
  content?: string | undefined | undefined;
@@ -1,9 +1,9 @@
1
- import clsx from "clsx";
1
+ import { cn } from "../../styled.js";
2
2
  import React from "react";
3
3
  import { Item } from "@radix-ui/react-navigation-menu";
4
4
  //#region src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx
5
5
  var NavigationMenuVerticalItem = (props) => /* @__PURE__ */ React.createElement(Item, {
6
- className: clsx("[ul_li_&]:[--navigation-menu-vertical-item-pl:--spacing(8)]", "[ul_li_&_&]:[--navigation-menu-vertical-item-pl:--spacing(12)]", "[ul_li_&_&_&]:[--navigation-menu-vertical-item-pl:--spacing(16)]"),
6
+ className: cn("[ul_li_&]:[--navigation-menu-vertical-item-pl:--spacing(8)]", "[ul_li_&_&]:[--navigation-menu-vertical-item-pl:--spacing(12)]", "[ul_li_&_&_&]:[--navigation-menu-vertical-item-pl:--spacing(16)]"),
7
7
  ...props
8
8
  });
9
9
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuVerticalItem.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx"],"sourcesContent":["import { Item } from '@radix-ui/react-navigation-menu'\nimport clsx from 'clsx'\nimport React from 'react'\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 Item>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => (\n <Item\n className={clsx(\n '[ul_li_&]:[--navigation-menu-vertical-item-pl:--spacing(8)]',\n '[ul_li_&_&]:[--navigation-menu-vertical-item-pl:--spacing(12)]',\n '[ul_li_&_&_&]:[--navigation-menu-vertical-item-pl:--spacing(16)]'\n )}\n {...props}\n />\n)\n"],"mappings":";;;;AAeA,IAAa,8BACX,UAEA,sBAAA,cAAC,MAAD;CACE,WAAW,KACT,+DACA,kEACA,mEACD;CACD,GAAI;CACJ,CAAA"}
1
+ {"version":3,"file":"NavigationMenuVerticalItem.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalItem.tsx"],"sourcesContent":["import { Item } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { cn } from '~/styled'\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 Item>,\n 'value'\n>\n\nexport const NavigationMenuVerticalItem = (\n props: TNavigationMenuVerticalItemProps\n): JSX.Element => (\n <Item\n className={cn(\n '[ul_li_&]:[--navigation-menu-vertical-item-pl:--spacing(8)]',\n '[ul_li_&_&]:[--navigation-menu-vertical-item-pl:--spacing(12)]',\n '[ul_li_&_&_&]:[--navigation-menu-vertical-item-pl:--spacing(16)]'\n )}\n {...props}\n />\n)\n"],"mappings":";;;;AAgBA,IAAa,8BACX,UAEA,sBAAA,cAAC,MAAD;CACE,WAAW,GACT,+DACA,kEACA,mEACD;CACD,GAAI;CACJ,CAAA"}
@@ -1,11 +1,11 @@
1
+ import { cn } from "../../styled.js";
1
2
  import { Icon } from "../icon/Icon.js";
2
3
  import { NavigationMenuVerticalIcon } from "./NavigationMenuVerticalIcon.js";
3
4
  import { NavigationMenuVerticalText } from "./NavigationMenuVerticalText.js";
4
- import clsx from "clsx";
5
5
  import * as React$1 from "react";
6
6
  //#region src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx
7
7
  var NavigationMenuVerticalItemContent = ({ children, className, ...rest }) => /* @__PURE__ */ React$1.createElement("div", {
8
- className: clsx("flex", "gap-2", "items-center", className),
8
+ className: cn("flex", "gap-2", "items-center", className),
9
9
  ...rest
10
10
  }, React$1.Children.map(children, (child) => {
11
11
  if (typeof child === "string" || typeof child === "number") return /* @__PURE__ */ React$1.createElement(NavigationMenuVerticalText, null, child);
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuVerticalItemContent.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\n\nimport { Icon } from '~/components/icon/Icon'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<'div'>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n className,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => (\n <div className={clsx('flex', 'gap-2', 'items-center', className)} {...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 </div>\n)\n"],"mappings":";;;;;;AAUA,IAAa,qCAAqC,EAChD,UACA,WACA,GAAG,WAEH,wBAAA,cAAC,OAAD;CAAK,WAAW,KAAK,QAAQ,SAAS,gBAAgB,UAAU;CAAE,GAAI;CAchE,EAZF,QAAM,SAAS,IAAI,WAAW,UAAU;AACtC,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAChD,QACE,wBAAA,cAAC,4BAAA,MAA4B,MAAmC;AAGpE,KAAI,QAAM,eAAe,MAAM,IAAI,MAAM,SAAS,KAChD,QAAO,wBAAA,cAAC,4BAA+B,MAAM,MAAS;AAExD,QAAO;EACP,CAEA"}
1
+ {"version":3,"file":"NavigationMenuVerticalItemContent.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalItemContent.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Icon } from '~/components/icon/Icon'\nimport { cn } from '~/styled'\n\nimport { NavigationMenuVerticalIcon } from './NavigationMenuVerticalIcon'\nimport { NavigationMenuVerticalText } from './NavigationMenuVerticalText'\n\ntype TNavigationMenuVerticalItemContentProps = React.ComponentProps<'div'>\n\nexport const NavigationMenuVerticalItemContent = ({\n children,\n className,\n ...rest\n}: TNavigationMenuVerticalItemContentProps): JSX.Element => (\n <div className={cn('flex', 'gap-2', 'items-center', className)} {...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 </div>\n)\n"],"mappings":";;;;;;AAUA,IAAa,qCAAqC,EAChD,UACA,WACA,GAAG,WAEH,wBAAA,cAAC,OAAD;CAAK,WAAW,GAAG,QAAQ,SAAS,gBAAgB,UAAU;CAAE,GAAI;CAc9D,EAZF,QAAM,SAAS,IAAI,WAAW,UAAU;AACtC,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAChD,QACE,wBAAA,cAAC,4BAAA,MAA4B,MAAmC;AAGpE,KAAI,QAAM,eAAe,MAAM,IAAI,MAAM,SAAS,KAChD,QAAO,wBAAA,cAAC,4BAA+B,MAAM,MAAS;AAExD,QAAO;EACP,CAEA"}
@@ -4,6 +4,8 @@ declare const StyledNavigationMenuVerticalLink: React.ForwardRefExoticComponent<
4
4
  } & {
5
5
  as?: React.ElementType;
6
6
  }>;
7
- type NavigationMenuVerticalItemProps = React.ComponentProps<typeof StyledNavigationMenuVerticalLink>;
8
- export declare const NavigationMenuVerticalLink: ({ as, href, children, ...rest }: NavigationMenuVerticalItemProps) => React.JSX.Element;
7
+ type NavigationMenuVerticalItemProps = React.ComponentProps<typeof StyledNavigationMenuVerticalLink> & {
8
+ reloadDocument?: boolean;
9
+ };
10
+ export declare const NavigationMenuVerticalLink: ({ as, href, children, reloadDocument, ...rest }: NavigationMenuVerticalItemProps) => React.JSX.Element;
9
11
  export {};
@@ -1,5 +1,6 @@
1
1
  import { styled } from "../../styled.js";
2
2
  import { getExternalAnchorProps } from "../../utilities/uri/index.js";
3
+ import { useRouterLinkProps } from "../router-provider/RouterProvider.js";
3
4
  import { preventEvent } from "../../utilities/event/preventEvent.js";
4
5
  import { NavigationMenuVerticalItem } from "./NavigationMenuVerticalItem.js";
5
6
  import { navigationMenuVerticalItemStyles } from "./NavigationMenuVertical.styles.js";
@@ -14,9 +15,10 @@ var StyledNavigationMenuVerticalLink = styled(Link, {
14
15
  lg: ["min-h-12"]
15
16
  } }
16
17
  });
17
- var NavigationMenuVerticalLink = ({ as, href, children, ...rest }) => {
18
- const Component = as || (href ? "a" : "button");
19
- const componentProps = as ? {} : href ? getExternalAnchorProps(href) : { type: "button" };
18
+ var NavigationMenuVerticalLink = ({ as, href, children, reloadDocument, ...rest }) => {
19
+ const routerLinkProps = useRouterLinkProps(href, { reloadDocument });
20
+ const Component = as || routerLinkProps.as || (href ? "a" : "button");
21
+ const componentProps = as || routerLinkProps.as ? {} : href ? getExternalAnchorProps(href) : { type: "button" };
20
22
  return /* @__PURE__ */ React.createElement(NavigationMenuVerticalItem, null, /* @__PURE__ */ React.createElement(StyledNavigationMenuVerticalLink, {
21
23
  size: "lg",
22
24
  href,
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuVerticalLink.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx"],"sourcesContent":["import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/styled'\nimport { preventEvent } from '~/utilities/event/preventEvent'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(Link, {\n base: navigationMenuVerticalItemStyles,\n variants: {\n size: {\n md: ['min-h-10'],\n lg: ['min-h-12']\n }\n }\n})\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n>\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const Component = (as || (href ? 'a' : 'button')) as React.ElementType\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"],"mappings":";;;;;;;;;AAWA,IAAM,mCAAmC,OAAO,MAAM;CACpD,MAAM;CACN,UAAU,EACR,MAAM;EACJ,IAAI,CAAC,WAAW;EAChB,IAAI,CAAC,WAAW;EACjB,EACF;CACF,CAAC;AAMF,IAAa,8BAA8B,EACzC,IACA,MACA,UACA,GAAG,WACkC;CACrC,MAAM,YAAa,OAAO,OAAO,MAAM;CACvC,MAAM,iBAAiB,KACnB,EAAE,GACF,OACE,uBAAuB,KAAK,GAC5B,EAAE,MAAM,UAAU;AAExB,QACE,sBAAA,cAAC,4BAAA,MACC,sBAAA,cAAC,kCAAD;EACE,MAAK;EACC;EACN,GAAI;EACJ,GAAI;EACJ,UAAU;EACV,SAAA;EAOiC,EALjC,sBAAA,cAAC,WAAA,MACC,sBAAA,cAAC,mCAAA,MACE,SACiC,CAC1B,CACqB,CACR"}
1
+ {"version":3,"file":"NavigationMenuVerticalLink.js","names":[],"sources":["../../../src/components/navigation-menu-vertical/NavigationMenuVerticalLink.tsx"],"sourcesContent":["import { Link } from '@radix-ui/react-navigation-menu'\nimport React from 'react'\n\nimport { styled } from '~/styled'\nimport { preventEvent } from '~/utilities/event/preventEvent'\nimport { getExternalAnchorProps } from '~/utilities/uri'\n\nimport { useRouterLinkProps } from '../router-provider/RouterProvider'\nimport { navigationMenuVerticalItemStyles } from './NavigationMenuVertical.styles'\nimport { NavigationMenuVerticalItem } from './NavigationMenuVerticalItem'\nimport { NavigationMenuVerticalItemContent } from './NavigationMenuVerticalItemContent'\n\nconst StyledNavigationMenuVerticalLink = styled(Link, {\n base: navigationMenuVerticalItemStyles,\n variants: {\n size: {\n md: ['min-h-10'],\n lg: ['min-h-12']\n }\n }\n})\n\ntype NavigationMenuVerticalItemProps = React.ComponentProps<\n typeof StyledNavigationMenuVerticalLink\n> & { reloadDocument?: boolean }\n\nexport const NavigationMenuVerticalLink = ({\n as,\n href,\n children,\n reloadDocument,\n ...rest\n}: NavigationMenuVerticalItemProps) => {\n const routerLinkProps = useRouterLinkProps(href, { reloadDocument })\n const Component = (as ||\n routerLinkProps.as ||\n (href ? 'a' : 'button')) as React.ElementType\n const componentProps =\n as || routerLinkProps.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"],"mappings":";;;;;;;;;;AAYA,IAAM,mCAAmC,OAAO,MAAM;CACpD,MAAM;CACN,UAAU,EACR,MAAM;EACJ,IAAI,CAAC,WAAW;EAChB,IAAI,CAAC,WAAW;EACjB,EACF;CACF,CAAC;AAMF,IAAa,8BAA8B,EACzC,IACA,MACA,UACA,gBACA,GAAG,WACkC;CACrC,MAAM,kBAAkB,mBAAmB,MAAM,EAAE,gBAAgB,CAAC;CACpE,MAAM,YAAa,MACjB,gBAAgB,OACf,OAAO,MAAM;CAChB,MAAM,iBACJ,MAAM,gBAAgB,KAClB,EAAE,GACF,OACE,uBAAuB,KAAK,GAC5B,EAAE,MAAM,UAAU;AAE1B,QACE,sBAAA,cAAC,4BAAA,MACC,sBAAA,cAAC,kCAAD;EACE,MAAK;EACC;EACN,GAAI;EACJ,GAAI;EACJ,UAAU;EACV,SAAA;EAOiC,EALjC,sBAAA,cAAC,WAAA,MACC,sBAAA,cAAC,mCAAA,MACE,SACiC,CAC1B,CACqB,CACR"}
@@ -1,8 +1,7 @@
1
- import { styled } from "../../styled.js";
1
+ import { cn, styled } from "../../styled.js";
2
2
  import { Input } from "../input/Input.js";
3
3
  import { getFieldIconSize } from "../../utilities/style/get-icon-size.js";
4
4
  import { NumberInputStepper } from "./NumberInputStepper.js";
5
- import clsx from "clsx";
6
5
  import * as React$1 from "react";
7
6
  import { Minus, Plus } from "@atom-learning/icons";
8
7
  //#region src/components/number-input/NumberInput.tsx
@@ -112,7 +111,7 @@ var NumberInput = React$1.forwardRef(({ value, defaultValue = 0, onValueChange,
112
111
  theme,
113
112
  state: externalState || (hasError ? "error" : void 0),
114
113
  "aria-invalid": externalAriaInvalid || hasError || void 0,
115
- className: clsx("rounded-none", "w-16", "[&_>_input]:text-center", "disabled:opacity-30", "disabled:pointer-events-none", emphasis === "bold" && [
114
+ className: cn("rounded-none", "w-16", "[&_>_input]:text-center", "disabled:opacity-30", "disabled:pointer-events-none", emphasis === "bold" && [
116
115
  "rounded-1",
117
116
  "[&_>_input[aria-invalid=true]]:text-danger",
118
117
  "focus-within:[&_>_input]:text-grey-1000"
@@ -138,7 +137,7 @@ var NumberInput = React$1.forwardRef(({ value, defaultValue = 0, onValueChange,
138
137
  }, /* @__PURE__ */ React$1.createElement(NumberInputStepper, {
139
138
  onClick: decrement,
140
139
  icon: Minus,
141
- className: clsx(emphasis !== "bold" && "border-r-none rounded-r-none"),
140
+ className: cn(emphasis !== "bold" && "border-r-none rounded-r-none"),
142
141
  size: iconSize,
143
142
  fieldAppearance: appearance,
144
143
  fieldTheme: theme,
@@ -150,7 +149,7 @@ var NumberInput = React$1.forwardRef(({ value, defaultValue = 0, onValueChange,
150
149
  }), /* @__PURE__ */ React$1.createElement(Input, inputProps), /* @__PURE__ */ React$1.createElement(NumberInputStepper, {
151
150
  onClick: increment,
152
151
  icon: Plus,
153
- className: clsx(emphasis !== "bold" && "border-l-none rounded-l-none"),
152
+ className: cn(emphasis !== "bold" && "border-l-none rounded-l-none"),
154
153
  size: iconSize,
155
154
  fieldAppearance: appearance,
156
155
  fieldTheme: theme,
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":[],"sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport clsx from 'clsx'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { getFieldIconSize } from '~/utilities/style/get-icon-size'\n\nimport { Input } from '../input/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 theme?: 'white' | 'grey'\n emphasis?: 'bold'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n className?: string\n}\n\nconst NumberInputContainer = styled('div', {\n base: ['flex'],\n variants: {\n appearance: {\n standard: [],\n modern: ['gap-px']\n },\n emphasis: {\n bold: ['gap-0']\n }\n }\n})\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\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 className,\n appearance = 'standard',\n theme,\n emphasis,\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 hasError = internalValue < min || internalValue > max\n const {\n state: externalState,\n 'aria-invalid': externalAriaInvalid,\n ...restProps\n } = rest as { state?: 'error'; 'aria-invalid'?: boolean } & typeof rest\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...restProps,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n theme,\n state: externalState || (hasError ? 'error' : undefined),\n 'aria-invalid': externalAriaInvalid || hasError || undefined,\n className: clsx(\n 'rounded-none',\n 'w-16',\n '[&_>_input]:text-center',\n 'disabled:opacity-30',\n 'disabled:pointer-events-none',\n emphasis === 'bold' && [\n 'rounded-1',\n '[&_>_input[aria-invalid=true]]:text-danger',\n 'focus-within:[&_>_input]:text-grey-1000'\n ],\n emphasis === 'bold' &&\n appearance === 'standard' && [\n 'border-none',\n '[&:has([aria-invalid=true])]:border-2',\n '[&:has([aria-invalid=true])]:border-danger',\n 'focus-within:border-2',\n 'focus-within:border-blue-800'\n ]\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\n appearance={appearance}\n emphasis={emphasis}\n className={className}\n >\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n className={clsx(\n emphasis !== 'bold' && 'border-r-none rounded-r-none'\n )}\n size={iconSize}\n fieldAppearance={appearance}\n fieldTheme={theme}\n emphasis={emphasis}\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 className={clsx(\n emphasis !== 'bold' && 'border-l-none rounded-l-none'\n )}\n size={iconSize}\n fieldAppearance={appearance}\n fieldTheme={theme}\n emphasis={emphasis}\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"],"mappings":";;;;;;;;AA6BA,IAAM,uBAAuB,OAAO,OAAO;CACzC,MAAM,CAAC,OAAO;CACd,UAAU;EACR,YAAY;GACV,UAAU,EAAE;GACZ,QAAQ,CAAC,SAAS;GACnB;EACD,UAAU,EACR,MAAM,CAAC,QAAQ,EAChB;EACF;CACF,CAAC;AAEF,IAAa,cAAc,QAAM,YAE7B,EACE,OACA,eAAe,GACf,eACA,MAAM,GACN,MAAM,OAAO,kBACb,OAAO,GACP,UAAU,aAAa,OACvB,UAAU,aAAa,OACvB,OAAO,MACP,qBAAqB,yBACrB,wBAAwB,4BACxB,WACA,aAAa,YACb,OACA,UACA,GAAG,QAEL,QACgB;CAChB,MAAM,CAAC,eAAe,oBAAoB,QAAM,SAC9C,SAAS,aACV;AACD,SAAM,gBAAgB;AAEpB,MAAI,OAAO,UAAU,YAAa,kBAAiB,MAAM;IACxD,CAAC,MAAM,CAAC;CAEX,MAAM,WAAW,QAAM,OAAgC,KAAK;AAE5D,SAAM,oBAAoB,WAAW,SAAS,QAA4B;CAE1E,MAAM,WAAW,QAAM,cAAc,iBAAiB,KAAK,EAAE,CAAC,KAAK,CAAC;CAEpE,MAAM,sBAAsB;EAC1B,WAAW;EACX,WAAW;EACX,GAAG;EACJ;CAED,MAAM,yBAAyB;EAC7B,WAAW,6BAA6B;EACxC,WAAW,6BAA6B;EACxC,GAAG;EACJ;CAED,MAAM,UAAU,iBAAiB;CACjC,MAAM,UAAU,iBAAiB;CAEjC,MAAM,QAAQ,QAAM,aACjB,kBAA0B,KAAK,IAAI,KAAK,IAAI,eAAe,IAAI,EAAE,IAAI,EACtE,CAAC,KAAK,IAAI,CACX;CAED,MAAM,cAAc,QAAM,aACvB,aAAqB;AACpB,kBAAgB,SAAS;AACzB,mBAAiB,SAAS;IAE5B,CAAC,cAAc,CAChB;CAED,MAAM,gBAAgB,QAAM,aACzB,UAA+C;AAE9C,cADoB,OAAO,MAAM,OAAO,MAAM,QAAQ,OAAO,GAAG,CAAC,CACzC;IAE1B,CAAC,YAAY,CACd;CAED,MAAM,YAAY,QAAM,kBAAkB;AACxC,MAAI,WAAW,WAAY;AAC3B,YAAU,SAAS,OAAO;AAE1B,cAAY,MADK,OAAO,cAAc,GAAG,KACd,CAAC;IAC3B;EAAC;EAAO;EAAS;EAAY;EAAM;EAAa;EAAc,CAAC;CAElE,MAAM,YAAY,QAAM,kBAAkB;AACxC,MAAI,WAAW,WAAY;AAC3B,YAAU,SAAS,OAAO;AAE1B,cAAY,MADK,OAAO,cAAc,GAAG,KACd,CAAC;IAC3B;EAAC;EAAO;EAAS;EAAY;EAAK;EAAM;EAAa;EAAc,CAAC;CAEvE,MAAM,YAAY,QAAM,aACrB,UAA+B;AAC9B,MAAI,MAAM,YAAY,YAAa;;;;;;;;;EAUnC,MAAM,WAAW,MAAM;EAWvB,MAAM,SATqD;GACzD,SAAS;GACT,YAAY;GACZ,WAAW;GACX,WAAW;GACX,YAAY,YAAY,IAAI;GAC5B,WAAW,YAAY,IAAI;GAC5B,CAEqB;AAEtB,MAAI,QAAQ;AACV,SAAM,gBAAgB;AACtB,UAAO,MAAM;;IAGjB;EAAC;EAAW;EAAW;EAAa;EAAK;EAAI,CAC9C;CAED,MAAM,WAAW,gBAAgB,OAAO,gBAAgB;CACxD,MAAM,EACJ,OAAO,eACP,gBAAgB,qBAChB,GAAG,cACD;CAEJ,MAAM,aAAiD;EACrD,MAAM;EACN,OAAO;EACP,GAAG;EACH,UAAU;EACV;EACA;EACA;EACA;EACA,OAAO,kBAAkB,WAAW,UAAU,KAAA;EAC9C,gBAAgB,uBAAuB,YAAY,KAAA;EACnD,WAAW,KACT,gBACA,QACA,2BACA,uBACA,gCACA,aAAa,UAAU;GACrB;GACA;GACA;GACD,EACD,aAAa,UACX,eAAe,cAAc;GAC3B;GACA;GACA;GACA;GACA;GACD,CACJ;EACD,KAAK;EACL,UAAU;EACV,UAAU;EACV,iBAAiB;EACjB,iBAAiB;EACjB,iBAAiB;EACjB,MAAM;EACP;AAED,QACE,wBAAA,cAAC,sBAAD;EACc;EACF;EACC;EAiCU,EA/BrB,wBAAA,cAAC,oBAAD;EACE,SAAS;EACT,MAAM;EACN,WAAW,KACT,aAAa,UAAU,+BACxB;EACD,MAAM;EACN,iBAAiB;EACjB,YAAY;EACF;EACV,UAAU,WAAW;EACrB,aAAa,WAAW,CAAC;EACzB,wBAAwB,uBAAuB;EAC/C,OAAO,oBAAoB;EAC3B,CAAA,EACF,wBAAA,cAAC,OAAU,WAAc,EACzB,wBAAA,cAAC,oBAAD;EACE,SAAS;EACT,MAAM;EACN,WAAW,KACT,aAAa,UAAU,+BACxB;EACD,MAAM;EACN,iBAAiB;EACjB,YAAY;EACF;EACV,UAAU,WAAW;EACrB,aAAa,WAAW,CAAC;EACzB,wBAAwB,uBAAuB;EAC/C,OAAO,oBAAoB;EAC3B,CAAA,CACmB;EAG5B;AAED,YAAY,cAAc"}
1
+ {"version":3,"file":"NumberInput.js","names":[],"sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { cn } from '~/styled'\nimport { getFieldIconSize } from '~/utilities/style/get-icon-size'\n\nimport { Input } from '../input/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 theme?: 'white' | 'grey'\n emphasis?: 'bold'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n className?: string\n}\n\nconst NumberInputContainer = styled('div', {\n base: ['flex'],\n variants: {\n appearance: {\n standard: [],\n modern: ['gap-px']\n },\n emphasis: {\n bold: ['gap-0']\n }\n }\n})\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\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 className,\n appearance = 'standard',\n theme,\n emphasis,\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 hasError = internalValue < min || internalValue > max\n const {\n state: externalState,\n 'aria-invalid': externalAriaInvalid,\n ...restProps\n } = rest as { state?: 'error'; 'aria-invalid'?: boolean } & typeof rest\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...restProps,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n theme,\n state: externalState || (hasError ? 'error' : undefined),\n 'aria-invalid': externalAriaInvalid || hasError || undefined,\n className: cn(\n 'rounded-none',\n 'w-16',\n '[&_>_input]:text-center',\n 'disabled:opacity-30',\n 'disabled:pointer-events-none',\n emphasis === 'bold' && [\n 'rounded-1',\n '[&_>_input[aria-invalid=true]]:text-danger',\n 'focus-within:[&_>_input]:text-grey-1000'\n ],\n emphasis === 'bold' &&\n appearance === 'standard' && [\n 'border-none',\n '[&:has([aria-invalid=true])]:border-2',\n '[&:has([aria-invalid=true])]:border-danger',\n 'focus-within:border-2',\n 'focus-within:border-blue-800'\n ]\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\n appearance={appearance}\n emphasis={emphasis}\n className={className}\n >\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n className={cn(emphasis !== 'bold' && 'border-r-none rounded-r-none')}\n size={iconSize}\n fieldAppearance={appearance}\n fieldTheme={theme}\n emphasis={emphasis}\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 className={cn(emphasis !== 'bold' && 'border-l-none rounded-l-none')}\n size={iconSize}\n fieldAppearance={appearance}\n fieldTheme={theme}\n emphasis={emphasis}\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"],"mappings":"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"}
@@ -9,9 +9,10 @@ declare const StyledStepperButton: React.ForwardRefExoticComponent<Omit<Omit<Omi
9
9
  isRounded?: (boolean | Partial<Record<"@initial" | "@sm" | "@md" | "@lg" | "@xl", boolean>>) | undefined;
10
10
  } & {
11
11
  as?: React.ElementType;
12
- }, "children" | "label" | "hasTooltip" | "tooltipSide" | keyof import("../..").NavigatorActions> & {
12
+ }, "children" | "label" | "hasTooltip" | "tooltipSide" | "reloadDocument" | keyof import("../..").NavigatorActions> & {
13
13
  children: React.ReactNode;
14
14
  label: string;
15
+ reloadDocument?: boolean;
15
16
  } & Omit<import("../..").TOptionalTooltipWrapperProps, "label"> & import("../..").NavigatorActions, "ref"> & React.RefAttributes<HTMLButtonElement>, "emphasis" | "fieldAppearance" | "fieldTheme"> & {
16
17
  fieldAppearance?: "standard" | "modern" | undefined;
17
18
  fieldTheme?: "grey" | "white" | undefined;
@@ -1,9 +1,9 @@
1
+ import { cn } from "../../styled.js";
1
2
  import { ColorScheme } from "../../experiments/color-scheme/ColorScheme.js";
2
3
  import { VisibleElementsAmount } from "./pagination.constants.js";
3
4
  import { PaginationProvider } from "./pagination-context/PaginationContext.js";
4
5
  import { PaginationPopover } from "./PaginationPopover.js";
5
6
  import { PaginationItems } from "./PaginationItems.js";
6
- import clsx from "clsx";
7
7
  import * as React$1 from "react";
8
8
  //#region src/components/pagination/Pagination.tsx
9
9
  var PaginationComponent = ({ colorScheme, onSelectedPageChange, selectedPage, visibleElementsCount = VisibleElementsAmount.LESS, pagesCount, indicatedPages = [], disabledPages = [], onItemHover = () => null, labels = {}, children, className, ...rest }) => {
@@ -25,7 +25,7 @@ var PaginationComponent = ({ colorScheme, onSelectedPageChange, selectedPage, vi
25
25
  asChild: true
26
26
  }, /* @__PURE__ */ React$1.createElement("div", {
27
27
  ...rest,
28
- className: clsx("flex", "gap-1", className)
28
+ className: cn("flex", "gap-1", className)
29
29
  }, children || /* @__PURE__ */ React$1.createElement(PaginationItems, null))));
30
30
  };
31
31
  var Pagination = Object.assign(PaginationComponent, { Popover: PaginationPopover });
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","names":[],"sources":["../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\n\nimport { ColorScheme } from '../../experiments/color-scheme/ColorScheme'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { VisibleElementsAmount } from './pagination.constants'\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 className,\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 <div {...rest} className={clsx('flex', 'gap-1', className)}>\n {children || <PaginationItems />}\n </div>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n"],"mappings":";;;;;;;;AAUA,IAAM,uBAAuB,EAC3B,aACA,sBACA,cACA,uBAAuB,sBAAsB,MAC7C,YACA,iBAAiB,EAAE,EACnB,gBAAgB,EAAE,EAClB,oBAAoB,MACpB,SAAS,EAAE,EACX,UACA,WACA,GAAG,WACkB;AACrB,KAAI,CAAC,WAAY,QAAO;CAExB,MAAM,0BAAmD;EACvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;AAED,QACE,wBAAA,cAAC,oBAAuB,yBACtB,wBAAA,cAAC,aAAD;EAAa,MAAK;EAAQ,QAAO;EAAW,GAAI;EAAa,SAAA;EAI/C,EAHZ,wBAAA,cAAC,OAAD;EAAK,GAAI;EAAM,WAAW,KAAK,QAAQ,SAAS,UAAU;EAEpD,EADH,YAAY,wBAAA,cAAC,iBAAA,KAAkB,CAC5B,CACM,CACK;;AAIzB,IAAa,aAAa,OAAO,OAAO,qBAAqB,EAC3D,SAAS,mBACV,CAAC;AAEF,oBAAoB,cAAc"}
1
+ {"version":3,"file":"Pagination.js","names":[],"sources":["../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { cn } from '~/styled'\n\nimport { ColorScheme } from '../../experiments/color-scheme/ColorScheme'\nimport { PaginationProvider } from './pagination-context/PaginationContext'\nimport { VisibleElementsAmount } from './pagination.constants'\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 className,\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 <div {...rest} className={cn('flex', 'gap-1', className)}>\n {children || <PaginationItems />}\n </div>\n </ColorScheme>\n </PaginationProvider>\n )\n}\n\nexport const Pagination = Object.assign(PaginationComponent, {\n Popover: PaginationPopover\n})\n\nPaginationComponent.displayName = 'Pagination'\n"],"mappings":";;;;;;;;AAWA,IAAM,uBAAuB,EAC3B,aACA,sBACA,cACA,uBAAuB,sBAAsB,MAC7C,YACA,iBAAiB,EAAE,EACnB,gBAAgB,EAAE,EAClB,oBAAoB,MACpB,SAAS,EAAE,EACX,UACA,WACA,GAAG,WACkB;AACrB,KAAI,CAAC,WAAY,QAAO;CAExB,MAAM,0BAAmD;EACvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;AAED,QACE,wBAAA,cAAC,oBAAuB,yBACtB,wBAAA,cAAC,aAAD;EAAa,MAAK;EAAQ,QAAO;EAAW,GAAI;EAAa,SAAA;EAI/C,EAHZ,wBAAA,cAAC,OAAD;EAAK,GAAI;EAAM,WAAW,GAAG,QAAQ,SAAS,UAAU;EAElD,EADH,YAAY,wBAAA,cAAC,iBAAA,KAAkB,CAC5B,CACM,CACK;;AAIzB,IAAa,aAAa,OAAO,OAAO,qBAAqB,EAC3D,SAAS,mBACV,CAAC;AAEF,oBAAoB,cAAc"}
@@ -8,9 +8,10 @@ declare const StyledActionIcon: React.ForwardRefExoticComponent<Omit<Omit<Omit<O
8
8
  isRounded?: (boolean | Partial<Record<"@initial" | "@sm" | "@md" | "@lg" | "@xl", boolean>>) | undefined;
9
9
  } & {
10
10
  as?: React.ElementType;
11
- }, "children" | "label" | "hasTooltip" | "tooltipSide" | keyof import("../..").NavigatorActions> & {
11
+ }, "children" | "label" | "hasTooltip" | "tooltipSide" | "reloadDocument" | keyof import("../..").NavigatorActions> & {
12
12
  children: React.ReactNode;
13
13
  label: string;
14
+ reloadDocument?: boolean;
14
15
  } & Omit<import("../..").TOptionalTooltipWrapperProps, "label"> & import("../..").NavigatorActions, "ref"> & React.RefAttributes<HTMLButtonElement>, never> & {
15
16
  as?: React.ElementType;
16
17
  }>;
@@ -8,9 +8,10 @@ declare const StyledActionIcon: React.ForwardRefExoticComponent<Omit<Omit<Omit<O
8
8
  isRounded?: (boolean | Partial<Record<"@initial" | "@sm" | "@md" | "@lg" | "@xl", boolean>>) | undefined;
9
9
  } & {
10
10
  as?: React.ElementType;
11
- }, "children" | "label" | "hasTooltip" | "tooltipSide" | keyof import("../..").NavigatorActions> & {
11
+ }, "children" | "label" | "hasTooltip" | "tooltipSide" | "reloadDocument" | keyof import("../..").NavigatorActions> & {
12
12
  children: React.ReactNode;
13
13
  label: string;
14
+ reloadDocument?: boolean;
14
15
  } & Omit<import("../..").TOptionalTooltipWrapperProps, "label"> & import("../..").NavigatorActions, "ref"> & React.RefAttributes<HTMLButtonElement>, never> & {
15
16
  as?: React.ElementType;
16
17
  }>;
@@ -1,8 +1,8 @@
1
+ import { cn } from "../../styled.js";
1
2
  import { useFieldError } from "../form/useFieldError.js";
2
3
  import { FieldWrapper } from "../field-wrapper/FieldWrapper.js";
3
4
  import { useFormCustomContext } from "../form/useFormCustomContext.js";
4
5
  import { PasswordInput } from "../password-input/PasswordInput.js";
5
- import clsx from "clsx";
6
6
  import * as React$1 from "react";
7
7
  import { useFormContext } from "react-hook-form";
8
8
  //#region src/components/password-field/PasswordField.tsx
@@ -22,7 +22,7 @@ var PasswordField = ({ className, hideLabel, label = "Password", name, prompt =
22
22
  prompt,
23
23
  required: Boolean(validation?.required),
24
24
  appearance: formAppearance,
25
- className: clsx(className, "relative")
25
+ className: cn(className, "relative")
26
26
  }, /* @__PURE__ */ React$1.createElement(PasswordInput, {
27
27
  autoComplete: "current-password",
28
28
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordField.js","names":[],"sources":["../../../src/components/password-field/PasswordField.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper/FieldWrapper'\nimport { useFieldError } from '~/components/form/useFieldError'\nimport { useFormCustomContext } from '~/components/form/useFormCustomContext'\nimport { PasswordInput } from '~/components/password-input/PasswordInput'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n className,\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n theme,\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 const formTheme = context?.theme ?? theme\n\n return (\n <FieldWrapper\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 className={clsx(className, 'relative')}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n theme={formTheme}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n"],"mappings":";;;;;;;;AAiBA,IAAa,iBAAiB,EAC5B,WACA,WACA,QAAQ,YACR,MACA,SAAS,KAAA,GACT,aACA,YACA,YACA,OACA,GAAG,qBACqB;CACxB,MAAM,EAAE,aAAa,gBAAgB;CACrC,MAAM,UAAU,sBAAsB;CACtC,MAAM,EAAE,UAAU,cAAc,KAAK;CAErC,MAAM,MAAM,aAAa,SAAS,WAAW,GAAG;CAChD,MAAM,iBAAiB,SAAS,cAAc;CAC9C,MAAM,YAAY,SAAS,SAAS;AAEpC,QACE,wBAAA,cAAC,cAAD;EACe;EACN;EACP,SAAS;EACE;EACJ;EACC;EACR,UAAU,QAAQ,YAAY,SAAS;EACvC,YAAY;EACZ,WAAW,KAAK,WAAW,WAAW;EAYzB,EAVb,wBAAA,cAAC,eAAD;EACE,cAAa;EACP;EACN,IAAI;EACC;EACL,YAAY;EACZ,OAAO;EACP,GAAK,UAAU,KAAA,KAAa,EAAE,OAAO,SAAS;EAC9C,GAAI;EACJ,CAAA,CACW;;AAInB,cAAc,cAAc"}
1
+ {"version":3,"file":"PasswordField.js","names":[],"sources":["../../../src/components/password-field/PasswordField.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n FieldElementWrapperProps,\n FieldWrapper\n} from '~/components/field-wrapper/FieldWrapper'\nimport { useFieldError } from '~/components/form/useFieldError'\nimport { useFormCustomContext } from '~/components/form/useFormCustomContext'\nimport { PasswordInput } from '~/components/password-input/PasswordInput'\nimport { cn } from '~/styled'\n\ntype PasswordFieldProps = React.ComponentProps<typeof PasswordInput> &\n Omit<FieldElementWrapperProps, 'label'> & {\n label?: string\n }\n\nexport const PasswordField = ({\n className,\n hideLabel,\n label = 'Password',\n name,\n prompt = undefined,\n description,\n validation,\n appearance,\n theme,\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 const formTheme = context?.theme ?? theme\n\n return (\n <FieldWrapper\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 className={cn(className, 'relative')}\n >\n <PasswordInput\n autoComplete=\"current-password\"\n name={name}\n id={name}\n ref={ref}\n appearance={formAppearance}\n theme={formTheme}\n {...(error !== undefined && { state: 'error' })}\n {...remainingProps}\n />\n </FieldWrapper>\n )\n}\n\nPasswordField.displayName = 'PasswordField'\n"],"mappings":";;;;;;;;AAiBA,IAAa,iBAAiB,EAC5B,WACA,WACA,QAAQ,YACR,MACA,SAAS,KAAA,GACT,aACA,YACA,YACA,OACA,GAAG,qBACqB;CACxB,MAAM,EAAE,aAAa,gBAAgB;CACrC,MAAM,UAAU,sBAAsB;CACtC,MAAM,EAAE,UAAU,cAAc,KAAK;CAErC,MAAM,MAAM,aAAa,SAAS,WAAW,GAAG;CAChD,MAAM,iBAAiB,SAAS,cAAc;CAC9C,MAAM,YAAY,SAAS,SAAS;AAEpC,QACE,wBAAA,cAAC,cAAD;EACe;EACN;EACP,SAAS;EACE;EACJ;EACC;EACR,UAAU,QAAQ,YAAY,SAAS;EACvC,YAAY;EACZ,WAAW,GAAG,WAAW,WAAW;EAYvB,EAVb,wBAAA,cAAC,eAAD;EACE,cAAa;EACP;EACN,IAAI;EACC;EACL,YAAY;EACZ,OAAO;EACP,GAAK,UAAU,KAAA,KAAa,EAAE,OAAO,SAAS;EAC9C,GAAI;EACJ,CAAA,CACW;;AAInB,cAAc,cAAc"}
@@ -1,8 +1,8 @@
1
+ import { cn } from "../../styled.js";
1
2
  import { Icon } from "../icon/Icon.js";
2
3
  import { ActionIcon } from "../action-icon/ActionIcon.js";
3
4
  import { Input } from "../input/Input.js";
4
5
  import { getFieldIconSize } from "../../utilities/style/get-icon-size.js";
5
- import clsx from "clsx";
6
6
  import * as React$1 from "react";
7
7
  import { useState } from "react";
8
8
  import { Eye, EyeCrossed } from "@atom-learning/icons";
@@ -11,7 +11,7 @@ var PasswordInput = React$1.forwardRef(({ className, hidePasswordText = "Hide pa
11
11
  const [isPasswordVisible, setIsPasswordVisible] = useState(false);
12
12
  const togglePasswordVisibility = () => setIsPasswordVisible((currentState) => !currentState);
13
13
  const iconSize = React$1.useMemo(() => getFieldIconSize(size), [size]);
14
- return /* @__PURE__ */ React$1.createElement("div", { className: clsx("relative", className) }, /* @__PURE__ */ React$1.createElement(Input, {
14
+ return /* @__PURE__ */ React$1.createElement("div", { className: cn("relative", className) }, /* @__PURE__ */ React$1.createElement(Input, {
15
15
  ...restProps,
16
16
  size,
17
17
  type: isPasswordVisible ? "text" : "password",
@@ -24,7 +24,7 @@ var PasswordInput = React$1.forwardRef(({ className, hidePasswordText = "Hide pa
24
24
  onClick: togglePasswordVisibility,
25
25
  onMouseDown: (e) => e.preventDefault(),
26
26
  size: iconSize,
27
- className: clsx(size === "lg" ? "bottom-1" : "bottom-0", "absolute", "right-0")
27
+ className: cn(size === "lg" ? "bottom-1" : "bottom-0", "absolute", "right-0")
28
28
  }, /* @__PURE__ */ React$1.createElement(Icon, { is: isPasswordVisible ? Eye : EyeCrossed })));
29
29
  });
30
30
  PasswordInput.displayName = "PasswordInput";
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordInput.js","names":[],"sources":["../../../src/components/password-input/PasswordInput.tsx"],"sourcesContent":["import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport clsx from 'clsx'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon/ActionIcon'\nimport { Icon } from '~/components/icon/Icon'\nimport type { InputProps } from '~/components/input/Input'\nimport { Input } from '~/components/input/Input'\nimport { getFieldIconSize } from '~/utilities/style/get-icon-size'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput = React.forwardRef<\n HTMLInputElement,\n PasswordInputProps\n>(\n (\n {\n className,\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 <div className={clsx('relative', className)}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n className=\"pr-6\"\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n className={clsx(\n size === 'lg' ? 'bottom-1' : 'bottom-0',\n 'absolute',\n 'right-0'\n )}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </div>\n )\n }\n)\n\nPasswordInput.displayName = 'PasswordInput'\n"],"mappings":";;;;;;;;;AAgBA,IAAa,gBAAgB,QAAM,YAK/B,EACE,WACA,mBAAmB,iBACnB,mBAAmB,iBACnB,OAAO,MACP,GAAG,aAEL,QACG;CACH,MAAM,CAAC,mBAAmB,wBAAwB,SAAkB,MAAM;CAC1E,MAAM,iCACJ,sBAAsB,iBAAiB,CAAC,aAAa;CAEvD,MAAM,WAAW,QAAM,cAAc,iBAAiB,KAAK,EAAE,CAAC,KAAK,CAAC;AAEpE,QACE,wBAAA,cAAC,OAAD,EAAK,WAAW,KAAK,YAAY,UAAU,EAuBrC,EAtBJ,wBAAA,cAAC,OAAD;EACE,GAAI;EACE;EACN,MAAM,oBAAoB,SAAS;EAC9B;EACL,WAAU;EACV,CAAA,EACF,wBAAA,cAAC,YAAD;EACE,YAAW;EACX,OAAM;EACN,OAAO,oBAAoB,mBAAmB;EAC9C,SAAS;EACT,cAAc,MAAM,EAAE,gBAAgB;EACtC,MAAM;EACN,WAAW,KACT,SAAS,OAAO,aAAa,YAC7B,YACA,UACD;EAGU,EADX,wBAAA,cAAC,MAAD,EAAM,IAAI,oBAAoB,MAAM,YAAc,CAAA,CACvC,CACT;EAGX;AAED,cAAc,cAAc"}
1
+ {"version":3,"file":"PasswordInput.js","names":[],"sources":["../../../src/components/password-input/PasswordInput.tsx"],"sourcesContent":["import { Eye, EyeCrossed } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useState } from 'react'\n\nimport { ActionIcon } from '~/components/action-icon/ActionIcon'\nimport { Icon } from '~/components/icon/Icon'\nimport type { InputProps } from '~/components/input/Input'\nimport { Input } from '~/components/input/Input'\nimport { cn } from '~/styled'\nimport { getFieldIconSize } from '~/utilities/style/get-icon-size'\n\ntype PasswordInputProps = Omit<InputProps, 'type'> & {\n hidePasswordText?: string\n showPasswordText?: string\n}\n\nexport const PasswordInput = React.forwardRef<\n HTMLInputElement,\n PasswordInputProps\n>(\n (\n {\n className,\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 <div className={cn('relative', className)}>\n <Input\n {...restProps}\n size={size}\n type={isPasswordVisible ? 'text' : 'password'}\n ref={ref}\n className=\"pr-6\"\n />\n <ActionIcon\n appearance=\"simple\"\n theme=\"neutral\"\n label={isPasswordVisible ? hidePasswordText : showPasswordText}\n onClick={togglePasswordVisibility}\n onMouseDown={(e) => e.preventDefault()} // prevent focus being lost from password input\n size={iconSize}\n className={cn(\n size === 'lg' ? 'bottom-1' : 'bottom-0',\n 'absolute',\n 'right-0'\n )}\n >\n <Icon is={isPasswordVisible ? Eye : EyeCrossed} />\n </ActionIcon>\n </div>\n )\n }\n)\n\nPasswordInput.displayName = 'PasswordInput'\n"],"mappings":";;;;;;;;;AAgBA,IAAa,gBAAgB,QAAM,YAK/B,EACE,WACA,mBAAmB,iBACnB,mBAAmB,iBACnB,OAAO,MACP,GAAG,aAEL,QACG;CACH,MAAM,CAAC,mBAAmB,wBAAwB,SAAkB,MAAM;CAC1E,MAAM,iCACJ,sBAAsB,iBAAiB,CAAC,aAAa;CAEvD,MAAM,WAAW,QAAM,cAAc,iBAAiB,KAAK,EAAE,CAAC,KAAK,CAAC;AAEpE,QACE,wBAAA,cAAC,OAAD,EAAK,WAAW,GAAG,YAAY,UAAU,EAuBnC,EAtBJ,wBAAA,cAAC,OAAD;EACE,GAAI;EACE;EACN,MAAM,oBAAoB,SAAS;EAC9B;EACL,WAAU;EACV,CAAA,EACF,wBAAA,cAAC,YAAD;EACE,YAAW;EACX,OAAM;EACN,OAAO,oBAAoB,mBAAmB;EAC9C,SAAS;EACT,cAAc,MAAM,EAAE,gBAAgB;EACtC,MAAM;EACN,WAAW,GACT,SAAS,OAAO,aAAa,YAC7B,YACA,UACD;EAGU,EADX,wBAAA,cAAC,MAAD,EAAM,IAAI,oBAAoB,MAAM,YAAc,CAAA,CACvC,CACT;EAGX;AAED,cAAc,cAAc"}
@@ -1,9 +1,9 @@
1
+ import { cn } from "../../styled.js";
1
2
  import { RadioCard } from "./RadioCard.js";
2
- import clsx from "clsx";
3
3
  import * as React$1 from "react";
4
4
  import * as RadioGroup from "@radix-ui/react-radio-group";
5
5
  //#region src/components/radio-card/RadioCardGroup.tsx
6
- var RadioCardGroup = ({ className, children, size, isFullWidth, align, ...rest }) => /* @__PURE__ */ React$1.createElement(RadioGroup.Root, rest, /* @__PURE__ */ React$1.createElement("div", { className: clsx("flex", "flex-row", "flex-wrap", "gap-3", className) }, React$1.Children.map(children, (child) => {
6
+ var RadioCardGroup = ({ className, children, size, isFullWidth, align, ...rest }) => /* @__PURE__ */ React$1.createElement(RadioGroup.Root, rest, /* @__PURE__ */ React$1.createElement("div", { className: cn("flex", "flex-row", "flex-wrap", "gap-3", className) }, React$1.Children.map(children, (child) => {
7
7
  if (React$1.isValidElement(child) && child?.type === RadioCard) return React$1.cloneElement(child, {
8
8
  size,
9
9
  isFullWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"RadioCardGroup.js","names":[],"sources":["../../../src/components/radio-card/RadioCardGroup.tsx"],"sourcesContent":["import * as RadioGroup from '@radix-ui/react-radio-group'\nimport clsx from 'clsx'\nimport * as React from 'react'\n\nimport type { Override } from '~/utilities/types'\n\nimport { RadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n React.ComponentProps<typeof RadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n className,\n children,\n size,\n isFullWidth,\n align,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <div className={clsx('flex', 'flex-row', 'flex-wrap', 'gap-3', className)}>\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 </div>\n </RadioGroup.Root>\n)\n"],"mappings":";;;;;AAaA,IAAa,kBAAkB,EAC7B,WACA,UACA,MACA,aACA,OACA,GAAG,WAEH,wBAAA,cAAC,WAAW,MAAS,MACnB,wBAAA,cAAC,OAAD,EAAK,WAAW,KAAK,QAAQ,YAAY,aAAa,SAAS,UAAU,EAUnE,EATH,QAAM,SAAS,IAAI,WAAW,UAAU;AACvC,KAAI,QAAM,eAAe,MAAM,IAAI,OAAO,SAAS,UACjD,QAAO,QAAM,aACX,OACA;EAAE;EAAM;EAAa;EAAO,CAC7B;AAEH,QAAO;EACP,CACE,CACU"}
1
+ {"version":3,"file":"RadioCardGroup.js","names":[],"sources":["../../../src/components/radio-card/RadioCardGroup.tsx"],"sourcesContent":["import * as RadioGroup from '@radix-ui/react-radio-group'\nimport * as React from 'react'\n\nimport { cn } from '~/styled'\nimport type { Override } from '~/utilities/types'\n\nimport { RadioCard } from './RadioCard'\n\ntype RadioCardGroupProps = Override<\n React.ComponentProps<typeof RadioCard>,\n React.ComponentProps<typeof RadioGroup.Root>\n>\n\nexport const RadioCardGroup = ({\n className,\n children,\n size,\n isFullWidth,\n align,\n ...rest\n}: RadioCardGroupProps) => (\n <RadioGroup.Root {...rest}>\n <div className={cn('flex', 'flex-row', 'flex-wrap', 'gap-3', className)}>\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 </div>\n </RadioGroup.Root>\n)\n"],"mappings":";;;;;AAaA,IAAa,kBAAkB,EAC7B,WACA,UACA,MACA,aACA,OACA,GAAG,WAEH,wBAAA,cAAC,WAAW,MAAS,MACnB,wBAAA,cAAC,OAAD,EAAK,WAAW,GAAG,QAAQ,YAAY,aAAa,SAAS,UAAU,EAUjE,EATH,QAAM,SAAS,IAAI,WAAW,UAAU;AACvC,KAAI,QAAM,eAAe,MAAM,IAAI,OAAO,SAAS,UACjD,QAAO,QAAM,aACX,OACA;EAAE;EAAM;EAAa;EAAO,CAC7B;AAEH,QAAO;EACP,CACE,CACU"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ type LinkComponent = React.ComponentType<React.AnchorHTMLAttributes<HTMLAnchorElement>>;
3
+ type RouterProviderProps = {
4
+ link: LinkComponent;
5
+ children: React.ReactNode;
6
+ };
7
+ export declare const RouterProvider: {
8
+ ({ link, children }: RouterProviderProps): React.JSX.Element;
9
+ displayName: string;
10
+ };
11
+ export declare const useRouterLink: () => (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => React.JSX.Element | null;
12
+ export declare const useRouterLinkProps: (href?: string, { reloadDocument }?: {
13
+ reloadDocument?: boolean;
14
+ }) => {
15
+ as?: LinkComponent;
16
+ };
17
+ export {};
@@ -0,0 +1,15 @@
1
+ import * as React$1 from "react";
2
+ //#region src/components/router-provider/RouterProvider.tsx
3
+ var RouterContext = React$1.createContext({});
4
+ var RouterProvider = ({ link, children }) => /* @__PURE__ */ React$1.createElement(RouterContext.Provider, { value: { link } }, children);
5
+ var isAbsoluteUrl = (url) => /^https?:\/\//.test(url || "");
6
+ var useRouterLinkProps = (href, { reloadDocument } = {}) => {
7
+ const { link } = React$1.useContext(RouterContext);
8
+ if (!link || !href || isAbsoluteUrl(href) || reloadDocument) return {};
9
+ return { as: link };
10
+ };
11
+ RouterProvider.displayName = "RouterProvider";
12
+ //#endregion
13
+ export { RouterProvider, useRouterLinkProps };
14
+
15
+ //# sourceMappingURL=RouterProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterProvider.js","names":[],"sources":["../../../src/components/router-provider/RouterProvider.tsx"],"sourcesContent":["import * as React from 'react'\n\ntype LinkComponent = React.ComponentType<\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n>\n\ntype RouterContextValue = {\n link?: LinkComponent\n}\n\nconst RouterContext = React.createContext<RouterContextValue>({})\n\ntype RouterProviderProps = {\n link: LinkComponent\n children: React.ReactNode\n}\n\nexport const RouterProvider = ({ link, children }: RouterProviderProps) => (\n <RouterContext.Provider value={{ link }}>{children}</RouterContext.Provider>\n)\n\nconst isAbsoluteUrl = (url?: string) => /^https?:\\/\\//.test(url || '')\n\nexport const useRouterLink = () => {\n const { link: CustomLink } = React.useContext(RouterContext)\n\n return React.useCallback(\n (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => {\n if (!CustomLink || isAbsoluteUrl(props.href)) {\n return null\n }\n return <CustomLink {...props} />\n },\n [CustomLink]\n )\n}\n\nexport const useRouterLinkProps = (\n href?: string,\n { reloadDocument }: { reloadDocument?: boolean } = {}\n): { as?: LinkComponent } => {\n const { link } = React.useContext(RouterContext)\n\n if (!link || !href || isAbsoluteUrl(href) || reloadDocument) {\n return {}\n }\n\n return { as: link }\n}\n\nRouterProvider.displayName = 'RouterProvider'\n"],"mappings":";;AAUA,IAAM,gBAAgB,QAAM,cAAkC,EAAE,CAAC;AAOjE,IAAa,kBAAkB,EAAE,MAAM,eACrC,wBAAA,cAAC,cAAc,UAAf,EAAwB,OAAO,EAAE,MAAM,EAAqC,EAAlC,SAAkC;AAG9E,IAAM,iBAAiB,QAAiB,eAAe,KAAK,OAAO,GAAG;AAgBtE,IAAa,sBACX,MACA,EAAE,mBAAiD,EAAE,KAC1B;CAC3B,MAAM,EAAE,SAAS,QAAM,WAAW,cAAc;AAEhD,KAAI,CAAC,QAAQ,CAAC,QAAQ,cAAc,KAAK,IAAI,eAC3C,QAAO,EAAE;AAGX,QAAO,EAAE,IAAI,MAAM;;AAGrB,eAAe,cAAc"}