@accelint/design-system 0.4.0 → 0.5.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 (130) hide show
  1. package/README.md +12 -12
  2. package/dist/components/aria/aria.js.map +1 -1
  3. package/dist/components/button/button.d.ts +1 -1
  4. package/dist/components/button/button.js +1 -1
  5. package/dist/components/button/button.js.map +1 -1
  6. package/dist/components/button/types.d.ts +1 -1
  7. package/dist/components/checkbox/checkbox.d.ts +1 -1
  8. package/dist/components/checkbox/checkbox.js.map +1 -1
  9. package/dist/components/chip/chip.d.ts +1 -1
  10. package/dist/components/chip/chip.js.map +1 -1
  11. package/dist/components/chip/types.d.ts +1 -1
  12. package/dist/components/collection/collection.js.map +1 -1
  13. package/dist/components/combo-box/combo-box.d.ts +1 -1
  14. package/dist/components/combo-box/combo-box.js.map +1 -1
  15. package/dist/components/combo-box/types.d.ts +1 -1
  16. package/dist/components/dialog/dialog.d.ts +1 -1
  17. package/dist/components/dialog/dialog.js.map +1 -1
  18. package/dist/components/dialog/types.d.ts +1 -1
  19. package/dist/components/drawer/drawer.d.ts +1 -1
  20. package/dist/components/drawer/drawer.js +4 -3
  21. package/dist/components/drawer/drawer.js.map +1 -1
  22. package/dist/components/drawer/types.d.ts +2 -2
  23. package/dist/components/element/element.js.map +1 -1
  24. package/dist/components/group/group.d.ts +1 -1
  25. package/dist/components/group/group.js.map +1 -1
  26. package/dist/components/group/types.d.ts +1 -1
  27. package/dist/components/icon/icon.d.ts +1 -1
  28. package/dist/components/icon/types.d.ts +1 -1
  29. package/dist/components/input/input.css.d.ts +1 -1
  30. package/dist/components/input/input.d.ts +4 -4
  31. package/dist/components/input/input.js +3 -3
  32. package/dist/components/input/input.js.map +1 -1
  33. package/dist/components/input/types.d.ts +1 -1
  34. package/dist/components/menu/index.d.ts +1 -1
  35. package/dist/components/menu/menu.css.d.ts +1 -1
  36. package/dist/components/menu/menu.d.ts +2 -2
  37. package/dist/components/menu/menu.js.map +1 -1
  38. package/dist/components/menu/types.d.ts +2 -2
  39. package/dist/components/merge-provider/merge-provider.js +2 -2
  40. package/dist/components/merge-provider/merge-provider.js.map +1 -1
  41. package/dist/components/number-field/number-field.d.ts +1 -1
  42. package/dist/components/number-field/types.d.ts +1 -1
  43. package/dist/components/options/index.d.ts +1 -1
  44. package/dist/components/options/options.css.d.ts +1 -1
  45. package/dist/components/options/options.d.ts +2 -2
  46. package/dist/components/options/options.js.map +1 -1
  47. package/dist/components/options/types.d.ts +2 -2
  48. package/dist/components/picker/picker.d.ts +1 -1
  49. package/dist/components/picker/picker.js +2 -2
  50. package/dist/components/picker/picker.js.map +1 -1
  51. package/dist/components/picker/types.d.ts +1 -1
  52. package/dist/components/popover/popover.d.ts +1 -1
  53. package/dist/components/popover/popover.js +2 -2
  54. package/dist/components/popover/popover.js.map +1 -1
  55. package/dist/components/query-builder/dataset-sample.js +8 -24
  56. package/dist/components/query-builder/dataset-sample.js.map +1 -1
  57. package/dist/components/query-builder/group.js +1 -1
  58. package/dist/components/query-builder/group.js.map +1 -1
  59. package/dist/components/query-builder/query-builder.js +2 -2
  60. package/dist/components/query-builder/query-builder.js.map +1 -1
  61. package/dist/components/query-builder/rule.js.map +1 -1
  62. package/dist/components/query-builder/types.d.ts +3 -3
  63. package/dist/components/query-builder/utils.d.ts +1 -1
  64. package/dist/components/query-builder/utils.js.map +1 -1
  65. package/dist/components/query-builder/value-editor.js +1 -1
  66. package/dist/components/query-builder/value-editor.js.map +1 -1
  67. package/dist/components/query-builder/value-selector.js.map +1 -1
  68. package/dist/components/radio/radio.d.ts +1 -1
  69. package/dist/components/radio/radio.js.map +1 -1
  70. package/dist/components/radio/types.d.ts +1 -1
  71. package/dist/components/search-field/index.d.ts +1 -1
  72. package/dist/components/search-field/search-field.d.ts +1 -1
  73. package/dist/components/search-field/types.d.ts +1 -1
  74. package/dist/components/select/select.d.ts +1 -1
  75. package/dist/components/select/select.js.map +1 -1
  76. package/dist/components/switch/switch.d.ts +1 -1
  77. package/dist/components/tabs/tabs.css.d.ts +2 -2
  78. package/dist/components/tabs/tabs.d.ts +1 -1
  79. package/dist/components/tabs/tabs.js +2 -2
  80. package/dist/components/tabs/tabs.js.map +1 -1
  81. package/dist/components/tabs/types.d.ts +3 -3
  82. package/dist/components/text-field/text-field.d.ts +5 -4
  83. package/dist/components/text-field/types.d.ts +1 -1
  84. package/dist/components/textarea/textarea.css.d.ts +1 -1
  85. package/dist/components/textarea/textarea.d.ts +4 -4
  86. package/dist/components/textarea/textarea.js +5 -5
  87. package/dist/components/textarea/textarea.js.map +1 -1
  88. package/dist/components/textarea/types.d.ts +2 -2
  89. package/dist/components/tooltip/tooltip.d.ts +1 -1
  90. package/dist/components/tooltip/tooltip.js +3 -3
  91. package/dist/components/tooltip/tooltip.js.map +1 -1
  92. package/dist/components/tree/tree.css.d.ts +1 -0
  93. package/dist/components/tree/tree.css.js +2 -2
  94. package/dist/components/tree/tree.css.js.map +1 -1
  95. package/dist/components/tree/tree.d.ts +1 -1
  96. package/dist/components/tree/tree.js +5 -2
  97. package/dist/components/tree/tree.js.map +1 -1
  98. package/dist/components/tree/types.d.ts +4 -4
  99. package/dist/components/tree/utils.js.map +1 -1
  100. package/dist/hooks/use-collection-render/use-collection-render.js +1 -0
  101. package/dist/hooks/use-collection-render/use-collection-render.js.map +1 -1
  102. package/dist/hooks/use-defaults/use-defaults.d.ts +1 -1
  103. package/dist/hooks/use-slot/use-slot.js +3 -3
  104. package/dist/hooks/use-slot/use-slot.js.map +1 -1
  105. package/dist/hooks/use-theme/types.d.ts +1 -1
  106. package/dist/hooks/use-theme/use-theme.d.ts +18 -1
  107. package/dist/hooks/use-theme/use-theme.js.map +1 -1
  108. package/dist/hooks/use-tree/index.d.ts +1 -1
  109. package/dist/hooks/use-tree/use-tree.d.ts +1 -1
  110. package/dist/hooks/use-tree/use-tree.js +10 -5
  111. package/dist/hooks/use-tree/use-tree.js.map +1 -1
  112. package/dist/hooks/use-tree/utils.d.ts +1 -1
  113. package/dist/hooks/use-tree/utils.js +3 -4
  114. package/dist/hooks/use-tree/utils.js.map +1 -1
  115. package/dist/index.css +34 -31
  116. package/dist/ladle/actions.js.map +1 -1
  117. package/dist/test/setup.js +347 -331
  118. package/dist/test/setup.js.map +1 -1
  119. package/dist/types/index.d.ts +1 -1
  120. package/dist/types/react-aria.d.ts +1 -1
  121. package/dist/types/react.d.d.ts +16 -0
  122. package/dist/types/use-tree.d.ts +2 -1
  123. package/dist/utils/css.d.ts +2 -2
  124. package/dist/utils/css.js +5 -5
  125. package/dist/utils/css.js.map +1 -1
  126. package/dist/utils/props.js +5 -6
  127. package/dist/utils/props.js.map +1 -1
  128. package/dist/utils/validators.d.ts +2 -2
  129. package/dist/utils/validators.js.map +1 -1
  130. package/package.json +60 -57
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # Design System (C2DS)
1
+ # @accelint/design-system
2
2
 
3
- Welcome to the C2 Design System (C2DS)! This library is a collection of UI components and tools for engineers to build specialized, precise user experiences for Command and Control (C2) systems.
3
+ This library is a collection of UI components and tools for engineers to build precise user experiences for specialized systems.
4
4
 
5
5
  ## Why does this design system exist?
6
6
 
7
- This design system, which we've designated C2DS for simplicity, was born of three essential business priorities:
7
+ This design system was born of three essential business priorities:
8
8
 
9
9
  - We want to improve runtime performance of our applications.
10
10
  - We require more flexible tools for building specialized UI than was available in traditional "out of the box" libraries.
@@ -12,13 +12,13 @@ This design system, which we've designated C2DS for simplicity, was born of thre
12
12
 
13
13
  From an engineering perspective, we also want to future-proof our investment by switching to an approach more natively compatible with React Server Components. This is the future of React and getting out ahead of that transition is valuable before it becomes a significant pain point inhibiting rapid feature development.
14
14
 
15
- Developed by the Core team at Accelint, C2DS is a shared platform that all engineers can -- and are encouraged -- to contribute to. This system is published as open source to invite collaboration across our partners and the engineering community in general.
15
+ Developed by the Core team at Accelint, the design system is a shared platform that all engineers can -- and are encouraged -- to contribute to. This system is published as open source to invite collaboration across our partners and the engineering community in general.
16
16
 
17
17
  ### Performance
18
18
 
19
19
  The runtime performance of our applications is an enduring central concern. Our applications place a high performance demand on the browser client, primarily due to the sheer data throughput and intensive rendering requirements. Therefore, it makes sense to move away from a runtime CSS-in-JS solution in favor of a build/compile time styling solution.
20
20
 
