@accelint/design-toolkit 2.6.0 → 3.0.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 (146) hide show
  1. package/dist/components/accordion/index.d.ts +42 -0
  2. package/dist/components/accordion/index.js.map +1 -1
  3. package/dist/components/accordion/styles.js +1 -1
  4. package/dist/components/accordion/styles.js.map +1 -1
  5. package/dist/components/avatar/index.d.ts +29 -0
  6. package/dist/components/avatar/index.js.map +1 -1
  7. package/dist/components/badge/index.d.ts +24 -0
  8. package/dist/components/badge/index.js.map +1 -1
  9. package/dist/components/button/index.d.ts +104 -0
  10. package/dist/components/button/index.js +1 -1
  11. package/dist/components/button/index.js.map +1 -1
  12. package/dist/components/button/styles.d.ts +28 -106
  13. package/dist/components/button/styles.js +1 -1
  14. package/dist/components/button/styles.js.map +1 -1
  15. package/dist/components/button/types.d.ts +6 -4
  16. package/dist/components/checkbox/index.d.ts +33 -0
  17. package/dist/components/checkbox/index.js.map +1 -1
  18. package/dist/components/checkbox/styles.d.ts +3 -3
  19. package/dist/components/checkbox/styles.js +1 -1
  20. package/dist/components/checkbox/styles.js.map +1 -1
  21. package/dist/components/chip/index.d.ts +34 -0
  22. package/dist/components/chip/index.js.map +1 -1
  23. package/dist/components/chip/styles.js +1 -1
  24. package/dist/components/chip/styles.js.map +1 -1
  25. package/dist/components/classification-badge/index.d.ts +15 -0
  26. package/dist/components/classification-badge/index.js.map +1 -1
  27. package/dist/components/classification-banner/index.d.ts +11 -0
  28. package/dist/components/classification-banner/index.js.map +1 -1
  29. package/dist/components/color-picker/styles.js +1 -1
  30. package/dist/components/color-picker/styles.js.map +1 -1
  31. package/dist/components/combobox-field/index.d.ts +1 -0
  32. package/dist/components/combobox-field/styles.d.ts +3 -3
  33. package/dist/components/combobox-field/styles.js +1 -1
  34. package/dist/components/combobox-field/styles.js.map +1 -1
  35. package/dist/components/combobox-field/types.d.ts +1 -0
  36. package/dist/components/date-field/index.d.ts +44 -0
  37. package/dist/components/date-field/index.js.map +1 -1
  38. package/dist/components/date-field/styles.d.ts +3 -3
  39. package/dist/components/date-field/styles.js +1 -1
  40. package/dist/components/date-field/styles.js.map +1 -1
  41. package/dist/components/dialog/index.d.ts +26 -4
  42. package/dist/components/dialog/index.js +1 -1
  43. package/dist/components/dialog/index.js.map +1 -1
  44. package/dist/components/drawer/events.d.ts +8 -0
  45. package/dist/components/drawer/events.js +2 -0
  46. package/dist/components/drawer/events.js.map +1 -0
  47. package/dist/components/drawer/index.d.ts +89 -43
  48. package/dist/components/drawer/index.js +1 -1
  49. package/dist/components/drawer/index.js.map +1 -1
  50. package/dist/components/drawer/styles.d.ts +50 -16
  51. package/dist/components/drawer/styles.js +1 -1
  52. package/dist/components/drawer/styles.js.map +1 -1
  53. package/dist/components/drawer/types.d.ts +154 -238
  54. package/dist/components/drawer/types.js +1 -1
  55. package/dist/components/drawer/types.js.map +1 -1
  56. package/dist/components/hotkey/index.d.ts +32 -1
  57. package/dist/components/hotkey/index.js +1 -1
  58. package/dist/components/hotkey/index.js.map +1 -1
  59. package/dist/components/icon/index.d.ts +29 -0
  60. package/dist/components/icon/index.js.map +1 -1
  61. package/dist/components/input/index.d.ts +19 -0
  62. package/dist/components/input/index.js +1 -1
  63. package/dist/components/input/index.js.map +1 -1
  64. package/dist/components/input/styles.js +1 -1
  65. package/dist/components/input/styles.js.map +1 -1
  66. package/dist/components/input/types.d.ts +1 -0
  67. package/dist/components/label/index.d.ts +19 -0
  68. package/dist/components/label/index.js.map +1 -1
  69. package/dist/components/menu/index.d.ts +69 -7
  70. package/dist/components/menu/index.js +1 -1
  71. package/dist/components/menu/index.js.map +1 -1
  72. package/dist/components/menu/styles.d.ts +10 -37
  73. package/dist/components/menu/styles.js +1 -1
  74. package/dist/components/menu/styles.js.map +1 -1
  75. package/dist/components/menu/types.d.ts +11 -16
  76. package/dist/components/options/index.d.ts +41 -0
  77. package/dist/components/options/index.js.map +1 -1
  78. package/dist/components/options/styles.d.ts +3 -3
  79. package/dist/components/options/styles.js +1 -1
  80. package/dist/components/options/styles.js.map +1 -1
  81. package/dist/components/popover/index.d.ts +36 -2
  82. package/dist/components/popover/index.js +1 -1
  83. package/dist/components/popover/index.js.map +1 -1
  84. package/dist/components/query-builder/index.d.ts +24 -0
  85. package/dist/components/query-builder/index.js.map +1 -1
  86. package/dist/components/radio/index.d.ts +31 -0
  87. package/dist/components/radio/index.js.map +1 -1
  88. package/dist/components/radio/styles.d.ts +3 -3
  89. package/dist/components/radio/styles.js +1 -1
  90. package/dist/components/radio/styles.js.map +1 -1
  91. package/dist/components/search-field/styles.js +1 -1
  92. package/dist/components/search-field/styles.js.map +1 -1
  93. package/dist/components/search-field/types.d.ts +1 -0
  94. package/dist/components/select-field/index.d.ts +44 -0
  95. package/dist/components/select-field/index.js +1 -1
  96. package/dist/components/select-field/index.js.map +1 -1
  97. package/dist/components/select-field/styles.d.ts +3 -3
  98. package/dist/components/select-field/styles.js +1 -1
  99. package/dist/components/select-field/styles.js.map +1 -1
  100. package/dist/components/select-field/types.d.ts +1 -0
  101. package/dist/components/slider/index.d.ts +36 -2
  102. package/dist/components/slider/index.js +1 -1
  103. package/dist/components/slider/index.js.map +1 -1
  104. package/dist/components/switch/index.d.ts +36 -0
  105. package/dist/components/switch/index.js +1 -1
  106. package/dist/components/switch/index.js.map +1 -1
  107. package/dist/components/switch/styles.d.ts +23 -21
  108. package/dist/components/switch/styles.js +1 -1
  109. package/dist/components/switch/styles.js.map +1 -1
  110. package/dist/components/switch/types.d.ts +1 -0
  111. package/dist/components/tabs/index.d.ts +46 -0
  112. package/dist/components/tabs/index.js.map +1 -1
  113. package/dist/components/text-area-field/index.d.ts +20 -0
  114. package/dist/components/text-area-field/index.js.map +1 -1
  115. package/dist/components/text-area-field/styles.d.ts +3 -3
  116. package/dist/components/text-area-field/styles.js +1 -1
  117. package/dist/components/text-area-field/styles.js.map +1 -1
  118. package/dist/components/text-field/index.d.ts +62 -0
  119. package/dist/components/text-field/index.js.map +1 -1
  120. package/dist/components/text-field/styles.d.ts +3 -3
  121. package/dist/components/text-field/types.d.ts +1 -0
  122. package/dist/components/tooltip/index.d.ts +42 -0
  123. package/dist/components/tooltip/index.js.map +1 -1
  124. package/dist/components/view-stack/events.d.ts +9 -0
  125. package/dist/components/view-stack/events.js +2 -0
  126. package/dist/components/view-stack/events.js.map +1 -0
  127. package/dist/components/view-stack/index.d.ts +13 -10
  128. package/dist/components/view-stack/index.js +1 -1
  129. package/dist/components/view-stack/index.js.map +1 -1
  130. package/dist/components/view-stack/types.d.ts +13 -9
  131. package/dist/index.d.ts +15 -15
  132. package/dist/index.js +1 -1
  133. package/dist/lib/types.d.ts +6 -2
  134. package/dist/metafile-esm.json +1 -1
  135. package/dist/styles.css +922 -609
  136. package/dist/variants/variants.css +6 -5
  137. package/package.json +5 -5
  138. package/dist/components/box/index.d.ts +0 -19
  139. package/dist/components/box/index.js +0 -2
  140. package/dist/components/box/index.js.map +0 -1
  141. package/dist/components/drawer/context.d.ts +0 -13
  142. package/dist/components/drawer/context.js +0 -2
  143. package/dist/components/drawer/context.js.map +0 -1
  144. package/dist/components/drawer/state.d.ts +0 -26
  145. package/dist/components/drawer/state.js +0 -2
  146. package/dist/components/drawer/state.js.map +0 -1
@@ -2,6 +2,7 @@ import { RefAttributes } from 'react';
2
2
  import { SelectProps, VirtualizerProps, ListLayoutOptions, FieldErrorProps } from 'react-aria-components';
3
3
  import { ButtonProps } from '../button/types.js';
4
4
  import { LabelProps } from '../label/types.js';
5
+ import '../../lib/types.js';
5
6
  import 'tailwind-variants';
6
7
  import '../button/styles.js';
7
8
  import 'tailwind-merge';
@@ -5,7 +5,7 @@ interface SliderProps extends Omit<SliderProps$1, 'value' | 'defaultValue' | 'sh
5
5
  className?: string;
6
6
  showInput?: boolean;
7
7
  showLabel?: boolean;
8
- layout: 'stacked' | 'inline';
8
+ layout?: 'stacked' | 'inline';
9
9
  value?: number;
10
10
  defaultValue?: number;
11
11
  rangeValue?: [number, number];
@@ -13,11 +13,45 @@ interface SliderProps extends Omit<SliderProps$1, 'value' | 'defaultValue' | 'sh
13
13
  isRange?: boolean;
14
14
  label: string;
15
15
  }
16
+ /**
17
+ * Slider - An interactive range input component for numeric value selection
18
+ *
19
+ * Provides accessible slider functionality with optional input field integration,
20
+ * flexible layouts, and comprehensive keyboard and mouse interaction support.
21
+ * Perfect for settings, filters, or any numeric input requiring visual feedback.
22
+ *
23
+ * @example
24
+ * // Basic slider
25
+ * <Slider label="Volume" defaultValue={50} />
26
+ */
16
27
  declare const Slider: ({ children, className, showInput, showLabel, layout, value, defaultValue, label, defaultRangeValue, rangeValue, minValue, maxValue, isRange, orientation, ...props }: SliderProps) => react_jsx_runtime.JSX.Element;
17
28
  type RangeSliderProps = Omit<SliderProps, 'isRange' | 'defaultRangeValue' | 'rangeValue' | 'defaultValue' | 'value'> & {
18
- defaultValue: SliderProps['defaultRangeValue'];
29
+ defaultValue?: SliderProps['defaultRangeValue'];
19
30
  value: SliderProps['rangeValue'];
20
31
  };
32
+ /**
33
+ * RangeSlider - A dual-handle slider component for selecting a range of numeric values
34
+ *
35
+ * Extends the base Slider component to provide range selection functionality with two thumbs,
36
+ * allowing users to define both minimum and maximum values within a specified range.
37
+ * Maintains all accessibility features and layout options of the base slider while
38
+ * providing intuitive range selection controls.
39
+ *
40
+ * @example
41
+ * // Basic range slider
42
+ * <RangeSlider label="Price Range" defaultValue={[20, 80]} minValue={0} maxValue={100} />
43
+ *
44
+ * @example
45
+ * // Controlled range slider with input fields
46
+ * <RangeSlider
47
+ * label="Temperature Range"
48
+ * value={tempRange}
49
+ * onChange={setTempRange}
50
+ * showInput
51
+ * minValue={-10}
52
+ * maxValue={40}
53
+ * />
54
+ */
21
55
  declare const RangeSlider: ({ defaultValue, value, ...props }: RangeSliderProps) => react_jsx_runtime.JSX.Element;
22
56
 
23
57
  export { RangeSlider, type RangeSliderProps, Slider, type SliderProps };
