zaravand-ui 5.0.1 → 6.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 (384) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/components/Accordion/Accordion.cjs +1 -0
  3. package/dist/components/Accordion/Accordion.d.cts +8 -0
  4. package/dist/components/Accordion/Accordion.d.ts +1 -1
  5. package/dist/components/Accordion/Accordion.interface.d.cts +95 -0
  6. package/dist/components/Accordion/Accordion.js +283 -0
  7. package/dist/components/Accordion/Accordion.variant.cjs +1 -0
  8. package/dist/components/Accordion/Accordion.variant.d.cts +16 -0
  9. package/dist/components/Accordion/Accordion.variant.d.ts +1 -4
  10. package/dist/components/Accordion/Accordion.variant.js +17 -0
  11. package/dist/components/Avatar/Avatar.cjs +1 -0
  12. package/dist/components/Avatar/Avatar.d.cts +6 -0
  13. package/dist/components/Avatar/Avatar.d.ts +6 -0
  14. package/dist/components/Avatar/Avatar.interface.d.cts +65 -0
  15. package/dist/components/Avatar/Avatar.interface.d.ts +65 -0
  16. package/dist/components/Avatar/Avatar.js +244 -0
  17. package/dist/components/Avatar/Avatar.utils.cjs +1 -0
  18. package/dist/components/Avatar/Avatar.utils.d.cts +6 -0
  19. package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
  20. package/dist/components/Avatar/Avatar.utils.js +8 -0
  21. package/dist/components/Avatar/Avatar.variant.cjs +1 -0
  22. package/dist/components/Avatar/Avatar.variant.d.cts +22 -0
  23. package/dist/components/Avatar/Avatar.variant.d.ts +22 -0
  24. package/dist/components/Avatar/Avatar.variant.js +54 -0
  25. package/dist/components/Button/Button.cjs +1 -0
  26. package/dist/components/Button/Button.d.cts +3 -0
  27. package/dist/components/Button/Button.d.ts +1 -2
  28. package/dist/components/Button/Button.interface.d.cts +22 -0
  29. package/dist/components/Button/Button.interface.d.ts +9 -1
  30. package/dist/components/Button/Button.js +70 -0
  31. package/dist/components/Button/Button.variant.cjs +1 -0
  32. package/dist/components/Button/Button.variant.d.cts +8 -0
  33. package/dist/components/Button/Button.variant.d.ts +7 -11
  34. package/dist/components/Button/Button.variant.js +66 -0
  35. package/dist/components/Checkbox/Checkbox.cjs +1 -0
  36. package/dist/components/Checkbox/Checkbox.d.cts +4 -0
  37. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  38. package/dist/components/Checkbox/Checkbox.interface.d.cts +24 -0
  39. package/dist/components/Checkbox/Checkbox.interface.d.ts +8 -3
  40. package/dist/components/Checkbox/Checkbox.js +48 -0
  41. package/dist/components/Checkbox/Checkbox.variant.cjs +1 -0
  42. package/dist/components/Checkbox/Checkbox.variant.d.cts +8 -0
  43. package/dist/components/Checkbox/Checkbox.variant.js +28 -0
  44. package/dist/components/DatePicker/DatePicker.cjs +1 -0
  45. package/dist/components/DatePicker/DatePicker.d.cts +6 -0
  46. package/dist/components/DatePicker/DatePicker.d.ts +5 -7
  47. package/dist/components/DatePicker/DatePicker.interface.d.cts +84 -0
  48. package/dist/components/DatePicker/DatePicker.interface.d.ts +35 -6
  49. package/dist/components/DatePicker/DatePicker.js +617 -0
  50. package/dist/components/DatePicker/DatePicker.utils.cjs +1 -0
  51. package/dist/components/DatePicker/DatePicker.utils.d.cts +73 -0
  52. package/dist/components/DatePicker/DatePicker.utils.d.ts +73 -0
  53. package/dist/components/DatePicker/DatePicker.utils.js +244 -0
  54. package/dist/components/DatePicker/DatePicker.variant.cjs +1 -0
  55. package/dist/components/DatePicker/DatePicker.variant.d.cts +20 -0
  56. package/dist/components/DatePicker/DatePicker.variant.js +27 -0
  57. package/dist/components/Dialog/Dialog.cjs +1 -0
  58. package/dist/components/Dialog/Dialog.d.cts +4 -0
  59. package/dist/components/Dialog/Dialog.d.ts +3 -2
  60. package/dist/components/Dialog/Dialog.interface.d.cts +32 -0
  61. package/dist/components/Dialog/Dialog.interface.d.ts +11 -0
  62. package/dist/components/Dialog/Dialog.js +84 -0
  63. package/dist/components/Dialog/Dialog.variant.cjs +1 -0
  64. package/dist/components/Dialog/Dialog.variant.d.cts +7 -0
  65. package/dist/components/Dialog/Dialog.variant.js +6 -0
  66. package/dist/components/Input/Input.cjs +1 -0
  67. package/dist/components/Input/Input.d.cts +4 -0
  68. package/dist/components/Input/Input.d.ts +3 -2
  69. package/dist/components/Input/Input.formatting.cjs +1 -0
  70. package/dist/components/Input/Input.formatting.d.cts +40 -0
  71. package/dist/components/Input/Input.formatting.d.ts +40 -0
  72. package/dist/components/Input/Input.formatting.js +203 -0
  73. package/dist/components/Input/Input.interface.d.cts +37 -0
  74. package/dist/components/Input/Input.interface.d.ts +10 -2
  75. package/dist/components/Input/Input.js +152 -0
  76. package/dist/components/Input/Input.variant.cjs +1 -0
  77. package/dist/components/Input/Input.variant.d.cts +4 -0
  78. package/dist/components/Input/Input.variant.js +10 -0
  79. package/dist/components/Pagination/Pagination.cjs +1 -0
  80. package/dist/components/Pagination/Pagination.d.cts +4 -0
  81. package/dist/components/Pagination/Pagination.d.ts +3 -2
  82. package/dist/components/Pagination/Pagination.interface.d.cts +12 -0
  83. package/dist/components/Pagination/Pagination.js +139 -0
  84. package/dist/components/Pagination/Pagination.variant.cjs +1 -0
  85. package/dist/components/Pagination/Pagination.variant.d.cts +11 -0
  86. package/dist/components/Pagination/Pagination.variant.js +20 -0
  87. package/dist/components/RadioGroup/RadioGroup.cjs +1 -0
  88. package/dist/components/RadioGroup/RadioGroup.d.cts +6 -0
  89. package/dist/components/RadioGroup/RadioGroup.d.ts +1 -1
  90. package/dist/components/RadioGroup/RadioGroup.interface.d.cts +34 -0
  91. package/dist/components/RadioGroup/RadioGroup.interface.d.ts +1 -1
  92. package/dist/components/RadioGroup/RadioGroup.js +95 -0
  93. package/dist/components/RadioGroup/RadioGroup.variant.cjs +1 -0
  94. package/dist/components/RadioGroup/RadioGroup.variant.d.cts +19 -0
  95. package/dist/components/RadioGroup/RadioGroup.variant.d.ts +1 -3
  96. package/dist/components/RadioGroup/RadioGroup.variant.js +63 -0
  97. package/dist/components/Select/Select.cjs +1 -0
  98. package/dist/components/Select/Select.d.cts +14 -0
  99. package/dist/components/Select/Select.d.ts +10 -16
  100. package/dist/components/Select/Select.interface.d.cts +111 -0
  101. package/dist/components/Select/Select.interface.d.ts +93 -34
  102. package/dist/components/Select/Select.js +717 -0
  103. package/dist/components/Select/Select.variant.cjs +1 -0
  104. package/dist/components/Select/Select.variant.d.cts +14 -0
  105. package/dist/components/Select/Select.variant.d.ts +4 -3
  106. package/dist/components/Select/Select.variant.js +21 -0
  107. package/dist/components/Sheet/Sheet.cjs +1 -0
  108. package/dist/components/Sheet/Sheet.d.cts +4 -0
  109. package/dist/components/Sheet/Sheet.d.ts +3 -2
  110. package/dist/components/Sheet/Sheet.interface.d.cts +32 -0
  111. package/dist/components/Sheet/Sheet.interface.d.ts +9 -0
  112. package/dist/components/Sheet/Sheet.js +82 -0
  113. package/dist/components/Sheet/Sheet.variant.cjs +1 -0
  114. package/dist/components/Sheet/Sheet.variant.d.cts +10 -0
  115. package/dist/components/Sheet/Sheet.variant.js +14 -0
  116. package/dist/components/Skeleton/Skeleton.cjs +1 -0
  117. package/dist/components/Skeleton/Skeleton.d.cts +4 -0
  118. package/dist/components/Skeleton/Skeleton.d.ts +3 -2
  119. package/dist/components/Skeleton/Skeleton.interface.d.cts +5 -0
  120. package/dist/components/Skeleton/Skeleton.interface.d.ts +2 -2
  121. package/dist/components/Skeleton/Skeleton.js +16 -0
  122. package/dist/components/Skeleton/Skeleton.variant.cjs +1 -0
  123. package/dist/components/Skeleton/Skeleton.variant.d.cts +2 -0
  124. package/dist/components/Skeleton/Skeleton.variant.js +5 -0
  125. package/dist/components/Spinner/Spinner.cjs +1 -0
  126. package/dist/components/Spinner/Spinner.d.cts +4 -0
  127. package/dist/components/Spinner/Spinner.d.ts +3 -2
  128. package/dist/components/Spinner/Spinner.interface.d.cts +13 -0
  129. package/dist/components/Spinner/Spinner.interface.d.ts +8 -1
  130. package/dist/components/Spinner/Spinner.js +28 -0
  131. package/dist/components/Spinner/Spinner.variant.cjs +1 -0
  132. package/dist/components/Spinner/Spinner.variant.d.cts +5 -0
  133. package/dist/components/Spinner/Spinner.variant.d.ts +4 -9
  134. package/dist/components/Spinner/Spinner.variant.js +29 -0
  135. package/dist/components/Switch/Switch.cjs +1 -0
  136. package/dist/components/Switch/Switch.d.cts +4 -0
  137. package/dist/components/Switch/Switch.d.ts +1 -1
  138. package/dist/components/Switch/Switch.interface.d.cts +23 -0
  139. package/dist/components/Switch/Switch.interface.d.ts +8 -3
  140. package/dist/components/Switch/Switch.js +47 -0
  141. package/dist/components/Switch/Switch.variant.cjs +1 -0
  142. package/dist/components/Switch/Switch.variant.d.cts +7 -0
  143. package/dist/components/Switch/Switch.variant.js +19 -0
  144. package/dist/components/Table/Table.cjs +1 -0
  145. package/dist/components/Table/Table.constants.cjs +1 -0
  146. package/dist/components/Table/Table.constants.d.cts +18 -0
  147. package/dist/components/Table/Table.constants.d.ts +2 -29
  148. package/dist/components/Table/Table.constants.js +4 -0
  149. package/dist/components/Table/Table.d.cts +6 -0
  150. package/dist/components/Table/Table.d.ts +4 -34
  151. package/dist/components/Table/Table.interface.d.cts +269 -0
  152. package/dist/components/Table/Table.interface.d.ts +25 -26
  153. package/dist/components/Table/Table.js +387 -0
  154. package/dist/components/Table/Table.utils.cjs +1 -0
  155. package/dist/components/Table/Table.utils.d.cts +39 -0
  156. package/dist/components/Table/Table.utils.d.ts +12 -6
  157. package/dist/components/Table/Table.utils.js +186 -0
  158. package/dist/components/Table/Table.variant.cjs +1 -0
  159. package/dist/components/Table/Table.variant.d.cts +19 -0
  160. package/dist/components/Table/Table.variant.d.ts +0 -3
  161. package/dist/components/Table/Table.variant.js +38 -0
  162. package/dist/components/Table/TableEmptyState.cjs +1 -0
  163. package/dist/components/Table/TableEmptyState.d.cts +2 -0
  164. package/dist/components/Table/TableEmptyState.d.ts +1 -1
  165. package/dist/components/Table/TableEmptyState.js +19 -0
  166. package/dist/components/Table/TablePaginationControls.cjs +1 -0
  167. package/dist/components/Table/TablePaginationControls.d.cts +2 -0
  168. package/dist/components/Table/TablePaginationControls.d.ts +1 -1
  169. package/dist/components/Table/TablePaginationControls.js +38 -0
  170. package/dist/components/Table/TableParts.cjs +1 -0
  171. package/dist/components/Table/TableParts.d.cts +16 -0
  172. package/dist/components/Table/TableParts.d.ts +16 -0
  173. package/dist/components/Table/TableParts.js +54 -0
  174. package/dist/components/Table/TableSkeletonRows.cjs +1 -0
  175. package/dist/components/Table/TableSkeletonRows.d.cts +13 -0
  176. package/dist/components/Table/TableSkeletonRows.d.ts +13 -0
  177. package/dist/components/Table/TableSkeletonRows.js +35 -0
  178. package/dist/components/Table/TableSortToggle.cjs +1 -0
  179. package/dist/components/Table/TableSortToggle.d.cts +2 -0
  180. package/dist/components/Table/TableSortToggle.d.ts +2 -2
  181. package/dist/components/Table/TableSortToggle.js +44 -0
  182. package/dist/components/Table/hooks/useTablePagination.cjs +1 -0
  183. package/dist/components/Table/hooks/useTablePagination.d.cts +34 -0
  184. package/dist/components/Table/hooks/useTablePagination.d.ts +2 -6
  185. package/dist/components/Table/hooks/useTablePagination.js +204 -0
  186. package/dist/components/Table/hooks/useTableSearch.cjs +1 -0
  187. package/dist/components/Table/hooks/useTableSearch.d.cts +20 -0
  188. package/dist/components/Table/hooks/useTableSearch.d.ts +5 -3
  189. package/dist/components/Table/hooks/useTableSearch.js +53 -0
  190. package/dist/components/Table/hooks/useTableSort.cjs +1 -0
  191. package/dist/components/Table/hooks/useTableSort.d.cts +14 -0
  192. package/dist/components/Table/hooks/useTableSort.d.ts +1 -1
  193. package/dist/components/Table/hooks/useTableSort.js +43 -0
  194. package/dist/components/Tabs/Tabs.cjs +1 -0
  195. package/dist/components/Tabs/Tabs.d.cts +8 -0
  196. package/dist/components/Tabs/Tabs.d.ts +1 -1
  197. package/dist/components/Tabs/Tabs.interface.d.cts +32 -0
  198. package/dist/components/Tabs/Tabs.interface.d.ts +1 -1
  199. package/dist/components/Tabs/Tabs.js +166 -0
  200. package/dist/components/Tabs/Tabs.variant.cjs +1 -0
  201. package/dist/components/Tabs/Tabs.variant.d.cts +18 -0
  202. package/dist/components/Tabs/Tabs.variant.js +84 -0
  203. package/dist/components/Textarea/Textarea.cjs +1 -0
  204. package/dist/components/Textarea/Textarea.d.cts +4 -0
  205. package/dist/components/Textarea/Textarea.d.ts +3 -2
  206. package/dist/components/Textarea/Textarea.interface.d.cts +34 -0
  207. package/dist/components/Textarea/Textarea.interface.d.ts +8 -2
  208. package/dist/components/Textarea/Textarea.js +114 -0
  209. package/dist/components/Textarea/Textarea.variant.cjs +1 -0
  210. package/dist/components/Textarea/Textarea.variant.d.cts +4 -0
  211. package/dist/components/Textarea/Textarea.variant.js +14 -0
  212. package/dist/components/TimePicker/TimePicker.cjs +1 -0
  213. package/dist/components/TimePicker/TimePicker.d.cts +6 -0
  214. package/dist/components/TimePicker/TimePicker.d.ts +6 -0
  215. package/dist/components/TimePicker/TimePicker.interface.d.cts +106 -0
  216. package/dist/components/TimePicker/TimePicker.interface.d.ts +106 -0
  217. package/dist/components/TimePicker/TimePicker.js +170 -0
  218. package/dist/components/TimePicker/TimePicker.utils.cjs +1 -0
  219. package/dist/components/TimePicker/TimePicker.utils.d.cts +57 -0
  220. package/dist/components/TimePicker/TimePicker.utils.d.ts +57 -0
  221. package/dist/components/TimePicker/TimePicker.utils.js +171 -0
  222. package/dist/components/TimePicker/TimePicker.variant.cjs +1 -0
  223. package/dist/components/TimePicker/TimePicker.variant.d.cts +48 -0
  224. package/dist/components/TimePicker/TimePicker.variant.d.ts +48 -0
  225. package/dist/components/TimePicker/TimePicker.variant.js +95 -0
  226. package/dist/components/TimePicker/TimePickerPanel.cjs +1 -0
  227. package/dist/components/TimePicker/TimePickerPanel.d.cts +25 -0
  228. package/dist/components/TimePicker/TimePickerPanel.d.ts +25 -0
  229. package/dist/components/TimePicker/TimePickerPanel.js +465 -0
  230. package/dist/components/Toast/Toast.cjs +1 -0
  231. package/dist/components/Toast/Toast.d.cts +13 -0
  232. package/dist/components/Toast/Toast.d.ts +2 -2
  233. package/dist/components/Toast/Toast.interface.d.cts +6 -0
  234. package/dist/components/Toast/Toast.interface.d.ts +1 -1
  235. package/dist/components/Toast/Toast.js +76 -0
  236. package/dist/components/Toast/Toast.variant.cjs +1 -0
  237. package/dist/components/Toast/Toast.variant.d.cts +9 -0
  238. package/dist/components/Toast/Toast.variant.d.ts +1 -1
  239. package/dist/components/Toast/Toast.variant.js +16 -0
  240. package/dist/components/Toast/ToastHost.cjs +1 -0
  241. package/dist/components/Toast/ToastHost.d.cts +2 -0
  242. package/dist/components/Toast/ToastHost.js +95 -0
  243. package/dist/components/Toast/function/showToast.cjs +1 -0
  244. package/dist/components/Toast/function/showToast.d.cts +33 -0
  245. package/dist/components/Toast/function/showToast.d.ts +19 -3
  246. package/dist/components/Toast/function/showToast.js +42 -0
  247. package/dist/components/Toast/function/toastVisual.cjs +1 -0
  248. package/dist/components/Toast/function/toastVisual.d.cts +10 -0
  249. package/dist/components/Toast/function/toastVisual.d.ts +1 -1
  250. package/dist/components/Toast/function/toastVisual.js +29 -0
  251. package/dist/components/Toggle/Toggle.cjs +1 -0
  252. package/dist/components/Toggle/Toggle.d.cts +4 -0
  253. package/dist/components/Toggle/Toggle.d.ts +1 -1
  254. package/dist/components/Toggle/Toggle.interface.d.cts +13 -0
  255. package/dist/components/Toggle/Toggle.interface.d.ts +1 -1
  256. package/dist/components/Toggle/Toggle.js +31 -0
  257. package/dist/components/Toggle/Toggle.variant.cjs +1 -0
  258. package/dist/components/Toggle/Toggle.variant.d.cts +5 -0
  259. package/dist/components/Toggle/Toggle.variant.js +22 -0
  260. package/dist/components/Tooltip/Tooltip.cjs +1 -0
  261. package/dist/components/Tooltip/Tooltip.d.cts +10 -0
  262. package/dist/components/Tooltip/Tooltip.d.ts +9 -2
  263. package/dist/components/Tooltip/Tooltip.interface.d.cts +16 -0
  264. package/dist/components/Tooltip/Tooltip.interface.d.ts +3 -0
  265. package/dist/components/Tooltip/Tooltip.js +48 -0
  266. package/dist/components/Tooltip/Tooltip.variant.cjs +1 -0
  267. package/dist/components/Tooltip/Tooltip.variant.d.cts +2 -0
  268. package/dist/components/Tooltip/Tooltip.variant.js +5 -0
  269. package/dist/components/Uploader/Uploader.cjs +2 -0
  270. package/dist/components/Uploader/Uploader.d.cts +4 -0
  271. package/dist/components/Uploader/Uploader.d.ts +4 -0
  272. package/dist/components/Uploader/Uploader.interface.d.cts +78 -0
  273. package/dist/components/Uploader/Uploader.interface.d.ts +78 -0
  274. package/dist/components/Uploader/Uploader.js +318 -0
  275. package/dist/components/Uploader/Uploader.utils.cjs +1 -0
  276. package/dist/components/Uploader/Uploader.utils.d.cts +21 -0
  277. package/dist/components/Uploader/Uploader.utils.d.ts +21 -0
  278. package/dist/components/Uploader/Uploader.utils.js +75 -0
  279. package/dist/components/Uploader/Uploader.variant.cjs +1 -0
  280. package/dist/components/Uploader/Uploader.variant.d.cts +8 -0
  281. package/dist/components/Uploader/Uploader.variant.d.ts +8 -0
  282. package/dist/components/Uploader/Uploader.variant.js +9 -0
  283. package/dist/components/shared/FieldClearButton.cjs +1 -0
  284. package/dist/components/shared/FieldClearButton.d.cts +16 -0
  285. package/dist/components/shared/FieldClearButton.d.ts +16 -0
  286. package/dist/components/shared/FieldClearButton.js +33 -0
  287. package/dist/components/shared/FieldLabel.cjs +1 -0
  288. package/dist/components/shared/FieldLabel.d.cts +23 -0
  289. package/dist/components/shared/FieldLabel.d.ts +23 -0
  290. package/dist/components/shared/FieldLabel.js +48 -0
  291. package/dist/components/shared/IconActionButton.cjs +1 -0
  292. package/dist/components/shared/IconActionButton.d.cts +39 -0
  293. package/dist/components/shared/IconActionButton.d.ts +39 -0
  294. package/dist/components/shared/IconActionButton.js +72 -0
  295. package/dist/components/shared/RequiredValidationInput.cjs +1 -0
  296. package/dist/components/shared/RequiredValidationInput.d.cts +15 -0
  297. package/dist/components/shared/RequiredValidationInput.d.ts +15 -0
  298. package/dist/components/shared/RequiredValidationInput.js +22 -0
  299. package/dist/components/shared/fieldStyles.cjs +1 -0
  300. package/dist/components/shared/fieldStyles.d.cts +4 -0
  301. package/dist/components/shared/fieldStyles.js +14 -0
  302. package/dist/components/shared/overlay.cjs +1 -0
  303. package/dist/components/shared/overlay.d.cts +25 -0
  304. package/dist/components/shared/overlay.d.ts +25 -0
  305. package/dist/components/shared/overlay.js +45 -0
  306. package/dist/components/shared/overlay.utils.cjs +1 -0
  307. package/dist/components/shared/overlay.utils.d.cts +6 -0
  308. package/dist/components/shared/overlay.utils.d.ts +6 -0
  309. package/dist/components/shared/overlay.utils.js +7 -0
  310. package/dist/components/shared/responsiveScale.cjs +1 -0
  311. package/dist/components/shared/responsiveScale.d.cts +23 -0
  312. package/dist/components/shared/responsiveScale.d.ts +11 -25
  313. package/dist/components/shared/responsiveScale.js +8 -0
  314. package/dist/components/shared/useBubbleInputInvalid.cjs +1 -0
  315. package/dist/components/shared/useBubbleInputInvalid.d.cts +8 -0
  316. package/dist/components/shared/useBubbleInputInvalid.d.ts +8 -0
  317. package/dist/components/shared/useBubbleInputInvalid.js +40 -0
  318. package/dist/components/shared/useControllableState.cjs +1 -0
  319. package/dist/components/shared/useControllableState.d.cts +16 -0
  320. package/dist/components/shared/useControllableState.d.ts +16 -0
  321. package/dist/components/shared/useControllableState.js +14 -0
  322. package/dist/components/shared/useExclusiveAction.cjs +1 -0
  323. package/dist/components/shared/useExclusiveAction.d.cts +9 -0
  324. package/dist/components/shared/useExclusiveAction.d.ts +9 -0
  325. package/dist/components/shared/useExclusiveAction.js +17 -0
  326. package/dist/components/shared/useInvalidState.cjs +1 -0
  327. package/dist/components/shared/useInvalidState.d.cts +11 -0
  328. package/dist/components/shared/useInvalidState.d.ts +11 -0
  329. package/dist/components/shared/useInvalidState.js +14 -0
  330. package/dist/components/shared/useIsomorphicLayoutEffect.cjs +1 -0
  331. package/dist/components/shared/useIsomorphicLayoutEffect.d.cts +6 -0
  332. package/dist/components/shared/useIsomorphicLayoutEffect.d.ts +6 -0
  333. package/dist/components/shared/useIsomorphicLayoutEffect.js +5 -0
  334. package/dist/config/ZuiConfigContext.cjs +1 -0
  335. package/dist/config/ZuiConfigContext.d.cts +13 -0
  336. package/dist/config/ZuiConfigContext.d.ts +13 -0
  337. package/dist/config/ZuiConfigContext.js +11 -0
  338. package/dist/config/ZuiConfigProvider.cjs +1 -0
  339. package/dist/config/ZuiConfigProvider.d.cts +19 -0
  340. package/dist/config/ZuiConfigProvider.d.ts +19 -0
  341. package/dist/config/ZuiConfigProvider.js +24 -0
  342. package/dist/config/messages.cjs +1 -0
  343. package/dist/config/messages.d.cts +153 -0
  344. package/dist/config/messages.d.ts +153 -0
  345. package/dist/config/messages.js +291 -0
  346. package/dist/config/useZuiConfig.cjs +1 -0
  347. package/dist/config/useZuiConfig.d.cts +3 -0
  348. package/dist/config/useZuiConfig.d.ts +3 -0
  349. package/dist/config/useZuiConfig.js +9 -0
  350. package/dist/index.cjs +1 -50
  351. package/dist/index.css +1 -1
  352. package/dist/index.d.cts +65 -0
  353. package/dist/index.d.ts +65 -51
  354. package/dist/index.js +34 -20171
  355. package/dist/lib/utils.cjs +1 -0
  356. package/dist/lib/utils.d.cts +4 -0
  357. package/dist/lib/utils.d.ts +2 -0
  358. package/dist/lib/utils.js +16 -0
  359. package/dist/services/convertToEnglishDigits/convertToEnglishDigits.cjs +1 -0
  360. package/dist/services/convertToEnglishDigits/convertToEnglishDigits.d.cts +5 -0
  361. package/dist/services/convertToEnglishDigits/convertToEnglishDigits.d.ts +1 -1
  362. package/dist/services/convertToEnglishDigits/convertToEnglishDigits.js +10 -0
  363. package/dist/services/convertToPersianDigits/convertToPersianDigits.cjs +1 -0
  364. package/dist/services/convertToPersianDigits/convertToPersianDigits.d.cts +5 -0
  365. package/dist/services/convertToPersianDigits/convertToPersianDigits.d.ts +1 -1
  366. package/dist/services/convertToPersianDigits/convertToPersianDigits.js +18 -0
  367. package/dist/services/localizeDigits/localizeDigits.cjs +1 -0
  368. package/dist/services/localizeDigits/localizeDigits.d.cts +3 -0
  369. package/dist/services/localizeDigits/localizeDigits.d.ts +3 -0
  370. package/dist/services/localizeDigits/localizeDigits.js +8 -0
  371. package/dist/shared/scale.cjs +1 -0
  372. package/dist/shared/scale.d.cts +12 -0
  373. package/dist/shared/scale.d.ts +3 -23
  374. package/dist/shared/scale.js +8 -0
  375. package/dist/shared/theme.cjs +1 -0
  376. package/dist/shared/theme.d.cts +26 -0
  377. package/dist/shared/theme.d.ts +10 -11
  378. package/dist/shared/theme.js +37 -0
  379. package/dist/shared/theme.json.cjs +1 -0
  380. package/dist/shared/theme.json.js +14 -0
  381. package/package.json +37 -13
  382. package/dist/components/Accordion/Accordion.constants.d.ts +0 -4
  383. package/dist/styles.cjs +0 -0
  384. package/dist/styles.js +0 -0
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +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;
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import type { AccordionContentProps, AccordionItemProps, AccordionProps, AccordionTriggerProps } from "./Accordion.interface.cjs";
3
+ declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
7
+ export { AccordionItem, AccordionTrigger, AccordionContent };
8
+ export default Accordion;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AccordionContentProps, AccordionItemProps, AccordionProps, AccordionTriggerProps } from "./Accordion.interface";
2
+ import type { AccordionContentProps, AccordionItemProps, AccordionProps, AccordionTriggerProps } from "./Accordion.interface.js";
3
3
  declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
