@wow-two-beta/ui 0.0.3 → 0.0.5
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/actions/index.d.ts +240 -2
- package/dist/actions/index.js +5 -2
- package/dist/chunk-33IOXQYO.js +47 -0
- package/dist/chunk-33IOXQYO.js.map +1 -0
- package/dist/chunk-4CIRBYYP.js +120 -0
- package/dist/chunk-4CIRBYYP.js.map +1 -0
- package/dist/chunk-6NYTRHP7.js +168 -0
- package/dist/chunk-6NYTRHP7.js.map +1 -0
- package/dist/chunk-77WSI427.js +39 -0
- package/dist/chunk-77WSI427.js.map +1 -0
- package/dist/chunk-BMBIZLO4.js +34 -0
- package/dist/chunk-BMBIZLO4.js.map +1 -0
- package/dist/chunk-D67WGR7Y.js +212 -0
- package/dist/chunk-D67WGR7Y.js.map +1 -0
- package/dist/chunk-DN7WBRIV.js +17 -0
- package/dist/chunk-DN7WBRIV.js.map +1 -0
- package/dist/chunk-JCMV6IT4.js +268 -0
- package/dist/chunk-JCMV6IT4.js.map +1 -0
- package/dist/chunk-JTJEI6MF.js +11 -0
- package/dist/chunk-JTJEI6MF.js.map +1 -0
- package/dist/chunk-KSJE3JAI.js +604 -0
- package/dist/chunk-KSJE3JAI.js.map +1 -0
- package/dist/chunk-KZ4VFY2T.js +11 -0
- package/dist/chunk-KZ4VFY2T.js.map +1 -0
- package/dist/chunk-MP4OTUFA.js +318 -0
- package/dist/chunk-MP4OTUFA.js.map +1 -0
- package/dist/chunk-Q27NAHVB.js +34 -0
- package/dist/chunk-Q27NAHVB.js.map +1 -0
- package/dist/chunk-SYG6ZE42.js +218 -0
- package/dist/chunk-SYG6ZE42.js.map +1 -0
- package/dist/chunk-TDX22OWF.js +33 -0
- package/dist/chunk-TDX22OWF.js.map +1 -0
- package/dist/chunk-YLN7VMYU.js +275 -0
- package/dist/chunk-YLN7VMYU.js.map +1 -0
- package/dist/display/index.d.ts +805 -1
- package/dist/display/index.js +6 -1
- package/dist/feedback/index.d.ts +506 -1
- package/dist/feedback/index.js +5 -1
- package/dist/forms/index.d.ts +217 -1
- package/dist/forms/index.js +8 -1
- package/dist/hooks/index.d.ts +2 -5
- package/dist/hooks/index.js +4 -1
- package/dist/icons/index.d.ts +2 -5
- package/dist/icons/index.js +3 -1
- package/dist/index-Bk6CuDNT.d.ts +247 -0
- package/dist/index-C0IDphm_.d.ts +61 -0
- package/dist/index-CEAM9LLM.d.ts +37 -0
- package/dist/index-PAuwodyY.d.ts +103 -0
- package/dist/index-goThcZ1E.d.ts +416 -0
- package/dist/index.d.ts +13 -5
- package/dist/index.js +16 -9
- package/dist/layout/index.d.ts +605 -1
- package/dist/layout/index.js +5 -1
- package/dist/primitives/index.d.ts +5 -0
- package/dist/primitives/index.js +10 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/tailwind/index.js +8 -2
- package/dist/tailwind/index.js.map +1 -1
- package/dist/tokens/index.d.ts +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +3 -1
- package/package.json +8 -1
- package/dist/chunk-6YKPUEHU.js +0 -47
- package/dist/chunk-6YKPUEHU.js.map +0 -1
- package/dist/chunk-7CP7KR5F.js +0 -41
- package/dist/chunk-7CP7KR5F.js.map +0 -1
- package/dist/chunk-A2OBJDIK.js +0 -3
- package/dist/chunk-A2OBJDIK.js.map +0 -1
- package/dist/chunk-CTVGU35H.js +0 -6
- package/dist/chunk-CTVGU35H.js.map +0 -1
- package/dist/chunk-ECZ4YFAI.js +0 -16
- package/dist/chunk-ECZ4YFAI.js.map +0 -1
- package/dist/chunk-PSDQXPUE.js +0 -3
- package/dist/chunk-PSDQXPUE.js.map +0 -1
- package/dist/chunk-U4JXXIE2.js +0 -6
- package/dist/chunk-U4JXXIE2.js.map +0 -1
- package/dist/chunk-YP4MAZRQ.js +0 -3
- package/dist/chunk-YP4MAZRQ.js.map +0 -1
- package/dist/chunk-ZDU7SROW.js +0 -3
- package/dist/chunk-ZDU7SROW.js.map +0 -1
- package/dist/index-CdSRWb8y.d.ts +0 -78
- package/dist/index-D-adCzNR.d.ts +0 -14
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
// src/hooks/useScrollLock.ts
|
|
4
|
+
var lockCount = 0;
|
|
5
|
+
var originalOverflow = null;
|
|
6
|
+
var originalPaddingRight = null;
|
|
7
|
+
function getScrollbarWidth() {
|
|
8
|
+
return window.innerWidth - document.documentElement.clientWidth;
|
|
9
|
+
}
|
|
10
|
+
function useScrollLock(enabled = true) {
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!enabled) return;
|
|
13
|
+
if (lockCount === 0) {
|
|
14
|
+
const body = document.body;
|
|
15
|
+
const scrollbarWidth = getScrollbarWidth();
|
|
16
|
+
originalOverflow = body.style.overflow;
|
|
17
|
+
originalPaddingRight = body.style.paddingRight;
|
|
18
|
+
body.style.overflow = "hidden";
|
|
19
|
+
if (scrollbarWidth > 0) {
|
|
20
|
+
body.style.paddingRight = `${scrollbarWidth}px`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
lockCount += 1;
|
|
24
|
+
return () => {
|
|
25
|
+
lockCount -= 1;
|
|
26
|
+
if (lockCount === 0) {
|
|
27
|
+
const body = document.body;
|
|
28
|
+
body.style.overflow = originalOverflow ?? "";
|
|
29
|
+
body.style.paddingRight = originalPaddingRight ?? "";
|
|
30
|
+
originalOverflow = null;
|
|
31
|
+
originalPaddingRight = null;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}, [enabled]);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { useScrollLock };
|
|
38
|
+
//# sourceMappingURL=chunk-77WSI427.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-77WSI427.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useScrollLock.ts"],"names":[],"mappings":";;;AAEA,IAAI,SAAA,GAAY,CAAA;AAChB,IAAI,gBAAA,GAAkC,IAAA;AACtC,IAAI,oBAAA,GAAsC,IAAA;AAE1C,SAAS,iBAAA,GAA4B;AACnC,EAAA,OAAO,MAAA,CAAO,UAAA,GAAa,QAAA,CAAS,eAAA,CAAgB,WAAA;AACtD;AAOO,SAAS,aAAA,CAAc,UAAU,IAAA,EAAY;AAClD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,MAAA,MAAM,iBAAiB,iBAAA,EAAkB;AACzC,MAAA,gBAAA,GAAmB,KAAK,KAAA,CAAM,QAAA;AAC9B,MAAA,oBAAA,GAAuB,KAAK,KAAA,CAAM,YAAA;AAClC,MAAA,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AACtB,MAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,QAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,cAAc,CAAA,EAAA,CAAA;AAAA,MAC7C;AAAA,IACF;AACA,IAAA,SAAA,IAAa,CAAA;AAEb,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,IAAa,CAAA;AACb,MAAA,IAAI,cAAc,CAAA,EAAG;AACnB,QAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,QAAA,IAAA,CAAK,KAAA,CAAM,WAAW,gBAAA,IAAoB,EAAA;AAC1C,QAAA,IAAA,CAAK,KAAA,CAAM,eAAe,oBAAA,IAAwB,EAAA;AAClD,QAAA,gBAAA,GAAmB,IAAA;AACnB,QAAA,oBAAA,GAAuB,IAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd","file":"chunk-77WSI427.js","sourcesContent":["import { useEffect } from 'react';\n\nlet lockCount = 0;\nlet originalOverflow: string | null = null;\nlet originalPaddingRight: string | null = null;\n\nfunction getScrollbarWidth(): number {\n return window.innerWidth - document.documentElement.clientWidth;\n}\n\n/**\n * Prevent body scroll while at least one consumer has the lock active.\n * Internally counted — multiple overlays may lock; only the last unlock restores.\n * Compensates for scrollbar width to avoid layout shift.\n */\nexport function useScrollLock(enabled = true): void {\n useEffect(() => {\n if (!enabled) return;\n if (lockCount === 0) {\n const body = document.body;\n const scrollbarWidth = getScrollbarWidth();\n originalOverflow = body.style.overflow;\n originalPaddingRight = body.style.paddingRight;\n body.style.overflow = 'hidden';\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n lockCount += 1;\n\n return () => {\n lockCount -= 1;\n if (lockCount === 0) {\n const body = document.body;\n body.style.overflow = originalOverflow ?? '';\n body.style.paddingRight = originalPaddingRight ?? '';\n originalOverflow = null;\n originalPaddingRight = null;\n }\n };\n }, [enabled]);\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { composeRefs } from './chunk-DN7WBRIV.js';
|
|
2
|
+
import { cn } from './chunk-KZ4VFY2T.js';
|
|
3
|
+
import { __export } from './chunk-PZ5AY32C.js';
|
|
4
|
+
import { tv } from 'tailwind-variants';
|
|
5
|
+
export { tv } from 'tailwind-variants';
|
|
6
|
+
|
|
7
|
+
// src/utils/index.ts
|
|
8
|
+
var utils_exports = {};
|
|
9
|
+
__export(utils_exports, {
|
|
10
|
+
cn: () => cn,
|
|
11
|
+
composeEventHandlers: () => composeEventHandlers,
|
|
12
|
+
composeRefs: () => composeRefs,
|
|
13
|
+
dataAttr: () => dataAttr,
|
|
14
|
+
tv: () => tv
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// src/utils/composeEventHandlers.ts
|
|
18
|
+
function composeEventHandlers(theirHandler, ourHandler, { checkForDefaultPrevented = true } = {}) {
|
|
19
|
+
return (event) => {
|
|
20
|
+
theirHandler?.(event);
|
|
21
|
+
if (!checkForDefaultPrevented || !event.defaultPrevented) {
|
|
22
|
+
ourHandler(event);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// src/utils/dataAttr.ts
|
|
28
|
+
function dataAttr(condition) {
|
|
29
|
+
return condition ? "" : void 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { composeEventHandlers, dataAttr, utils_exports };
|
|
33
|
+
//# sourceMappingURL=chunk-BMBIZLO4.js.map
|
|
34
|
+
//# sourceMappingURL=chunk-BMBIZLO4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/index.ts","../src/utils/composeEventHandlers.ts","../src/utils/dataAttr.ts"],"names":[],"mappings":";;;;;;;AAAA,IAAA,aAAA,GAAA;AAAA,QAAA,CAAA,aAAA,EAAA;AAAA,EAAA,EAAA,EAAA,MAAA,EAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,EAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACQO,SAAS,oBAAA,CACd,cACA,UAAA,EACA,EAAE,2BAA2B,IAAA,EAAK,GAA4C,EAAC,EAC3D;AACpB,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,YAAA,GAAe,KAAK,CAAA;AACpB,IAAA,IAAI,CAAC,wBAAA,IAA4B,CAAC,KAAA,CAAM,gBAAA,EAAkB;AACxD,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AACF;;;ACdO,SAAS,SAAS,SAAA,EAAgD;AACvE,EAAA,OAAO,YAAY,EAAA,GAAK,MAAA;AAC1B","file":"chunk-BMBIZLO4.js","sourcesContent":["export { cn } from './cn';\nexport { composeRefs } from './composeRefs';\nexport { composeEventHandlers } from './composeEventHandlers';\nexport { dataAttr } from './dataAttr';\nexport { tv, type VariantProps } from './tv';\nexport type {\n PolymorphicProps,\n PolymorphicPropsWithoutRef,\n PolymorphicRef,\n} from './polymorphic';\n","import type { SyntheticEvent } from 'react';\n\n/**\n * Chain two event handlers. The first handler runs, then the second — unless\n * the first called `event.preventDefault()`, in which case the second is skipped.\n * Use when overriding a default handler from a parent while still allowing\n * the consumer to provide their own.\n */\nexport function composeEventHandlers<E extends SyntheticEvent>(\n theirHandler: ((event: E) => void) | undefined,\n ourHandler: (event: E) => void,\n { checkForDefaultPrevented = true }: { checkForDefaultPrevented?: boolean } = {},\n): (event: E) => void {\n return (event) => {\n theirHandler?.(event);\n if (!checkForDefaultPrevented || !event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\n","/**\n * Returns `\"\"` when the condition is true, `undefined` otherwise.\n * Use for boolean `data-*` attributes — React strips the attr when value is undefined,\n * so the DOM cleanly toggles `data-state` rather than `data-state=\"false\"`.\n */\nexport function dataAttr(condition: boolean | undefined): '' | undefined {\n return condition ? '' : undefined;\n}\n"]}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { __export } from './chunk-PZ5AY32C.js';
|
|
2
|
+
|
|
3
|
+
// src/tokens/index.ts
|
|
4
|
+
var tokens_exports = {};
|
|
5
|
+
__export(tokens_exports, {
|
|
6
|
+
breakpoints: () => breakpoints,
|
|
7
|
+
colors: () => colors,
|
|
8
|
+
fontFamily: () => fontFamily,
|
|
9
|
+
fontSize: () => fontSize,
|
|
10
|
+
fontWeight: () => fontWeight,
|
|
11
|
+
motion: () => motion,
|
|
12
|
+
opacity: () => opacity,
|
|
13
|
+
radius: () => radius,
|
|
14
|
+
shadow: () => shadow,
|
|
15
|
+
spacing: () => spacing,
|
|
16
|
+
tokens: () => tokens,
|
|
17
|
+
zIndex: () => zIndex
|
|
18
|
+
});
|
|
19
|
+
var colors = {
|
|
20
|
+
brand: {
|
|
21
|
+
50: "#eff6ff",
|
|
22
|
+
100: "#dbeafe",
|
|
23
|
+
200: "#bfdbfe",
|
|
24
|
+
300: "#93c5fd",
|
|
25
|
+
400: "#60a5fa",
|
|
26
|
+
500: "#3b82f6",
|
|
27
|
+
600: "#2563eb",
|
|
28
|
+
700: "#1d4ed8",
|
|
29
|
+
800: "#1e40af",
|
|
30
|
+
900: "#1e3a8a",
|
|
31
|
+
950: "#172554"
|
|
32
|
+
},
|
|
33
|
+
neutral: {
|
|
34
|
+
50: "#fafafa",
|
|
35
|
+
100: "#f4f4f5",
|
|
36
|
+
200: "#e4e4e7",
|
|
37
|
+
300: "#d4d4d8",
|
|
38
|
+
400: "#a1a1aa",
|
|
39
|
+
500: "#71717a",
|
|
40
|
+
600: "#52525b",
|
|
41
|
+
700: "#3f3f46",
|
|
42
|
+
800: "#27272a",
|
|
43
|
+
900: "#18181b",
|
|
44
|
+
950: "#09090b"
|
|
45
|
+
},
|
|
46
|
+
success: {
|
|
47
|
+
50: "#f0fdf4",
|
|
48
|
+
100: "#dcfce7",
|
|
49
|
+
500: "#22c55e",
|
|
50
|
+
600: "#16a34a",
|
|
51
|
+
700: "#15803d",
|
|
52
|
+
900: "#14532d"
|
|
53
|
+
},
|
|
54
|
+
warning: {
|
|
55
|
+
50: "#fffbeb",
|
|
56
|
+
100: "#fef3c7",
|
|
57
|
+
500: "#f59e0b",
|
|
58
|
+
600: "#d97706",
|
|
59
|
+
700: "#b45309",
|
|
60
|
+
900: "#78350f"
|
|
61
|
+
},
|
|
62
|
+
danger: {
|
|
63
|
+
50: "#fef2f2",
|
|
64
|
+
100: "#fee2e2",
|
|
65
|
+
500: "#ef4444",
|
|
66
|
+
600: "#dc2626",
|
|
67
|
+
700: "#b91c1c",
|
|
68
|
+
900: "#7f1d1d"
|
|
69
|
+
},
|
|
70
|
+
info: {
|
|
71
|
+
50: "#ecfeff",
|
|
72
|
+
100: "#cffafe",
|
|
73
|
+
500: "#06b6d4",
|
|
74
|
+
600: "#0891b2",
|
|
75
|
+
700: "#0e7490",
|
|
76
|
+
900: "#164e63"
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var spacing = {
|
|
80
|
+
px: "1px",
|
|
81
|
+
"0": "0",
|
|
82
|
+
"0.5": "0.125rem",
|
|
83
|
+
"1": "0.25rem",
|
|
84
|
+
"1.5": "0.375rem",
|
|
85
|
+
"2": "0.5rem",
|
|
86
|
+
"2.5": "0.625rem",
|
|
87
|
+
"3": "0.75rem",
|
|
88
|
+
"4": "1rem",
|
|
89
|
+
"5": "1.25rem",
|
|
90
|
+
"6": "1.5rem",
|
|
91
|
+
"8": "2rem",
|
|
92
|
+
"10": "2.5rem",
|
|
93
|
+
"12": "3rem",
|
|
94
|
+
"16": "4rem",
|
|
95
|
+
"20": "5rem",
|
|
96
|
+
"24": "6rem",
|
|
97
|
+
xs: "0.25rem",
|
|
98
|
+
sm: "0.5rem",
|
|
99
|
+
md: "1rem",
|
|
100
|
+
lg: "1.5rem",
|
|
101
|
+
xl: "2rem",
|
|
102
|
+
"2xl": "3rem"
|
|
103
|
+
};
|
|
104
|
+
var radius = {
|
|
105
|
+
none: "0",
|
|
106
|
+
xs: "0.125rem",
|
|
107
|
+
sm: "0.25rem",
|
|
108
|
+
md: "0.5rem",
|
|
109
|
+
lg: "0.75rem",
|
|
110
|
+
xl: "1rem",
|
|
111
|
+
"2xl": "1.5rem",
|
|
112
|
+
full: "9999px"
|
|
113
|
+
};
|
|
114
|
+
var fontFamily = {
|
|
115
|
+
sans: ["ui-sans-serif", "system-ui", "-apple-system", "Segoe UI", "Roboto", "sans-serif"],
|
|
116
|
+
mono: ["ui-monospace", "SFMono-Regular", "Menlo", "Monaco", "monospace"],
|
|
117
|
+
serif: ["ui-serif", "Georgia", "serif"]
|
|
118
|
+
};
|
|
119
|
+
var fontSize = {
|
|
120
|
+
xs: ["0.75rem", { lineHeight: "1rem" }],
|
|
121
|
+
sm: ["0.875rem", { lineHeight: "1.25rem" }],
|
|
122
|
+
base: ["1rem", { lineHeight: "1.5rem" }],
|
|
123
|
+
lg: ["1.125rem", { lineHeight: "1.75rem" }],
|
|
124
|
+
xl: ["1.25rem", { lineHeight: "1.75rem" }],
|
|
125
|
+
"2xl": ["1.5rem", { lineHeight: "2rem" }],
|
|
126
|
+
"3xl": ["1.875rem", { lineHeight: "2.25rem" }],
|
|
127
|
+
"4xl": ["2.25rem", { lineHeight: "2.5rem" }],
|
|
128
|
+
"5xl": ["3rem", { lineHeight: "1" }],
|
|
129
|
+
"6xl": ["3.75rem", { lineHeight: "1" }]
|
|
130
|
+
};
|
|
131
|
+
var fontWeight = {
|
|
132
|
+
normal: "400",
|
|
133
|
+
medium: "500",
|
|
134
|
+
semibold: "600",
|
|
135
|
+
bold: "700"
|
|
136
|
+
};
|
|
137
|
+
var shadow = {
|
|
138
|
+
none: "none",
|
|
139
|
+
xs: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
140
|
+
sm: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
|
141
|
+
md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
142
|
+
lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
|
|
143
|
+
xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
|
|
144
|
+
"2xl": "0 25px 50px -12px rgb(0 0 0 / 0.25)",
|
|
145
|
+
inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"
|
|
146
|
+
};
|
|
147
|
+
var zIndex = {
|
|
148
|
+
hide: -1,
|
|
149
|
+
base: 0,
|
|
150
|
+
raised: 10,
|
|
151
|
+
dropdown: 1e3,
|
|
152
|
+
sticky: 1100,
|
|
153
|
+
banner: 1200,
|
|
154
|
+
overlay: 1300,
|
|
155
|
+
modal: 1400,
|
|
156
|
+
popover: 1500,
|
|
157
|
+
skipLink: 1600,
|
|
158
|
+
toast: 1700,
|
|
159
|
+
tooltip: 1800
|
|
160
|
+
};
|
|
161
|
+
var motion = {
|
|
162
|
+
duration: {
|
|
163
|
+
instant: "0ms",
|
|
164
|
+
fast: "120ms",
|
|
165
|
+
normal: "180ms",
|
|
166
|
+
slow: "260ms",
|
|
167
|
+
slower: "360ms"
|
|
168
|
+
},
|
|
169
|
+
easing: {
|
|
170
|
+
standard: "cubic-bezier(0.2, 0, 0, 1)",
|
|
171
|
+
enter: "cubic-bezier(0, 0, 0.2, 1)",
|
|
172
|
+
exit: "cubic-bezier(0.4, 0, 1, 1)",
|
|
173
|
+
bounce: "cubic-bezier(0.34, 1.56, 0.64, 1)"
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
var breakpoints = {
|
|
177
|
+
sm: "640px",
|
|
178
|
+
md: "768px",
|
|
179
|
+
lg: "1024px",
|
|
180
|
+
xl: "1280px",
|
|
181
|
+
"2xl": "1536px"
|
|
182
|
+
};
|
|
183
|
+
var opacity = {
|
|
184
|
+
"0": "0",
|
|
185
|
+
"5": "0.05",
|
|
186
|
+
"10": "0.1",
|
|
187
|
+
"20": "0.2",
|
|
188
|
+
"40": "0.4",
|
|
189
|
+
"50": "0.5",
|
|
190
|
+
"60": "0.6",
|
|
191
|
+
"70": "0.7",
|
|
192
|
+
"80": "0.8",
|
|
193
|
+
"90": "0.9",
|
|
194
|
+
"100": "1"
|
|
195
|
+
};
|
|
196
|
+
var tokens = {
|
|
197
|
+
colors,
|
|
198
|
+
spacing,
|
|
199
|
+
radius,
|
|
200
|
+
fontFamily,
|
|
201
|
+
fontSize,
|
|
202
|
+
fontWeight,
|
|
203
|
+
shadow,
|
|
204
|
+
zIndex,
|
|
205
|
+
motion,
|
|
206
|
+
breakpoints,
|
|
207
|
+
opacity
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
export { breakpoints, colors, fontFamily, fontSize, fontWeight, motion, opacity, radius, shadow, spacing, tokens, tokens_exports, zIndex };
|
|
211
|
+
//# sourceMappingURL=chunk-D67WGR7Y.js.map
|
|
212
|
+
//# sourceMappingURL=chunk-D67WGR7Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/index.ts"],"names":[],"mappings":"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","file":"chunk-D67WGR7Y.js","sourcesContent":["// Default token set — extend as components require it.\n// Consumed by `src/tailwind/preset.ts` and exposed as raw values to consumers\n// who want them outside Tailwind (CSS-in-JS, inline styles, etc.).\n\nexport const colors = {\n brand: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n neutral: {\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b',\n },\n success: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 500: '#22c55e',\n 600: '#16a34a',\n 700: '#15803d',\n 900: '#14532d',\n },\n warning: {\n 50: '#fffbeb',\n 100: '#fef3c7',\n 500: '#f59e0b',\n 600: '#d97706',\n 700: '#b45309',\n 900: '#78350f',\n },\n danger: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 900: '#7f1d1d',\n },\n info: {\n 50: '#ecfeff',\n 100: '#cffafe',\n 500: '#06b6d4',\n 600: '#0891b2',\n 700: '#0e7490',\n 900: '#164e63',\n },\n} as const;\n\nexport const spacing = {\n px: '1px',\n '0': '0',\n '0.5': '0.125rem',\n '1': '0.25rem',\n '1.5': '0.375rem',\n '2': '0.5rem',\n '2.5': '0.625rem',\n '3': '0.75rem',\n '4': '1rem',\n '5': '1.25rem',\n '6': '1.5rem',\n '8': '2rem',\n '10': '2.5rem',\n '12': '3rem',\n '16': '4rem',\n '20': '5rem',\n '24': '6rem',\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n '2xl': '3rem',\n} as const;\n\nexport const radius = {\n none: '0',\n xs: '0.125rem',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n '2xl': '1.5rem',\n full: '9999px',\n} as const;\n\nexport const fontFamily = {\n sans: ['ui-sans-serif', 'system-ui', '-apple-system', 'Segoe UI', 'Roboto', 'sans-serif'],\n mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'monospace'],\n serif: ['ui-serif', 'Georgia', 'serif'],\n} as const;\n\nexport const fontSize = {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n} as const;\n\nexport const fontWeight = {\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n} as const;\n\nexport const shadow = {\n none: 'none',\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n} as const;\n\nexport const zIndex = {\n hide: -1,\n base: 0,\n raised: 10,\n dropdown: 1000,\n sticky: 1100,\n banner: 1200,\n overlay: 1300,\n modal: 1400,\n popover: 1500,\n skipLink: 1600,\n toast: 1700,\n tooltip: 1800,\n} as const;\n\nexport const motion = {\n duration: {\n instant: '0ms',\n fast: '120ms',\n normal: '180ms',\n slow: '260ms',\n slower: '360ms',\n },\n easing: {\n standard: 'cubic-bezier(0.2, 0, 0, 1)',\n enter: 'cubic-bezier(0, 0, 0.2, 1)',\n exit: 'cubic-bezier(0.4, 0, 1, 1)',\n bounce: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n} as const;\n\nexport const breakpoints = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n} as const;\n\nexport const opacity = {\n '0': '0',\n '5': '0.05',\n '10': '0.1',\n '20': '0.2',\n '40': '0.4',\n '50': '0.5',\n '60': '0.6',\n '70': '0.7',\n '80': '0.8',\n '90': '0.9',\n '100': '1',\n} as const;\n\nexport const tokens = {\n colors,\n spacing,\n radius,\n fontFamily,\n fontSize,\n fontWeight,\n shadow,\n zIndex,\n motion,\n breakpoints,\n opacity,\n} as const;\nexport type Tokens = typeof tokens;\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/utils/composeRefs.ts
|
|
2
|
+
function setRef(ref, value) {
|
|
3
|
+
if (typeof ref === "function") {
|
|
4
|
+
ref(value);
|
|
5
|
+
} else if (ref != null) {
|
|
6
|
+
ref.current = value;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function composeRefs(...refs) {
|
|
10
|
+
return (node) => {
|
|
11
|
+
for (const ref of refs) setRef(ref, node);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { composeRefs };
|
|
16
|
+
//# sourceMappingURL=chunk-DN7WBRIV.js.map
|
|
17
|
+
//# sourceMappingURL=chunk-DN7WBRIV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/composeRefs.ts"],"names":[],"mappings":";AAIA,SAAS,MAAA,CAAU,KAAqB,KAAA,EAAgB;AACtD,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EACX,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,IAAC,IAA8B,OAAA,GAAU,KAAA;AAAA,EAC3C;AACF;AAMO,SAAS,eAAkB,IAAA,EAAkD;AAClF,EAAA,OAAO,CAAC,IAAA,KAAS;AACf,IAAA,KAAA,MAAW,GAAA,IAAO,IAAA,EAAM,MAAA,CAAO,GAAA,EAAK,IAAS,CAAA;AAAA,EAC/C,CAAA;AACF","file":"chunk-DN7WBRIV.js","sourcesContent":["import type { Ref } from 'react';\n\ntype PossibleRef<T> = Ref<T> | undefined;\n\nfunction setRef<T>(ref: PossibleRef<T>, value: T): void {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n (ref as { current: T | null }).current = value;\n }\n}\n\n/**\n * Merge multiple React refs (callback or object) into a single callback ref.\n * Use to forward a ref while also keeping a local ref to the same node.\n */\nexport function composeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void {\n return (node) => {\n for (const ref of refs) setRef(ref, node as T);\n };\n}\n"]}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { useFormControl, FormControlProvider } from './chunk-Q27NAHVB.js';
|
|
2
|
+
import { useScrollLock } from './chunk-77WSI427.js';
|
|
3
|
+
import { Slot } from './chunk-33IOXQYO.js';
|
|
4
|
+
import { composeRefs } from './chunk-DN7WBRIV.js';
|
|
5
|
+
import { cn } from './chunk-KZ4VFY2T.js';
|
|
6
|
+
import { __export } from './chunk-PZ5AY32C.js';
|
|
7
|
+
import { forwardRef, useState, useRef, useEffect, isValidElement, cloneElement, createContext, useContext, useCallback, useMemo, useId } from 'react';
|
|
8
|
+
import { createPortal } from 'react-dom';
|
|
9
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
|
+
import { FocusScope as FocusScope$1 } from '@radix-ui/react-focus-scope';
|
|
11
|
+
import { useFloating, autoUpdate, offset, flip, shift } from '@floating-ui/react';
|
|
12
|
+
|
|
13
|
+
// src/primitives/index.ts
|
|
14
|
+
var primitives_exports = {};
|
|
15
|
+
__export(primitives_exports, {
|
|
16
|
+
AccessibleIcon: () => AccessibleIcon,
|
|
17
|
+
AnchoredPositioner: () => AnchoredPositioner,
|
|
18
|
+
DirectionProvider: () => DirectionProvider,
|
|
19
|
+
DismissableLayer: () => DismissableLayer,
|
|
20
|
+
FocusScope: () => FocusScope,
|
|
21
|
+
FormControlProvider: () => FormControlProvider,
|
|
22
|
+
Portal: () => Portal,
|
|
23
|
+
Presence: () => Presence,
|
|
24
|
+
RovingFocusGroup: () => RovingFocusGroup,
|
|
25
|
+
ScrollLockProvider: () => ScrollLockProvider,
|
|
26
|
+
Slot: () => Slot,
|
|
27
|
+
VisuallyHidden: () => VisuallyHidden,
|
|
28
|
+
createCollection: () => createCollection,
|
|
29
|
+
useDirection: () => useDirection,
|
|
30
|
+
useFormControl: () => useFormControl,
|
|
31
|
+
useRovingFocusItem: () => useRovingFocusItem
|
|
32
|
+
});
|
|
33
|
+
function Portal({ children, container, name }) {
|
|
34
|
+
const target = container ?? document.body;
|
|
35
|
+
return createPortal(/* @__PURE__ */ jsx("div", { "data-portal-name": name, children }), target);
|
|
36
|
+
}
|
|
37
|
+
var VisuallyHidden = forwardRef(
|
|
38
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
ref,
|
|
42
|
+
className: cn(
|
|
43
|
+
"absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0",
|
|
44
|
+
"m-[-1px] [clip:rect(0_0_0_0)] [clip-path:inset(50%)]",
|
|
45
|
+
className
|
|
46
|
+
),
|
|
47
|
+
...props
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
);
|
|
51
|
+
VisuallyHidden.displayName = "VisuallyHidden";
|
|
52
|
+
function Presence({ present, children }) {
|
|
53
|
+
const [rendered, setRendered] = useState(present);
|
|
54
|
+
const ref = useRef(null);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (present) {
|
|
57
|
+
setRendered(true);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const node = ref.current;
|
|
61
|
+
if (!node) {
|
|
62
|
+
setRendered(false);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const cs = getComputedStyle(node);
|
|
66
|
+
const hasAnim = cs.animationName !== "none" && cs.animationDuration !== "0s";
|
|
67
|
+
const hasTrans = cs.transitionDuration !== "0s";
|
|
68
|
+
if (!hasAnim && !hasTrans) {
|
|
69
|
+
setRendered(false);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const onEnd = () => setRendered(false);
|
|
73
|
+
node.addEventListener("animationend", onEnd);
|
|
74
|
+
node.addEventListener("transitionend", onEnd);
|
|
75
|
+
return () => {
|
|
76
|
+
node.removeEventListener("animationend", onEnd);
|
|
77
|
+
node.removeEventListener("transitionend", onEnd);
|
|
78
|
+
};
|
|
79
|
+
}, [present]);
|
|
80
|
+
if (!rendered || !isValidElement(children)) return null;
|
|
81
|
+
const child = children;
|
|
82
|
+
return cloneElement(child, {
|
|
83
|
+
ref: composeRefs(ref, child.ref),
|
|
84
|
+
"data-state": present ? "open" : "closed"
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
var DirectionContext = createContext("ltr");
|
|
88
|
+
function DirectionProvider({ dir, children }) {
|
|
89
|
+
return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });
|
|
90
|
+
}
|
|
91
|
+
function useDirection() {
|
|
92
|
+
return useContext(DirectionContext);
|
|
93
|
+
}
|
|
94
|
+
function AccessibleIcon({ label, children }) {
|
|
95
|
+
const icon = isValidElement(children) ? cloneElement(children, {
|
|
96
|
+
"aria-hidden": "true",
|
|
97
|
+
focusable: "false"
|
|
98
|
+
}) : children;
|
|
99
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
100
|
+
icon,
|
|
101
|
+
/* @__PURE__ */ jsx(VisuallyHidden, { children: label })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
var FocusScope = FocusScope$1;
|
|
105
|
+
var layerStack = [];
|
|
106
|
+
var DismissableLayer = forwardRef(
|
|
107
|
+
({ onEscape, onOutsidePointerDown, disableEscape, disableOutsideClick, ...props }, forwardedRef) => {
|
|
108
|
+
const ref = useRef(null);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
const node = ref.current;
|
|
111
|
+
if (!node) return;
|
|
112
|
+
const entry = { node, onEscape, onOutsidePointerDown };
|
|
113
|
+
layerStack.push(entry);
|
|
114
|
+
return () => {
|
|
115
|
+
const idx = layerStack.indexOf(entry);
|
|
116
|
+
if (idx >= 0) layerStack.splice(idx, 1);
|
|
117
|
+
};
|
|
118
|
+
}, [onEscape, onOutsidePointerDown]);
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (disableEscape) return;
|
|
121
|
+
const onKeyDown = (e) => {
|
|
122
|
+
if (e.key !== "Escape") return;
|
|
123
|
+
const top = layerStack[layerStack.length - 1];
|
|
124
|
+
if (top && top.node === ref.current) top.onEscape?.(e);
|
|
125
|
+
};
|
|
126
|
+
document.addEventListener("keydown", onKeyDown);
|
|
127
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
128
|
+
}, [disableEscape]);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (disableOutsideClick) return;
|
|
131
|
+
const onPointer = (e) => {
|
|
132
|
+
const top = layerStack[layerStack.length - 1];
|
|
133
|
+
if (!top || top.node !== ref.current) return;
|
|
134
|
+
const target = e.target;
|
|
135
|
+
if (!target || ref.current?.contains(target)) return;
|
|
136
|
+
top.onOutsidePointerDown?.(e);
|
|
137
|
+
};
|
|
138
|
+
document.addEventListener("pointerdown", onPointer, true);
|
|
139
|
+
return () => document.removeEventListener("pointerdown", onPointer, true);
|
|
140
|
+
}, [disableOutsideClick]);
|
|
141
|
+
return /* @__PURE__ */ jsx("div", { ref: composeRefs(forwardedRef, ref), ...props });
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
DismissableLayer.displayName = "DismissableLayer";
|
|
145
|
+
var AnchoredPositioner = forwardRef(
|
|
146
|
+
({ anchor, placement = "bottom", offset: offset$1 = 8, open = true, children, style, ...props }, forwardedRef) => {
|
|
147
|
+
const { refs, floatingStyles } = useFloating({
|
|
148
|
+
open,
|
|
149
|
+
placement,
|
|
150
|
+
middleware: [offset(offset$1), flip(), shift({ padding: 8 })],
|
|
151
|
+
whileElementsMounted: autoUpdate,
|
|
152
|
+
elements: { reference: anchor }
|
|
153
|
+
});
|
|
154
|
+
if (!open) return null;
|
|
155
|
+
return /* @__PURE__ */ jsx(
|
|
156
|
+
"div",
|
|
157
|
+
{
|
|
158
|
+
ref: composeRefs(forwardedRef, refs.setFloating),
|
|
159
|
+
style: { ...floatingStyles, ...style },
|
|
160
|
+
...props,
|
|
161
|
+
children
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
AnchoredPositioner.displayName = "AnchoredPositioner";
|
|
167
|
+
var RovingFocusContext = createContext(null);
|
|
168
|
+
function RovingFocusGroup({
|
|
169
|
+
orientation = "horizontal",
|
|
170
|
+
loop = true,
|
|
171
|
+
children,
|
|
172
|
+
...props
|
|
173
|
+
}) {
|
|
174
|
+
const items = useRef([]);
|
|
175
|
+
const [focusedId, setFocusedId] = useState(null);
|
|
176
|
+
const register = useCallback((id) => {
|
|
177
|
+
if (!items.current.includes(id)) items.current.push(id);
|
|
178
|
+
setFocusedId((current) => current ?? id);
|
|
179
|
+
}, []);
|
|
180
|
+
const unregister = useCallback((id) => {
|
|
181
|
+
items.current = items.current.filter((i) => i !== id);
|
|
182
|
+
}, []);
|
|
183
|
+
const onItemKeyDown = useCallback(
|
|
184
|
+
(event, id) => {
|
|
185
|
+
const list = items.current;
|
|
186
|
+
const idx = list.indexOf(id);
|
|
187
|
+
if (idx === -1) return;
|
|
188
|
+
const isVert = orientation === "vertical" || orientation === "both";
|
|
189
|
+
const isHoriz = orientation === "horizontal" || orientation === "both";
|
|
190
|
+
let next = idx;
|
|
191
|
+
if (event.key === "ArrowRight" && isHoriz || event.key === "ArrowDown" && isVert) {
|
|
192
|
+
next = idx + 1;
|
|
193
|
+
if (next >= list.length) next = loop ? 0 : list.length - 1;
|
|
194
|
+
} else if (event.key === "ArrowLeft" && isHoriz || event.key === "ArrowUp" && isVert) {
|
|
195
|
+
next = idx - 1;
|
|
196
|
+
if (next < 0) next = loop ? list.length - 1 : 0;
|
|
197
|
+
} else if (event.key === "Home") {
|
|
198
|
+
next = 0;
|
|
199
|
+
} else if (event.key === "End") {
|
|
200
|
+
next = list.length - 1;
|
|
201
|
+
} else {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
const id2 = list[next];
|
|
206
|
+
if (id2) setFocusedId(id2);
|
|
207
|
+
},
|
|
208
|
+
[orientation, loop]
|
|
209
|
+
);
|
|
210
|
+
const value = useMemo(
|
|
211
|
+
() => ({ register, unregister, focusedId, setFocusedId, onItemKeyDown }),
|
|
212
|
+
[register, unregister, focusedId, onItemKeyDown]
|
|
213
|
+
);
|
|
214
|
+
return /* @__PURE__ */ jsx(RovingFocusContext.Provider, { value, children: /* @__PURE__ */ jsx("div", { role: "group", ...props, children }) });
|
|
215
|
+
}
|
|
216
|
+
function useRovingFocusItem() {
|
|
217
|
+
const context = useContext(RovingFocusContext);
|
|
218
|
+
const id = useId();
|
|
219
|
+
const ref = useRef(null);
|
|
220
|
+
useEffect(() => {
|
|
221
|
+
context?.register(id);
|
|
222
|
+
return () => context?.unregister(id);
|
|
223
|
+
}, [context, id]);
|
|
224
|
+
useEffect(() => {
|
|
225
|
+
if (context?.focusedId === id && ref.current && document.activeElement !== ref.current) {
|
|
226
|
+
ref.current.focus();
|
|
227
|
+
}
|
|
228
|
+
}, [context?.focusedId, id]);
|
|
229
|
+
return {
|
|
230
|
+
ref: (node) => {
|
|
231
|
+
ref.current = node;
|
|
232
|
+
},
|
|
233
|
+
tabIndex: !context || context.focusedId === id ? 0 : -1,
|
|
234
|
+
onKeyDown: (e) => context?.onItemKeyDown(e, id),
|
|
235
|
+
onFocus: () => context?.setFocusedId(id),
|
|
236
|
+
"data-roving-focus-item": true
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function createCollection() {
|
|
240
|
+
const CollectionContext = createContext(null);
|
|
241
|
+
function Provider({ children }) {
|
|
242
|
+
const [items, setItems] = useState([]);
|
|
243
|
+
const register = useCallback((item) => {
|
|
244
|
+
setItems((prev) => prev.includes(item) ? prev : [...prev, item]);
|
|
245
|
+
}, []);
|
|
246
|
+
const unregister = useCallback((item) => {
|
|
247
|
+
setItems((prev) => prev.filter((i) => i !== item));
|
|
248
|
+
}, []);
|
|
249
|
+
const value = useMemo(() => ({ items, register, unregister }), [items, register, unregister]);
|
|
250
|
+
return /* @__PURE__ */ jsx(CollectionContext.Provider, { value, children });
|
|
251
|
+
}
|
|
252
|
+
function useCollection() {
|
|
253
|
+
const ctx = useContext(CollectionContext);
|
|
254
|
+
if (!ctx) {
|
|
255
|
+
throw new Error("useCollection must be used inside its Provider");
|
|
256
|
+
}
|
|
257
|
+
return ctx;
|
|
258
|
+
}
|
|
259
|
+
return { Provider, useCollection, Context: CollectionContext };
|
|
260
|
+
}
|
|
261
|
+
function ScrollLockProvider({ enabled = true, children }) {
|
|
262
|
+
useScrollLock(enabled);
|
|
263
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export { AccessibleIcon, AnchoredPositioner, DirectionProvider, DismissableLayer, FocusScope, Portal, Presence, RovingFocusGroup, ScrollLockProvider, VisuallyHidden, createCollection, primitives_exports, useDirection, useRovingFocusItem };
|
|
267
|
+
//# sourceMappingURL=chunk-JCMV6IT4.js.map
|
|
268
|
+
//# sourceMappingURL=chunk-JCMV6IT4.js.map
|