zaravand-ui 6.0.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +45 -45
  2. package/dist/components/Accordion/Accordion.cjs +1 -1
  3. package/dist/components/Accordion/Accordion.interface.d.cts +8 -0
  4. package/dist/components/Accordion/Accordion.interface.d.ts +8 -0
  5. package/dist/components/Accordion/Accordion.js +226 -148
  6. package/dist/components/Accordion/Accordion.variant.cjs +1 -1
  7. package/dist/components/Accordion/Accordion.variant.js +2 -2
  8. package/dist/components/Avatar/Avatar.cjs +1 -1
  9. package/dist/components/Avatar/Avatar.js +32 -32
  10. package/dist/components/Button/Button.cjs +1 -1
  11. package/dist/components/Button/Button.interface.d.cts +0 -1
  12. package/dist/components/Button/Button.interface.d.ts +0 -1
  13. package/dist/components/Button/Button.js +41 -42
  14. package/dist/components/Button/Button.variant.cjs +1 -1
  15. package/dist/components/Button/Button.variant.d.cts +0 -1
  16. package/dist/components/Button/Button.variant.d.ts +0 -1
  17. package/dist/components/Button/Button.variant.js +2 -4
  18. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  19. package/dist/components/Checkbox/Checkbox.interface.d.cts +11 -0
  20. package/dist/components/Checkbox/Checkbox.interface.d.ts +11 -0
  21. package/dist/components/Checkbox/Checkbox.js +66 -43
  22. package/dist/components/Checkbox/Checkbox.variant.cjs +1 -1
  23. package/dist/components/Checkbox/Checkbox.variant.d.cts +9 -4
  24. package/dist/components/Checkbox/Checkbox.variant.d.ts +9 -4
  25. package/dist/components/Checkbox/Checkbox.variant.js +20 -16
  26. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  27. package/dist/components/DatePicker/DatePicker.interface.d.cts +0 -1
  28. package/dist/components/DatePicker/DatePicker.interface.d.ts +0 -1
  29. package/dist/components/DatePicker/DatePicker.js +511 -407
  30. package/dist/components/DatePicker/DatePicker.utils.cjs +1 -1
  31. package/dist/components/DatePicker/DatePicker.utils.js +101 -82
  32. package/dist/components/DatePicker/DatePicker.variant.cjs +1 -1
  33. package/dist/components/DatePicker/DatePicker.variant.d.cts +1 -3
  34. package/dist/components/DatePicker/DatePicker.variant.d.ts +1 -3
  35. package/dist/components/DatePicker/DatePicker.variant.js +14 -16
  36. package/dist/components/DatePicker/DatePickerMonthSlider.cjs +1 -0
  37. package/dist/components/DatePicker/DatePickerMonthSlider.d.cts +25 -0
  38. package/dist/components/DatePicker/DatePickerMonthSlider.d.ts +25 -0
  39. package/dist/components/DatePicker/DatePickerMonthSlider.js +98 -0
  40. package/dist/components/DatePicker/DatePickerWheel.cjs +1 -0
  41. package/dist/components/DatePicker/DatePickerWheel.d.cts +30 -0
  42. package/dist/components/DatePicker/DatePickerWheel.d.ts +30 -0
  43. package/dist/components/DatePicker/DatePickerWheel.js +156 -0
  44. package/dist/components/Dialog/Dialog.cjs +1 -1
  45. package/dist/components/Dialog/Dialog.interface.d.cts +5 -0
  46. package/dist/components/Dialog/Dialog.interface.d.ts +5 -0
  47. package/dist/components/Dialog/Dialog.js +57 -49
  48. package/dist/components/Dialog/Dialog.variant.cjs +1 -1
  49. package/dist/components/Dialog/Dialog.variant.js +1 -1
  50. package/dist/components/Dialog/DialogDragHandle.cjs +1 -0
  51. package/dist/components/Dialog/DialogDragHandle.d.cts +11 -0
  52. package/dist/components/Dialog/DialogDragHandle.d.ts +11 -0
  53. package/dist/components/Dialog/DialogDragHandle.js +55 -0
  54. package/dist/components/Input/Input.cjs +1 -1
  55. package/dist/components/Input/Input.js +38 -37
  56. package/dist/components/Input/Input.variant.cjs +1 -1
  57. package/dist/components/Input/Input.variant.d.cts +1 -3
  58. package/dist/components/Input/Input.variant.d.ts +1 -3
  59. package/dist/components/Input/Input.variant.js +9 -8
  60. package/dist/components/Pagination/Pagination.cjs +1 -1
  61. package/dist/components/Pagination/Pagination.js +90 -73
  62. package/dist/components/Pagination/Pagination.variant.cjs +1 -1
  63. package/dist/components/Pagination/Pagination.variant.d.cts +3 -1
  64. package/dist/components/Pagination/Pagination.variant.d.ts +3 -1
  65. package/dist/components/Pagination/Pagination.variant.js +12 -6
  66. package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
  67. package/dist/components/RadioGroup/RadioGroup.js +44 -41
  68. package/dist/components/RadioGroup/RadioGroup.variant.cjs +1 -1
  69. package/dist/components/RadioGroup/RadioGroup.variant.d.cts +3 -2
  70. package/dist/components/RadioGroup/RadioGroup.variant.d.ts +3 -2
  71. package/dist/components/RadioGroup/RadioGroup.variant.js +11 -21
  72. package/dist/components/Select/Select.cjs +1 -1
  73. package/dist/components/Select/Select.d.cts +1 -3
  74. package/dist/components/Select/Select.d.ts +1 -3
  75. package/dist/components/Select/Select.interface.d.cts +0 -1
  76. package/dist/components/Select/Select.interface.d.ts +0 -1
  77. package/dist/components/Select/Select.js +620 -401
  78. package/dist/components/Select/Select.variant.cjs +1 -1
  79. package/dist/components/Select/Select.variant.d.cts +5 -5
  80. package/dist/components/Select/Select.variant.d.ts +5 -5
  81. package/dist/components/Select/Select.variant.js +10 -12
  82. package/dist/components/Sheet/Sheet.variant.cjs +1 -1
  83. package/dist/components/Sheet/Sheet.variant.js +6 -6
  84. package/dist/components/Switch/Switch.cjs +1 -1
  85. package/dist/components/Switch/Switch.interface.d.cts +12 -3
  86. package/dist/components/Switch/Switch.interface.d.ts +12 -3
  87. package/dist/components/Switch/Switch.js +57 -37
  88. package/dist/components/Switch/Switch.variant.cjs +1 -1
  89. package/dist/components/Switch/Switch.variant.d.cts +9 -5
  90. package/dist/components/Switch/Switch.variant.d.ts +9 -5
  91. package/dist/components/Switch/Switch.variant.js +22 -15
  92. package/dist/components/Table/Table.cjs +1 -1
  93. package/dist/components/Table/Table.interface.d.cts +9 -0
  94. package/dist/components/Table/Table.interface.d.ts +9 -0
  95. package/dist/components/Table/Table.js +462 -271
  96. package/dist/components/Table/TableSkeletonRows.cjs +1 -1
  97. package/dist/components/Table/TableSkeletonRows.js +26 -21
  98. package/dist/components/Table/TableSortToggle.cjs +1 -1
  99. package/dist/components/Table/TableSortToggle.d.cts +1 -1
  100. package/dist/components/Table/TableSortToggle.d.ts +1 -1
  101. package/dist/components/Table/TableSortToggle.js +23 -22
  102. package/dist/components/Table/hooks/useTableCardLabels.cjs +1 -0
  103. package/dist/components/Table/hooks/useTableCardLabels.d.cts +9 -0
  104. package/dist/components/Table/hooks/useTableCardLabels.d.ts +9 -0
  105. package/dist/components/Table/hooks/useTableCardLabels.js +34 -0
  106. package/dist/components/Table/hooks/useTableSort.cjs +1 -1
  107. package/dist/components/Table/hooks/useTableSort.d.cts +2 -0
  108. package/dist/components/Table/hooks/useTableSort.d.ts +2 -0
  109. package/dist/components/Table/hooks/useTableSort.js +8 -1
  110. package/dist/components/Tabs/Tabs.cjs +1 -1
  111. package/dist/components/Tabs/Tabs.js +90 -63
  112. package/dist/components/Tabs/Tabs.variant.cjs +1 -1
  113. package/dist/components/Tabs/Tabs.variant.d.cts +2 -2
  114. package/dist/components/Tabs/Tabs.variant.d.ts +2 -2
  115. package/dist/components/Tabs/Tabs.variant.js +52 -29
  116. package/dist/components/Textarea/Textarea.cjs +1 -1
  117. package/dist/components/Textarea/Textarea.js +19 -18
  118. package/dist/components/Textarea/Textarea.variant.cjs +1 -1
  119. package/dist/components/Textarea/Textarea.variant.js +5 -5
  120. package/dist/components/TimePicker/TimePicker.cjs +1 -1
  121. package/dist/components/TimePicker/TimePicker.interface.d.cts +0 -1
  122. package/dist/components/TimePicker/TimePicker.interface.d.ts +0 -1
  123. package/dist/components/TimePicker/TimePicker.js +121 -83
  124. package/dist/components/TimePicker/TimePicker.variant.cjs +1 -1
  125. package/dist/components/TimePicker/TimePicker.variant.d.cts +1 -3
  126. package/dist/components/TimePicker/TimePicker.variant.d.ts +1 -3
  127. package/dist/components/TimePicker/TimePicker.variant.js +9 -11
  128. package/dist/components/TimePicker/TimePickerPanel.cjs +1 -1
  129. package/dist/components/TimePicker/TimePickerPanel.js +3 -4
  130. package/dist/components/TimePicker/TimePickerWheel.cjs +1 -0
  131. package/dist/components/TimePicker/TimePickerWheel.d.cts +27 -0
  132. package/dist/components/TimePicker/TimePickerWheel.d.ts +27 -0
  133. package/dist/components/TimePicker/TimePickerWheel.js +205 -0
  134. package/dist/components/Toast/Toast.cjs +1 -1
  135. package/dist/components/Toast/Toast.d.cts +1 -1
  136. package/dist/components/Toast/Toast.d.ts +1 -1
  137. package/dist/components/Toast/Toast.js +56 -34
  138. package/dist/components/Toast/Toast.variant.cjs +1 -1
  139. package/dist/components/Toast/Toast.variant.d.cts +1 -1
  140. package/dist/components/Toast/Toast.variant.d.ts +1 -1
  141. package/dist/components/Toast/Toast.variant.js +1 -1
  142. package/dist/components/Toast/ToastHost.cjs +1 -1
  143. package/dist/components/Toast/ToastHost.js +42 -41
  144. package/dist/components/Toast/function/toastHaptics.cjs +1 -0
  145. package/dist/components/Toast/function/toastHaptics.d.cts +11 -0
  146. package/dist/components/Toast/function/toastHaptics.d.ts +11 -0
  147. package/dist/components/Toast/function/toastHaptics.js +6 -0
  148. package/dist/components/Uploader/Uploader.cjs +2 -2
  149. package/dist/components/Uploader/Uploader.js +328 -158
  150. package/dist/components/Uploader/Uploader.variant.cjs +1 -1
  151. package/dist/components/Uploader/Uploader.variant.d.cts +1 -3
  152. package/dist/components/Uploader/Uploader.variant.d.ts +1 -3
  153. package/dist/components/Uploader/Uploader.variant.js +2 -5
  154. package/dist/components/shared/ActionSheet.cjs +1 -0
  155. package/dist/components/shared/ActionSheet.d.cts +26 -0
  156. package/dist/components/shared/ActionSheet.d.ts +26 -0
  157. package/dist/components/shared/ActionSheet.js +51 -0
  158. package/dist/components/shared/FieldClearButton.cjs +1 -1
  159. package/dist/components/shared/FieldClearButton.d.cts +2 -1
  160. package/dist/components/shared/FieldClearButton.d.ts +2 -1
  161. package/dist/components/shared/FieldClearButton.js +11 -10
  162. package/dist/components/shared/FieldLabel.cjs +1 -1
  163. package/dist/components/shared/FieldLabel.js +6 -6
  164. package/dist/components/shared/IconActionButton.cjs +1 -1
  165. package/dist/components/shared/IconActionButton.d.cts +6 -1
  166. package/dist/components/shared/IconActionButton.d.ts +6 -1
  167. package/dist/components/shared/IconActionButton.js +9 -11
  168. package/dist/components/shared/WheelColumn.cjs +1 -0
  169. package/dist/components/shared/WheelColumn.d.cts +29 -0
  170. package/dist/components/shared/WheelColumn.d.ts +29 -0
  171. package/dist/components/shared/WheelColumn.js +116 -0
  172. package/dist/components/shared/haptics.cjs +1 -0
  173. package/dist/components/shared/haptics.d.cts +6 -0
  174. package/dist/components/shared/haptics.d.ts +6 -0
  175. package/dist/components/shared/haptics.js +8 -0
  176. package/dist/components/shared/responsiveScale.cjs +1 -1
  177. package/dist/components/shared/responsiveScale.d.cts +7 -1
  178. package/dist/components/shared/responsiveScale.d.ts +7 -1
  179. package/dist/components/shared/responsiveScale.js +2 -6
  180. package/dist/components/shared/useStickyToolbar.cjs +1 -0
  181. package/dist/components/shared/useStickyToolbar.d.cts +17 -0
  182. package/dist/components/shared/useStickyToolbar.d.ts +17 -0
  183. package/dist/components/shared/useStickyToolbar.js +39 -0
  184. package/dist/components/shared/useWheelSize.cjs +1 -0
  185. package/dist/components/shared/useWheelSize.d.cts +10 -0
  186. package/dist/components/shared/useWheelSize.d.ts +10 -0
  187. package/dist/components/shared/useWheelSize.js +14 -0
  188. package/dist/components/shared/viewport.cjs +1 -0
  189. package/dist/components/shared/viewport.d.cts +17 -0
  190. package/dist/components/shared/viewport.d.ts +17 -0
  191. package/dist/components/shared/viewport.js +32 -0
  192. package/dist/config/messages.cjs +1 -1
  193. package/dist/config/messages.d.cts +14 -0
  194. package/dist/config/messages.d.ts +14 -0
  195. package/dist/config/messages.js +26 -8
  196. package/dist/index.cjs +1 -1
  197. package/dist/index.css +1 -1
  198. package/dist/index.js +16 -16
  199. package/package.json +2 -1
