@rinzai/zen 0.11.0 → 0.14.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 (289) hide show
  1. package/README.md +37 -7
  2. package/dist/accordion/index.d.ts +41 -0
  3. package/dist/accordion/index.d.ts.map +1 -0
  4. package/dist/accordion/index.js +81 -0
  5. package/dist/animated-number/index.d.ts +3 -2
  6. package/dist/animated-number/index.d.ts.map +1 -1
  7. package/dist/animated-number/index.js +40 -38
  8. package/dist/avatar/index.d.ts +7 -2
  9. package/dist/avatar/index.d.ts.map +1 -1
  10. package/dist/avatar/index.js +17 -11
  11. package/dist/backdrop/index.d.ts +4 -4
  12. package/dist/backdrop/index.d.ts.map +1 -1
  13. package/dist/backdrop/index.js +41 -39
  14. package/dist/badge/index.d.ts +4 -2
  15. package/dist/badge/index.d.ts.map +1 -1
  16. package/dist/badge/index.js +20 -11
  17. package/dist/base.css +4 -0
  18. package/dist/breadcrumbs/index.d.ts +1 -1
  19. package/dist/breadcrumbs/index.d.ts.map +1 -1
  20. package/dist/breadcrumbs/index.js +25 -24
  21. package/dist/button/index.d.ts +3 -3
  22. package/dist/button/index.d.ts.map +1 -1
  23. package/dist/button/index.js +16 -11
  24. package/dist/button-group/index.d.ts +13 -0
  25. package/dist/button-group/index.d.ts.map +1 -0
  26. package/dist/button-group/index.js +14 -0
  27. package/dist/calendar/index.d.ts +15 -8
  28. package/dist/calendar/index.d.ts.map +1 -1
  29. package/dist/calendar/index.js +97 -91
  30. package/dist/calendar-heatmap/index.d.ts +7 -5
  31. package/dist/calendar-heatmap/index.d.ts.map +1 -1
  32. package/dist/calendar-heatmap/index.js +32 -30
  33. package/dist/canvas/geometry.js +0 -1
  34. package/dist/canvas/index.d.ts +6 -6
  35. package/dist/canvas/index.d.ts.map +1 -1
  36. package/dist/canvas/index.js +135 -133
  37. package/dist/carousel/index.d.ts +27 -0
  38. package/dist/carousel/index.d.ts.map +1 -0
  39. package/dist/carousel/index.js +162 -0
  40. package/dist/chart/index.d.ts +5 -4
  41. package/dist/chart/index.d.ts.map +1 -1
  42. package/dist/chart/index.js +137 -135
  43. package/dist/chart/palette.js +0 -1
  44. package/dist/checkbox/index.d.ts +3 -3
  45. package/dist/checkbox/index.d.ts.map +1 -1
  46. package/dist/checkbox/index.js +33 -30
  47. package/dist/chip/index.js +1 -1
  48. package/dist/code-block/index.d.ts.map +1 -1
  49. package/dist/code-block/index.js +27 -25
  50. package/dist/code-input/index.d.ts.map +1 -1
  51. package/dist/code-input/index.js +30 -24
  52. package/dist/collapse/index.d.ts +4 -3
  53. package/dist/collapse/index.d.ts.map +1 -1
  54. package/dist/collapse/index.js +42 -39
  55. package/dist/color-picker/index.d.ts +14 -7
  56. package/dist/color-picker/index.d.ts.map +1 -1
  57. package/dist/color-picker/index.js +139 -128
  58. package/dist/combobox/index.d.ts +14 -6
  59. package/dist/combobox/index.d.ts.map +1 -1
  60. package/dist/combobox/index.js +158 -146
  61. package/dist/command-palette/index.d.ts +4 -3
  62. package/dist/command-palette/index.d.ts.map +1 -1
  63. package/dist/command-palette/index.js +60 -57
  64. package/dist/confirm-dialog/index.d.ts +6 -7
  65. package/dist/confirm-dialog/index.d.ts.map +1 -1
  66. package/dist/confirm-dialog/index.js +20 -16
  67. package/dist/date-picker/index.d.ts +23 -14
  68. package/dist/date-picker/index.d.ts.map +1 -1
  69. package/dist/date-picker/index.js +109 -93
  70. package/dist/dialog/index.d.ts +3 -4
  71. package/dist/dialog/index.d.ts.map +1 -1
  72. package/dist/dialog/index.js +58 -55
  73. package/dist/disclosure/index.d.ts +8 -0
  74. package/dist/disclosure/index.d.ts.map +1 -1
  75. package/dist/disclosure/index.js +31 -32
  76. package/dist/editable-cell/index.d.ts +4 -5
  77. package/dist/editable-cell/index.d.ts.map +1 -1
  78. package/dist/editable-cell/index.js +23 -22
  79. package/dist/field/index.d.ts +8 -8
  80. package/dist/field/index.d.ts.map +1 -1
  81. package/dist/field/index.js +20 -18
  82. package/dist/filter-bar/index.d.ts +2 -2
  83. package/dist/filter-bar/index.d.ts.map +1 -1
  84. package/dist/filter-bar/index.js +38 -36
  85. package/dist/header/index.d.ts +1 -1
  86. package/dist/header/index.d.ts.map +1 -1
  87. package/dist/header/index.js +13 -11
  88. package/dist/hover-card/index.d.ts +32 -0
  89. package/dist/hover-card/index.d.ts.map +1 -0
  90. package/dist/hover-card/index.js +84 -0
  91. package/dist/icon-picker/index.d.ts +16 -5
  92. package/dist/icon-picker/index.d.ts.map +1 -1
  93. package/dist/icon-picker/index.js +42 -47
  94. package/dist/icons/micro/plus.d.ts +3 -0
  95. package/dist/icons/micro/plus.d.ts.map +1 -0
  96. package/dist/icons/micro/plus.js +17 -0
  97. package/dist/index.d.ts +37 -24
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/input/index.d.ts +5 -1
  100. package/dist/input/index.d.ts.map +1 -1
  101. package/dist/input/index.js +9 -9
  102. package/dist/input-group/index.d.ts +4 -1
  103. package/dist/input-group/index.d.ts.map +1 -1
  104. package/dist/input-group/index.js +14 -14
  105. package/dist/keypad/index.d.ts +9 -7
  106. package/dist/keypad/index.d.ts.map +1 -1
  107. package/dist/keypad/index.js +22 -19
  108. package/dist/lib.js +112 -97
  109. package/dist/load-more/index.d.ts +4 -2
  110. package/dist/load-more/index.d.ts.map +1 -1
  111. package/dist/load-more/index.js +26 -23
  112. package/dist/locale-provider/index.d.ts +23 -0
  113. package/dist/locale-provider/index.d.ts.map +1 -0
  114. package/dist/locale-provider/index.js +35 -0
  115. package/dist/menu/index.d.ts +62 -9
  116. package/dist/menu/index.d.ts.map +1 -1
  117. package/dist/menu/index.js +371 -128
  118. package/dist/meter/index.d.ts +2 -2
  119. package/dist/meter/index.d.ts.map +1 -1
  120. package/dist/meter/index.js +4 -4
  121. package/dist/money-input/index.d.ts +20 -10
  122. package/dist/money-input/index.d.ts.map +1 -1
  123. package/dist/money-input/index.js +199 -190
  124. package/dist/month-picker/index.d.ts +17 -10
  125. package/dist/month-picker/index.d.ts.map +1 -1
  126. package/dist/month-picker/index.js +97 -86
  127. package/dist/navigation-menu/index.d.ts +42 -0
  128. package/dist/navigation-menu/index.d.ts.map +1 -0
  129. package/dist/navigation-menu/index.js +144 -0
  130. package/dist/number-field/index.d.ts +50 -0
  131. package/dist/number-field/index.d.ts.map +1 -0
  132. package/dist/number-field/index.js +133 -0
  133. package/dist/page-header/index.d.ts +4 -3
  134. package/dist/page-header/index.d.ts.map +1 -1
  135. package/dist/page-header/index.js +2 -1
  136. package/dist/pagination/index.d.ts +1 -1
  137. package/dist/pagination/index.d.ts.map +1 -1
  138. package/dist/pagination/index.js +35 -33
  139. package/dist/progress-ring/index.d.ts +4 -3
  140. package/dist/progress-ring/index.d.ts.map +1 -1
  141. package/dist/progress-ring/index.js +11 -10
  142. package/dist/radio-cards/index.d.ts +9 -5
  143. package/dist/radio-cards/index.d.ts.map +1 -1
  144. package/dist/radio-cards/index.js +26 -24
  145. package/dist/radio-group/index.d.ts +9 -8
  146. package/dist/radio-group/index.d.ts.map +1 -1
  147. package/dist/radio-group/index.js +35 -34
  148. package/dist/range-slider/index.d.ts +10 -4
  149. package/dist/range-slider/index.d.ts.map +1 -1
  150. package/dist/range-slider/index.js +43 -31
  151. package/dist/repeat-picker/index.d.ts +13 -6
  152. package/dist/repeat-picker/index.d.ts.map +1 -1
  153. package/dist/repeat-picker/index.js +73 -61
  154. package/dist/resizable/index.d.ts +29 -0
  155. package/dist/resizable/index.d.ts.map +1 -0
  156. package/dist/resizable/index.js +135 -0
  157. package/dist/segmented/index.d.ts +8 -5
  158. package/dist/segmented/index.d.ts.map +1 -1
  159. package/dist/segmented/index.js +36 -34
  160. package/dist/select/index.d.ts +9 -3
  161. package/dist/select/index.d.ts.map +1 -1
  162. package/dist/select/index.js +99 -96
  163. package/dist/separator/index.d.ts +14 -0
  164. package/dist/separator/index.d.ts.map +1 -0
  165. package/dist/separator/index.js +15 -0
  166. package/dist/side-nav/index.js +1 -1
  167. package/dist/skeleton/index.d.ts +4 -4
  168. package/dist/skeleton/index.d.ts.map +1 -1
  169. package/dist/skeleton/index.js +4 -3
  170. package/dist/slider/index.d.ts +6 -3
  171. package/dist/slider/index.d.ts.map +1 -1
  172. package/dist/slider/index.js +29 -23
  173. package/dist/sortable/index.d.ts +10 -20
  174. package/dist/sortable/index.d.ts.map +1 -1
  175. package/dist/sortable/index.js +72 -134
  176. package/dist/sortable/shared.d.ts +56 -0
  177. package/dist/sortable/shared.d.ts.map +1 -0
  178. package/dist/sortable/shared.js +104 -0
  179. package/dist/sortable/tree-model.d.ts +46 -0
  180. package/dist/sortable/tree-model.d.ts.map +1 -0
  181. package/dist/sortable/tree-model.js +87 -0
  182. package/dist/sortable/tree.d.ts +31 -0
  183. package/dist/sortable/tree.d.ts.map +1 -0
  184. package/dist/sortable/tree.js +150 -0
  185. package/dist/sparkline/index.d.ts +1 -1
  186. package/dist/sparkline/index.d.ts.map +1 -1
  187. package/dist/sparkline/index.js +26 -25
  188. package/dist/spinner/index.d.ts +4 -3
  189. package/dist/spinner/index.d.ts.map +1 -1
  190. package/dist/spinner/index.js +2 -1
  191. package/dist/status-pill/index.d.ts.map +1 -1
  192. package/dist/status-pill/index.js +1 -1
  193. package/dist/stepper/index.d.ts +1 -1
  194. package/dist/stepper/index.d.ts.map +1 -1
  195. package/dist/stepper/index.js +31 -30
  196. package/dist/tab-bar/index.js +1 -1
  197. package/dist/table/index.d.ts +5 -5
  198. package/dist/table/index.d.ts.map +1 -1
  199. package/dist/table/index.js +66 -64
  200. package/dist/table/selection.d.ts +2 -2
  201. package/dist/table/selection.d.ts.map +1 -1
  202. package/dist/table/selection.js +41 -38
  203. package/dist/table/swipe.d.ts +1 -1
  204. package/dist/table/swipe.d.ts.map +1 -1
  205. package/dist/table/swipe.js +1 -1
  206. package/dist/table-of-contents/index.d.ts +4 -2
  207. package/dist/table-of-contents/index.d.ts.map +1 -1
  208. package/dist/table-of-contents/index.js +27 -25
  209. package/dist/tabs/index.d.ts.map +1 -1
  210. package/dist/tabs/index.js +90 -88
  211. package/dist/tag-input/index.d.ts +3 -1
  212. package/dist/tag-input/index.d.ts.map +1 -1
  213. package/dist/tag-input/index.js +61 -52
  214. package/dist/theme-toggle/index.d.ts +9 -8
  215. package/dist/theme-toggle/index.d.ts.map +1 -1
  216. package/dist/theme-toggle/index.js +30 -28
  217. package/dist/theme.css +90 -12
  218. package/dist/time-field/index.d.ts +31 -0
  219. package/dist/time-field/index.d.ts.map +1 -0
  220. package/dist/time-field/index.js +175 -0
  221. package/dist/timeline/index.js +1 -1
  222. package/dist/toast/index.d.ts +1 -1
  223. package/dist/toast/index.d.ts.map +1 -1
  224. package/dist/toast/index.js +127 -125
  225. package/dist/toggle/index.d.ts +2 -2
  226. package/dist/toggle/index.d.ts.map +1 -1
  227. package/dist/toggle/index.js +8 -6
  228. package/dist/toggle-group/index.d.ts +35 -0
  229. package/dist/toggle-group/index.d.ts.map +1 -0
  230. package/dist/toggle-group/index.js +53 -0
  231. package/dist/toolbar/index.d.ts +19 -0
  232. package/dist/toolbar/index.d.ts.map +1 -0
  233. package/dist/toolbar/index.js +36 -0
  234. package/dist/tooltip/index.d.ts.map +1 -1
  235. package/dist/tooltip/index.js +40 -74
  236. package/dist/tree/index.d.ts.map +1 -1
  237. package/dist/tree/index.js +105 -102
  238. package/dist/trend/index.d.ts +2 -2
  239. package/dist/trend/index.d.ts.map +1 -1
  240. package/dist/trend/index.js +20 -19
  241. package/dist/utils/color.js +0 -1
  242. package/dist/utils/cva.js +0 -1
  243. package/dist/utils/cx.js +0 -1
  244. package/dist/utils/date.d.ts +6 -0
  245. package/dist/utils/date.d.ts.map +1 -1
  246. package/dist/utils/date.js +1 -2
  247. package/dist/utils/direction.d.ts +7 -0
  248. package/dist/utils/direction.d.ts.map +1 -0
  249. package/dist/utils/direction.js +6 -0
  250. package/dist/utils/form-value.d.ts +15 -0
  251. package/dist/utils/form-value.d.ts.map +1 -0
  252. package/dist/utils/form-value.js +29 -0
  253. package/dist/utils/fx.js +0 -1
  254. package/dist/utils/merge.js +0 -1
  255. package/dist/utils/messages.d.ts +137 -0
  256. package/dist/utils/messages.d.ts.map +1 -0
  257. package/dist/utils/messages.js +133 -0
  258. package/dist/utils/money.js +0 -1
  259. package/dist/utils/month.js +0 -1
  260. package/dist/utils/motion.js +0 -1
  261. package/dist/utils/refs.d.ts +6 -0
  262. package/dist/utils/refs.d.ts.map +1 -0
  263. package/dist/utils/refs.js +13 -0
  264. package/dist/utils/repeat.d.ts +3 -1
  265. package/dist/utils/repeat.d.ts.map +1 -1
  266. package/dist/utils/repeat.js +28 -25
  267. package/dist/utils/roving.d.ts +17 -0
  268. package/dist/utils/roving.d.ts.map +1 -0
  269. package/dist/utils/roving.js +35 -0
  270. package/dist/utils/section-link.js +0 -1
  271. package/dist/utils/slot.d.ts.map +1 -1
  272. package/dist/utils/slot.js +7 -11
  273. package/dist/utils/status-icons.js +7 -7
  274. package/dist/utils/styles.d.ts +9 -2
  275. package/dist/utils/styles.d.ts.map +1 -1
  276. package/dist/utils/styles.js +6 -3
  277. package/dist/utils/theme-wave.js +0 -1
  278. package/dist/utils/theme.js +0 -1
  279. package/dist/utils/useAnchoredPopup.d.ts +7 -4
  280. package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
  281. package/dist/utils/useAnchoredPopup.js +18 -11
  282. package/dist/utils/useControllable.d.ts +9 -0
  283. package/dist/utils/useControllable.d.ts.map +1 -0
  284. package/dist/utils/useControllable.js +15 -0
  285. package/dist/utils/useHoverPopup.d.ts +39 -0
  286. package/dist/utils/useHoverPopup.d.ts.map +1 -0
  287. package/dist/utils/useHoverPopup.js +64 -0
  288. package/dist/zen.css +1 -1
  289. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/page-header/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,oGAAoG;AACpG,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,+BAShG;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/page-header/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,oGAAoG;AACpG,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,+BASzG;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -2,8 +2,9 @@
