zaravand-ui 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion/Accordion.cjs +1 -1
- package/dist/components/Accordion/Accordion.interface.d.cts +8 -0
- package/dist/components/Accordion/Accordion.interface.d.ts +8 -0
- package/dist/components/Accordion/Accordion.js +226 -148
- package/dist/components/Accordion/Accordion.variant.cjs +1 -1
- package/dist/components/Accordion/Accordion.variant.js +2 -2
- package/dist/components/Avatar/Avatar.cjs +1 -1
- package/dist/components/Avatar/Avatar.js +32 -32
- package/dist/components/Button/Button.cjs +1 -1
- package/dist/components/Button/Button.interface.d.cts +0 -1
- package/dist/components/Button/Button.interface.d.ts +0 -1
- package/dist/components/Button/Button.js +41 -42
- package/dist/components/Button/Button.variant.cjs +1 -1
- package/dist/components/Button/Button.variant.d.cts +0 -1
- package/dist/components/Button/Button.variant.d.ts +0 -1
- package/dist/components/Button/Button.variant.js +2 -4
- package/dist/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.interface.d.cts +11 -0
- package/dist/components/Checkbox/Checkbox.interface.d.ts +11 -0
- package/dist/components/Checkbox/Checkbox.js +66 -43
- package/dist/components/Checkbox/Checkbox.variant.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.variant.d.cts +9 -4
- package/dist/components/Checkbox/Checkbox.variant.d.ts +9 -4
- package/dist/components/Checkbox/Checkbox.variant.js +20 -16
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.interface.d.cts +0 -1
- package/dist/components/DatePicker/DatePicker.interface.d.ts +0 -1
- package/dist/components/DatePicker/DatePicker.js +511 -407
- package/dist/components/DatePicker/DatePicker.utils.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.utils.js +101 -82
- package/dist/components/DatePicker/DatePicker.variant.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.variant.d.cts +1 -3
- package/dist/components/DatePicker/DatePicker.variant.d.ts +1 -3
- package/dist/components/DatePicker/DatePicker.variant.js +14 -16
- package/dist/components/DatePicker/DatePickerMonthSlider.cjs +1 -0
- package/dist/components/DatePicker/DatePickerMonthSlider.d.cts +25 -0
- package/dist/components/DatePicker/DatePickerMonthSlider.d.ts +25 -0
- package/dist/components/DatePicker/DatePickerMonthSlider.js +98 -0
- package/dist/components/DatePicker/DatePickerWheel.cjs +1 -0
- package/dist/components/DatePicker/DatePickerWheel.d.cts +30 -0
- package/dist/components/DatePicker/DatePickerWheel.d.ts +30 -0
- package/dist/components/DatePicker/DatePickerWheel.js +156 -0
- package/dist/components/Dialog/Dialog.cjs +1 -1
- package/dist/components/Dialog/Dialog.interface.d.cts +5 -0
- package/dist/components/Dialog/Dialog.interface.d.ts +5 -0
- package/dist/components/Dialog/Dialog.js +57 -49
- package/dist/components/Dialog/Dialog.variant.cjs +1 -1
- package/dist/components/Dialog/Dialog.variant.js +1 -1
- package/dist/components/Dialog/DialogDragHandle.cjs +1 -0
- package/dist/components/Dialog/DialogDragHandle.d.cts +11 -0
- package/dist/components/Dialog/DialogDragHandle.d.ts +11 -0
- package/dist/components/Dialog/DialogDragHandle.js +55 -0
- package/dist/components/Input/Input.cjs +1 -1
- package/dist/components/Input/Input.js +38 -37
- package/dist/components/Input/Input.variant.cjs +1 -1
- package/dist/components/Input/Input.variant.d.cts +1 -3
- package/dist/components/Input/Input.variant.d.ts +1 -3
- package/dist/components/Input/Input.variant.js +9 -8
- package/dist/components/Pagination/Pagination.cjs +1 -1
- package/dist/components/Pagination/Pagination.js +90 -73
- package/dist/components/Pagination/Pagination.variant.cjs +1 -1
- package/dist/components/Pagination/Pagination.variant.d.cts +3 -1
- package/dist/components/Pagination/Pagination.variant.d.ts +3 -1
- package/dist/components/Pagination/Pagination.variant.js +12 -6
- package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +44 -41
- package/dist/components/RadioGroup/RadioGroup.variant.cjs +1 -1
- package/dist/components/RadioGroup/RadioGroup.variant.d.cts +3 -2
- package/dist/components/RadioGroup/RadioGroup.variant.d.ts +3 -2
- package/dist/components/RadioGroup/RadioGroup.variant.js +11 -21
- package/dist/components/Select/Select.cjs +1 -1
- package/dist/components/Select/Select.d.cts +1 -3
- package/dist/components/Select/Select.d.ts +1 -3
- package/dist/components/Select/Select.interface.d.cts +0 -1
- package/dist/components/Select/Select.interface.d.ts +0 -1
- package/dist/components/Select/Select.js +620 -401
- package/dist/components/Select/Select.variant.cjs +1 -1
- package/dist/components/Select/Select.variant.d.cts +5 -5
- package/dist/components/Select/Select.variant.d.ts +5 -5
- package/dist/components/Select/Select.variant.js +10 -12
- package/dist/components/Sheet/Sheet.variant.cjs +1 -1
- package/dist/components/Sheet/Sheet.variant.js +6 -6
- package/dist/components/Switch/Switch.cjs +1 -1
- package/dist/components/Switch/Switch.interface.d.cts +12 -3
- package/dist/components/Switch/Switch.interface.d.ts +12 -3
- package/dist/components/Switch/Switch.js +57 -37
- package/dist/components/Switch/Switch.variant.cjs +1 -1
- package/dist/components/Switch/Switch.variant.d.cts +9 -5
- package/dist/components/Switch/Switch.variant.d.ts +9 -5
- package/dist/components/Switch/Switch.variant.js +22 -15
- package/dist/components/Table/Table.cjs +1 -1
- package/dist/components/Table/Table.interface.d.cts +9 -0
- package/dist/components/Table/Table.interface.d.ts +9 -0
- package/dist/components/Table/Table.js +462 -271
- package/dist/components/Table/TableSkeletonRows.cjs +1 -1
- package/dist/components/Table/TableSkeletonRows.js +26 -21
- package/dist/components/Table/TableSortToggle.cjs +1 -1
- package/dist/components/Table/TableSortToggle.d.cts +1 -1
- package/dist/components/Table/TableSortToggle.d.ts +1 -1
- package/dist/components/Table/TableSortToggle.js +23 -22
- package/dist/components/Table/hooks/useTableCardLabels.cjs +1 -0
- package/dist/components/Table/hooks/useTableCardLabels.d.cts +9 -0
- package/dist/components/Table/hooks/useTableCardLabels.d.ts +9 -0
- package/dist/components/Table/hooks/useTableCardLabels.js +34 -0
- package/dist/components/Table/hooks/useTableSort.cjs +1 -1
- package/dist/components/Table/hooks/useTableSort.d.cts +2 -0
- package/dist/components/Table/hooks/useTableSort.d.ts +2 -0
- package/dist/components/Table/hooks/useTableSort.js +8 -1
- package/dist/components/Tabs/Tabs.cjs +1 -1
- package/dist/components/Tabs/Tabs.js +90 -63
- package/dist/components/Tabs/Tabs.variant.cjs +1 -1
- package/dist/components/Tabs/Tabs.variant.d.cts +2 -2
- package/dist/components/Tabs/Tabs.variant.d.ts +2 -2
- package/dist/components/Tabs/Tabs.variant.js +52 -29
- package/dist/components/Textarea/Textarea.cjs +1 -1
- package/dist/components/Textarea/Textarea.js +19 -18
- package/dist/components/Textarea/Textarea.variant.cjs +1 -1
- package/dist/components/Textarea/Textarea.variant.js +5 -5
- package/dist/components/TimePicker/TimePicker.cjs +1 -1
- package/dist/components/TimePicker/TimePicker.interface.d.cts +0 -1
- package/dist/components/TimePicker/TimePicker.interface.d.ts +0 -1
- package/dist/components/TimePicker/TimePicker.js +121 -83
- package/dist/components/TimePicker/TimePicker.variant.cjs +1 -1
- package/dist/components/TimePicker/TimePicker.variant.d.cts +1 -3
- package/dist/components/TimePicker/TimePicker.variant.d.ts +1 -3
- package/dist/components/TimePicker/TimePicker.variant.js +9 -11
- package/dist/components/TimePicker/TimePickerPanel.cjs +1 -1
- package/dist/components/TimePicker/TimePickerPanel.js +3 -4
- package/dist/components/TimePicker/TimePickerWheel.cjs +1 -0
- package/dist/components/TimePicker/TimePickerWheel.d.cts +27 -0
- package/dist/components/TimePicker/TimePickerWheel.d.ts +27 -0
- package/dist/components/TimePicker/TimePickerWheel.js +205 -0
- package/dist/components/Toast/Toast.cjs +1 -1
- package/dist/components/Toast/Toast.d.cts +1 -1
- package/dist/components/Toast/Toast.d.ts +1 -1
- package/dist/components/Toast/Toast.js +56 -34
- package/dist/components/Toast/Toast.variant.cjs +1 -1
- package/dist/components/Toast/Toast.variant.d.cts +1 -1
- package/dist/components/Toast/Toast.variant.d.ts +1 -1
- package/dist/components/Toast/Toast.variant.js +1 -1
- package/dist/components/Toast/ToastHost.cjs +1 -1
- package/dist/components/Toast/ToastHost.js +42 -41
- package/dist/components/Toast/function/toastHaptics.cjs +1 -0
- package/dist/components/Toast/function/toastHaptics.d.cts +11 -0
- package/dist/components/Toast/function/toastHaptics.d.ts +11 -0
- package/dist/components/Toast/function/toastHaptics.js +6 -0
- package/dist/components/Uploader/Uploader.cjs +2 -2
- package/dist/components/Uploader/Uploader.js +328 -158
- package/dist/components/Uploader/Uploader.variant.cjs +1 -1
- package/dist/components/Uploader/Uploader.variant.d.cts +1 -3
- package/dist/components/Uploader/Uploader.variant.d.ts +1 -3
- package/dist/components/Uploader/Uploader.variant.js +2 -5
- package/dist/components/shared/ActionSheet.cjs +1 -0
- package/dist/components/shared/ActionSheet.d.cts +26 -0
- package/dist/components/shared/ActionSheet.d.ts +26 -0
- package/dist/components/shared/ActionSheet.js +51 -0
- package/dist/components/shared/FieldClearButton.cjs +1 -1
- package/dist/components/shared/FieldClearButton.d.cts +2 -1
- package/dist/components/shared/FieldClearButton.d.ts +2 -1
- package/dist/components/shared/FieldClearButton.js +11 -10
- package/dist/components/shared/FieldLabel.cjs +1 -1
- package/dist/components/shared/FieldLabel.js +6 -6
- package/dist/components/shared/IconActionButton.cjs +1 -1
- package/dist/components/shared/IconActionButton.d.cts +6 -1
- package/dist/components/shared/IconActionButton.d.ts +6 -1
- package/dist/components/shared/IconActionButton.js +9 -11
- package/dist/components/shared/WheelColumn.cjs +1 -0
- package/dist/components/shared/WheelColumn.d.cts +29 -0
- package/dist/components/shared/WheelColumn.d.ts +29 -0
- package/dist/components/shared/WheelColumn.js +116 -0
- package/dist/components/shared/haptics.cjs +1 -0
- package/dist/components/shared/haptics.d.cts +6 -0
- package/dist/components/shared/haptics.d.ts +6 -0
- package/dist/components/shared/haptics.js +8 -0
- package/dist/components/shared/responsiveScale.cjs +1 -1
- package/dist/components/shared/responsiveScale.d.cts +7 -1
- package/dist/components/shared/responsiveScale.d.ts +7 -1
- package/dist/components/shared/responsiveScale.js +2 -6
- package/dist/components/shared/useStickyToolbar.cjs +1 -0
- package/dist/components/shared/useStickyToolbar.d.cts +17 -0
- package/dist/components/shared/useStickyToolbar.d.ts +17 -0
- package/dist/components/shared/useStickyToolbar.js +39 -0
- package/dist/components/shared/useWheelSize.cjs +1 -0
- package/dist/components/shared/useWheelSize.d.cts +10 -0
- package/dist/components/shared/useWheelSize.d.ts +10 -0
- package/dist/components/shared/useWheelSize.js +14 -0
- package/dist/components/shared/viewport.cjs +1 -0
- package/dist/components/shared/viewport.d.cts +17 -0
- package/dist/components/shared/viewport.d.ts +17 -0
- package/dist/components/shared/viewport.js +32 -0
- package/dist/config/messages.cjs +1 -1
- package/dist/config/messages.d.cts +14 -0
- package/dist/config/messages.d.ts +14 -0
- package/dist/config/messages.js +26 -8
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +16 -16
- package/package.json +98 -97
|
@@ -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(
|
|
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 {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
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
|
|
13
|
-
let { messages:
|
|
14
|
-
return /* @__PURE__ */
|
|
15
|
-
open:
|
|
16
|
-
defaultOpen:
|
|
17
|
-
onOpenChange:
|
|
18
|
-
modal:
|
|
19
|
-
children: [/* @__PURE__ */
|
|
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:
|
|
22
|
-
label:
|
|
23
|
-
ariaLabel:
|
|
24
|
-
className:
|
|
25
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
28
|
+
children: /* @__PURE__ */ m(_.Overlay, {
|
|
28
29
|
"data-slot": "dialog-overlay",
|
|
29
|
-
className: t(
|
|
30
|
-
children: /* @__PURE__ */
|
|
31
|
-
ref:
|
|
30
|
+
className: t(d(), B),
|
|
31
|
+
children: /* @__PURE__ */ h(_.Content, {
|
|
32
|
+
ref: V,
|
|
32
33
|
"data-slot": "dialog-content",
|
|
33
|
-
dir:
|
|
34
|
-
|
|
34
|
+
dir: G,
|
|
35
|
+
onOpenAutoFocus: R,
|
|
36
|
+
className: t("zui:relative", s(), z),
|
|
35
37
|
children: [
|
|
36
|
-
|
|
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__ */
|
|
47
|
+
children: /* @__PURE__ */ m("button", {
|
|
40
48
|
type: "button",
|
|
41
|
-
"aria-label":
|
|
42
|
-
className:
|
|
43
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
57
|
+
/* @__PURE__ */ m(n, {
|
|
50
58
|
slotPrefix: "dialog",
|
|
51
|
-
title:
|
|
52
|
-
description:
|
|
53
|
-
fallbackTitle: typeof
|
|
54
|
-
className:
|
|
55
|
-
titleClassName:
|
|
56
|
-
descriptionClassName:
|
|
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
|
-
|
|
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:
|
|
69
|
+
children: J
|
|
62
70
|
}),
|
|
63
|
-
|
|
71
|
+
P ? /* @__PURE__ */ m("div", {
|
|
64
72
|
"data-slot": "dialog-footer",
|
|
65
|
-
className:
|
|
66
|
-
children: /* @__PURE__ */
|
|
73
|
+
className: l(),
|
|
74
|
+
children: /* @__PURE__ */ m(_.Close, {
|
|
67
75
|
"data-slot": "dialog-close",
|
|
68
76
|
asChild: !0,
|
|
69
|
-
children: /* @__PURE__ */
|
|
77
|
+
children: /* @__PURE__ */ m("button", {
|
|
70
78
|
type: "button",
|
|
71
|
-
"aria-label":
|
|
72
|
-
className:
|
|
73
|
-
children:
|
|
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 {
|
|
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-
|
|
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-
|
|
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(`../
|
|
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;
|