@rinzai/zen 0.11.0 → 0.13.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 +34 -0
  131. package/dist/number-field/index.d.ts.map +1 -0
  132. package/dist/number-field/index.js +119 -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,21 +1,24 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { useAnchoredPopup as t } from "../utils/useAnchoredPopup.js";
4
- import { useFieldProps as n } from "../field/index.js";
5
- import { POPUP as r, TRIGGER as i } from "../utils/styles.js";
6
- import a from "../input/index.js";
7
- import o from "../slider/index.js";
8
- import { hexToHsv as s, hsvToHex as c } from "../utils/color.js";
9
- import { FieldChevron as l } from "../utils/field-chevron.js";
10
- import { useId as u, useState as d } from "react";
11
- import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
3
+ import { useControllable as t } from "../utils/useControllable.js";
4
+ import { useAnchoredPopup as n } from "../utils/useAnchoredPopup.js";
5
+ import { useMessages as r } from "../locale-provider/index.js";
6
+ import { useFieldProps as i } from "../field/index.js";
7
+ import { FIELD_SIZE as a, POPUP as o, TRIGGER as s } from "../utils/styles.js";
8
+ import c from "../input/index.js";
9
+ import { FormValue as l } from "../utils/form-value.js";
10
+ import u from "../slider/index.js";
11
+ import { hexToHsv as d, hsvToHex as f } from "../utils/color.js";
12
+ import { FieldChevron as p } from "../utils/field-chevron.js";
13
+ import { useId as m, useState as h } from "react";
14
+ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
12
15
  //#region packages/color-picker/index.tsx
