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
@@ -0,0 +1 @@
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`../Button/Button.cjs`),i=require(`../shared/WheelColumn.cjs`),a=require(`../shared/useWheelSize.cjs`),o=require(`./DatePicker.utils.cjs`);let s=require(`react`);s=e.__toESM(s,1);let c=require(`react/jsx-runtime`),l=require(`lucide-react`),u=require(`react-day-picker`);function d({mode:e,dateLib:d,calendarSystem:f,selection:p,minDate:m,maxDate:h,disabledMatchers:g,formatMonth:_,formatDate:v,onSwitchCalendar:y,onConfirm:b,dir:x}){let{messages:S}=t.useZuiConfig(),{itemHeight:C,visibleRows:w}=a.useWheelSize(),T=s.useMemo(()=>new Date,[]),E=s.useCallback(e=>m&&d.isBefore(e,d.startOfDay(m))?d.startOfDay(m):h&&d.isAfter(e,d.startOfDay(h))?d.startOfDay(h):e,[d,h,m]),[D,O]=s.useState(()=>{let e=E(d.startOfDay(p.from??T));return{from:e,to:p.to?E(d.startOfDay(p.to)):e}}),[k,A]=s.useState(`from`),j=D[k],M=o.resolveFormattedDateParts(j,f),N=s.useCallback(e=>g.length>0&&(0,u.dateMatchModifiers)(e,g,d),[d,g]),P=s.useCallback((e,t)=>o.resolveFormattedDateParts(d.endOfMonth(d.newDate(e,t-1,1)),f).day,[f,d]),F=s.useMemo(()=>{let e=o.resolveFormattedDateParts(T,f).year,t=m?o.resolveFormattedDateParts(m,f).year:Math.min(e-100,M.year),n=h?o.resolveFormattedDateParts(h,f).year:Math.max(e+10,M.year);return Array.from({length:Math.max(1,n-t+1)},(e,n)=>({value:t+n,label:d.formatNumber(t+n)}))},[f,d,h,m,M.year,T]),I=s.useMemo(()=>Array.from({length:12},(e,t)=>({value:t+1,label:_(d.newDate(M.year,t,1))})),[d,_,M.year]),L=s.useMemo(()=>Array.from({length:P(M.year,M.month)},(e,t)=>({value:t+1,label:d.formatNumber(t+1),disabled:N(d.newDate(M.year,M.month-1,t+1))})),[d,P,N,M.month,M.year]),R=e=>{let t=e.year??M.year,n=e.month??M.month,r=Math.min(e.day??M.day,P(t,n)),i=E(d.newDate(t,n-1,r));O(e=>k===`from`?{from:i,to:d.isAfter(i,e.to)?i:e.to}:{from:d.isBefore(i,e.from)?i:e.from,to:i})},z=N(D.from)||e===`range`&&N(D.to);return(0,c.jsxs)(`div`,{"data-slot":`date-picker-wheel-panel`,dir:x,className:`zui:flex zui:flex-col zui:gap-3`,children:[(0,c.jsxs)(`div`,{className:`zui:relative zui:flex zui:min-h-[max(calc(var(--zui-spacing)*9.9),44px)] zui:items-center zui:gap-2`,children:[e===`range`?(0,c.jsx)(`div`,{role:`tablist`,className:`zui:flex zui:min-w-0 zui:flex-1 zui:gap-2`,"data-slot":`date-picker-wheel-ends`,children:[`from`,`to`].map(e=>(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":k===e,onClick:()=>A(e),className:n.cn(`zui:flex zui:min-w-0 zui:flex-1 zui:flex-col zui:items-center zui:justify-center zui-radius-md zui:border zui:px-2 zui:text-[max(calc(var(--zui-scale,10px)*1.44),15px)] zui:transition-colors zui:duration-200 zui:h-[max(calc(var(--zui-spacing)*12.6),48px)]`,k===e?`zui:border-[var(--zui-theme-action-primary)] zui:bg-[var(--zui-theme-control-hover-bg)]`:`zui:border-[var(--zui-theme-border-default)] zui:opacity-70`),children:[(0,c.jsx)(`span`,{className:`zui:text-[max(calc(var(--zui-scale,10px)*1.26),13px)] zui:opacity-70`,children:e===`from`?S.datePicker.rangeFrom:S.datePicker.rangeTo}),(0,c.jsx)(`span`,{className:`zui:max-w-full zui:truncate zui:font-semibold`,children:v(D[e])})]},e))}):(0,c.jsx)(`p`,{"data-slot":`date-picker-wheel-preview`,className:`zui:min-w-0 zui:flex-1 zui:truncate zui:px-[max(calc(var(--zui-spacing)*11.7),48px)] zui:text-center zui:font-semibold zui:text-[max(calc(var(--zui-scale,10px)*1.62),16px)]`,children:v(D.from)}),(0,c.jsx)(`button`,{type:`button`,onClick:y,"aria-label":S.datePicker.switchCalendar,className:n.cn(`zui:inline-flex zui:size-[max(calc(var(--zui-spacing)*9.9),44px)] zui:shrink-0 zui:items-center zui:justify-center zui-radius-md zui:border zui:border-[var(--zui-theme-border-default)] zui:text-[var(--zui-color-text)] zui:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`,e===`single`&&`zui:absolute zui:end-0 zui:top-1/2 zui:-translate-y-1/2`),children:(0,c.jsx)(l.ArrowRightLeft,{className:`zui:size-6`,"aria-hidden":`true`})})]}),(0,c.jsxs)(`div`,{"data-slot":`date-picker-wheel-columns`,className:`zui:relative zui:flex`,children:[(0,c.jsx)(`div`,{"aria-hidden":`true`,"data-slot":`date-picker-wheel-band`,className:`zui:pointer-events-none zui:absolute zui:inset-x-0 zui:top-1/2 zui:-translate-y-1/2 zui:rounded-[calc(var(--zui-scale,10px)*1.2)] zui:bg-[var(--zui-color-muted-surface)]`,style:{height:C-2}}),(0,c.jsx)(i.default,{slot:`date-picker-wheel`,itemHeight:C,visibleRows:w,items:L,value:M.day,onValueChange:e=>e!==M.day&&R({day:e}),ariaLabel:S.datePicker.selectDay},`day-${k}-${f}`),(0,c.jsx)(i.default,{slot:`date-picker-wheel`,itemHeight:C,visibleRows:w,items:I,value:M.month,onValueChange:e=>e!==M.month&&R({month:e}),ariaLabel:S.datePicker.selectMonth},`month-${k}-${f}`),(0,c.jsx)(i.default,{slot:`date-picker-wheel`,itemHeight:C,visibleRows:w,items:F,value:M.year,onValueChange:e=>e!==M.year&&R({year:e}),ariaLabel:S.datePicker.selectYear},`year-${k}-${f}`)]}),(0,c.jsx)(r.default,{label:S.datePicker.confirm,fullWidth:!0,disabled:z,onClick:()=>b(e===`range`?{from:D.from,to:D.to}:{from:D.from})})]})}exports.default=d;
@@ -0,0 +1,30 @@
1
+ import { type DateLib, type Matcher } from "react-day-picker";
2
+ import type { DatePickerCalendarSystem } from "./DatePicker.interface.cjs";
3
+ type DatePickerWheelSelection = {
4
+ from: Date;
5
+ to?: Date;
6
+ };
7
+ type DatePickerWheelPanelProps = {
8
+ mode: "single" | "range";
9
+ dateLib: DateLib;
10
+ calendarSystem: DatePickerCalendarSystem;
11
+ selection: {
12
+ from?: Date;
13
+ to?: Date;
14
+ };
15
+ minDate?: Date;
16
+ maxDate?: Date;
17
+ disabledMatchers: Matcher[];
18
+ formatMonth: (date: Date) => string;
19
+ formatDate: (date: Date) => string;
20
+ onSwitchCalendar: () => void;
21
+ onConfirm: (selection: DatePickerWheelSelection) => void;
22
+ dir: "rtl" | "ltr";
23
+ };
24
+ /**
25
+ * The mobile replacement for typing a date: day, month and year drums, plus (in range mode) a
26
+ * "from" / "to" switch. Nothing is committed until the confirm button is pressed.
27
+ */
28
+ declare function DatePickerWheelPanel({ mode, dateLib, calendarSystem, selection, minDate, maxDate, disabledMatchers, formatMonth, formatDate, onSwitchCalendar, onConfirm, dir, }: DatePickerWheelPanelProps): import("react/jsx-runtime").JSX.Element;
29
+ export type { DatePickerWheelSelection };
30
+ export default DatePickerWheelPanel;
@@ -0,0 +1,30 @@
1
+ import { type DateLib, type Matcher } from "react-day-picker";
2
+ import type { DatePickerCalendarSystem } from "./DatePicker.interface.js";
3
+ type DatePickerWheelSelection = {
4
+ from: Date;
5
+ to?: Date;
6
+ };
7
+ type DatePickerWheelPanelProps = {
8
+ mode: "single" | "range";
9
+ dateLib: DateLib;
10
+ calendarSystem: DatePickerCalendarSystem;
11
+ selection: {
12
+ from?: Date;
13
+ to?: Date;
14
+ };
15
+ minDate?: Date;
16
+ maxDate?: Date;
17
+ disabledMatchers: Matcher[];
18
+ formatMonth: (date: Date) => string;
19
+ formatDate: (date: Date) => string;
20
+ onSwitchCalendar: () => void;
21
+ onConfirm: (selection: DatePickerWheelSelection) => void;
22
+ dir: "rtl" | "ltr";
23
+ };
24
+ /**
25
+ * The mobile replacement for typing a date: day, month and year drums, plus (in range mode) a
26
+ * "from" / "to" switch. Nothing is committed until the confirm button is pressed.
27
+ */
28
+ declare function DatePickerWheelPanel({ mode, dateLib, calendarSystem, selection, minDate, maxDate, disabledMatchers, formatMonth, formatDate, onSwitchCalendar, onConfirm, dir, }: DatePickerWheelPanelProps): import("react/jsx-runtime").JSX.Element;
29
+ export type { DatePickerWheelSelection };
30
+ export default DatePickerWheelPanel;
@@ -0,0 +1,156 @@
1
+ "use client";
2
+ import { useZuiConfig as e } from "../../config/useZuiConfig.js";
3
+ import { cn as t } from "../../lib/utils.js";
4
+ import n from "../Button/Button.js";
5
+ import r from "../shared/WheelColumn.js";
6
+ import { useWheelSize as i } from "../shared/useWheelSize.js";
7
+ import { resolveFormattedDateParts as a } from "./DatePicker.utils.js";
8
+ import * as o from "react";
9
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
10
+ import { ArrowRightLeft as l } from "lucide-react";
11
+ import { dateMatchModifiers as u } from "react-day-picker";
12
+ //#region src/components/DatePicker/DatePickerWheel.tsx
13
+ function d({ mode: d, dateLib: f, calendarSystem: p, selection: m, minDate: h, maxDate: g, disabledMatchers: _, formatMonth: v, formatDate: y, onSwitchCalendar: b, onConfirm: x, dir: S }) {
14
+ let { messages: C } = e(), { itemHeight: w, visibleRows: T } = i(), E = o.useMemo(() => /* @__PURE__ */ new Date(), []), D = o.useCallback((e) => h && f.isBefore(e, f.startOfDay(h)) ? f.startOfDay(h) : g && f.isAfter(e, f.startOfDay(g)) ? f.startOfDay(g) : e, [
15
+ f,
16
+ g,
17
+ h
18
+ ]), [O, k] = o.useState(() => {
19
+ let e = D(f.startOfDay(m.from ?? E));
20
+ return {
21
+ from: e,
22
+ to: m.to ? D(f.startOfDay(m.to)) : e
23
+ };
24
+ }), [A, j] = o.useState("from"), M = O[A], N = a(M, p), P = o.useCallback((e) => _.length > 0 && u(e, _, f), [f, _]), F = o.useCallback((e, t) => a(f.endOfMonth(f.newDate(e, t - 1, 1)), p).day, [p, f]), I = o.useMemo(() => {
25
+ let e = a(E, p).year, t = h ? a(h, p).year : Math.min(e - 100, N.year), n = g ? a(g, p).year : Math.max(e + 10, N.year);
26
+ return Array.from({ length: Math.max(1, n - t + 1) }, (e, n) => ({
27
+ value: t + n,
28
+ label: f.formatNumber(t + n)
29
+ }));
30
+ }, [
31
+ p,
32
+ f,
33
+ g,
34
+ h,
35
+ N.year,
36
+ E
37
+ ]), L = o.useMemo(() => Array.from({ length: 12 }, (e, t) => ({
38
+ value: t + 1,
39
+ label: v(f.newDate(N.year, t, 1))
40
+ })), [
41
+ f,
42
+ v,
43
+ N.year
44
+ ]), R = o.useMemo(() => Array.from({ length: F(N.year, N.month) }, (e, t) => ({
45
+ value: t + 1,
46
+ label: f.formatNumber(t + 1),
47
+ disabled: P(f.newDate(N.year, N.month - 1, t + 1))
48
+ })), [
49
+ f,
50
+ F,
51
+ P,
52
+ N.month,
53
+ N.year
54
+ ]), z = (e) => {
55
+ let t = e.year ?? N.year, n = e.month ?? N.month, r = Math.min(e.day ?? N.day, F(t, n)), i = D(f.newDate(t, n - 1, r));
56
+ k((e) => A === "from" ? {
57
+ from: i,
58
+ to: f.isAfter(i, e.to) ? i : e.to
59
+ } : {
60
+ from: f.isBefore(i, e.from) ? i : e.from,
61
+ to: i
62
+ });
63
+ }, B = P(O.from) || d === "range" && P(O.to);
64
+ return /* @__PURE__ */ c("div", {
65
+ "data-slot": "date-picker-wheel-panel",
66
+ dir: S,
67
+ className: "zui:flex zui:flex-col zui:gap-3",
68
+ children: [
69
+ /* @__PURE__ */ c("div", {
70
+ className: "zui:relative zui:flex zui:min-h-[max(calc(var(--zui-spacing)*9.9),44px)] zui:items-center zui:gap-2",
71
+ children: [d === "range" ? /* @__PURE__ */ s("div", {
72
+ role: "tablist",
73
+ className: "zui:flex zui:min-w-0 zui:flex-1 zui:gap-2",
74
+ "data-slot": "date-picker-wheel-ends",
75
+ children: ["from", "to"].map((e) => /* @__PURE__ */ c("button", {
76
+ type: "button",
77
+ role: "tab",
78
+ "aria-selected": A === e,
79
+ onClick: () => j(e),
80
+ className: t("zui:flex zui:min-w-0 zui:flex-1 zui:flex-col zui:items-center zui:justify-center zui-radius-md zui:border zui:px-2 zui:text-[max(calc(var(--zui-scale,10px)*1.44),15px)] zui:transition-colors zui:duration-200 zui:h-[max(calc(var(--zui-spacing)*12.6),48px)]", A === e ? "zui:border-[var(--zui-theme-action-primary)] zui:bg-[var(--zui-theme-control-hover-bg)]" : "zui:border-[var(--zui-theme-border-default)] zui:opacity-70"),
81
+ children: [/* @__PURE__ */ s("span", {
82
+ className: "zui:text-[max(calc(var(--zui-scale,10px)*1.26),13px)] zui:opacity-70",
83
+ children: e === "from" ? C.datePicker.rangeFrom : C.datePicker.rangeTo
84
+ }), /* @__PURE__ */ s("span", {
85
+ className: "zui:max-w-full zui:truncate zui:font-semibold",
86
+ children: y(O[e])
87
+ })]
88
+ }, e))
89
+ }) : /* @__PURE__ */ s("p", {
90
+ "data-slot": "date-picker-wheel-preview",
91
+ className: "zui:min-w-0 zui:flex-1 zui:truncate zui:px-[max(calc(var(--zui-spacing)*11.7),48px)] zui:text-center zui:font-semibold zui:text-[max(calc(var(--zui-scale,10px)*1.62),16px)]",
92
+ children: y(O.from)
93
+ }), /* @__PURE__ */ s("button", {
94
+ type: "button",
95
+ onClick: b,
96
+ "aria-label": C.datePicker.switchCalendar,
97
+ className: t("zui:inline-flex zui:size-[max(calc(var(--zui-spacing)*9.9),44px)] zui:shrink-0 zui:items-center zui:justify-center zui-radius-md zui:border zui:border-[var(--zui-theme-border-default)] zui:text-[var(--zui-color-text)] zui:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]", d === "single" && "zui:absolute zui:end-0 zui:top-1/2 zui:-translate-y-1/2"),
98
+ children: /* @__PURE__ */ s(l, {
99
+ className: "zui:size-6",
100
+ "aria-hidden": "true"
101
+ })
102
+ })]
103
+ }),
104
+ /* @__PURE__ */ c("div", {
105
+ "data-slot": "date-picker-wheel-columns",
106
+ className: "zui:relative zui:flex",
107
+ children: [
108
+ /* @__PURE__ */ s("div", {
109
+ "aria-hidden": "true",
110
+ "data-slot": "date-picker-wheel-band",
111
+ className: "zui:pointer-events-none zui:absolute zui:inset-x-0 zui:top-1/2 zui:-translate-y-1/2 zui:rounded-[calc(var(--zui-scale,10px)*1.2)] zui:bg-[var(--zui-color-muted-surface)]",
112
+ style: { height: w - 2 }
113
+ }),
114
+ /* @__PURE__ */ s(r, {
115
+ slot: "date-picker-wheel",
116
+ itemHeight: w,
117
+ visibleRows: T,
118
+ items: R,
119
+ value: N.day,
120
+ onValueChange: (e) => e !== N.day && z({ day: e }),
121
+ ariaLabel: C.datePicker.selectDay
122
+ }, `day-${A}-${p}`),
123
+ /* @__PURE__ */ s(r, {
124
+ slot: "date-picker-wheel",
125
+ itemHeight: w,
126
+ visibleRows: T,
127
+ items: L,
128
+ value: N.month,
129
+ onValueChange: (e) => e !== N.month && z({ month: e }),
130
+ ariaLabel: C.datePicker.selectMonth
131
+ }, `month-${A}-${p}`),
132
+ /* @__PURE__ */ s(r, {
133
+ slot: "date-picker-wheel",
134
+ itemHeight: w,
135
+ visibleRows: T,
136
+ items: I,
137
+ value: N.year,
138
+ onValueChange: (e) => e !== N.year && z({ year: e }),
139
+ ariaLabel: C.datePicker.selectYear
140
+ }, `year-${A}-${p}`)
141
+ ]
142
+ }),
143
+ /* @__PURE__ */ s(n, {
144
+ label: C.datePicker.confirm,
145
+ fullWidth: !0,
146
+ disabled: B,
147
+ onClick: () => x(d === "range" ? {
148
+ from: O.from,
149
+ to: O.to
150
+ } : { from: O.from })
151
+ })
152
+ ]
153
+ });
154
+ }
155
+ //#endregion
156
+ export { d as default };
@@ -1 +1 @@
1
- "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`./Dialog.variant.cjs`),i=require(`../shared/overlay.cjs`),a=require(`../shared/overlay.utils.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-dialog`);l=e.__toESM(l,1);var u=`zui:absolute zui:end-3 zui:top-3 zui:inline-flex zui:size-8 zui:items-center zui:justify-center zui:rounded-md zui:text-[var(--zui-theme-text-muted)] zui:transition zui:hover:bg-[var(--zui-theme-bg-surface)] zui:hover:text-[var(--zui-theme-text-primary)] zui:focus-visible:outline-none zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`,d=o.forwardRef(function({open:e,defaultOpen:o,onOpenChange:d,modal:f=!0,dir:p,title:m,description:h,content:g,child:_,children:v,trigger:y,triggerLabel:b,triggerAriaLabel:x,closeLabel:S,closeAriaLabel:C,showCloseButton:w=!0,showCloseIcon:T,closeIcon:E=!1,triggerClassName:D,className:O,overlayClassName:k},A){let{messages:j,dir:M}=t.useZuiConfig(),N=p??M,P=b??j.dialog.trigger,F=S??j.common.close,I=g??_??v,L=T??E,R=a.resolveAriaLabel(C,F,j.common.close);return(0,s.jsxs)(l.Root,{open:e,defaultOpen:o,onOpenChange:d,modal:f,children:[(0,s.jsx)(i.OverlayTrigger,{"data-slot":`dialog-trigger`,trigger:y,label:P,ariaLabel:a.resolveAriaLabel(x,P,j.dialog.trigger),className:D}),(0,s.jsx)(l.Portal,{"data-slot":`dialog-portal`,children:(0,s.jsx)(l.Overlay,{"data-slot":`dialog-overlay`,className:n.cn(r.dialogOverlayVariants(),k),children:(0,s.jsxs)(l.Content,{ref:A,"data-slot":`dialog-content`,dir:N,className:n.cn(`zui:relative`,r.dialogContentVariants(),O),children:[L?(0,s.jsx)(l.Close,{"data-slot":`dialog-close`,asChild:!0,children:(0,s.jsx)(`button`,{type:`button`,"aria-label":R,className:u,children:(0,s.jsx)(c.XIcon,{className:`zui:size-4`,"aria-hidden":`true`})})}):null,(0,s.jsx)(i.OverlayHeader,{slotPrefix:`dialog`,title:m,description:h,fallbackTitle:typeof P==`string`?P:j.dialog.fallbackTitle,className:r.dialogHeaderVariants(),titleClassName:r.dialogTitleVariants(),descriptionClassName:r.dialogDescriptionVariants()}),I==null?null:(0,s.jsx)(`div`,{"data-slot":`dialog-body`,className:`zui:text-sm zui:text-[var(--zui-theme-text-primary)]`,children:I}),w?(0,s.jsx)(`div`,{"data-slot":`dialog-footer`,className:r.dialogFooterVariants(),children:(0,s.jsx)(l.Close,{"data-slot":`dialog-close`,asChild:!0,children:(0,s.jsx)(`button`,{type:`button`,"aria-label":R,className:a.overlayFooterCloseButtonClassName,children:F})})}):null]})})})]})});exports.default=d;
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../lib/utils.cjs`),r=require(`../shared/overlay.cjs`),i=require(`../shared/overlay.utils.cjs`),a=require(`./DialogDragHandle.cjs`),o=require(`./Dialog.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-dialog`);u=e.__toESM(u,1);var d=`zui:absolute zui:mobile:start-3 zui:desktop:end-3 zui:mobile:top-1.5 zui:desktop:top-3 zui:inline-flex zui:mobile:size-10 zui:desktop:size-8 zui:items-center zui:justify-center zui:rounded-md zui:text-[var(--zui-theme-text-muted)] zui:transition zui:hover:bg-[var(--zui-theme-bg-surface)] zui:hover:text-[var(--zui-theme-text-primary)] zui:focus-visible:outline-none zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`,f=s.forwardRef(function({open:e,defaultOpen:f,onOpenChange:p,modal:m=!0,dir:h,title:g,description:_,content:v,child:y,children:b,trigger:x,triggerLabel:S,triggerAriaLabel:C,closeLabel:w,closeAriaLabel:T,showCloseButton:E=!0,showCloseIcon:D,closeIcon:O=!1,triggerClassName:k,onOpenAutoFocus:A,className:j,overlayClassName:M},N){let P=s.useRef(null),{messages:F,dir:I}=t.useZuiConfig(),L=h??I,R=S??F.dialog.trigger,z=w??F.common.close,B=v??y??b,V=D??O,H=i.resolveAriaLabel(T,z,F.common.close);return(0,c.jsxs)(u.Root,{open:e,defaultOpen:f,onOpenChange:p,modal:m,children:[(0,c.jsx)(r.OverlayTrigger,{"data-slot":`dialog-trigger`,trigger:x,label:R,ariaLabel:i.resolveAriaLabel(C,R,F.dialog.trigger),className:k}),(0,c.jsx)(u.Portal,{"data-slot":`dialog-portal`,children:(0,c.jsx)(u.Overlay,{"data-slot":`dialog-overlay`,className:n.cn(o.dialogOverlayVariants(),M),children:(0,c.jsxs)(u.Content,{ref:N,"data-slot":`dialog-content`,dir:L,onOpenAutoFocus:A,className:n.cn(`zui:relative`,o.dialogContentVariants(),j),children:[(0,c.jsx)(u.Close,{ref:P,hidden:!0,tabIndex:-1}),(0,c.jsx)(a.default,{onDismiss:()=>P.current?.click()}),V?(0,c.jsx)(u.Close,{"data-slot":`dialog-close`,asChild:!0,children:(0,c.jsx)(`button`,{type:`button`,"aria-label":H,className:d,children:(0,c.jsx)(l.XIcon,{className:`zui:mobile:size-5 zui:desktop:size-4`,"aria-hidden":`true`})})}):null,(0,c.jsx)(r.OverlayHeader,{slotPrefix:`dialog`,title:g,description:_,fallbackTitle:typeof R==`string`?R:F.dialog.fallbackTitle,className:o.dialogHeaderVariants(),titleClassName:o.dialogTitleVariants(),descriptionClassName:o.dialogDescriptionVariants()}),B==null?null:(0,c.jsx)(`div`,{"data-slot":`dialog-body`,className:`zui:text-sm zui:text-[var(--zui-theme-text-primary)]`,children:B}),E?(0,c.jsx)(`div`,{"data-slot":`dialog-footer`,className:o.dialogFooterVariants(),children:(0,c.jsx)(u.Close,{"data-slot":`dialog-close`,asChild:!0,children:(0,c.jsx)(`button`,{type:`button`,"aria-label":H,className:i.overlayFooterCloseButtonClassName,children:z})})}):null]})})})]})});exports.default=f;
@@ -27,6 +27,11 @@ export interface DialogProps {
27
27
  /** @deprecated Use `showCloseIcon`. */
28
28
  closeIcon?: boolean;
29
29
  triggerClassName?: string;
30
+ /**
31
+ * Called when focus moves into the dialog as it opens. Call `event.preventDefault()` to keep
32
+ * focus where it is (e.g. so a search field inside doesn't pop the keyboard on phones).
33
+ */
34
+ onOpenAutoFocus?: (event: Event) => void;
30
35
  className?: string;
31
36
  overlayClassName?: string;
32
37
  }
@@ -27,6 +27,11 @@ export interface DialogProps {
27
27
  /** @deprecated Use `showCloseIcon`. */
28
28
  closeIcon?: boolean;
29
29
  triggerClassName?: string;
30
+ /**
31
+ * Called when focus moves into the dialog as it opens. Call `event.preventDefault()` to keep
32
+ * focus where it is (e.g. so a search field inside doesn't pop the keyboard on phones).
33
+ */
34
+ onOpenAutoFocus?: (event: Event) => void;
30
35
  className?: string;
31
36
  overlayClassName?: string;
32
37
  }
@@ -1,76 +1,84 @@
1
1
  "use client";
2
2
  import { useZuiConfig as e } from "../../config/useZuiConfig.js";
3
3
  import { cn as t } from "../../lib/utils.js";
4
- import { dialogContentVariants as n, dialogDescriptionVariants as r, dialogFooterVariants as i, dialogHeaderVariants as a, dialogOverlayVariants as o, dialogTitleVariants as s } from "./Dialog.variant.js";
5
- import { OverlayHeader as c, OverlayTrigger as l } from "../shared/overlay.js";
6
- import { overlayFooterCloseButtonClassName as u, resolveAriaLabel as d } from "../shared/overlay.utils.js";
7
- import * as f from "react";
8
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
9
- import { XIcon as h } from "lucide-react";
10
- import * as g from "@radix-ui/react-dialog";
4
+ import { OverlayHeader as n, OverlayTrigger as r } from "../shared/overlay.js";
5
+ import { overlayFooterCloseButtonClassName as i, resolveAriaLabel as a } from "../shared/overlay.utils.js";
6
+ import o from "./DialogDragHandle.js";
7
+ import { dialogContentVariants as s, dialogDescriptionVariants as c, dialogFooterVariants as l, dialogHeaderVariants as u, dialogOverlayVariants as d, dialogTitleVariants as f } from "./Dialog.variant.js";
8
+ import * as p from "react";
9
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
10
+ import { XIcon as g } from "lucide-react";
11
+ import * as _ from "@radix-ui/react-dialog";
11
12
  //#region src/components/Dialog/Dialog.tsx
12
- var _ = "zui:absolute zui:end-3 zui:top-3 zui:inline-flex zui:size-8 zui:items-center zui:justify-center zui:rounded-md zui:text-[var(--zui-theme-text-muted)] zui:transition zui:hover:bg-[var(--zui-theme-bg-surface)] zui:hover:text-[var(--zui-theme-text-primary)] zui:focus-visible:outline-none zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)]", v = f.forwardRef(function({ open: f, defaultOpen: v, onOpenChange: y, modal: b = !0, dir: x, title: S, description: C, content: w, child: T, children: E, trigger: D, triggerLabel: O, triggerAriaLabel: k, closeLabel: A, closeAriaLabel: j, showCloseButton: M = !0, showCloseIcon: N, closeIcon: P = !1, triggerClassName: F, className: I, overlayClassName: L }, R) {
13
- let { messages: z, dir: B } = e(), V = x ?? B, H = O ?? z.dialog.trigger, U = A ?? z.common.close, W = w ?? T ?? E, G = N ?? P, K = d(j, U, z.common.close);
14
- return /* @__PURE__ */ m(g.Root, {
15
- open: f,
16
- defaultOpen: v,
17
- onOpenChange: y,
18
- modal: b,
19
- children: [/* @__PURE__ */ p(l, {
13
+ var v = "zui:absolute zui:mobile:start-3 zui:desktop:end-3 zui:mobile:top-1.5 zui:desktop:top-3 zui:inline-flex zui:mobile:size-10 zui:desktop:size-8 zui:items-center zui:justify-center zui:rounded-md zui:text-[var(--zui-theme-text-muted)] zui:transition zui:hover:bg-[var(--zui-theme-bg-surface)] zui:hover:text-[var(--zui-theme-text-primary)] zui:focus-visible:outline-none zui:focus-visible:ring-[3px] zui:focus-visible:ring-[var(--zui-theme-action-secondary)]", y = p.forwardRef(function({ open: y, defaultOpen: b, onOpenChange: x, modal: S = !0, dir: C, title: w, description: T, content: E, child: D, children: O, trigger: k, triggerLabel: A, triggerAriaLabel: j, closeLabel: M, closeAriaLabel: N, showCloseButton: P = !0, showCloseIcon: F, closeIcon: I = !1, triggerClassName: L, onOpenAutoFocus: R, className: z, overlayClassName: B }, V) {
14
+ let H = p.useRef(null), { messages: U, dir: W } = e(), G = C ?? W, K = A ?? U.dialog.trigger, q = M ?? U.common.close, J = E ?? D ?? O, Y = F ?? I, X = a(N, q, U.common.close);
15
+ return /* @__PURE__ */ h(_.Root, {
16
+ open: y,
17
+ defaultOpen: b,
18
+ onOpenChange: x,
19
+ modal: S,
20
+ children: [/* @__PURE__ */ m(r, {
20
21
  "data-slot": "dialog-trigger",
21
- trigger: D,
22
- label: H,
23
- ariaLabel: d(k, H, z.dialog.trigger),
24
- className: F
25
- }), /* @__PURE__ */ p(g.Portal, {
22
+ trigger: k,
23
+ label: K,
24
+ ariaLabel: a(j, K, U.dialog.trigger),
25
+ className: L
26
+ }), /* @__PURE__ */ m(_.Portal, {
26
27
  "data-slot": "dialog-portal",
27
- children: /* @__PURE__ */ p(g.Overlay, {
28
+ children: /* @__PURE__ */ m(_.Overlay, {
28
29
  "data-slot": "dialog-overlay",
29
- className: t(o(), L),
30
- children: /* @__PURE__ */ m(g.Content, {
31
- ref: R,
30
+ className: t(d(), B),
31
+ children: /* @__PURE__ */ h(_.Content, {
32
+ ref: V,
32
33
  "data-slot": "dialog-content",
33
- dir: V,
34
- className: t("zui:relative", n(), I),
34
+ dir: G,
35
+ onOpenAutoFocus: R,
36
+ className: t("zui:relative", s(), z),
35
37
  children: [
36
- G ? /* @__PURE__ */ p(g.Close, {
38
+ /* @__PURE__ */ m(_.Close, {
39
+ ref: H,
40
+ hidden: !0,
41
+ tabIndex: -1
42
+ }),
43
+ /* @__PURE__ */ m(o, { onDismiss: () => H.current?.click() }),
44
+ Y ? /* @__PURE__ */ m(_.Close, {
37
45
  "data-slot": "dialog-close",
38
46
  asChild: !0,
39
- children: /* @__PURE__ */ p("button", {
47
+ children: /* @__PURE__ */ m("button", {
40
48
  type: "button",
41
- "aria-label": K,
42
- className: _,
43
- children: /* @__PURE__ */ p(h, {
44
- className: "zui:size-4",
49
+ "aria-label": X,
50
+ className: v,
51
+ children: /* @__PURE__ */ m(g, {
52
+ className: "zui:mobile:size-5 zui:desktop:size-4",
45
53
  "aria-hidden": "true"
46
54
  })
47
55
  })
48
56
  }) : null,
49
- /* @__PURE__ */ p(c, {
57
+ /* @__PURE__ */ m(n, {
50
58
  slotPrefix: "dialog",
51
- title: S,
52
- description: C,
53
- fallbackTitle: typeof H == "string" ? H : z.dialog.fallbackTitle,
54
- className: a(),
55
- titleClassName: s(),
56
- descriptionClassName: r()
59
+ title: w,
60
+ description: T,
61
+ fallbackTitle: typeof K == "string" ? K : U.dialog.fallbackTitle,
62
+ className: u(),
63
+ titleClassName: f(),
64
+ descriptionClassName: c()
57
65
  }),
58
- W == null ? null : /* @__PURE__ */ p("div", {
66
+ J == null ? null : /* @__PURE__ */ m("div", {
59
67
  "data-slot": "dialog-body",
60
68
  className: "zui:text-sm zui:text-[var(--zui-theme-text-primary)]",
61
- children: W
69
+ children: J
62
70
  }),
63
- M ? /* @__PURE__ */ p("div", {
71
+ P ? /* @__PURE__ */ m("div", {
64
72
  "data-slot": "dialog-footer",
65
- className: i(),
66
- children: /* @__PURE__ */ p(g.Close, {
73
+ className: l(),
74
+ children: /* @__PURE__ */ m(_.Close, {
67
75
  "data-slot": "dialog-close",
68
76
  asChild: !0,
69
- children: /* @__PURE__ */ p("button", {
77
+ children: /* @__PURE__ */ m("button", {
70
78
  type: "button",
71
- "aria-label": K,
72
- className: u,
73
- children: U
79
+ "aria-label": X,
80
+ className: i,
81
+ children: q
74
82
  })
75
83
  })
76
84
  }) : null
@@ -81,4 +89,4 @@ var _ = "zui:absolute zui:end-3 zui:top-3 zui:inline-flex zui:size-8 zui:items-c
81
89
  });
82
90
  });
83
91
  //#endregion
84
- export { v as default };
92
+ export { y as default };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);let t=require(`class-variance-authority`);var n=(0,t.cva)(`zui:fixed zui:inset-0 zui:z-(--zui-z-dialog-overlay) zui:flex zui:items-center zui:justify-center zui:p-2 zui:bg-[var(--zui-theme-overlay-scrim)] zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0`),r=(0,t.cva)(`zui:z-(--zui-z-dialog) zui:flex zui:h-fit zui:w-full zui:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*1.6))] zui:max-w-[calc(100vw-calc(var(--zui-scale,10px)*1.6))] zui:flex-col zui:gap-4 zui:overflow-auto zui:border zui:border-[var(--zui-theme-border-default)] zui:bg-[var(--zui-color-surface)] ${e.OVERLAY_PANEL_PADDING} zui:text-[var(--zui-theme-text-primary)] zui:shadow-[0_24px_48px_-30px_var(--zui-effect-shadow-ink-55)] zui-radius-lg zui:duration-200 zui:outline-none zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=closed]:zoom-out-95 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0 zui:data-[state=open]:zoom-in-95 zui:sm:w-fit zui:sm:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*3.2))] zui:sm:max-w-[calc(100vw-calc(var(--zui-scale,10px)*3.2))]`),i=(0,t.cva)(`zui:flex zui:flex-col zui:gap-2 zui:text-center zui:sm:text-start`),a=(0,t.cva)(`zui:mt-auto zui:flex zui:flex-col-reverse zui:gap-2 zui:sm:flex-row zui:sm:justify-start`),o=(0,t.cva)(`zui:text-lg zui:font-semibold zui:tracking-tight zui:text-[var(--zui-theme-text-primary)]`),s=(0,t.cva)(`zui:text-sm zui:leading-6 zui:text-[var(--zui-theme-text-secondary)]`);exports.dialogContentVariants=r,exports.dialogDescriptionVariants=s,exports.dialogFooterVariants=a,exports.dialogHeaderVariants=i,exports.dialogOverlayVariants=n,exports.dialogTitleVariants=o;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);let t=require(`class-variance-authority`);var n=(0,t.cva)(`zui:fixed zui:inset-0 zui:z-(--zui-z-dialog-overlay) zui:flex zui:items-end zui:justify-center zui:p-0 zui:desktop:items-center zui:desktop:p-2 zui:bg-[var(--zui-theme-overlay-scrim)] zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0`),r=(0,t.cva)(`zui:z-(--zui-z-dialog) zui:flex zui:h-fit zui:w-full zui:max-h-[90dvh] zui:mobile:short:max-h-[calc(100dvh-var(--zui-spacing)*2)] zui:max-w-full zui:flex-col zui:gap-4 zui:overflow-auto zui:border zui:border-[var(--zui-theme-border-default)] zui:bg-[var(--zui-color-surface)] ${e.OVERLAY_PANEL_PADDING} zui:mobile:pt-0 zui:mobile:pb-[max(calc(var(--zui-spacing)*6),env(safe-area-inset-bottom))] zui:mobile:short:gap-2 zui:mobile:short:pb-[max(calc(var(--zui-spacing)*3),env(safe-area-inset-bottom))] zui:text-[var(--zui-theme-text-primary)] zui:shadow-[0_24px_48px_-30px_var(--zui-effect-shadow-ink-55)] zui:rounded-t-[calc(var(--zui-radius-xs)+calc(var(--zui-scale,10px)*0.4))] zui:mobile:border-b-0 zui:desktop:rounded-[calc(var(--zui-radius-xs)+calc(var(--zui-scale,10px)*0.8))] zui:duration-200 zui:outline-none zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=closed]:slide-out-to-bottom zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0 zui:data-[state=open]:slide-in-from-bottom zui:desktop:data-[state=closed]:slide-out-to-bottom-0 zui:desktop:data-[state=closed]:zoom-out-95 zui:desktop:data-[state=open]:slide-in-from-bottom-0 zui:desktop:data-[state=open]:zoom-in-95 zui:desktop:w-fit zui:desktop:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*3.2))] zui:desktop:max-w-[calc(100vw-calc(var(--zui-scale,10px)*3.2))]`),i=(0,t.cva)(`zui:flex zui:flex-col zui:gap-2 zui:text-center zui:desktop:text-start`),a=(0,t.cva)(`zui:mt-auto zui:flex zui:flex-col-reverse zui:gap-2 zui:desktop:flex-row zui:desktop:justify-start`),o=(0,t.cva)(`zui:text-lg zui:font-semibold zui:tracking-tight zui:text-[var(--zui-theme-text-primary)]`),s=(0,t.cva)(`zui:text-sm zui:leading-6 zui:text-[var(--zui-theme-text-secondary)]`);exports.dialogContentVariants=r,exports.dialogDescriptionVariants=s,exports.dialogFooterVariants=a,exports.dialogHeaderVariants=i,exports.dialogOverlayVariants=n,exports.dialogTitleVariants=o;
@@ -1,6 +1,6 @@
1
1
  import { OVERLAY_PANEL_PADDING as e } from "../shared/responsiveScale.js";
2
2
  import { cva as t } from "class-variance-authority";
3
3
  //#region src/components/Dialog/Dialog.variant.ts
4
- var n = t("zui:fixed zui:inset-0 zui:z-(--zui-z-dialog-overlay) zui:flex zui:items-center zui:justify-center zui:p-2 zui:bg-[var(--zui-theme-overlay-scrim)] zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0"), r = t(`zui:z-(--zui-z-dialog) zui:flex zui:h-fit zui:w-full zui:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*1.6))] zui:max-w-[calc(100vw-calc(var(--zui-scale,10px)*1.6))] zui:flex-col zui:gap-4 zui:overflow-auto zui:border zui:border-[var(--zui-theme-border-default)] zui:bg-[var(--zui-color-surface)] ${e} zui:text-[var(--zui-theme-text-primary)] zui:shadow-[0_24px_48px_-30px_var(--zui-effect-shadow-ink-55)] zui-radius-lg zui:duration-200 zui:outline-none zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=closed]:zoom-out-95 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0 zui:data-[state=open]:zoom-in-95 zui:sm:w-fit zui:sm:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*3.2))] zui:sm:max-w-[calc(100vw-calc(var(--zui-scale,10px)*3.2))]`), i = t("zui:flex zui:flex-col zui:gap-2 zui:text-center zui:sm:text-start"), a = t("zui:mt-auto zui:flex zui:flex-col-reverse zui:gap-2 zui:sm:flex-row zui:sm:justify-start"), o = t("zui:text-lg zui:font-semibold zui:tracking-tight zui:text-[var(--zui-theme-text-primary)]"), s = t("zui:text-sm zui:leading-6 zui:text-[var(--zui-theme-text-secondary)]");
4
+ var n = t("zui:fixed zui:inset-0 zui:z-(--zui-z-dialog-overlay) zui:flex zui:items-end zui:justify-center zui:p-0 zui:desktop:items-center zui:desktop:p-2 zui:bg-[var(--zui-theme-overlay-scrim)] zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0"), r = t(`zui:z-(--zui-z-dialog) zui:flex zui:h-fit zui:w-full zui:max-h-[90dvh] zui:mobile:short:max-h-[calc(100dvh-var(--zui-spacing)*2)] zui:max-w-full zui:flex-col zui:gap-4 zui:overflow-auto zui:border zui:border-[var(--zui-theme-border-default)] zui:bg-[var(--zui-color-surface)] ${e} zui:mobile:pt-0 zui:mobile:pb-[max(calc(var(--zui-spacing)*6),env(safe-area-inset-bottom))] zui:mobile:short:gap-2 zui:mobile:short:pb-[max(calc(var(--zui-spacing)*3),env(safe-area-inset-bottom))] zui:text-[var(--zui-theme-text-primary)] zui:shadow-[0_24px_48px_-30px_var(--zui-effect-shadow-ink-55)] zui:rounded-t-[calc(var(--zui-radius-xs)+calc(var(--zui-scale,10px)*0.4))] zui:mobile:border-b-0 zui:desktop:rounded-[calc(var(--zui-radius-xs)+calc(var(--zui-scale,10px)*0.8))] zui:duration-200 zui:outline-none zui:data-[state=closed]:animate-out zui:data-[state=closed]:fade-out-0 zui:data-[state=closed]:slide-out-to-bottom zui:data-[state=open]:animate-in zui:data-[state=open]:fade-in-0 zui:data-[state=open]:slide-in-from-bottom zui:desktop:data-[state=closed]:slide-out-to-bottom-0 zui:desktop:data-[state=closed]:zoom-out-95 zui:desktop:data-[state=open]:slide-in-from-bottom-0 zui:desktop:data-[state=open]:zoom-in-95 zui:desktop:w-fit zui:desktop:max-h-[calc(100dvh-calc(var(--zui-scale,10px)*3.2))] zui:desktop:max-w-[calc(100vw-calc(var(--zui-scale,10px)*3.2))]`), i = t("zui:flex zui:flex-col zui:gap-2 zui:text-center zui:desktop:text-start"), a = t("zui:mt-auto zui:flex zui:flex-col-reverse zui:gap-2 zui:desktop:flex-row zui:desktop:justify-start"), o = t("zui:text-lg zui:font-semibold zui:tracking-tight zui:text-[var(--zui-theme-text-primary)]"), s = t("zui:text-sm zui:leading-6 zui:text-[var(--zui-theme-text-secondary)]");
5
5
  //#endregion
6
6
  export { r as dialogContentVariants, s as dialogDescriptionVariants, a as dialogFooterVariants, i as dialogHeaderVariants, n as dialogOverlayVariants, o as dialogTitleVariants };
@@ -0,0 +1 @@
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`);let t=require(`react`);t=e.__toESM(t,1);let n=require(`react/jsx-runtime`);var r=.3,i=.5,a=40,o=180;function s({onDismiss:e}){let s=t.useRef(null),c=t.useRef(void 0);t.useEffect(()=>()=>window.clearTimeout(c.current),[]);let l=(e,t,n)=>{e.style.transition=`transform ${o}ms ease-out`,e.style.transform=t,window.clearTimeout(c.current),c.current=window.setTimeout(n,o)},u=e=>{if(s.current||e.pointerType===`mouse`&&e.button!==0)return;let t=e.currentTarget.closest(`[data-slot="dialog-content"]`);t&&(window.clearTimeout(c.current),e.currentTarget.setPointerCapture(e.pointerId),t.style.transition=`none`,s.current={pointerId:e.pointerId,startY:e.clientY,startTime:e.timeStamp,offset:0,panel:t})},d=e=>{let t=s.current;!t||t.pointerId!==e.pointerId||(t.offset=Math.max(0,e.clientY-t.startY),t.panel.style.transform=`translateY(${t.offset}px)`)},f=(t,n)=>{let o=s.current;if(!o||o.pointerId!==t.pointerId)return;s.current=null;let{panel:c,offset:u}=o,d=Math.max(1,t.timeStamp-o.startTime),f=u>a&&u/d>i;if(!n&&(u>c.offsetHeight*r||f)){l(c,`translateY(${c.offsetHeight}px)`,()=>{c.style.animation=`none`,e()});return}l(c,`translateY(0)`,()=>{c.style.transition=``,c.style.transform=``})};return(0,n.jsx)(`div`,{"data-slot":`dialog-drag-area`,"aria-hidden":`true`,className:`zui:pointer-events-none zui:sticky zui:top-0 zui:z-10 zui:mb-0.5 zui:flex zui:h-2.5 zui:shrink-0 zui:items-start zui:justify-center zui:desktop:hidden`,children:(0,n.jsx)(`div`,{"data-slot":`dialog-drag-handle`,onPointerDown:u,onPointerMove:d,onPointerUp:e=>f(e,!1),onPointerCancel:e=>f(e,!0),className:`zui:pointer-events-auto zui:flex zui:h-6 zui:w-40 zui:cursor-grab zui:touch-none zui:items-start zui:justify-center zui:pt-[calc(var(--zui-spacing)*0.75)]`,children:(0,n.jsx)(`span`,{className:`zui:h-1 zui:w-24 zui:rounded-full zui:bg-[color-mix(in_srgb,var(--zui-color-text)_35%,transparent)]`})})})}exports.default=s;
@@ -0,0 +1,11 @@
1
+ type DialogDragHandleProps = {
2
+ /** Dismisses the dialog; called once the panel has slid out of view. */
3
+ onDismiss: () => void;
4
+ };
5
+ /**
6
+ * The grabber bar at the top of the mobile (bottom-sheet) dialog. Dragging it down moves the
7
+ * whole panel with the finger; letting go past a threshold (or flicking) dismisses the dialog,
8
+ * otherwise the panel springs back. Hidden from the desktop layout by the caller's breakpoint.
9
+ */
10
+ declare function DialogDragHandle({ onDismiss }: DialogDragHandleProps): import("react/jsx-runtime").JSX.Element;
11
+ export default DialogDragHandle;
@@ -0,0 +1,11 @@
1
+ type DialogDragHandleProps = {
2
+ /** Dismisses the dialog; called once the panel has slid out of view. */
3
+ onDismiss: () => void;
4
+ };
5
+ /**
6
+ * The grabber bar at the top of the mobile (bottom-sheet) dialog. Dragging it down moves the
7
+ * whole panel with the finger; letting go past a threshold (or flicking) dismisses the dialog,
8
+ * otherwise the panel springs back. Hidden from the desktop layout by the caller's breakpoint.
9
+ */
10
+ declare function DialogDragHandle({ onDismiss }: DialogDragHandleProps): import("react/jsx-runtime").JSX.Element;
11
+ export default DialogDragHandle;
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import * as e from "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ //#region src/components/Dialog/DialogDragHandle.tsx
5
+ var n = .3, r = .5, i = 40, a = 180;
6
+ function o({ onDismiss: o }) {
7
+ let s = e.useRef(null), c = e.useRef(void 0);
8
+ e.useEffect(() => () => window.clearTimeout(c.current), []);
9
+ let l = (e, t, n) => {
10
+ e.style.transition = `transform ${a}ms ease-out`, e.style.transform = t, window.clearTimeout(c.current), c.current = window.setTimeout(n, a);
11
+ }, u = (e) => {
12
+ if (s.current || e.pointerType === "mouse" && e.button !== 0) return;
13
+ let t = e.currentTarget.closest("[data-slot=\"dialog-content\"]");
14
+ t && (window.clearTimeout(c.current), e.currentTarget.setPointerCapture(e.pointerId), t.style.transition = "none", s.current = {
15
+ pointerId: e.pointerId,
16
+ startY: e.clientY,
17
+ startTime: e.timeStamp,
18
+ offset: 0,
19
+ panel: t
20
+ });
21
+ }, d = (e) => {
22
+ let t = s.current;
23
+ !t || t.pointerId !== e.pointerId || (t.offset = Math.max(0, e.clientY - t.startY), t.panel.style.transform = `translateY(${t.offset}px)`);
24
+ }, f = (e, t) => {
25
+ let a = s.current;
26
+ if (!a || a.pointerId !== e.pointerId) return;
27
+ s.current = null;
28
+ let { panel: c, offset: u } = a, d = Math.max(1, e.timeStamp - a.startTime), f = u > i && u / d > r;
29
+ if (!t && (u > c.offsetHeight * n || f)) {
30
+ l(c, `translateY(${c.offsetHeight}px)`, () => {
31
+ c.style.animation = "none", o();
32
+ });
33
+ return;
34
+ }
35
+ l(c, "translateY(0)", () => {
36
+ c.style.transition = "", c.style.transform = "";
37
+ });
38
+ };
39
+ return /* @__PURE__ */ t("div", {
40
+ "data-slot": "dialog-drag-area",
41
+ "aria-hidden": "true",
42
+ className: "zui:pointer-events-none zui:sticky zui:top-0 zui:z-10 zui:mb-0.5 zui:flex zui:h-2.5 zui:shrink-0 zui:items-start zui:justify-center zui:desktop:hidden",
43
+ children: /* @__PURE__ */ t("div", {
44
+ "data-slot": "dialog-drag-handle",
45
+ onPointerDown: u,
46
+ onPointerMove: d,
47
+ onPointerUp: (e) => f(e, !1),
48
+ onPointerCancel: (e) => f(e, !0),
49
+ className: "zui:pointer-events-auto zui:flex zui:h-6 zui:w-40 zui:cursor-grab zui:touch-none zui:items-start zui:justify-center zui:pt-[calc(var(--zui-spacing)*0.75)]",
50
+ children: /* @__PURE__ */ t("span", { className: "zui:h-1 zui:w-24 zui:rounded-full zui:bg-[color-mix(in_srgb,var(--zui-color-text)_35%,transparent)]" })
51
+ })
52
+ });
53
+ }
54
+ //#endregion
55
+ export { o as default };
@@ -1 +1 @@
1
- "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../services/convertToEnglishDigits/convertToEnglishDigits.cjs`),r=require(`../../lib/utils.cjs`),i=require(`../shared/FieldLabel.cjs`),a=require(`../shared/useInvalidState.cjs`),o=require(`../Tooltip/Tooltip.cjs`),s=require(`./Input.formatting.cjs`),ee=require(`./Input.variant.cjs`);let c=require(`react`);c=e.__toESM(c,1);let l=require(`react/jsx-runtime`),u=require(`lucide-react`);function d(e){return e==null?!1:typeof e==`string`||Array.isArray(e)?e.length>0:typeof e==`number`}function f(){let e=new Intl.DateTimeFormat(`en-US-u-ca-persian`,{year:`numeric`}).format(new Date);return Number.parseInt(e,10)}var p=c.forwardRef(function({className:e,wrapperClassName:p,size:te=`default`,type:m=`text`,title:h,required:g=!1,showRequiredMessage:_=!1,characterLimit:ne,placeholder:v,onChange:y,onBlur:b,onFocus:re,onInvalid:x,id:S,name:ie,disabled:C=!1,readOnly:w=!1,autoComplete:T,"aria-label":E,value:D,defaultValue:O,maxLength:k,inputMode:ae,onMouseUp:A,...oe},j){let{messages:M,digits:N,dir:P}=t.useZuiConfig(),[F,I]=c.useState(!1),{isInvalid:L,setIsInvalid:R,handleInvalid:z}=a.useInvalidState(x),[B,V]=c.useState(()=>s.resolveAsciiValue(O,m)),H=c.useId(),U=S??H,W=c.useRef(null),G=c.useMemo(()=>r.mergeRefs(W,j),[j]),K=s.resolveInputTypeStrategy(m),q=m===`search`,J=m===`password`,Y=m===`year`,X=N===`persian`&&!(J&&!F),se=J?F?`text`:`password`:q?`search`:`text`,Z=D!==void 0,Q=Z?d(D):B.length>0,ce=Z?s.resolveDisplayValue(s.resolveAsciiValue(D,m),m,X):void 0,le=O===void 0?void 0:s.resolveDisplayValue(s.resolveAsciiValue(O,m),m,X),$=c.useMemo(()=>{if(!Y)return null;let e=f();return{min:e-100,max:e+50}},[Y]);c.useEffect(()=>{let e=W.current;if(Z||!e)return;let t=s.resolveDisplayValue(B,m,X);e.value!==t&&(e.value=t)},[Z,B,X,m]);let ue=c.useCallback(e=>{let t=e.target,n=s.applyInputChange(m,t.value,t.selectionStart,t.selectionEnd,X);t.value=n.asciiValue,n.asciiSelection&&t.setSelectionRange(...n.asciiSelection),Z||V(n.asciiValue),R(!1),y?.(e),n.displayValue!==null&&(t.value=n.displayValue,n.displaySelection&&t.setSelectionRange(...n.displaySelection))},[Z,y,R,X,m]),de=c.useCallback(e=>{A?.(e);let t=e.currentTarget;if(!K.isFormatted||e.defaultPrevented||e.detail>1||t.value.length===0||t.selectionStart!==t.selectionEnd)return;let n=t.value.length;t.setSelectionRange(n,n)},[A,K.isFormatted]),fe=c.useCallback(e=>{if(Z||V(s.resolveAsciiValue(e.target.value,m)),$){let t=n.convertToEnglishDigits({value:e.target.value});if(t.length===4){let e=Number.parseInt(t,10);(e<$.min||e>$.max)&&R(!0)}}b?.(e)},[Z,b,R,m,$]),pe=c.useCallback(()=>{let e=W.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.focus()},[]),me=r.cn(ee.inputVariants({size:te}),K.isCentered?`zui:text-center`:`zui:text-start`,q?`zui-input-search-cancel zui:ps-10 zui:pe-10`:J?`zui:pe-16`:`zui:pe-10`);return(0,l.jsxs)(`div`,{"data-slot":`input-field`,dir:P,className:r.cn(`zui:w-full zui:space-y-1.5 zui:text-start`,p),children:[(0,l.jsx)(i.FieldLabel,{title:h,htmlFor:U,required:g,showRequiredMessage:_}),(0,l.jsxs)(`div`,{className:`zui:relative`,children:[!h&&g&&!_?(0,l.jsx)(i.RequiredMark,{}):null,q?(0,l.jsx)(u.Search,{className:`zui:pointer-events-none zui:absolute zui:start-3 zui:top-1/2 zui:size-4 zui:-translate-y-1/2 zui:text-[var(--zui-color-text)]`,"aria-hidden":`true`}):null,(0,l.jsx)(`input`,{...oe,ref:G,id:U,"data-slot":`input`,type:se,inputMode:K.inputMode??ae,maxLength:K.maxLength??ne??k,required:g,"aria-invalid":L||void 0,"data-has-value":Q,placeholder:v,name:ie,disabled:C,readOnly:w,autoComplete:T,"aria-label":E,onChange:ue,onBlur:fe,onFocus:re,onMouseUp:de,onInvalid:z,value:ce,defaultValue:le,className:r.cn(me,e)}),Q&&!C?(0,l.jsx)(o.default,{text:M.common.clear,position:`top`,disabled:w,trigger:(0,l.jsx)(`button`,{type:`button`,onClick:pe,disabled:w,tabIndex:-1,className:r.cn(`zui:group/clear-input zui:absolute zui:top-1/2 zui:inline-flex zui:-translate-y-1/2 zui:items-center zui:justify-center zui:cursor-pointer zui:border-0 zui:bg-transparent zui:p-0 zui:leading-none zui:text-[var(--zui-color-text)] zui:outline-none zui:transition-opacity zui:duration-200 zui:ease-out zui:hover:opacity-80 zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-50`,J?`zui:end-9`:`zui:end-3`),"aria-label":M.common.clear,children:(0,l.jsx)(u.X,{className:`zui:size-4 zui:text-[var(--zui-color-text)] zui:transition-transform zui:duration-200 zui:ease-out zui:group-hover/clear-input:scale-110`,"aria-hidden":`true`})})}):null,J?(0,l.jsx)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`zui:absolute zui:end-3 zui:top-1/2 zui:-translate-y-1/2 zui:cursor-pointer zui:text-[var(--zui-color-text)] zui:transition-opacity zui:hover:opacity-80 zui:focus-visible:outline-none`,"aria-label":F?M.input.hidePassword:M.input.showPassword,children:F?(0,l.jsx)(u.EyeOff,{className:`zui:size-4`,"aria-hidden":`true`}):(0,l.jsx)(u.Eye,{className:`zui:size-4`,"aria-hidden":`true`})}):null]})]})});exports.default=p;
1
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/useZuiConfig.cjs`),n=require(`../../services/convertToEnglishDigits/convertToEnglishDigits.cjs`),r=require(`../../lib/utils.cjs`),i=require(`../Tooltip/Tooltip.cjs`),a=require(`../shared/FieldClearButton.cjs`),o=require(`../shared/FieldLabel.cjs`),s=require(`../shared/useInvalidState.cjs`),c=require(`./Input.formatting.cjs`),l=require(`./Input.variant.cjs`);let u=require(`react`);u=e.__toESM(u,1);let d=require(`react/jsx-runtime`),f=require(`lucide-react`);function p(e){return e==null?!1:typeof e==`string`||Array.isArray(e)?e.length>0:typeof e==`number`}function ee(){let e=new Intl.DateTimeFormat(`en-US-u-ca-persian`,{year:`numeric`}).format(new Date);return Number.parseInt(e,10)}var m=u.forwardRef(function({className:e,wrapperClassName:m,type:h=`text`,title:g,required:_=!1,showRequiredMessage:v=!1,characterLimit:te,placeholder:ne,onChange:y,onBlur:b,onFocus:re,onInvalid:ie,id:x,name:S,disabled:C=!1,readOnly:w=!1,autoComplete:ae,"aria-label":T,value:E,defaultValue:D,maxLength:O,inputMode:k,onMouseUp:A,...oe},j){let{messages:M,digits:N,dir:P}=t.useZuiConfig(),[F,I]=u.useState(!1),{isInvalid:L,setIsInvalid:R,handleInvalid:z}=s.useInvalidState(ie),[B,V]=u.useState(()=>c.resolveAsciiValue(D,h)),H=u.useId(),U=x??H,W=u.useRef(null),G=u.useMemo(()=>r.mergeRefs(W,j),[j]),K=c.resolveInputTypeStrategy(h),q=h===`search`,J=h===`password`,Y=h===`year`,X=N===`persian`&&!(J&&!F),se=J?F?`text`:`password`:q?`search`:`text`,Z=E!==void 0,Q=Z?p(E):B.length>0,ce=Z?c.resolveDisplayValue(c.resolveAsciiValue(E,h),h,X):void 0,le=D===void 0?void 0:c.resolveDisplayValue(c.resolveAsciiValue(D,h),h,X),$=u.useMemo(()=>{if(!Y)return null;let e=ee();return{min:e-100,max:e+50}},[Y]);u.useEffect(()=>{let e=W.current;if(Z||!e)return;let t=c.resolveDisplayValue(B,h,X);e.value!==t&&(e.value=t)},[Z,B,X,h]);let ue=u.useCallback(e=>{let t=e.target,n=c.applyInputChange(h,t.value,t.selectionStart,t.selectionEnd,X);t.value=n.asciiValue,n.asciiSelection&&t.setSelectionRange(...n.asciiSelection),Z||V(n.asciiValue),R(!1),y?.(e),n.displayValue!==null&&(t.value=n.displayValue,n.displaySelection&&t.setSelectionRange(...n.displaySelection))},[Z,y,R,X,h]),de=u.useCallback(e=>{A?.(e);let t=e.currentTarget;if(!K.isFormatted||e.defaultPrevented||e.detail>1||t.value.length===0||t.selectionStart!==t.selectionEnd)return;let n=t.value.length;t.setSelectionRange(n,n)},[A,K.isFormatted]),fe=u.useCallback(e=>{if(Z||V(c.resolveAsciiValue(e.target.value,h)),$){let t=n.convertToEnglishDigits({value:e.target.value});if(t.length===4){let e=Number.parseInt(t,10);(e<$.min||e>$.max)&&R(!0)}}b?.(e)},[Z,b,R,h,$]),pe=u.useCallback(()=>{let e=W.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.focus()},[]),me=r.cn(l.inputVariants(),K.isCentered?`zui:text-center`:`zui:text-start`,q?`zui-input-search-cancel zui:ps-10 zui:pe-10`:J?`zui:pe-16`:`zui:pe-10`);return(0,d.jsxs)(`div`,{"data-slot":`input-field`,dir:P,className:r.cn(`zui:w-full zui:space-y-1.5 zui:text-start`,m),children:[(0,d.jsx)(o.FieldLabel,{title:g,htmlFor:U,required:_,showRequiredMessage:v}),(0,d.jsxs)(`div`,{className:`zui:relative`,children:[!g&&_&&!v?(0,d.jsx)(o.RequiredMark,{}):null,q?(0,d.jsx)(f.Search,{className:`zui:pointer-events-none zui:absolute zui:start-3 zui:top-1/2 zui:size-4 zui:-translate-y-1/2 zui:text-[var(--zui-color-text)]`,"aria-hidden":`true`}):null,(0,d.jsx)(`input`,{...oe,ref:G,id:U,"data-slot":`input`,type:se,inputMode:K.inputMode??k,maxLength:K.maxLength??te??O,required:_,"aria-invalid":L||void 0,"data-has-value":Q,placeholder:ne,name:S,disabled:C,readOnly:w,autoComplete:ae,"aria-label":T,onChange:ue,onBlur:fe,onFocus:re,onMouseUp:de,onInvalid:z,value:ce,defaultValue:le,className:r.cn(me,e)}),Q&&!C?(0,d.jsx)(i.default,{text:M.common.clear,position:`top`,disabled:w,trigger:(0,d.jsx)(`button`,{type:`button`,onClick:pe,disabled:w,tabIndex:-1,className:r.cn(`zui:group/clear-input zui:absolute zui:top-1/2 zui:inline-flex zui:-translate-y-1/2 zui:items-center zui:justify-center zui:cursor-pointer zui:border-0 zui:bg-transparent zui:p-0 zui:leading-none zui:text-[var(--zui-color-text)] zui:outline-none zui:transition-opacity zui:duration-200 zui:ease-out zui:hover:opacity-80 zui:disabled:pointer-events-none zui:disabled:cursor-not-allowed zui:disabled:opacity-50`,J?`zui:end-9 zui:mobile:end-10`:`zui:end-3`),"aria-label":M.common.clear,children:(0,d.jsx)(f.X,{className:`${a.CLEAR_ICON_CLASS} zui:text-[var(--zui-color-text)] zui:transition-transform zui:duration-200 zui:ease-out zui:group-hover/clear-input:scale-110`,"aria-hidden":`true`})})}):null,J?(0,d.jsx)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`zui:absolute zui:end-3 zui:top-1/2 zui:-translate-y-1/2 zui:cursor-pointer zui:text-[var(--zui-color-text)] zui:transition-opacity zui:hover:opacity-80 zui:focus-visible:outline-none`,"aria-label":F?M.input.hidePassword:M.input.showPassword,children:F?(0,d.jsx)(f.EyeOff,{className:a.CLEAR_ICON_CLASS,"aria-hidden":`true`}):(0,d.jsx)(f.Eye,{className:a.CLEAR_ICON_CLASS,"aria-hidden":`true`})}):null]})]})});exports.default=m;