@@ -3,11 +3,11 @@ import { useZuiConfig as e } from "../../config/useZuiConfig.js";
3
3
  import { localizeDigits as t } from "../../services/localizeDigits/localizeDigits.js";
4
4
  import { cn as n } from "../../lib/utils.js";
5
5
  import r from "../Button/Button.js";
6
- import i from "../Tooltip/Tooltip.js";
7
- import { showFallbackToast as a } from "../Toast/function/showToast.js";
8
- import { describeRejection as o, splitAcceptedFiles as s } from "../Uploader/Uploader.utils.js";
9
- import { avatarEditButtonVariants as c, avatarGroupOverlapBySize as l, avatarPreviewContentClassName as u, avatarStatusVariants as d, avatarVariants as f } from "./Avatar.variant.js";
10
- import { dialogOverlayVariants as ee } from "../Dialog/Dialog.variant.js";
6
+ import { dialogOverlayVariants as i } from "../Dialog/Dialog.variant.js";
7
+ import a from "../Tooltip/Tooltip.js";
8
+ import { showFallbackToast as o } from "../Toast/function/showToast.js";
9
+ import { describeRejection as s, splitAcceptedFiles as c } from "../Uploader/Uploader.utils.js";
10
+ import { avatarEditButtonVariants as l, avatarGroupOverlapBySize as u, avatarPreviewContentClassName as d, avatarStatusVariants as f, avatarVariants as ee } from "./Avatar.variant.js";
11
11
  import { getInitials as p } from "./Avatar.utils.js";
12
12
  import * as m from "react";
13
13
  import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
