zaravand-ui 6.0.0 → 7.0.1

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 (199) hide show
  1. package/README.md +45 -45
  2. package/dist/components/Accordion/Accordion.cjs +1 -1
  3. package/dist/components/Accordion/Accordion.interface.d.cts +8 -0
  4. package/dist/components/Accordion/Accordion.interface.d.ts +8 -0
  5. package/dist/components/Accordion/Accordion.js +226 -148
  6. package/dist/components/Accordion/Accordion.variant.cjs +1 -1
  7. package/dist/components/Accordion/Accordion.variant.js +2 -2
  8. package/dist/components/Avatar/Avatar.cjs +1 -1
  9. package/dist/components/Avatar/Avatar.js +32 -32
  10. package/dist/components/Button/Button.cjs +1 -1
  11. package/dist/components/Button/Button.interface.d.cts +0 -1
  12. package/dist/components/Button/Button.interface.d.ts +0 -1
  13. package/dist/components/Button/Button.js +41 -42
  14. package/dist/components/Button/Button.variant.cjs +1 -1
  15. package/dist/components/Button/Button.variant.d.cts +0 -1
  16. package/dist/components/Button/Button.variant.d.ts +0 -1
  17. package/dist/components/Button/Button.variant.js +2 -4
  18. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  19. package/dist/components/Checkbox/Checkbox.interface.d.cts +11 -0
  20. package/dist/components/Checkbox/Checkbox.interface.d.ts +11 -0
  21. package/dist/components/Checkbox/Checkbox.js +66 -43
  22. package/dist/components/Checkbox/Checkbox.variant.cjs +1 -1
  23. package/dist/components/Checkbox/Checkbox.variant.d.cts +9 -4
  24. package/dist/components/Checkbox/Checkbox.variant.d.ts +9 -4
  25. package/dist/components/Checkbox/Checkbox.variant.js +20 -16
  26. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  27. package/dist/components/DatePicker/DatePicker.interface.d.cts +0 -1
  28. package/dist/components/DatePicker/DatePicker.interface.d.ts +0 -1
  29. package/dist/components/DatePicker/DatePicker.js +511 -407
  30. package/dist/components/DatePicker/DatePicker.utils.cjs +1 -1
  31. package/dist/components/DatePicker/DatePicker.utils.js +101 -82
  32. package/dist/components/DatePicker/DatePicker.variant.cjs +1 -1
  33. package/dist/components/DatePicker/DatePicker.variant.d.cts +1 -3
  34. package/dist/components/DatePicker/DatePicker.variant.d.ts +1 -3
  35. package/dist/components/DatePicker/DatePicker.variant.js +14 -16
  36. package/dist/components/DatePicker/DatePickerMonthSlider.cjs +1 -0
  37. package/dist/components/DatePicker/DatePickerMonthSlider.d.cts +25 -0
  38. package/dist/components/DatePicker/DatePickerMonthSlider.d.ts +25 -0
  39. package/dist/components/DatePicker/DatePickerMonthSlider.js +98 -0
  40. package/dist/components/DatePicker/DatePickerWheel.cjs +1 -0
  41. package/dist/components/DatePicker/DatePickerWheel.d.cts +30 -0
  42. package/dist/components/DatePicker/DatePickerWheel.d.ts +30 -0
  43. package/dist/components/DatePicker/DatePickerWheel.js +156 -0
  44. package/dist/components/Dialog/Dialog.cjs +1 -1
  45. package/dist/components/Dialog/Dialog.interface.d.cts +5 -0
  46. package/dist/components/Dialog/Dialog.interface.d.ts +5 -0
  47. package/dist/components/Dialog/Dialog.js +57 -49
  48. package/dist/components/Dialog/Dialog.variant.cjs +1 -1
  49. package/dist/components/Dialog/Dialog.variant.js +1 -1
  50. package/dist/components/Dialog/DialogDragHandle.cjs +1 -0
  51. package/dist/components/Dialog/DialogDragHandle.d.cts +11 -0
  52. package/dist/components/Dialog/DialogDragHandle.d.ts +11 -0
  53. package/dist/components/Dialog/DialogDragHandle.js +55 -0
  54. package/dist/components/Input/Input.cjs +1 -1
  55. package/dist/components/Input/Input.js +38 -37
  56. package/dist/components/Input/Input.variant.cjs +1 -1
  57. package/dist/components/Input/Input.variant.d.cts +1 -3
  58. package/dist/components/Input/Input.variant.d.ts +1 -3
  59. package/dist/components/Input/Input.variant.js +9 -8
  60. package/dist/components/Pagination/Pagination.cjs +1 -1
  61. package/dist/components/Pagination/Pagination.js +90 -73
  62. package/dist/components/Pagination/Pagination.variant.cjs +1 -1
  63. package/dist/components/Pagination/Pagination.variant.d.cts +3 -1
  64. package/dist/components/Pagination/Pagination.variant.d.ts +3 -1
  65. package/dist/components/Pagination/Pagination.variant.js +12 -6
  66. package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
  67. package/dist/components/RadioGroup/RadioGroup.js +44 -41
  68. package/dist/components/RadioGroup/RadioGroup.variant.cjs +1 -1
  69. package/dist/components/RadioGroup/RadioGroup.variant.d.cts +3 -2
  70. package/dist/components/RadioGroup/RadioGroup.variant.d.ts +3 -2
  71. package/dist/components/RadioGroup/RadioGroup.variant.js +11 -21
  72. package/dist/components/Select/Select.cjs +1 -1
  73. package/dist/components/Select/Select.d.cts +1 -3
  74. package/dist/components/Select/Select.d.ts +1 -3
  75. package/dist/components/Select/Select.interface.d.cts +0 -1
  76. package/dist/components/Select/Select.interface.d.ts +0 -1
  77. package/dist/components/Select/Select.js +620 -401
  78. package/dist/components/Select/Select.variant.cjs +1 -1
  79. package/dist/components/Select/Select.variant.d.cts +5 -5
  80. package/dist/components/Select/Select.variant.d.ts +5 -5
  81. package/dist/components/Select/Select.variant.js +10 -12
  82. package/dist/components/Sheet/Sheet.variant.cjs +1 -1
  83. package/dist/components/Sheet/Sheet.variant.js +6 -6
  84. package/dist/components/Switch/Switch.cjs +1 -1
  85. package/dist/components/Switch/Switch.interface.d.cts +12 -3
  86. package/dist/components/Switch/Switch.interface.d.ts +12 -3
  87. package/dist/components/Switch/Switch.js +57 -37
  88. package/dist/components/Switch/Switch.variant.cjs +1 -1
  89. package/dist/components/Switch/Switch.variant.d.cts +9 -5
  90. package/dist/components/Switch/Switch.variant.d.ts +9 -5
  91. package/dist/components/Switch/Switch.variant.js +22 -15
  92. package/dist/components/Table/Table.cjs +1 -1
  93. package/dist/components/Table/Table.interface.d.cts +9 -0
  94. package/dist/components/Table/Table.interface.d.ts +9 -0
  95. package/dist/components/Table/Table.js +462 -271
  96. package/dist/components/Table/TableSkeletonRows.cjs +1 -1
  97. package/dist/components/Table/TableSkeletonRows.js +26 -21
  98. package/dist/components/Table/TableSortToggle.cjs +1 -1
  99. package/dist/components/Table/TableSortToggle.d.cts +1 -1
  100. package/dist/components/Table/TableSortToggle.d.ts +1 -1
  101. package/dist/components/Table/TableSortToggle.js +23 -22
  102. package/dist/components/Table/hooks/useTableCardLabels.cjs +1 -0
  103. package/dist/components/Table/hooks/useTableCardLabels.d.cts +9 -0
  104. package/dist/components/Table/hooks/useTableCardLabels.d.ts +9 -0
  105. package/dist/components/Table/hooks/useTableCardLabels.js +34 -0
  106. package/dist/components/Table/hooks/useTableSort.cjs +1 -1
  107. package/dist/components/Table/hooks/useTableSort.d.cts +2 -0
  108. package/dist/components/Table/hooks/useTableSort.d.ts +2 -0
  109. package/dist/components/Table/hooks/useTableSort.js +8 -1
  110. package/dist/components/Tabs/Tabs.cjs +1 -1
  111. package/dist/components/Tabs/Tabs.js +90 -63
  112. package/dist/components/Tabs/Tabs.variant.cjs +1 -1
  113. package/dist/components/Tabs/Tabs.variant.d.cts +2 -2
  114. package/dist/components/Tabs/Tabs.variant.d.ts +2 -2
  115. package/dist/components/Tabs/Tabs.variant.js +52 -29
  116. package/dist/components/Textarea/Textarea.cjs +1 -1
  117. package/dist/components/Textarea/Textarea.js +19 -18
  118. package/dist/components/Textarea/Textarea.variant.cjs +1 -1
  119. package/dist/components/Textarea/Textarea.variant.js +5 -5
  120. package/dist/components/TimePicker/TimePicker.cjs +1 -1
  121. package/dist/components/TimePicker/TimePicker.interface.d.cts +0 -1
  122. package/dist/components/TimePicker/TimePicker.interface.d.ts +0 -1
  123. package/dist/components/TimePicker/TimePicker.js +121 -83
  124. package/dist/components/TimePicker/TimePicker.variant.cjs +1 -1
  125. package/dist/components/TimePicker/TimePicker.variant.d.cts +1 -3
  126. package/dist/components/TimePicker/TimePicker.variant.d.ts +1 -3
  127. package/dist/components/TimePicker/TimePicker.variant.js +9 -11
  128. package/dist/components/TimePicker/TimePickerPanel.cjs +1 -1
  129. package/dist/components/TimePicker/TimePickerPanel.js +3 -4
  130. package/dist/components/TimePicker/TimePickerWheel.cjs +1 -0
  131. package/dist/components/TimePicker/TimePickerWheel.d.cts +27 -0
  132. package/dist/components/TimePicker/TimePickerWheel.d.ts +27 -0
  133. package/dist/components/TimePicker/TimePickerWheel.js +205 -0
  134. package/dist/components/Toast/Toast.cjs +1 -1
  135. package/dist/components/Toast/Toast.d.cts +1 -1
  136. package/dist/components/Toast/Toast.d.ts +1 -1
  137. package/dist/components/Toast/Toast.js +56 -34
  138. package/dist/components/Toast/Toast.variant.cjs +1 -1
  139. package/dist/components/Toast/Toast.variant.d.cts +1 -1
  140. package/dist/components/Toast/Toast.variant.d.ts +1 -1
  141. package/dist/components/Toast/Toast.variant.js +1 -1
  142. package/dist/components/Toast/ToastHost.cjs +1 -1
  143. package/dist/components/Toast/ToastHost.js +42 -41
  144. package/dist/components/Toast/function/toastHaptics.cjs +1 -0
  145. package/dist/components/Toast/function/toastHaptics.d.cts +11 -0
  146. package/dist/components/Toast/function/toastHaptics.d.ts +11 -0
  147. package/dist/components/Toast/function/toastHaptics.js +6 -0
  148. package/dist/components/Uploader/Uploader.cjs +2 -2
  149. package/dist/components/Uploader/Uploader.js +328 -158
  150. package/dist/components/Uploader/Uploader.variant.cjs +1 -1
  151. package/dist/components/Uploader/Uploader.variant.d.cts +1 -3
  152. package/dist/components/Uploader/Uploader.variant.d.ts +1 -3
  153. package/dist/components/Uploader/Uploader.variant.js +2 -5
  154. package/dist/components/shared/ActionSheet.cjs +1 -0
  155. package/dist/components/shared/ActionSheet.d.cts +26 -0
  156. package/dist/components/shared/ActionSheet.d.ts +26 -0
  157. package/dist/components/shared/ActionSheet.js +51 -0
  158. package/dist/components/shared/FieldClearButton.cjs +1 -1
  159. package/dist/components/shared/FieldClearButton.d.cts +2 -1
  160. package/dist/components/shared/FieldClearButton.d.ts +2 -1
  161. package/dist/components/shared/FieldClearButton.js +11 -10
  162. package/dist/components/shared/FieldLabel.cjs +1 -1
  163. package/dist/components/shared/FieldLabel.js +6 -6
  164. package/dist/components/shared/IconActionButton.cjs +1 -1
  165. package/dist/components/shared/IconActionButton.d.cts +6 -1
  166. package/dist/components/shared/IconActionButton.d.ts +6 -1
  167. package/dist/components/shared/IconActionButton.js +9 -11
  168. package/dist/components/shared/WheelColumn.cjs +1 -0
  169. package/dist/components/shared/WheelColumn.d.cts +29 -0
  170. package/dist/components/shared/WheelColumn.d.ts +29 -0
  171. package/dist/components/shared/WheelColumn.js +116 -0
  172. package/dist/components/shared/haptics.cjs +1 -0
  173. package/dist/components/shared/haptics.d.cts +6 -0
  174. package/dist/components/shared/haptics.d.ts +6 -0
  175. package/dist/components/shared/haptics.js +8 -0
  176. package/dist/components/shared/responsiveScale.cjs +1 -1
  177. package/dist/components/shared/responsiveScale.d.cts +7 -1
  178. package/dist/components/shared/responsiveScale.d.ts +7 -1
  179. package/dist/components/shared/responsiveScale.js +2 -6
  180. package/dist/components/shared/useStickyToolbar.cjs +1 -0
  181. package/dist/components/shared/useStickyToolbar.d.cts +17 -0
  182. package/dist/components/shared/useStickyToolbar.d.ts +17 -0
  183. package/dist/components/shared/useStickyToolbar.js +39 -0
  184. package/dist/components/shared/useWheelSize.cjs +1 -0
  185. package/dist/components/shared/useWheelSize.d.cts +10 -0
  186. package/dist/components/shared/useWheelSize.d.ts +10 -0
  187. package/dist/components/shared/useWheelSize.js +14 -0
  188. package/dist/components/shared/viewport.cjs +1 -0
  189. package/dist/components/shared/viewport.d.cts +17 -0
  190. package/dist/components/shared/viewport.d.ts +17 -0
  191. package/dist/components/shared/viewport.js +32 -0
  192. package/dist/config/messages.cjs +1 -1
  193. package/dist/config/messages.d.cts +14 -0
  194. package/dist/config/messages.d.ts +14 -0
  195. package/dist/config/messages.js +26 -8
  196. package/dist/index.cjs +1 -1
  197. package/dist/index.css +1 -1
  198. package/dist/index.js +16 -16
  199. package/package.json +2 -1
