@giddaa-housing/ui 2.1.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/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.js +1 -1
- package/dist/cta.d.ts +1 -1
- package/dist/data-table.d.ts +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dropdown-menu.js +1 -1
- package/dist/file-upload.js +3 -3
- package/dist/infinite-scroll.js +1 -1
- 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/popover.js +1 -1
- 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 +1870 -162
- package/dist/switch.js +3 -3
- package/dist/tabs.js +2 -2
- package/dist/time-picker.js +85 -7
- 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 +13 -1
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/tabs.js
CHANGED
|
@@ -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.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
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;
|
|
@@ -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
|
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"
|
|
@@ -217,6 +225,10 @@
|
|
|
217
225
|
"types": "./dist/media-player.d.ts",
|
|
218
226
|
"import": "./dist/media-player.js"
|
|
219
227
|
},
|
|
228
|
+
"./message": {
|
|
229
|
+
"types": "./dist/message.d.ts",
|
|
230
|
+
"import": "./dist/message.js"
|
|
231
|
+
},
|
|
220
232
|
"./multi-step-form": {
|
|
221
233
|
"types": "./dist/multi-step-form.d.ts",
|
|
222
234
|
"import": "./dist/multi-step-form.js"
|