@@ -15,8 +15,8 @@ import { Camera as v, ImageOff as y, Trash2 as b, User as x, X as S, ZoomIn as C
15
15
  import * as w from "@radix-ui/react-dialog";
16
16
  //#region src/components/Avatar/Avatar.tsx
17
17
  var T = m.createContext(null);
18
- function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k, showTooltip: ne = !1, previewable: re, previewSrc: ie, onClick: A, onImageSelect: j, onImageRemove: M, accept: N = "image/*", maxSizeKb: P, onReject: F, className: ae }, oe) {
19
- let { messages: I, digits: se, dir: L } = e(), R = I.avatar, z = m.useContext(T), B = D ?? z?.size ?? "default", ce = O ?? z?.shape ?? "circle", le = z !== null, V = m.useRef(null), [H, U] = m.useState(null), [ue, W] = m.useState(!1), G = t ? H?.src === t ? H.state : "loading" : "none", K = G === "loaded", q = (re ?? !A) && K, J = !!A || q, Y = !!j, X = p(y), Z = y ?? l, de = E ?? (X ? /* @__PURE__ */ g("span", {
18
+ function E({ src: t, alt: u, name: y, fallback: E, size: D, shape: O, status: k, showTooltip: ne = !1, previewable: re, previewSrc: ie, onClick: A, onImageSelect: j, onImageRemove: M, accept: N = "image/*", maxSizeKb: P, onReject: F, className: ae }, oe) {
19
+ let { messages: I, digits: se, dir: L } = e(), R = I.avatar, z = m.useContext(T), B = D ?? z?.size ?? "default", ce = O ?? z?.shape ?? "circle", le = z !== null, V = m.useRef(null), [H, U] = m.useState(null), [ue, W] = m.useState(!1), G = t ? H?.src === t ? H.state : "loading" : "none", K = G === "loaded", q = (re ?? !A) && K, J = !!A || q, Y = !!j, X = p(y), Z = y ?? u, de = E ?? (X ? /* @__PURE__ */ g("span", {
20
20
  "aria-hidden": "true",
21
21
  dir: "auto",
22
22
  children: X
@@ -28,18 +28,18 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
28
28
  }, Q = () => V.current?.click(), pe = (e) => {
29
29
  let t = e.target.files?.[0];
30
30
  if (e.target.value = "", !t) return;
31
- let { accepted: n, rejected: r } = s([t], N, P);
31
+ let { accepted: n, rejected: r } = c([t], N, P);
32
32
  if (r.length > 0) {
33
- F ? F(r[0]) : a({
33
+ F ? F(r[0]) : o({
34
34
  title: R.invalidImage,
35
- message: o(r[0], P, se, I.uploader),
35
+ message: s(r[0], P, se, I.uploader),
36
36
  type: "error",
37
37
  duration: 5e3
38
38
  }, "`onReject`");
39
39
  return;
40
40
  }
41
41
  j?.(n[0]);
42
- }, $ = n(f({
42
+ }, $ = n(ee({
43
43
  size: B,
44
44
  shape: ce,
45
45
  interactive: J
@@ -47,7 +47,7 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
47
47
  de,
48
48
  t && G !== "error" ? /* @__PURE__ */ g("img", {
49
49
  src: t,
50
- alt: l ?? y ?? "",
50
+ alt: u ?? y ?? "",
51
51
  loading: "lazy",
52
52
  draggable: !1,
53
53
  onLoad: () => U({
@@ -86,13 +86,13 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
86
86
  "data-state": G,
87
87
  className: "zui:relative zui:inline-flex zui:shrink-0 zui:align-middle",
88
88
  children: [
89
- ne && y ? /* @__PURE__ */ g(i, {
89
+ ne && y ? /* @__PURE__ */ g(a, {
90
90
  text: y,
91
91
  position: "top",
92
92
  trigger: he
93
93
  }) : he,
94
94
  k ? /* @__PURE__ */ g("span", {
95
- className: d({
95
+ className: f({
96
96
  status: k,
97
97
  size: B
98
98
  }),
@@ -101,14 +101,14 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
101
101
  children: R[k]
102
102
  })
103
103
  }) : null,
104
- Y ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(i, {
104
+ Y ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(a, {
105
105
  text: R.changeImage,
106
106
  position: "bottom",
107
107
  trigger: /* @__PURE__ */ g("button", {
108
108
  type: "button",
109
109
  "aria-label": R.changeImage,
110
110
  onClick: Q,
111
- className: c({ size: B }),
111
+ className: l({ size: B }),
112
112
  children: /* @__PURE__ */ g(v, { "aria-hidden": "true" })
113
113
  })
114
114
  }), /* @__PURE__ */ g("input", {
@@ -125,19 +125,19 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
125
125
  onOpenChange: W,
126
126
  children: /* @__PURE__ */ g(w.Portal, { children: /* @__PURE__ */ g(w.Overlay, {
127
127
  "data-slot": "avatar-preview-overlay",
128
- className: ee(),
128
+ className: n(i(), "zui:mobile:items-center zui:mobile:p-4"),
129
129
  children: /* @__PURE__ */ _(w.Content, {
130
130
  "data-slot": "avatar-preview",
131
131
  dir: L,
132
132
  "aria-describedby": void 0,
133
- className: u,
133
+ className: d,
134
134
  children: [
135
135
  /* @__PURE__ */ g(w.Close, {
136
136
  asChild: !0,
137
137
  children: /* @__PURE__ */ g("button", {
138
138
  type: "button",
139
139
  "aria-label": I.common.close,
140
- 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)]",
140
+ className: "zui:absolute zui:-top-3 zui:-end-3 zui:mobile:top-2 zui:mobile:end-2 zui:z-10 zui:inline-flex zui:size-9 zui:mobile:size-11 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)]",
141
141
  children: /* @__PURE__ */ g(S, {
142
142
  className: "zui:size-4",
143
143
  "aria-hidden": "true"
@@ -147,28 +147,28 @@ function E({ src: t, alt: l, name: y, fallback: E, size: D, shape: O, status: k,
147
147
  /* @__PURE__ */ g(te, {
148
148
  src: ie ?? t,
149
149
  fallbackSrc: t,
150
- alt: l ?? y ?? ""
150
+ alt: u ?? y ?? ""
151
151
  }),
152
152
  /* @__PURE__ */ _("div", {
153
- 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",
153
+ className: "zui:flex zui:max-w-full zui:flex-wrap zui:items-center zui:justify-center zui:gap-3 zui:mobile:w-full zui-radius-xs zui:bg-[var(--zui-color-surface)] zui:px-4 zui:py-2 zui:text-[var(--zui-color-text)] zui:shadow-md",
154
154
  children: [
155
155
  /* @__PURE__ */ g(w.Title, {
156
- className: "zui:m-0 zui:text-sm zui:font-semibold",
157
- children: y ?? l ?? R.imageFallbackTitle
156
+ className: "zui:m-0 zui:text-sm zui:mobile:w-full zui:mobile:text-center zui:mobile:text-base zui:font-semibold",
157
+ children: y ?? u ?? R.imageFallbackTitle
158
158
  }),
159
159
  Y ? /* @__PURE__ */ g(r, {
160
- size: "sm",
161
160
  variant: "secondary",
162
161
  kind: "cancel",
163
162
  label: R.changeImage,
163
+ className: "zui:mobile:flex-1",
164
164
  icon: /* @__PURE__ */ g(v, { className: "zui:size-4" }),
165
165
  onClick: Q
166
166
  }) : null,
167
167
  M ? /* @__PURE__ */ g(r, {
168
- size: "sm",
169
168
  variant: "danger",
170
169
  kind: "cancel",
171
170
  label: R.removeImage,
171
+ className: "zui:mobile:flex-1",
172
172
  icon: /* @__PURE__ */ g(b, { className: "zui:size-4" }),
173
173
  onClick: () => {
174
174
  W(!1), M();
@@ -202,17 +202,17 @@ function te({ src: t, fallbackSrc: n, alt: r }) {
202
202
  })]
203
203
  });
204
204
  }
205
- function D({ items: r, children: a, max: o, size: s = "default", shape: c = "circle", showTooltip: u = !0, className: d }, ee) {
205
+ function D({ items: r, children: i, max: o, size: s = "default", shape: c = "circle", showTooltip: l = !0, className: d }, f) {
206
206
  let { messages: p, digits: h, dir: v } = e(), y = m.useMemo(() => ({
207
207
  size: s,
208
208
  shape: c
209
209
  }), [s, c]), b = r ? r.map(({ key: e, ...t }, n) => /* @__PURE__ */ g(O, {
210
- showTooltip: u,
210
+ showTooltip: l,
211
211
  ...t
212
- }, e ?? `${t.name ?? "avatar"}-${n}`)) : m.Children.toArray(a).filter(m.isValidElement), x = o !== void 0 && o > 0 && b.length > o ? o : b.length, S = b.length - x, C = r ? r.slice(x).map((e) => e.name).filter((e) => !!e) : [], w = /* @__PURE__ */ g("span", {
212
+ }, e ?? `${t.name ?? "avatar"}-${n}`)) : m.Children.toArray(i).filter(m.isValidElement), x = o !== void 0 && o > 0 && b.length > o ? o : b.length, S = b.length - x, C = r ? r.slice(x).map((e) => e.name).filter((e) => !!e) : [], w = /* @__PURE__ */ g("span", {
213
213
  role: "img",
214
214
  "aria-label": p.avatar.othersCount(t(String(S), h)),
215
- className: n(f({
215
+ className: n(ee({
216
216
  size: s,
217
217
  shape: c
218
218
  }), "zui:ring-2 zui:ring-[var(--zui-color-surface)]"),
@@ -224,11 +224,11 @@ function D({ items: r, children: a, max: o, size: s = "default", shape: c = "cir
224
224
  return /* @__PURE__ */ g(T.Provider, {
225
225
  value: y,
226
226
  children: /* @__PURE__ */ _("div", {
227
- ref: ee,
227
+ ref: f,
228
228
  "data-slot": "avatar-group",
229
229
  dir: v,
230
- className: n("zui:inline-flex zui:items-center zui:[&>*]:relative zui:[&>*:hover]:z-10 zui:[&>*:focus-within]:z-10", l[s], d),
231
- children: [b.slice(0, x), S > 0 ? u && C.length > 0 ? /* @__PURE__ */ g(i, {
230
+ className: n("zui:inline-flex zui:items-center zui:[&>*]:relative zui:[&>*:hover]:z-10 zui:[&>*:focus-within]:z-10", u[s], d),
231
+ children: [b.slice(0, x), S > 0 ? l && C.length > 0 ? /* @__PURE__ */ g(a, {
232
232
  text: C.join(p.avatar.listSeparator),
233
233
  position: "top",
234
234
  trigger: w
@@ -1 +1 @@
1
- "use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../lib/utils.cjs`),t=require(`../Spinner/Spinner.cjs`);;/* empty css */const n=require(`./Button.variant.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=140,o=(0,r.forwardRef)(function({size:o=`default`,variant:s=`primary`,kind:c=`confirm`,disabled:l=!1,isLoading:u=!1,label:d,children:f,icon:p,ariaLabel:m,fullWidth:h=!1,type:g=`button`,onClick:_,className:v,onPointerDown:y,onPointerUp:b,onPointerCancel:x,onPointerLeave:S,onKeyDown:C,onKeyUp:w,...T},E){let D=l||u,O=f??d,k=!u&&!!p,A=!u&&!!O,j=k&&!A,[M,N]=(0,r.useState)(!1),P=(0,r.useRef)(0),F=(0,r.useRef)(null),I=e.cn(n.buttonVariants({size:o,variant:s,kind:c,disabled:D,fullWidth:h}),j&&`zui-button--icon-only`,v),L=(0,r.useCallback)(()=>{F.current!==null&&(window.clearTimeout(F.current),F.current=null)},[]),R=(0,r.useCallback)(()=>{D||(L(),P.current=window.performance.now(),N(!0))},[L,D]),z=(0,r.useCallback)(()=>{L();let e=window.performance.now()-P.current,t=Math.max(a-e,0);F.current=window.setTimeout(()=>{N(!1),F.current=null},t)},[L]),B=(0,r.useCallback)(e=>{C?.(e),!e.defaultPrevented&&(e.repeat||e.key!==` `&&e.key!==`Enter`||R())},[C,R]),V=(0,r.useCallback)(e=>{w?.(e),!e.defaultPrevented&&(e.key!==` `&&e.key!==`Enter`||z())},[w,z]);return(0,r.useEffect)(()=>{D&&(L(),N(!1))},[L,D]),(0,r.useEffect)(()=>L,[L]),(0,i.jsxs)(`button`,{ref:E,"data-slot":`button`,type:g,disabled:D,"aria-label":m,"aria-busy":u||void 0,"data-pressed":M?`true`:void 0,onPointerDown:e=>{y?.(e),!e.defaultPrevented&&R()},onPointerUp:e=>{b?.(e),z()},onPointerCancel:e=>{x?.(e),z()},onPointerLeave:e=>{S?.(e),z()},onKeyDown:B,onKeyUp:V,onClick:D?void 0:_,className:I,...T,children:[u?(0,i.jsx)(t.default,{}):null,k?(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`zui-button__icon zui:inline-flex zui:items-center zui:justify-center zui:[&>*]:origin-center zui:[&>*]:scale-[0.7]`,children:p}):null,A?(0,i.jsx)(`span`,{children:O}):null]})});exports.default=o;
1
+ "use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../lib/utils.cjs`),t=require(`../Spinner/Spinner.cjs`);;/* empty css */const n=require(`./Button.variant.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=140,o=(0,r.forwardRef)(function({variant:o=`primary`,kind:s=`confirm`,disabled:c=!1,isLoading:l=!1,label:u,children:d,icon:f,ariaLabel:p,fullWidth:m=!1,type:h=`button`,onClick:g,className:_,onPointerDown:v,onPointerUp:y,onPointerCancel:b,onPointerLeave:x,onKeyDown:S,onKeyUp:C,...w},T){let E=c||l,D=d??u,O=!l&&!!f,k=!l&&!!D,A=O&&!k,[j,M]=(0,r.useState)(!1),N=(0,r.useRef)(0),P=(0,r.useRef)(null),F=e.cn(n.buttonVariants({variant:o,kind:s,disabled:E,fullWidth:m}),A&&`zui-button--icon-only`,_),I=(0,r.useCallback)(()=>{P.current!==null&&(window.clearTimeout(P.current),P.current=null)},[]),L=(0,r.useCallback)(()=>{E||(I(),N.current=window.performance.now(),M(!0))},[I,E]),R=(0,r.useCallback)(()=>{I();let e=window.performance.now()-N.current,t=Math.max(a-e,0);P.current=window.setTimeout(()=>{M(!1),P.current=null},t)},[I]),z=(0,r.useCallback)(e=>{S?.(e),!e.defaultPrevented&&(e.repeat||e.key!==` `&&e.key!==`Enter`||L())},[S,L]),B=(0,r.useCallback)(e=>{C?.(e),!e.defaultPrevented&&(e.key!==` `&&e.key!==`Enter`||R())},[C,R]);return(0,r.useEffect)(()=>{E&&(I(),M(!1))},[I,E]),(0,r.useEffect)(()=>I,[I]),(0,i.jsxs)(`button`,{ref:T,"data-slot":`button`,type:h,disabled:E,"aria-label":p,"aria-busy":l||void 0,"data-pressed":j?`true`:void 0,onPointerDown:e=>{v?.(e),!e.defaultPrevented&&L()},onPointerUp:e=>{y?.(e),R()},onPointerCancel:e=>{b?.(e),R()},onPointerLeave:e=>{x?.(e),R()},onKeyDown:z,onKeyUp:B,onClick:E?void 0:g,className:F,...w,children:[l?(0,i.jsx)(t.default,{}):null,O?(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`zui-button__icon zui:inline-flex zui:items-center zui:justify-center zui:[&>*]:origin-center zui:[&>*]:scale-[0.7]`,children:f}):null,k?(0,i.jsx)(`span`,{children:D}):null]})});exports.default=o;
@@ -1,6 +1,5 @@
1
1
  import type * as React from "react";
2
2
  export interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type" | "disabled" | "onClick"> {
3
- size?: "sm" | "default" | "lg";
4
3
  variant?: "primary" | "secondary" | "danger";
5
4
  kind?: "confirm" | "cancel";
6
5
  disabled?: boolean;
@@ -1,6 +1,5 @@
1
1
  import type * as React from "react";
2
2
  export interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type" | "disabled" | "onClick"> {
3
- size?: "sm" | "default" | "lg";
4
3
  variant?: "primary" | "secondary" | "danger";
5
4
  kind?: "confirm" | "cancel";
6
5
  disabled?: boolean;
@@ -6,63 +6,62 @@ import { buttonVariants as n } from "./Button.variant.js";
6
6
  import { forwardRef as r, useCallback as i, useEffect as a, useRef as o, useState as s } from "react";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  //#region src/components/Button/Button.tsx
9
- var u = 140, d = r(function({ size: r = "default", variant: d = "primary", kind: f = "confirm", disabled: p = !1, isLoading: m = !1, label: h, children: g, icon: _, ariaLabel: v, fullWidth: y = !1, type: b = "button", onClick: x, className: S, onPointerDown: C, onPointerUp: w, onPointerCancel: T, onPointerLeave: E, onKeyDown: D, onKeyUp: O, ...k }, A) {
10
- let j = p || m, M = g ?? h, N = !m && !!_, P = !m && !!M, F = N && !P, [I, L] = s(!1), R = o(0), z = o(null), B = e(n({
11
- size: r,
12
- variant: d,
13
- kind: f,
14
- disabled: j,
15
- fullWidth: y
16
- }), F && "zui-button--icon-only", S), V = i(() => {
17
- z.current !== null && (window.clearTimeout(z.current), z.current = null);
18
- }, []), H = i(() => {
19
- j || (V(), R.current = window.performance.now(), L(!0));
20
- }, [V, j]), U = i(() => {
21
- V();
22
- let e = window.performance.now() - R.current, t = Math.max(u - e, 0);
23
- z.current = window.setTimeout(() => {
24
- L(!1), z.current = null;
9
+ var u = 140, d = r(function({ variant: r = "primary", kind: d = "confirm", disabled: f = !1, isLoading: p = !1, label: m, children: h, icon: g, ariaLabel: _, fullWidth: v = !1, type: y = "button", onClick: b, className: x, onPointerDown: S, onPointerUp: C, onPointerCancel: w, onPointerLeave: T, onKeyDown: E, onKeyUp: D, ...O }, k) {
10
+ let A = f || p, j = h ?? m, M = !p && !!g, N = !p && !!j, P = M && !N, [F, I] = s(!1), L = o(0), R = o(null), z = e(n({
11
+ variant: r,
12
+ kind: d,
13
+ disabled: A,
14
+ fullWidth: v
15
+ }), P && "zui-button--icon-only", x), B = i(() => {
16
+ R.current !== null && (window.clearTimeout(R.current), R.current = null);
17
+ }, []), V = i(() => {
18
+ A || (B(), L.current = window.performance.now(), I(!0));
19
+ }, [B, A]), H = i(() => {
20
+ B();
21
+ let e = window.performance.now() - L.current, t = Math.max(u - e, 0);
22
+ R.current = window.setTimeout(() => {
23
+ I(!1), R.current = null;
25
24
  }, t);
26
- }, [V]), W = i((e) => {
27
- D?.(e), !e.defaultPrevented && (e.repeat || e.key !== " " && e.key !== "Enter" || H());
28
- }, [D, H]), G = i((e) => {
29
- O?.(e), !e.defaultPrevented && (e.key !== " " && e.key !== "Enter" || U());
30
- }, [O, U]);
25
+ }, [B]), U = i((e) => {
26
+ E?.(e), !e.defaultPrevented && (e.repeat || e.key !== " " && e.key !== "Enter" || V());
27
+ }, [E, V]), W = i((e) => {
28
+ D?.(e), !e.defaultPrevented && (e.key !== " " && e.key !== "Enter" || H());
29
+ }, [D, H]);
31
30
  return a(() => {
32
- j && (V(), L(!1));
33
- }, [V, j]), a(() => V, [V]), /* @__PURE__ */ l("button", {
34
- ref: A,
31
+ A && (B(), I(!1));
32
+ }, [B, A]), a(() => B, [B]), /* @__PURE__ */ l("button", {
33
+ ref: k,
35
34
  "data-slot": "button",
36
- type: b,
37
- disabled: j,
38
- "aria-label": v,
39
- "aria-busy": m || void 0,
40
- "data-pressed": I ? "true" : void 0,
35
+ type: y,
36
+ disabled: A,
37
+ "aria-label": _,
38
+ "aria-busy": p || void 0,
39
+ "data-pressed": F ? "true" : void 0,
41
40
  onPointerDown: (e) => {
42
- C?.(e), !e.defaultPrevented && H();
41
+ S?.(e), !e.defaultPrevented && V();
43
42
  },
44
43
  onPointerUp: (e) => {
45
- w?.(e), U();
44
+ C?.(e), H();
46
45
  },
47
46
  onPointerCancel: (e) => {
48
- T?.(e), U();
47
+ w?.(e), H();
49
48
  },
50
49
  onPointerLeave: (e) => {
51
- E?.(e), U();
50
+ T?.(e), H();
52
51
  },
53
- onKeyDown: W,
54
- onKeyUp: G,
55
- onClick: j ? void 0 : x,
56
- className: B,
57
- ...k,
52
+ onKeyDown: U,
53
+ onKeyUp: W,
54
+ onClick: A ? void 0 : b,
55
+ className: z,
56
+ ...O,
58
57
  children: [
59
- m ? /* @__PURE__ */ c(t, {}) : null,
60
- N ? /* @__PURE__ */ c("span", {
58
+ p ? /* @__PURE__ */ c(t, {}) : null,
59
+ M ? /* @__PURE__ */ c("span", {
61
60
  "aria-hidden": "true",
62
61
  className: "zui-button__icon zui:inline-flex zui:items-center zui:justify-center zui:[&>*]:origin-center zui:[&>*]:scale-[0.7]",
63
- children: _
62
+ children: g
64
63
  }) : null,
65
- P ? /* @__PURE__ */ c("span", { children: M }) : null
64
+ N ? /* @__PURE__ */ c("span", { children: j }) : null
66
65
  ]
67
66
  });
68
67
  });
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);var t=(0,require(`class-variance-authority`).cva)(`zui-button zui:inline-flex zui:items-center zui:justify-center zui:gap-2 zui:rounded-md ${e.BUTTON_PADDING_X} zui:text-sm zui:font-medium zui:leading-none zui:whitespace-nowrap zui:focus-visible:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-2 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-65`,{variants:{size:e.controlHeightBySize,variant:{primary:``,secondary:``,danger:``},kind:{confirm:`zui:text-[var(--zui-color-on-solid)] zui:hover:brightness-105 zui:hover:shadow-sm zui:active:shadow-sm`,cancel:`zui:border-2 zui:bg-transparent zui:text-[var(--zui-color-text)] zui:hover:bg-transparent zui:hover:shadow-sm zui:active:bg-transparent zui:active:shadow-sm`},disabled:{true:``,false:`zui:cursor-pointer`},fullWidth:{true:`zui:w-full`,false:`zui:w-auto`}},compoundVariants:[{kind:`confirm`,variant:`primary`,className:`zui:bg-[var(--zui-color-primary)]`},{kind:`confirm`,variant:`secondary`,className:`zui:bg-[var(--zui-color-secondary)]`},{kind:`confirm`,variant:`danger`,className:`zui:bg-[var(--zui-color-danger)]`},{kind:`cancel`,variant:`primary`,className:`zui:border-[var(--zui-color-primary)]`},{kind:`cancel`,variant:`secondary`,className:`zui:border-[var(--zui-color-secondary)]`},{kind:`cancel`,variant:`danger`,className:`zui:border-[var(--zui-color-danger)]`}],defaultVariants:{size:`default`,variant:`primary`,kind:`confirm`,disabled:!1,fullWidth:!1}});exports.buttonVariants=t;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);var t=(0,require(`class-variance-authority`).cva)(`zui-button ${e.CONTROL_HEIGHT_DEFAULT} zui:inline-flex zui:items-center zui:justify-center zui:gap-2 zui:rounded-md ${e.BUTTON_PADDING_X} zui:text-sm zui:font-medium zui:leading-none zui:whitespace-nowrap zui:focus-visible:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-2 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-65`,{variants:{variant:{primary:``,secondary:``,danger:``},kind:{confirm:`zui:text-[var(--zui-color-on-solid)] zui:hover:brightness-105 zui:hover:shadow-sm zui:active:shadow-sm`,cancel:`zui:border-2 zui:bg-transparent zui:text-[var(--zui-color-text)] zui:hover:bg-transparent zui:hover:shadow-sm zui:active:bg-transparent zui:active:shadow-sm`},disabled:{true:``,false:`zui:cursor-pointer`},fullWidth:{true:`zui:w-full`,false:`zui:w-auto`}},compoundVariants:[{kind:`confirm`,variant:`primary`,className:`zui:bg-[var(--zui-color-primary)]`},{kind:`confirm`,variant:`secondary`,className:`zui:bg-[var(--zui-color-secondary)]`},{kind:`confirm`,variant:`danger`,className:`zui:bg-[var(--zui-color-danger)]`},{kind:`cancel`,variant:`primary`,className:`zui:border-[var(--zui-color-primary)]`},{kind:`cancel`,variant:`secondary`,className:`zui:border-[var(--zui-color-secondary)]`},{kind:`cancel`,variant:`danger`,className:`zui:border-[var(--zui-color-danger)]`}],defaultVariants:{variant:`primary`,kind:`confirm`,disabled:!1,fullWidth:!1}});exports.buttonVariants=t;
@@ -1,5 +1,4 @@
1
1
  declare const buttonVariants: (props?: ({
2
- size?: "sm" | "default" | "lg" | null | undefined;
3
2
  variant?: "primary" | "secondary" | "danger" | null | undefined;
4
3
  kind?: "confirm" | "cancel" | null | undefined;
5
4
  disabled?: boolean | null | undefined;
@@ -1,5 +1,4 @@
1
1
  declare const buttonVariants: (props?: ({
2
- size?: "sm" | "default" | "lg" | null | undefined;
3
2
  variant?: "primary" | "secondary" | "danger" | null | undefined;
4
3
  kind?: "confirm" | "cancel" | null | undefined;
5
4
  disabled?: boolean | null | undefined;
@@ -1,9 +1,8 @@
1
- import { BUTTON_PADDING_X as e, controlHeightBySize as t } from "../shared/responsiveScale.js";
1
+ import { BUTTON_PADDING_X as e, CONTROL_HEIGHT_DEFAULT as t } from "../shared/responsiveScale.js";
2
2
  import { cva as n } from "class-variance-authority";
3
3
  //#region src/components/Button/Button.variant.ts
4
- var r = n(`zui-button zui:inline-flex zui:items-center zui:justify-center zui:gap-2 zui:rounded-md ${e} zui:text-sm zui:font-medium zui:leading-none zui:whitespace-nowrap zui:focus-visible:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-2 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-65`, {
4
+ var r = n(`zui-button ${t} zui:inline-flex zui:items-center zui:justify-center zui:gap-2 zui:rounded-md ${e} zui:text-sm zui:font-medium zui:leading-none zui:whitespace-nowrap zui:focus-visible:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-color-primary)] zui:focus-visible:ring-offset-2 zui:focus-visible:ring-offset-[var(--zui-color-surface)] zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-65`, {
5
5
  variants: {
6
- size: t,
7
6
  variant: {
8
7
  primary: "",
9
8
  secondary: "",
@@ -55,7 +54,6 @@ var r = n(`zui-button zui:inline-flex zui:items-center zui:justify-center zui:ga
55
54
  }
56
55
  ],
57
56
  defaultVariants: {
58
- size: "default",
59
57
  variant: "primary",
60
58
  kind: "confirm",
61
59
  disabled: !1,
@@ -1 +1 @@
1
- "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../lib/utils.cjs`),n=require(`../shared/FieldLabel.cjs`),r=require(`../shared/useInvalidState.cjs`),i=require(`../shared/useBubbleInputInvalid.cjs`),a=require(`./Checkbox.variant.cjs`);let o=require(`react`);o=e.__toESM(o,1);let s=require(`react/jsx-runtime`),c=require(`lucide-react`),l=require(`@radix-ui/react-checkbox`);l=e.__toESM(l,1);var u=o.forwardRef(function({className:e,size:u=`default`,checked:d,defaultChecked:f,onCheckedChange:p,onInvalid:m,required:h,name:g,value:_,form:v,id:y,"aria-label":b,disabled:x=!1,onClick:S,...C},w){let{isInvalid:T,setIsInvalid:E,handleInvalid:D}=r.useInvalidState(m),O=o.useRef(null),k=o.useMemo(()=>t.mergeRefs(O,w),[w]);i.useBubbleInputInvalid(O,D);let A=o.useCallback(e=>{E(!1),p?.(e)},[p,E]);return(0,s.jsxs)(l.Root,{...C,ref:k,"data-slot":`checkbox`,"aria-invalid":T||void 0,"aria-disabled":x||void 0,className:t.cn(a.checkboxVariants({size:u,disabled:x,className:e})),checked:d,defaultChecked:f,onCheckedChange:A,required:h,name:g,value:_,form:v,id:y,"aria-label":b,disabled:x,onClick:x?void 0:S,children:[(0,s.jsx)(l.Indicator,{"data-slot":`checkbox-indicator`,className:t.cn(a.checkboxIndicatorVariants({size:u})),children:(0,s.jsx)(c.CheckIcon,{})}),h?(0,s.jsx)(n.RequiredMark,{compact:!0}):null]})});exports.default=u;
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`../shared/FieldLabel.cjs`),i=require(`../shared/useInvalidState.cjs`),a=require(`../shared/useBubbleInputInvalid.cjs`),o=require(`./Checkbox.variant.cjs`);let s=require(`react`);s=e.__toESM(s,1);let c=require(`react/jsx-runtime`),l=require(`lucide-react`),u=require(`@radix-ui/react-checkbox`);u=e.__toESM(u,1);var d=s.forwardRef(function({className:e,checked:d,defaultChecked:f,onCheckedChange:p,onInvalid:m,required:h,name:g,value:_,form:v,id:y,"aria-label":b,disabled:x=!1,onClick:S,label:C,description:w,direction:T,optionClassName:E,labelClassName:D,descriptionClassName:O,...k},A){let{dir:j}=t.useZuiConfig(),M=T??j,N=s.useId(),P=!!(C||w),F=y??(P?N:void 0),{isInvalid:I,setIsInvalid:L,handleInvalid:R}=i.useInvalidState(m),z=s.useRef(null),B=s.useMemo(()=>n.mergeRefs(z,A),[A]);a.useBubbleInputInvalid(z,R);let V=s.useCallback(e=>{L(!1),p?.(e)},[p,L]),H=(0,c.jsx)(`span`,{"data-slot":`checkbox-control`,className:`zui:relative zui:inline-flex zui:shrink-0 zui:[&>input]:inset-0! zui:[&>input]:transform-none!`,children:(0,c.jsxs)(u.Root,{...k,ref:B,"data-slot":`checkbox`,"aria-invalid":I||void 0,"aria-disabled":x||void 0,className:n.cn(o.checkboxVariants({disabled:x,className:e})),checked:d,defaultChecked:f,onCheckedChange:V,required:h,name:g,value:_,form:v,id:F,"aria-label":b,disabled:x,onClick:x?void 0:S,children:[(0,c.jsx)(u.Indicator,{"data-slot":`checkbox-indicator`,className:n.cn(o.checkboxIndicatorVariants()),children:(0,c.jsx)(l.CheckIcon,{})}),h?(0,c.jsx)(r.RequiredMark,{compact:!0}):null]})});return P?(0,c.jsxs)(`label`,{htmlFor:F,"data-slot":`checkbox-option`,dir:M,className:n.cn(o.checkboxOptionVariants({direction:M,disabled:x,className:E}),I&&`zui:mobile:border-[var(--zui-theme-status-danger)]`),children:[H,(0,c.jsxs)(`span`,{className:`zui:min-w-0 zui:flex-1`,children:[C?(0,c.jsx)(`span`,{className:n.cn(o.checkboxLabelVariants({disabled:x}),D),children:C}):null,w?(0,c.jsx)(`span`,{className:n.cn(o.checkboxDescriptionVariants(),O),children:w}):null]})]}):H});exports.default=d;
@@ -20,5 +20,16 @@ export interface CheckboxProps extends CheckboxNativeProps, VariantProps<typeof
20
20
  onClick?: React.MouseEventHandler<HTMLButtonElement>;
21
21
  /** Called when a native `<form>` rejects a missing `required` value. The event targets the hidden form input. */
22
22
  onInvalid?: React.FormEventHandler<HTMLInputElement>;
23
+ /**
24
+ * Text beside the checkbox. With a `label` or `description` the checkbox sits in a bordered,
25
+ * fully tappable row (like a `RadioGroupItem`) whose border takes the primary colour when checked.
26
+ */
27
+ label?: React.ReactNode;
28
+ description?: React.ReactNode;
29
+ /** Side of the row the checkbox sits on; defaults to the configured direction. */
30
+ direction?: "rtl" | "ltr";
31
+ optionClassName?: string;
32
+ labelClassName?: string;
33
+ descriptionClassName?: string;
23
34
  }
24
35
  export {};
@@ -20,5 +20,16 @@ export interface CheckboxProps extends CheckboxNativeProps, VariantProps<typeof
20
20
  onClick?: React.MouseEventHandler<HTMLButtonElement>;
21
21
  /** Called when a native `<form>` rejects a missing `required` value. The event targets the hidden form input. */
22
22
  onInvalid?: React.FormEventHandler<HTMLInputElement>;
23
+ /**
24
+ * Text beside the checkbox. With a `label` or `description` the checkbox sits in a bordered,
25
+ * fully tappable row (like a `RadioGroupItem`) whose border takes the primary colour when checked.
26
+ */
27
+ label?: React.ReactNode;
28
+ description?: React.ReactNode;
29
+ /** Side of the row the checkbox sits on; defaults to the configured direction. */
30
+ direction?: "rtl" | "ltr";
31
+ optionClassName?: string;
32
+ labelClassName?: string;
33
+ descriptionClassName?: string;
23
34
  }
24
35
  export {};
@@ -1,48 +1,71 @@
1
1
  "use client";
2
- import { cn as e, mergeRefs as t } from "../../lib/utils.js";
3
- import { RequiredMark as n } from "../shared/FieldLabel.js";
4
- import { useInvalidState as r } from "../shared/useInvalidState.js";
5
- import { useBubbleInputInvalid as i } from "../shared/useBubbleInputInvalid.js";
6
- import { checkboxIndicatorVariants as a, checkboxVariants as o } from "./Checkbox.variant.js";
7
- import * as s from "react";
8
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
- import { CheckIcon as u } from "lucide-react";
10
- import * as d from "@radix-ui/react-checkbox";
2
+ import { useZuiConfig as e } from "../../config/useZuiConfig.js";
3
+ import { cn as t, mergeRefs as n } from "../../lib/utils.js";
4
+ import { RequiredMark as r } from "../shared/FieldLabel.js";
5
+ import { useInvalidState as i } from "../shared/useInvalidState.js";
6
+ import { useBubbleInputInvalid as a } from "../shared/useBubbleInputInvalid.js";
7
+ import { checkboxDescriptionVariants as o, checkboxIndicatorVariants as s, checkboxLabelVariants as c, checkboxOptionVariants as l, checkboxVariants as u } from "./Checkbox.variant.js";
8
+ import * as d from "react";
9
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
+ import { CheckIcon as m } from "lucide-react";
11
+ import * as h from "@radix-ui/react-checkbox";
11
12
  //#region src/components/Checkbox/Checkbox.tsx
12
- var f = s.forwardRef(function({ className: f, size: p = "default", checked: m, defaultChecked: h, onCheckedChange: g, onInvalid: _, required: v, name: y, value: b, form: x, id: S, "aria-label": C, disabled: w = !1, onClick: T, ...E }, D) {
13
- let { isInvalid: O, setIsInvalid: k, handleInvalid: A } = r(_), j = s.useRef(null), M = s.useMemo(() => t(j, D), [D]);
14
- i(j, A);
15
- let N = s.useCallback((e) => {
16
- k(!1), g?.(e);
17
- }, [g, k]);
18
- return /* @__PURE__ */ l(d.Root, {
19
- ...E,
20
- ref: M,
21
- "data-slot": "checkbox",
22
- "aria-invalid": O || void 0,
23
- "aria-disabled": w || void 0,
24
- className: e(o({
25
- size: p,
26
- disabled: w,
27
- className: f
28
- })),
29
- checked: m,
30
- defaultChecked: h,
31
- onCheckedChange: N,
32
- required: v,
33
- name: y,
34
- value: b,
35
- form: x,
36
- id: S,
37
- "aria-label": C,
38
- disabled: w,
39
- onClick: w ? void 0 : T,
40
- children: [/* @__PURE__ */ c(d.Indicator, {
41
- "data-slot": "checkbox-indicator",
42
- className: e(a({ size: p })),
43
- children: /* @__PURE__ */ c(u, {})
44
- }), v ? /* @__PURE__ */ c(n, { compact: !0 }) : null]
13
+ var g = d.forwardRef(function({ className: g, checked: _, defaultChecked: v, onCheckedChange: y, onInvalid: b, required: x, name: S, value: C, form: w, id: T, "aria-label": E, disabled: D = !1, onClick: O, label: k, description: A, direction: j, optionClassName: M, labelClassName: N, descriptionClassName: P, ...F }, I) {
14
+ let { dir: L } = e(), R = j ?? L, z = d.useId(), B = !!(k || A), V = T ?? (B ? z : void 0), { isInvalid: H, setIsInvalid: U, handleInvalid: W } = i(b), G = d.useRef(null), K = d.useMemo(() => n(G, I), [I]);
15
+ a(G, W);
16
+ let q = d.useCallback((e) => {
17
+ U(!1), y?.(e);
18
+ }, [y, U]), J = /* @__PURE__ */ f("span", {
19
+ "data-slot": "checkbox-control",
20
+ className: "zui:relative zui:inline-flex zui:shrink-0 zui:[&>input]:inset-0! zui:[&>input]:transform-none!",
21
+ children: /* @__PURE__ */ p(h.Root, {
22
+ ...F,
23
+ ref: K,
24
+ "data-slot": "checkbox",
25
+ "aria-invalid": H || void 0,
26
+ "aria-disabled": D || void 0,
27
+ className: t(u({
28
+ disabled: D,
29
+ className: g
30
+ })),
31
+ checked: _,
32
+ defaultChecked: v,
33
+ onCheckedChange: q,
34
+ required: x,
35
+ name: S,
36
+ value: C,
37
+ form: w,
38
+ id: V,
39
+ "aria-label": E,
40
+ disabled: D,
41
+ onClick: D ? void 0 : O,
42
+ children: [/* @__PURE__ */ f(h.Indicator, {
43
+ "data-slot": "checkbox-indicator",
44
+ className: t(s()),
45
+ children: /* @__PURE__ */ f(m, {})
46
+ }), x ? /* @__PURE__ */ f(r, { compact: !0 }) : null]
47
+ })
45
48
  });
49
+ return B ? /* @__PURE__ */ p("label", {
50
+ htmlFor: V,
51
+ "data-slot": "checkbox-option",
52
+ dir: R,
53
+ className: t(l({
54
+ direction: R,
55
+ disabled: D,
56
+ className: M
57
+ }), H && "zui:mobile:border-[var(--zui-theme-status-danger)]"),
58
+ children: [J, /* @__PURE__ */ p("span", {
59
+ className: "zui:min-w-0 zui:flex-1",
60
+ children: [k ? /* @__PURE__ */ f("span", {
61
+ className: t(c({ disabled: D }), N),
62
+ children: k
63
+ }) : null, A ? /* @__PURE__ */ f("span", {
64
+ className: t(o(), P),
65
+ children: A
66
+ }) : null]
67
+ })]
68
+ }) : J;
46
69
  });
47
70
  //#endregion
48
- export { f as default };
71
+ export { g as default };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`class-variance-authority`);var t=(0,e.cva)(`zui:group/checkbox zui:relative zui:inline-flex zui:shrink-0 zui:items-center zui:justify-center zui-radius-xs zui:border zui:border-[var(--zui-color-border)] zui:bg-[var(--zui-theme-control-bg)] zui:text-[var(--zui-theme-text-inverse)] zui:shadow-xs zui:cursor-pointer zui:outline-none zui:select-none zui:transition-all zui:duration-300 zui:ease-out zui:data-[state=checked]:border-[var(--zui-theme-action-primary)] zui:data-[state=checked]:bg-[var(--zui-theme-action-primary)] zui:hover:-translate-y-0.5 zui:hover:border-[var(--zui-theme-action-primary-hover)] zui:hover:bg-[var(--zui-theme-control-hover-bg)] zui:hover:shadow-[0_8px_20px_-12px_var(--zui-effect-shadow-ink-35)] zui:data-[state=checked]:hover:bg-[var(--zui-theme-action-primary-hover)] zui:active:translate-y-px zui:data-[state=checked]:active:bg-[var(--zui-theme-action-primary-active)] zui:focus-visible:border-[var(--zui-theme-action-secondary)] zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)] zui:aria-invalid:border-[var(--zui-theme-status-danger)] zui:aria-invalid:ring-[var(--zui-theme-status-danger)] zui:disabled:cursor-not-allowed zui:disabled:pointer-events-none zui:disabled:opacity-50`,{variants:{size:{sm:`zui:size-[calc(var(--zui-scale,10px)*1.68)]`,default:`zui:size-[calc(var(--zui-scale,10px)*1.92)]`,lg:`zui:size-6`},disabled:{true:`zui:pointer-events-none zui:opacity-50`,false:``}},defaultVariants:{size:`default`,disabled:!1}}),n=(0,e.cva)(`zui:flex zui:items-center zui:justify-center zui:text-[var(--zui-theme-text-inverse)] zui:data-[state=checked]:animate-in zui:data-[state=checked]:zoom-in-95 zui:data-[state=checked]:fade-in-0`,{variants:{size:{sm:`zui:[&_svg]:size-[calc(var(--zui-scale,10px)*1.44)] zui:[&_svg]:transition-transform zui:[&_svg]:duration-200`,default:`zui:[&_svg]:size-[calc(var(--zui-scale,10px)*1.68)] zui:[&_svg]:transition-transform zui:[&_svg]:duration-200`,lg:`zui:[&_svg]:size-[calc(var(--zui-scale,10px)*1.92)] zui:[&_svg]:transition-transform zui:[&_svg]:duration-200`}},defaultVariants:{size:`default`}});exports.checkboxIndicatorVariants=n,exports.checkboxVariants=t;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`class-variance-authority`);var t=(0,e.cva)(`zui:group/checkbox zui:relative zui:inline-flex zui:size-[calc(var(--zui-scale,10px)*1.92)] zui:mobile:size-[calc(var(--zui-scale,10px)*2.6)] zui:shrink-0 zui:mobile:after:absolute zui:mobile:after:inset-[calc(var(--zui-scale,10px)*-1)] zui:mobile:after:content-[''] zui:items-center zui:justify-center zui-radius-xs zui:border zui:border-[var(--zui-color-border)] zui:bg-[var(--zui-theme-control-bg)] zui:text-[var(--zui-color-surface)] zui:shadow-xs zui:cursor-pointer zui:outline-none zui:select-none zui:transition-all zui:duration-300 zui:ease-out zui:data-[state=checked]:border-[var(--zui-theme-action-primary)] zui:data-[state=checked]:bg-[var(--zui-theme-action-primary)] zui:hover:-translate-y-0.5 zui:hover:border-[var(--zui-theme-action-primary-hover)] zui:hover:bg-[var(--zui-theme-control-hover-bg)] zui:hover:shadow-[0_8px_20px_-12px_var(--zui-effect-shadow-ink-35)] zui:data-[state=checked]:hover:bg-[var(--zui-theme-action-primary-hover)] zui:active:translate-y-px zui:data-[state=checked]:active:bg-[var(--zui-theme-action-primary-active)] zui:focus-visible:border-[var(--zui-theme-action-secondary)] zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)] zui:aria-invalid:border-[var(--zui-theme-status-danger)] zui:aria-invalid:ring-[var(--zui-theme-status-danger)] zui:disabled:cursor-not-allowed zui:disabled:pointer-events-none zui:disabled:opacity-50`,{variants:{disabled:{true:`zui:pointer-events-none zui:opacity-50`,false:``}},defaultVariants:{disabled:!1}}),n=(0,e.cva)(`zui:flex zui:items-center zui:justify-center zui:text-[var(--zui-color-surface)] zui:data-[state=checked]:animate-in zui:data-[state=checked]:zoom-in-95 zui:data-[state=checked]:fade-in-0 zui:[&_svg]:size-[calc(var(--zui-scale,10px)*1.68)] zui:mobile:[&_svg]:size-[calc(var(--zui-scale,10px)*2.3)] zui:[&_svg]:transition-transform zui:[&_svg]:duration-200`),r=(0,e.cva)(`zui:inline-flex zui:w-full zui:items-start zui:justify-between zui:gap-2.5 zui:mobile:min-h-[calc(var(--zui-scale,10px)*5.184)] zui:mobile:items-center zui-radius-xs zui:mobile:border-solid zui:mobile:border-[max(1px,calc(var(--zui-scale,10px)*0.15))] zui:mobile:border-[var(--zui-color-border)] zui:mobile:bg-[var(--zui-color-surface)] zui:mobile:px-3 zui:mobile:py-2 zui:transition-colors zui:duration-200 zui:mobile:has-[[data-state=checked]]:border-[var(--zui-theme-action-primary)]`,{variants:{direction:{rtl:`zui:flex-row-reverse zui:text-right`,ltr:`zui:flex-row zui:text-left`},disabled:{true:`zui:cursor-not-allowed zui:opacity-60`,false:`zui:cursor-pointer`}},defaultVariants:{direction:`rtl`,disabled:!1}}),i=(0,e.cva)(`zui:block zui:text-sm zui:mobile:text-base zui:font-medium zui:leading-5 zui:mobile:leading-6 zui:text-[var(--zui-color-text)]`,{variants:{disabled:{true:`zui:text-[var(--zui-theme-text-muted)]`,false:``}},defaultVariants:{disabled:!1}}),a=(0,e.cva)(`zui:mt-0.5 zui:block zui:text-xs zui:mobile:text-sm zui:text-[var(--zui-color-text)]`);exports.checkboxDescriptionVariants=a,exports.checkboxIndicatorVariants=n,exports.checkboxLabelVariants=i,exports.checkboxOptionVariants=r,exports.checkboxVariants=t;
@@ -1,8 +1,13 @@
1
1
  declare const checkboxVariants: (props?: ({
2
- size?: "sm" | "default" | "lg" | null | undefined;
3
2
  disabled?: boolean | null | undefined;
4
3
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
- declare const checkboxIndicatorVariants: (props?: ({
6
- size?: "sm" | "default" | "lg" | null | undefined;
4
+ declare const checkboxIndicatorVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ declare const checkboxOptionVariants: (props?: ({
6
+ direction?: "rtl" | "ltr" | null | undefined;
7
+ disabled?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ declare const checkboxLabelVariants: (props?: ({
10
+ disabled?: boolean | null | undefined;
7
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
- export { checkboxVariants, checkboxIndicatorVariants };
12
+ declare const checkboxDescriptionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ export { checkboxVariants, checkboxIndicatorVariants, checkboxOptionVariants, checkboxLabelVariants, checkboxDescriptionVariants, };
@@ -1,8 +1,13 @@
1
1
  declare const checkboxVariants: (props?: ({
2
- size?: "sm" | "default" | "lg" | null | undefined;
3
2
  disabled?: boolean | null | undefined;
4
3
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
- declare const checkboxIndicatorVariants: (props?: ({
6
- size?: "sm" | "default" | "lg" | null | undefined;
4
+ declare const checkboxIndicatorVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ declare const checkboxOptionVariants: (props?: ({
6
+ direction?: "rtl" | "ltr" | null | undefined;
7
+ disabled?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ declare const checkboxLabelVariants: (props?: ({
10
+ disabled?: boolean | null | undefined;
7
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
- export { checkboxVariants, checkboxIndicatorVariants };
12
+ declare const checkboxDescriptionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ export { checkboxVariants, checkboxIndicatorVariants, checkboxOptionVariants, checkboxLabelVariants, checkboxDescriptionVariants, };