2
2
  import { cx as e } from "../utils/cx.js";
3
3
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
4
  //#region packages/page-header/index.tsx
5
- function r({ eyebrow: r, title: i, lead: a, children: o, className: s }) {
5
+ function r({ eyebrow: r, title: i, lead: a, children: o, className: s, ...c }) {
6
6
  return /* @__PURE__ */ n("header", {
7
+ ...c,
7
8
  className: e("zen__page-header flex flex-col gap-3", s),
8
9
  children: [
9
10
  r && /* @__PURE__ */ t("p", {
@@ -5,7 +5,7 @@ import { ComponentProps, ReactNode } from 'react';
5
5
  * calling `onPageChange`, or with `href`, links (render them with your router's
6
6
  * Link through `renderLink`).
7
7
  */
8
- export default function Pagination({ page, count, onPageChange, href, renderLink, siblings, className, 'aria-label': label, }: PaginationProps): import('react').JSX.Element | null;
8
+ export default function Pagination({ page, count, onPageChange, href, renderLink, siblings, className, 'aria-label': labelProp, }: PaginationProps): import('react').JSX.Element | null;
9
9
  /** The pages to show: the first, the last, `siblings` either side of `page`, and a gap where pages are skipped. */
10
10
  export declare function pageRange(page: number, count: number, siblings?: number): (number | 'gap')[];
11
11
  export interface PaginationProps {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/pagination/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,UAAwC,EACxC,QAAY,EACZ,SAAS,EACT,YAAY,EAAE,KAAe,GAChC,EAAE,eAAe,sCA6CjB;AAED,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAavF;AAED,MAAM,WAAW,eAAe;IAC5B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACrE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/pagination/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,UAAwC,EACxC,QAAY,EACZ,SAAS,EACT,YAAY,EAAE,SAAS,GAC1B,EAAE,eAAe,sCAsDjB;AAED,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAavF;AAED,MAAM,WAAW,eAAe;IAC5B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACrE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -1,55 +1,57 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { buttonVariants as t } from "../button/index.js";
4
- import n from "../icons/chevron-left.js";
5
- import r from "../icons/chevron-right.js";
6
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { useLocale as t, useMessages as n } from "../locale-provider/index.js";
4
+ import { buttonVariants as r } from "../button/index.js";
5
+ import i from "../icons/chevron-left.js";
6
+ import a from "../icons/chevron-right.js";
7
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
8
  //#region packages/pagination/index.tsx
8
- function o({ page: o, count: c, onPageChange: l, href: u, renderLink: d = (e) => /* @__PURE__ */ i("a", { ...e }), siblings: f = 1, className: p, "aria-label": m = "Pages" }) {
9
- if (c < 2) return null;
10
- let h = (n, r, a) => {
11
- let o = n < 1 || n > c, s = e(t({
9
+ function c({ page: c, count: u, onPageChange: d, href: f, renderLink: p = (e) => /* @__PURE__ */ o("a", { ...e }), siblings: m = 1, className: h, "aria-label": g }) {
10
+ let _ = n(), v = new Intl.NumberFormat(t()), y = g ?? _.pages;
11
+ if (u < 2) return null;
12
+ let b = (t, n, i) => {
13
+ let a = t < 1 || t > u, s = e(r({
12
14
  variant: "ghost",
13
15
  size: "icon"
14
- }), "min-w-9 w-auto px-2 tabular-nums", a.current && "bg-primary/15 text-foreground shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.3),0_0_18px_-6px_oklch(var(--glow)/calc(0.6*var(--glow-k)))] hover:bg-primary/20"), f = {
15
- "aria-label": a["aria-label"],
16
- "aria-current": a.current ? "page" : void 0,
16
+ }), "min-w-9 w-auto px-2 tabular-nums", i.current && "bg-primary/15 text-foreground shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.3),0_0_18px_-6px_oklch(var(--glow)/calc(0.6*var(--glow-k)))] hover:bg-primary/20"), c = {
17
+ "aria-label": i["aria-label"],
18
+ "aria-current": i.current ? "page" : void 0,
17
19
  className: s
18
20
  };
19
- return u && !o ? d({
20
- ...f,
21
- href: u(n),
22
- onClick: l && (() => l(n)),
23
- children: r
24
- }, n) : /* @__PURE__ */ i("button", {
21
+ return f && !a ? p({
22
+ ...c,
23
+ href: f(t),
24
+ onClick: d && (() => d(t)),
25
+ children: n
26
+ }, t) : /* @__PURE__ */ o("button", {
25
27
  type: "button",
26
- ...f,
27
- disabled: o,
28
- onClick: () => !a.current && l?.(n),
29
- children: r
28
+ ...c,
29
+ disabled: a,
30
+ onClick: () => !i.current && d?.(t),
31
+ children: n
30
32
  });
31
33
  };
32
- return /* @__PURE__ */ i("nav", {
33
- "aria-label": m,
34
- className: e("zen__pagination", p),
35
- children: /* @__PURE__ */ a("ul", {
34
+ return /* @__PURE__ */ o("nav", {
35
+ "aria-label": y,
36
+ className: e("zen__pagination", h),
37
+ children: /* @__PURE__ */ s("ul", {
36
38
  className: "flex items-center gap-1",
37
39
  children: [
38
- /* @__PURE__ */ i("li", { children: h(o - 1, /* @__PURE__ */ i(n, { className: "size-4" }), { "aria-label": "Previous page" }) }),
39
- s(o, c, f).map((e, t) => /* @__PURE__ */ i("li", { children: e === "gap" ? /* @__PURE__ */ i("span", {
40
+ /* @__PURE__ */ o("li", { children: b(c - 1, /* @__PURE__ */ o(i, { className: "size-4 rtl:-scale-x-100" }), { "aria-label": _.previousPage }) }),
41
+ l(c, u, m).map((e, t) => /* @__PURE__ */ o("li", { children: e === "gap" ? /* @__PURE__ */ o("span", {
40
42
  "aria-hidden": !0,
41
43
  className: "text-muted-foreground grid w-6 place-items-center",
42
44
  children: "…"
43
- }) : h(e, e, {
44
- "aria-label": `Page ${e}`,
45
- current: e === o
45
+ }) : b(e, v.format(e), {
46
+ "aria-label": _.page(e),
47
+ current: e === c
46
48
  }) }, e === "gap" ? `gap${t}` : e)),
47
- /* @__PURE__ */ i("li", { children: h(o + 1, /* @__PURE__ */ i(r, { className: "size-4" }), { "aria-label": "Next page" }) })
49
+ /* @__PURE__ */ o("li", { children: b(c + 1, /* @__PURE__ */ o(a, { className: "size-4 rtl:-scale-x-100" }), { "aria-label": _.nextPage }) })
48
50
  ]
49
51
  })
50
52
  });
51
53
  }
52
- function s(e, t, n = 1) {
54
+ function l(e, t, n = 1) {
53
55
  let r = /* @__PURE__ */ new Set([1, t]);
54
56
  for (let i = e - n; i <= e + n; i++) i >= 1 && i <= t && r.add(i);
55
57
  let i = [...r].sort((e, t) => e - t), a = [];
@@ -59,4 +61,4 @@ function s(e, t, n = 1) {
59
61
  }), a;
60
62
  }
61
63
  //#endregion
62
- export { o as default, s as pageRange };
64
+ export { c as default, l as pageRange };
@@ -1,10 +1,11 @@
1
- import { ReactNode } from 'react';
1
+ import { ComponentProps, ReactNode } from 'react';
2
2
  /**
3
3
  * Circular progress, 0–1, with optional content in the middle. Reaching 1
4
4
  * while shown sends out a ring of glow, once.
5
5
  */
6
- export default function ProgressRing({ value, size, stroke, label, children, className }: ProgressRingProps): import('react').JSX.Element;
7
- export interface ProgressRingProps {
6
+ export default function ProgressRing({ value, size, stroke, label, children, className, ...rest }: ProgressRingProps): import('react').JSX.Element;
7
+ /** Other props (data-*, an id) go on the progressbar. */
8
+ export interface ProgressRingProps extends ComponentProps<'div'> {
8
9
  /** Progress from 0 to 1; values outside are clamped. */
9
10
  value: number;
10
11
  size?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/progress-ring/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,MAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BAqDnH;AAED,MAAM,WAAW,iBAAiB;IAC9B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/progress-ring/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACjC,KAAK,EACL,IAAS,EACT,MAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACV,EAAE,iBAAiB,+BAsDnB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC5D,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -3,14 +3,15 @@ import { cx as e } from "../utils/cx.js";
3
3
  import { useState as t } from "react";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
5
  //#region packages/progress-ring/index.tsx
6
- function i({ value: i, size: a = 84, stroke: o = 7, label: s, children: c, className: l }) {
7
- let u = (a - o) / 2, d = 2 * Math.PI * u, f = Math.min(Math.max(i, 0), 1), [p, m] = t(f), [h, g] = t(0);
8
- return f !== p && (m(f), p < 1 && f === 1 && g(h + 1)), /* @__PURE__ */ r("div", {
6
+ function i({ value: i, size: a = 84, stroke: o = 7, label: s, children: c, className: l, ...u }) {
7
+ let d = (a - o) / 2, f = 2 * Math.PI * d, p = Math.min(Math.max(i, 0), 1), [m, h] = t(p), [g, _] = t(0);
8
+ return p !== m && (h(p), m < 1 && p === 1 && _(g + 1)), /* @__PURE__ */ r("div", {
9
+ ...u,
9
10
  role: "progressbar",
10
11
  "aria-label": s,
11
12
  "aria-valuemin": 0,
12
13
  "aria-valuemax": 100,
13
- "aria-valuenow": Math.round(f * 100),
14
+ "aria-valuenow": Math.round(p * 100),
14
15
  className: e("zen__progress-ring relative grid shrink-0 place-items-center", l),
15
16
  style: {
16
17
  width: a,
@@ -26,27 +27,27 @@ function i({ value: i, size: a = 84, stroke: o = 7, label: s, children: c, class
26
27
  children: [/* @__PURE__ */ n("circle", {
27
28
  cx: a / 2,
28
29
  cy: a / 2,
29
- r: u,
30
+ r: d,
30
31
  fill: "none",
31
32
  strokeWidth: o,
32
33
  className: "stroke-tint/[0.07]"
33
34
  }), /* @__PURE__ */ n("circle", {
34
35
  cx: a / 2,
35
36
  cy: a / 2,
36
- r: u,
37
+ r: d,
37
38
  fill: "none",
38
39
  strokeWidth: o,
39
40
  strokeLinecap: "round",
40
- strokeDasharray: d,
41
- strokeDashoffset: d * (1 - f),
41
+ strokeDasharray: f,
42
+ strokeDashoffset: f * (1 - p),
42
43
  className: "zen__progress-ring-arc stroke-primary [filter:drop-shadow(0_0_6px_oklch(var(--glow)/calc(0.45*var(--glow-k))))] transition-[stroke-dashoffset] duration-700 ease-out"
43
44
  })]
44
45
  }),
45
- h > 0 && /* @__PURE__ */ n("span", {
46
+ g > 0 && /* @__PURE__ */ n("span", {
46
47
  "aria-hidden": !0,
47
48
  className: "zen__ring-burst border-primary pointer-events-none absolute inset-0 rounded-full",
48
49
  style: { borderWidth: o }
49
- }, h),
50
+ }, g),
50
51
  /* @__PURE__ */ n("div", {
51
52
  className: "absolute inset-0 grid place-items-center text-center",
52
53
  children: c
@@ -1,21 +1,25 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { ComponentProps, CSSProperties, ReactNode } from 'react';
2
2
  /**
3
3
  * A choice of one among a few cards, each showing what it picks (a palette, a
4
4
  * plan). Native radio inputs underneath, so arrow keys and forms work as for any
5
5
  * radio group. Lay the cards out with className (e.g. a grid); fill it with
6
6
  * RadioCard. For short text options, use Segmented.
7
7
  */
8
- export default function RadioCards<V extends string>({ label, value, onChange, name, className, children, }: RadioCardsProps<V>): import('react').JSX.Element;
8
+ export default function RadioCards<V extends string>({ label, value: valueProp, defaultValue, onValueChange, name, className, children, ...rest }: RadioCardsProps<V>): import('react').JSX.Element;
9
9
  /**
10
10
  * One card: a native radio covering whatever you put inside, so the whole card
11
11
  * is the click target. Outlined, lit when chosen; style it further with
12
12
  * className and style (e.g. a background showing the choice).
13
13
  */
14
14
  export declare function RadioCard({ value, disabled, className, style, children }: RadioCardProps): import('react').JSX.Element;
15
- export interface RadioCardsProps<V extends string> {
15
+ /** Other props (aria-*, data-*, an id) go on the cards' container, the radiogroup. */
16
+ export interface RadioCardsProps<V extends string> extends Omit<ComponentProps<'div'>, 'defaultValue' | 'children'> {
16
17
  label: string;
17
- value: V;
18
- onChange: (value: V) => void;
18
+ /** The chosen card, when you keep it. */
19
+ value?: V;
20
+ /** The first chosen card, when the group keeps its own. */
21
+ defaultValue?: V;
22
+ onValueChange?: (value: V) => void;
19
23
  /** Form field name; defaults to a generated one. */
20
24
  name?: string;
21
25
  /** Classes for the cards' container: its layout (e.g. a grid). */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/radio-cards/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,aAAa,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAUnF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EACjD,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,GACX,EAAE,eAAe,CAAC,CAAC,CAAC,+BAgBpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,+BAyBxF;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/radio-cards/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiB,aAAa,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAUnG;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EACjD,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,eAAe,CAAC,CAAC,CAAC,+BAiBpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,+BAyBxF;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAC/G,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,2DAA2D;IAC3D,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
@@ -1,48 +1,50 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { createContext as t, useContext as n, useId as r } from "react";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { useControllable as t } from "../utils/useControllable.js";
4
+ import { createContext as n, useContext as r, useId as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
6
  //#region packages/radio-cards/index.tsx
6
- var o = t(null);
7
- function s({ label: e, value: t, onChange: n, name: s, className: c, children: l }) {
8
- let u = r();
9
- return /* @__PURE__ */ a("div", {
7
+ var s = n(null);
8
+ function c({ label: e, value: n, defaultValue: r, onValueChange: c, name: l, className: u, children: d, ...f }) {
9
+ let [p, m] = t(n, r, c), h = i();
10
+ return /* @__PURE__ */ o("div", {
10
11
  className: "zen__radio-cards flex flex-col gap-2",
11
- children: [/* @__PURE__ */ i("span", {
12
- id: u,
12
+ children: [/* @__PURE__ */ a("span", {
13
+ id: h,
13
14
  className: "text-sm font-medium",
14
15
  children: e
15
- }), /* @__PURE__ */ i("div", {
16
+ }), /* @__PURE__ */ a("div", {
16
17
  role: "radiogroup",
17
- "aria-labelledby": u,
18
- className: c,
19
- children: /* @__PURE__ */ i(o.Provider, {
18
+ "aria-labelledby": h,
19
+ className: u,
20
+ ...f,
21
+ children: /* @__PURE__ */ a(s.Provider, {
20
22
  value: {
21
- name: s ?? u,
22
- value: t,
23
- onChange: n
23
+ name: l ?? h,
24
+ value: p,
25
+ select: m
24
26
  },
25
- children: l
27
+ children: d
26
28
  })
27
29
  })]
28
30
  });
29
31
  }
30
- function c({ value: t, disabled: r, className: s, style: c, children: l }) {
31
- let u = n(o);
32
+ function l({ value: t, disabled: n, className: i, style: c, children: l }) {
33
+ let u = r(s);
32
34
  if (!u) throw Error("<RadioCard> must be inside <RadioCards>");
33
- return /* @__PURE__ */ a("label", {
35
+ return /* @__PURE__ */ o("label", {
34
36
  style: c,
35
- className: e("zen__radio-card border-tint/10 relative flex items-center gap-3 rounded-xl border p-2.5 text-left text-sm transition-[border-color,box-shadow] duration-200", "hover:has-enabled:border-tint/20 has-checked:border-primary/60 has-checked:shadow-[0_0_0_3px_oklch(var(--primary)/0.15)]", "has-focus-visible:ring-ring/50 has-focus-visible:ring-2 has-disabled:opacity-60", s),
36
- children: [/* @__PURE__ */ i("input", {
37
+ className: e("zen__radio-card border-tint/10 relative flex items-center gap-3 rounded-xl border p-2.5 text-start text-sm transition-[border-color,box-shadow] duration-200", "hover:has-enabled:border-tint/20 has-checked:border-primary/60 has-checked:shadow-[0_0_0_3px_oklch(var(--primary)/0.15)]", "has- has-focus-ring has-disabled:opacity-60", i),
38
+ children: [/* @__PURE__ */ a("input", {
37
39
  type: "radio",
38
40
  name: u.name,
39
41
  value: t,
40
42
  checked: u.value === t,
41
- disabled: r,
42
- onChange: () => u.onChange(t),
43
+ disabled: n,
44
+ onChange: () => u.select(t),
43
45
  className: "absolute inset-0 z-10 m-0 size-full cursor-pointer appearance-none rounded-[inherit] opacity-0 disabled:cursor-not-allowed"
44
46
  }), l]
45
47
  });
46
48
  }
47
49
  //#endregion
48
- export { c as RadioCard, s as default };
50
+ export { l as RadioCard, c as default };
@@ -1,26 +1,27 @@
1
- import { ReactNode } from 'react';
1
+ import { ComponentProps, ReactNode } from 'react';
2
2
  /**
3
3
  * Choose one of a list: native radios underneath, so arrow keys move and pick
4
4
  * within the group, and forms work as usual. Fill it with Radio. For a few
5
5
  * short options side by side use Segmented; for options that show themselves,
6
6
  * RadioCards.
7
7
  */
8
- export default function RadioGroup<V extends string>({ label, value, onChange, name, disabled, orientation, className, children, ...aria }: RadioGroupProps<V>): import('react').JSX.Element;
8
+ export default function RadioGroup<V extends string>({ label, value: valueProp, defaultValue, onValueChange, name, disabled, orientation, className, children, ...rest }: RadioGroupProps<V>): import('react').JSX.Element;
9
9
  /** One option: a round radio that fills with a glowing dot when chosen, its label, and an optional description. */
10
10
  export declare function Radio({ value, disabled, description, className, children }: RadioProps): import('react').JSX.Element;
11
- export interface RadioGroupProps<V extends string> {
11
+ /** Other props (aria-*, data-*, an id) go on the options' container, the radiogroup. */
12
+ export interface RadioGroupProps<V extends string> extends Omit<ComponentProps<'div'>, 'defaultValue' | 'children'> {
12
13
  /** Shown above the options, naming the group. Without it, give the group an aria-label. */
13
14
  label?: ReactNode;
14
- /** The chosen option, or null for none yet. */
15
- value: V | null;
16
- onChange: (value: V) => void;
15
+ /** The chosen option when you keep it, or null for none yet. */
16
+ value?: V | null;
17
+ /** The first chosen option, when the group keeps its own. */
18
+ defaultValue?: V | null;
19
+ onValueChange?: (value: V) => void;
17
20
  /** Form field name; defaults to a generated one. */
18
21
  name?: string;
19
22
  disabled?: boolean;
20
23
  /** Options in a column (default) or wrapping in a row. */
21
24
  orientation?: 'vertical' | 'horizontal';
22
- 'aria-label'?: string;
23
- 'aria-describedby'?: string;
24
25
  /** Classes for the options' container. */
25
26
  className?: string;
26
27
  /** The Radios. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/radio-group/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAqB,MAAM,OAAO,CAAC;AAWpE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EACjD,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAgB,EAChB,WAAwB,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,eAAe,CAAC,CAAC,CAAC,+BA6BpB;AAED,mHAAmH;AACnH,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAoCtF;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM;IAC7C,2FAA2F;IAC3F,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/radio-group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiB,SAAS,EAAqB,MAAM,OAAO,CAAC;AAWpF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EACjD,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAmB,EACnB,aAAa,EACb,IAAI,EACJ,QAAgB,EAChB,WAAwB,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,eAAe,CAAC,CAAC,CAAC,+BA8BpB;AAED,mHAAmH;AACnH,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAoCtF;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAC/G,2FAA2F;IAC3F,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
@@ -1,63 +1,64 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { createContext as t, useContext as n, useId as r } from "react";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { useControllable as t } from "../utils/useControllable.js";
4
+ import { createContext as n, useContext as r, useId as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
6
  //#region packages/radio-group/index.tsx
6
- var o = t(null);
7
- function s({ label: t, value: n, onChange: s, name: c, disabled: l = !1, orientation: u = "vertical", className: d, children: f, ...p }) {
8
- let m = r();
9
- return /* @__PURE__ */ a("div", {
7
+ var s = n(null);
8
+ function c({ label: n, value: r, defaultValue: c = null, onValueChange: l, name: u, disabled: d = !1, orientation: f = "vertical", className: p, children: m, ...h }) {
9
+ let [g, _] = t(r, c, l), v = i();
10
+ return /* @__PURE__ */ o("div", {
10
11
  className: "zen__radio-group flex flex-col gap-2",
11
- children: [t && /* @__PURE__ */ i("span", {
12
- id: m,
12
+ children: [n && /* @__PURE__ */ a("span", {
13
+ id: v,
13
14
  className: "text-sm font-medium",
14
- children: t
15
- }), /* @__PURE__ */ i("div", {
15
+ children: n
16
+ }), /* @__PURE__ */ a("div", {
16
17
  role: "radiogroup",
17
- "aria-labelledby": t ? m : void 0,
18
- "aria-orientation": u,
19
- "aria-disabled": l || void 0,
20
- ...p,
21
- className: e("flex", u === "vertical" ? "flex-col gap-2.5" : "flex-wrap gap-x-5 gap-y-2", d),
22
- children: /* @__PURE__ */ i(o.Provider, {
18
+ "aria-labelledby": n ? v : void 0,
19
+ "aria-orientation": f,
20
+ "aria-disabled": d || void 0,
21
+ ...h,
22
+ className: e("flex", f === "vertical" ? "flex-col gap-2.5" : "flex-wrap gap-x-5 gap-y-2", p),
23
+ children: /* @__PURE__ */ a(s.Provider, {
23
24
  value: {
24
- name: c ?? m,
25
- value: n,
26
- onChange: s,
27
- disabled: l
25
+ name: u ?? v,
26
+ value: g,
27
+ select: _,
28
+ disabled: d
28
29
  },
29
- children: f
30
+ children: m
30
31
  })
31
32
  })]
32
33
  });
33
34
  }
34
- function c({ value: t, disabled: r, description: s, className: c, children: l }) {
35
- let u = n(o);
35
+ function l({ value: t, disabled: n, description: i, className: c, children: l }) {
36
+ let u = r(s);
36
37
  if (!u) throw Error("<Radio> must be inside <RadioGroup>");
37
- return /* @__PURE__ */ a("label", {
38
+ return /* @__PURE__ */ o("label", {
38
39
  className: e("inline-flex cursor-pointer items-start gap-2.5 text-sm has-disabled:cursor-not-allowed has-disabled:opacity-60", c),
39
- children: [/* @__PURE__ */ a("span", {
40
+ children: [/* @__PURE__ */ o("span", {
40
41
  className: "relative mt-px inline-grid size-[1.125rem] shrink-0 place-items-center",
41
- children: [/* @__PURE__ */ i("input", {
42
+ children: [/* @__PURE__ */ a("input", {
42
43
  type: "radio",
43
44
  name: u.name,
44
45
  value: t,
45
46
  checked: u.value === t,
46
- disabled: r || u.disabled,
47
- onChange: () => u.onChange(t),
48
- className: e("peer bg-tint/[0.04] m-0 size-full cursor-pointer appearance-none rounded-full border border-[color:oklch(var(--tint)/var(--zen-control-edge))] outline-hidden", "transition-[border-color,box-shadow] duration-200", "focus-visible:ring-ring/50 focus-visible:ring-2 hover:enabled:border-[color:oklch(var(--tint)/var(--zen-control-edge-hover))]", "checked:border-primary checked:shadow-[0_0_14px_-3px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] disabled:cursor-not-allowed")
49
- }), /* @__PURE__ */ i("span", {
47
+ disabled: n || u.disabled,
48
+ onChange: () => u.select(t),
49
+ className: e("peer bg-tint/[0.04] m-0 size-full cursor-pointer appearance-none rounded-full border border-[color:oklch(var(--tint)/var(--zen-control-edge))] outline-hidden", "transition-[border-color,box-shadow] duration-200", " focus-ring hover:enabled:border-[color:oklch(var(--tint)/var(--zen-control-edge-hover))]", "checked:border-primary checked:shadow-[0_0_14px_-3px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] disabled:cursor-not-allowed")
50
+ }), /* @__PURE__ */ a("span", {
50
51
  "aria-hidden": !0,
51
52
  className: "zen__radio-dot bg-primary pointer-events-none absolute size-2 scale-0 rounded-full shadow-[0_0_8px_oklch(var(--glow)/calc(0.9*var(--glow-k)))] transition-transform duration-200 ease-[cubic-bezier(0.3,1.6,0.5,1)] peer-checked:scale-100"
52
53
  })]
53
- }), /* @__PURE__ */ a("span", {
54
+ }), /* @__PURE__ */ o("span", {
54
55
  className: "flex flex-col gap-0.5",
55
- children: [l, s && /* @__PURE__ */ i("span", {
56
+ children: [l, i && /* @__PURE__ */ a("span", {
56
57
  className: "text-muted-foreground text-xs",
57
- children: s
58
+ children: i
58
59
  })]
59
60
  })]
60
61
  });
61
62
  }
62
63
  //#endregion
63
- export { c as Radio, s as default };
64
+ export { l as Radio, c as default };
@@ -1,12 +1,18 @@
1
+ import { ComponentProps } from 'react';
1
2
  /**
2
3
  * Two thumbs on one track, for a span such as an amount from $50 to $500:
3
4
  * two native range inputs (keyboard, forms and screen readers work as on
4
5
  * Slider), the span between them filled. The thumbs can meet but not cross.
5
6
  */
6
- export default function RangeSlider({ value: [low, high], min, max, step, onValueChange, onValueCommit, label, thumbLabels, valueText, disabled, className, }: RangeSliderProps): import('react').JSX.Element;
7
- export interface RangeSliderProps {
8
- /** The span, low then high. */
9
- value: readonly [number, number];
7
+ export default function RangeSlider({ value: valueProp, defaultValue, min, max, step, onValueChange, onValueCommit, label, thumbLabels: thumbLabelsProp, valueText, name, disabled, className, style, ...rest }: RangeSliderProps): import('react').JSX.Element;
8
+ /** Other props (aria-*, data-*, an id) go on the group around the thumbs. */
9
+ export interface RangeSliderProps extends Omit<ComponentProps<'div'>, 'defaultValue' | 'children'> {
10
+ /** The span, low then high, when you keep it. */
11
+ value?: readonly [number, number];
12
+ /** The first span, when the slider keeps its own (default the whole range). */
13
+ defaultValue?: readonly [number, number];
14
+ /** Form field name: low and high are submitted under it, in that order. */
15
+ name?: string;
10
16
  min?: number;
11
17
  max?: number;
12
18
  step?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/range-slider/index.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAClB,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,KAAK,EACL,WAAoC,EACpC,SAAS,EACT,QAAQ,EACR,SAAS,GACZ,EAAE,gBAAgB,+BAiDlB;AAED,MAAM,WAAW,gBAAgB;IAC7B,+BAA+B;IAC/B,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAClD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAClD,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/range-slider/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,KAAK,EACL,WAAW,EAAE,eAAe,EAC5B,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,gBAAgB,+BA6DlB;AAED,6EAA6E;AAC7E,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAC9F,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAClD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAClD,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1,44 +1,56 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { THUMB as t } from "../slider/index.js";
4
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ import { useControllable as t } from "../utils/useControllable.js";
4
+ import { useMessages as n } from "../locale-provider/index.js";
5
+ import { useFormReset as r } from "../utils/form-value.js";
6
+ import { THUMB as i } from "../slider/index.js";
7
+ import { useRef as a } from "react";
8
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
9
  //#region packages/range-slider/index.tsx
6
- function i({ value: [i, a], min: o = 0, max: s = 100, step: c = 1, onValueChange: l, onValueCommit: u, label: d, thumbLabels: f = ["Minimum", "Maximum"], valueText: p, disabled: m, className: h }) {
7
- let g = (e) => s > o ? (e - o) / (s - o) * 100 : 0, _ = [{
8
- value: i,
9
- set: (e) => [Math.min(e, a), a]
10
+ function c({ value: c, defaultValue: l, min: u = 0, max: d = 100, step: f = 1, onValueChange: p, onValueCommit: m, label: h, thumbLabels: g, valueText: _, name: v, disabled: y, className: b, style: x, ...S }) {
11
+ let C = n(), w = g ?? [C.minimum, C.maximum], [[T, E], D, O] = t(c, l ?? [u, d], p), k = a(null);
12
+ r(k, O);
13
+ let A = (e) => d > u ? (e - u) / (d - u) * 100 : 0, j = [{
14
+ value: T,
15
+ set: (e) => [Math.min(e, E), E]
10
16
  }, {
11
- value: a,
12
- set: (e) => [i, Math.max(e, i)]
17
+ value: E,
18
+ set: (e) => [T, Math.max(e, T)]
13
19
  }];
14
- return /* @__PURE__ */ r("div", {
20
+ return /* @__PURE__ */ s("div", {
15
21
  role: "group",
16
- "aria-label": d,
17
- className: e("zen__range-slider relative h-5 w-full", m && "opacity-50", h),
18
- style: { "--zen-thumb": "oklch(var(--primary))" },
19
- children: [/* @__PURE__ */ n("div", {
22
+ "aria-label": h,
23
+ ...S,
24
+ className: e("zen__range-slider relative h-5 w-full", y && "opacity-50", b),
25
+ style: {
26
+ "--zen-thumb": "oklch(var(--primary))",
27
+ ...x
28
+ },
29
+ children: [/* @__PURE__ */ o("div", {
20
30
  "aria-hidden": !0,
21
- className: "absolute inset-x-0 top-1/2 h-2.5 -translate-y-1/2 rounded-full",
22
- style: { background: `linear-gradient(to right, oklch(var(--muted)) ${g(i)}%, oklch(var(--primary)) ${g(i)}% ${g(a)}%, oklch(var(--muted)) ${g(a)}%)` }
23
- }), _.map((r, d) => /* @__PURE__ */ n("input", {
31
+ className: "absolute inset-x-0 top-1/2 h-2.5 -translate-y-1/2 rounded-full [--zen-end:right] rtl:[--zen-end:left]",
32
+ style: { background: `linear-gradient(to var(--zen-end), oklch(var(--muted)) ${A(T)}%, oklch(var(--primary)) ${A(T)}% ${A(E)}%, oklch(var(--muted)) ${A(E)}%)` }
33
+ }), j.map((t, n) => /* @__PURE__ */ o("input", {
34
+ ref: n === 0 ? k : void 0,
24
35
  type: "range",
25
- min: o,
26
- max: s,
27
- step: c,
28
- value: r.value,
29
- disabled: m,
30
- "aria-label": f[d],
31
- "aria-valuetext": p?.(r.value),
36
+ name: v,
37
+ min: u,
38
+ max: d,
39
+ step: f,
40
+ value: t.value,
41
+ disabled: y,
42
+ "aria-label": w[n],
43
+ "aria-valuetext": _?.(t.value),
32
44
  onChange: (e) => {
33
- let [t, n] = r.set(Number(e.target.value));
34
- l?.([t, n]);
45
+ let [n, r] = t.set(Number(e.target.value));
46
+ D([n, r]);
35
47
  },
36
- onPointerUp: () => u?.([i, a]),
37
- onKeyUp: () => u?.([i, a]),
38
- style: { zIndex: d === 0 && i > (o + s) / 2 ? 2 : 1 },
39
- className: e("pointer-events-none absolute inset-0 h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-moz-range-track]:h-2.5 [&::-moz-range-track]:bg-transparent", "[&::-webkit-slider-thumb]:pointer-events-auto [&::-moz-range-thumb]:pointer-events-auto", t)
40
- }, d))]
48
+ onPointerUp: () => m?.([T, E]),
49
+ onKeyUp: () => m?.([T, E]),
50
+ style: { zIndex: n === 0 && T > (u + d) / 2 ? 2 : 1 },
51
+ className: e("pointer-events-none absolute inset-0 h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-moz-range-track]:h-2.5 [&::-moz-range-track]:bg-transparent", "[&::-webkit-slider-thumb]:pointer-events-auto [&::-moz-range-thumb]:pointer-events-auto", i)
52
+ }, n))]
41
53
  });
42
54
  }
43
55
  //#endregion
44
- export { i as default };
56
+ export { c as default };