13
- var h = {
16
+ var y = {
14
17
  h: 0,
15
18
  s: 0,
16
19
  v: 0,
17
20
  a: 1
18
- }, g = "repeating-conic-gradient(#9ca3af 0 25%, #f3f4f6 0 50%) 0 0 / 8px 8px", _ = `linear-gradient(to right, ${[
21
+ }, b = "repeating-conic-gradient(#9ca3af 0 25%, #f3f4f6 0 50%) 0 0 / 8px 8px", x = `linear-gradient(to right, ${[
19
22
  0,
20
23
  60,
21
24
  120,
@@ -23,140 +26,140 @@ var h = {
23
26
  240,
24
27
  300,
25
28
  360
26
- ].map((e) => `hsl(${e} 100% 50%)`).join(", ")})`, v = (e) => Math.round(e * 100), y = {
29
+ ].map((e) => `hsl(${e} 100% 50%)`).join(", ")})`, S = (e) => Math.round(e * 100), C = {
27
30
  ArrowLeft: [-1, 0],
28
31
  ArrowRight: [1, 0],
29
32
  ArrowDown: [0, -1],
30
33
  ArrowUp: [0, 1]
31
34
  };
32
- function b(e, t) {
33
- let n = s(e);
34
- return n ? c(t ? n : {
35
+ function w(e, t) {
36
+ let n = d(e);
37
+ return n ? f(t ? n : {
35
38
  ...n,
36
39
  a: 1
37
40
  }) : null;
38
41
  }
39
- function x({ value: t, onChange: n, onValueCommit: r, alpha: i = !1, swatches: l, className: f, ...x }) {
40
- let S = u(), [C, w] = d(() => s(t) ?? h), [T, E] = d(t);
41
- if (t !== T) {
42
- E(t);
43
- let e = b(t, i);
44
- e && e !== c(C) && w(s(e));
42
+ function T({ value: n, defaultValue: i = "#000000", onValueChange: a, onValueCommit: o, alpha: s = !1, swatches: l, className: p, ...g }) {
43
+ let T = r(), [E, D] = t(n, i, a), O = m(), [k, A] = h(() => d(E) ?? y), [j, M] = h(E);
44
+ if (E !== j) {
45
+ M(E);
46
+ let e = w(E, s);
47
+ e && e !== f(k) && A(d(e));
45
48
  }
46
- let D = c(C), O = c({
47
- ...C,
49
+ let N = f(k), P = f({
50
+ ...k,
48
51
  a: 1
49
- }), [k, A] = d(null), j = (e) => {
52
+ }), [F, I] = h(null), L = (e) => {
50
53
  let t = {
51
- ...C,
54
+ ...k,
52
55
  ...e
53
56
  };
54
- return i || (t.a = 1), w(t), n(c(t)), c(t);
55
- }, M = (e = D) => r?.(e), N = (e) => {
57
+ return s || (t.a = 1), A(t), D(f(t)), f(t);
58
+ }, R = (e = N) => o?.(e), z = (e) => {
56
59
  let t = e.currentTarget.getBoundingClientRect(), n = Math.min(1, Math.max(0, (e.clientX - t.left) / t.width)), r = 1 - Math.min(1, Math.max(0, (e.clientY - t.top) / t.height));
57
- return j({
60
+ return L({
58
61
  s: n,
59
62
  v: r
60
63
  });
61
- }, P = (e) => {
62
- let t = y[e.key];
64
+ }, B = (e) => {
65
+ let t = C[e.key];
63
66
  if (!t) return;
64
67
  e.preventDefault();
65
68
  let n = (e.shiftKey ? 10 : 1) / 100, r = (e) => Math.min(1, Math.max(0, Math.round((e + 2 ** -52) * 100) / 100));
66
- M(j({
67
- s: r(C.s + t[0] * n),
68
- v: r(C.v + t[1] * n)
69
+ R(L({
70
+ s: r(k.s + t[0] * n),
71
+ v: r(k.v + t[1] * n)
69
72
  }));
70
- }, F = () => {
71
- if (k === null) return;
72
- let e = b(k.startsWith("#") ? k : `#${k}`, i);
73
- A(null), e && e !== D && (w(s(e)), n(e), M(e));
73
+ }, V = () => {
74
+ if (F === null) return;
75
+ let e = w(F.startsWith("#") ? F : `#${F}`, s);
76
+ I(null), e && e !== N && (A(d(e)), D(e), R(e));
74
77
  };
75
- return /* @__PURE__ */ m("div", {
76
- className: e("zen__color-panel flex w-64 flex-col gap-3", f),
77
- ...x,
78
+ return /* @__PURE__ */ v("div", {
79
+ className: e("zen__color-panel flex w-64 flex-col gap-3", p),
80
+ ...g,
78
81
  children: [
79
- /* @__PURE__ */ p("div", {
82
+ /* @__PURE__ */ _("div", {
80
83
  role: "slider",
81
84
  tabIndex: 0,
82
- "aria-label": "Saturation and brightness",
85
+ "aria-label": T.saturationBrightness,
83
86
  "aria-valuemin": 0,
84
87
  "aria-valuemax": 100,
85
- "aria-valuenow": v(C.s),
86
- "aria-valuetext": `Saturation ${v(C.s)}%, brightness ${v(C.v)}%`,
88
+ "aria-valuenow": S(k.s),
89
+ "aria-valuetext": T.saturationBrightnessValue(S(k.s), S(k.v)),
87
90
  onPointerDown: (e) => {
88
- e.button === 0 && (e.currentTarget.setPointerCapture?.(e.pointerId), e.currentTarget.focus(), N(e));
91
+ e.button === 0 && (e.currentTarget.setPointerCapture?.(e.pointerId), e.currentTarget.focus(), z(e));
89
92
  },
90
- onPointerMove: (e) => e.currentTarget.hasPointerCapture?.(e.pointerId) && N(e),
91
- onPointerUp: (e) => M(N(e)),
92
- onKeyDown: P,
93
- style: { background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${C.h} 100% 50%))` },
94
- className: "focus-visible:ring-ring/50 relative h-40 cursor-crosshair touch-none rounded-lg shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.1)] outline-hidden focus-visible:ring-2",
95
- children: /* @__PURE__ */ p("span", {
93
+ onPointerMove: (e) => e.currentTarget.hasPointerCapture?.(e.pointerId) && z(e),
94
+ onPointerUp: (e) => R(z(e)),
95
+ onKeyDown: B,
96
+ style: { background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${k.h} 100% 50%))` },
97
+ className: "focus-ring relative h-40 cursor-crosshair touch-none rounded-lg shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.1)] outline-hidden",
98
+ children: /* @__PURE__ */ _("span", {
96
99
  "aria-hidden": !0,
97
100
  style: {
98
- left: `${C.s * 100}%`,
99
- top: `${(1 - C.v) * 100}%`,
100
- background: O
101
+ left: `${k.s * 100}%`,
102
+ top: `${(1 - k.v) * 100}%`,
103
+ background: P
101
104
  },
102
105
  className: "pointer-events-none absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_12px_oklch(0_0_0/0.35)]"
103
106
  })
104
107
  }),
105
- /* @__PURE__ */ p(o, {
106
- "aria-label": "Hue",
108
+ /* @__PURE__ */ _(u, {
109
+ "aria-label": T.hue,
107
110
  min: 0,
108
111
  max: 359,
109
- value: Math.round(C.h),
110
- onValueChange: (e) => j({ h: e }),
111
- onValueCommit: () => M(),
112
- trackBackground: _,
113
- thumbColor: `hsl(${C.h} 100% 50%)`,
114
- valueText: (e) => `Hue ${e} degrees`
112
+ value: Math.round(k.h),
113
+ onValueChange: (e) => L({ h: e }),
114
+ onValueCommit: () => R(),
115
+ trackBackground: x,
116
+ thumbColor: `hsl(${k.h} 100% 50%)`,
117
+ valueText: T.hueValue
115
118
  }),
116
- i && /* @__PURE__ */ p(o, {
117
- "aria-label": "Opacity",
119
+ s && /* @__PURE__ */ _(u, {
120
+ "aria-label": T.opacity,
118
121
  min: 0,
119
122
  max: 100,
120
- value: v(C.a),
121
- onValueChange: (e) => j({ a: e / 100 }),
122
- onValueCommit: () => M(),
123
- trackBackground: `linear-gradient(to right, transparent, ${O}), ${g}`,
124
- thumbColor: O,
125
- valueText: (e) => `Opacity ${e}%`
123
+ value: S(k.a),
124
+ onValueChange: (e) => L({ a: e / 100 }),
125
+ onValueCommit: () => R(),
126
+ trackBackground: `linear-gradient(to right, transparent, ${P}), ${b}`,
127
+ thumbColor: P,
128
+ valueText: T.opacityValue
126
129
  }),
127
- /* @__PURE__ */ p(a, {
128
- "aria-label": "Hex",
130
+ /* @__PURE__ */ _(c, {
131
+ "aria-label": T.hex,
129
132
  spellCheck: !1,
130
133
  autoComplete: "off",
131
- value: k ?? D,
132
- onChange: (e) => A(e.target.value),
133
- onBlur: F,
134
- onKeyDown: (e) => e.key === "Enter" && F(),
134
+ value: F ?? N,
135
+ onChange: (e) => I(e.target.value),
136
+ onBlur: V,
137
+ onKeyDown: (e) => e.key === "Enter" && V(),
135
138
  className: "h-9 font-mono tabular-nums"
136
139
  }),
137
- l && l.length > 0 && /* @__PURE__ */ m("fieldset", {
140
+ l && l.length > 0 && /* @__PURE__ */ v("fieldset", {
138
141
  className: "flex flex-wrap gap-1.5",
139
- children: [/* @__PURE__ */ p("legend", {
142
+ children: [/* @__PURE__ */ _("legend", {
140
143
  className: "sr-only",
141
- children: "Swatches"
144
+ children: T.swatches
142
145
  }), l.map((e) => {
143
- let t = b(e.value, i);
144
- return /* @__PURE__ */ m("label", {
146
+ let t = w(e.value, s);
147
+ return /* @__PURE__ */ v("label", {
145
148
  title: e.label,
146
149
  className: "relative cursor-pointer",
147
- children: [/* @__PURE__ */ p("input", {
150
+ children: [/* @__PURE__ */ _("input", {
148
151
  type: "radio",
149
- name: S,
152
+ name: O,
150
153
  "aria-label": e.label,
151
- checked: t === D,
154
+ checked: t === N,
152
155
  onChange: () => {
153
- t && (w(s(t)), n(t), M(t));
156
+ t && (A(d(t)), D(t), R(t));
154
157
  },
155
158
  className: "peer sr-only"
156
- }), /* @__PURE__ */ p("span", {
159
+ }), /* @__PURE__ */ _("span", {
157
160
  "aria-hidden": !0,
158
- style: { background: `linear-gradient(${e.value}, ${e.value}), ${g}` },
159
- className: "ring-offset-background peer-focus-visible:ring-ring/60 peer-checked:ring-foreground/70 block size-6 rounded-full shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.12)] ring-offset-2 transition-shadow peer-checked:ring-2 peer-focus-visible:ring-2"
161
+ style: { background: `linear-gradient(${e.value}, ${e.value}), ${b}` },
162
+ className: "ring-offset-background peer- peer-checked:ring-foreground/70 peer-focus-ring block size-6 rounded-full shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.12)] ring-offset-2 transition-shadow peer-checked:ring-2"
160
163
  })]
161
164
  }, e.value);
162
165
  })]
@@ -164,47 +167,55 @@ function x({ value: t, onChange: n, onValueCommit: r, alpha: i = !1, swatches: l
164
167
  ]
165
168
  });
166
169
  }
167
- function S({ value: a, onChange: o, onValueCommit: s, alpha: c, swatches: u, id: d, disabled: h, className: _, style: v, ...y }) {
168
- let b = t(), S = n({
169
- ...y,
170
- id: d
170
+ function E({ value: c, defaultValue: u = "#000000", onValueChange: d, onValueCommit: f, alpha: m, swatches: h, name: y, size: x = "default", id: S, disabled: C, className: w, style: E, ...D }) {
171
+ let O = r(), [k, A, j] = t(c, u, d), M = n(), N = i({
172
+ ...D,
173
+ id: S
171
174
  });
172
- return /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("button", {
173
- type: "button",
174
- ...y,
175
- ...S,
176
- id: d,
177
- disabled: h,
178
- ...b.triggerProps,
179
- style: {
180
- ...b.triggerProps.style,
181
- ...v
182
- },
183
- className: e("zen__color-picker group", i, "w-full", b.open && "border-glow/60 [--glow-border-color:transparent] shadow-glow-focus", _),
184
- children: [/* @__PURE__ */ m("span", {
185
- className: "flex min-w-0 items-center gap-2.5",
186
- children: [/* @__PURE__ */ p("span", {
187
- "aria-hidden": !0,
188
- style: { background: `linear-gradient(${a}, ${a}), ${g}` },
189
- className: "size-5 shrink-0 rounded-md shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.15)]"
190
- }), /* @__PURE__ */ p("span", {
191
- className: "truncate font-mono tabular-nums",
192
- children: a
193
- })]
194
- }), /* @__PURE__ */ p(l, { open: b.open })]
195
- }), /* @__PURE__ */ p("div", {
196
- ...b.popupProps,
197
- role: "dialog",
198
- "aria-label": "Choose colour",
199
- className: e("zen__popover", r, "p-3"),
200
- children: /* @__PURE__ */ p(x, {
201
- value: a,
202
- onChange: o,
203
- onValueCommit: s,
204
- alpha: c,
205
- swatches: u
175
+ return /* @__PURE__ */ v(g, { children: [
176
+ /* @__PURE__ */ v("button", {
177
+ type: "button",
178
+ ...D,
179
+ ...N,
180
+ id: S,
181
+ disabled: C,
182
+ ...M.triggerProps,
183
+ style: {
184
+ ...M.triggerProps.style,
185
+ ...E
186
+ },
187
+ className: e("zen__color-picker group", s, a[x], "w-full", M.open && "border-glow/60 [--glow-border-color:transparent] shadow-glow-focus", w),
188
+ children: [/* @__PURE__ */ v("span", {
189
+ className: "flex min-w-0 items-center gap-2.5",
190
+ children: [/* @__PURE__ */ _("span", {
191
+ "aria-hidden": !0,
192
+ style: { background: `linear-gradient(${k}, ${k}), ${b}` },
193
+ className: "size-5 shrink-0 rounded-md shadow-[inset_0_0_0_1px_oklch(var(--tint)/0.15)]"
194
+ }), /* @__PURE__ */ _("span", {
195
+ className: "truncate font-mono tabular-nums",
196
+ children: k
197
+ })]
198
+ }), /* @__PURE__ */ _(p, { open: M.open })]
199
+ }),
200
+ /* @__PURE__ */ _(l, {
201
+ name: y,
202
+ value: k,
203
+ onReset: j
204
+ }),
205
+ /* @__PURE__ */ _("div", {
206
+ ...M.popupProps,
207
+ role: "dialog",
208
+ "aria-label": O.chooseColour,
209
+ className: e("zen__popover", o, "p-3"),
210
+ children: /* @__PURE__ */ _(T, {
211
+ value: k,
212
+ onValueChange: A,
213
+ onValueCommit: f,
214
+ alpha: m,
215
+ swatches: h
216
+ })
206
217
  })
207
- })] });
218
+ ] });
208
219
  }
209
220
  //#endregion
210
- export { x as ColorPanel, S as default };
221
+ export { T as ColorPanel, E as default };
@@ -1,3 +1,4 @@
1
+ import { FieldSize } from '../utils/styles';
1
2
  import { ComponentProps, ReactNode } from 'react';
2
3
  /**
3
4
  * Pick one or several items from a list you can search: a field that opens a
@@ -13,14 +14,14 @@ export default function Combobox<T>(props: ComboboxProps<T>): import('react').JS
13
14
  * The field: shows the choice (text, or chips when `multiple`) or the
14
15
  * placeholder, and opens the panel. Pass children to show the value your own way.
15
16
  */
16
- export declare function ComboboxTrigger({ placeholder, disabled, className, style, children, ...rest }: ComboboxTriggerProps): import('react').JSX.Element;
17
+ export declare function ComboboxTrigger({ placeholder: placeholderProp, disabled, size, className, style, children, ...rest }: ComboboxTriggerProps): import('react').JSX.Element;
17
18
  /** The panel under the field. Put ComboboxSearch and ComboboxList in it. */
18
19
  export declare function ComboboxPopup({ className, children }: {
19
20
  className?: string;
20
21
  children: ReactNode;
21
22
  }): import('react').JSX.Element;
22
23
  /** The search box: focused when the panel opens; ↑↓ move through the matches and Enter chooses. */
23
- export declare function ComboboxSearch({ placeholder, 'aria-label': ariaLabel, }: ComboboxSearchProps): import('react').JSX.Element;
24
+ export declare function ComboboxSearch({ placeholder, 'aria-label': ariaLabel }: ComboboxSearchProps): import('react').JSX.Element;
24
25
  /**
25
26
  * The matching items, rendered only while in view (so thousands stay fast).
26
27
  * Rows are `itemHeight` px tall; `renderItem` draws each (default: a
@@ -48,21 +49,28 @@ interface ComboboxBaseProps<T> {
48
49
  filter?: (item: T, query: string) => boolean;
49
50
  /** Chosen items that aren't in `items` (e.g. just created), so the field can still show them. */
50
51
  selectedItems?: readonly T[];
52
+ /** Form field name: the chosen key is submitted with the form (with `multiple`, each key). */
53
+ name?: string;
51
54
  children: ReactNode;
52
55
  }
56
+ /** `value` when you keep the choice; `defaultValue` for the first one when the combobox keeps its own. */
53
57
  export type ComboboxProps<T> = ComboboxBaseProps<T> & ({
54
58
  multiple?: false;
55
- value: string | null;
56
- onValueChange: (key: string) => void;
59
+ value?: string | null;
60
+ defaultValue?: string | null;
61
+ onValueChange?: (key: string) => void;
57
62
  } | {
58
63
  multiple: true;
59
- value: readonly string[];
60
- onValueChange: (keys: string[]) => void;
64
+ value?: readonly string[];
65
+ defaultValue?: readonly string[];
66
+ onValueChange?: (keys: string[]) => void;
61
67
  });
62
68
  export interface ComboboxTriggerProps extends Omit<ComponentProps<'div'>, 'children'> {
63
69
  /** Shown while nothing is chosen. */
64
70
  placeholder?: string;
65
71
  disabled?: boolean;
72
+ /** Height, matching Button's: sm (32px), default (40px) or lg (44px). */
73
+ size?: FieldSize;
66
74
  /** Your own display of the value (default: its text, or chips). */
67
75
  children?: ReactNode;
68
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/combobox/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/combobox/index.tsx"],"names":[],"mappings":"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"}