@timmbr/ui 1.11.0 → 1.13.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.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +23 -12
- package/dist/components/AuthModal/AuthModal.styles.js +1 -1
- package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts +1 -1
- package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts.map +1 -1
- package/dist/components/AuthModal/subcomponents/AuthModalParts.js +24 -42
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +10 -1
- package/dist/components/Checkbox/Checkbox.styles.js +1 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -1
- package/dist/components/Chip/Chip.js +1 -1
- package/dist/components/Dialog/Dialog.js +1 -1
- package/dist/components/Drawer/Drawer.js +1 -1
- package/dist/components/FilterChips/FilterChips.d.ts.map +1 -1
- package/dist/components/FilterChips/FilterChips.js +2 -9
- package/dist/components/FilterPanel/FilterPanel.d.ts.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.js +9 -7
- package/dist/components/ImageUpload/subcomponents/ImageUploadThumbnailCard.js +1 -1
- package/dist/components/Inline/Inline.d.ts.map +1 -1
- package/dist/components/Inline/Inline.js +2 -1
- package/dist/components/Inline/Inline.types.d.ts +5 -0
- package/dist/components/Inline/Inline.types.d.ts.map +1 -1
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.js +2 -1
- package/dist/components/NavFooter/NavFooter.styles.js +1 -1
- package/dist/components/NavFooter/subcomponents/FooterBrand.js +1 -1
- package/dist/components/NavHeader/NavHeader.js +1 -1
- package/dist/components/NavHeader/NavHeader.styles.js +4 -4
- package/dist/components/PageProgress/PageProgress.d.ts +12 -0
- package/dist/components/PageProgress/PageProgress.d.ts.map +1 -0
- package/dist/components/PageProgress/PageProgress.js +68 -0
- package/dist/components/PageProgress/PageProgress.styles.d.ts +8 -0
- package/dist/components/PageProgress/PageProgress.styles.d.ts.map +1 -0
- package/dist/components/PageProgress/PageProgress.styles.js +32 -0
- package/dist/components/PageProgress/PageProgress.types.d.ts +18 -0
- package/dist/components/PageProgress/PageProgress.types.d.ts.map +1 -0
- package/dist/components/PageProgress/index.d.ts +3 -0
- package/dist/components/PageProgress/index.d.ts.map +1 -0
- package/dist/components/ScrollRail/ScrollRail.d.ts +4 -0
- package/dist/components/ScrollRail/ScrollRail.d.ts.map +1 -0
- package/dist/components/ScrollRail/ScrollRail.js +103 -0
- package/dist/components/ScrollRail/ScrollRail.styles.d.ts +10 -0
- package/dist/components/ScrollRail/ScrollRail.styles.d.ts.map +1 -0
- package/dist/components/ScrollRail/ScrollRail.styles.js +31 -0
- package/dist/components/ScrollRail/ScrollRail.types.d.ts +16 -0
- package/dist/components/ScrollRail/ScrollRail.types.d.ts.map +1 -0
- package/dist/components/ScrollRail/index.d.ts +4 -0
- package/dist/components/ScrollRail/index.d.ts.map +1 -0
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.js +6 -2
- package/dist/components/Snackbar/Snackbar.styles.d.ts +1 -0
- package/dist/components/Snackbar/Snackbar.styles.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.styles.js +8 -4
- package/dist/components/Snackbar/Snackbar.types.d.ts +3 -0
- package/dist/components/Snackbar/Snackbar.types.d.ts.map +1 -1
- package/dist/components/Snackbar/snackbarStore.d.ts +3 -0
- package/dist/components/Snackbar/snackbarStore.d.ts.map +1 -1
- package/dist/components/Stack/Stack.d.ts.map +1 -1
- package/dist/components/Stack/Stack.js +2 -1
- package/dist/components/Stack/Stack.types.d.ts +5 -0
- package/dist/components/Stack/Stack.types.d.ts.map +1 -1
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +19 -2
- package/dist/components/Switch/Switch.styles.js +2 -2
- package/dist/components/Switch/Switch.types.d.ts +3 -0
- package/dist/components/Switch/Switch.types.d.ts.map +1 -1
- package/dist/components/Toast/Toast.js +2 -2
- package/dist/components/Toast/toastStore.d.ts +4 -0
- package/dist/components/Toast/toastStore.d.ts.map +1 -1
- package/dist/components/ZoneProgress/ZoneProgress.d.ts +6 -0
- package/dist/components/ZoneProgress/ZoneProgress.d.ts.map +1 -0
- package/dist/components/ZoneProgress/ZoneProgress.js +96 -0
- package/dist/components/ZoneProgress/index.d.ts +2 -0
- package/dist/components/ZoneProgress/index.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/providers/AnimationProvider.d.ts +5 -1
- package/dist/providers/AnimationProvider.d.ts.map +1 -1
- package/dist/providers/AnimationProvider.js +6 -3
- package/package.json +3 -3
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { usePathname } from 'next/navigation';
|
|
5
|
+
import { PageProgress } from '../PageProgress/PageProgress.js';
|
|
6
|
+
|
|
7
|
+
function trickle(p) {
|
|
8
|
+
if (p < 20) return p + 5;
|
|
9
|
+
if (p < 50) return p + 3;
|
|
10
|
+
if (p < 70) return p + 2;
|
|
11
|
+
if (p < 85) return p + 1;
|
|
12
|
+
return p;
|
|
13
|
+
}
|
|
14
|
+
function ZoneProgress() {
|
|
15
|
+
const pathname = usePathname();
|
|
16
|
+
const [loading, setLoading] = React.useState(false);
|
|
17
|
+
const [progress, setProgress] = React.useState(void 0);
|
|
18
|
+
const tickRef = React.useRef(null);
|
|
19
|
+
const committedPathnameRef = React.useRef(pathname);
|
|
20
|
+
React.useLayoutEffect(() => {
|
|
21
|
+
committedPathnameRef.current = pathname;
|
|
22
|
+
});
|
|
23
|
+
const startProgress = React.useCallback(() => {
|
|
24
|
+
if (tickRef.current) clearInterval(tickRef.current);
|
|
25
|
+
setLoading(true);
|
|
26
|
+
setProgress(5);
|
|
27
|
+
tickRef.current = setInterval(() => {
|
|
28
|
+
setProgress((p) => p !== void 0 ? trickle(p) : p);
|
|
29
|
+
}, 200);
|
|
30
|
+
}, []);
|
|
31
|
+
const finishProgress = React.useCallback(() => {
|
|
32
|
+
if (tickRef.current) {
|
|
33
|
+
clearInterval(tickRef.current);
|
|
34
|
+
tickRef.current = null;
|
|
35
|
+
}
|
|
36
|
+
setProgress(100);
|
|
37
|
+
setTimeout(() => {
|
|
38
|
+
setLoading(false);
|
|
39
|
+
setProgress(void 0);
|
|
40
|
+
}, 400);
|
|
41
|
+
}, []);
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
const handleClick = (e) => {
|
|
44
|
+
const anchor = e.target.closest("a");
|
|
45
|
+
if (!(anchor instanceof HTMLAnchorElement)) return;
|
|
46
|
+
if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
|
|
47
|
+
if (anchor.target === "_blank") return;
|
|
48
|
+
const href = anchor.getAttribute("href");
|
|
49
|
+
if (!href || href.startsWith("#") || href.startsWith("javascript:")) return;
|
|
50
|
+
try {
|
|
51
|
+
const url = new URL(href, location.origin);
|
|
52
|
+
if (url.origin !== location.origin) return;
|
|
53
|
+
if (url.pathname + url.search === location.pathname + location.search) return;
|
|
54
|
+
} catch {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
startProgress();
|
|
58
|
+
};
|
|
59
|
+
const handlePopState = () => {
|
|
60
|
+
if (location.pathname !== committedPathnameRef.current) {
|
|
61
|
+
startProgress();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
document.addEventListener("click", handleClick);
|
|
65
|
+
window.addEventListener("popstate", handlePopState);
|
|
66
|
+
return () => {
|
|
67
|
+
document.removeEventListener("click", handleClick);
|
|
68
|
+
window.removeEventListener("popstate", handlePopState);
|
|
69
|
+
if (tickRef.current) clearInterval(tickRef.current);
|
|
70
|
+
};
|
|
71
|
+
}, [startProgress]);
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
if (loading) finishProgress();
|
|
74
|
+
}, [pathname, finishProgress]);
|
|
75
|
+
React.useEffect(() => {
|
|
76
|
+
const onHover = (e) => {
|
|
77
|
+
const a = e.target.closest('a[data-cross-zone="true"]');
|
|
78
|
+
if (!(a instanceof HTMLAnchorElement)) return;
|
|
79
|
+
const { href } = a;
|
|
80
|
+
if (!href) return;
|
|
81
|
+
const escaped = href.replace(/"/g, '\\"');
|
|
82
|
+
if (!document.querySelector(`link[rel="prefetch"][href="${escaped}"]`)) {
|
|
83
|
+
const el = document.createElement("link");
|
|
84
|
+
el.rel = "prefetch";
|
|
85
|
+
el.href = href;
|
|
86
|
+
document.head.appendChild(el);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
document.addEventListener("mouseover", onHover);
|
|
90
|
+
return () => document.removeEventListener("mouseover", onHover);
|
|
91
|
+
}, []);
|
|
92
|
+
return /* @__PURE__ */ jsx(PageProgress, { loading, progress });
|
|
93
|
+
}
|
|
94
|
+
ZoneProgress.displayName = "ZoneProgress";
|
|
95
|
+
|
|
96
|
+
export { ZoneProgress };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ZoneProgress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './components/Grid';
|
|
|
6
6
|
export * from './components/Center';
|
|
7
7
|
export * from './components/Stack';
|
|
8
8
|
export * from './components/Inline';
|
|
9
|
+
export * from './components/ScrollRail';
|
|
9
10
|
export * from './components/Input';
|
|
10
11
|
export * from './components/Textarea';
|
|
11
12
|
export * from './components/Select';
|
|
@@ -48,6 +49,8 @@ export * from './components/Icon';
|
|
|
48
49
|
export * from './components/Text';
|
|
49
50
|
export * from './components/Alert';
|
|
50
51
|
export * from './components/Progress';
|
|
52
|
+
export * from './components/PageProgress';
|
|
53
|
+
export * from './components/ZoneProgress';
|
|
51
54
|
export * from './components/Spinner';
|
|
52
55
|
export * from './components/Skeleton';
|
|
53
56
|
export * from './components/EmptyState';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG3D,cAAc,aAAa,CAAC;AAG5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG3D,cAAc,aAAa,CAAC;AAG5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -68,6 +68,7 @@ export { OptionPicker } from './components/OptionPicker/OptionPicker.js';
|
|
|
68
68
|
export { OtpInput } from './components/OtpInput/OtpInput.js';
|
|
69
69
|
export { PRICE_GROUP_KEY } from './components/FilterPanel/FilterPanel.types.js';
|
|
70
70
|
export { PageHeader } from './components/PageHeader/PageHeader.js';
|
|
71
|
+
export { PageProgress } from './components/PageProgress/PageProgress.js';
|
|
71
72
|
export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaginationSummary } from './components/Pagination/Pagination.js';
|
|
72
73
|
export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './components/Popover/Popover.js';
|
|
73
74
|
export { Price, discountPercent } from './components/Price/Price.js';
|
|
@@ -80,6 +81,7 @@ export { RadioCard } from './components/RadioCard/RadioCard.js';
|
|
|
80
81
|
export { RangeSlider } from './components/RangeSlider/RangeSlider.js';
|
|
81
82
|
export { Rating } from './components/Rating/Rating.js';
|
|
82
83
|
export { SNACKBAR_EXIT_MS, snackbar, snackbarStore } from './components/Snackbar/snackbarStore.js';
|
|
84
|
+
export { ScrollRail } from './components/ScrollRail/ScrollRail.js';
|
|
83
85
|
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue } from './components/Select/Select.js';
|
|
84
86
|
export { SideBarNavigation } from './components/SideBarNavigation/SideBarNavigation.js';
|
|
85
87
|
export { SidebarBranding } from './components/SideBarNavigation/subcomponents/SidebarBranding.js';
|
|
@@ -112,6 +114,7 @@ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastT
|
|
|
112
114
|
export { ToastContainer } from './components/Toast/ToastContainer.js';
|
|
113
115
|
export { Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger } from './components/Tooltip/Tooltip.js';
|
|
114
116
|
export { VisuallyHidden } from './components/VisuallyHidden/VisuallyHidden.js';
|
|
117
|
+
export { ZoneProgress } from './components/ZoneProgress/ZoneProgress.js';
|
|
115
118
|
export { accordionContentVariants, accordionItemVariants, accordionTriggerVariants } from './components/Accordion/Accordion.styles.js';
|
|
116
119
|
export { alertDialogBodyVariants, alertDialogContentVariants, alertDialogDescriptionVariants, alertDialogFooterVariants, alertDialogHeaderVariants, alertDialogMediaVariants, alertDialogOverlayVariants, alertDialogTitleVariants } from './components/AlertDialog/AlertDialog.styles.js';
|
|
117
120
|
export { alertIconVariants, alertVariants } from './components/Alert/Alert.styles.js';
|
|
@@ -162,6 +165,7 @@ export { radioCardDotClass, radioCardMarkerClass, radioCardVariants } from './co
|
|
|
162
165
|
export { radioIndicatorVariants, radioItemVariants } from './components/Radio/Radio.styles.js';
|
|
163
166
|
export { rangeSliderRangeVariants, rangeSliderRootVariants, rangeSliderThumbVariants, rangeSliderTrackVariants } from './components/RangeSlider/RangeSlider.styles.js';
|
|
164
167
|
export { ratingVariants } from './components/Rating/Rating.styles.js';
|
|
168
|
+
export { scrollRailChevronVariants, scrollRailVariants, scrollRailWrapperVariants } from './components/ScrollRail/ScrollRail.styles.js';
|
|
165
169
|
export { selectContentVariants, selectItemVariants, selectTriggerVariants } from './components/Select/Select.styles.js';
|
|
166
170
|
export { skeletonVariants } from './components/Skeleton/Skeleton.styles.js';
|
|
167
171
|
export { snackbarActionVariants, snackbarCloseVariants, snackbarHostVariants, snackbarIconVariants, snackbarVariants } from './components/Snackbar/Snackbar.styles.js';
|
|
@@ -4,7 +4,11 @@ export interface AnimationProviderProps {
|
|
|
4
4
|
disableAnimations?: boolean;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
* Dual-layer animation provider
|
|
7
|
+
* Dual-layer animation provider.
|
|
8
|
+
* Animations are disabled when:
|
|
9
|
+
* - disableAnimations={true} is passed explicitly, OR
|
|
10
|
+
* - the OS/browser has prefers-reduced-motion: reduce set.
|
|
11
|
+
* This is the single place that translates both signals into the DS motion system.
|
|
8
12
|
*/
|
|
9
13
|
export declare const AnimationProvider: React.FC<AnimationProviderProps>;
|
|
10
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AnimationProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AnimationProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AnimationProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA0B9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,OASrC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { usePrefersReducedMotion } from '@timmbr/hooks';
|
|
4
5
|
import { useTimmbrConfig } from './TimmbrConfigProvider.js';
|
|
5
6
|
|
|
6
7
|
const AnimationContext = React.createContext(null);
|
|
@@ -8,11 +9,13 @@ const AnimationProvider = ({
|
|
|
8
9
|
children,
|
|
9
10
|
disableAnimations = false
|
|
10
11
|
}) => {
|
|
12
|
+
const prefersReduced = usePrefersReducedMotion();
|
|
13
|
+
const animationsDisabled = disableAnimations || prefersReduced;
|
|
11
14
|
React.useEffect(() => {
|
|
12
15
|
if (typeof document !== "undefined") {
|
|
13
16
|
document.documentElement.setAttribute(
|
|
14
17
|
"data-animations-disabled",
|
|
15
|
-
|
|
18
|
+
animationsDisabled ? "true" : "false"
|
|
16
19
|
);
|
|
17
20
|
}
|
|
18
21
|
return () => {
|
|
@@ -20,8 +23,8 @@ const AnimationProvider = ({
|
|
|
20
23
|
document.documentElement.removeAttribute("data-animations-disabled");
|
|
21
24
|
}
|
|
22
25
|
};
|
|
23
|
-
}, [
|
|
24
|
-
return /* @__PURE__ */ jsx(AnimationContext.Provider, { value: { globalMotion: !
|
|
26
|
+
}, [animationsDisabled]);
|
|
27
|
+
return /* @__PURE__ */ jsx(AnimationContext.Provider, { value: { globalMotion: !animationsDisabled }, children });
|
|
25
28
|
};
|
|
26
29
|
const useGlobalAnimation = () => {
|
|
27
30
|
const directContext = React.useContext(AnimationContext);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timmbr/ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "High-performance, Next.js App Router-compatible UI design system components for Timmbr",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
43
43
|
"class-variance-authority": "^0.7.1",
|
|
44
44
|
"input-otp": "^1.5.0",
|
|
45
|
-
"@timmbr/hooks": "1.1.0",
|
|
46
45
|
"@timmbr/icons": "1.6.0",
|
|
46
|
+
"@timmbr/hooks": "1.1.0",
|
|
47
47
|
"@timmbr/theme": "1.3.0",
|
|
48
48
|
"@timmbr/utils": "1.6.0",
|
|
49
|
-
"@timmbr/motion": "1.2.
|
|
49
|
+
"@timmbr/motion": "1.2.5"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"next": ">=13.0.0 || >=14.0.0 || >=15.0.0 || >=16.0.0",
|