21
- [Advantages >](./documentation/concepts.md#build-and-runtime)
21
+ [Advantages >](./documents/concepts#build-and-runtime)
22
22
 
23
23
  ### Flexibility and control
24
24
 
@@ -26,25 +26,25 @@ The highly bespoke nature of some of our feature implementation is a constant so
26
26
 
27
27
  We also want to establish a common platform for multiple similar, but stylistically and functionally unique, applications to be built on a consistent design language with fewer established opinions. The intent here is to provide all the power and flexibility of a custom solution while maintaining a common foundation for interoperability with different digital properties.
28
28
 
29
- ## What does C2DS consist of?
29
+ ## What does the design system consist of?
30
30
 
31
- C2DS is a semi-headless, themeless collection of components that express minimal opinions about layout and baked-in styles with an API of props for each component that strives to suit many common use cases. The design guidelines are established within [Figma](https://www.figma.com/design/CoNlAMPL0u5DCVYRPQKhki/N2X-Design-System?node-id=30742-76715&m=dev).
31
+ The design system is a semi-headless, themeless collection of components that express minimal opinions about layout and baked-in styles with an API of props for each component that strives to suit many common use cases.
32
32
 
33
33
  The vast majority of spacing and color theming is left up to the implementer to define. For every element of this system, the priority has been flexibility over rigid requirements and an "escape hatch" for overriding style and behavior if necessary.
34
34
 
35
35
  ## Why isn't there a theme or icons?
36
36
 
37
- While the exported modules of this package do not include a theme, the Ladle stories for each component utilize a theme established within the `./.ladle/theme` folder for documentation purposes. You can feel free to use this as a starting point for your app's implementation and customize it to suit your needs.
37
+ While the exported modules of this package do not include a theme, the Ladle stories for each component utilize a theme established within the `.ladle/theme` folder for documentation purposes. You can feel free to use this as a starting point for your app's implementation and customize it to suit your needs.
38
38
 
39
39
  The icons are also missing because we're trying to avoid locking this design system into a specific design language -- they are considered a part of the theming and an application-level concern. Each component that supports icons expects them to be implemented through composition. This enables maximum flexibility and freedom for the implementing app.
40
40
 
41
41
  ## Concepts
42
42
 
43
- This design system is built on a number of concepts with which you may not be familiar. [Learn](./documentation/concepts.md) about the technologies, packages, abstractions and patterns that power this design system.
43
+ This design system is built on a number of concepts with which you may not be familiar. [Learn](./documents/concepts) about the technologies, packages, abstractions and patterns that power this design system.
44
44
 
45
45
  ## Getting started
46
46
 
47
- Check out what exists. You can review the components, tokens and primitives available in the system using the Ladle stories for each element: [C2DS Stories](https://gohypergiant.github.io/standard-toolkit).
47
+ Check out what exists. You can review the components, tokens and primitives available in the system using the Ladle stories for each element: [Stories](https://gohypergiant.github.io/standard-toolkit).
48
48
 
49
49
  From the root of the standard toolkit project, run:
50
50
 
@@ -60,8 +60,8 @@ If you run into errors, try running
60
60
 
61
61
  ### Implementation
62
62
 
63
- [Learn](./documentation/implementation.md) how to get your app up and running.
63
+ [Learn](./documents/implementation) how to get your app up and running.
64
64
 
65
65
  ### Contribution
66
66
 
67
- [Learn](./documentation/contribution.md) how to craft components for this design system.
67
+ [Learn](./documents/contribution) how to craft components for this design system.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/aria/aria.tsx"],"names":["AriaSection","AriaSelectValue"],"mappings":";;;;;;AA8BA,SAAS,KACP,SACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,cAAkC,IAAI,CAAA;AAEtD,EAAO,OAAA;AAAA;AAAA,IAEL,SAAW,EAAA,UAAA,CAAiB,SAAS,gBAAA,CAAiB,OAAO,GAAK,EAAA;AAChE,MAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,OAAO,CAAA;AAElD,MAAA,uBAAQ,GAAA,CAAA,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAAA,KACxC,CAAA;AAAA,IACD;AAAA,GACF;AACF;AAEO,IAAM,EAAE,SAAW,EAAA,cAAA,EAAgB,SAAS,qBAAsB,EAAA,GACvE,KAAK,UAAU;AAEV,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,UAAA,EAAY,SAAS,iBAAkB,EAAA,GAC/D,KAAK,MAAM;AAEN,IAAM,EAAE,SAAW,EAAA,WAAA,EAAa,SAAS,kBAAmB,EAAA,GACjE,KAAK,OAAO;AAEP,IAAM,EAAE,SAAW,EAAA,YAAA,EAAc,SAAS,mBAAoB,EAAA,GACnE,KAAK,QAAQ;AAER,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,aAAA,EAAe,SAAS,oBAAqB,EAAA,GACrE,KAAK,SAAS;AAET,IAAM,EAAE,SAAW,EAAA,QAAA,EAAU,SAAS,eAAgB,EAAA,GAAI,KAAK,IAAI;AAQ7D,IAAA,kBAAA,GACX,cAA+D,IAAI;AAE9D,IAAM,WAAc,GAAA,UAAA,CAAW,SAASA,YAAAA,CAC7C,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,kBAAkB,CAAA;AAE7D,EAAA,uBAAQ,GAAA,CAAA,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AACvC,CAAC;AAEY,IAAA,sBAAA,GACX,cAAuE,IAAI;AAEtE,IAAM,eAAkB,GAAA,UAAA,CAAW,SAASC,gBAAAA,CAEjD,OAA4B,GAAoC,EAAA;AAChE,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,sBAAsB,CAAA;AAEjE,EAAA,uBAAQ,GAAA,CAAA,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAC3C,CAAC","file":"aria.js","sourcesContent":["import {\n createContext,\n forwardRef,\n type ForwardedRef,\n type RefAttributes,\n type ReactNode,\n} from 'react';\nimport {\n FieldError,\n Group,\n Header,\n Heading,\n Keyboard,\n Label,\n Section,\n SelectValue,\n Separator,\n Text,\n type ContextValue,\n type SectionProps,\n type SelectValueProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks';\n\n/**\n * To better align with the guidance from RAC about establishing a unique\n * context for components to avoid conflict of props being provided by RAC\n * and C2DS components, this wrapping utility accepts an RAC and returns\n * a wrapped version along with the new context for the C2DS to use\n */\nfunction wrap<P extends object, E extends HTMLElement>(\n Component: (props: P & RefAttributes<E>) => ReactNode,\n) {\n const Context = createContext<ContextValue<P, E>>(null);\n\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n Component: forwardRef<E, P>(function WrappedComponent(props, ref) {\n [props, ref] = useContextProps(props, ref, Context);\n\n return <Component {...props} ref={ref} />;\n }),\n Context,\n };\n}\n\nexport const { Component: AriaFieldError, Context: AriaFieldErrorContext } =\n wrap(FieldError);\n\nexport const { Component: AriaGroup, Context: AriaGroupContext } = wrap(Group);\n\nexport const { Component: AriaHeader, Context: AriaHeaderContext } =\n wrap(Header);\n\nexport const { Component: AriaHeading, Context: AriaHeadingContext } =\n wrap(Heading);\n\nexport const { Component: AriaKeyboard, Context: AriaKeyboardContext } =\n wrap(Keyboard);\n\nexport const { Component: AriaLabel, Context: AriaLabelContext } = wrap(Label);\n\nexport const { Component: AriaSeparator, Context: AriaSeparatorContext } =\n wrap(Separator);\n\nexport const { Component: AriaText, Context: AriaTextContext } = wrap(Text);\n\n/**\n * Due to the complexity of types and technical constraints of TS, it's not\n * possible for the above wrapping utility to support components that accept\n * generic parameters. This means that these components must be manually wrapped\n */\n\nexport const AriaSectionContext =\n createContext<ContextValue<SectionProps<object>, HTMLElement>>(null);\n\nexport const AriaSection = forwardRef(function AriaSection<T extends object>(\n props: SectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n) {\n [props, ref] = useContextProps(props, ref, AriaSectionContext);\n\n return <Section {...props} ref={ref} />;\n});\n\nexport const AriaSelectValueContext =\n createContext<ContextValue<SelectValueProps<object>, HTMLSpanElement>>(null);\n\nexport const AriaSelectValue = forwardRef(function AriaSelectValue<\n T extends object,\n>(props: SelectValueProps<T>, ref: ForwardedRef<HTMLSpanElement>) {\n [props, ref] = useContextProps(props, ref, AriaSelectValueContext);\n\n return <SelectValue {...props} ref={ref} />;\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/aria/aria.tsx"],"names":["AriaSection","AriaSelectValue"],"mappings":";;;;;;AA0CA,SAAS,KACP,SACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,cAAkC,IAAI,CAAA;AAEtD,EAAO,OAAA;AAAA;AAAA,IAEL,SAAW,EAAA,UAAA,CAAiB,SAAS,gBAAA,CAAiB,OAAO,GAAK,EAAA;AAChE,MAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,OAAO,CAAA;AAElD,MAAA,uBAAQ,GAAA,CAAA,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAAA,KACxC,CAAA;AAAA,IACD;AAAA,GACF;AACF;AAEO,IAAM,EAAE,SAAW,EAAA,cAAA,EAAgB,SAAS,qBAAsB,EAAA,GACvE,KAAK,UAAU;AAEV,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,UAAA,EAAY,SAAS,iBAAkB,EAAA,GAC/D,KAAK,MAAM;AAEN,IAAM,EAAE,SAAW,EAAA,WAAA,EAAa,SAAS,kBAAmB,EAAA,GACjE,KAAK,OAAO;AAEP,IAAM,EAAE,SAAW,EAAA,YAAA,EAAc,SAAS,mBAAoB,EAAA,GACnE,KAAK,QAAQ;AAER,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,aAAA,EAAe,SAAS,oBAAqB,EAAA,GACrE,KAAK,SAAS;AAET,IAAM,EAAE,SAAW,EAAA,QAAA,EAAU,SAAS,eAAgB,EAAA,GAAI,KAAK,IAAI;AAQ7D,IAAA,kBAAA,GACX,cAA+D,IAAI;AAE9D,IAAM,WAAc,GAAA,UAAA,CAAW,SAASA,YAAAA,CAC7C,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,kBAAkB,CAAA;AAE7D,EAAA,uBAAQ,GAAA,CAAA,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AACvC,CAAC;AAEY,IAAA,sBAAA,GACX,cAAuE,IAAI;AAEtE,IAAM,eAAkB,GAAA,UAAA,CAAW,SAASC,gBAAAA,CAEjD,OAA4B,GAAoC,EAAA;AAChE,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,sBAAsB,CAAA;AAEjE,EAAA,uBAAQ,GAAA,CAAA,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAC3C,CAAC","file":"aria.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n type ReactNode,\n type RefAttributes,\n createContext,\n forwardRef,\n} from 'react';\nimport {\n type ContextValue,\n FieldError,\n Group,\n Header,\n Heading,\n Keyboard,\n Label,\n Section,\n type SectionProps,\n SelectValue,\n type SelectValueProps,\n Separator,\n Text,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks';\n\n/**\n * To better align with the guidance from RAC about establishing a unique\n * context for components to avoid conflict of props being provided by RAC\n * and design system components, this wrapping utility accepts an RAC and returns\n * a wrapped version along with the new context for the design system to use\n */\nfunction wrap<P extends object, E extends HTMLElement>(\n Component: (props: P & RefAttributes<E>) => ReactNode,\n) {\n const Context = createContext<ContextValue<P, E>>(null);\n\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n Component: forwardRef<E, P>(function WrappedComponent(props, ref) {\n [props, ref] = useContextProps(props, ref, Context);\n\n return <Component {...props} ref={ref} />;\n }),\n Context,\n };\n}\n\nexport const { Component: AriaFieldError, Context: AriaFieldErrorContext } =\n wrap(FieldError);\n\nexport const { Component: AriaGroup, Context: AriaGroupContext } = wrap(Group);\n\nexport const { Component: AriaHeader, Context: AriaHeaderContext } =\n wrap(Header);\n\nexport const { Component: AriaHeading, Context: AriaHeadingContext } =\n wrap(Heading);\n\nexport const { Component: AriaKeyboard, Context: AriaKeyboardContext } =\n wrap(Keyboard);\n\nexport const { Component: AriaLabel, Context: AriaLabelContext } = wrap(Label);\n\nexport const { Component: AriaSeparator, Context: AriaSeparatorContext } =\n wrap(Separator);\n\nexport const { Component: AriaText, Context: AriaTextContext } = wrap(Text);\n\n/**\n * Due to the complexity of types and technical constraints of TS, it's not\n * possible for the above wrapping utility to support components that accept\n * generic parameters. This means that these components must be manually wrapped\n */\n\nexport const AriaSectionContext =\n createContext<ContextValue<SectionProps<object>, HTMLElement>>(null);\n\nexport const AriaSection = forwardRef(function AriaSection<T extends object>(\n props: SectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n) {\n [props, ref] = useContextProps(props, ref, AriaSectionContext);\n\n return <Section {...props} ref={ref} />;\n});\n\nexport const AriaSelectValueContext =\n createContext<ContextValue<SelectValueProps<object>, HTMLSpanElement>>(null);\n\nexport const AriaSelectValue = forwardRef(function AriaSelectValue<\n T extends object,\n>(props: SelectValueProps<T>, ref: ForwardedRef<HTMLSpanElement>) {\n [props, ref] = useContextProps(props, ref, AriaSelectValueContext);\n\n return <SelectValue {...props} ref={ref} />;\n});\n"]}
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { Context } from 'react';
3
3
  import * as react_aria_components from 'react-aria-components';
4
4
  import { ContextValue } from 'react-aria-components';
5
- import { ButtonProps, ButtonRenderProps, ButtonColors, ButtonMapping, ButtonSizes, ButtonVariants, LinkButtonProps, ToggleButtonProps } from './types.js';
5
+ import { ButtonRenderProps, ButtonColors, ButtonMapping, ButtonSizes, ButtonVariants, ButtonProps, LinkButtonProps, ToggleButtonProps } from './types.js';
6
6
  import { RenderPropsChildren } from '../../types/react-aria.js';
7
7
  import '../../types/props.js';
8
8
  import '../icon/types.js';
@@ -1,6 +1,6 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- import { clsx } from 'clsx';
3
2
  import { noop } from '@accelint/core';
3
+ import { clsx } from 'clsx';
4
4
  import { createContext, forwardRef, useMemo, useCallback } from 'react';
5
5
  import { Button as Button$1, Link, ToggleButton as ToggleButton$1, Provider } from 'react-aria-components';
6
6
  import { useContextProps, useDefaultProps, useTheme } from '../../hooks/index.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/button/button.tsx"],"names":["Button","RACButton","LinkButton","ToggleButton","RACToggleButton"],"mappings":"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","file":"button.js","sourcesContent":["import { clsx } from 'clsx';\nimport { noop } from '@accelint/core';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n type Context,\n type ForwardedRef,\n} from 'react';\nimport {\n Link,\n Provider,\n Button as RACButton,\n ToggleButton as RACToggleButton,\n type ButtonRenderProps,\n type ContextValue,\n type LinkRenderProps,\n type ToggleButtonRenderProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies, surfaces } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { IconContext, type IconProps } from '../icon';\nimport { buttonClassNames, buttonStateVars } from './button.css';\nimport type {\n ButtonMapping,\n ButtonProps,\n ButtonSizes,\n LinkButtonProps,\n ToggleButtonProps,\n} from './types';\n\nconst noopToggleState = { isSelected: false, setSelected: noop, toggle: noop };\nconst buttonSizes: ButtonSizes[] = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst defaultMapping: ButtonMapping = {\n font: bodies,\n icon: buttonSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<ButtonSizes, OmitProtectedProps<IconProps>>,\n ),\n};\n\nfunction useButton<\n P extends ButtonProps | LinkButtonProps | ToggleButtonProps,\n E extends HTMLElement,\n>(\n props: P,\n ref: ForwardedRef<E>,\n context: Context<ContextValue<P, E>>,\n key: 'Button' | 'LinkButton' | 'ToggleButton',\n) {\n [props, ref] = useContextProps(props, ref, context);\n\n props = useDefaultProps(props, key);\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n color = 'primary',\n mapping: mappingProp,\n size = 'md',\n variant = 'solid',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(buttonClassNames, theme.Button, classNamesProp, {\n button: clsx(\n mapping.font[size],\n variant === 'floating' && surfaces.default.proud,\n ),\n }),\n [theme.Button, classNamesProp, mapping.font, size, variant],\n );\n\n const style = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) =>\n inlineVars(buttonStateVars, {\n isCurrent: false,\n isSelected: false,\n ...renderProps,\n color,\n size,\n variant,\n }),\n [color, size, variant],\n );\n\n const values = useMemo<\n [[typeof IconContext, ContextValue<IconProps, HTMLDivElement>]]\n >(() => [[IconContext, mapping.icon[size]]], [mapping.icon, size]);\n\n const children = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) => (\n <Provider values={values}>\n <span className={classNames?.button}>\n {callRenderProps(childrenProp, {\n state: noopToggleState,\n isCurrent: false,\n isPending: false,\n isSelected: false,\n ...renderProps,\n })}\n </span>\n </Provider>\n ),\n [values, classNames?.button, childrenProp],\n );\n\n return useMemo(\n () => ({ ...rest, ref, children, className: classNames?.container, style }),\n [rest, ref, children, classNames?.container, style],\n );\n}\n\nexport const ButtonContext =\n createContext<ContextValue<ButtonProps, HTMLButtonElement>>(null);\n\nexport const Button = forwardRef(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(props, ref, ButtonContext, 'Button');\n\n return <RACButton {...buttonProps} />;\n});\n\nexport const LinkButtonContext =\n createContext<ContextValue<LinkButtonProps, HTMLAnchorElement>>(null);\n\nexport const LinkButton = forwardRef(function LinkButton(\n props: LinkButtonProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const buttonProps = useButton(props, ref, LinkButtonContext, 'LinkButton');\n\n return <Link {...buttonProps} />;\n});\n\nexport const ToggleButtonContext =\n createContext<ContextValue<ToggleButtonProps, HTMLButtonElement>>(null);\n\nexport const ToggleButton = forwardRef(function ToggleButton(\n props: ToggleButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(\n props,\n ref,\n ToggleButtonContext,\n 'ToggleButton',\n );\n\n return <RACToggleButton {...buttonProps} />;\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/button/button.tsx"],"names":["Button","RACButton","LinkButton","ToggleButton","RACToggleButton"],"mappings":"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","file":"button.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { noop } from '@accelint/core';\nimport { clsx } from 'clsx';\nimport {\n type Context,\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ButtonRenderProps,\n type ContextValue,\n Link,\n type LinkRenderProps,\n Provider,\n Button as RACButton,\n ToggleButton as RACToggleButton,\n type ToggleButtonRenderProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies, surfaces } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { IconContext, type IconProps } from '../icon';\nimport { buttonClassNames, buttonStateVars } from './button.css';\nimport type {\n ButtonMapping,\n ButtonProps,\n ButtonSizes,\n LinkButtonProps,\n ToggleButtonProps,\n} from './types';\n\nconst noopToggleState = { isSelected: false, setSelected: noop, toggle: noop };\nconst buttonSizes: ButtonSizes[] = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst defaultMapping: ButtonMapping = {\n font: bodies,\n icon: buttonSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<ButtonSizes, OmitProtectedProps<IconProps>>,\n ),\n};\n\nfunction useButton<\n P extends ButtonProps | LinkButtonProps | ToggleButtonProps,\n E extends HTMLElement,\n>(\n props: P,\n ref: ForwardedRef<E>,\n context: Context<ContextValue<P, E>>,\n key: 'Button' | 'LinkButton' | 'ToggleButton',\n) {\n [props, ref] = useContextProps(props, ref, context);\n\n props = useDefaultProps(props, key);\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n color = 'primary',\n mapping: mappingProp,\n size = 'md',\n variant = 'solid',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(buttonClassNames, theme.Button, classNamesProp, {\n button: clsx(\n mapping.font[size],\n variant === 'floating' && surfaces.default.proud,\n ),\n }),\n [theme.Button, classNamesProp, mapping.font, size, variant],\n );\n\n const style = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) =>\n inlineVars(buttonStateVars, {\n isCurrent: false,\n isSelected: false,\n ...renderProps,\n color,\n size,\n variant,\n }),\n [color, size, variant],\n );\n\n const values = useMemo<\n [[typeof IconContext, ContextValue<IconProps, HTMLDivElement>]]\n >(() => [[IconContext, mapping.icon[size]]], [mapping.icon, size]);\n\n const children = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) => (\n <Provider values={values}>\n <span className={classNames?.button}>\n {callRenderProps(childrenProp, {\n state: noopToggleState,\n isCurrent: false,\n isPending: false,\n isSelected: false,\n ...renderProps,\n })}\n </span>\n </Provider>\n ),\n [values, classNames?.button, childrenProp],\n );\n\n return useMemo(\n () => ({ ...rest, ref, children, className: classNames?.container, style }),\n [rest, ref, children, classNames?.container, style],\n );\n}\n\nexport const ButtonContext =\n createContext<ContextValue<ButtonProps, HTMLButtonElement>>(null);\n\nexport const Button = forwardRef(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(props, ref, ButtonContext, 'Button');\n\n return <RACButton {...buttonProps} />;\n});\n\nexport const LinkButtonContext =\n createContext<ContextValue<LinkButtonProps, HTMLAnchorElement>>(null);\n\nexport const LinkButton = forwardRef(function LinkButton(\n props: LinkButtonProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const buttonProps = useButton(props, ref, LinkButtonContext, 'LinkButton');\n\n return <Link {...buttonProps} />;\n});\n\nexport const ToggleButtonContext =\n createContext<ContextValue<ToggleButtonProps, HTMLButtonElement>>(null);\n\nexport const ToggleButton = forwardRef(function ToggleButton(\n props: ToggleButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(\n props,\n ref,\n ToggleButtonContext,\n 'ToggleButton',\n );\n\n return <RACToggleButton {...buttonProps} />;\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { ButtonRenderProps as ButtonRenderProps$1, LinkRenderProps, ToggleButtonRenderProps, ButtonProps as ButtonProps$1, ToggleButtonProps as ToggleButtonProps$1, LinkProps } from 'react-aria-components';
1
+ import { ButtonRenderProps as ButtonRenderProps$1, LinkRenderProps, ToggleButtonRenderProps, ButtonProps as ButtonProps$1, LinkProps, ToggleButtonProps as ToggleButtonProps$1 } from 'react-aria-components';
2
2
  import { OmitProtectedProps } from '../../types/props.js';
3
3
  import { RenderPropsChildren } from '../../types/react-aria.js';
4
4
  import { IconProps } from '../icon/types.js';
@@ -1,5 +1,5 @@
1
1
  import * as _react_types_shared from '@react-types/shared';
2
- import { CheckboxProps, CheckboxRenderProps, CheckboxClassNames, CheckboxAlignment, CheckboxGroupProps, CheckboxGroupRenderProps } from './types.js';
2
+ import { CheckboxRenderProps, CheckboxClassNames, CheckboxAlignment, CheckboxProps, CheckboxGroupRenderProps, CheckboxGroupProps } from './types.js';
3
3
  import * as react from 'react';
4
4
  import * as react_aria_components from 'react-aria-components';
5
5
  import { ContextValue } from 'react-aria-components';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/checkbox.tsx"],"names":["Checkbox","RACCheckbox","CheckboxGroup","RACCheckboxGroup"],"mappings":"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","file":"checkbox.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n type ForwardedRef,\n} from 'react';\nimport {\n Provider,\n Checkbox as RACCheckbox,\n CheckboxGroup as RACCheckboxGroup,\n TextContext,\n type ContextValue,\n type LabelProps,\n type TextProps,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaLabelContext, AriaTextContext } from '../aria';\nimport { IconContext, type IconProps } from '../icon';\nimport {\n checkboxClassNames,\n checkboxGroupStateVars,\n checkboxStateVars,\n} from './checkbox.css';\nimport type {\n CheckboxGroupProps,\n CheckboxGroupRenderProps,\n CheckboxProps,\n CheckboxRenderProps,\n} from './types';\n\nexport const CheckboxContext =\n createContext<ContextValue<CheckboxProps, HTMLLabelElement>>(null);\n\nexport const Checkbox = forwardRef(function Checkbox(\n props: CheckboxProps,\n ref: ForwardedRef<HTMLLabelElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxContext);\n\n props = useDefaultProps(props, 'Checkbox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n ...rest\n } = props;\n\n const [iconRef, hasIcon] = useSlot();\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [theme.Checkbox, classNamesProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: CheckboxRenderProps) =>\n inlineVars(checkboxStateVars, {\n ...renderProps,\n alignInput,\n }),\n [alignInput],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [typeof TextContext, ContextValue<TextProps, HTMLElement>],\n ]\n >(\n () => [\n [AriaTextContext, { className: classNames?.checkbox?.label }],\n [\n IconContext,\n {\n ref: iconRef,\n classNames: classNames?.checkbox?.icon,\n },\n ],\n [TextContext, null],\n ],\n [classNames?.checkbox?.label, classNames?.checkbox?.icon, iconRef],\n );\n\n const children = useCallback(\n (renderProps: CheckboxRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.checkbox?.checkbox}>\n {!hasIcon && (\n <span className={classNames?.checkbox?.icon?.container} />\n )}\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.checkbox, hasIcon, values],\n );\n\n return (\n <RACCheckbox\n {...rest}\n ref={ref}\n className={classNames?.checkbox?.container}\n style={style}\n >\n {children}\n </RACCheckbox>\n );\n});\n\nexport const CheckboxGroupContext =\n createContext<ContextValue<CheckboxGroupProps, HTMLDivElement>>(null);\n\nexport const CheckboxGroup = forwardRef(function CheckboxGroup(\n props: CheckboxGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxGroupContext);\n\n props = useDefaultProps(props, 'CheckboxGroup');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n orientation = 'vertical',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [classNamesProp, theme.Checkbox],\n );\n\n const style = useCallback(\n (renderProps: CheckboxGroupRenderProps) =>\n inlineVars(checkboxGroupStateVars, {\n ...renderProps,\n orientation,\n }),\n [orientation],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof CheckboxContext, ContextValue<CheckboxProps, HTMLLabelElement>],\n ]\n >(\n () => [\n [AriaLabelContext, { className: classNames?.group?.label }],\n [\n CheckboxContext,\n {\n classNames,\n alignInput,\n },\n ],\n ],\n [alignInput, classNames],\n );\n\n const children = useCallback(\n (renderProps: CheckboxGroupRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.group?.group}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.group, values],\n );\n\n return (\n <RACCheckboxGroup\n {...rest}\n ref={ref}\n className={classNames?.group?.container}\n style={style}\n >\n {children}\n </RACCheckboxGroup>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/checkbox/checkbox.tsx"],"names":["Checkbox","RACCheckbox","CheckboxGroup","RACCheckboxGroup"],"mappings":"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","file":"checkbox.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type LabelProps,\n Provider,\n Checkbox as RACCheckbox,\n CheckboxGroup as RACCheckboxGroup,\n TextContext,\n type TextProps,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaLabelContext, AriaTextContext } from '../aria';\nimport { IconContext, type IconProps } from '../icon';\nimport {\n checkboxClassNames,\n checkboxGroupStateVars,\n checkboxStateVars,\n} from './checkbox.css';\nimport type {\n CheckboxGroupProps,\n CheckboxGroupRenderProps,\n CheckboxProps,\n CheckboxRenderProps,\n} from './types';\n\nexport const CheckboxContext =\n createContext<ContextValue<CheckboxProps, HTMLLabelElement>>(null);\n\nexport const Checkbox = forwardRef(function Checkbox(\n props: CheckboxProps,\n ref: ForwardedRef<HTMLLabelElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxContext);\n\n props = useDefaultProps(props, 'Checkbox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n ...rest\n } = props;\n\n const [iconRef, hasIcon] = useSlot();\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [theme.Checkbox, classNamesProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: CheckboxRenderProps) =>\n inlineVars(checkboxStateVars, {\n ...renderProps,\n alignInput,\n }),\n [alignInput],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [typeof TextContext, ContextValue<TextProps, HTMLElement>],\n ]\n >(\n () => [\n [AriaTextContext, { className: classNames?.checkbox?.label }],\n [\n IconContext,\n {\n ref: iconRef,\n classNames: classNames?.checkbox?.icon,\n },\n ],\n [TextContext, null],\n ],\n [classNames?.checkbox?.label, classNames?.checkbox?.icon, iconRef],\n );\n\n const children = useCallback(\n (renderProps: CheckboxRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.checkbox?.checkbox}>\n {!hasIcon && (\n <span className={classNames?.checkbox?.icon?.container} />\n )}\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.checkbox, hasIcon, values],\n );\n\n return (\n <RACCheckbox\n {...rest}\n ref={ref}\n className={classNames?.checkbox?.container}\n style={style}\n >\n {children}\n </RACCheckbox>\n );\n});\n\nexport const CheckboxGroupContext =\n createContext<ContextValue<CheckboxGroupProps, HTMLDivElement>>(null);\n\nexport const CheckboxGroup = forwardRef(function CheckboxGroup(\n props: CheckboxGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxGroupContext);\n\n props = useDefaultProps(props, 'CheckboxGroup');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n orientation = 'vertical',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [classNamesProp, theme.Checkbox],\n );\n\n const style = useCallback(\n (renderProps: CheckboxGroupRenderProps) =>\n inlineVars(checkboxGroupStateVars, {\n ...renderProps,\n orientation,\n }),\n [orientation],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof CheckboxContext, ContextValue<CheckboxProps, HTMLLabelElement>],\n ]\n >(\n () => [\n [AriaLabelContext, { className: classNames?.group?.label }],\n [\n CheckboxContext,\n {\n classNames,\n alignInput,\n },\n ],\n ],\n [alignInput, classNames],\n );\n\n const children = useCallback(\n (renderProps: CheckboxGroupRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.group?.group}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.group, values],\n );\n\n return (\n <RACCheckboxGroup\n {...rest}\n ref={ref}\n className={classNames?.group?.container}\n style={style}\n >\n {children}\n </RACCheckboxGroup>\n );\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { ChipProps, ChipItemProps, BaseChipProps, ChipListProps, ChipGroupProps } from './types.js';
1
+ import { ChipProps, ChipItemProps, BaseChipProps, ChipGroupProps, ChipListProps } from './types.js';
2
2
  import * as react_aria_components from 'react-aria-components';
3
3
  import { ContextValue } from 'react-aria-components';
4
4
  import * as react from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/chip/chip.tsx"],"names":["ChipItem","RACTextContext","ChipGroup"],"mappings":"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","file":"chip.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n type ForwardedRef,\n} from 'react';\nimport {\n Provider,\n TextContext as RACTextContext,\n Tag,\n TagGroup,\n TagList,\n type ContextValue,\n type TagRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { chipClassNames, chipStateVars } from './chip.css';\nimport type {\n ChipGroupProps,\n ChipItemProps,\n ChipListProps,\n ChipMapping,\n ChipProps,\n} from './types';\n\nconst defaults: Required<Pick<ChipProps, 'color' | 'size'>> = {\n color: 'info',\n size: 'sm',\n};\n\nconst defaultMapping: ChipMapping = {\n font: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n remove: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'sm', variant: 'icon' },\n },\n};\n\nexport function Chip(props: ChipProps) {\n props = useDefaultProps(props, 'Chip');\n\n const {\n children,\n classNames: classNamesProp,\n color = defaults.color,\n mapping: mappingProp,\n size = defaults.size,\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [[typeof AriaTextContext, ContextValue<TextProps, HTMLElement>]]\n >(\n () => [[AriaTextContext, { className: classNames?.label }]],\n [classNames?.label],\n );\n\n const style = useMemo(\n () =>\n inlineVars(chipStateVars, {\n allowsRemoving: false,\n color,\n selectionBehavior: 'toggle',\n selectionMode: 'none',\n size,\n isDisabled: false,\n isFocused: false,\n isFocusVisible: false,\n isHovered: false,\n isPressed: false,\n isSelected: false,\n }),\n [color, size],\n );\n\n return (\n <Provider values={values}>\n <div className={classNames?.container} style={style}>\n <div className={classNames?.chip}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport const ChipContext =\n createContext<ContextValue<ChipItemProps, HTMLDivElement>>(null);\n\n/**\n * Must be used in conjunction with ChipList & ChipGroup and\n * cannot be used outside of ChipList, else will throw error\n *\n * Color & Size props can be passed in from ChipGroup and overriden\n * on each instance of this components\n *\n * Order of precedence (from lowest to highest):\n * Design System Defaults of Chip\n * Global Defaults of ChipGroup\n * Instance of ChipGroup\n * Global Defaults of ChipItem\n * Instance of ChipItem\n */\nexport const ChipItem = forwardRef(function ChipItem(\n props: ChipItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipContext);\n props = useDefaultProps(props, 'Chip');\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n color = defaults.color,\n size = defaults.size,\n textValue,\n mapping: mappingProp,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof RACTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n ]\n >(\n () => [\n // Because ChipGroup (TagGroup) implements a TextContext, we need to block it inside of the Chip\n // so that there isn't a conflict of with our AriaTextContext. Otherwise there are slot errors\n [RACTextContext, null],\n [AriaTextContext, { className: classNames?.label }],\n [\n ButtonContext,\n {\n ...mapping.remove[size],\n classNames: { button: classNames?.remove },\n slot: 'remove',\n },\n ],\n ],\n [classNames?.label, classNames?.remove, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TagRenderProps) =>\n inlineVars(chipStateVars, {\n ...renderProps,\n color,\n size,\n }),\n [color, size],\n );\n\n const children = useCallback(\n (renderProps: TagRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.chip}>\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [values, classNames?.chip, childrenProp],\n );\n\n return (\n <Tag\n {...rest}\n ref={ref}\n id={id ?? textValue}\n className={classNames?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </Tag>\n );\n});\n\n/**\n * Must be used in conjunction with ChipItem & ChipGroup and\n * cannot be used outside of ChipGroup, else will throw error\n */\nexport function ChipList<T extends object>({\n classNames: classNamesProp,\n ...rest\n}: ChipListProps<T>) {\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n return <TagList<T> {...rest} className={classNames?.list} />;\n}\n\nexport const ChipGroupContext =\n createContext<ContextValue<ChipGroupProps, HTMLDivElement>>(null);\n\n/**\n * Color & Size props are passed down to ChipItem but can be overridden\n * on each component if desired\n */\nexport const ChipGroup = forwardRef(function ChipGroup(\n props: ChipGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipGroupContext);\n props = useDefaultProps(props, 'ChipGroup');\n\n const { children, classNames: classNamesProp, color, size, ...rest } = props;\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n const values = useMemo<\n [[typeof ChipContext, ContextValue<ChipItemProps, HTMLDivElement>]]\n >(\n () => [[ChipContext, { classNames, color, size }]],\n [classNames, color, size],\n );\n\n return (\n <TagGroup {...rest} ref={ref} className={classNames?.group}>\n <Provider values={values}>{children}</Provider>\n </TagGroup>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/chip/chip.tsx"],"names":["ChipItem","RACTextContext","ChipGroup"],"mappings":"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","file":"chip.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n Provider,\n TextContext as RACTextContext,\n Tag,\n TagGroup,\n TagList,\n type TagRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { chipClassNames, chipStateVars } from './chip.css';\nimport type {\n ChipGroupProps,\n ChipItemProps,\n ChipListProps,\n ChipMapping,\n ChipProps,\n} from './types';\n\nconst defaults: Required<Pick<ChipProps, 'color' | 'size'>> = {\n color: 'info',\n size: 'sm',\n};\n\nconst defaultMapping: ChipMapping = {\n font: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n remove: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'sm', variant: 'icon' },\n },\n};\n\nexport function Chip(props: ChipProps) {\n props = useDefaultProps(props, 'Chip');\n\n const {\n children,\n classNames: classNamesProp,\n color = defaults.color,\n mapping: mappingProp,\n size = defaults.size,\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [[typeof AriaTextContext, ContextValue<TextProps, HTMLElement>]]\n >(\n () => [[AriaTextContext, { className: classNames?.label }]],\n [classNames?.label],\n );\n\n const style = useMemo(\n () =>\n inlineVars(chipStateVars, {\n allowsRemoving: false,\n color,\n selectionBehavior: 'toggle',\n selectionMode: 'none',\n size,\n isDisabled: false,\n isFocused: false,\n isFocusVisible: false,\n isHovered: false,\n isPressed: false,\n isSelected: false,\n }),\n [color, size],\n );\n\n return (\n <Provider values={values}>\n <div className={classNames?.container} style={style}>\n <div className={classNames?.chip}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport const ChipContext =\n createContext<ContextValue<ChipItemProps, HTMLDivElement>>(null);\n\n/**\n * Must be used in conjunction with ChipList & ChipGroup and\n * cannot be used outside of ChipList, else will throw error\n *\n * Color & Size props can be passed in from ChipGroup and overriden\n * on each instance of this components\n *\n * Order of precedence (from lowest to highest):\n * Design System Defaults of Chip\n * Global Defaults of ChipGroup\n * Instance of ChipGroup\n * Global Defaults of ChipItem\n * Instance of ChipItem\n */\nexport const ChipItem = forwardRef(function ChipItem(\n props: ChipItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipContext);\n props = useDefaultProps(props, 'Chip');\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n color = defaults.color,\n size = defaults.size,\n textValue,\n mapping: mappingProp,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof RACTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n ]\n >(\n () => [\n // Because ChipGroup (TagGroup) implements a TextContext, we need to block it inside of the Chip\n // so that there isn't a conflict of with our AriaTextContext. Otherwise there are slot errors\n [RACTextContext, null],\n [AriaTextContext, { className: classNames?.label }],\n [\n ButtonContext,\n {\n ...mapping.remove[size],\n classNames: { button: classNames?.remove },\n slot: 'remove',\n },\n ],\n ],\n [classNames?.label, classNames?.remove, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TagRenderProps) =>\n inlineVars(chipStateVars, {\n ...renderProps,\n color,\n size,\n }),\n [color, size],\n );\n\n const children = useCallback(\n (renderProps: TagRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.chip}>\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [values, classNames?.chip, childrenProp],\n );\n\n return (\n <Tag\n {...rest}\n ref={ref}\n id={id ?? textValue}\n className={classNames?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </Tag>\n );\n});\n\n/**\n * Must be used in conjunction with ChipItem & ChipGroup and\n * cannot be used outside of ChipGroup, else will throw error\n */\nexport function ChipList<T extends object>({\n classNames: classNamesProp,\n ...rest\n}: ChipListProps<T>) {\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n return <TagList<T> {...rest} className={classNames?.list} />;\n}\n\nexport const ChipGroupContext =\n createContext<ContextValue<ChipGroupProps, HTMLDivElement>>(null);\n\n/**\n * Color & Size props are passed down to ChipItem but can be overridden\n * on each component if desired\n */\nexport const ChipGroup = forwardRef(function ChipGroup(\n props: ChipGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipGroupContext);\n props = useDefaultProps(props, 'ChipGroup');\n\n const { children, classNames: classNamesProp, color, size, ...rest } = props;\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n const values = useMemo<\n [[typeof ChipContext, ContextValue<ChipItemProps, HTMLDivElement>]]\n >(\n () => [[ChipContext, { classNames, color, size }]],\n [classNames, color, size],\n );\n\n return (\n <TagGroup {...rest} ref={ref} className={classNames?.group}>\n <Provider values={values}>{children}</Provider>\n </TagGroup>\n );\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import { TagRenderProps, TagProps, TagListProps, TagGroupProps } from 'react-aria-components';
2
+ import { TagRenderProps, TagProps, TagGroupProps, TagListProps } from 'react-aria-components';
3
3
  import { AsType } from '../../types/generic.js';
4
4
  import { OmitProtectedProps } from '../../types/props.js';
5
5
  import { RenderPropsChildren } from '../../types/react-aria.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/collection/collection.tsx"],"names":[],"mappings":";;;;;;AAYO,SAAS,wBAAA,CAGd,SAAqB,MAA+B,EAAA;AACpD,EAAO,OAAA;AAAA;AAAA,IAEL,gBAAgB,CAAC,EAAE,qBACjB,qBAAA,GAAA,CAAC,iBAAc,MACZ,EAAA,QAAA,EAAA,mBAAA;AAAA,MACC,UAAA,CAAW,OAAO,CAAG,EAAA,UAAA;AAAA,MACrB,IAAA;AAAA,MACA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAAA,IAGF,gBAAkB,EAAA,CAAC,EAAE,UAAA,EAAY,QAAQ,mBAAoB,EAAA,qBAC1D,GAAA,CAAA,aAAA,EAAA,EAAc,MACZ,EAAA,QAAA,EAAA,mBAAA,CAAoB,UAAY,EAAA,MAAA,EAAQ,mBAAmB,CAC9D,EAAA;AAAA,GAEJ;AACF","file":"collection.js","sourcesContent":["import type { Collection, Node } from '@react-types/shared';\nimport { useContext, type Context } from 'react';\nimport type { CollectionRenderer } from 'react-aria-components';\nimport { useCollectionRender } from '../../hooks';\nimport { MergeProvider, type MergeProviderProps } from '../merge-provider';\n\n/**\n * Replace the default collection renderer to allow for injection of\n * context props for multiple composed components. Also enables use of\n * Section as wrapper of list items at the top level as a styleable\n * element within the RAC container\n */\nexport function createCollectionRenderer<\n C extends { readonly collection: Collection<Node<unknown>> },\n V extends MergeProviderProps['values'],\n>(context: Context<C>, values: V): CollectionRenderer {\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionRoot: ({ renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(\n useContext(context)?.collection,\n null,\n renderDropIndicator,\n )}\n </MergeProvider>\n ),\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionBranch: ({ collection, parent, renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(collection, parent, renderDropIndicator)}\n </MergeProvider>\n ),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/collection/collection.tsx"],"names":[],"mappings":";;;;;;AAwBO,SAAS,wBAAA,CAGd,SAAqB,MAA+B,EAAA;AACpD,EAAO,OAAA;AAAA;AAAA,IAEL,gBAAgB,CAAC,EAAE,qBACjB,qBAAA,GAAA,CAAC,iBAAc,MACZ,EAAA,QAAA,EAAA,mBAAA;AAAA,MACC,UAAA,CAAW,OAAO,CAAG,EAAA,UAAA;AAAA,MACrB,IAAA;AAAA,MACA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAAA,IAGF,gBAAkB,EAAA,CAAC,EAAE,UAAA,EAAY,QAAQ,mBAAoB,EAAA,qBAC1D,GAAA,CAAA,aAAA,EAAA,EAAc,MACZ,EAAA,QAAA,EAAA,mBAAA,CAAoB,UAAY,EAAA,MAAA,EAAQ,mBAAmB,CAC9D,EAAA;AAAA,GAEJ;AACF","file":"collection.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport type { Collection, Node } from '@react-types/shared';\nimport { type Context, useContext } from 'react';\nimport type { CollectionRenderer } from 'react-aria-components';\nimport { useCollectionRender } from '../../hooks';\nimport { MergeProvider, type MergeProviderProps } from '../merge-provider';\n\n/**\n * Replace the default collection renderer to allow for injection of\n * context props for multiple composed components. Also enables use of\n * Section as wrapper of list items at the top level as a styleable\n * element within the RAC container\n */\nexport function createCollectionRenderer<\n C extends { readonly collection: Collection<Node<unknown>> },\n V extends MergeProviderProps['values'],\n>(context: Context<C>, values: V): CollectionRenderer {\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionRoot: ({ renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(\n useContext(context)?.collection,\n null,\n renderDropIndicator,\n )}\n </MergeProvider>\n ),\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionBranch: ({ collection, parent, renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(collection, parent, renderDropIndicator)}\n </MergeProvider>\n ),\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ComboBoxProps, ComboBoxClassNames, ComboBoxMapping, ComboBoxSizes } from './types.js';
1
+ import { ComboBoxClassNames, ComboBoxMapping, ComboBoxSizes, ComboBoxProps } from './types.js';
2
2
  import * as react_aria_components from 'react-aria-components';
3
3
  import { ContextValue } from 'react-aria-components';
4
4
  import * as react from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/combo-box/combo-box.tsx"],"names":["ComboBox","RACComboBox"],"mappings":"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","file":"combo-box.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n type ForwardedRef,\n} from 'react';\nimport {\n Provider,\n ComboBox as RACComboBox,\n type ComboBoxRenderProps,\n type ContextValue,\n type FieldErrorProps,\n type LabelProps,\n type GroupProps as RACGroupProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport {\n AriaFieldErrorContext,\n AriaGroupContext,\n AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { InputContext, type InputProps } from '../input';\nimport { OptionsContext, type OptionsProps } from '../options';\nimport { comboBoxClassNames, comboBoxStateVars } from './combo-box.css';\nimport type { ComboBoxMapping, ComboBoxProps } from './types';\n\nconst defaultMapping: ComboBoxMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n toggle: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'md', variant: 'icon' },\n },\n};\n\nexport const ComboBoxContext =\n createContext<ContextValue<ComboBoxProps<object>, HTMLDivElement>>(null);\n\nexport const ComboBox = forwardRef(function ComboBox<T extends object>(\n props: ComboBoxProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ComboBoxContext);\n props = useDefaultProps(props, 'ComboBox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = 'lg',\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(comboBoxClassNames, theme.ComboBox, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.ComboBox, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaGroupContext, ContextValue<RACGroupProps, HTMLDivElement>],\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n [typeof OptionsContext, ContextValue<OptionsProps, HTMLElement>],\n ]\n >(\n () => [\n [\n AriaLabelContext,\n {\n className: classNames?.label,\n },\n ],\n [\n AriaGroupContext,\n {\n className: classNames?.group,\n },\n ],\n [InputContext, { classNames: classNames?.input, size }],\n [\n ButtonContext,\n {\n ...mapping.toggle[size],\n classNames: classNames?.toggle,\n },\n ],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n [OptionsContext, { classNames: classNames?.options, size }],\n ],\n [classNames, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: ComboBoxRenderProps) =>\n inlineVars(comboBoxStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n\n const children = useCallback(\n (renderProps: ComboBoxRenderProps) => (\n <div className={classNames?.comboBox}>\n <Provider values={values}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </Provider>\n </div>\n ),\n [classNames?.comboBox, values, childrenProp],\n );\n\n return (\n <RACComboBox\n {...props}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACComboBox>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/combo-box/combo-box.tsx"],"names":["ComboBox","RACComboBox"],"mappings":"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","file":"combo-box.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ComboBoxRenderProps,\n type ContextValue,\n type FieldErrorProps,\n type LabelProps,\n Provider,\n ComboBox as RACComboBox,\n type GroupProps as RACGroupProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport {\n AriaFieldErrorContext,\n AriaGroupContext,\n AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { InputContext, type InputProps } from '../input';\nimport { OptionsContext, type OptionsProps } from '../options';\nimport { comboBoxClassNames, comboBoxStateVars } from './combo-box.css';\nimport type { ComboBoxMapping, ComboBoxProps } from './types';\n\nconst defaultMapping: ComboBoxMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n toggle: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'md', variant: 'icon' },\n },\n};\n\nexport const ComboBoxContext =\n createContext<ContextValue<ComboBoxProps<object>, HTMLDivElement>>(null);\n\nexport const ComboBox = forwardRef(function ComboBox<T extends object>(\n props: ComboBoxProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ComboBoxContext);\n props = useDefaultProps(props, 'ComboBox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = 'lg',\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(comboBoxClassNames, theme.ComboBox, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.ComboBox, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaGroupContext, ContextValue<RACGroupProps, HTMLDivElement>],\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n [typeof OptionsContext, ContextValue<OptionsProps, HTMLElement>],\n ]\n >(\n () => [\n [\n AriaLabelContext,\n {\n className: classNames?.label,\n },\n ],\n [\n AriaGroupContext,\n {\n className: classNames?.group,\n },\n ],\n [InputContext, { classNames: classNames?.input, size }],\n [\n ButtonContext,\n {\n ...mapping.toggle[size],\n classNames: classNames?.toggle,\n },\n ],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n [OptionsContext, { classNames: classNames?.options, size }],\n ],\n [classNames, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: ComboBoxRenderProps) =>\n inlineVars(comboBoxStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n\n const children = useCallback(\n (renderProps: ComboBoxRenderProps) => (\n <div className={classNames?.comboBox}>\n <Provider values={values}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </Provider>\n </div>\n ),\n [classNames?.comboBox, values, childrenProp],\n );\n\n return (\n <RACComboBox\n {...props}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACComboBox>\n );\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { ComboBoxRenderProps as ComboBoxRenderProps$1, ComboBoxProps as ComboBoxProps$1 } from 'react-aria-components';
1
+ import { ComboBoxProps as ComboBoxProps$1, ComboBoxRenderProps as ComboBoxRenderProps$1 } from 'react-aria-components';
2
2
  import { PartialDeep } from 'type-fest';
3
3
  import { AsType } from '../../types/generic.js';
4
4
  import { OmitProtectedProps } from '../../types/props.js';
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import * as react_aria_components from 'react-aria-components';
3
3
  import { ContextValue } from 'react-aria-components';
4
4
  import { RenderPropsChildren } from '../../types/react-aria.js';
5
- import { DialogProps, DialogRenderProps, DialogMapping, DialogSizes } from './types.js';
5
+ import { DialogRenderProps, DialogMapping, DialogSizes, DialogProps } from './types.js';
6
6
  import '../../types/props.js';
7
7
  import '../button/types.js';
8
8
  import '../icon/types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/dialog/dialog.tsx"],"names":["Dialog","RACDialog"],"mappings":"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","file":"dialog.js","sourcesContent":["import { useIsSSR } from '@react-aria/ssr';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ForwardedRef,\n type HTMLAttributes,\n} from 'react';\nimport {\n DEFAULT_SLOT,\n Modal,\n ModalOverlay,\n Provider,\n Dialog as RACDialog,\n type ContextValue,\n type ModalRenderProps,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { GroupContext, type GroupProps } from '../group';\nimport { dialogClassNames, dialogStateVars } from './dialog.css';\nimport type { DialogMapping, DialogProps, DialogSizes } from './types';\n\nconst dialogSizes: DialogSizes[] = ['sm', 'lg'];\n\nconst defaultMapping: DialogMapping = {\n heading: {\n sm: { className: headings.v4 },\n lg: { className: headings.v2 },\n },\n actions: {\n context: ButtonContext,\n orientation: 'horizontal',\n reverse: true,\n },\n primary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n secondary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size, variant: 'bare' };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n};\n\nexport const DialogContext =\n createContext<ContextValue<DialogProps, HTMLDivElement>>(null);\n\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DialogContext);\n props = useDefaultProps(props, 'Dialog');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n parentRef,\n role,\n size = 'lg',\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n const isGlobal = useMemo(\n () => !isSSR && portal === document.body,\n [isSSR, portal],\n );\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(dialogClassNames, theme.Dialog, classNamesProp, {\n container: isGlobal ? theme.className : undefined,\n }),\n [theme.Dialog, classNamesProp, isGlobal, theme.className],\n );\n\n const [headerRef, hasHeader] = useSlot();\n\n const style = useCallback(\n ({ state, ...renderProps }: ModalRenderProps) => ({\n ...(isGlobal ? theme.style : {}),\n ...inlineVars(dialogStateVars, {\n hasHeader,\n size,\n ...renderProps,\n isGlobal,\n }),\n }),\n [size, theme.style, isGlobal, hasHeader],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>,\n ContextValue<\n GroupProps<ButtonProps, HTMLButtonElement>,\n HTMLDivElement\n >\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header,\n ref: headerRef,\n values: [\n [\n AriaHeadingContext,\n {\n ...mapping.heading[size],\n slot: 'title',\n },\n ],\n [GroupContext, null],\n ],\n },\n content: { className: classNames?.content },\n footer: {\n as: 'footer',\n className: classNames?.footer,\n values: [\n [AriaHeadingContext, null],\n [\n GroupContext,\n {\n values: {\n slots: {\n [DEFAULT_SLOT]: mapping.primary[size] ?? {},\n secondary: mapping.secondary[size] ?? {},\n },\n },\n ...mapping.actions,\n },\n ],\n ],\n },\n },\n },\n ],\n ],\n [\n classNames?.header,\n classNames?.content,\n classNames?.footer,\n headerRef,\n mapping.actions,\n mapping.heading,\n mapping.primary,\n mapping.secondary,\n size,\n ],\n );\n\n const children = useCallback(\n (renderProps: ModalRenderProps) => (\n <Provider values={values}>\n <Modal className={classNames?.modal}>\n <RACDialog className={classNames?.dialog} role={role}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isGlobal,\n isOpen: renderProps.state.isOpen,\n })}\n </RACDialog>\n </Modal>\n </Provider>\n ),\n [\n values,\n classNames?.modal,\n classNames?.dialog,\n role,\n childrenProp,\n isGlobal,\n ],\n );\n\n useEffect(() => {\n const node = parentRef?.current;\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n port.classList.add(classNames?.portal ?? '');\n\n node.appendChild(port);\n\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef, classNames?.portal]);\n\n if (!portal) return null;\n\n return (\n <ModalOverlay\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n UNSTABLE_portalContainer={portal}\n >\n {children}\n </ModalOverlay>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/dialog/dialog.tsx"],"names":["Dialog","RACDialog"],"mappings":"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","file":"dialog.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useIsSSR } from '@react-aria/ssr';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n Modal,\n ModalOverlay,\n type ModalRenderProps,\n Provider,\n Dialog as RACDialog,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { GroupContext, type GroupProps } from '../group';\nimport { dialogClassNames, dialogStateVars } from './dialog.css';\nimport type { DialogMapping, DialogProps, DialogSizes } from './types';\n\nconst dialogSizes: DialogSizes[] = ['sm', 'lg'];\n\nconst defaultMapping: DialogMapping = {\n heading: {\n sm: { className: headings.v4 },\n lg: { className: headings.v2 },\n },\n actions: {\n context: ButtonContext,\n orientation: 'horizontal',\n reverse: true,\n },\n primary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n secondary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size, variant: 'bare' };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n};\n\nexport const DialogContext =\n createContext<ContextValue<DialogProps, HTMLDivElement>>(null);\n\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DialogContext);\n props = useDefaultProps(props, 'Dialog');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n parentRef,\n role,\n size = 'lg',\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n const isGlobal = useMemo(\n () => !isSSR && portal === document.body,\n [isSSR, portal],\n );\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(dialogClassNames, theme.Dialog, classNamesProp, {\n container: isGlobal ? theme.className : undefined,\n }),\n [theme.Dialog, classNamesProp, isGlobal, theme.className],\n );\n\n const [headerRef, hasHeader] = useSlot();\n\n const style = useCallback(\n ({ state, ...renderProps }: ModalRenderProps) => ({\n ...(isGlobal ? theme.style : {}),\n ...inlineVars(dialogStateVars, {\n hasHeader,\n size,\n ...renderProps,\n isGlobal,\n }),\n }),\n [size, theme.style, isGlobal, hasHeader],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>,\n ContextValue<\n GroupProps<ButtonProps, HTMLButtonElement>,\n HTMLDivElement\n >\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header,\n ref: headerRef,\n values: [\n [\n AriaHeadingContext,\n {\n ...mapping.heading[size],\n slot: 'title',\n },\n ],\n [GroupContext, null],\n ],\n },\n content: { className: classNames?.content },\n footer: {\n as: 'footer',\n className: classNames?.footer,\n values: [\n [AriaHeadingContext, null],\n [\n GroupContext,\n {\n values: {\n slots: {\n [DEFAULT_SLOT]: mapping.primary[size] ?? {},\n secondary: mapping.secondary[size] ?? {},\n },\n },\n ...mapping.actions,\n },\n ],\n ],\n },\n },\n },\n ],\n ],\n [\n classNames?.header,\n classNames?.content,\n classNames?.footer,\n headerRef,\n mapping.actions,\n mapping.heading,\n mapping.primary,\n mapping.secondary,\n size,\n ],\n );\n\n const children = useCallback(\n (renderProps: ModalRenderProps) => (\n <Provider values={values}>\n <Modal className={classNames?.modal}>\n <RACDialog className={classNames?.dialog} role={role}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isGlobal,\n isOpen: renderProps.state.isOpen,\n })}\n </RACDialog>\n </Modal>\n </Provider>\n ),\n [\n values,\n classNames?.modal,\n classNames?.dialog,\n role,\n childrenProp,\n isGlobal,\n ],\n );\n\n useEffect(() => {\n const node = parentRef?.current;\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n port.classList.add(classNames?.portal ?? '');\n\n node.appendChild(port);\n\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef, classNames?.portal]);\n\n if (!portal) return null;\n\n return (\n <ModalOverlay\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n UNSTABLE_portalContainer={portal}\n >\n {children}\n </ModalOverlay>\n );\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { RefObject } from 'react';
2
- import { HeadingProps, ModalRenderProps, ModalOverlayProps, DialogProps as DialogProps$1 } from 'react-aria-components';
2
+ import { ModalRenderProps, HeadingProps, ModalOverlayProps, DialogProps as DialogProps$1 } from 'react-aria-components';
3
3
  import { OmitProtectedProps } from '../../types/props.js';
4
4
  import { RenderPropsChildren } from '../../types/react-aria.js';
5
5
  import { ButtonProps } from '../button/types.js';
@@ -1,4 +1,4 @@
1
- import { DrawerProps, DrawerTabListProps, DrawerTabProps, DrawerDialogProps, DrawerClassNames, DrawerMapping } from './types.js';
1
+ import { DrawerProps, DrawerClassNames, DrawerMapping, DrawerTabProps, DrawerTabListProps, DrawerDialogProps } from './types.js';
2
2
  import * as _react_types_shared from '@react-types/shared';
3
3
  import * as react from 'react';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -1,9 +1,9 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
2
  import { toBoolean } from '@accelint/converters';
3
3
  import { noop } from '@accelint/core';
4
- import { useIsSSR } from '@react-aria/ssr';
5
4
  import { useFocusWithin } from '@react-aria/interactions';
6
5
  import { useOverlay } from '@react-aria/overlays';
6
+ import { useIsSSR } from '@react-aria/ssr';
7
7
  import { useOverlayTriggerState } from '@react-stately/overlays';
8
8
  import { createContext, forwardRef, useContext, useMemo, useCallback, useRef } from 'react';
9
9
  import { DEFAULT_SLOT, Provider } from 'react-aria-components';
@@ -39,7 +39,8 @@ function Drawer(props) {
39
39
  isDismissable = true,
40
40
  isKeyboardDismissDisabled = false,
41
41
  isOpen: isOpenProp,
42
- onOpenChange
42
+ onOpenChange,
43
+ ...rest
43
44
  } = props;
44
45
  const theme = useTheme();
45
46
  const isSSR = useIsSSR();
@@ -109,7 +110,7 @@ function Drawer(props) {
109
110
  ref,
110
111
  className: classNames?.container,
111
112
  style,
112
- children: /* @__PURE__ */ jsx(Tabs, { classNames: classNames?.tabs, children })
113
+ children: /* @__PURE__ */ jsx(Tabs, { classNames: classNames?.tabs, ...rest, children })
113
114
  }
114
115
  ) });
115
116
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/drawer/drawer.tsx"],"names":["isOpen","DrawerDialog"],"mappings":"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","file":"drawer.js","sourcesContent":["import { toBoolean } from '@accelint/converters';\nimport { noop } from '@accelint/core';\nimport { useIsSSR } from '@react-aria/ssr';\nimport { useFocusWithin } from '@react-aria/interactions';\nimport { useOverlay } from '@react-aria/overlays';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport type { PressEvent } from '@react-types/shared';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport {\n DEFAULT_SLOT,\n Provider,\n type ContextValue,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport {\n callRenderProps,\n inlineVars,\n mergeClassNames,\n mergeProps,\n} from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { Tab, TabList, Tabs, type TabRenderProps } from '../tabs';\nimport {\n TooltipContext,\n TooltipTargetContext,\n type TooltipProps,\n type TooltipTargetProps,\n} from '../tooltip';\nimport {\n drawerClassNames,\n drawerDialogStateVars,\n drawerStateVars,\n} from './drawer.css';\nimport type {\n DrawerContextValue,\n DrawerDialogProps,\n DrawerMapping,\n DrawerProps,\n DrawerTabListProps,\n DrawerTabProps,\n} from './types';\n\nconst DrawerContext = createContext<DrawerContextValue>({\n anchor: 'right',\n layoutShift: false,\n isOpen: false,\n close: noop,\n open: noop,\n setOpen: noop,\n toggle: noop,\n});\n\nexport function Drawer(props: DrawerProps) {\n props = useDefaultProps(props, 'Drawer');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n anchor = 'right',\n defaultOpen = false,\n layoutShift = false,\n shouldCloseOnBlur = false,\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n isOpen: isOpenProp,\n onOpenChange,\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Remove focus when Drawer closes\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n const focused = isSSR ? null : document.activeElement;\n\n if (\n focused &&\n 'blur' in focused &&\n typeof focused.blur === 'function'\n ) {\n focused.blur();\n }\n }\n\n onOpenChange?.(isOpen);\n },\n [isSSR, onOpenChange],\n );\n\n const state = useOverlayTriggerState({\n defaultOpen,\n isOpen: isOpenProp,\n onOpenChange: handleOpenChange,\n });\n\n const { isOpen, close, open } = state;\n const ref = useRef<HTMLDivElement>(null);\n\n const { overlayProps } = useOverlay(\n {\n isOpen,\n shouldCloseOnBlur,\n isDismissable,\n isKeyboardDismissDisabled,\n onClose: close,\n },\n ref,\n );\n\n // TODO: it may be desirable to disallow focus within the closed Drawer instead\n // If focus forces the Drawer open\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: open,\n });\n\n const context = useMemo(\n () => ({ ...state, anchor, layoutShift }),\n [state, anchor, layoutShift],\n );\n\n const values = useMemo<\n [\n [typeof DrawerContext, DrawerContextValue],\n [\n typeof DrawerDialogContext,\n ContextValue<DrawerDialogProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [DrawerContext, context],\n [DrawerDialogContext, { classNames }],\n ],\n [context, classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerStateVars, {\n anchor,\n layoutShift,\n isOpen,\n }),\n [anchor, layoutShift, isOpen],\n );\n\n const children = useMemo(\n () => callRenderProps(childrenProp, state),\n [childrenProp, state],\n );\n\n return (\n <Provider values={values}>\n <div\n {...mergeProps(overlayProps, focusWithinProps)}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n <Tabs classNames={classNames?.tabs}>{children}</Tabs>\n </div>\n </Provider>\n );\n}\n\nexport function DrawerTabList<T extends object>(props: DrawerTabListProps<T>) {\n props = useDefaultProps(props, 'DrawerTabList');\n\n const { children, classNames: classNamesProp, variant = 'fill' } = props;\n const { anchor } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n const values = useMemo<\n [\n [typeof TooltipContext, ContextValue<TooltipProps, HTMLDivElement>],\n [\n typeof TooltipTargetContext,\n ContextValue<TooltipTargetProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [TooltipContext, { placement: anchor === 'left' ? 'right' : 'left' }],\n [TooltipTargetContext, { focusable: false, relative: 'parent' }],\n ],\n [anchor],\n );\n\n return (\n <Provider values={values}>\n <TabList<T>\n classNames={classNames?.tabs}\n align='center'\n anchor={anchor === 'left' ? 'start' : 'end'}\n orientation='vertical'\n variant={variant}\n >\n {children}\n </TabList>\n </Provider>\n );\n}\n\nexport function DrawerTab(props: DrawerTabProps) {\n props = useDefaultProps(props, 'DrawerTab');\n\n const { children: childrenProp, classNames: classNamesProp, ...rest } = props;\n const { isOpen, open, toggle } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Must bind to press start (instead of later press events) due to Tab changing selected state on start\n const handlePressStart = useCallback(\n (event: PressEvent) => {\n const { selected } = event.target.parentElement?.dataset ?? {};\n\n if (toBoolean(selected)) {\n toggle();\n } else {\n open();\n }\n },\n [open, toggle],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) =>\n callRenderProps(childrenProp, { ...renderProps, isOpen }),\n [childrenProp, isOpen],\n );\n\n return (\n <Tab\n {...rest}\n classNames={classNames?.tabs}\n onPressStart={handlePressStart}\n >\n {children}\n </Tab>\n );\n}\n\nconst defaultMapping: DrawerMapping = {\n heading: {\n child: headings.v4,\n parent: headings.v3,\n },\n back: {\n variant: 'icon',\n },\n close: {\n variant: 'icon',\n },\n};\n\nexport const DrawerDialogContext =\n createContext<ContextValue<DrawerDialogProps, HTMLDivElement>>(null);\n\nexport const DrawerDialog = forwardRef(function DrawerDialog(\n props: DrawerDialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DrawerDialogContext);\n\n const {\n children,\n classNames: classNamesProp,\n mapping: mappingProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props;\n\n const { close } = useContext(DrawerContext);\n const [backRef, hasBack] = useSlot();\n const [titleRef, hasTitle] = useSlot();\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {\n header: {\n title: hasBack ? mapping.heading.child : mapping.heading.parent,\n },\n }),\n [theme.Drawer, classNamesProp, hasBack, mapping],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerDialogStateVars, {\n isChild: !!hasBack,\n }),\n [hasBack],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<ButtonProps, HTMLButtonElement>,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header?.header,\n values: [\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n back: {\n ...mapping.back,\n ref: backRef,\n classNames: classNames?.header?.back,\n },\n close: {\n ...mapping.close,\n classNames: classNames?.header?.close,\n onPress: close,\n },\n },\n },\n ],\n [\n AriaHeadingContext,\n {\n slots: {\n title: {\n ref: titleRef,\n className: classNames?.header?.title,\n },\n },\n },\n ],\n ],\n },\n content: { className: classNames?.content },\n footer: { as: 'footer', className: classNames?.footer },\n },\n },\n ],\n ],\n [\n classNames?.header?.header,\n classNames?.header?.back,\n classNames?.header?.close,\n classNames?.header?.title,\n classNames?.content,\n classNames?.footer,\n backRef,\n close,\n mapping,\n titleRef,\n ],\n );\n\n // biome-ignore lint/complexity/useSimplifiedLogicExpression: intentional\n if (!ariaLabel && !ariaLabelledBy && !hasTitle) {\n console.warn(\n 'If a Drawer does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.',\n );\n }\n\n return (\n <Provider values={values}>\n <div\n {...rest}\n className={classNames?.dialog?.container}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={classNames?.dialog?.dialog}>{children}</div>\n </div>\n </Provider>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/drawer/drawer.tsx"],"names":["isOpen","DrawerDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuEA,IAAM,gBAAgB,aAAkC,CAAA;AAAA,EACtD,MAAQ,EAAA,OAAA;AAAA,EACR,WAAa,EAAA,KAAA;AAAA,EACb,MAAQ,EAAA,KAAA;AAAA,EACR,KAAO,EAAA,IAAA;AAAA,EACP,IAAM,EAAA,IAAA;AAAA,EACN,OAAS,EAAA,IAAA;AAAA,EACT,MAAQ,EAAA;AACV,CAAC,CAAA;AAEM,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAQ,KAAA,GAAA,eAAA,CAAgB,OAAO,QAAQ,CAAA;AAEvC,EAAM,MAAA;AAAA,IACJ,QAAU,EAAA,YAAA;AAAA,IACV,UAAY,EAAA,cAAA;AAAA,IACZ,MAAS,GAAA,OAAA;AAAA,IACT,WAAc,GAAA,KAAA;AAAA,IACd,WAAc,GAAA,KAAA;AAAA,IACd,iBAAoB,GAAA,KAAA;AAAA,IACpB,aAAgB,GAAA,IAAA;AAAA,IAChB,yBAA4B,GAAA,KAAA;AAAA,IAC5B,MAAQ,EAAA,UAAA;AAAA,IACR,YAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,gBAAkB,EAAA,KAAA,CAAM,QAAQ,cAAc,CAAA;AAAA,IACpE,CAAC,KAAM,CAAA,MAAA,EAAQ,cAAc;AAAA,GAC/B;AAGA,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAACA,OAAoB,KAAA;AACnB,MAAA,IAAI,CAACA,OAAQ,EAAA;AACX,QAAM,MAAA,OAAA,GAAU,KAAQ,GAAA,IAAA,GAAO,QAAS,CAAA,aAAA;AAExC,QAAA,IACE,WACA,MAAU,IAAA,OAAA,IACV,OAAO,OAAA,CAAQ,SAAS,UACxB,EAAA;AACA,UAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;AACf;AAGF,MAAA,YAAA,GAAeA,OAAM,CAAA;AAAA,KACvB;AAAA,IACA,CAAC,OAAO,YAAY;AAAA,GACtB;AAEA,EAAA,MAAM,QAAQ,sBAAuB,CAAA;AAAA,IACnC,WAAA;AAAA,IACA,MAAQ,EAAA,UAAA;AAAA,IACR,YAAc,EAAA;AAAA,GACf,CAAA;AAED,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAO,EAAA,IAAA,EAAS,GAAA,KAAA;AAChC,EAAM,MAAA,GAAA,GAAM,OAAuB,IAAI,CAAA;AAEvC,EAAM,MAAA,EAAE,cAAiB,GAAA,UAAA;AAAA,IACvB;AAAA,MACE,MAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,yBAAA;AAAA,MACA,OAAS,EAAA;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAIA,EAAM,MAAA,EAAE,gBAAiB,EAAA,GAAI,cAAe,CAAA;AAAA,IAC1C,aAAe,EAAA;AAAA,GAChB,CAAA;AAED,EAAA,MAAM,OAAU,GAAA,OAAA;AAAA,IACd,OAAO,EAAE,GAAG,KAAA,EAAO,QAAQ,WAAY,EAAA,CAAA;AAAA,IACvC,CAAC,KAAO,EAAA,MAAA,EAAQ,WAAW;AAAA,GAC7B;AAEA,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IASb,MAAM;AAAA,MACJ,CAAC,eAAe,OAAO,CAAA;AAAA,MACvB,CAAC,mBAAA,EAAqB,EAAE,UAAA,EAAY;AAAA,KACtC;AAAA,IACA,CAAC,SAAS,UAAU;AAAA,GACtB;AAEA,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MACE,WAAW,eAAiB,EAAA;AAAA,MAC1B,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,CAAC,MAAQ,EAAA,WAAA,EAAa,MAAM;AAAA,GAC9B;AAEA,EAAA,MAAM,QAAW,GAAA,OAAA;AAAA,IACf,MAAM,eAAgB,CAAA,YAAA,EAAc,KAAK,CAAA;AAAA,IACzC,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EACE,uBAAA,GAAA,CAAC,YAAS,MACR,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAW,CAAA,YAAA,EAAc,gBAAgB,CAAA;AAAA,MAC7C,GAAA;AAAA,MACA,WAAW,UAAY,EAAA,SAAA;AAAA,MACvB,KAAA;AAAA,MAEA,8BAAC,IAAK,EAAA,EAAA,UAAA,EAAY,YAAY,IAAO,EAAA,GAAG,MACrC,QACH,EAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;AAEO,SAAS,cAAgC,KAA8B,EAAA;AAC5E,EAAQ,KAAA,GAAA,eAAA,CAAgB,OAAO,eAAe,CAAA;AAE9C,EAAA,MAAM,EAAE,QAAU,EAAA,UAAA,EAAY,cAAgB,EAAA,OAAA,GAAU,QAAW,GAAA,KAAA;AACnE,EAAA,MAAM,EAAE,MAAA,EAAW,GAAA,UAAA,CAAW,aAAa,CAAA;AAC3C,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,gBAAkB,EAAA,KAAA,CAAM,QAAQ,cAAc,CAAA;AAAA,IACpE,CAAC,KAAM,CAAA,MAAA,EAAQ,cAAc;AAAA,GAC/B;AAEA,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IASb,MAAM;AAAA,MACJ,CAAC,gBAAgB,EAAE,SAAA,EAAW,WAAW,MAAS,GAAA,OAAA,GAAU,QAAQ,CAAA;AAAA,MACpE,CAAC,oBAAsB,EAAA,EAAE,WAAW,KAAO,EAAA,QAAA,EAAU,UAAU;AAAA,KACjE;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EACE,uBAAA,GAAA,CAAC,YAAS,MACR,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,YAAY,UAAY,EAAA,IAAA;AAAA,MACxB,KAAM,EAAA,QAAA;AAAA,MACN,MAAA,EAAQ,MAAW,KAAA,MAAA,GAAS,OAAU,GAAA,KAAA;AAAA,MACtC,WAAY,EAAA,UAAA;AAAA,MACZ,OAAA;AAAA,MAEC;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ;AAEO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAQ,KAAA,GAAA,eAAA,CAAgB,OAAO,WAAW,CAAA;AAE1C,EAAA,MAAM,EAAE,QAAU,EAAA,YAAA,EAAc,YAAY,cAAgB,EAAA,GAAG,MAAS,GAAA,KAAA;AACxE,EAAA,MAAM,EAAE,MAAQ,EAAA,IAAA,EAAM,MAAO,EAAA,GAAI,WAAW,aAAa,CAAA;AACzD,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,gBAAkB,EAAA,KAAA,CAAM,QAAQ,cAAc,CAAA;AAAA,IACpE,CAAC,KAAM,CAAA,MAAA,EAAQ,cAAc;AAAA,GAC/B;AAGA,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,KAAsB,KAAA;AACrB,MAAA,MAAM,EAAE,QAAS,EAAA,GAAI,MAAM,MAAO,CAAA,aAAA,EAAe,WAAW,EAAC;AAE7D,MAAI,IAAA,SAAA,CAAU,QAAQ,CAAG,EAAA;AACvB,QAAO,MAAA,EAAA;AAAA,OACF,MAAA;AACL,QAAK,IAAA,EAAA;AAAA;AACP,KACF;AAAA,IACA,CAAC,MAAM,MAAM;AAAA,GACf;AAEA,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,CAAC,gBACC,eAAgB,CAAA,YAAA,EAAc,EAAE,GAAG,WAAA,EAAa,QAAQ,CAAA;AAAA,IAC1D,CAAC,cAAc,MAAM;AAAA,GACvB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,YAAY,UAAY,EAAA,IAAA;AAAA,MACxB,YAAc,EAAA,gBAAA;AAAA,MAEb;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,cAAgC,GAAA;AAAA,EACpC,OAAS,EAAA;AAAA,IACP,OAAO,QAAS,CAAA,EAAA;AAAA,IAChB,QAAQ,QAAS,CAAA;AAAA,GACnB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA;AAAA,IACL,OAAS,EAAA;AAAA;AAEb,CAAA;AAEa,IAAA,mBAAA,GACX,cAA+D,IAAI;AAE9D,IAAM,YAAe,GAAA,UAAA,CAAW,SAASC,aAAAA,CAC9C,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,mBAAmB,CAAA;AAE9D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA,WAAA;AAAA,IACT,YAAc,EAAA,SAAA;AAAA,IACd,iBAAmB,EAAA,cAAA;AAAA,IACnB,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,EAAE,KAAA,EAAU,GAAA,UAAA,CAAW,aAAa,CAAA;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,OAAO,CAAA,GAAI,OAAQ,EAAA;AACnC,EAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAI,OAAQ,EAAA;AACrC,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,OAAU,GAAA,OAAA;AAAA,IACd,OAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,WAAY,EAAA,CAAA;AAAA,IAC3C,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MACE,eAAA,CAAgB,gBAAkB,EAAA,KAAA,CAAM,QAAQ,cAAgB,EAAA;AAAA,MAC9D,MAAQ,EAAA;AAAA,QACN,OAAO,OAAU,GAAA,OAAA,CAAQ,OAAQ,CAAA,KAAA,GAAQ,QAAQ,OAAQ,CAAA;AAAA;AAC3D,KACD,CAAA;AAAA,IACH,CAAC,KAAA,CAAM,MAAQ,EAAA,cAAA,EAAgB,SAAS,OAAO;AAAA,GACjD;AAEA,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MACE,WAAW,qBAAuB,EAAA;AAAA,MAChC,OAAA,EAAS,CAAC,CAAC;AAAA,KACZ,CAAA;AAAA,IACH,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IAcb,MAAM;AAAA,MACJ;AAAA,QACE,cAAA;AAAA,QACA;AAAA,UACE,KAAO,EAAA;AAAA,YACL,CAAC,YAAY,GAAG,EAAC;AAAA,YACjB,MAAQ,EAAA;AAAA,cACN,EAAI,EAAA,QAAA;AAAA,cACJ,SAAA,EAAW,YAAY,MAAQ,EAAA,MAAA;AAAA,cAC/B,MAAQ,EAAA;AAAA,gBACN;AAAA,kBACE,aAAA;AAAA,kBACA;AAAA,oBACE,KAAO,EAAA;AAAA,sBACL,CAAC,YAAY,GAAG,EAAC;AAAA,sBACjB,IAAM,EAAA;AAAA,wBACJ,GAAG,OAAQ,CAAA,IAAA;AAAA,wBACX,GAAK,EAAA,OAAA;AAAA,wBACL,UAAA,EAAY,YAAY,MAAQ,EAAA;AAAA,uBAClC;AAAA,sBACA,KAAO,EAAA;AAAA,wBACL,GAAG,OAAQ,CAAA,KAAA;AAAA,wBACX,UAAA,EAAY,YAAY,MAAQ,EAAA,KAAA;AAAA,wBAChC,OAAS,EAAA;AAAA;AACX;AACF;AACF,iBACF;AAAA,gBACA;AAAA,kBACE,kBAAA;AAAA,kBACA;AAAA,oBACE,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA;AAAA,wBACL,GAAK,EAAA,QAAA;AAAA,wBACL,SAAA,EAAW,YAAY,MAAQ,EAAA;AAAA;AACjC;AACF;AACF;AACF;AACF,aACF;AAAA,YACA,OAAS,EAAA,EAAE,SAAW,EAAA,UAAA,EAAY,OAAQ,EAAA;AAAA,YAC1C,QAAQ,EAAE,EAAA,EAAI,QAAU,EAAA,SAAA,EAAW,YAAY,MAAO;AAAA;AACxD;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,YAAY,MAAQ,EAAA,MAAA;AAAA,MACpB,YAAY,MAAQ,EAAA,IAAA;AAAA,MACpB,YAAY,MAAQ,EAAA,KAAA;AAAA,MACpB,YAAY,MAAQ,EAAA,KAAA;AAAA,MACpB,UAAY,EAAA,OAAA;AAAA,MACZ,UAAY,EAAA,MAAA;AAAA,MACZ,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAGA,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,cAAA,IAAkB,CAAC,QAAU,EAAA;AAC9C,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA,KACF;AAAA;AAGF,EACE,uBAAA,GAAA,CAAC,YAAS,MACR,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,YAAY,MAAQ,EAAA,SAAA;AAAA,MAC/B,KAAA;AAAA,MACA,YAAY,EAAA,SAAA;AAAA,MACZ,iBAAiB,EAAA,cAAA;AAAA,MAEjB,8BAAC,KAAI,EAAA,EAAA,SAAA,EAAW,UAAY,EAAA,MAAA,EAAQ,QAAS,QAAS,EAAA;AAAA;AAAA,GAE1D,EAAA,CAAA;AAEJ,CAAC","file":"drawer.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { toBoolean } from '@accelint/converters';\nimport { noop } from '@accelint/core';\nimport { useFocusWithin } from '@react-aria/interactions';\nimport { useOverlay } from '@react-aria/overlays';\nimport { useIsSSR } from '@react-aria/ssr';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport type { PressEvent } from '@react-types/shared';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n Provider,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport {\n callRenderProps,\n inlineVars,\n mergeClassNames,\n mergeProps,\n} from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { Tab, TabList, type TabRenderProps, Tabs } from '../tabs';\nimport {\n TooltipContext,\n type TooltipProps,\n TooltipTargetContext,\n type TooltipTargetProps,\n} from '../tooltip';\nimport {\n drawerClassNames,\n drawerDialogStateVars,\n drawerStateVars,\n} from './drawer.css';\nimport type {\n DrawerContextValue,\n DrawerDialogProps,\n DrawerMapping,\n DrawerProps,\n DrawerTabListProps,\n DrawerTabProps,\n} from './types';\n\nconst DrawerContext = createContext<DrawerContextValue>({\n anchor: 'right',\n layoutShift: false,\n isOpen: false,\n close: noop,\n open: noop,\n setOpen: noop,\n toggle: noop,\n});\n\nexport function Drawer(props: DrawerProps) {\n props = useDefaultProps(props, 'Drawer');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n anchor = 'right',\n defaultOpen = false,\n layoutShift = false,\n shouldCloseOnBlur = false,\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n isOpen: isOpenProp,\n onOpenChange,\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Remove focus when Drawer closes\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n const focused = isSSR ? null : document.activeElement;\n\n if (\n focused &&\n 'blur' in focused &&\n typeof focused.blur === 'function'\n ) {\n focused.blur();\n }\n }\n\n onOpenChange?.(isOpen);\n },\n [isSSR, onOpenChange],\n );\n\n const state = useOverlayTriggerState({\n defaultOpen,\n isOpen: isOpenProp,\n onOpenChange: handleOpenChange,\n });\n\n const { isOpen, close, open } = state;\n const ref = useRef<HTMLDivElement>(null);\n\n const { overlayProps } = useOverlay(\n {\n isOpen,\n shouldCloseOnBlur,\n isDismissable,\n isKeyboardDismissDisabled,\n onClose: close,\n },\n ref,\n );\n\n // TODO: it may be desirable to disallow focus within the closed Drawer instead\n // If focus forces the Drawer open\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: open,\n });\n\n const context = useMemo(\n () => ({ ...state, anchor, layoutShift }),\n [state, anchor, layoutShift],\n );\n\n const values = useMemo<\n [\n [typeof DrawerContext, DrawerContextValue],\n [\n typeof DrawerDialogContext,\n ContextValue<DrawerDialogProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [DrawerContext, context],\n [DrawerDialogContext, { classNames }],\n ],\n [context, classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerStateVars, {\n anchor,\n layoutShift,\n isOpen,\n }),\n [anchor, layoutShift, isOpen],\n );\n\n const children = useMemo(\n () => callRenderProps(childrenProp, state),\n [childrenProp, state],\n );\n\n return (\n <Provider values={values}>\n <div\n {...mergeProps(overlayProps, focusWithinProps)}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n <Tabs classNames={classNames?.tabs} {...rest}>\n {children}\n </Tabs>\n </div>\n </Provider>\n );\n}\n\nexport function DrawerTabList<T extends object>(props: DrawerTabListProps<T>) {\n props = useDefaultProps(props, 'DrawerTabList');\n\n const { children, classNames: classNamesProp, variant = 'fill' } = props;\n const { anchor } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n const values = useMemo<\n [\n [typeof TooltipContext, ContextValue<TooltipProps, HTMLDivElement>],\n [\n typeof TooltipTargetContext,\n ContextValue<TooltipTargetProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [TooltipContext, { placement: anchor === 'left' ? 'right' : 'left' }],\n [TooltipTargetContext, { focusable: false, relative: 'parent' }],\n ],\n [anchor],\n );\n\n return (\n <Provider values={values}>\n <TabList<T>\n classNames={classNames?.tabs}\n align='center'\n anchor={anchor === 'left' ? 'start' : 'end'}\n orientation='vertical'\n variant={variant}\n >\n {children}\n </TabList>\n </Provider>\n );\n}\n\nexport function DrawerTab(props: DrawerTabProps) {\n props = useDefaultProps(props, 'DrawerTab');\n\n const { children: childrenProp, classNames: classNamesProp, ...rest } = props;\n const { isOpen, open, toggle } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Must bind to press start (instead of later press events) due to Tab changing selected state on start\n const handlePressStart = useCallback(\n (event: PressEvent) => {\n const { selected } = event.target.parentElement?.dataset ?? {};\n\n if (toBoolean(selected)) {\n toggle();\n } else {\n open();\n }\n },\n [open, toggle],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) =>\n callRenderProps(childrenProp, { ...renderProps, isOpen }),\n [childrenProp, isOpen],\n );\n\n return (\n <Tab\n {...rest}\n classNames={classNames?.tabs}\n onPressStart={handlePressStart}\n >\n {children}\n </Tab>\n );\n}\n\nconst defaultMapping: DrawerMapping = {\n heading: {\n child: headings.v4,\n parent: headings.v3,\n },\n back: {\n variant: 'icon',\n },\n close: {\n variant: 'icon',\n },\n};\n\nexport const DrawerDialogContext =\n createContext<ContextValue<DrawerDialogProps, HTMLDivElement>>(null);\n\nexport const DrawerDialog = forwardRef(function DrawerDialog(\n props: DrawerDialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DrawerDialogContext);\n\n const {\n children,\n classNames: classNamesProp,\n mapping: mappingProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props;\n\n const { close } = useContext(DrawerContext);\n const [backRef, hasBack] = useSlot();\n const [titleRef, hasTitle] = useSlot();\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {\n header: {\n title: hasBack ? mapping.heading.child : mapping.heading.parent,\n },\n }),\n [theme.Drawer, classNamesProp, hasBack, mapping],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerDialogStateVars, {\n isChild: !!hasBack,\n }),\n [hasBack],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<ButtonProps, HTMLButtonElement>,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header?.header,\n values: [\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n back: {\n ...mapping.back,\n ref: backRef,\n classNames: classNames?.header?.back,\n },\n close: {\n ...mapping.close,\n classNames: classNames?.header?.close,\n onPress: close,\n },\n },\n },\n ],\n [\n AriaHeadingContext,\n {\n slots: {\n title: {\n ref: titleRef,\n className: classNames?.header?.title,\n },\n },\n },\n ],\n ],\n },\n content: { className: classNames?.content },\n footer: { as: 'footer', className: classNames?.footer },\n },\n },\n ],\n ],\n [\n classNames?.header?.header,\n classNames?.header?.back,\n classNames?.header?.close,\n classNames?.header?.title,\n classNames?.content,\n classNames?.footer,\n backRef,\n close,\n mapping,\n titleRef,\n ],\n );\n\n // biome-ignore lint/complexity/useSimplifiedLogicExpression: intentional\n if (!ariaLabel && !ariaLabelledBy && !hasTitle) {\n console.warn(\n 'If a Drawer does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.',\n );\n }\n\n return (\n <Provider values={values}>\n <div\n {...rest}\n className={classNames?.dialog?.container}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={classNames?.dialog?.dialog}>{children}</div>\n </div>\n </Provider>\n );\n});\n"]}