@giddaa-housing/ui 2.0.0 → 3.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/css/generated/shared.css +1 -1
- package/css/theme.css +24 -0
- package/dist/accordion.js +1 -1
- package/dist/{button-BZIeyUw6.d.ts → button-DW5OijoR.d.ts} +1 -1
- package/dist/button-group.d.ts +1 -1
- package/dist/button-group.js +2 -2
- package/dist/button.d.ts +1 -1
- package/dist/button.js +4 -3
- package/dist/call-card.d.ts +131 -0
- package/dist/call-card.js +300 -0
- package/dist/card.d.ts +4 -2
- package/dist/card.js +7 -7
- package/dist/carousel.js +12 -9
- package/dist/chat.d.ts +208 -0
- package/dist/chat.js +528 -0
- package/dist/checkbox.js +1 -1
- package/dist/combobox.d.ts +48 -1
- package/dist/combobox.js +78 -5
- package/dist/cta.d.ts +1 -1
- package/dist/data-table.d.ts +1 -1
- package/dist/data-table.js +1 -1
- package/dist/date-picker.d.ts +5 -2
- package/dist/date-picker.js +11 -6
- package/dist/dialog.js +2 -2
- package/dist/dropdown-menu.js +1 -1
- package/dist/file-upload.js +3 -3
- package/dist/infinite-scroll.d.ts +40 -0
- package/dist/infinite-scroll.js +125 -0
- package/dist/infotip.js +1 -1
- package/dist/input-group.d.ts +1 -1
- package/dist/media-player.js +15 -8
- package/dist/message.d.ts +263 -0
- package/dist/message.js +524 -0
- package/dist/multi-step-form.js +10 -6
- package/dist/page-header.d.ts +6 -6
- package/dist/page-header.js +21 -7
- package/dist/pagination.d.ts +1 -1
- package/dist/picker-xSTzeYhc.js +50 -0
- package/dist/popover.d.ts +2 -2
- package/dist/popover.js +3 -2
- package/dist/price-tag.js +1 -1
- package/dist/property-listing-card.d.ts +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/rich-text-editor.js +3 -3
- package/dist/select.js +1 -1
- package/dist/sheet.js +1 -1
- package/dist/sidebar.d.ts +1 -1
- package/dist/sidebar.js +5 -5
- package/dist/skeleton.js +1 -1
- package/dist/slider.js +3 -2
- package/dist/styles.css +1893 -160
- package/dist/switch.js +3 -3
- package/dist/table.js +2 -2
- package/dist/tabs.js +4 -4
- package/dist/time-picker.d.ts +4 -1
- package/dist/time-picker.js +93 -12
- package/dist/toast.js +1 -1
- package/dist/tooltip.d.ts +2 -1
- package/dist/tooltip.js +9 -2
- package/dist/use-reduced-motion-BDvOK14x.js +17 -0
- package/package.json +18 -1
- package/dist/picker-lzgmsNfG.js +0 -32
package/dist/switch.js
CHANGED
|
@@ -5,7 +5,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
6
|
import { Switch as Switch$1 } from "@base-ui/react/switch";
|
|
7
7
|
//#region src/switch.tsx
|
|
8
|
-
const switchVariants = cva("peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity] outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-line-danger/20 aria-invalid:focus-visible:border-line-danger aria-invalid:focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-danger)] data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]", { variants: { size: {
|
|
8
|
+
const switchVariants = cva("peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity,scale] duration-[var(--duration-motion-press)] ease-gdt-out active:scale-[0.97] motion-reduce:active:scale-100 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-line-danger/20 aria-invalid:focus-visible:border-line-danger aria-invalid:focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-danger)] data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 data-disabled:active:scale-100 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]", { variants: { size: {
|
|
9
9
|
sm: "h-5 w-8 [--switch-spinner-size:0.625rem] [--switch-thumb-size:14px] [--switch-track-width:2rem]",
|
|
10
10
|
md: "h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem]",
|
|
11
11
|
lg: "h-7 w-12 [--switch-spinner-size:0.875rem] [--switch-thumb-size:22px] [--switch-track-width:3rem]"
|
|
@@ -38,11 +38,11 @@ function Switch({ className, disabled = false, loading = false, readOnly = false
|
|
|
38
38
|
...props,
|
|
39
39
|
children: /* @__PURE__ */ jsx(Switch$1.Thumb, {
|
|
40
40
|
"data-slot": "switch-thumb",
|
|
41
|
-
className: cn("pointer-events-none grid size-(--switch-thumb-size) translate-x-0 place-items-center rounded-full bg-fg-on-brand text-fg-brand ring-0 transition-
|
|
41
|
+
className: cn("pointer-events-none grid size-(--switch-thumb-size) translate-x-0 place-items-center rounded-full bg-fg-on-brand text-fg-brand ring-0 transition-[translate] duration-200 ease-out motion-reduce:transition-none data-checked:translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]", loading && "translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]", isDisabled && "translate-x-0! bg-line text-fg-caption-placeholder"),
|
|
42
42
|
children: loading && !isDisabled && /* @__PURE__ */ jsx("span", {
|
|
43
43
|
"aria-hidden": "true",
|
|
44
44
|
"data-slot": "switch-spinner",
|
|
45
|
-
className: "size-(--switch-spinner-size) animate-spin rounded-full border-2 border-current border-r-transparent"
|
|
45
|
+
className: "size-(--switch-spinner-size) animate-spin rounded-full border-2 border-current border-r-transparent motion-reduce:animate-none"
|
|
46
46
|
})
|
|
47
47
|
})
|
|
48
48
|
});
|
package/dist/table.js
CHANGED
|
@@ -79,7 +79,7 @@ function TableRow({ className, ...props }) {
|
|
|
79
79
|
function TableHead({ className, pinnedSide, ...props }) {
|
|
80
80
|
return /* @__PURE__ */ jsx("th", {
|
|
81
81
|
"data-slot": "table-head",
|
|
82
|
-
className: cn("relative h-14 px-6 py-4 text-left align-middle bg-surface-raised", "text-gdt-sm font-semibold text-fg-secondary", "
|
|
82
|
+
className: cn("relative h-14 px-6 py-4 text-left align-middle bg-surface-raised", "text-gdt-sm font-semibold text-fg-secondary", "break-words has-[[role=checkbox]]:pr-0", getPinnedDividerClassName(pinnedSide), className),
|
|
83
83
|
...props
|
|
84
84
|
});
|
|
85
85
|
}
|
|
@@ -95,7 +95,7 @@ function TableHead({ className, pinnedSide, ...props }) {
|
|
|
95
95
|
function TableCell({ className, pinned = false, pinnedSide, ...props }) {
|
|
96
96
|
return /* @__PURE__ */ jsx("td", {
|
|
97
97
|
"data-slot": "table-cell",
|
|
98
|
-
className: cn("relative h-14 px-6 py-4 align-middle text-gdt-sm text-fg-primary", "
|
|
98
|
+
className: cn("relative h-14 px-6 py-4 align-middle text-gdt-sm text-fg-primary", "break-words", pinned && "bg-canvas transition-[background-color,filter] group-hover:bg-surface group-active:bg-surface-raised group-data-[state=selected]:bg-surface-brand-subtle group-data-[state=selected]:group-hover:bg-surface-brand-subtle group-data-[state=selected]:group-hover:brightness-95 group-data-[state=selected]:group-active:brightness-90", getPinnedDividerClassName(pinnedSide), className),
|
|
99
99
|
...props
|
|
100
100
|
});
|
|
101
101
|
}
|
package/dist/tabs.js
CHANGED
|
@@ -24,9 +24,9 @@ function Tabs({ className, orientation = "horizontal", size, ...props }) {
|
|
|
24
24
|
children: root
|
|
25
25
|
}) : root;
|
|
26
26
|
}
|
|
27
|
-
const tabsListVariants = cva(cn("group/tabs-list relative inline-flex w-fit shrink-0 items-center gap-1 text-fg-secondary", "group-data-[orientation=
|
|
27
|
+
const tabsListVariants = cva(cn("group/tabs-list relative inline-flex w-fit shrink-0 items-center gap-1 text-fg-secondary", "group-data-[orientation=vertical]/tabs:flex-col"), {
|
|
28
28
|
variants: { variant: {
|
|
29
|
-
underline: "rounded-none bg-transparent p-0",
|
|
29
|
+
underline: cn("rounded-none bg-transparent p-0", "group-data-[orientation=horizontal]/tabs:border-b group-data-[orientation=horizontal]/tabs:border-line-subtle", "group-data-[orientation=vertical]/tabs:border-l group-data-[orientation=vertical]/tabs:border-line-subtle"),
|
|
30
30
|
secondary: "rounded-4xl bg-transparent p-0"
|
|
31
31
|
} },
|
|
32
32
|
defaultVariants: { variant: "underline" }
|
|
@@ -40,7 +40,7 @@ function TabsList({ className, variant = "underline", size, children, ...props }
|
|
|
40
40
|
"data-size": resolvedSize,
|
|
41
41
|
className: cn(tabsListVariants({ variant: resolvedVariant }), className),
|
|
42
42
|
...props,
|
|
43
|
-
children: [children, /* @__PURE__ */ jsx(Tabs$1.Indicator, { className: cn("pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[
|
|
43
|
+
children: [children, /* @__PURE__ */ jsx(Tabs$1.Indicator, { className: cn("pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[translate,width,height] duration-200 ease-in-out motion-reduce:transition-none", "group-data-[variant=secondary]/tabs-list:hidden", "group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none", "group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0", "group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0") })]
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
@@ -99,7 +99,7 @@ function TabsCount({ className, count, abbreviate, max, loading, children, ...pr
|
|
|
99
99
|
"data-slot": "tabs-count",
|
|
100
100
|
"data-loading": loading || void 0,
|
|
101
101
|
"aria-busy": loading || void 0,
|
|
102
|
-
className: cn("inline-flex items-center justify-center rounded-full font-semibold leading-none transition-[background-color,color]", "group-data-[size=sm]/tabs-list:h-4 group-data-[size=sm]/tabs-list:min-w-4 group-data-[size=sm]/tabs-list:px-1 group-data-[size=sm]/tabs-list:text-[10px]", "group-data-[size=md]/tabs-list:h-5 group-data-[size=md]/tabs-list:min-w-5 group-data-[size=md]/tabs-list:px-1 group-data-[size=md]/tabs-list:text-[11px]", "group-data-[size=lg]/tabs-list:h-5 group-data-[size=lg]/tabs-list:min-w-5 group-data-[size=lg]/tabs-list:px-1.5 group-data-[size=lg]/tabs-list:text-gdt-xs", "group-data-[variant=underline]/tabs-list:bg-surface-raised group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "group-data-[variant=secondary]/tabs-list:bg-surface-overlay group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "data-loading:animate-pulse", className),
|
|
102
|
+
className: cn("inline-flex items-center justify-center rounded-full font-semibold leading-none transition-[background-color,color]", "group-data-[size=sm]/tabs-list:h-4 group-data-[size=sm]/tabs-list:min-w-4 group-data-[size=sm]/tabs-list:px-1 group-data-[size=sm]/tabs-list:text-[10px]", "group-data-[size=md]/tabs-list:h-5 group-data-[size=md]/tabs-list:min-w-5 group-data-[size=md]/tabs-list:px-1 group-data-[size=md]/tabs-list:text-[11px]", "group-data-[size=lg]/tabs-list:h-5 group-data-[size=lg]/tabs-list:min-w-5 group-data-[size=lg]/tabs-list:px-1.5 group-data-[size=lg]/tabs-list:text-gdt-xs", "group-data-[variant=underline]/tabs-list:bg-surface-raised group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "group-data-[variant=secondary]/tabs-list:bg-surface-overlay group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "data-loading:animate-pulse motion-reduce:data-loading:animate-none", className),
|
|
103
103
|
...props,
|
|
104
104
|
children: content
|
|
105
105
|
});
|
package/dist/time-picker.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { n as InputSize } from "./input-CfoEJ8A6.js";
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
//#region src/time-picker.d.ts
|
|
3
4
|
interface TimePickerProps {
|
|
@@ -5,9 +6,11 @@ interface TimePickerProps {
|
|
|
5
6
|
onChange?: (time: string | undefined) => void;
|
|
6
7
|
format?: "12h" | "24h";
|
|
7
8
|
disabled?: boolean;
|
|
9
|
+
/** Controls the trigger size. The time selection panel is not resized. */
|
|
10
|
+
size?: InputSize;
|
|
8
11
|
placeholder?: string;
|
|
9
12
|
className?: string;
|
|
10
13
|
}
|
|
11
|
-
declare function TimePicker({ value, onChange, format, disabled, placeholder, className }: TimePickerProps): React.JSX.Element;
|
|
14
|
+
declare function TimePicker({ value, onChange, format, disabled, size, placeholder, className }: TimePickerProps): React.JSX.Element;
|
|
12
15
|
//#endregion
|
|
13
16
|
export { TimePicker, type TimePickerProps };
|
package/dist/time-picker.js
CHANGED
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
3
|
+
import { t as useReducedMotion } from "./use-reduced-motion-BDvOK14x.js";
|
|
3
4
|
import { Popover, PopoverContent } from "./popover.js";
|
|
4
|
-
import { n as PickerTrigger, t as
|
|
5
|
+
import { n as PickerFooter, r as PickerTrigger, t as PICKER_COLLISION_AVOIDANCE } from "./picker-xSTzeYhc.js";
|
|
5
6
|
import { ClockIcon } from "lucide-react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
8
|
import * as React from "react";
|
|
9
|
+
//#region src/lib/time-picker-paint.ts
|
|
10
|
+
function getPaintBounds(offset, itemCount, curveClamp) {
|
|
11
|
+
const bound = curveClamp + 1;
|
|
12
|
+
return {
|
|
13
|
+
low: Math.max(0, Math.floor(offset - bound)),
|
|
14
|
+
high: Math.min(itemCount - 1, Math.ceil(offset + bound))
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function createRafScheduler(callback) {
|
|
18
|
+
let frame = null;
|
|
19
|
+
return {
|
|
20
|
+
schedule() {
|
|
21
|
+
if (frame !== null) return;
|
|
22
|
+
frame = requestAnimationFrame(() => {
|
|
23
|
+
frame = null;
|
|
24
|
+
callback();
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
cancel() {
|
|
28
|
+
if (frame === null) return;
|
|
29
|
+
cancelAnimationFrame(frame);
|
|
30
|
+
frame = null;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
8
35
|
//#region src/time-picker.tsx
|
|
9
36
|
const ITEM_HEIGHT = 40;
|
|
10
37
|
const VISIBLE_COUNT = 5;
|
|
@@ -56,18 +83,69 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
56
83
|
const isProgrammatic = React.useRef(false);
|
|
57
84
|
const onChangeRef = React.useRef(onChange);
|
|
58
85
|
onChangeRef.current = onChange;
|
|
86
|
+
const reducedMotion = useReducedMotion();
|
|
87
|
+
const reducedMotionRef = React.useRef(reducedMotion);
|
|
88
|
+
reducedMotionRef.current = reducedMotion;
|
|
89
|
+
const paintedIndexesRef = React.useRef(/* @__PURE__ */ new Set());
|
|
59
90
|
const paintCurve = React.useCallback(() => {
|
|
60
91
|
const el = scrollRef.current;
|
|
61
92
|
if (!el) return;
|
|
62
93
|
const offset = el.scrollTop / ITEM_HEIGHT;
|
|
63
|
-
|
|
64
|
-
|
|
94
|
+
if (reducedMotionRef.current) {
|
|
95
|
+
const center = Math.round(offset);
|
|
96
|
+
const radius = Math.floor(VISIBLE_COUNT / 2);
|
|
97
|
+
const low = Math.max(0, center - radius);
|
|
98
|
+
const high = Math.min(itemRefs.current.length - 1, center + radius);
|
|
99
|
+
const nextPainted = /* @__PURE__ */ new Set();
|
|
100
|
+
for (let index = low; index <= high; index++) {
|
|
101
|
+
const node = itemRefs.current[index];
|
|
102
|
+
if (!node) continue;
|
|
103
|
+
node.style.opacity = index === center ? "1" : "0.55";
|
|
104
|
+
node.style.transform = "";
|
|
105
|
+
node.style.willChange = "";
|
|
106
|
+
nextPainted.add(index);
|
|
107
|
+
}
|
|
108
|
+
for (const index of paintedIndexesRef.current) {
|
|
109
|
+
if (nextPainted.has(index)) continue;
|
|
110
|
+
const node = itemRefs.current[index];
|
|
111
|
+
if (!node) continue;
|
|
112
|
+
node.style.opacity = "";
|
|
113
|
+
node.style.transform = "";
|
|
114
|
+
node.style.willChange = "";
|
|
115
|
+
}
|
|
116
|
+
paintedIndexesRef.current = nextPainted;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const { low, high } = getPaintBounds(offset, itemRefs.current.length, CURVE_CLAMP);
|
|
120
|
+
const nextPainted = /* @__PURE__ */ new Set();
|
|
121
|
+
for (let index = low; index <= high; index++) {
|
|
122
|
+
const node = itemRefs.current[index];
|
|
123
|
+
if (!node) continue;
|
|
65
124
|
const distance = index - offset;
|
|
66
125
|
const abs = Math.min(Math.abs(distance), CURVE_CLAMP);
|
|
67
126
|
const tilt = Math.max(Math.min(distance, CURVE_CLAMP), -3);
|
|
68
127
|
node.style.opacity = String(Math.max(1 - abs * .28, .2));
|
|
69
128
|
node.style.transform = `perspective(280px) rotateX(${tilt * -20}deg) scale(${1 - abs * .04})`;
|
|
70
|
-
|
|
129
|
+
node.style.willChange = "transform, opacity";
|
|
130
|
+
nextPainted.add(index);
|
|
131
|
+
}
|
|
132
|
+
for (const index of paintedIndexesRef.current) {
|
|
133
|
+
if (nextPainted.has(index)) continue;
|
|
134
|
+
const node = itemRefs.current[index];
|
|
135
|
+
if (!node) continue;
|
|
136
|
+
node.style.opacity = "";
|
|
137
|
+
node.style.transform = "";
|
|
138
|
+
node.style.willChange = "";
|
|
139
|
+
}
|
|
140
|
+
paintedIndexesRef.current = nextPainted;
|
|
141
|
+
}, []);
|
|
142
|
+
const paintSchedulerRef = React.useRef(null);
|
|
143
|
+
if (!paintSchedulerRef.current) paintSchedulerRef.current = createRafScheduler(paintCurve);
|
|
144
|
+
const schedulePaintCurve = React.useCallback(() => {
|
|
145
|
+
paintSchedulerRef.current?.schedule();
|
|
146
|
+
}, []);
|
|
147
|
+
React.useEffect(() => {
|
|
148
|
+
return () => paintSchedulerRef.current?.cancel();
|
|
71
149
|
}, []);
|
|
72
150
|
React.useEffect(() => {
|
|
73
151
|
const el = scrollRef.current;
|
|
@@ -88,7 +166,7 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
88
166
|
isProgrammatic.current = true;
|
|
89
167
|
el.scrollTo({
|
|
90
168
|
top: idx * ITEM_HEIGHT,
|
|
91
|
-
behavior: "smooth"
|
|
169
|
+
behavior: reducedMotionRef.current ? "auto" : "smooth"
|
|
92
170
|
});
|
|
93
171
|
setTimeout(() => {
|
|
94
172
|
isProgrammatic.current = false;
|
|
@@ -103,14 +181,14 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
103
181
|
onChangeRef.current(items[index]);
|
|
104
182
|
el.scrollTo({
|
|
105
183
|
top: index * ITEM_HEIGHT,
|
|
106
|
-
behavior: "smooth"
|
|
184
|
+
behavior: reducedMotionRef.current ? "auto" : "smooth"
|
|
107
185
|
});
|
|
108
186
|
setTimeout(() => {
|
|
109
187
|
isProgrammatic.current = false;
|
|
110
188
|
}, 350);
|
|
111
189
|
}
|
|
112
190
|
function handleScroll() {
|
|
113
|
-
|
|
191
|
+
schedulePaintCurve();
|
|
114
192
|
if (isProgrammatic.current) return;
|
|
115
193
|
const el = scrollRef.current;
|
|
116
194
|
if (!el) return;
|
|
@@ -132,7 +210,7 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
132
210
|
role: "listbox",
|
|
133
211
|
"aria-label": label,
|
|
134
212
|
style: { height: `${VISIBLE_COUNT * ITEM_HEIGHT}px` },
|
|
135
|
-
className: "relative snap-y snap-mandatory overflow-y-scroll overscroll-contain
|
|
213
|
+
className: "relative snap-y snap-mandatory overflow-y-scroll overscroll-contain scrollbar-none [&::-webkit-scrollbar]:hidden",
|
|
136
214
|
children: /* @__PURE__ */ jsx("div", {
|
|
137
215
|
style: {
|
|
138
216
|
paddingTop: `${SCROLL_PADDING}px`,
|
|
@@ -150,7 +228,7 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
150
228
|
},
|
|
151
229
|
onClick: () => selectIndex(index),
|
|
152
230
|
style: { height: `${ITEM_HEIGHT}px` },
|
|
153
|
-
className: "flex w-full cursor-pointer snap-center items-center justify-center select-none
|
|
231
|
+
className: "flex w-full cursor-pointer snap-center items-center justify-center select-none",
|
|
154
232
|
children: /* @__PURE__ */ jsx("span", {
|
|
155
233
|
className: cn("text-gdt-sm font-medium transition-colors", dist === 0 ? "text-fg-on-brand" : dist === 1 ? "text-fg-secondary" : "text-fg-caption-placeholder"),
|
|
156
234
|
children: item
|
|
@@ -161,7 +239,7 @@ function TimeColumn({ label, items, value, onChange }) {
|
|
|
161
239
|
})]
|
|
162
240
|
});
|
|
163
241
|
}
|
|
164
|
-
function TimePicker({ value, onChange, format = "12h", disabled = false, placeholder = "Select time", className }) {
|
|
242
|
+
function TimePicker({ value, onChange, format = "12h", disabled = false, size, placeholder = "Select time", className }) {
|
|
165
243
|
const [open, setOpen] = React.useState(false);
|
|
166
244
|
const [pending, setPending] = React.useState(() => parseTimeString(value, format));
|
|
167
245
|
function handleOpenChange(next) {
|
|
@@ -191,11 +269,14 @@ function TimePicker({ value, onChange, format = "12h", disabled = false, placeho
|
|
|
191
269
|
placeholder,
|
|
192
270
|
disabled,
|
|
193
271
|
open,
|
|
272
|
+
size,
|
|
194
273
|
className
|
|
195
274
|
}), /* @__PURE__ */ jsxs(PopoverContent, {
|
|
196
275
|
showArrow: false,
|
|
197
|
-
align: "
|
|
198
|
-
|
|
276
|
+
align: "center",
|
|
277
|
+
side: "bottom",
|
|
278
|
+
collisionAvoidance: PICKER_COLLISION_AVOIDANCE,
|
|
279
|
+
className: "min-w-(--anchor-width) gap-0 overflow-hidden rounded-2xl p-0 border border-line-subtle",
|
|
199
280
|
children: [
|
|
200
281
|
/* @__PURE__ */ jsx("div", {
|
|
201
282
|
className: "flex w-full items-center justify-center gap-2 border-b border-line-subtle",
|
package/dist/toast.js
CHANGED
|
@@ -133,7 +133,7 @@ function ToastIcon({ type }) {
|
|
|
133
133
|
]
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
-
const toastRootBaseClassName = "[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:
|
|
136
|
+
const toastRootBaseClassName = "[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:transform_var(--duration-motion-surface)_var(--ease-gdt-out),opacity_var(--duration-motion-surface)_var(--ease-gdt-out)] motion-reduce:[transition:opacity_var(--duration-motion-surface)_var(--ease-gdt-out)] data-swiping:transition-none after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:pointer-events-auto after:content-[''] data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--expanded-y))_scale(1)] data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:opacity-0 data-[limited]:opacity-0 [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(1)] data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(1)] data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(1)] data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(1)]";
|
|
137
137
|
function getToastPlacement(item, isRtl = false) {
|
|
138
138
|
const side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;
|
|
139
139
|
const align = item.positionerProps?.align ?? DEFAULT_TOAST_ALIGN;
|
package/dist/tooltip.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
|
|
2
2
|
//#region src/tooltip.d.ts
|
|
3
|
+
declare function TooltipProvider({ delay, timeout, ...props }: Tooltip$1.Provider.Props): import("react").JSX.Element;
|
|
3
4
|
declare function Tooltip({ ...props }: Tooltip$1.Root.Props): import("react").JSX.Element;
|
|
4
5
|
declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): import("react").JSX.Element;
|
|
5
6
|
type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Tooltip$1.Portal.Props, "container"> & {
|
|
@@ -7,4 +8,4 @@ type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Pro
|
|
|
7
8
|
};
|
|
8
9
|
declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): import("react").JSX.Element;
|
|
9
10
|
//#endregion
|
|
10
|
-
export { Tooltip, TooltipContent, TooltipTrigger };
|
|
11
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
package/dist/tooltip.js
CHANGED
|
@@ -3,6 +3,13 @@ import { t as cn } from "./cn-BI_4DMBf.js";
|
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
|
|
5
5
|
//#region src/tooltip.tsx
|
|
6
|
+
function TooltipProvider({ delay = 100, timeout = 400, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, {
|
|
8
|
+
delay,
|
|
9
|
+
timeout,
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
6
13
|
function Tooltip({ ...props }) {
|
|
7
14
|
return /* @__PURE__ */ jsx(Tooltip$1.Root, {
|
|
8
15
|
"data-slot": "tooltip",
|
|
@@ -27,7 +34,7 @@ function TooltipContent({ className, container, side = "top", sideOffset = 6, al
|
|
|
27
34
|
className: "pointer-events-none isolate z-50",
|
|
28
35
|
children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, {
|
|
29
36
|
"data-slot": "tooltip-content",
|
|
30
|
-
className: cn("z-50 relative inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-[6px] border border-line bg-surface-overlay px-3 py-2 text-gdt-sm font-medium text-fg-primary shadow-2 duration-
|
|
37
|
+
className: cn("z-50 relative inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-[6px] border border-line bg-surface-overlay px-3 py-2 text-gdt-sm font-medium text-fg-primary shadow-2 transition-[opacity,scale,translate] duration-[var(--duration-motion-tooltip)] ease-gdt-out has-data-[slot=kbd]:pr-1.5 data-instant:transition-none data-starting-style:opacity-0 data-starting-style:scale-95 data-ending-style:opacity-0 data-ending-style:scale-95 data-[side=bottom]:data-starting-style:translate-y-2 data-[side=bottom]:data-ending-style:translate-y-2 data-[side=top]:data-starting-style:-translate-y-2 data-[side=top]:data-ending-style:-translate-y-2 data-[side=left]:data-starting-style:translate-x-2 data-[side=left]:data-ending-style:translate-x-2 data-[side=right]:data-starting-style:-translate-x-2 data-[side=right]:data-ending-style:-translate-x-2 data-[side=inline-end]:data-starting-style:-translate-x-2 data-[side=inline-end]:data-ending-style:-translate-x-2 data-[side=inline-start]:data-starting-style:translate-x-2 data-[side=inline-start]:data-ending-style:translate-x-2 motion-reduce:data-starting-style:scale-100 motion-reduce:data-ending-style:scale-100 motion-reduce:data-[side=bottom]:data-starting-style:translate-y-0 motion-reduce:data-[side=bottom]:data-ending-style:translate-y-0 motion-reduce:data-[side=top]:data-starting-style:translate-y-0 motion-reduce:data-[side=top]:data-ending-style:translate-y-0 motion-reduce:data-[side=left]:data-starting-style:translate-x-0 motion-reduce:data-[side=left]:data-ending-style:translate-x-0 motion-reduce:data-[side=right]:data-starting-style:translate-x-0 motion-reduce:data-[side=right]:data-ending-style:translate-x-0 motion-reduce:data-[side=inline-end]:data-starting-style:translate-x-0 motion-reduce:data-[side=inline-end]:data-ending-style:translate-x-0 motion-reduce:data-[side=inline-start]:data-starting-style:translate-x-0 motion-reduce:data-[side=inline-start]:data-ending-style:translate-x-0 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm", className),
|
|
31
38
|
...props,
|
|
32
39
|
children: [children, showArrow ? /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "relative block w-3 h-1.5 overflow-clip data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 before:content-[''] before:absolute before:bottom-0 before:left-1/2 before:w-[calc(6px*sqrt(2))] before:h-[calc(6px*sqrt(2))] before:bg-surface-overlay before:border before:border-line before:[transform:translate(-50%,50%)_rotate(45deg)]" }) : null]
|
|
33
40
|
})
|
|
@@ -35,4 +42,4 @@ function TooltipContent({ className, container, side = "top", sideOffset = 6, al
|
|
|
35
42
|
});
|
|
36
43
|
}
|
|
37
44
|
//#endregion
|
|
38
|
-
export { Tooltip, TooltipContent, TooltipTrigger };
|
|
45
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/lib/use-reduced-motion.ts
|
|
3
|
+
const QUERY = "(prefers-reduced-motion: reduce)";
|
|
4
|
+
function subscribeToReducedMotion(onChange) {
|
|
5
|
+
const media = window.matchMedia(QUERY);
|
|
6
|
+
const update = () => onChange(media.matches);
|
|
7
|
+
update();
|
|
8
|
+
media.addEventListener("change", update);
|
|
9
|
+
return () => media.removeEventListener("change", update);
|
|
10
|
+
}
|
|
11
|
+
function useReducedMotion() {
|
|
12
|
+
const [reduced, setReduced] = React.useState(false);
|
|
13
|
+
React.useEffect(() => subscribeToReducedMotion(setReduced), []);
|
|
14
|
+
return reduced;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { useReducedMotion as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@giddaa-housing/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Giddaa reusable UI component library.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -65,6 +65,10 @@
|
|
|
65
65
|
"types": "./dist/calendar.d.ts",
|
|
66
66
|
"import": "./dist/calendar.js"
|
|
67
67
|
},
|
|
68
|
+
"./call-card": {
|
|
69
|
+
"types": "./dist/call-card.d.ts",
|
|
70
|
+
"import": "./dist/call-card.js"
|
|
71
|
+
},
|
|
68
72
|
"./card": {
|
|
69
73
|
"types": "./dist/card.d.ts",
|
|
70
74
|
"import": "./dist/card.js"
|
|
@@ -77,6 +81,10 @@
|
|
|
77
81
|
"types": "./dist/chart.d.ts",
|
|
78
82
|
"import": "./dist/chart.js"
|
|
79
83
|
},
|
|
84
|
+
"./chat": {
|
|
85
|
+
"types": "./dist/chat.d.ts",
|
|
86
|
+
"import": "./dist/chat.js"
|
|
87
|
+
},
|
|
80
88
|
"./checkbox": {
|
|
81
89
|
"types": "./dist/checkbox.d.ts",
|
|
82
90
|
"import": "./dist/checkbox.js"
|
|
@@ -161,6 +169,10 @@
|
|
|
161
169
|
"types": "./dist/infotip.d.ts",
|
|
162
170
|
"import": "./dist/infotip.js"
|
|
163
171
|
},
|
|
172
|
+
"./infinite-scroll": {
|
|
173
|
+
"types": "./dist/infinite-scroll.d.ts",
|
|
174
|
+
"import": "./dist/infinite-scroll.js"
|
|
175
|
+
},
|
|
164
176
|
"./input": {
|
|
165
177
|
"types": "./dist/input.d.ts",
|
|
166
178
|
"import": "./dist/input.js"
|
|
@@ -213,6 +225,10 @@
|
|
|
213
225
|
"types": "./dist/media-player.d.ts",
|
|
214
226
|
"import": "./dist/media-player.js"
|
|
215
227
|
},
|
|
228
|
+
"./message": {
|
|
229
|
+
"types": "./dist/message.d.ts",
|
|
230
|
+
"import": "./dist/message.js"
|
|
231
|
+
},
|
|
216
232
|
"./multi-step-form": {
|
|
217
233
|
"types": "./dist/multi-step-form.d.ts",
|
|
218
234
|
"import": "./dist/multi-step-form.js"
|
|
@@ -383,6 +399,7 @@
|
|
|
383
399
|
},
|
|
384
400
|
"dependencies": {
|
|
385
401
|
"@base-ui/react": "^1.5.0",
|
|
402
|
+
"@tanstack/react-virtual": "^3.14.7",
|
|
386
403
|
"@tiptap/extension-color": "^3.22.5",
|
|
387
404
|
"@tiptap/extension-image": "^3.22.5",
|
|
388
405
|
"@tiptap/extension-placeholder": "^3.22.5",
|
package/dist/picker-lzgmsNfG.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
2
|
-
import { Button } from "./button.js";
|
|
3
|
-
import { PopoverTrigger } from "./popover.js";
|
|
4
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
//#region src/lib/picker.tsx
|
|
6
|
-
function PickerTrigger({ icon: Icon, displayValue, placeholder, disabled, open, className }) {
|
|
7
|
-
return /* @__PURE__ */ jsxs(PopoverTrigger, {
|
|
8
|
-
disabled,
|
|
9
|
-
className: cn("flex h-10 w-full items-center justify-between rounded-full border px-3.5 text-gdt-sm transition-[border-color,box-shadow] outline-none", disabled ? "cursor-not-allowed border-line-subtle bg-surface text-fg-caption-placeholder" : open ? "border-line-focus bg-canvas text-fg-primary inset-ring-1 inset-ring-line-focus" : "border-line bg-canvas text-fg-primary hover:border-line-strong", className),
|
|
10
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
11
|
-
className: cn("min-w-0 truncate", !displayValue && "text-fg-caption-placeholder"),
|
|
12
|
-
children: displayValue || placeholder
|
|
13
|
-
}), /* @__PURE__ */ jsx(Icon, { className: cn("ml-2 size-4 shrink-0", disabled ? "text-fg-caption-placeholder" : "text-fg-secondary") })]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function PickerFooter({ secondaryLabel, onSecondary, onApply }) {
|
|
17
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
18
|
-
className: "flex w-full items-center justify-between border-t border-line-subtle px-4 py-3",
|
|
19
|
-
children: [/* @__PURE__ */ jsx(Button, {
|
|
20
|
-
variant: "tertiary-outline",
|
|
21
|
-
size: "sm",
|
|
22
|
-
onClick: onSecondary,
|
|
23
|
-
children: secondaryLabel
|
|
24
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
25
|
-
size: "sm",
|
|
26
|
-
onClick: onApply,
|
|
27
|
-
children: "Apply"
|
|
28
|
-
})]
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
//#endregion
|
|
32
|
-
export { PickerTrigger as n, PickerFooter as t };
|