4
4
  declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
5
5
  declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,95 @@
1
+ import type * as React from "react";
2
+ /**
3
+ * One row inside an item's `content` when `content` is an array — a flat,
4
+ * minimally-divided list (not a nested Accordion) rendered inside the open
5
+ * panel, with its own optional per-row edit/delete icons.
6
+ */
7
+ export interface AccordionContentItem {
8
+ value: string;
9
+ label: React.ReactNode;
10
+ /** Shows an edit icon button for this row. Requires `Accordion`'s `onContentItemEdit`. */
11
+ isEdit?: boolean;
12
+ /** Shows a delete icon button for this row. Requires `Accordion`'s `onContentItemDelete`. */
13
+ isDelete?: boolean;
14
+ }
15
+ export interface AccordionItemSchema {
16
+ value: string;
17
+ title: React.ReactNode;
18
+ /**
19
+ * Either arbitrary content (the default), or an array of `AccordionContentItem`
20
+ * rows — rendered as a flat list separated by a minimal divider, not as a
21
+ * nested Accordion.
22
+ */
23
+ content: React.ReactNode | AccordionContentItem[];
24
+ disabled?: boolean;
25
+ icon?: React.ReactNode;
26
+ /** Shows an edit icon button for this item (only in `items` data-driven mode). Requires `Accordion`'s `onEdit`. */
27
+ isEdit?: boolean;
28
+ /** Shows a delete icon button for this item (only in `items` data-driven mode). Requires `Accordion`'s `onDelete`. */
29
+ isDelete?: boolean;
30
+ }
31
+ export type AccordionItemActionInput = {
32
+ item: AccordionItemSchema;
33
+ index: number;
34
+ };
35
+ export type AccordionEditItemHandler = (input: AccordionItemActionInput) => void | Promise<void>;
36
+ export type AccordionDeleteItemHandler = (input: AccordionItemActionInput) => void | Promise<void>;
37
+ export type AccordionContentItemActionInput = {
38
+ item: AccordionItemSchema;
39
+ itemIndex: number;
40
+ contentItem: AccordionContentItem;
41
+ contentIndex: number;
42
+ };
43
+ export type AccordionContentItemEditHandler = (input: AccordionContentItemActionInput) => void | Promise<void>;
44
+ export type AccordionContentItemDeleteHandler = (input: AccordionContentItemActionInput) => void | Promise<void>;
45
+ export interface AccordionProps {
46
+ type?: "single" | "multiple";
47
+ value?: string | string[];
48
+ defaultValue?: string | string[];
49
+ onValueChange?: (value: string | string[]) => void;
50
+ collapsible?: boolean;
51
+ dir?: "rtl" | "ltr";
52
+ /**
53
+ * Data-driven usage (recommended) — same convention as Select's `options` or
54
+ * Table's `schema`: pass the items and Accordion renders them, no manual
55
+ * AccordionItem/AccordionTrigger/AccordionContent composition needed.
56
+ * When provided, `children` is ignored.
57
+ */
58
+ items?: AccordionItemSchema[];
59
+ /**
60
+ * Shows a search input above the `items` list that filters items by title
61
+ * and content text, same convention as `Table`'s `searchable`. Only applies
62
+ * in data-driven (`items`) mode.
63
+ */
64
+ searchable?: boolean;
65
+ /** Shows a "+" add button next to the search input, same convention as `Table`'s `onAdd`. */
66
+ onAdd?: () => void | Promise<void>;
67
+ /** Called when an item's edit icon (`item.isEdit`) is clicked. Same convention as `Table`'s `onEdit`. */
68
+ onEdit?: AccordionEditItemHandler;
69
+ /** Called when an item's delete icon (`item.isDelete`) is clicked. Same convention as `Table`'s `onDelete`. */
70
+ onDelete?: AccordionDeleteItemHandler;
71
+ /** Called when a content-list row's edit icon (`AccordionContentItem.isEdit`) is clicked. */
72
+ onContentItemEdit?: AccordionContentItemEditHandler;
73
+ /** Called when a content-list row's delete icon (`AccordionContentItem.isDelete`) is clicked. */
74
+ onContentItemDelete?: AccordionContentItemDeleteHandler;
75
+ className?: string;
76
+ children?: React.ReactNode;
77
+ }
78
+ export interface AccordionItemProps {
79
+ value: string;
80
+ disabled?: boolean;
81
+ className?: string;
82
+ children?: React.ReactNode;
83
+ }
84
+ export interface AccordionTriggerProps {
85
+ icon?: React.ReactNode;
86
+ /** Extra controls (e.g. edit/delete icon buttons) rendered next to the trigger but outside its clickable button, so clicking them doesn't toggle the item. */
87
+ actions?: React.ReactNode;
88
+ className?: string;
89
+ children?: React.ReactNode;
90
+ }
91
+ export interface AccordionContentProps {
92
+ forceMount?: boolean;
93
+ className?: string;
94
+ children?: React.ReactNode;
95
+ }
@@ -0,0 +1,283 @@
1
+ "use client";
2
+ import { useZuiConfig as e } from "../../config/useZuiConfig.js";
3
+ import { cn as t } from "../../lib/utils.js";
4
+ import { IconActionButton as n, ListToolbar as r, ToolbarIconButton as i } from "../shared/IconActionButton.js";
5
+ import { useControllableState as a } from "../shared/useControllableState.js";
6
+ import { useExclusiveAction as o } from "../shared/useExclusiveAction.js";
7
+ import { accordionActionButtonVariants as s, accordionContentActionButtonVariants as c, accordionContentListRowVariants as l, accordionContentListVariants as u, accordionContentVariants as d, accordionEmptyStateVariants as ee, accordionItemVariants as f, accordionTriggerActionsVariants as p, accordionTriggerRowVariants as m, accordionTriggerVariants as h, accordionVariants as te } from "./Accordion.variant.js";
8
+ import * as g from "react";
9
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
10
+ import { ChevronDown as b, Pencil as x, Plus as S, Trash2 as C } from "lucide-react";
11
+ //#region src/components/Accordion/Accordion.tsx
12
+ var w = "zui:size-4", T = g.createContext(null);
13
+ function E(e) {
14
+ let t = g.useContext(T);
15
+ if (!t) throw Error(`${e} must be used within an <Accordion> component`);
16
+ return t;
17
+ }
18
+ var D = g.createContext(null);
19
+ function O(e) {
20
+ let t = g.useContext(D);
21
+ if (!t) throw Error(`${e} must be used within an <AccordionItem> component`);
22
+ return t;
23
+ }
24
+ function k(e) {
25
+ return e === void 0 ? [] : Array.isArray(e) ? e : [e];
26
+ }
27
+ function A(e) {
28
+ return typeof e == "string" || typeof e == "number" ? String(e) : "";
29
+ }
30
+ function ne(e) {
31
+ return `${A(e.title)} ${Array.isArray(e.content) ? e.content.map((e) => A(e.label)).join(" ") : A(e.content)}`.toLocaleLowerCase();
32
+ }
33
+ var j = g.forwardRef(function({ type: d = "single", value: f, defaultValue: p, onValueChange: m, collapsible: h = !1, dir: b, items: E, searchable: D = !1, onAdd: O, onEdit: A, onDelete: j, onContentItemEdit: F, onContentItemDelete: I, className: re, children: L }, R) {
34
+ let { messages: z, dir: B } = e(), V = b ?? B, [H, U] = a({
35
+ value: g.useMemo(() => f === void 0 ? void 0 : k(f), [f]),
36
+ defaultValue: () => k(p)
37
+ }), [W, G] = o(), [K, q] = g.useState(""), J = D && Array.isArray(E), Y = typeof O == "function", X = K.trim().toLocaleLowerCase(), Z = g.useMemo(() => {
38
+ if (!E) return;
39
+ let e = E.map((e, t) => ({
40
+ item: e,
41
+ originalIndex: t
42
+ }));
43
+ return !J || X.length === 0 ? e : e.filter(({ item: e }) => ne(e).includes(X));
44
+ }, [
45
+ E,
46
+ X,
47
+ J
48
+ ]), Q = g.useCallback((e) => {
49
+ U(e), d === "multiple" ? m?.(e) : m?.(e[0] ?? "");
50
+ }, [
51
+ m,
52
+ U,
53
+ d
54
+ ]), $ = g.useCallback((e) => {
55
+ let t = H.includes(e);
56
+ if (d === "multiple") {
57
+ Q(t ? H.filter((t) => t !== e) : [...H, e]);
58
+ return;
59
+ }
60
+ if (t) {
61
+ Q(h ? [] : H);
62
+ return;
63
+ }
64
+ Q([e]);
65
+ }, [
66
+ h,
67
+ Q,
68
+ H,
69
+ d
70
+ ]), ie = g.useCallback(async () => {
71
+ O && await G(O);
72
+ }, [O, G]), ae = g.useCallback(async (e, t) => {
73
+ A && await G(() => A({
74
+ item: e,
75
+ index: t
76
+ }));
77
+ }, [A, G]), oe = g.useCallback(async (e, t) => {
78
+ j && await G(() => j({
79
+ item: e,
80
+ index: t
81
+ }));
82
+ }, [j, G]), se = g.useCallback(async (e, t, n, r) => {
83
+ F && await G(() => F({
84
+ item: e,
85
+ itemIndex: t,
86
+ contentItem: n,
87
+ contentIndex: r
88
+ }));
89
+ }, [F, G]), ce = g.useCallback(async (e, t, n, r) => {
90
+ I && await G(() => I({
91
+ item: e,
92
+ itemIndex: t,
93
+ contentItem: n,
94
+ contentIndex: r
95
+ }));
96
+ }, [I, G]), le = g.useMemo(() => ({
97
+ openValues: H,
98
+ toggleValue: $,
99
+ dir: V,
100
+ type: d
101
+ }), [
102
+ H,
103
+ $,
104
+ V,
105
+ d
106
+ ]);
107
+ return /* @__PURE__ */ v(T.Provider, {
108
+ value: le,
109
+ children: /* @__PURE__ */ y("div", {
110
+ ref: R,
111
+ dir: V,
112
+ "data-slot": "accordion",
113
+ className: t(te(), re),
114
+ children: [
115
+ J || Y ? /* @__PURE__ */ v(r, {
116
+ "data-slot": "accordion-controls",
117
+ searchSlot: "accordion-search-input",
118
+ actionsSlot: "accordion-actions",
119
+ className: "zui:mb-2",
120
+ search: J ? {
121
+ value: K,
122
+ onChange: (e) => q(e.target.value),
123
+ placeholder: z.common.searchPlaceholder,
124
+ ariaLabel: z.accordion.searchAriaLabel
125
+ } : void 0,
126
+ actions: Y ? /* @__PURE__ */ v(i, {
127
+ "data-slot": "accordion-action-add-button",
128
+ label: z.common.add,
129
+ disabled: W,
130
+ onClick: () => void ie(),
131
+ icon: /* @__PURE__ */ v(S, {})
132
+ }) : void 0
133
+ }) : null,
134
+ Z && J && Z.length === 0 ? /* @__PURE__ */ v("div", {
135
+ "data-slot": "accordion-empty-state",
136
+ className: ee(),
137
+ children: z.accordion.noSearchResults
138
+ }) : null,
139
+ Z ? Z.map(({ item: e, originalIndex: t }) => {
140
+ let r = e.isEdit && typeof A == "function", i = e.isDelete && typeof j == "function", a = r || i ? /* @__PURE__ */ y(_, { children: [r ? /* @__PURE__ */ v(n, {
141
+ "data-slot": "accordion-action-edit-button",
142
+ label: z.common.edit,
143
+ icon: /* @__PURE__ */ v(x, {
144
+ className: w,
145
+ "aria-hidden": "true"
146
+ }),
147
+ disabled: W,
148
+ className: s({ tone: "edit" }),
149
+ onClick: () => void ae(e, t)
150
+ }) : null, i ? /* @__PURE__ */ v(n, {
151
+ "data-slot": "accordion-action-delete-button",
152
+ label: z.common.delete,
153
+ icon: /* @__PURE__ */ v(C, {
154
+ className: w,
155
+ "aria-hidden": "true"
156
+ }),
157
+ disabled: W,
158
+ className: s({ tone: "delete" }),
159
+ onClick: () => void oe(e, t)
160
+ }) : null] }) : void 0, o = Array.isArray(e.content) ? /* @__PURE__ */ v("div", {
161
+ "data-slot": "accordion-content-list",
162
+ className: u(),
163
+ children: e.content.map((r, i) => {
164
+ let a = r.isEdit && typeof F == "function", o = r.isDelete && typeof I == "function";
165
+ return /* @__PURE__ */ y("div", {
166
+ "data-slot": "accordion-content-list-row",
167
+ className: l(),
168
+ children: [
169
+ /* @__PURE__ */ v("span", {
170
+ className: "zui:min-w-0 zui:flex-1 zui:text-start",
171
+ children: r.label
172
+ }),
173
+ a ? /* @__PURE__ */ v(n, {
174
+ "data-slot": "accordion-content-item-edit-button",
175
+ label: z.common.edit,
176
+ icon: /* @__PURE__ */ v(x, {
177
+ className: w,
178
+ "aria-hidden": "true"
179
+ }),
180
+ disabled: W,
181
+ className: c({ tone: "edit" }),
182
+ onClick: () => void se(e, t, r, i)
183
+ }) : null,
184
+ o ? /* @__PURE__ */ v(n, {
185
+ "data-slot": "accordion-content-item-delete-button",
186
+ label: z.common.delete,
187
+ icon: /* @__PURE__ */ v(C, {
188
+ className: w,
189
+ "aria-hidden": "true"
190
+ }),
191
+ disabled: W,
192
+ className: c({ tone: "delete" }),
193
+ onClick: () => void ce(e, t, r, i)
194
+ }) : null
195
+ ]
196
+ }, r.value);
197
+ })
198
+ }) : e.content;
199
+ return /* @__PURE__ */ y(M, {
200
+ value: e.value,
201
+ disabled: e.disabled,
202
+ children: [/* @__PURE__ */ v(N, {
203
+ icon: e.icon,
204
+ actions: a,
205
+ children: e.title
206
+ }), /* @__PURE__ */ v(P, { children: o })]
207
+ }, e.value);
208
+ }) : L
209
+ ]
210
+ })
211
+ });
212
+ }), M = g.forwardRef(function({ value: e, disabled: n = !1, className: r, children: i }, a) {
213
+ let { openValues: o } = E("AccordionItem"), s = o.includes(e), c = g.useId(), l = `accordion-trigger-${c}`, u = `accordion-content-${c}`, d = g.useMemo(() => ({
214
+ value: e,
215
+ isOpen: s,
216
+ disabled: n,
217
+ triggerId: l,
218
+ contentId: u
219
+ }), [
220
+ e,
221
+ s,
222
+ n,
223
+ l,
224
+ u
225
+ ]);
226
+ return /* @__PURE__ */ v(D.Provider, {
227
+ value: d,
228
+ children: /* @__PURE__ */ v("div", {
229
+ ref: a,
230
+ "data-slot": "accordion-item",
231
+ "data-state": s ? "open" : "closed",
232
+ "data-disabled": n ? "" : void 0,
233
+ className: t(f(), r),
234
+ children: i
235
+ })
236
+ });
237
+ }), N = g.forwardRef(function({ icon: e, actions: n, className: r, children: i }, a) {
238
+ let { toggleValue: o } = E("AccordionTrigger"), { value: s, isOpen: c, disabled: l, triggerId: u, contentId: d } = O("AccordionTrigger");
239
+ return /* @__PURE__ */ y("div", {
240
+ "data-slot": "accordion-trigger-row",
241
+ className: m(),
242
+ children: [/* @__PURE__ */ y("button", {
243
+ ref: a,
244
+ type: "button",
245
+ id: u,
246
+ "aria-expanded": c,
247
+ "aria-controls": d,
248
+ disabled: l,
249
+ "data-slot": "accordion-trigger",
250
+ "data-state": c ? "open" : "closed",
251
+ onClick: () => {
252
+ l || o(s);
253
+ },
254
+ className: t(h(), r),
255
+ children: [/* @__PURE__ */ v("span", {
256
+ className: "zui:flex-1 zui:text-start",
257
+ children: i
258
+ }), e ?? /* @__PURE__ */ v(b, {
259
+ "aria-hidden": "true",
260
+ className: t("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")
261
+ })]
262
+ }), n ? /* @__PURE__ */ v("div", {
263
+ "data-slot": "accordion-trigger-actions",
264
+ className: p(),
265
+ children: n
266
+ }) : null]
267
+ });
268
+ }), P = g.forwardRef(function({ forceMount: e, className: n, children: r }, i) {
269
+ let { isOpen: a, triggerId: o, contentId: s } = O("AccordionContent");
270
+ return !e && !a ? null : /* @__PURE__ */ v("div", {
271
+ ref: i,
272
+ role: "region",
273
+ id: s,
274
+ "aria-labelledby": o,
275
+ "data-slot": "accordion-content",
276
+ "data-state": a ? "open" : "closed",
277
+ hidden: e ? !a : void 0,
278
+ className: t(d(), n),
279
+ children: r
280
+ });
281
+ });
282
+ //#endregion
283
+ export { P as AccordionContent, M as AccordionItem, N as AccordionTrigger, j as default };
@@ -0,0 +1 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`class-variance-authority`);var t=(0,e.cva)(`zui:flex zui:w-full zui:flex-col zui:gap-2`),n=(0,e.cva)(`zui:flex zui:flex-col zui:overflow-hidden zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:transition-colors zui:duration-200 zui:ease-out`),r=(0,e.cva)(`zui:flex zui:w-full zui:items-center zui:gap-1`),i=(0,e.cva)(`zui:group/accordion-trigger zui:flex zui:min-w-0 zui:flex-1 zui:cursor-pointer zui:select-none zui:items-center zui:justify-between zui:gap-2 zui:px-4 zui:py-3 zui:text-start zui:text-sm zui:font-medium zui:leading-none zui:text-[var(--zui-color-text)] zui:outline-none zui:transition-colors zui:duration-200 zui:ease-out zui:hover:bg-[color-mix(in_srgb,var(--zui-color-primary)_12%,transparent)] zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-1 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:opacity-50`),a=(0,e.cva)(`zui:flex zui:shrink-0 zui:items-center zui:gap-1 zui:ps-1 zui:pe-4`),o=(0,e.cva)(`zui:inline-flex zui:size-8 zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:bg-transparent zui:transition-colors zui:duration-200 zui:ease-out zui:hover:bg-[var(--zui-theme-bg-muted)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-45`,{variants:{tone:{edit:`zui:text-[var(--zui-color-text)]`,delete:`zui:text-[var(--zui-color-danger)]`}},defaultVariants:{tone:`edit`}}),s=(0,e.cva)(`zui:inline-flex zui:size-7 zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:bg-transparent zui:transition-transform zui:duration-200 zui:ease-out zui:hover:scale-[1.2] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-45`,{variants:{tone:{edit:`zui:text-[var(--zui-color-text)]`,delete:`zui:text-[var(--zui-color-danger)]`}},defaultVariants:{tone:`edit`}}),c=(0,e.cva)(`zui:mx-4 zui:mb-3 zui:border-s-2 zui:border-[var(--zui-color-border)] zui:ps-4 zui:pt-1 zui:text-sm zui:leading-relaxed zui:text-[var(--zui-color-text)]`),l=(0,e.cva)(`zui:flex zui:flex-col zui:divide-y zui:divide-[var(--zui-color-border)]`),u=(0,e.cva)(`zui:flex zui:items-center zui:gap-2 zui:py-2`),d=(0,e.cva)(`zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:px-4 zui:py-7 zui:text-center zui:text-sm zui:text-[var(--zui-color-text)]`);exports.accordionActionButtonVariants=o,exports.accordionContentActionButtonVariants=s,exports.accordionContentListRowVariants=u,exports.accordionContentListVariants=l,exports.accordionContentVariants=c,exports.accordionEmptyStateVariants=d,exports.accordionItemVariants=n,exports.accordionTriggerActionsVariants=a,exports.accordionTriggerRowVariants=r,exports.accordionTriggerVariants=i,exports.accordionVariants=t;
@@ -0,0 +1,16 @@
1
+ declare const accordionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
2
+ declare const accordionItemVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
3
+ declare const accordionTriggerRowVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
4
+ declare const accordionTriggerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ declare const accordionTriggerActionsVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
6
+ declare const accordionActionButtonVariants: (props?: ({
7
+ tone?: "edit" | "delete" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ declare const accordionContentActionButtonVariants: (props?: ({
10
+ tone?: "edit" | "delete" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
+ declare const accordionContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ declare const accordionContentListVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
14
+ declare const accordionContentListRowVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
15
+ declare const accordionEmptyStateVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
16
+ export { accordionVariants, accordionItemVariants, accordionTriggerRowVariants, accordionTriggerVariants, accordionTriggerActionsVariants, accordionActionButtonVariants, accordionContentActionButtonVariants, accordionContentVariants, accordionContentListVariants, accordionContentListRowVariants, accordionEmptyStateVariants, };
@@ -12,8 +12,5 @@ declare const accordionContentActionButtonVariants: (props?: ({
12
12
  declare const accordionContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
13
  declare const accordionContentListVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
14
14
  declare const accordionContentListRowVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
15
- declare const accordionControlsRowVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
16
- declare const accordionSearchInputVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
17
- declare const accordionAddButtonWrapperVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
18
15
  declare const accordionEmptyStateVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
19
- export { accordionVariants, accordionItemVariants, accordionTriggerRowVariants, accordionTriggerVariants, accordionTriggerActionsVariants, accordionActionButtonVariants, accordionContentActionButtonVariants, accordionContentVariants, accordionContentListVariants, accordionContentListRowVariants, accordionControlsRowVariants, accordionSearchInputVariants, accordionAddButtonWrapperVariants, accordionEmptyStateVariants, };
16
+ export { accordionVariants, accordionItemVariants, accordionTriggerRowVariants, accordionTriggerVariants, accordionTriggerActionsVariants, accordionActionButtonVariants, accordionContentActionButtonVariants, accordionContentVariants, accordionContentListVariants, accordionContentListRowVariants, accordionEmptyStateVariants, };
@@ -0,0 +1,17 @@
1
+ import { cva as e } from "class-variance-authority";
2
+ //#region src/components/Accordion/Accordion.variant.ts
3
+ var t = e("zui:flex zui:w-full zui:flex-col zui:gap-2"), n = e("zui:flex zui:flex-col zui:overflow-hidden zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:transition-colors zui:duration-200 zui:ease-out"), r = e("zui:flex zui:w-full zui:items-center zui:gap-1"), i = e("zui:group/accordion-trigger zui:flex zui:min-w-0 zui:flex-1 zui:cursor-pointer zui:select-none zui:items-center zui:justify-between zui:gap-2 zui:px-4 zui:py-3 zui:text-start zui:text-sm zui:font-medium zui:leading-none zui:text-[var(--zui-color-text)] zui:outline-none zui:transition-colors zui:duration-200 zui:ease-out zui:hover:bg-[color-mix(in_srgb,var(--zui-color-primary)_12%,transparent)] zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-1 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:opacity-50"), a = e("zui:flex zui:shrink-0 zui:items-center zui:gap-1 zui:ps-1 zui:pe-4"), o = e("zui:inline-flex zui:size-8 zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:bg-transparent zui:transition-colors zui:duration-200 zui:ease-out zui:hover:bg-[var(--zui-theme-bg-muted)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-45", {
4
+ variants: { tone: {
5
+ edit: "zui:text-[var(--zui-color-text)]",
6
+ delete: "zui:text-[var(--zui-color-danger)]"
7
+ } },
8
+ defaultVariants: { tone: "edit" }
9
+ }), s = e("zui:inline-flex zui:size-7 zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:bg-transparent zui:transition-transform zui:duration-200 zui:ease-out zui:hover:scale-[1.2] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-45", {
10
+ variants: { tone: {
11
+ edit: "zui:text-[var(--zui-color-text)]",
12
+ delete: "zui:text-[var(--zui-color-danger)]"
13
+ } },
14
+ defaultVariants: { tone: "edit" }
15
+ }), c = e("zui:mx-4 zui:mb-3 zui:border-s-2 zui:border-[var(--zui-color-border)] zui:ps-4 zui:pt-1 zui:text-sm zui:leading-relaxed zui:text-[var(--zui-color-text)]"), l = e("zui:flex zui:flex-col zui:divide-y zui:divide-[var(--zui-color-border)]"), u = e("zui:flex zui:items-center zui:gap-2 zui:py-2"), d = e("zui:rounded-md zui:border zui:border-[var(--zui-color-border)] zui:px-4 zui:py-7 zui:text-center zui:text-sm zui:text-[var(--zui-color-text)]");
16
+ //#endregion
17
+ export { o as accordionActionButtonVariants, s as accordionContentActionButtonVariants, u as accordionContentListRowVariants, l as accordionContentListVariants, c as accordionContentVariants, d as accordionEmptyStateVariants, n as accordionItemVariants, a as accordionTriggerActionsVariants, r as accordionTriggerRowVariants, i as accordionTriggerVariants, t as accordionVariants };
@@ -0,0 +1 @@
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../services/localizeDigits/localizeDigits.cjs`),r=require(`../../lib/utils.cjs`),i=require(`../Button/Button.cjs`),a=require(`../Tooltip/Tooltip.cjs`),o=require(`../Toast/function/showToast.cjs`),s=require(`../Uploader/Uploader.utils.cjs`),c=require(`./Avatar.variant.cjs`),l=require(`../Dialog/Dialog.variant.cjs`),u=require(`./Avatar.utils.cjs`);let d=require(`react`);d=e.__toESM(d,1);let f=require(`react/jsx-runtime`),p=require(`lucide-react`),m=require(`@radix-ui/react-dialog`);m=e.__toESM(m,1);var h=d.createContext(null);function g({src:e,alt:n,name:g,fallback:v,size:y,shape:b,status:x,showTooltip:S=!1,previewable:C,previewSrc:w,onClick:T,onImageSelect:E,onImageRemove:D,accept:O=`image/*`,maxSizeKb:k,onReject:A,className:ee},te){let{messages:j,digits:M,dir:N}=t.useZuiConfig(),P=j.avatar,F=d.useContext(h),I=y??F?.size??`default`,L=b??F?.shape??`circle`,R=F!==null,z=d.useRef(null),[B,V]=d.useState(null),[ne,H]=d.useState(!1),U=e?B?.src===e?B.state:`loading`:`none`,W=U===`loaded`,G=(C??!T)&&W,K=!!T||G,q=!!E,J=u.getInitials(g),Y=g??n,re=v??(J?(0,f.jsx)(`span`,{"aria-hidden":`true`,dir:`auto`,children:J}):(0,f.jsx)(p.User,{className:`zui:size-[55%]`,"aria-hidden":`true`})),ie=e=>{T?.(e),G&&!e.defaultPrevented&&H(!0)},X=()=>z.current?.click(),ae=e=>{let t=e.target.files?.[0];if(e.target.value=``,!t)return;let{accepted:n,rejected:r}=s.splitAcceptedFiles([t],O,k);if(r.length>0){A?A(r[0]):o.showFallbackToast({title:P.invalidImage,message:s.describeRejection(r[0],k,M,j.uploader),type:`error`,duration:5e3},"`onReject`");return}E?.(n[0])},Z=r.cn(c.avatarVariants({size:I,shape:L,interactive:K}),R&&`zui:ring-2 zui:ring-[var(--zui-color-surface)]`,ee),Q=(0,f.jsxs)(f.Fragment,{children:[re,e&&U!==`error`?(0,f.jsx)(`img`,{src:e,alt:n??g??``,loading:`lazy`,draggable:!1,onLoad:()=>V({src:e,state:`loaded`}),onError:()=>V({src:e,state:`error`}),className:r.cn(`zui:absolute zui:inset-0 zui:size-full zui:object-cover zui:transition-opacity zui:duration-300`,W?`zui:opacity-100`:`zui:opacity-0`)},e):null,G?(0,f.jsx)(`span`,{"aria-hidden":`true`,className:`zui:absolute zui:inset-0 zui:flex zui:items-center zui:justify-center zui:bg-[var(--zui-theme-overlay-scrim)] zui:text-[var(--zui-color-on-solid)] zui:opacity-0 zui:transition-opacity zui:duration-200 zui:group-hover/avatar:opacity-100 zui:group-focus-visible/avatar:opacity-100`,children:(0,f.jsx)(p.ZoomIn,{className:`zui:size-[45%] zui:scale-75 zui:transition-transform zui:duration-200 zui:group-hover/avatar:scale-100`})}):null]}),$=K?(0,f.jsx)(`button`,{type:`button`,"data-slot":`avatar-root`,"aria-label":G?P.showImage(Y??``):Y,onClick:ie,className:Z,children:Q}):(0,f.jsx)(`span`,{"data-slot":`avatar-root`,role:`img`,"aria-label":Y,className:Z,children:Q});return(0,f.jsxs)(`span`,{ref:te,"data-slot":`avatar`,dir:N,"data-state":U,className:`zui:relative zui:inline-flex zui:shrink-0 zui:align-middle`,children:[S&&g?(0,f.jsx)(a.default,{text:g,position:`top`,trigger:$}):$,x?(0,f.jsx)(`span`,{className:c.avatarStatusVariants({status:x,size:I}),children:(0,f.jsx)(`span`,{className:`zui:sr-only`,children:P[x]})}):null,q?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(a.default,{text:P.changeImage,position:`bottom`,trigger:(0,f.jsx)(`button`,{type:`button`,"aria-label":P.changeImage,onClick:X,className:c.avatarEditButtonVariants({size:I}),children:(0,f.jsx)(p.Camera,{"aria-hidden":`true`})})}),(0,f.jsx)(`input`,{ref:z,type:`file`,tabIndex:-1,"aria-hidden":`true`,accept:O,onChange:ae,className:`zui:hidden`})]}):null,(0,f.jsx)(m.Root,{open:ne&&!!e,onOpenChange:H,children:(0,f.jsx)(m.Portal,{children:(0,f.jsx)(m.Overlay,{"data-slot":`avatar-preview-overlay`,className:l.dialogOverlayVariants(),children:(0,f.jsxs)(m.Content,{"data-slot":`avatar-preview`,dir:N,"aria-describedby":void 0,className:c.avatarPreviewContentClassName,children:[(0,f.jsx)(m.Close,{asChild:!0,children:(0,f.jsx)(`button`,{type:`button`,"aria-label":j.common.close,className:`zui:absolute zui:-top-3 zui:-end-3 zui:z-10 zui:inline-flex zui:size-9 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-full zui:border zui:border-[var(--zui-color-border)] zui:bg-[var(--zui-color-surface)] zui:p-0 zui:text-[var(--zui-color-text)] zui:shadow-md zui:outline-none zui:transition-transform zui:duration-200 zui:hover:scale-110 zui:focus-visible:shadow-[0_0_0_2px_var(--zui-theme-action-primary)]`,children:(0,f.jsx)(p.X,{className:`zui:size-4`,"aria-hidden":`true`})})}),(0,f.jsx)(_,{src:w??e,fallbackSrc:e,alt:n??g??``}),(0,f.jsxs)(`div`,{className:`zui:flex zui:max-w-full zui:flex-wrap zui:items-center zui:justify-center zui:gap-3 zui-radius-xs zui:bg-[var(--zui-color-surface)] zui:px-4 zui:py-2 zui:text-[var(--zui-color-text)] zui:shadow-md`,children:[(0,f.jsx)(m.Title,{className:`zui:m-0 zui:text-sm zui:font-semibold`,children:g??n??P.imageFallbackTitle}),q?(0,f.jsx)(i.default,{size:`sm`,variant:`secondary`,kind:`cancel`,label:P.changeImage,icon:(0,f.jsx)(p.Camera,{className:`zui:size-4`}),onClick:X}):null,D?(0,f.jsx)(i.default,{size:`sm`,variant:`danger`,kind:`cancel`,label:P.removeImage,icon:(0,f.jsx)(p.Trash2,{className:`zui:size-4`}),onClick:()=>{H(!1),D()}}):null]})]})})})})]})}function _({src:e,fallbackSrc:n,alt:r}){let{messages:i}=t.useZuiConfig(),[a,o]=d.useState(()=>new Set),s=[e,n].find(e=>!!e&&!a.has(e));return s?(0,f.jsx)(`img`,{src:s,alt:r,draggable:!1,onError:()=>o(e=>new Set(e).add(s)),className:`zui:block zui:max-h-[78vh] zui:max-w-[92vw] zui:min-w-40 zui-radius-xs zui:bg-[var(--zui-color-surface)] zui:object-contain zui:shadow-[0_24px_48px_-24px_var(--zui-effect-shadow-ink-55)]`}):(0,f.jsxs)(`div`,{className:`zui:flex zui:size-64 zui:flex-col zui:items-center zui:justify-center zui:gap-2 zui-radius-xs zui:bg-[var(--zui-color-surface)] zui:text-[var(--zui-theme-text-muted)]`,children:[(0,f.jsx)(p.ImageOff,{className:`zui:size-10`,"aria-hidden":`true`}),(0,f.jsx)(`span`,{className:`zui:text-sm`,children:i.avatar.imageLoadFailed})]})}function v({items:e,children:i,max:o,size:s=`default`,shape:l=`circle`,showTooltip:u=!0,className:p},m){let{messages:g,digits:_,dir:v}=t.useZuiConfig(),b=d.useMemo(()=>({size:s,shape:l}),[s,l]),x=e?e.map(({key:e,...t},n)=>(0,f.jsx)(y,{showTooltip:u,...t},e??`${t.name??`avatar`}-${n}`)):d.Children.toArray(i).filter(d.isValidElement),S=o!==void 0&&o>0&&x.length>o?o:x.length,C=x.length-S,w=e?e.slice(S).map(e=>e.name).filter(e=>!!e):[],T=(0,f.jsx)(`span`,{role:`img`,"aria-label":g.avatar.othersCount(n.localizeDigits(String(C),_)),className:r.cn(c.avatarVariants({size:s,shape:l}),`zui:ring-2 zui:ring-[var(--zui-color-surface)]`),children:(0,f.jsx)(`span`,{"aria-hidden":`true`,children:n.localizeDigits(`+${C}`,_)})});return(0,f.jsx)(h.Provider,{value:b,children:(0,f.jsxs)(`div`,{ref:m,"data-slot":`avatar-group`,dir:v,className:r.cn(`zui:inline-flex zui:items-center zui:[&>*]:relative zui:[&>*:hover]:z-10 zui:[&>*:focus-within]:z-10`,c.avatarGroupOverlapBySize[s],p),children:[x.slice(0,S),C>0?u&&w.length>0?(0,f.jsx)(a.default,{text:w.join(g.avatar.listSeparator),position:`top`,trigger:T}):T:null]})})}var y=d.forwardRef(g);y.displayName=`Avatar`;var b=d.forwardRef(v);b.displayName=`AvatarGroup`,exports.AvatarGroup=b,exports.default=y;
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import type { AvatarGroupProps, AvatarProps } from "./Avatar.interface.cjs";
3
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
4
+ declare const AvatarGroup: React.ForwardRefExoticComponent<AvatarGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ export { AvatarGroup };
6
+ export default Avatar;
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import type { AvatarGroupProps, AvatarProps } from "./Avatar.interface.js";
3
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
4
+ declare const AvatarGroup: React.ForwardRefExoticComponent<AvatarGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ export { AvatarGroup };
6
+ export default Avatar;
@@ -0,0 +1,65 @@
1
+ import type * as React from "react";
2
+ import type { UploaderRejection } from "../Uploader/Uploader.interface.cjs";
3
+ export type AvatarSize = "xs" | "sm" | "default" | "lg" | "xl";
4
+ export type AvatarShape = "circle" | "square";
5
+ export type AvatarStatus = "online" | "offline" | "busy" | "away";
6
+ export interface AvatarProps {
7
+ /** Image URL. When missing or failing to load, the fallback is shown. */
8
+ src?: string;
9
+ /** Image alt text. Defaults to `name`. */
10
+ alt?: string;
11
+ /** Person/entity name — used for the initials fallback, accessible label and tooltip. */
12
+ name?: string;
13
+ /** Custom fallback content. Replaces the initials/icon fallback. */
14
+ fallback?: React.ReactNode;
15
+ /** @default "default" (or the surrounding `AvatarGroup`'s size) */
16
+ size?: AvatarSize;
17
+ /** @default "circle" (or the surrounding `AvatarGroup`'s shape) */
18
+ shape?: AvatarShape;
19
+ /** Presence dot at the bottom corner. */
20
+ status?: AvatarStatus;
21
+ /** Shows `name` in a tooltip on hover/focus. */
22
+ showTooltip?: boolean;
23
+ /**
24
+ * When the image has loaded: shows a magnifier on hover and opens the image in a full-screen preview on click.
25
+ * @default true when `onClick` is not set
26
+ */
27
+ previewable?: boolean;
28
+ /** Larger image used in the preview. Defaults to `src`. */
29
+ previewSrc?: string;
30
+ /** Makes the avatar a button. Takes precedence over the preview click unless `previewable` is set explicitly. */
31
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
32
+ /** Enables editing: shows a camera button that picks a new image. The consumer updates `src`. */
33
+ onImageSelect?: (file: File) => void;
34
+ /** Shows a "remove image" action in the preview. */
35
+ onImageRemove?: () => void;
36
+ /** @default "image/*" */
37
+ accept?: string;
38
+ /** Max size of the picked image in kilobytes. */
39
+ maxSizeKb?: number;
40
+ /** Called with a rejected image. When omitted, an error toast is shown (requires a mounted `<ToastHost />`; otherwise a console warning). */
41
+ onReject?: (rejection: UploaderRejection) => void;
42
+ className?: string;
43
+ }
44
+ export type AvatarGroupItem = Omit<AvatarProps, "size" | "shape"> & {
45
+ /** React key. Defaults to `name`/index. */
46
+ key?: string;
47
+ };
48
+ export interface AvatarGroupProps {
49
+ /** Data-driven usage. When provided, `children` is ignored. */
50
+ items?: AvatarGroupItem[];
51
+ /** Manual composition with `<Avatar>` children. */
52
+ children?: React.ReactNode;
53
+ /** Maximum avatars shown before collapsing the rest into a "+N" chip. */
54
+ max?: number;
55
+ /** @default "default" */
56
+ size?: AvatarSize;
57
+ /** @default "circle" */
58
+ shape?: AvatarShape;
59
+ /**
60
+ * Tooltip with the name on each avatar (items mode) and the hidden names on the "+N" chip.
61
+ * @default true
62
+ */
63
+ showTooltip?: boolean;
64
+ className?: string;
65
+ }
@@ -0,0 +1,65 @@
1
+ import type * as React from "react";
2
+ import type { UploaderRejection } from "../Uploader/Uploader.interface.js";
3
+ export type AvatarSize = "xs" | "sm" | "default" | "lg" | "xl";
4
+ export type AvatarShape = "circle" | "square";
5
+ export type AvatarStatus = "online" | "offline" | "busy" | "away";
6
+ export interface AvatarProps {
7
+ /** Image URL. When missing or failing to load, the fallback is shown. */
8
+ src?: string;
9
+ /** Image alt text. Defaults to `name`. */
10
+ alt?: string;
11
+ /** Person/entity name — used for the initials fallback, accessible label and tooltip. */
12
+ name?: string;
13
+ /** Custom fallback content. Replaces the initials/icon fallback. */
14
+ fallback?: React.ReactNode;
15
+ /** @default "default" (or the surrounding `AvatarGroup`'s size) */
16
+ size?: AvatarSize;
17
+ /** @default "circle" (or the surrounding `AvatarGroup`'s shape) */
18
+ shape?: AvatarShape;
19
+ /** Presence dot at the bottom corner. */
20
+ status?: AvatarStatus;
21
+ /** Shows `name` in a tooltip on hover/focus. */
22
+ showTooltip?: boolean;
23
+ /**
24
+ * When the image has loaded: shows a magnifier on hover and opens the image in a full-screen preview on click.
25
+ * @default true when `onClick` is not set
26
+ */
27
+ previewable?: boolean;
28
+ /** Larger image used in the preview. Defaults to `src`. */
29
+ previewSrc?: string;
30
+ /** Makes the avatar a button. Takes precedence over the preview click unless `previewable` is set explicitly. */
31
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
32
+ /** Enables editing: shows a camera button that picks a new image. The consumer updates `src`. */
33
+ onImageSelect?: (file: File) => void;
34
+ /** Shows a "remove image" action in the preview. */
35
+ onImageRemove?: () => void;
36
+ /** @default "image/*" */
37
+ accept?: string;
38
+ /** Max size of the picked image in kilobytes. */
39
+ maxSizeKb?: number;
40
+ /** Called with a rejected image. When omitted, an error toast is shown (requires a mounted `<ToastHost />`; otherwise a console warning). */
41
+ onReject?: (rejection: UploaderRejection) => void;
42
+ className?: string;
43
+ }
44
+ export type AvatarGroupItem = Omit<AvatarProps, "size" | "shape"> & {
45
+ /** React key. Defaults to `name`/index. */
46
+ key?: string;
47
+ };
48
+ export interface AvatarGroupProps {
49
+ /** Data-driven usage. When provided, `children` is ignored. */
50
+ items?: AvatarGroupItem[];
51
+ /** Manual composition with `<Avatar>` children. */
52
+ children?: React.ReactNode;
53
+ /** Maximum avatars shown before collapsing the rest into a "+N" chip. */
54
+ max?: number;
55
+ /** @default "default" */
56
+ size?: AvatarSize;
57
+ /** @default "circle" */
58
+ shape?: AvatarShape;
59
+ /**
60
+ * Tooltip with the name on each avatar (items mode) and the hidden names on the "+N" chip.
61
+ * @default true
62
+ */
63
+ showTooltip?: boolean;
64
+ className?: string;
65
+ }