package/README.md CHANGED
@@ -1,45 +1,45 @@
1
- # zaravand-ui
2
-
3
- Reusable React UI library with centralized theme tokens.
4
-
5
- ## Install
6
-
7
- ```bash
8
- npm i zaravand-ui
9
- ```
10
-
11
- ## Usage
12
-
13
- ```tsx
14
- import "zaravand-ui/styles.css"
15
- import { Button, applyTheme } from "zaravand-ui"
16
-
17
- applyTheme({
18
- primary: "#2563EB",
19
- secondary: "#0891B2",
20
- text: "#F8FAFC",
21
- success: "#16A34A",
22
- warning: "#EAB308",
23
- danger: "#DC2626",
24
- border: "#334155",
25
- surface: "#0F172A",
26
- mutedSurface: "#1E293B",
27
- tooltipSurface: "#0B1120",
28
- })
29
-
30
- export function Example() {
31
- return <Button label="Save" />
32
- }
33
- ```
34
-
35
- ## Scripts
36
-
37
- - `npm run build`
38
- - `npm run docs:dev`
39
- - `npm run docs:build`
40
- - `npm run docs:preview`
41
-
42
- ## Documentation
43
-
44
- - Developer docs (VitePress): `docs/`
45
- - Full integration guide: `ZARAVAND_UI_INTEGRATION_GUIDE.md`
1
+ # zaravand-ui
2
+
3
+ Reusable React UI library with centralized theme tokens.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i zaravand-ui
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```tsx
14
+ import "zaravand-ui/styles.css"
15
+ import { Button, applyTheme } from "zaravand-ui"
16
+
17
+ applyTheme({
18
+ primary: "#2563EB",
19
+ secondary: "#0891B2",
20
+ text: "#F8FAFC",
21
+ success: "#16A34A",
22
+ warning: "#EAB308",
23
+ danger: "#DC2626",
24
+ border: "#334155",
25
+ surface: "#0F172A",
26
+ mutedSurface: "#1E293B",
27
+ tooltipSurface: "#0B1120",
28
+ })
29
+
30
+ export function Example() {
31
+ return <Button label="Save" />
32
+ }
33
+ ```
34
+
35
+ ## Scripts
36
+
37
+ - `npm run build`
38
+ - `npm run docs:dev`
39
+ - `npm run docs:build`
40
+ - `npm run docs:preview`
41
+
42
+ ## Documentation
43
+
44
+ - Developer docs (VitePress): `docs/`
45
+ - Full integration guide: `ZARAVAND_UI_INTEGRATION_GUIDE.md`
@@ -1 +1 @@
1
- "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`../shared/IconActionButton.cjs`),i=require(`../shared/useControllableState.cjs`),a=require(`../shared/useExclusiveAction.cjs`),o=require(`./Accordion.variant.cjs`);let s=require(`react`);s=e.__toESM(s,1);let c=require(`react/jsx-runtime`),l=require(`lucide-react`);var u=`zui:size-4`,d=s.createContext(null);function f(e){let t=s.useContext(d);if(!t)throw Error(`${e} must be used within an <Accordion> component`);return t}var p=s.createContext(null);function m(e){let t=s.useContext(p);if(!t)throw Error(`${e} must be used within an <AccordionItem> component`);return t}function h(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function g(e){return typeof e==`string`||typeof e==`number`?String(e):``}function _(e){return`${g(e.title)} ${Array.isArray(e.content)?e.content.map(e=>g(e.label)).join(` `):g(e.content)}`.toLocaleLowerCase()}var v=s.forwardRef(function({type:e=`single`,value:f,defaultValue:p,onValueChange:m,collapsible:g=!1,dir:v,items:S,searchable:C=!1,onAdd:w,onEdit:T,onDelete:E,onContentItemEdit:D,onContentItemDelete:O,className:k,children:A},j){let{messages:M,dir:N}=t.useZuiConfig(),P=v??N,[F,I]=i.useControllableState({value:s.useMemo(()=>f===void 0?void 0:h(f),[f]),defaultValue:()=>h(p)}),[L,R]=a.useExclusiveAction(),[z,B]=s.useState(``),V=C&&Array.isArray(S),H=typeof w==`function`,U=z.trim().toLocaleLowerCase(),W=s.useMemo(()=>{if(!S)return;let e=S.map((e,t)=>({item:e,originalIndex:t}));return!V||U.length===0?e:e.filter(({item:e})=>_(e).includes(U))},[S,U,V]),G=s.useCallback(t=>{I(t),e===`multiple`?m?.(t):m?.(t[0]??``)},[m,I,e]),K=s.useCallback(t=>{let n=F.includes(t);if(e===`multiple`){G(n?F.filter(e=>e!==t):[...F,t]);return}if(n){G(g?[]:F);return}G([t])},[g,G,F,e]),q=s.useCallback(async()=>{w&&await R(w)},[w,R]),J=s.useCallback(async(e,t)=>{T&&await R(()=>T({item:e,index:t}))},[T,R]),Y=s.useCallback(async(e,t)=>{E&&await R(()=>E({item:e,index:t}))},[E,R]),X=s.useCallback(async(e,t,n,r)=>{D&&await R(()=>D({item:e,itemIndex:t,contentItem:n,contentIndex:r}))},[D,R]),Z=s.useCallback(async(e,t,n,r)=>{O&&await R(()=>O({item:e,itemIndex:t,contentItem:n,contentIndex:r}))},[O,R]),Q=s.useMemo(()=>({openValues:F,toggleValue:K,dir:P,type:e}),[F,K,P,e]);return(0,c.jsx)(d.Provider,{value:Q,children:(0,c.jsxs)(`div`,{ref:j,dir:P,"data-slot":`accordion`,className:n.cn(o.accordionVariants(),k),children:[V||H?(0,c.jsx)(r.ListToolbar,{"data-slot":`accordion-controls`,searchSlot:`accordion-search-input`,actionsSlot:`accordion-actions`,className:`zui:mb-2`,search:V?{value:z,onChange:e=>B(e.target.value),placeholder:M.common.searchPlaceholder,ariaLabel:M.accordion.searchAriaLabel}:void 0,actions:H?(0,c.jsx)(r.ToolbarIconButton,{"data-slot":`accordion-action-add-button`,label:M.common.add,disabled:L,onClick:()=>void q(),icon:(0,c.jsx)(l.Plus,{})}):void 0}):null,W&&V&&W.length===0?(0,c.jsx)(`div`,{"data-slot":`accordion-empty-state`,className:o.accordionEmptyStateVariants(),children:M.accordion.noSearchResults}):null,W?W.map(({item:e,originalIndex:t})=>{let n=e.isEdit&&typeof T==`function`,i=e.isDelete&&typeof E==`function`,a=n||i?(0,c.jsxs)(c.Fragment,{children:[n?(0,c.jsx)(r.IconActionButton,{"data-slot":`accordion-action-edit-button`,label:M.common.edit,icon:(0,c.jsx)(l.Pencil,{className:u,"aria-hidden":`true`}),disabled:L,className:o.accordionActionButtonVariants({tone:`edit`}),onClick:()=>void J(e,t)}):null,i?(0,c.jsx)(r.IconActionButton,{"data-slot":`accordion-action-delete-button`,label:M.common.delete,icon:(0,c.jsx)(l.Trash2,{className:u,"aria-hidden":`true`}),disabled:L,className:o.accordionActionButtonVariants({tone:`delete`}),onClick:()=>void Y(e,t)}):null]}):void 0,s=Array.isArray(e.content)?(0,c.jsx)(`div`,{"data-slot":`accordion-content-list`,className:o.accordionContentListVariants(),children:e.content.map((n,i)=>{let a=n.isEdit&&typeof D==`function`,s=n.isDelete&&typeof O==`function`;return(0,c.jsxs)(`div`,{"data-slot":`accordion-content-list-row`,className:o.accordionContentListRowVariants(),children:[(0,c.jsx)(`span`,{className:`zui:min-w-0 zui:flex-1 zui:text-start`,children:n.label}),a?(0,c.jsx)(r.IconActionButton,{"data-slot":`accordion-content-item-edit-button`,label:M.common.edit,icon:(0,c.jsx)(l.Pencil,{className:u,"aria-hidden":`true`}),disabled:L,className:o.accordionContentActionButtonVariants({tone:`edit`}),onClick:()=>void X(e,t,n,i)}):null,s?(0,c.jsx)(r.IconActionButton,{"data-slot":`accordion-content-item-delete-button`,label:M.common.delete,icon:(0,c.jsx)(l.Trash2,{className:u,"aria-hidden":`true`}),disabled:L,className:o.accordionContentActionButtonVariants({tone:`delete`}),onClick:()=>void Z(e,t,n,i)}):null]},n.value)})}):e.content;return(0,c.jsxs)(y,{value:e.value,disabled:e.disabled,children:[(0,c.jsx)(b,{icon:e.icon,actions:a,children:e.title}),(0,c.jsx)(x,{children:s})]},e.value)}):A]})})}),y=s.forwardRef(function({value:e,disabled:t=!1,className:r,children:i},a){let{openValues:l}=f(`AccordionItem`),u=l.includes(e),d=s.useId(),m=`accordion-trigger-${d}`,h=`accordion-content-${d}`,g=s.useMemo(()=>({value:e,isOpen:u,disabled:t,triggerId:m,contentId:h}),[e,u,t,m,h]);return(0,c.jsx)(p.Provider,{value:g,children:(0,c.jsx)(`div`,{ref:a,"data-slot":`accordion-item`,"data-state":u?`open`:`closed`,"data-disabled":t?``:void 0,className:n.cn(o.accordionItemVariants(),r),children:i})})}),b=s.forwardRef(function({icon:e,actions:t,className:r,children:i},a){let{toggleValue:s}=f(`AccordionTrigger`),{value:u,isOpen:d,disabled:p,triggerId:h,contentId:g}=m(`AccordionTrigger`);return(0,c.jsxs)(`div`,{"data-slot":`accordion-trigger-row`,className:o.accordionTriggerRowVariants(),children:[(0,c.jsxs)(`button`,{ref:a,type:`button`,id:h,"aria-expanded":d,"aria-controls":g,disabled:p,"data-slot":`accordion-trigger`,"data-state":d?`open`:`closed`,onClick:()=>{p||s(u)},className:n.cn(o.accordionTriggerVariants(),r),children:[(0,c.jsx)(`span`,{className:`zui:flex-1 zui:text-start`,children:i}),e??(0,c.jsx)(l.ChevronDown,{"aria-hidden":`true`,className:n.cn(`zui:size-4 zui:shrink-0 zui:text-[var(--zui-color-text)] zui:transition-transform zui:duration-200 zui:ease-out`,d?`zui:rotate-180`:`zui:rotate-0`)})]}),t?(0,c.jsx)(`div`,{"data-slot":`accordion-trigger-actions`,className:o.accordionTriggerActionsVariants(),children:t}):null]})}),x=s.forwardRef(function({forceMount:e,className:t,children:r},i){let{isOpen:a,triggerId:s,contentId:l}=m(`AccordionContent`);return!e&&!a?null:(0,c.jsx)(`div`,{ref:i,role:`region`,id:l,"aria-labelledby":s,"data-slot":`accordion-content`,"data-state":a?`open`:`closed`,hidden:e?!a:void 0,className:n.cn(o.accordionContentVariants(),t),children:r})});exports.AccordionContent=x,exports.AccordionItem=y,exports.AccordionTrigger=b,exports.default=v;
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`../shared/ActionSheet.cjs`),i=require(`../shared/FieldClearButton.cjs`),a=require(`../shared/IconActionButton.cjs`),o=require(`../shared/useControllableState.cjs`),s=require(`../shared/useExclusiveAction.cjs`),c=require(`../shared/useStickyToolbar.cjs`),l=require(`../shared/viewport.cjs`),u=require(`./Accordion.variant.cjs`);let d=require(`react`);d=e.__toESM(d,1);let f=require(`react/jsx-runtime`),p=require(`lucide-react`);var m=`zui:size-4`,h=d.createContext(null);function g(e){let t=d.useContext(h);if(!t)throw Error(`${e} must be used within an <Accordion> component`);return t}var _=d.createContext(null);function v(e){let t=d.useContext(_);if(!t)throw Error(`${e} must be used within an <AccordionItem> component`);return t}function y(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function b(e){return typeof e==`string`||typeof e==`number`?String(e):``}function ee(e){return`${b(e.title)} ${Array.isArray(e.content)?e.content.map(e=>b(e.label)).join(` `):b(e.content)}`.toLocaleLowerCase()}var x=d.forwardRef(function({type:e=`single`,value:g,defaultValue:_,onValueChange:v,collapsible:b=!1,dir:x,items:T,searchable:te=!1,onAdd:E,onEdit:D,onDelete:O,onContentItemEdit:k,onContentItemDelete:A,stickyToolbar:j=!0,className:ne,children:re},ie){let{messages:M,dir:ae}=t.useZuiConfig(),N=x??ae,[P,F]=o.useControllableState({value:d.useMemo(()=>g===void 0?void 0:y(g),[g]),defaultValue:()=>y(_)}),[I,L]=s.useExclusiveAction(),R=l.useIsMobileViewport(),[z,B]=d.useState({open:!1,actions:[]}),V=e=>B({open:!0,actions:e}),[H,oe]=d.useState(``),U=te&&Array.isArray(T),W=typeof E==`function`,G=U||W,K=d.useRef(null),q=d.useRef(null);c.useStickyToolbar(K,q,R&&j&&G);let J=H.trim().toLocaleLowerCase(),Y=d.useMemo(()=>{if(!T)return;let e=T.map((e,t)=>({item:e,originalIndex:t}));return!U||J.length===0?e:e.filter(({item:e})=>ee(e).includes(J))},[T,J,U]),X=d.useCallback(t=>{F(t),e===`multiple`?v?.(t):v?.(t[0]??``)},[v,F,e]),Z=d.useCallback(t=>{let n=P.includes(t);if(e===`multiple`){X(n?P.filter(e=>e!==t):[...P,t]);return}if(n){X(b?[]:P);return}X([t])},[b,X,P,e]),se=d.useCallback(async()=>{E&&await L(E)},[E,L]),Q=d.useCallback(async(e,t)=>{D&&await L(()=>D({item:e,index:t}))},[D,L]),$=d.useCallback(async(e,t)=>{O&&await L(()=>O({item:e,index:t}))},[O,L]),ce=d.useCallback(async(e,t,n,r)=>{k&&await L(()=>k({item:e,itemIndex:t,contentItem:n,contentIndex:r}))},[k,L]),le=d.useCallback(async(e,t,n,r)=>{A&&await L(()=>A({item:e,itemIndex:t,contentItem:n,contentIndex:r}))},[A,L]),ue=d.useMemo(()=>({openValues:P,toggleValue:Z,dir:N,type:e}),[P,Z,N,e]);return(0,f.jsx)(h.Provider,{value:ue,children:(0,f.jsxs)(`div`,{ref:ie,dir:N,"data-slot":`accordion`,className:n.cn(u.accordionVariants(),ne),children:[G?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{ref:q,"aria-hidden":`true`,"data-slot":`accordion-sticky-sentinel`,className:`zui:-mb-2`}),(0,f.jsx)(`div`,{ref:K,"data-slot":`accordion-sticky-toolbar`,"data-sticky-toolbar":R&&j?`true`:void 0,className:`zui:mb-2`,children:(0,f.jsx)(a.ListToolbar,{"data-slot":`accordion-controls`,searchSlot:`accordion-search-input`,actionsSlot:`accordion-actions`,inlineActionsOnMobile:W,search:U?{value:H,onChange:e=>oe(e.target.value),placeholder:M.common.searchPlaceholder,ariaLabel:M.accordion.searchAriaLabel}:void 0,actions:W?(0,f.jsx)(a.ToolbarIconButton,{"data-slot":`accordion-action-add-button`,label:M.common.add,disabled:I,onClick:()=>void se(),icon:(0,f.jsx)(p.Plus,{})}):void 0})})]}):null,Y&&U&&Y.length===0?(0,f.jsx)(`div`,{"data-slot":`accordion-empty-state`,className:u.accordionEmptyStateVariants(),children:M.accordion.noSearchResults}):null,Y?Y.map(({item:e,originalIndex:t})=>{let n=e.isEdit&&typeof D==`function`,r=e.isDelete&&typeof O==`function`,o=n||r,s=e=>(0,f.jsx)(e,{className:i.CLEAR_ICON_CLASS,"aria-hidden":`true`}),c=[...n?[{key:`edit`,label:M.common.edit,icon:s(p.Pencil),onSelect:()=>void Q(e,t)}]:[],...r?[{key:`delete`,label:M.common.delete,icon:s(p.Trash2),danger:!0,onSelect:()=>void $(e,t)}]:[]],l=R&&c.length>1?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-action-menu-button`,label:M.accordion.actions,icon:(0,f.jsx)(p.EllipsisVertical,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionActionButtonVariants({tone:`edit`}),onClick:()=>V(c)}):o?(0,f.jsxs)(f.Fragment,{children:[n?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-action-edit-button`,label:M.common.edit,icon:(0,f.jsx)(p.Pencil,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionActionButtonVariants({tone:`edit`}),onClick:()=>void Q(e,t)}):null,r?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-action-delete-button`,label:M.common.delete,icon:(0,f.jsx)(p.Trash2,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionActionButtonVariants({tone:`delete`}),onClick:()=>void $(e,t)}):null]}):void 0,d=Array.isArray(e.content)?(0,f.jsx)(`div`,{"data-slot":`accordion-content-list`,className:u.accordionContentListVariants(),children:e.content.map((n,r)=>{let i=n.isEdit&&typeof k==`function`,o=n.isDelete&&typeof A==`function`,c=[...i?[{key:`edit`,label:M.common.edit,icon:s(p.Pencil),onSelect:()=>void ce(e,t,n,r)}]:[],...o?[{key:`delete`,label:M.common.delete,icon:s(p.Trash2),danger:!0,onSelect:()=>void le(e,t,n,r)}]:[]],l=R&&c.length>1;return(0,f.jsxs)(`div`,{"data-slot":`accordion-content-list-row`,className:u.accordionContentListRowVariants(),children:[(0,f.jsx)(`span`,{className:`zui:min-w-0 zui:flex-1 zui:text-start`,children:n.label}),l?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-content-item-menu-button`,label:M.accordion.actions,icon:(0,f.jsx)(p.EllipsisVertical,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionContentActionButtonVariants({tone:`edit`}),onClick:()=>V(c)}):null,!l&&i?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-content-item-edit-button`,label:M.common.edit,icon:(0,f.jsx)(p.Pencil,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionContentActionButtonVariants({tone:`edit`}),onClick:()=>void ce(e,t,n,r)}):null,!l&&o?(0,f.jsx)(a.IconActionButton,{"data-slot":`accordion-content-item-delete-button`,label:M.common.delete,icon:(0,f.jsx)(p.Trash2,{className:m,"aria-hidden":`true`}),disabled:I,className:u.accordionContentActionButtonVariants({tone:`delete`}),onClick:()=>void le(e,t,n,r)}):null]},n.value)})}):e.content;return(0,f.jsxs)(S,{value:e.value,disabled:e.disabled,children:[(0,f.jsx)(C,{icon:e.icon,actions:l,children:e.title}),(0,f.jsx)(w,{children:d})]},e.value)}):re,R?(0,f.jsx)(r.default,{open:z.open,onOpenChange:e=>B(t=>({...t,open:e})),actions:z.actions,label:M.accordion.actions}):null]})})}),S=d.forwardRef(function({value:e,disabled:t=!1,className:r,children:i},a){let{openValues:o}=g(`AccordionItem`),s=o.includes(e),c=d.useId(),l=`accordion-trigger-${c}`,p=`accordion-content-${c}`,m=d.useMemo(()=>({value:e,isOpen:s,disabled:t,triggerId:l,contentId:p}),[e,s,t,l,p]);return(0,f.jsx)(_.Provider,{value:m,children:(0,f.jsx)(`div`,{ref:a,"data-slot":`accordion-item`,"data-state":s?`open`:`closed`,"data-disabled":t?``:void 0,className:n.cn(u.accordionItemVariants(),r),children:i})})}),C=d.forwardRef(function({icon:e,actions:t,className:r,children:i},a){let{toggleValue:o}=g(`AccordionTrigger`),{value:s,isOpen:c,disabled:l,triggerId:d,contentId:m}=v(`AccordionTrigger`);return(0,f.jsxs)(`div`,{"data-slot":`accordion-trigger-row`,className:u.accordionTriggerRowVariants(),children:[(0,f.jsxs)(`button`,{ref:a,type:`button`,id:d,"aria-expanded":c,"aria-controls":m,disabled:l,"data-slot":`accordion-trigger`,"data-state":c?`open`:`closed`,onClick:()=>{l||o(s)},className:n.cn(u.accordionTriggerVariants(),r),children:[(0,f.jsx)(`span`,{className:`zui:flex-1 zui:text-start`,children:i}),e??(0,f.jsx)(p.ChevronDown,{"aria-hidden":`true`,className:n.cn(`zui:size-4 zui:shrink-0 zui:text-[var(--zui-color-text)] zui:transition-transform zui:duration-200 zui:ease-out`,c?`zui:rotate-180`:`zui:rotate-0`)})]}),t?(0,f.jsx)(`div`,{"data-slot":`accordion-trigger-actions`,className:u.accordionTriggerActionsVariants(),children:t}):null]})}),w=d.forwardRef(function({forceMount:e,className:t,children:r},i){let{isOpen:a,triggerId:o,contentId:s}=v(`AccordionContent`);return!e&&!a?null:(0,f.jsx)(`div`,{ref:i,role:`region`,id:s,"aria-labelledby":o,"data-slot":`accordion-content`,"data-state":a?`open`:`closed`,hidden:e?!a:void 0,className:n.cn(u.accordionContentVariants(),t),children:r})});exports.AccordionContent=w,exports.AccordionItem=S,exports.AccordionTrigger=C,exports.default=x;
@@ -72,6 +72,14 @@ export interface AccordionProps {
72
72
  onContentItemEdit?: AccordionContentItemEditHandler;
73
73
  /** Called when a content-list row's delete icon (`AccordionContentItem.isDelete`) is clicked. */
74
74
  onContentItemDelete?: AccordionContentItemDeleteHandler;
75
+ /**
76
+ * On phones the search and "+" button stay pinned to the top while the items scroll: they slide
77
+ * away when the user scrolls down and come back as soon as they scroll up. Set to `false` to let
78
+ * them scroll away with the page. Pin them below a fixed header of your own with the CSS variable
79
+ * `--zui-table-sticky-top` (e.g. `56px`). No effect on larger screens.
80
+ * @default true
81
+ */
82
+ stickyToolbar?: boolean;
75
83
  className?: string;
76
84
  children?: React.ReactNode;
77
85
  }
@@ -72,6 +72,14 @@ export interface AccordionProps {
72
72
  onContentItemEdit?: AccordionContentItemEditHandler;
73
73
  /** Called when a content-list row's delete icon (`AccordionContentItem.isDelete`) is clicked. */
74
74
  onContentItemDelete?: AccordionContentItemDeleteHandler;
75
+ /**
76
+ * On phones the search and "+" button stay pinned to the top while the items scroll: they slide
77
+ * away when the user scrolls down and come back as soon as they scroll up. Set to `false` to let
78
+ * them scroll away with the page. Pin them below a fixed header of your own with the CSS variable
79
+ * `--zui-table-sticky-top` (e.g. `56px`). No effect on larger screens.
80
+ * @default true
81
+ */
82
+ stickyToolbar?: boolean;
75
83
  className?: string;
76
84
  children?: React.ReactNode;
77
85
  }