@@ -1,2 +1,2 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {cn}from'./../../lib/utils.js';import'client-only';import {cva}from'class-variance-authority';import {useContext}from'react';import {Slider,Label,SliderTrack,SliderThumb,Text,SliderStateContext,useSlottedContext,LabelContext,NumberField,Input}from'react-aria-components';import {Tooltip}from'../tooltip/index.js';const D=cva("grid gap-s",{variants:{layout:{stacked:"",inline:""},orientation:{vertical:"h-full w-fit",horizontal:"h-xl w-full"}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_auto]"},{layout:"inline",orientation:"horizontal",className:"grid-cols-[auto_auto_1fr_auto_auto] grid-rows-1 items-center"},{layout:"stacked",orientation:"vertical",className:"grid-cols-[auto_auto_auto] grid-rows-[auto_auto_1fr_auto]"},{layout:"inline",orientation:"vertical",className:"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_1fr_auto]"}]}),M=cva("font-display text-body-m text-default-dark",{variants:{orientation:{horizontal:"",vertical:"col-start-1 row-start-4"},layout:{inline:"",stacked:""}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"col-start-1 row-start-3"},{layout:"inline",orientation:"horizontal",className:"order-2"},{layout:"stacked",orientation:"vertical",className:"self-end justify-self-end"},{layout:"inline",orientation:"vertical",className:"justify-self-center"}]}),q=cva("font-display text-body-m text-default-dark",{variants:{orientation:{horizontal:"",vertical:"col-start-1 row-start-2"},layout:{inline:"",stacked:""}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"col-start-3 row-start-3 justify-self-end"},{layout:"inline",orientation:"horizontal",className:"order-4"},{layout:"stacked",orientation:"vertical",className:"justify-self-end"}]}),E=cva("relative",{variants:{orientation:{horizontal:"h-s w-full",vertical:"h-full w-s"},layout:{inline:"",stacked:""}},compoundVariants:[{orientation:"horizontal",layout:"stacked",className:"col-span-3 row-start-2"},{orientation:"horizontal",layout:"inline",className:"order-3"},{orientation:"vertical",layout:"stacked",className:"col-start-2 row-span-3 row-start-2"},{orientation:"vertical",layout:"inline",className:"col-start-1 row-start-3 justify-self-center"}]}),G=cva("flex gap-s",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col-reverse"},layout:{inline:"order-5",stacked:"col-start-3 row-start-1"}},compoundVariants:[{layout:"inline",orientation:"horizontal",className:"order-5"},{layout:"inline",orientation:"vertical",className:"col-span-3 col-start-1"},{layout:"stacked",orientation:"vertical",className:"row-start-4"}]}),H=cva("text-default-light",{variants:{orientation:{horizontal:"",vertical:""},layout:{inline:"order-1",stacked:"col-start-1"}},compoundVariants:[{layout:"stacked",orientation:"vertical",className:"col-span-2"},{layout:"inline",orientation:"vertical",className:"col-span-3"}]}),J=cva("h-m w-m rounded-full bg-highlight-bold outline-highlight-bold/40 hover:outline-4 focus:outline-4",{variants:{orientation:{horizontal:"translate-y-[50%]",vertical:"translate-x-[40%]"}}}),K=cva("absolute rounded-full bg-default-light/40",{variants:{orientation:{horizontal:"top-[50%] h-xxs w-full translate-y-[50%]",vertical:"left-[50%] h-full w-xxs "}}}),Q=cva("absolute rounded-full bg-highlight",{variants:{orientation:{horizontal:"top-1/2 h-xxs translate-y-1/2",vertical:"left-1/2 w-xxs"}}}),U=({children:s,className:i,showInput:o=false,showLabel:d=true,layout:l="stacked",value:m,defaultValue:N,label:k,defaultRangeValue:w,rangeValue:S,minValue:p=0,maxValue:g=100,isRange:v=false,orientation:t="horizontal",...z})=>{const T=v?S:m,_=v?w:N;return jsxs(Slider,{className:cn(D({orientation:t,layout:l})),minValue:p,maxValue:g,orientation:t,value:T,defaultValue:_,...z,children:[d&&jsx(Label,{className:H({orientation:t,layout:l}),children:k}),o&&jsx("div",{className:G({orientation:t,layout:l}),children:jsx(W,{})}),jsx(SliderTrack,{className:E({layout:l,orientation:t}),children:({state:r})=>{const n=r.getThumbPercent(0),P=r.getThumbPercent(1)||n,y=`${(r.values.length===2?P-n:n)*100}%`,b=r.values.length===2?`${Math.floor(n*100)}%`:"0";return jsxs(Fragment,{children:[jsx("div",{className:K({orientation:t})}),r.values.map((X,u)=>jsxs(Fragment,{children:[jsx("div",{className:Q({orientation:t}),style:t==="horizontal"?{left:b,width:y}:{bottom:b,height:y}},`slider-${u===0?"min":"max"}`),jsx(SliderThumb,{index:u,className:J({orientation:t}),children:!o&&jsxs(Tooltip,{children:[jsx(Tooltip.Trigger,{children:jsx("div",{className:"size-full"})}),jsx(Tooltip.Body,{placement:"top",children:r.getThumbValue(u)})]})},`slider-thumb-${u===0?"min":"max"}`)]}))]})}}),jsx(Text,{slot:"min",className:M({layout:l,orientation:t}),children:p}),jsx(Text,{slot:"max",className:q({layout:l,orientation:t}),children:g})]})},oa=({defaultValue:s,value:i,...o})=>jsx(U,{...o,isRange:true,defaultRangeValue:s,rangeValue:i});function W({className:s}){const i=useContext(SliderStateContext),o=useSlottedContext(LabelContext);return jsx(Fragment,{children:i?.values.map((d,l)=>jsx(NumberField,{"aria-labelledby":o?.id,value:d,onChange:m=>i.setThumbValue(0,m),children:jsx(Input,{className:cn("w-[50px] rounded-medium border border-interactive px-s py-xs font-display text-body-m text-default-light",s)})},`number-field-${l===0?"min":"max"}`))})}export{oa as RangeSlider,U as Slider};//# sourceMappingURL=index.js.map
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {cn}from'./../../lib/utils.js';import'client-only';import {cva}from'class-variance-authority';import {useContext}from'react';import {Slider,Label,SliderTrack,SliderThumb,Text,SliderStateContext,useSlottedContext,LabelContext,NumberField,Input}from'react-aria-components';import {Tooltip}from'../tooltip/index.js';const D=cva("grid gap-s",{variants:{layout:{stacked:"",inline:""},orientation:{vertical:"h-full w-fit",horizontal:"h-xl w-full"}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_auto]"},{layout:"inline",orientation:"horizontal",className:"grid-cols-[auto_auto_1fr_auto_auto] grid-rows-1 items-center"},{layout:"stacked",orientation:"vertical",className:"grid-cols-[auto_auto_auto] grid-rows-[auto_auto_1fr_auto]"},{layout:"inline",orientation:"vertical",className:"grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_1fr_auto]"}]}),M=cva("font-display text-body-m text-default-dark",{variants:{orientation:{horizontal:"",vertical:"col-start-1 row-start-4"},layout:{inline:"",stacked:""}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"col-start-1 row-start-3"},{layout:"inline",orientation:"horizontal",className:"order-2"},{layout:"stacked",orientation:"vertical",className:"self-end justify-self-end"},{layout:"inline",orientation:"vertical",className:"justify-self-center"}]}),q=cva("font-display text-body-m text-default-dark",{variants:{orientation:{horizontal:"",vertical:"col-start-1 row-start-2"},layout:{inline:"",stacked:""}},compoundVariants:[{layout:"stacked",orientation:"horizontal",className:"col-start-3 row-start-3 justify-self-end"},{layout:"inline",orientation:"horizontal",className:"order-4"},{layout:"stacked",orientation:"vertical",className:"justify-self-end"}]}),E=cva("relative",{variants:{orientation:{horizontal:"h-s w-full",vertical:"h-full w-s"},layout:{inline:"",stacked:""}},compoundVariants:[{orientation:"horizontal",layout:"stacked",className:"col-span-3 row-start-2"},{orientation:"horizontal",layout:"inline",className:"order-3"},{orientation:"vertical",layout:"stacked",className:"col-start-2 row-span-3 row-start-2"},{orientation:"vertical",layout:"inline",className:"col-start-1 row-start-3 justify-self-center"}]}),G=cva("flex gap-s",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col-reverse"},layout:{inline:"order-5",stacked:"col-start-3 row-start-1"}},compoundVariants:[{layout:"inline",orientation:"horizontal",className:"order-5"},{layout:"inline",orientation:"vertical",className:"col-span-3 col-start-1"},{layout:"stacked",orientation:"vertical",className:"row-start-4"}]}),H=cva("text-default-light",{variants:{orientation:{horizontal:"",vertical:""},layout:{inline:"order-1",stacked:"col-start-1"}},compoundVariants:[{layout:"stacked",orientation:"vertical",className:"col-span-2"},{layout:"inline",orientation:"vertical",className:"col-span-3"}]}),J=cva("h-m w-m rounded-full bg-highlight-bold outline-highlight-bold/40 hover:outline-4 focus-visible:outline-4",{variants:{orientation:{horizontal:"translate-y-[50%]",vertical:"translate-x-[40%]"}}}),K=cva("absolute rounded-full bg-default-light/40",{variants:{orientation:{horizontal:"top-[50%] h-xxs w-full translate-y-[50%]",vertical:"left-[50%] h-full w-xxs "}}}),Q=cva("absolute rounded-full bg-highlight",{variants:{orientation:{horizontal:"top-1/2 h-xxs translate-y-1/2",vertical:"left-1/2 w-xxs"}}}),U=({children:s,className:i,showInput:o=false,showLabel:d=true,layout:l="stacked",value:m,defaultValue:N,label:k,defaultRangeValue:w,rangeValue:S,minValue:p=0,maxValue:g=100,isRange:v=false,orientation:t="horizontal",...z})=>{const T=v?S:m,_=v?w:N;return jsxs(Slider,{className:cn(D({orientation:t,layout:l})),minValue:p,maxValue:g,orientation:t,value:T,defaultValue:_,...z,children:[d&&jsx(Label,{className:H({orientation:t,layout:l}),children:k}),o&&jsx("div",{className:G({orientation:t,layout:l}),children:jsx(W,{})}),jsx(SliderTrack,{className:E({layout:l,orientation:t}),children:({state:r})=>{const n=r.getThumbPercent(0),P=r.getThumbPercent(1)||n,y=`${(r.values.length===2?P-n:n)*100}%`,b=r.values.length===2?`${Math.floor(n*100)}%`:"0";return jsxs(Fragment,{children:[jsx("div",{className:K({orientation:t})}),r.values.map((X,u)=>jsxs(Fragment,{children:[jsx("div",{className:Q({orientation:t}),style:t==="horizontal"?{left:b,width:y}:{bottom:b,height:y}},`slider-${u===0?"min":"max"}`),jsx(SliderThumb,{index:u,className:J({orientation:t}),children:!o&&jsxs(Tooltip,{children:[jsx(Tooltip.Trigger,{children:jsx("div",{className:"size-full outline-none"})}),jsx(Tooltip.Body,{placement:"top",children:r.getThumbValue(u)})]})},`slider-thumb-${u===0?"min":"max"}`)]}))]})}}),jsx(Text,{slot:"min",className:M({layout:l,orientation:t}),children:p}),jsx(Text,{slot:"max",className:q({layout:l,orientation:t}),children:g})]})},oa=({defaultValue:s,value:i,...o})=>jsx(U,{...o,isRange:true,defaultRangeValue:s,rangeValue:i});function W({className:s}){const i=useContext(SliderStateContext),o=useSlottedContext(LabelContext);return jsx(Fragment,{children:i?.values.map((d,l)=>jsx(NumberField,{"aria-labelledby":o?.id,value:d,onChange:m=>i.setThumbValue(0,m),children:jsx(Input,{className:cn("w-[50px] rounded-medium border border-interactive px-s py-xs font-display text-body-m text-default-light",s)})},`number-field-${l===0?"min":"max"}`))})}export{oa as RangeSlider,U as Slider};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/slider/index.tsx"],"names":["e","labelVariants","cva","value","defaultRangeValue","rangeValue","sliderDefaultValue","isRange","defaultValue","jsxs","RACSlider","c","x","maxValue","sliderValue","props","jsx","Label","a","A","label","inputVariants","O","layout","state","minValue","startPercent","h","sliderTrackBackgroundVariants","_","index","Fragment","sliderTrackValueVariants","sizeInPercent","SliderThumb","sliderThumbVariants","Tooltip","f","Text","V","RangeSlider","Slider","useSlottedContext","LabelContext","NumberField","j","labelProps","v","C"],"mappings":"kXAiCE,MAAA,CAAA,CAAAA,GAAA,CAAA,YAEI,CAAA,CAAA,SACA,CAAA,MAAQ,CAAA,CACV,OACA,CAAA,EAAA,CAAA,sBACY,CAAA,CAAA,QACV,CAAA,yBAGJ,CAAA,aAAkB,CAChB,CACE,CAAA,gBACA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAa,CAAA,wBACF,CAAA,SAAA,CAAA,sDAIX,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,WACb,CAAA,YAAW,CAAA,SAAA,CAAA,8DAIX,CAAA,CAAA,CAAA,MAAA,CAAA,SAAa,CAAA,sBACF,CAAA,SAAA,CAAA,2DAIX,CAAA,CAAA,CAAA,MAAA,CAAA,oBACA,CAAA,UAAW,CAAA,SAAA,CAAA,iHAOb,CAAA,CAAA,qBAEE,CAAA,CAAA,gDAIA,CAAA,CAAA,MAAS,EACX,oBAEgB,CAChB,CACE,iBACA,CAAA,CAAA,CAAA,MAAA,CAAA,qBACA,CAAA,YAAW,CAAA,SAAA,CAAA,yBAIX,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,wBAEf,CAAA,SAEU,CAAA,SACR,CAAA,CAAA,CAAA,MAAA,CAAA,qBACA,CAAA,UAAW,CAAA,SAAA,CAAA,2BAIX,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,sBACF,CAAA,SAAA,CAAA,qBAKY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAA,GAAA,CAAA,4CAEzB,CAAA,CAAA,QACE,CAAA,CAAA,uBACU,CAAA,EAAA,CAAA,QAAA,CAAA,yBAIV,CAAA,CAAA,MAAS,CAAA,CACX,MAEF,CAAA,EAAA,CAAA,OAAA,CAAA,EAAkB,CAChB,CACE,CAAA,gBACA,mBAAa,CAAA,WACb,CAAA,iEAIA,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,wBAEf,CAAA,SAEU,CAAA,SACR,mBAAa,CAAA,WACb,CAAA,oBAEJ,CACF,kBAE4C,CAC1C,oBACE,CAAA,CAAA,QACE,CAAA,CAAA,WAAY,CAAA,CAAA,UACZ,CAAA,qBAEF,CAAA,YAEE,QAAS,CAAA,CACX,MAEF,CAAA,EAAA,CAAA,OAAA,CAAA,EAAkB,CAChB,CACE,CAAA,gBAAa,CAAA,CAAA,CAAA,YACL,YACR,CAAA,MAAA,CAAW,4CAGE,CAAA,CAAA,CAAA,WACb,CAAQ,mBACG,CAAA,QACb,CAAA,SAEE,CAAA,SAAa,CAAA,CAAA,CAAA,WACL,CAAA,UACR,CAAA,MAAA,CAAW,wDAGE,CAAA,CAAA,CAAA,sBAEb,CAAA,MAAW,CAAA,QAAA,CAAA,SAAA,CAAA,6CAKS,CAAA,CAAc,CACtC,CAAA,CAAA,CAAA,CAAAA,GAAA,CAAA,sBAEI,CAAA,CAAA,uBACA,CAAU,UAAA,CAAA,QACZ,CACA,0BAEE,CAAA,CAAA,MAAS,CAAA,SAAA,CAAA,OAAA,CAAA,yBAGK,CAChB,CACE,CAAA,gBACA,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,WACb,CAAA,YACF,CAAA,SAEU,CAAA,SACR,CAAA,CAAA,CAAA,MAAA,CAAA,oBACA,CAAA,UAAW,CAAA,SAAA,CAAA,wBAIX,CAAA,CAAA,CAAA,MAAA,CAAA,SAAa,CAAA,sBACF,CAAA,SAKXC,CAAgBC,aAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAF,GAAA,CAAA,oBAEtB,CAAA,CAAA,QACE,CAAA,CAAA,uBAGF,CAAA,EAAA,CAAQ,QACE,CAAA,EAAA,CAAA,CAAA,cACC,CAAA,SAAA,CAAA,OAGb,CAAA,aAAkB,CAChB,CACE,CAAA,gBACA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAa,CAAA,WACb,CAAA,UAAW,CAAA,SAGX,CAAA,YACA,CAAA,CAAA,CAAA,MAAA,CAAA,QAAa,CAAA,sBACF,CAAA,SAKWE,CAAAA,YAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAF,GAAA,CAAA,4GAIM,CAAA,CAAA,WAAY,CAAA,CAAA,UAAA,CACZ,mBAAU,CAAA,QACZ,CACF,mBAKF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAA,GAAA,CAAA,2CAGI,CAAA,CAAA,QACE,CAAA,CAAA,WAAY,CAAA,CAAA,UAAA,CAAA,0CACF,CAAA,QAAA,CAAA,0BAMmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAA,GAAA,CAAA,oCAEjC,CAAA,CAAA,QACE,CAAA,CAAA,WAAY,CAAA,CAAA,UAAA,CAAA,+BACF,CAAA,QAGf,CAAA,gBAqBC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QACA,CAAA,CAAA,CAAA,SACA,CAAA,CAAA,CAAA,SAAY,CACZ,CAAA,CAAA,KAAA,CAAA,SAAS,CAAA,CAAA,CAAA,IACT,OAAAG,CACA,CAAA,CAAA,SAAA,CAAA,KACA,CAAA,CAAA,CAAA,qBACAC,CAAAA,CACA,iBACA,CAAA,CAAA,CAAA,UACA,CAAA,CAAA,CAAA,QACA,CAAA,CAAA,CAAA,CAAA,CAAA,QACA,CAAA,CAAA,CAAA,GAAA,CAAA,OAAc,CAAA,CAAA,CAAA,KAAA,CAAA,WAEhB,CAAA,CAAA,CAAA,YACgCC,CAAAA,GACxBC,EAAqBC,GAAUH,CAAoBI,MAEzD,CAAA,CAAA,CACEC,CAAAA,CAACC,EAAA,CACC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAA+BC,sBAAa,CAAAC,EAAA,CAAA,CAAA,CAAA,CAAA,oBAE5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAUC,QACV,CAAA,CAAA,CAAA,WACOC,WACP,CAAA,CAAA,CAAA,KACC,CAAGC,CAAAA,CAEH,aACCC,CAAAA,CAACC,GAAM,CAAA,CAAA,QAAWhB,CAAAA,CAAc,CAAE,EAAAiB,GAAA,CAAAC,KAAA,CAAA,CAAA,SAAa,CAAA,CAAA,CAAA,CAAA,cAC5CC,OAIHJ,CAAAA,CAAC,CAAA,CAAA,gBAAeK,GAAc,CAAE,gBAAa,CAAA,CAAA,CAAA,CAAA,cAC3CL,MAAa,CAAA,CACf,CAAA,CAEFA,CAAAA,QAAgB,CAAAE,GAAA,CAAA,CAAA,CAAA,GAA+B,CAAE,CAAA,CAAAA,GAAA,CAAAI,WAAA,CAAA,CAAAC,SAAQ,CAAA,CAAA,CAAA,CAAA,MACtD,CAAA,CAAA,CAAA,WAAG,CAAA,CAAAC,CAAM,CAAA,CAAA,QACR,CAAMC,CAAAA,CAAWD,KAAM,CAAA,CAAA,CAAA,GAAA,CAAA,MAAgB,CAAC,EAClCX,CAAAA,eAAiB,CAAA,CAAA,CAAA,CAAgB,CAAC,CAAA,CAAA,CAAKY,iBACN,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAIZ,EAAWY,aAC3DC,GACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAA,GAAA,CAAA,CAAA,CAAA,CAAW,EAAI,CAAA,CAAA,MAAQ,OAAMD,GAAW,CAAG,CAAC,CAAA,EAAA,IAAM,CACjE,KAAA,CAAA,CACEhB,IAAA,CACE,eAACE,IAAA,CAAAgB,QAAA,CAAI,UAAWC,CAAAA,GAA8B,CAAE,KAAA,CAAA,CAAA,SAAgB,EAC/DJ,CAAAA,CAAM,WAAW,CAACK,CAAAA,CAAGC,IAElBrB,CAAAA,CAAAsB,MACE,CAAA,GAAA,CAAA,CAAA,CAAAf,CAAAA,CAAC,GAAAL,IAAA,CAAAgB,QAAA,CAEC,UAAWK,CAAAA,GAAyB,CAAE,gBACtC,CAAA,CAAA,CAAA,CAAA,qBAGQ,CAAA,CAAA,eAIA,CAAA,CAAA,IAAQN,EACR,CAAA,KAAA,CAAQO,CACV,CAAA,CAAA,CAXD,MAAA,CAAA,CAAA,CAAA,MAAoB,CAAI,YAAa,GAe5CjB,GAACkB,CAAA,CAEC,KAAA,CAAOJ,wBACIK,CAAAA,CAAoB,iBAE9B,CAAA,CAAA,CAAA,CAAA,WACEC,CAAAA,CAAA,CACC,CAAA,CAAA,QAAApB,CAAAA,CAACoB,CAAAA,EAAQzB,IAAA,CAAA0B,OAAA,CAAA,CAAA,QACP,CAAA,CAAAnB,GAAA,CAAAF,OAAAA,CAAC,OAAI,CAAA,CAAA,QAAU,CAAAE,GAAA,CAAA,KAAA,CAAA,CAAA,UAER,gBAAeA,GAAA,CAAAmB,OAAA,CAAA,IACrB,CAAA,CAAA,SAAM,CAAA,KAAA,CAAA,QACT,CAAA,CAAA,CACF,aAZG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgBP,CAAAA,CAAAA,CAAAA,CAAU,CAAA,aAAiB,EAclD,CAAA,GAGL,CAAA,CACH,KAINd,CAAAA,KAAM,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,kBAA8B,OAAAO,SAAQ,CAAA,CAAA,CAAA,CAAA,MACpD,CAAA,CAAA,CAAA,WAEFe,EAAA,CAAK,CAAA,CAAA,SAAW,CAAA,CAAA,CAAA,CAAApB,GAAA,CAAAqB,IAAA,CAAA,CAAA,IAA8B,CAAA,KAAA,CAAAhB,mBAC5C,CAAA,CAAA,CAAA,WAIT,CAAA,CAUaiB,GAAc,QACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAhC,CAAAA,CACA,EAAA,CAAA,CAAA,CAAA,aAIGiC,CAAAA,CAAA,KACK1B,CACJ,CAAA,CAAA,GAAA,CAAA,CAAA,GAAOG,GACP,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,OAAA,CAAA,IAAmBV,CACnB,iBAKN,CAAA,CAAA,CAAA,UAAuB,CAAA,CAAA,CAAA,EAAA,SACrB,CAAA,CAAA,CAAMgB,SACakB,CAAAA,CAAkBC,CAAY,CAAA,CACjD,MAAA,CACE3B,WAAAe,CAAAA,kBAAA,CACG,0CAAOb,GAAA,CAAAS,QAAA,CAAO,WACbX,EAAC4B,MAEC,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA1B,GAAA,CAAA2B,WAAiBC,CAAAA,CAAAA,iBAEjB,CAAA,CAAA,EAAWC,GAAMvB,KAAM,CAAA,CAAA,CAAA,QAAc,EAAGuB,EAAC,CAEzC,cACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QACE,CAAA7B,GAAA,CAAA8B,KAAA,CAAA,CAAA,SAAA,CAAApC,EAAA,CAAA,6GAPiBkB,CAAAA,CAAAA,CAAAA,CAAU,CAAA,aAAiB,EAYnD,CAAA,GAGP,CAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA","file":"index.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\n'use client';\nimport { cn } from '@/lib/utils';\nimport 'client-only';\nimport { cva } from 'class-variance-authority';\nimport { useContext } from 'react';\nimport {\n Input,\n Label,\n LabelContext,\n NumberField,\n Slider as RACSlider,\n type SliderProps as RACSliderProps,\n SliderTrack as RACSliderTrack,\n SliderStateContext,\n SliderThumb,\n Text,\n useSlottedContext,\n} from 'react-aria-components';\nimport { Tooltip } from '../tooltip';\n\nconst sliderVariants = cva('grid gap-s', {\n variants: {\n layout: {\n stacked: '',\n inline: '',\n },\n orientation: {\n vertical: 'h-full w-fit',\n horizontal: 'h-xl w-full',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_auto]',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'grid-cols-[auto_auto_1fr_auto_auto] grid-rows-1 items-center',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'grid-cols-[auto_auto_auto] grid-rows-[auto_auto_1fr_auto]',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_1fr_auto]',\n },\n ],\n});\n\nconst minValueVariants = cva('font-display text-body-m text-default-dark', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: 'col-start-1 row-start-4',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'col-start-1 row-start-3',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-2',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'self-end justify-self-end',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'justify-self-center',\n },\n ],\n});\n\nconst maxValueVariants = cva('font-display text-body-m text-default-dark', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: 'col-start-1 row-start-2',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'col-start-3 row-start-3 justify-self-end',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-4',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'justify-self-end',\n },\n ],\n});\n\nconst sliderTrackVariants = cva('relative', {\n variants: {\n orientation: {\n horizontal: 'h-s w-full',\n vertical: 'h-full w-s',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n layout: 'stacked',\n className: 'col-span-3 row-start-2',\n },\n {\n orientation: 'horizontal',\n layout: 'inline',\n className: 'order-3',\n },\n {\n orientation: 'vertical',\n layout: 'stacked',\n className: 'col-start-2 row-span-3 row-start-2',\n },\n {\n orientation: 'vertical',\n layout: 'inline',\n className: 'col-start-1 row-start-3 justify-self-center',\n },\n ],\n});\n\nconst inputVariants = cva('flex gap-s', {\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col-reverse',\n },\n layout: {\n inline: 'order-5',\n stacked: 'col-start-3 row-start-1',\n },\n },\n compoundVariants: [\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-5',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'col-span-3 col-start-1',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'row-start-4',\n },\n ],\n});\n\nconst labelVariants = cva('text-default-light', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n layout: {\n inline: 'order-1',\n stacked: 'col-start-1',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'col-span-2',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'col-span-3',\n },\n ],\n});\n\nconst sliderThumbVariants = cva(\n 'h-m w-m rounded-full bg-highlight-bold outline-highlight-bold/40 hover:outline-4 focus:outline-4',\n {\n variants: {\n orientation: {\n horizontal: 'translate-y-[50%]',\n vertical: 'translate-x-[40%]',\n },\n },\n },\n);\n\nconst sliderTrackBackgroundVariants = cva(\n 'absolute rounded-full bg-default-light/40',\n {\n variants: {\n orientation: {\n horizontal: 'top-[50%] h-xxs w-full translate-y-[50%]',\n vertical: 'left-[50%] h-full w-xxs ',\n },\n },\n },\n);\n\nconst sliderTrackValueVariants = cva('absolute rounded-full bg-highlight', {\n variants: {\n orientation: {\n horizontal: 'top-1/2 h-xxs translate-y-1/2',\n vertical: 'left-1/2 w-xxs',\n },\n },\n});\n\nexport interface SliderProps\n extends Omit<\n RACSliderProps,\n 'value' | 'defaultValue' | 'showOutput' | 'slot' | 'style' | 'formatOptions'\n > {\n className?: string;\n showInput?: boolean;\n showLabel?: boolean;\n layout: 'stacked' | 'inline';\n value?: number;\n defaultValue?: number;\n rangeValue?: [number, number];\n defaultRangeValue?: [number, number];\n isRange?: boolean;\n label: string;\n}\n\nexport const Slider = ({\n children,\n className,\n showInput = false,\n showLabel = true,\n layout = 'stacked',\n value,\n defaultValue,\n label,\n defaultRangeValue,\n rangeValue,\n minValue = 0,\n maxValue = 100,\n isRange = false,\n orientation = 'horizontal',\n ...props\n}: SliderProps) => {\n const sliderValue = isRange ? rangeValue : value;\n const sliderDefaultValue = isRange ? defaultRangeValue : defaultValue;\n\n return (\n <RACSlider\n className={cn(sliderVariants({ orientation, layout }))}\n minValue={minValue}\n maxValue={maxValue}\n orientation={orientation}\n value={sliderValue}\n defaultValue={sliderDefaultValue}\n {...props}\n >\n {showLabel && (\n <Label className={labelVariants({ orientation, layout })}>\n {label}\n </Label>\n )}\n {showInput && (\n <div className={inputVariants({ orientation, layout })}>\n <SliderInput />\n </div>\n )}\n <RACSliderTrack className={sliderTrackVariants({ layout, orientation })}>\n {({ state }) => {\n const minValue = state.getThumbPercent(0);\n const maxValue = state.getThumbPercent(1) || minValue;\n const sizeInPercent = `${(state.values.length === 2 ? maxValue - minValue : minValue) * 100}%`;\n const startPercent =\n state.values.length === 2 ? `${Math.floor(minValue * 100)}%` : '0';\n return (\n <>\n <div className={sliderTrackBackgroundVariants({ orientation })} />\n {state.values.map((_, index) => {\n return (\n <>\n <div\n key={`slider-${index === 0 ? 'min' : 'max'}`}\n className={sliderTrackValueVariants({ orientation })}\n style={\n orientation === 'horizontal'\n ? {\n left: startPercent,\n width: sizeInPercent,\n }\n : {\n bottom: startPercent,\n height: sizeInPercent,\n }\n }\n />\n\n <SliderThumb\n key={`slider-thumb-${index === 0 ? 'min' : 'max'}`}\n index={index}\n className={sliderThumbVariants({ orientation })}\n >\n {!showInput && (\n <Tooltip>\n <Tooltip.Trigger>\n <div className='size-full' />\n </Tooltip.Trigger>\n <Tooltip.Body placement='top'>\n {state.getThumbValue(index)}\n </Tooltip.Body>\n </Tooltip>\n )}\n </SliderThumb>\n </>\n );\n })}\n </>\n );\n }}\n </RACSliderTrack>\n <Text slot='min' className={minValueVariants({ layout, orientation })}>\n {minValue}\n </Text>\n <Text slot='max' className={maxValueVariants({ layout, orientation })}>\n {maxValue}\n </Text>\n </RACSlider>\n );\n};\n\nexport type RangeSliderProps = Omit<\n SliderProps,\n 'isRange' | 'defaultRangeValue' | 'rangeValue' | 'defaultValue' | 'value'\n> & {\n defaultValue: SliderProps['defaultRangeValue'];\n value: SliderProps['rangeValue'];\n};\n\nexport const RangeSlider = ({\n defaultValue,\n value,\n ...props\n}: RangeSliderProps) => {\n return (\n <Slider\n {...props}\n isRange\n defaultRangeValue={defaultValue}\n rangeValue={value}\n />\n );\n};\n\nfunction SliderInput({ className }: { className?: string }) {\n const state = useContext(SliderStateContext);\n const labelProps = useSlottedContext(LabelContext);\n return (\n <>\n {state?.values.map((value: number, index: number) => (\n <NumberField\n key={`number-field-${index === 0 ? 'min' : 'max'}`}\n aria-labelledby={labelProps?.id}\n value={value}\n onChange={(v) => state.setThumbValue(0, v)}\n >\n <Input\n className={cn(\n 'w-[50px] rounded-medium border border-interactive px-s py-xs font-display text-body-m text-default-light',\n className,\n )}\n />\n </NumberField>\n ))}\n </>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/slider/index.tsx"],"names":["e","labelVariants","cva","value","defaultRangeValue","rangeValue","sliderDefaultValue","isRange","defaultValue","jsxs","RACSlider","c","x","maxValue","sliderValue","props","jsx","Label","a","A","label","inputVariants","O","layout","state","minValue","startPercent","h","sliderTrackBackgroundVariants","_","index","Fragment","sliderTrackValueVariants","sizeInPercent","SliderThumb","sliderThumbVariants","Tooltip","f","Text","V","RangeSlider","Slider","useSlottedContext","LabelContext","NumberField","j","labelProps","v","C"],"mappings":"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","file":"index.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\n'use client';\nimport { cn } from '@/lib/utils';\nimport 'client-only';\nimport { cva } from 'class-variance-authority';\nimport { useContext } from 'react';\nimport {\n Input,\n Label,\n LabelContext,\n NumberField,\n Slider as RACSlider,\n type SliderProps as RACSliderProps,\n SliderTrack as RACSliderTrack,\n SliderStateContext,\n SliderThumb,\n Text,\n useSlottedContext,\n} from 'react-aria-components';\nimport { Tooltip } from '../tooltip';\n\nconst sliderVariants = cva('grid gap-s', {\n variants: {\n layout: {\n stacked: '',\n inline: '',\n },\n orientation: {\n vertical: 'h-full w-fit',\n horizontal: 'h-xl w-full',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_auto]',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'grid-cols-[auto_auto_1fr_auto_auto] grid-rows-1 items-center',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'grid-cols-[auto_auto_auto] grid-rows-[auto_auto_1fr_auto]',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'grid-cols-[auto_1fr_auto] grid-rows-[auto_auto_1fr_auto]',\n },\n ],\n});\n\nconst minValueVariants = cva('font-display text-body-m text-default-dark', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: 'col-start-1 row-start-4',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'col-start-1 row-start-3',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-2',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'self-end justify-self-end',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'justify-self-center',\n },\n ],\n});\n\nconst maxValueVariants = cva('font-display text-body-m text-default-dark', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: 'col-start-1 row-start-2',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'horizontal',\n className: 'col-start-3 row-start-3 justify-self-end',\n },\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-4',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'justify-self-end',\n },\n ],\n});\n\nconst sliderTrackVariants = cva('relative', {\n variants: {\n orientation: {\n horizontal: 'h-s w-full',\n vertical: 'h-full w-s',\n },\n layout: {\n inline: '',\n stacked: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n layout: 'stacked',\n className: 'col-span-3 row-start-2',\n },\n {\n orientation: 'horizontal',\n layout: 'inline',\n className: 'order-3',\n },\n {\n orientation: 'vertical',\n layout: 'stacked',\n className: 'col-start-2 row-span-3 row-start-2',\n },\n {\n orientation: 'vertical',\n layout: 'inline',\n className: 'col-start-1 row-start-3 justify-self-center',\n },\n ],\n});\n\nconst inputVariants = cva('flex gap-s', {\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col-reverse',\n },\n layout: {\n inline: 'order-5',\n stacked: 'col-start-3 row-start-1',\n },\n },\n compoundVariants: [\n {\n layout: 'inline',\n orientation: 'horizontal',\n className: 'order-5',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'col-span-3 col-start-1',\n },\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'row-start-4',\n },\n ],\n});\n\nconst labelVariants = cva('text-default-light', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n layout: {\n inline: 'order-1',\n stacked: 'col-start-1',\n },\n },\n compoundVariants: [\n {\n layout: 'stacked',\n orientation: 'vertical',\n className: 'col-span-2',\n },\n {\n layout: 'inline',\n orientation: 'vertical',\n className: 'col-span-3',\n },\n ],\n});\n\nconst sliderThumbVariants = cva(\n 'h-m w-m rounded-full bg-highlight-bold outline-highlight-bold/40 hover:outline-4 focus-visible:outline-4',\n {\n variants: {\n orientation: {\n horizontal: 'translate-y-[50%]',\n vertical: 'translate-x-[40%]',\n },\n },\n },\n);\n\nconst sliderTrackBackgroundVariants = cva(\n 'absolute rounded-full bg-default-light/40',\n {\n variants: {\n orientation: {\n horizontal: 'top-[50%] h-xxs w-full translate-y-[50%]',\n vertical: 'left-[50%] h-full w-xxs ',\n },\n },\n },\n);\n\nconst sliderTrackValueVariants = cva('absolute rounded-full bg-highlight', {\n variants: {\n orientation: {\n horizontal: 'top-1/2 h-xxs translate-y-1/2',\n vertical: 'left-1/2 w-xxs',\n },\n },\n});\n\nexport interface SliderProps\n extends Omit<\n RACSliderProps,\n 'value' | 'defaultValue' | 'showOutput' | 'slot' | 'style' | 'formatOptions'\n > {\n className?: string;\n showInput?: boolean;\n showLabel?: boolean;\n layout?: 'stacked' | 'inline';\n value?: number;\n defaultValue?: number;\n rangeValue?: [number, number];\n defaultRangeValue?: [number, number];\n isRange?: boolean;\n label: string;\n}\n\n/**\n * Slider - An interactive range input component for numeric value selection\n *\n * Provides accessible slider functionality with optional input field integration,\n * flexible layouts, and comprehensive keyboard and mouse interaction support.\n * Perfect for settings, filters, or any numeric input requiring visual feedback.\n *\n * @example\n * // Basic slider\n * <Slider label=\"Volume\" defaultValue={50} />\n */\nexport const Slider = ({\n children,\n className,\n showInput = false,\n showLabel = true,\n layout = 'stacked',\n value,\n defaultValue,\n label,\n defaultRangeValue,\n rangeValue,\n minValue = 0,\n maxValue = 100,\n isRange = false,\n orientation = 'horizontal',\n ...props\n}: SliderProps) => {\n const sliderValue = isRange ? rangeValue : value;\n const sliderDefaultValue = isRange ? defaultRangeValue : defaultValue;\n\n return (\n <RACSlider\n className={cn(sliderVariants({ orientation, layout }))}\n minValue={minValue}\n maxValue={maxValue}\n orientation={orientation}\n value={sliderValue}\n defaultValue={sliderDefaultValue}\n {...props}\n >\n {showLabel && (\n <Label className={labelVariants({ orientation, layout })}>\n {label}\n </Label>\n )}\n {showInput && (\n <div className={inputVariants({ orientation, layout })}>\n <SliderInput />\n </div>\n )}\n <RACSliderTrack className={sliderTrackVariants({ layout, orientation })}>\n {({ state }) => {\n const minValue = state.getThumbPercent(0);\n const maxValue = state.getThumbPercent(1) || minValue;\n const sizeInPercent = `${(state.values.length === 2 ? maxValue - minValue : minValue) * 100}%`;\n const startPercent =\n state.values.length === 2 ? `${Math.floor(minValue * 100)}%` : '0';\n return (\n <>\n <div className={sliderTrackBackgroundVariants({ orientation })} />\n {state.values.map((_, index) => {\n return (\n <>\n <div\n key={`slider-${index === 0 ? 'min' : 'max'}`}\n className={sliderTrackValueVariants({ orientation })}\n style={\n orientation === 'horizontal'\n ? {\n left: startPercent,\n width: sizeInPercent,\n }\n : {\n bottom: startPercent,\n height: sizeInPercent,\n }\n }\n />\n\n <SliderThumb\n key={`slider-thumb-${index === 0 ? 'min' : 'max'}`}\n index={index}\n className={sliderThumbVariants({ orientation })}\n >\n {!showInput && (\n <Tooltip>\n <Tooltip.Trigger>\n <div className='size-full outline-none' />\n </Tooltip.Trigger>\n <Tooltip.Body placement='top'>\n {state.getThumbValue(index)}\n </Tooltip.Body>\n </Tooltip>\n )}\n </SliderThumb>\n </>\n );\n })}\n </>\n );\n }}\n </RACSliderTrack>\n <Text slot='min' className={minValueVariants({ layout, orientation })}>\n {minValue}\n </Text>\n <Text slot='max' className={maxValueVariants({ layout, orientation })}>\n {maxValue}\n </Text>\n </RACSlider>\n );\n};\n\nexport type RangeSliderProps = Omit<\n SliderProps,\n 'isRange' | 'defaultRangeValue' | 'rangeValue' | 'defaultValue' | 'value'\n> & {\n defaultValue?: SliderProps['defaultRangeValue'];\n value: SliderProps['rangeValue'];\n};\n\n/**\n * RangeSlider - A dual-handle slider component for selecting a range of numeric values\n *\n * Extends the base Slider component to provide range selection functionality with two thumbs,\n * allowing users to define both minimum and maximum values within a specified range.\n * Maintains all accessibility features and layout options of the base slider while\n * providing intuitive range selection controls.\n *\n * @example\n * // Basic range slider\n * <RangeSlider label=\"Price Range\" defaultValue={[20, 80]} minValue={0} maxValue={100} />\n *\n * @example\n * // Controlled range slider with input fields\n * <RangeSlider\n * label=\"Temperature Range\"\n * value={tempRange}\n * onChange={setTempRange}\n * showInput\n * minValue={-10}\n * maxValue={40}\n * />\n */\nexport const RangeSlider = ({\n defaultValue,\n value,\n ...props\n}: RangeSliderProps) => {\n return (\n <Slider\n {...props}\n isRange\n defaultRangeValue={defaultValue}\n rangeValue={value}\n />\n );\n};\n\nfunction SliderInput({ className }: { className?: string }) {\n const state = useContext(SliderStateContext);\n const labelProps = useSlottedContext(LabelContext);\n return (\n <>\n {state?.values.map((value: number, index: number) => (\n <NumberField\n key={`number-field-${index === 0 ? 'min' : 'max'}`}\n aria-labelledby={labelProps?.id}\n value={value}\n onChange={(v) => state.setThumbValue(0, v)}\n >\n <Input\n className={cn(\n 'w-[50px] rounded-medium border border-interactive px-s py-xs font-display text-body-m text-default-light',\n className,\n )}\n />\n </NumberField>\n ))}\n </>\n );\n}\n"]}
@@ -9,6 +9,42 @@ declare function SwitchProvider({ children, ...props }: ProviderProps<SwitchProp
9
9
  declare namespace SwitchProvider {
10
10
  var displayName: string;
11
11
  }
12
+ /**
13
+ * Switch - A toggle control for binary state changes
14
+ *
15
+ * Provides an accessible toggle switch component for enabling/disabling features
16
+ * or settings. Offers clear visual feedback for on/off states with smooth transitions
17
+ * and proper keyboard and screen reader support.
18
+ *
19
+ * @example
20
+ * // Basic switch
21
+ * <Switch>Enable notifications</Switch>
22
+ *
23
+ * @example
24
+ * // Controlled switch
25
+ * <Switch
26
+ * isSelected={isEnabled}
27
+ * onChange={setIsEnabled}
28
+ * >
29
+ * Dark mode
30
+ * </Switch>
31
+ *
32
+ * @example
33
+ * // Switch with default state
34
+ * <Switch defaultSelected>
35
+ * Auto-save documents
36
+ * </Switch>
37
+ *
38
+ * @example
39
+ * // Disabled switch
40
+ * <Switch isDisabled>
41
+ * Premium feature (upgrade required)
42
+ * </Switch>
43
+ *
44
+ * @example
45
+ * // Switch without label (icon-only)
46
+ * <Switch aria-label="Toggle sidebar" />
47
+ */
12
48
  declare function Switch({ ref, ...props }: SwitchProps): react_jsx_runtime.JSX.Element;
13
49
  declare namespace Switch {
14
50
  var displayName: string;
@@ -1,2 +1,2 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import'client-only';import {createContext}from'react';import {useContextProps,Switch,composeRenderProps}from'react-aria-components';import {SwitchStyles}from'./styles.js';const {switch:S,control:d,label:u}=SwitchStyles(),c=createContext(null);function a({children:t,...e}){return jsx(c.Provider,{value:e,children:t})}a.displayName="Switch.Provider";function l({ref:t,...e}){[e,t]=useContextProps(e,t??null,c);const{children:n,classNames:s,...p}=e;return jsx(Switch,{...p,ref:t,className:composeRenderProps(s?.switch,o=>S({className:o})),children:composeRenderProps(n,o=>jsxs(Fragment,{children:[jsx("span",{className:d({className:s?.control})}),o&&jsx("span",{className:u({className:s?.label}),children:o})]}))})}l.displayName="Switch",l.Provider=a;export{l as Switch,c as SwitchContext};//# sourceMappingURL=index.js.map
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import'client-only';import {createContext}from'react';import {useContextProps,Switch,composeRenderProps}from'react-aria-components';import {SwitchStyles}from'./styles.js';const {switch:d,control:u,label:N}=SwitchStyles(),c=createContext(null);function a({children:t,...e}){return jsx(c.Provider,{value:e,children:t})}a.displayName="Switch.Provider";function l({ref:t,...e}){[e,t]=useContextProps(e,t??null,c);const{children:n,classNames:s,labelPosition:p="end",...m}=e;return jsx(Switch,{...m,ref:t,className:composeRenderProps(s?.switch,o=>d({className:o,labelPosition:p})),children:composeRenderProps(n,o=>jsxs(Fragment,{children:[jsx("span",{className:u({className:s?.control})}),o&&jsx("span",{className:N({className:s?.label}),children:o})]}))})}l.displayName="Switch",l.Provider=a;export{l as Switch,c as SwitchContext};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/switch/index.tsx"],"names":["SwitchStyles","SwitchContext","createContext","m","props","r","SwitchProvider","ref","useContextProps","rest","h","switchClassNames","children","jsxs","Fragment","v","N","jsx","Switch"],"mappings":"6NA0BQ,MAAA,CAAA,gBAAmC,CAAA,CAAA,CAAA,KAAUA,EAAa,CAAA,CAErDC,YAAAA,EACXC,CAA2D,CAAA,CAAAC,aAAA,CAAI,IAEjE,EAAA,oBAAoC,CAAA,CAAGC,CAAM,GAC3C,CAAA,CAAA,CAAA,CAAA,OACiBC,GAAA,CAAA,CAAA,CAAA,QAAS,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,QAE3C,CACAC,CAAAA,CAAe,CAAA,CAAA,CAAA,CAAA,WAAc,CAAA,2BAEJ,CAAA,CAAA,CAAAC,KAAQH,CAAM,GACrC,CAACA,EAAOG,CAAG,CAAA,CAAIC,CAAAA,CAAgBJ,CAAAA,CAAOG,eAAAA,CAAAA,CAAO,CAAA,CAAA,EAAA,IAE7C,SAAQ,CAAA,QAAU,CAAA,CAAA,CAAA,UAAY,CAAA,CAAGE,CAAK,GAAIL,CAE1C,WACGC,GACE,CAAAK,MAAA,CAAGD,IACJ,CAAA,CAAKF,GACL,CAAA,CAAA,CAAA,4BAA0C,CAAA,CAAA,EAAA,MACxCI,CAAAA,CAAiB,cACnB,CAAA,CAEC,YAAmBC,CAAWA,kBAAAA,CAAAA,CAC7BC,CAAAA,CAAAC,EAAAC,IACE,CAAAC,QAAA,CAAA,CAAA,QAAC,CAAA,CAAAX,GAAA,CAAA,iBAA0B,CAAA,CAAA,CAAA,CAAA,SAAuB,WAAY,CAC7DO,CAAAA,CAAAA,CACCK,EAAC,EAAAZ,GAAA,CAAA,MAAK,CAAA,CAAA,SAAmB,aAAuB,CAAA,CAAA,EAAA,gBAEhD,CAAA,CAEJ,CACD,CAAA,CACH,CAEJ,CACAa,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,WAAc,CAAA,QACd,CAAA,CAAA,CAAA,QAAWZ,CAAAA,CAAAA","file":"index.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'use client';\n\nimport 'client-only';\nimport type { ProviderProps } from '@/lib/types';\nimport { createContext } from 'react';\nimport {\n Switch as AriaSwitch,\n type ContextValue,\n composeRenderProps,\n useContextProps,\n} from 'react-aria-components';\nimport { SwitchStyles } from './styles';\nimport type { SwitchProps } from './types';\n\n// \"switch\" is a reserved term in JS\nconst { switch: switchClassNames, control, label } = SwitchStyles();\n\nexport const SwitchContext =\n createContext<ContextValue<SwitchProps, HTMLLabelElement>>(null);\n\nfunction SwitchProvider({ children, ...props }: ProviderProps<SwitchProps>) {\n return (\n <SwitchContext.Provider value={props}>{children}</SwitchContext.Provider>\n );\n}\nSwitchProvider.displayName = 'Switch.Provider';\n\nexport function Switch({ ref, ...props }: SwitchProps) {\n [props, ref] = useContextProps(props, ref ?? null, SwitchContext);\n\n const { children, classNames, ...rest } = props;\n\n return (\n <AriaSwitch\n {...rest}\n ref={ref}\n className={composeRenderProps(classNames?.switch, (className) =>\n switchClassNames({ className }),\n )}\n >\n {composeRenderProps(children, (children) => (\n <>\n <span className={control({ className: classNames?.control })} />\n {children && (\n <span className={label({ className: classNames?.label })}>\n {children}\n </span>\n )}\n </>\n ))}\n </AriaSwitch>\n );\n}\nSwitch.displayName = 'Switch';\nSwitch.Provider = SwitchProvider;\n"]}
1
+ {"version":3,"sources":["../../../src/components/switch/index.tsx"],"names":["SwitchStyles","SwitchContext","createContext","h","props","r","SwitchProvider","ref","useContextProps","rest","w","classNames","switchClassNames","children","jsxs","Fragment","y","v","jsx","Switch"],"mappings":"6NA0BQ,MAAA,CAAA,MAA0B,CAAA,CAAA,CAAA,OAAS,CAAA,CAAA,CAAA,KAAUA,CAAAA,CAAa,EAErDC,YAAAA,EACXC,CAA2D,CAAA,CAAAC,aAAA,CAAI,eAEvC,CAAA,CAAA,CAAA,UAAaC,CAAM,GAC3C,CAAA,CAAA,CAAA,CAAA,OACiBC,GAAA,CAAA,CAAA,CAAA,QAAS,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,QAE3C,CACAC,EAAe,CAAA,CAAA,CAAA,CAAA,WAAc,CAAA,iBAsCtB,CAAA,SAAkB,CAAA,CAAA,CAAAC,GAAK,CAAA,CAAGH,CAAM,GACrC,CAACA,EAAOG,CAAG,CAAA,CAAIC,EAAgBJ,CAAAA,CAAOG,eAAAA,CAAAA,CAAO,CAAA,CAAA,EAAA,IAE7C,CAAA,CAAA,CAAA,CAAA,KAAQ,CAAA,qBAAsB,CAAA,CAAA,CAAA,aAAgB,CAAA,CAAA,CAAA,KAAUE,CAAK,GAAIL,CAEjE,CAAA,CAAA,CAAA,CAAA,OACGC,GACE,CAAAK,MAAA,CAAGD,CAAAA,KACCF,GACL,CAAA,CAAA,CAAA,SAA8BI,CAAAA,kBAAY,UACxCC,CAAAA,CAAiB,EAAE,CAAA,CAAA,CAAA,SAAW,CAAA,CAAA,CAAA,aAChC,EAEC,CAAA,CAAA,CAAA,CAAA,QAAmBC,CAAWA,kBAAAA,CAAAA,CAC7BC,EAAAC,EAAAC,IACE,CAAAC,QAAA,CAAA,CAAA,QAAC,YAAK,CAAA,CAAA,SAAqB,CAAA,CAAA,CAAA,CAAA,SAAuB,CAAA,CAAA,EAAA,OAAY,CAC7DJ,GACCK,CAAAA,CAAC,EAAAb,GAAA,CAAA,MAAK,CAAA,CAAA,SAAmB,CAAA,CAAA,CAAA,CAAA,SAAuB,CAAA,CAAA,EAAA,KAC7C,CAAA,CAAA,CAAA,QACH,CAAA,CAEJ,CACD,EACH,CAEJ,CACAc,EAAO,CAAA,CAAA,CAAA,CAAA,WAAc,CAAA,QACd,CAAA,CAAA,CAAA,QAAWb,CAAAA,CAAAA","file":"index.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'use client';\n\nimport 'client-only';\nimport type { ProviderProps } from '@/lib/types';\nimport { createContext } from 'react';\nimport {\n Switch as AriaSwitch,\n type ContextValue,\n composeRenderProps,\n useContextProps,\n} from 'react-aria-components';\nimport { SwitchStyles } from './styles';\nimport type { SwitchProps } from './types';\n\n// \"switch\" is a reserved term in JS\nconst { switch: switchClassNames, control, label } = SwitchStyles();\n\nexport const SwitchContext =\n createContext<ContextValue<SwitchProps, HTMLLabelElement>>(null);\n\nfunction SwitchProvider({ children, ...props }: ProviderProps<SwitchProps>) {\n return (\n <SwitchContext.Provider value={props}>{children}</SwitchContext.Provider>\n );\n}\nSwitchProvider.displayName = 'Switch.Provider';\n\n/**\n * Switch - A toggle control for binary state changes\n *\n * Provides an accessible toggle switch component for enabling/disabling features\n * or settings. Offers clear visual feedback for on/off states with smooth transitions\n * and proper keyboard and screen reader support.\n *\n * @example\n * // Basic switch\n * <Switch>Enable notifications</Switch>\n *\n * @example\n * // Controlled switch\n * <Switch\n * isSelected={isEnabled}\n * onChange={setIsEnabled}\n * >\n * Dark mode\n * </Switch>\n *\n * @example\n * // Switch with default state\n * <Switch defaultSelected>\n * Auto-save documents\n * </Switch>\n *\n * @example\n * // Disabled switch\n * <Switch isDisabled>\n * Premium feature (upgrade required)\n * </Switch>\n *\n * @example\n * // Switch without label (icon-only)\n * <Switch aria-label=\"Toggle sidebar\" />\n */\nexport function Switch({ ref, ...props }: SwitchProps) {\n [props, ref] = useContextProps(props, ref ?? null, SwitchContext);\n\n const { children, classNames, labelPosition = 'end', ...rest } = props;\n\n return (\n <AriaSwitch\n {...rest}\n ref={ref}\n className={composeRenderProps(classNames?.switch, (className) =>\n switchClassNames({ className, labelPosition }),\n )}\n >\n {composeRenderProps(children, (children) => (\n <>\n <span className={control({ className: classNames?.control })} />\n {children && (\n <span className={label({ className: classNames?.label })}>\n {children}\n </span>\n )}\n </>\n ))}\n </AriaSwitch>\n );\n}\nSwitch.displayName = 'Switch';\nSwitch.Provider = SwitchProvider;\n"]}
@@ -1,39 +1,41 @@
1
1
  import * as tailwind_variants from 'tailwind-variants';
2
- import * as tailwind_merge from 'tailwind-merge';
3
2
 
4
3
  declare const SwitchStyles: tailwind_variants.TVReturnType<{
5
- [key: string]: {
6
- [key: string]: tailwind_merge.ClassNameValue | {
7
- label?: tailwind_merge.ClassNameValue;
8
- switch?: tailwind_merge.ClassNameValue;
9
- control?: tailwind_merge.ClassNameValue;
4
+ labelPosition: {
5
+ start: {
6
+ switch: string;
10
7
  };
11
- };
12
- } | {
13
- [x: string]: {
14
- [x: string]: tailwind_merge.ClassNameValue | {
15
- label?: tailwind_merge.ClassNameValue;
16
- switch?: tailwind_merge.ClassNameValue;
17
- control?: tailwind_merge.ClassNameValue;
8
+ end: {
9
+ switch: string;
18
10
  };
19
11
  };
20
- } | {}, {
12
+ }, {
21
13
  switch: string;
22
14
  control: string[];
23
15
  label: string[];
24
16
  }, undefined, {
25
- [key: string]: {
26
- [key: string]: tailwind_merge.ClassNameValue | {
27
- label?: tailwind_merge.ClassNameValue;
28
- switch?: tailwind_merge.ClassNameValue;
29
- control?: tailwind_merge.ClassNameValue;
17
+ labelPosition: {
18
+ start: {
19
+ switch: string;
20
+ };
21
+ end: {
22
+ switch: string;
30
23
  };
31
24
  };
32
- } | {}, {
25
+ }, {
33
26
  switch: string;
34
27
  control: string[];
35
28
  label: string[];
36
- }, tailwind_variants.TVReturnType<unknown, {
29
+ }, tailwind_variants.TVReturnType<{
30
+ labelPosition: {
31
+ start: {
32
+ switch: string;
33
+ };
34
+ end: {
35
+ switch: string;
36
+ };
37
+ };
38
+ }, {
37
39
  switch: string;
38
40
  control: string[];
39
41
  label: string[];
@@ -1,2 +1,2 @@
1
- import {tv}from'./../../lib/utils.js';const i=tv({slots:{switch:"group/switch flex cursor-pointer items-center gap-s disabled:cursor-not-allowed",control:["flex rounded-round bg-transparent p-xxs outline outline-interactive before:mr-l before:block before:size-m before:rounded-full before:bg-default-dark","group-enabled/switch:group-focus/switch:bg-interactive-hover-dark group-enabled/switch:group-focus/switch:outline-interactive-hover group-enabled/switch:group-focus/switch:before:bg-interactive-hover","group-enabled/switch:group-hover/switch:bg-interactive-hover-dark group-enabled/switch:group-hover/switch:outline-interactive-hover group-enabled/switch:group-hover/switch:before:bg-interactive-hover","group-enabled/switch:group-selected/switch:outline-highlight group-selected/switch:before:mr-0 group-selected/switch:before:ml-l group-enabled/switch:group-selected/switch:before:bg-highlight","group-enabled/switch:group-selected/switch:group-focus/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-focus/switch:outline-interactive-hover group-enabled/switch:group-selected/switch:group-focus/switch:before:bg-highlight","group-enabled/switch:group-selected/switch:group-hover/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-hover/switch:outline-highlight group-enabled/switch:group-selected/switch:group-hover/switch:before:bg-highlight","group-disabled/switch:bg-interactive-disabled group-disabled/switch:outline-interactive-disabled group-disabled/switch:before:bg-disabled"],label:["text-body-s text-interactive-default","group-disabled/switch:text-interactive-disabled"]}});export{i as SwitchStyles};//# sourceMappingURL=styles.js.map
1
+ import {tv}from'./../../lib/utils.js';const i=tv({slots:{switch:"group/switch flex cursor-pointer items-center gap-s disabled:cursor-not-allowed",control:["flex rounded-round bg-transparent p-xxs outline outline-interactive before:mr-l before:block before:size-m before:rounded-full before:bg-default-dark","group-enabled/switch:group-focus-visible/switch:bg-interactive-hover-dark group-enabled/switch:group-focus-visible/switch:outline-interactive-hover group-enabled/switch:group-focus-visible/switch:before:bg-interactive-hover","group-enabled/switch:group-hover/switch:bg-interactive-hover-dark group-enabled/switch:group-hover/switch:outline-interactive-hover group-enabled/switch:group-hover/switch:before:bg-interactive-hover","group-enabled/switch:group-selected/switch:outline-highlight group-selected/switch:before:mr-0 group-selected/switch:before:ml-l group-enabled/switch:group-selected/switch:before:bg-highlight","group-enabled/switch:group-selected/switch:group-focus-visible/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-focus-visible/switch:outline-interactive-hover group-enabled/switch:group-selected/switch:group-focus-visible/switch:before:bg-highlight","group-enabled/switch:group-selected/switch:group-hover/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-hover/switch:outline-highlight group-enabled/switch:group-selected/switch:group-hover/switch:before:bg-highlight","group-disabled/switch:bg-interactive-disabled group-disabled/switch:outline-interactive-disabled group-disabled/switch:before:bg-disabled"],label:["text-body-s text-interactive-default","group-disabled/switch:text-interactive-disabled"]},variants:{labelPosition:{start:{switch:"flex-row-reverse"},end:{switch:"flex-row"}}}});export{i as SwitchStyles};//# sourceMappingURL=styles.js.map
2
2
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/switch/styles.ts"],"names":["e"],"mappings":"sCAeE,MAAA,CAAO,CACLA,EAAA,CAAA,CAAA,KACE,CAAA,CAAA,MAAA,CAAA,iFAEA,CAAA,OAAA,CAAA,CAAA,uJACA,CAAA,yMACA,CAAA,yMACA,CAAA,iMACA,CAAA,6PACA,CAAA,qPACA,CAAA,2IAGA,CAAA,CAAA,KAAA,CAAA,CAAA,sCACA,CAAA,iDAGL,CAAA,CAAA,CAAA","file":"styles.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 { tv } from '@/lib/utils';\n\nexport const SwitchStyles = tv({\n slots: {\n switch:\n 'group/switch flex cursor-pointer items-center gap-s disabled:cursor-not-allowed',\n control: [\n 'flex rounded-round bg-transparent p-xxs outline outline-interactive before:mr-l before:block before:size-m before:rounded-full before:bg-default-dark',\n 'group-enabled/switch:group-focus/switch:bg-interactive-hover-dark group-enabled/switch:group-focus/switch:outline-interactive-hover group-enabled/switch:group-focus/switch:before:bg-interactive-hover',\n 'group-enabled/switch:group-hover/switch:bg-interactive-hover-dark group-enabled/switch:group-hover/switch:outline-interactive-hover group-enabled/switch:group-hover/switch:before:bg-interactive-hover',\n 'group-enabled/switch:group-selected/switch:outline-highlight group-selected/switch:before:mr-0 group-selected/switch:before:ml-l group-enabled/switch:group-selected/switch:before:bg-highlight',\n 'group-enabled/switch:group-selected/switch:group-focus/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-focus/switch:outline-interactive-hover group-enabled/switch:group-selected/switch:group-focus/switch:before:bg-highlight',\n 'group-enabled/switch:group-selected/switch:group-hover/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-hover/switch:outline-highlight group-enabled/switch:group-selected/switch:group-hover/switch:before:bg-highlight',\n 'group-disabled/switch:bg-interactive-disabled group-disabled/switch:outline-interactive-disabled group-disabled/switch:before:bg-disabled',\n ],\n label: [\n 'text-body-s text-interactive-default',\n 'group-disabled/switch:text-interactive-disabled',\n ],\n },\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/switch/styles.ts"],"names":["e"],"mappings":"sCAeE,MAAA,CAAO,CACLA,SACE,CAAA,CAAA,MAAA,CAAA,iFAEA,CAAA,OAAA,CAAA,CAAA,uJACA,CAAA,2aAEA,CAAA,iMACA,CAAA,2gBAEA,CAAA,2IAGA,CAAA,CAAA,KAAA,CAAA,CAAA,0FAIM,CACR,QAAA,CAAA,CAAA,oBAEY,CAAA,CAAA,MAAA,CAAA,kBAGR,CAAA,CAAA,YACF,UAGL,CAAA,CAAA,CAAA,CAAA","file":"styles.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 { tv } from '@/lib/utils';\n\nexport const SwitchStyles = tv({\n slots: {\n switch:\n 'group/switch flex cursor-pointer items-center gap-s disabled:cursor-not-allowed',\n control: [\n 'flex rounded-round bg-transparent p-xxs outline outline-interactive before:mr-l before:block before:size-m before:rounded-full before:bg-default-dark',\n 'group-enabled/switch:group-focus-visible/switch:bg-interactive-hover-dark group-enabled/switch:group-focus-visible/switch:outline-interactive-hover group-enabled/switch:group-focus-visible/switch:before:bg-interactive-hover',\n 'group-enabled/switch:group-hover/switch:bg-interactive-hover-dark group-enabled/switch:group-hover/switch:outline-interactive-hover group-enabled/switch:group-hover/switch:before:bg-interactive-hover',\n 'group-enabled/switch:group-selected/switch:outline-highlight group-selected/switch:before:mr-0 group-selected/switch:before:ml-l group-enabled/switch:group-selected/switch:before:bg-highlight',\n 'group-enabled/switch:group-selected/switch:group-focus-visible/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-focus-visible/switch:outline-interactive-hover group-enabled/switch:group-selected/switch:group-focus-visible/switch:before:bg-highlight',\n 'group-enabled/switch:group-selected/switch:group-hover/switch:bg-highlight-subtle group-enabled/switch:group-selected/switch:group-hover/switch:outline-highlight group-enabled/switch:group-selected/switch:group-hover/switch:before:bg-highlight',\n 'group-disabled/switch:bg-interactive-disabled group-disabled/switch:outline-interactive-disabled group-disabled/switch:before:bg-disabled',\n ],\n label: [\n 'text-body-s text-interactive-default',\n 'group-disabled/switch:text-interactive-disabled',\n ],\n },\n variants: {\n labelPosition: {\n start: {\n switch: 'flex-row-reverse',\n },\n end: {\n switch: 'flex-row',\n },\n },\n },\n});\n"]}
@@ -7,6 +7,7 @@ type SwitchProps = Omit<SwitchProps$1, 'className'> & RefAttributes<HTMLLabelEle
7
7
  control?: string;
8
8
  label?: string;
9
9
  };
10
+ labelPosition?: 'start' | 'end';
10
11
  };
11
12
 
12
13
  export type { SwitchProps };
@@ -3,6 +3,52 @@ import { TabsProps as TabsProps$1, TabListProps as TabListProps$1, TabProps as T
3
3
 
4
4
  interface TabsProps extends TabsProps$1 {
5
5
  }
6
+ /**
7
+ * Tabs - A tab navigation component for organizing content into sections
8
+ *
9
+ * Provides accessible tab navigation with keyboard support and proper ARIA implementation.
10
+ * Supports both horizontal and vertical orientations with icon and text variants.
11
+ * Perfect for organizing related content into separate, focusable sections.
12
+ *
13
+ * @example
14
+ * // Basic horizontal tabs
15
+ * <Tabs>
16
+ * <Tabs.List>
17
+ * <Tabs.Tab id="overview">Overview</Tabs.Tab>
18
+ * <Tabs.Tab id="details">Details</Tabs.Tab>
19
+ * <Tabs.Tab id="settings">Settings</Tabs.Tab>
20
+ * </Tabs.List>
21
+ * <Tabs.Panel id="overview">Overview content</Tabs.Panel>
22
+ * <Tabs.Panel id="details">Details content</Tabs.Panel>
23
+ * <Tabs.Panel id="settings">Settings content</Tabs.Panel>
24
+ * </Tabs>
25
+ *
26
+ * @example
27
+ * // Vertical tabs
28
+ * <Tabs orientation="vertical">
29
+ * <Tabs.List>
30
+ * <Tabs.Tab id="profile">Profile</Tabs.Tab>
31
+ * <Tabs.Tab id="account">Account</Tabs.Tab>
32
+ * </Tabs.List>
33
+ * <Tabs.Panel id="profile">Profile settings</Tabs.Panel>
34
+ * <Tabs.Panel id="account">Account settings</Tabs.Panel>
35
+ * </Tabs>
36
+ *
37
+ * @example
38
+ * // Icon tabs
39
+ * <Tabs>
40
+ * <Tabs.List variant="icons">
41
+ * <Tabs.Tab id="home">
42
+ * <Icon><Home /></Icon>
43
+ * </Tabs.Tab>
44
+ * <Tabs.Tab id="search">
45
+ * <Icon><Search /></Icon>
46
+ * </Tabs.Tab>
47
+ * </Tabs.List>
48
+ * <Tabs.Panel id="home">Home content</Tabs.Panel>
49
+ * <Tabs.Panel id="search">Search content</Tabs.Panel>
50
+ * </Tabs>
51
+ */
6
52
  declare const Tabs: {
7
53
  ({ children, className, orientation, isDisabled, ...rest }: TabsProps): react_jsx_runtime.JSX.Element;
8
54
  displayName: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tabs/index.tsx"],"names":["rest","p","jsx","AriaTabs","orientation","l","v","i","Tabs","b","variant","drawer","containsExactChildren","AriaTabList","cn","tabListStyles","m","children","TabList","id","T","tabStyles","isSelected","isDisabled","Tab","P","TabPanel"],"mappings":"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","file":"index.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\n'use client';\nimport { containsExactChildren } from '@/lib/react';\nimport { cn } from '@/lib/utils';\nimport 'client-only';\nimport { cva } from 'class-variance-authority';\nimport {\n Tab as AriaTab,\n TabList as AriaTabList,\n type TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n type TabPanelProps as AriaTabPanelProps,\n type TabProps as AriaTabProps,\n Tabs as AriaTabs,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components';\n\nexport interface TabsProps extends AriaTabsProps {}\n\nexport const Tabs = ({\n children,\n className,\n orientation = 'horizontal',\n isDisabled = false,\n ...rest\n}: TabsProps) => {\n containsExactChildren({\n children,\n componentName: Tabs.displayName,\n restrictions: [[TabList, { min: 1, max: 1 }]],\n });\n\n return (\n <AriaTabs\n orientation={orientation}\n isDisabled={isDisabled}\n className={cn(\n 'group flex w-content flex-row orientation-horizontal:flex-col',\n className,\n )}\n {...rest}\n >\n {children}\n </AriaTabs>\n );\n};\n\nTabs.displayName = 'Tabs';\n\nexport interface TabListProps extends AriaTabListProps<object> {\n /** Whether the tabs are displaying iconography or text. */\n variant?: 'default' | 'icons';\n /** Whether the tabs are used as drawer controls. */\n drawer?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst tabListStyles = cva('flex orientation-horizontal:flex-row flex-col', {\n variants: {\n variant: {\n icons:\n '[&>*]:p-xs orientation-horizontal:[&>*]:pr-s orientation-horizontal:[&>*]:pl-s [&>*]:leading-[0]',\n default: '[&>*]:p-s [&>*]:text-header-m',\n },\n drawer: {\n left: 'orientation-vertical:gap-xs rounded-r-large bg-surface-default p-s',\n right:\n 'orientation-vertical:gap-xs rounded-l-large bg-surface-default p-s',\n top: 'orientation-vertical:gap-xs rounded-b-large bg-surface-default p-s',\n bottom:\n 'orientation-vertical:gap-xs rounded-t-large bg-surface-default p-s',\n },\n },\n});\n\nconst TabList = ({\n children,\n className,\n variant = 'default',\n drawer = undefined,\n ...rest\n}: TabListProps) => {\n containsExactChildren({\n children,\n componentName: TabList.displayName,\n restrictions: [[Tab, { min: 1 }]],\n });\n\n return (\n <AriaTabList\n className={cn(tabListStyles({ variant, drawer }), className)}\n {...rest}\n >\n {children}\n </AriaTabList>\n );\n};\n\nTabList.displayName = 'Tabs.List';\nTabs.List = TabList;\n\nconst tabBaseStyles = cn(\n 'fg-default-dark cursor-pointer p-s outline-none',\n 'rounded-medium group-orientation-horizontal:rounded-small group-orientation-horizontal:rounded-b-none',\n 'group-orientation-horizontal:border-static-light group-orientation-horizontal:border-b',\n 'group-orientation-vertical:border group-orientation-vertical:border-transparent',\n);\n\nconst tabStyles = cva(tabBaseStyles, {\n variants: {\n isSelected: {\n true: 'fg-highlight bg-highlight-subtle group-orientation-horizontal:border-highlight',\n },\n isHovered: {\n true: 'fg-default-light group-orientation-horizontal:border-interactive-hover',\n },\n isFocused: {\n true: 'fg-default-light group-orientation-horizontal:border-interactive-hover',\n },\n isDisabled: {\n true: 'fg-disabled cursor-not-allowed group-orientation-horizontal:border-interactive-disabled',\n },\n },\n compoundVariants: [\n {\n isSelected: true,\n isHovered: true,\n className: 'fg-highlight group-orientation-horizontal:border-highlight',\n },\n {\n isSelected: true,\n isFocused: true,\n className:\n 'fg-highlight group-orientation-horizontal:border-interactive-hover group-orientation-vertical:border-interactive-hover',\n },\n {\n isDisabled: true,\n isSelected: true,\n className:\n 'fg-disabled bg-interactive-disabled group-orientation-horizontal:border-interactive-disabled',\n },\n ],\n});\n\nexport interface TabProps extends AriaTabProps {}\n\nconst Tab = ({\n id,\n children,\n className,\n isDisabled = false,\n ...rest\n}: TabProps) => {\n return (\n <AriaTab\n id={id}\n className={({ isSelected, isHovered, isFocused, isDisabled }) =>\n cn(\n tabStyles({ isSelected, isHovered, isFocused, isDisabled }),\n className,\n )\n }\n isDisabled={isDisabled}\n {...rest}\n >\n {children}\n </AriaTab>\n );\n};\n\nTab.displayName = 'Tabs.Tab';\nTabs.Tab = Tab;\n\nexport interface TabPanelProps extends AriaTabPanelProps {}\n\nconst TabPanel = ({ id, children, className, ...rest }: TabPanelProps) => {\n return (\n <AriaTabPanel\n id={id}\n className={cn(\n 'fg-default-light p-s group-orientation-vertical:pt-0 group-orientation-horizontal:pl-0',\n className,\n )}\n {...rest}\n >\n {children}\n </AriaTabPanel>\n );\n};\n\nTabPanel.displayName = 'Tabs.Panel';\nTabs.Panel = TabPanel;\n"]}
1
+ {"version":3,"sources":["../../../src/components/tabs/index.tsx"],"names":["rest","p","jsx","AriaTabs","orientation","l","v","i","Tabs","b","variant","drawer","containsExactChildren","AriaTabList","cn","tabListStyles","m","children","TabList","id","T","tabStyles","isSelected","isDisabled","Tab","P","TabPanel"],"mappings":"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","file":"index.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\n'use client';\nimport { containsExactChildren } from '@/lib/react';\nimport { cn } from '@/lib/utils';\nimport 'client-only';\nimport { cva } from 'class-variance-authority';\nimport {\n Tab as AriaTab,\n TabList as AriaTabList,\n type TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n type TabPanelProps as AriaTabPanelProps,\n type TabProps as AriaTabProps,\n Tabs as AriaTabs,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components';\n\nexport interface TabsProps extends AriaTabsProps {}\n\n/**\n * Tabs - A tab navigation component for organizing content into sections\n *\n * Provides accessible tab navigation with keyboard support and proper ARIA implementation.\n * Supports both horizontal and vertical orientations with icon and text variants.\n * Perfect for organizing related content into separate, focusable sections.\n *\n * @example\n * // Basic horizontal tabs\n * <Tabs>\n * <Tabs.List>\n * <Tabs.Tab id=\"overview\">Overview</Tabs.Tab>\n * <Tabs.Tab id=\"details\">Details</Tabs.Tab>\n * <Tabs.Tab id=\"settings\">Settings</Tabs.Tab>\n * </Tabs.List>\n * <Tabs.Panel id=\"overview\">Overview content</Tabs.Panel>\n * <Tabs.Panel id=\"details\">Details content</Tabs.Panel>\n * <Tabs.Panel id=\"settings\">Settings content</Tabs.Panel>\n * </Tabs>\n *\n * @example\n * // Vertical tabs\n * <Tabs orientation=\"vertical\">\n * <Tabs.List>\n * <Tabs.Tab id=\"profile\">Profile</Tabs.Tab>\n * <Tabs.Tab id=\"account\">Account</Tabs.Tab>\n * </Tabs.List>\n * <Tabs.Panel id=\"profile\">Profile settings</Tabs.Panel>\n * <Tabs.Panel id=\"account\">Account settings</Tabs.Panel>\n * </Tabs>\n *\n * @example\n * // Icon tabs\n * <Tabs>\n * <Tabs.List variant=\"icons\">\n * <Tabs.Tab id=\"home\">\n * <Icon><Home /></Icon>\n * </Tabs.Tab>\n * <Tabs.Tab id=\"search\">\n * <Icon><Search /></Icon>\n * </Tabs.Tab>\n * </Tabs.List>\n * <Tabs.Panel id=\"home\">Home content</Tabs.Panel>\n * <Tabs.Panel id=\"search\">Search content</Tabs.Panel>\n * </Tabs>\n */\nexport const Tabs = ({\n children,\n className,\n orientation = 'horizontal',\n isDisabled = false,\n ...rest\n}: TabsProps) => {\n containsExactChildren({\n children,\n componentName: Tabs.displayName,\n restrictions: [[TabList, { min: 1, max: 1 }]],\n });\n\n return (\n <AriaTabs\n orientation={orientation}\n isDisabled={isDisabled}\n className={cn(\n 'group flex w-content flex-row orientation-horizontal:flex-col',\n className,\n )}\n {...rest}\n >\n {children}\n </AriaTabs>\n );\n};\n\nTabs.displayName = 'Tabs';\n\nexport interface TabListProps extends AriaTabListProps<object> {\n /** Whether the tabs are displaying iconography or text. */\n variant?: 'default' | 'icons';\n /** Whether the tabs are used as drawer controls. */\n drawer?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst tabListStyles = cva('flex orientation-horizontal:flex-row flex-col', {\n variants: {\n variant: {\n icons:\n '[&>*]:p-xs orientation-horizontal:[&>*]:pr-s orientation-horizontal:[&>*]:pl-s [&>*]:leading-[0]',\n default: '[&>*]:p-s [&>*]:text-header-m',\n },\n drawer: {\n left: 'orientation-vertical:gap-xs rounded-r-large bg-surface-default p-s',\n right:\n 'orientation-vertical:gap-xs rounded-l-large bg-surface-default p-s',\n top: 'orientation-vertical:gap-xs rounded-b-large bg-surface-default p-s',\n bottom:\n 'orientation-vertical:gap-xs rounded-t-large bg-surface-default p-s',\n },\n },\n});\n\nconst TabList = ({\n children,\n className,\n variant = 'default',\n drawer = undefined,\n ...rest\n}: TabListProps) => {\n containsExactChildren({\n children,\n componentName: TabList.displayName,\n restrictions: [[Tab, { min: 1 }]],\n });\n\n return (\n <AriaTabList\n className={cn(tabListStyles({ variant, drawer }), className)}\n {...rest}\n >\n {children}\n </AriaTabList>\n );\n};\n\nTabList.displayName = 'Tabs.List';\nTabs.List = TabList;\n\nconst tabBaseStyles = cn(\n 'fg-default-dark cursor-pointer p-s outline-none',\n 'rounded-medium group-orientation-horizontal:rounded-small group-orientation-horizontal:rounded-b-none',\n 'group-orientation-horizontal:border-static-light group-orientation-horizontal:border-b',\n 'group-orientation-vertical:border group-orientation-vertical:border-transparent',\n);\n\nconst tabStyles = cva(tabBaseStyles, {\n variants: {\n isSelected: {\n true: 'fg-highlight bg-highlight-subtle group-orientation-horizontal:border-highlight',\n },\n isHovered: {\n true: 'fg-default-light group-orientation-horizontal:border-interactive-hover',\n },\n isFocused: {\n true: 'fg-default-light group-orientation-horizontal:border-interactive-hover',\n },\n isDisabled: {\n true: 'fg-disabled cursor-not-allowed group-orientation-horizontal:border-interactive-disabled',\n },\n },\n compoundVariants: [\n {\n isSelected: true,\n isHovered: true,\n className: 'fg-highlight group-orientation-horizontal:border-highlight',\n },\n {\n isSelected: true,\n isFocused: true,\n className:\n 'fg-highlight group-orientation-horizontal:border-interactive-hover group-orientation-vertical:border-interactive-hover',\n },\n {\n isDisabled: true,\n isSelected: true,\n className:\n 'fg-disabled bg-interactive-disabled group-orientation-horizontal:border-interactive-disabled',\n },\n ],\n});\n\nexport interface TabProps extends AriaTabProps {}\n\nconst Tab = ({\n id,\n children,\n className,\n isDisabled = false,\n ...rest\n}: TabProps) => {\n return (\n <AriaTab\n id={id}\n className={({ isSelected, isHovered, isFocused, isDisabled }) =>\n cn(\n tabStyles({ isSelected, isHovered, isFocused, isDisabled }),\n className,\n )\n }\n isDisabled={isDisabled}\n {...rest}\n >\n {children}\n </AriaTab>\n );\n};\n\nTab.displayName = 'Tabs.Tab';\nTabs.Tab = Tab;\n\nexport interface TabPanelProps extends AriaTabPanelProps {}\n\nconst TabPanel = ({ id, children, className, ...rest }: TabPanelProps) => {\n return (\n <AriaTabPanel\n id={id}\n className={cn(\n 'fg-default-light p-s group-orientation-vertical:pt-0 group-orientation-horizontal:pl-0',\n className,\n )}\n {...rest}\n >\n {children}\n </AriaTabPanel>\n );\n};\n\nTabPanel.displayName = 'Tabs.Panel';\nTabs.Panel = TabPanel;\n"]}
@@ -9,6 +9,26 @@ declare function TextAreaFieldProvider({ children, ...props }: ProviderProps<Tex
9
9
  declare namespace TextAreaFieldProvider {
10
10
  var displayName: string;
11
11
  }
12
+ /**
13
+ * TextAreaField - A multi-line text input component with label and validation
14
+ *
15
+ * Provides a complete form field experience for longer text content with integrated
16
+ * label, description, and error message components. Handles validation states and
17
+ * accessibility automatically while supporting resizable text areas.
18
+ *
19
+ * @example
20
+ * // Basic text area field
21
+ * <TextAreaField label="Comments" />
22
+ *
23
+ * @example
24
+ * // Text area with validation
25
+ * <TextAreaField
26
+ * isInvalid={true}
27
+ * errorMessage='Message is required'
28
+ * label='Foo'
29
+ * isRequired
30
+ * />
31
+ */
12
32
  declare function TextAreaField({ ref, ...props }: TextAreaFieldProps): react_jsx_runtime.JSX.Element;
13
33
  declare namespace TextAreaField {
14
34
  var displayName: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/text-area-field/index.tsx"],"names":["label","input","description","TextAreaFieldContext","E","b","props","jsx","e","TextAreaFieldProvider","useContextProps","ref","M","descriptionProp","errorMessageProp","inputProps","isSmall","size","L","composeRenderProps","classNames","className","field","isInvalidProp","errorMessage","isDisabled","isInvalid","isRequired","k","V","labelProp","Label","C","Text","y","error"],"mappings":"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","file":"index.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\n'use client';\n\nimport 'client-only';\nimport type { ProviderProps } from '@/lib/types';\nimport { createContext } from 'react';\nimport {\n type ContextValue,\n FieldError,\n Text,\n TextArea,\n TextField,\n composeRenderProps,\n useContextProps,\n} from 'react-aria-components';\nimport { Label } from '../label';\nimport { TextAreaStyles } from './styles';\nimport type { TextAreaFieldProps } from './types';\n\nconst { field, label, input, description, error } = TextAreaStyles();\n\nexport const TextAreaFieldContext =\n createContext<ContextValue<TextAreaFieldProps, HTMLDivElement>>(null);\n\nfunction TextAreaFieldProvider({\n children,\n ...props\n}: ProviderProps<TextAreaFieldProps>) {\n return (\n <TextAreaFieldContext.Provider value={props}>\n {children}\n </TextAreaFieldContext.Provider>\n );\n}\nTextAreaFieldProvider.displayName = 'TextAreaField.Provider';\n\nexport function TextAreaField({ ref, ...props }: TextAreaFieldProps) {\n [props, ref] = useContextProps(props, ref ?? null, TextAreaFieldContext);\n\n const {\n classNames,\n description: descriptionProp,\n errorMessage: errorMessageProp,\n label: labelProp,\n inputProps,\n size = 'medium',\n isInvalid: isInvalidProp,\n ...rest\n } = props;\n const errorMessage = errorMessageProp || null; // Protect against empty string\n const isSmall = size === 'small';\n\n return (\n <TextField\n {...rest}\n ref={ref}\n className={composeRenderProps(classNames?.field, (className) =>\n field({ className }),\n )}\n isInvalid={isInvalidProp || (errorMessage ? true : undefined)} // Leave uncontrolled if possible to fallback to validation state\n data-size={size}\n >\n {(\n { isDisabled, isInvalid, isRequired }, // Rely on internal state, not props, since state could differ from props\n ) => (\n <>\n {!!labelProp && !isSmall && (\n <Label\n className={label({ className: classNames?.label })}\n isDisabled={isDisabled}\n isRequired={isRequired}\n >\n {labelProp}\n </Label>\n )}\n <TextArea\n {...inputProps}\n className={composeRenderProps(classNames?.input, (className) =>\n input({ className }),\n )}\n />\n {!!descriptionProp && !(isSmall || isInvalid) && (\n <Text\n slot='description'\n className={description({ className: classNames?.description })}\n >\n {descriptionProp}\n </Text>\n )}\n <FieldError\n className={composeRenderProps(classNames?.error, (className) =>\n error({ className }),\n )}\n >\n {errorMessage}\n </FieldError>\n </>\n )}\n </TextField>\n );\n}\nTextAreaField.displayName = 'TextAreaField';\nTextAreaField.Provider = TextAreaFieldProvider;\n"]}
1
+ {"version":3,"sources":["../../../src/components/text-area-field/index.tsx"],"names":["label","input","description","TextAreaFieldContext","E","b","props","jsx","e","TextAreaFieldProvider","useContextProps","ref","M","descriptionProp","errorMessageProp","inputProps","isSmall","size","L","composeRenderProps","classNames","className","field","isInvalidProp","errorMessage","isDisabled","isInvalid","isRequired","k","V","labelProp","Label","C","Text","y","error"],"mappings":"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","file":"index.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\n'use client';\n\nimport 'client-only';\nimport type { ProviderProps } from '@/lib/types';\nimport { createContext } from 'react';\nimport {\n type ContextValue,\n FieldError,\n Text,\n TextArea,\n TextField,\n composeRenderProps,\n useContextProps,\n} from 'react-aria-components';\nimport { Label } from '../label';\nimport { TextAreaStyles } from './styles';\nimport type { TextAreaFieldProps } from './types';\n\nconst { field, label, input, description, error } = TextAreaStyles();\n\nexport const TextAreaFieldContext =\n createContext<ContextValue<TextAreaFieldProps, HTMLDivElement>>(null);\n\nfunction TextAreaFieldProvider({\n children,\n ...props\n}: ProviderProps<TextAreaFieldProps>) {\n return (\n <TextAreaFieldContext.Provider value={props}>\n {children}\n </TextAreaFieldContext.Provider>\n );\n}\nTextAreaFieldProvider.displayName = 'TextAreaField.Provider';\n\n/**\n * TextAreaField - A multi-line text input component with label and validation\n *\n * Provides a complete form field experience for longer text content with integrated\n * label, description, and error message components. Handles validation states and\n * accessibility automatically while supporting resizable text areas.\n *\n * @example\n * // Basic text area field\n * <TextAreaField label=\"Comments\" />\n *\n * @example\n * // Text area with validation\n * <TextAreaField\n * isInvalid={true}\n * errorMessage='Message is required'\n * label='Foo'\n * isRequired\n * />\n */\nexport function TextAreaField({ ref, ...props }: TextAreaFieldProps) {\n [props, ref] = useContextProps(props, ref ?? null, TextAreaFieldContext);\n\n const {\n classNames,\n description: descriptionProp,\n errorMessage: errorMessageProp,\n label: labelProp,\n inputProps,\n size = 'medium',\n isInvalid: isInvalidProp,\n ...rest\n } = props;\n const errorMessage = errorMessageProp || null; // Protect against empty string\n const isSmall = size === 'small';\n\n return (\n <TextField\n {...rest}\n ref={ref}\n className={composeRenderProps(classNames?.field, (className) =>\n field({ className }),\n )}\n isInvalid={isInvalidProp || (errorMessage ? true : undefined)} // Leave uncontrolled if possible to fallback to validation state\n data-size={size}\n >\n {(\n { isDisabled, isInvalid, isRequired }, // Rely on internal state, not props, since state could differ from props\n ) => (\n <>\n {!!labelProp && !isSmall && (\n <Label\n className={label({ className: classNames?.label })}\n isDisabled={isDisabled}\n isRequired={isRequired}\n >\n {labelProp}\n </Label>\n )}\n <TextArea\n {...inputProps}\n className={composeRenderProps(classNames?.input, (className) =>\n input({ className }),\n )}\n />\n {!!descriptionProp && !(isSmall || isInvalid) && (\n <Text\n slot='description'\n className={description({ className: classNames?.description })}\n >\n {descriptionProp}\n </Text>\n )}\n <FieldError\n className={composeRenderProps(classNames?.error, (className) =>\n error({ className }),\n )}\n >\n {errorMessage}\n </FieldError>\n </>\n )}\n </TextField>\n );\n}\nTextAreaField.displayName = 'TextAreaField';\nTextAreaField.Provider = TextAreaFieldProvider;\n"]}
@@ -6,9 +6,9 @@ declare const TextAreaStyles: tailwind_variants.TVReturnType<{
6
6
  [key: string]: tailwind_merge.ClassNameValue | {
7
7
  input?: tailwind_merge.ClassNameValue;
8
8
  label?: tailwind_merge.ClassNameValue;
9
- error?: tailwind_merge.ClassNameValue;
10
9
  description?: tailwind_merge.ClassNameValue;
11
10
  field?: tailwind_merge.ClassNameValue;
11
+ error?: tailwind_merge.ClassNameValue;
12
12
  };
13
13
  };
14
14
  } | {
@@ -16,9 +16,9 @@ declare const TextAreaStyles: tailwind_variants.TVReturnType<{
16
16
  [x: string]: tailwind_merge.ClassNameValue | {
17
17
  input?: tailwind_merge.ClassNameValue;
18
18
  label?: tailwind_merge.ClassNameValue;
19
- error?: tailwind_merge.ClassNameValue;
20
19
  description?: tailwind_merge.ClassNameValue;
21
20
  field?: tailwind_merge.ClassNameValue;
21
+ error?: tailwind_merge.ClassNameValue;
22
22
  };
23
23
  };
24
24
  } | {}, {
@@ -32,9 +32,9 @@ declare const TextAreaStyles: tailwind_variants.TVReturnType<{
32
32
  [key: string]: tailwind_merge.ClassNameValue | {
33
33
  input?: tailwind_merge.ClassNameValue;
34
34
  label?: tailwind_merge.ClassNameValue;
35
- error?: tailwind_merge.ClassNameValue;
36
35
  description?: tailwind_merge.ClassNameValue;
37
36
  field?: tailwind_merge.ClassNameValue;
37
+ error?: tailwind_merge.ClassNameValue;
38
38
  };
39
39
  };
40
40
  } | {}, {
@@ -1,2 +1,2 @@
1
- import {tv}from'./../../lib/utils.js';const l=tv({slots:{field:"group/text-area-field flex flex-col gap-xs",label:"",input:["block w-full rounded-medium p-s font-display text-default-light outline outline-interactive placeholder:text-default-dark","group-size-medium/text-area-field:text-body-s group-size-small/text-area-field:text-body-xs","group-enabled/text-area-field:focus:outline-highlight","group-enabled/text-area-field:hover:outline-interactive-hover","group-enabled/text-area-field:group-invalid/text-area-field:outline-serious","group-disabled/text-area-field:text-disabled group-disabled/text-area-field:outline-interactive-disabled group-disabled/text-area-field:placeholder:text-disabled"],description:["fg-default-dark text-body-xs","group-disabled/text-area-field:fg-disabled"],error:"fg-serious text-body-xs"}});export{l as TextAreaStyles};//# sourceMappingURL=styles.js.map
1
+ import {tv}from'./../../lib/utils.js';const l=tv({slots:{field:"group/text-area-field flex flex-col gap-xs",label:"",input:["block w-full rounded-medium p-s font-display text-default-light outline outline-interactive placeholder:text-default-dark","group-size-medium/text-area-field:text-body-s group-size-small/text-area-field:text-body-xs","group-enabled/text-area-field:focus-visible:outline-highlight","group-enabled/text-area-field:hover:outline-interactive-hover","group-enabled/text-area-field:group-invalid/text-area-field:outline-serious","group-disabled/text-area-field:text-disabled group-disabled/text-area-field:outline-interactive-disabled group-disabled/text-area-field:placeholder:text-disabled"],description:["fg-default-dark text-body-xs","group-disabled/text-area-field:fg-disabled"],error:"fg-serious text-body-xs"}});export{l as TextAreaStyles};//# sourceMappingURL=styles.js.map
2
2
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/text-area-field/styles.ts"],"names":["e"],"mappings":"sCAeE,MAAA,CAAO,CACLA,EAAA,CAAA,CAAA,KAAO,CAAA,CAAA,KAAA,CAAA,4CAEP,CAAA,KAAO,CACL,EAAA,CAAA,KAAA,CAAA,CAAA,2HACA,CAAA,6FACA,CAAA,uDACA,CAAA,+DACA,CAAA,6EACA,CAAA,mKAEF,CAAA,CAAA,WACE,CAAA,CAAA,8BACA,CAAA,4CAEK,CAAA,CAAA,KAAA,CAAA,yBAEV,CAAA,CAAA","file":"styles.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 { tv } from '@/lib/utils';\n\nexport const TextAreaStyles = tv({\n slots: {\n field: 'group/text-area-field flex flex-col gap-xs',\n label: '',\n input: [\n 'block w-full rounded-medium p-s font-display text-default-light outline outline-interactive placeholder:text-default-dark',\n 'group-size-medium/text-area-field:text-body-s group-size-small/text-area-field:text-body-xs',\n 'group-enabled/text-area-field:focus:outline-highlight',\n 'group-enabled/text-area-field:hover:outline-interactive-hover',\n 'group-enabled/text-area-field:group-invalid/text-area-field:outline-serious',\n 'group-disabled/text-area-field:text-disabled group-disabled/text-area-field:outline-interactive-disabled group-disabled/text-area-field:placeholder:text-disabled',\n ],\n description: [\n 'fg-default-dark text-body-xs',\n 'group-disabled/text-area-field:fg-disabled',\n ],\n error: 'fg-serious text-body-xs',\n },\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/text-area-field/styles.ts"],"names":["e"],"mappings":"sCAeE,MAAA,CAAO,CACLA,EAAA,CAAA,CAAA,KAAO,CAAA,CAAA,KAAA,CAAA,4CAEP,CAAA,KAAO,CACL,EAAA,CAAA,KAAA,CAAA,CAAA,2HACA,CAAA,6FACA,CAAA,+DACA,CAAA,+DACA,CAAA,6EACA,CAAA,mKAEF,CAAA,CAAA,WACE,CAAA,CAAA,8BACA,CAAA,4CAEK,CAAA,CAAA,KAAA,CAAA,yBAEV,CAAA,CAAA","file":"styles.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 { tv } from '@/lib/utils';\n\nexport const TextAreaStyles = tv({\n slots: {\n field: 'group/text-area-field flex flex-col gap-xs',\n label: '',\n input: [\n 'block w-full rounded-medium p-s font-display text-default-light outline outline-interactive placeholder:text-default-dark',\n 'group-size-medium/text-area-field:text-body-s group-size-small/text-area-field:text-body-xs',\n 'group-enabled/text-area-field:focus-visible:outline-highlight',\n 'group-enabled/text-area-field:hover:outline-interactive-hover',\n 'group-enabled/text-area-field:group-invalid/text-area-field:outline-serious',\n 'group-disabled/text-area-field:text-disabled group-disabled/text-area-field:outline-interactive-disabled group-disabled/text-area-field:placeholder:text-disabled',\n ],\n description: [\n 'fg-default-dark text-body-xs',\n 'group-disabled/text-area-field:fg-disabled',\n ],\n error: 'fg-serious text-body-xs',\n },\n});\n"]}