@wow-two-beta/ui 0.0.3 → 0.0.4

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.
Files changed (50) hide show
  1. package/dist/actions/index.js +4 -2
  2. package/dist/chunk-AOHZGL6F.js +167 -0
  3. package/dist/chunk-AOHZGL6F.js.map +1 -0
  4. package/dist/chunk-BMBIZLO4.js +34 -0
  5. package/dist/chunk-BMBIZLO4.js.map +1 -0
  6. package/dist/chunk-D67WGR7Y.js +212 -0
  7. package/dist/chunk-D67WGR7Y.js.map +1 -0
  8. package/dist/chunk-DN7WBRIV.js +17 -0
  9. package/dist/chunk-DN7WBRIV.js.map +1 -0
  10. package/dist/chunk-KDXJQNB6.js +43 -0
  11. package/dist/chunk-KDXJQNB6.js.map +1 -0
  12. package/dist/chunk-KZ4VFY2T.js +11 -0
  13. package/dist/chunk-KZ4VFY2T.js.map +1 -0
  14. package/dist/{chunk-7CP7KR5F.js → chunk-OEEYNBEO.js} +3 -3
  15. package/dist/{chunk-7CP7KR5F.js.map → chunk-OEEYNBEO.js.map} +1 -1
  16. package/dist/chunk-T3JN5Y3E.js +332 -0
  17. package/dist/chunk-T3JN5Y3E.js.map +1 -0
  18. package/dist/chunk-TDX22OWF.js +33 -0
  19. package/dist/chunk-TDX22OWF.js.map +1 -0
  20. package/dist/hooks/index.d.ts +2 -5
  21. package/dist/hooks/index.js +3 -1
  22. package/dist/icons/index.d.ts +2 -5
  23. package/dist/icons/index.js +3 -1
  24. package/dist/index-Bk6CuDNT.d.ts +247 -0
  25. package/dist/index-C0IDphm_.d.ts +61 -0
  26. package/dist/index-CEAM9LLM.d.ts +37 -0
  27. package/dist/index-PAuwodyY.d.ts +103 -0
  28. package/dist/index-goThcZ1E.d.ts +416 -0
  29. package/dist/index.d.ts +8 -4
  30. package/dist/index.js +10 -6
  31. package/dist/primitives/index.d.ts +5 -0
  32. package/dist/primitives/index.js +7 -0
  33. package/dist/primitives/index.js.map +1 -0
  34. package/dist/tailwind/index.js +8 -2
  35. package/dist/tailwind/index.js.map +1 -1
  36. package/dist/tokens/index.d.ts +1 -1
  37. package/dist/tokens/index.js +1 -1
  38. package/dist/utils/index.d.ts +3 -1
  39. package/dist/utils/index.js +3 -1
  40. package/package.json +8 -1
  41. package/dist/chunk-6YKPUEHU.js +0 -47
  42. package/dist/chunk-6YKPUEHU.js.map +0 -1
  43. package/dist/chunk-CTVGU35H.js +0 -6
  44. package/dist/chunk-CTVGU35H.js.map +0 -1
  45. package/dist/chunk-ECZ4YFAI.js +0 -16
  46. package/dist/chunk-ECZ4YFAI.js.map +0 -1
  47. package/dist/chunk-U4JXXIE2.js +0 -6
  48. package/dist/chunk-U4JXXIE2.js.map +0 -1
  49. package/dist/index-CdSRWb8y.d.ts +0 -78
  50. package/dist/index-D-adCzNR.d.ts +0 -14
@@ -1,5 +1,7 @@
1
- export { Button, buttonVariants } from '../chunk-7CP7KR5F.js';
2
- import '../chunk-ECZ4YFAI.js';
1
+ export { Button, buttonVariants } from '../chunk-OEEYNBEO.js';
2
+ import '../chunk-BMBIZLO4.js';
3
+ import '../chunk-DN7WBRIV.js';
4
+ import '../chunk-KZ4VFY2T.js';
3
5
  import '../chunk-PZ5AY32C.js';
4
6
  //# sourceMappingURL=index.js.map
5
7
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,167 @@
1
+ import { useScrollLock, useId } from './chunk-KDXJQNB6.js';
2
+ import { __export } from './chunk-PZ5AY32C.js';
3
+ import { useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
4
+
5
+ // src/hooks/index.ts
6
+ var hooks_exports = {};
7
+ __export(hooks_exports, {
8
+ useControlled: () => useControlled,
9
+ useDisclosure: () => useDisclosure,
10
+ useEscape: () => useEscape,
11
+ useEventListener: () => useEventListener,
12
+ useFocusTrap: () => useFocusTrap,
13
+ useId: () => useId,
14
+ useMediaQuery: () => useMediaQuery,
15
+ useOutsideClick: () => useOutsideClick,
16
+ useResizeObserver: () => useResizeObserver,
17
+ useScrollLock: () => useScrollLock
18
+ });
19
+ function useControlled({
20
+ controlled,
21
+ default: defaultValue,
22
+ onChange
23
+ }) {
24
+ const [uncontrolled, setUncontrolled] = useState(defaultValue);
25
+ const onChangeRef = useRef(onChange);
26
+ onChangeRef.current = onChange;
27
+ const isControlled = controlled !== void 0;
28
+ const value = isControlled ? controlled : uncontrolled;
29
+ const setValue = useCallback(
30
+ (next) => {
31
+ if (!isControlled) setUncontrolled(next);
32
+ onChangeRef.current?.(next);
33
+ },
34
+ [isControlled]
35
+ );
36
+ return [value, setValue];
37
+ }
38
+ function useDisclosure(initial = false) {
39
+ const [isOpen, setIsOpen] = useState(initial);
40
+ const open = useCallback(() => setIsOpen(true), []);
41
+ const close = useCallback(() => setIsOpen(false), []);
42
+ const toggle = useCallback(() => setIsOpen((o) => !o), []);
43
+ return { isOpen, open, close, toggle, setOpen: setIsOpen };
44
+ }
45
+ function useEventListener(event, handler, target = document, options) {
46
+ const handlerRef = useRef(handler);
47
+ useLayoutEffect(() => {
48
+ handlerRef.current = handler;
49
+ }, [handler]);
50
+ useEffect(() => {
51
+ if (!target) return;
52
+ const listener = (e) => handlerRef.current(e);
53
+ target.addEventListener(event, listener, options);
54
+ return () => target.removeEventListener(event, listener, options);
55
+ }, [event, target, options]);
56
+ }
57
+ function useOutsideClick(refs, handler, enabled = true) {
58
+ const handlerRef = useRef(handler);
59
+ handlerRef.current = handler;
60
+ useEffect(() => {
61
+ if (!enabled) return;
62
+ const refList = Array.isArray(refs) ? refs : [refs];
63
+ const onPointerDown = (e) => {
64
+ const target = e.target;
65
+ if (!target) return;
66
+ for (const ref of refList) {
67
+ if (ref.current && ref.current.contains(target)) return;
68
+ }
69
+ handlerRef.current(e);
70
+ };
71
+ document.addEventListener("pointerdown", onPointerDown, true);
72
+ return () => document.removeEventListener("pointerdown", onPointerDown, true);
73
+ }, [refs, enabled]);
74
+ }
75
+ function useEscape(handler, enabled = true) {
76
+ const handlerRef = useRef(handler);
77
+ handlerRef.current = handler;
78
+ useEffect(() => {
79
+ if (!enabled) return;
80
+ const onKeyDown = (e) => {
81
+ if (e.key === "Escape") handlerRef.current(e);
82
+ };
83
+ document.addEventListener("keydown", onKeyDown);
84
+ return () => document.removeEventListener("keydown", onKeyDown);
85
+ }, [enabled]);
86
+ }
87
+ var FOCUSABLE_SELECTOR = [
88
+ "a[href]",
89
+ "button:not([disabled])",
90
+ "input:not([disabled])",
91
+ "select:not([disabled])",
92
+ "textarea:not([disabled])",
93
+ '[tabindex]:not([tabindex="-1"])',
94
+ '[contenteditable="true"]'
95
+ ].join(",");
96
+ function getFocusable(container) {
97
+ return Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
98
+ (el) => !el.hasAttribute("aria-hidden") && el.offsetParent !== null
99
+ );
100
+ }
101
+ function useFocusTrap(ref, enabled = true) {
102
+ useEffect(() => {
103
+ if (!enabled || !ref.current) return;
104
+ const container = ref.current;
105
+ const previouslyFocused = document.activeElement;
106
+ const focusables = getFocusable(container);
107
+ if (focusables.length > 0 && !container.contains(document.activeElement)) {
108
+ focusables[0]?.focus();
109
+ } else if (focusables.length === 0) {
110
+ container.tabIndex = -1;
111
+ container.focus();
112
+ }
113
+ const onKeyDown = (e) => {
114
+ if (e.key !== "Tab") return;
115
+ const items = getFocusable(container);
116
+ if (items.length === 0) {
117
+ e.preventDefault();
118
+ return;
119
+ }
120
+ const first = items[0];
121
+ const last = items[items.length - 1];
122
+ if (!first || !last) return;
123
+ const active = document.activeElement;
124
+ if (e.shiftKey && active === first) {
125
+ e.preventDefault();
126
+ last.focus();
127
+ } else if (!e.shiftKey && active === last) {
128
+ e.preventDefault();
129
+ first.focus();
130
+ }
131
+ };
132
+ container.addEventListener("keydown", onKeyDown);
133
+ return () => {
134
+ container.removeEventListener("keydown", onKeyDown);
135
+ previouslyFocused?.focus?.();
136
+ };
137
+ }, [ref, enabled]);
138
+ }
139
+ function useResizeObserver(ref, callback, enabled = true) {
140
+ const callbackRef = useRef(callback);
141
+ callbackRef.current = callback;
142
+ useEffect(() => {
143
+ if (!enabled || !ref.current || typeof ResizeObserver === "undefined") return;
144
+ const element = ref.current;
145
+ const observer = new ResizeObserver((entries) => {
146
+ const entry = entries[0];
147
+ if (entry) callbackRef.current(entry);
148
+ });
149
+ observer.observe(element);
150
+ return () => observer.disconnect();
151
+ }, [ref, enabled]);
152
+ }
153
+ function useMediaQuery(query) {
154
+ const [matches, setMatches] = useState(() => window.matchMedia(query).matches);
155
+ useEffect(() => {
156
+ const mql = window.matchMedia(query);
157
+ setMatches(mql.matches);
158
+ const onChange = (e) => setMatches(e.matches);
159
+ mql.addEventListener("change", onChange);
160
+ return () => mql.removeEventListener("change", onChange);
161
+ }, [query]);
162
+ return matches;
163
+ }
164
+
165
+ export { hooks_exports, useControlled, useDisclosure, useEscape, useEventListener, useFocusTrap, useMediaQuery, useOutsideClick, useResizeObserver };
166
+ //# sourceMappingURL=chunk-AOHZGL6F.js.map
167
+ //# sourceMappingURL=chunk-AOHZGL6F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/index.ts","../src/hooks/useControlled.ts","../src/hooks/useDisclosure.ts","../src/hooks/useEventListener.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useEscape.ts","../src/hooks/useFocusTrap.ts","../src/hooks/useResizeObserver.ts","../src/hooks/useMediaQuery.ts"],"names":["useState","useCallback","useRef","useEffect"],"mappings":"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","file":"chunk-AOHZGL6F.js","sourcesContent":["export { useId } from './useId';\nexport { useControlled } from './useControlled';\nexport { useDisclosure, type DisclosureControls } from './useDisclosure';\nexport { useEventListener } from './useEventListener';\nexport { useOutsideClick } from './useOutsideClick';\nexport { useEscape } from './useEscape';\nexport { useFocusTrap } from './useFocusTrap';\nexport { useScrollLock } from './useScrollLock';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useMediaQuery } from './useMediaQuery';\n","import { useCallback, useRef, useState } from 'react';\n\ninterface UseControlledOptions<T> {\n controlled: T | undefined;\n default: T;\n onChange?: (value: T) => void;\n}\n\n/**\n * Standard controlled/uncontrolled pattern.\n *\n * - If `controlled` is defined, the component is controlled — internal state is\n * ignored, `setValue` only fires `onChange`.\n * - Otherwise the component owns its state, `setValue` updates it, and `onChange`\n * still fires for consumers that want to observe changes.\n */\nexport function useControlled<T>({\n controlled,\n default: defaultValue,\n onChange,\n}: UseControlledOptions<T>): [T, (value: T) => void] {\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n\n const setValue = useCallback(\n (next: T) => {\n if (!isControlled) setUncontrolled(next);\n onChangeRef.current?.(next);\n },\n [isControlled],\n );\n\n return [value, setValue];\n}\n","import { useCallback, useState } from 'react';\n\nexport interface DisclosureControls {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setOpen: (next: boolean) => void;\n}\n\n/**\n * Minimal open/close state with stable callbacks. The standard backbone for\n * Modal, Drawer, Popover, Menu, Accordion, etc. Use `useControlled` underneath\n * when the consumer may also pass a controlled `open` prop.\n */\nexport function useDisclosure(initial = false): DisclosureControls {\n const [isOpen, setIsOpen] = useState(initial);\n const open = useCallback(() => setIsOpen(true), []);\n const close = useCallback(() => setIsOpen(false), []);\n const toggle = useCallback(() => setIsOpen((o) => !o), []);\n return { isOpen, open, close, toggle, setOpen: setIsOpen };\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react';\n\ntype Target = Window | Document | HTMLElement | null;\n\n/**\n * Add an event listener and clean it up automatically. Handler is read from\n * a ref so consumers don't need to memoize it.\n */\nexport function useEventListener<K extends string>(\n event: K,\n handler: (event: Event) => void,\n target: Target = document,\n options?: boolean | AddEventListenerOptions,\n): void {\n const handlerRef = useRef(handler);\n useLayoutEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n useEffect(() => {\n if (!target) return;\n const listener = (e: Event) => handlerRef.current(e);\n target.addEventListener(event, listener, options);\n return () => target.removeEventListener(event, listener, options);\n }, [event, target, options]);\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/**\n * Fire `handler` when the user clicks outside any of the provided refs.\n * Uses `pointerdown` so it fires before focus shifts (avoids losing focus\n * inside an overlay before a click on a trigger registers).\n */\nexport function useOutsideClick(\n refs: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[],\n handler: (event: PointerEvent) => void,\n enabled = true,\n): void {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n if (!enabled) return;\n const refList = Array.isArray(refs) ? refs : [refs];\n\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node | null;\n if (!target) return;\n for (const ref of refList) {\n if (ref.current && ref.current.contains(target)) return;\n }\n handlerRef.current(e);\n };\n\n document.addEventListener('pointerdown', onPointerDown, true);\n return () => document.removeEventListener('pointerdown', onPointerDown, true);\n }, [refs, enabled]);\n}\n","import { useEffect, useRef } from 'react';\n\n/**\n * Fire `handler` when the Escape key is pressed at the document level.\n * For nested overlays, the topmost should call `event.stopPropagation()` in\n * its handler — `DismissableLayer` handles this stack-style.\n */\nexport function useEscape(handler: (event: KeyboardEvent) => void, enabled = true): void {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n if (!enabled) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handlerRef.current(e);\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [enabled]);\n}\n","import { useEffect, type RefObject } from 'react';\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !el.hasAttribute('aria-hidden') && el.offsetParent !== null,\n );\n}\n\n/**\n * Trap Tab / Shift+Tab focus inside the referenced element. On mount, focuses\n * the first focusable child (unless already focused inside). On unmount,\n * returns focus to the element that had it before mounting.\n *\n * For richer behavior (sentinels, nested traps), wrap `FocusScope` instead —\n * this hook is the lower primitive.\n */\nexport function useFocusTrap(ref: RefObject<HTMLElement | null>, enabled = true): void {\n useEffect(() => {\n if (!enabled || !ref.current) return;\n const container = ref.current;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n\n const focusables = getFocusable(container);\n if (focusables.length > 0 && !container.contains(document.activeElement)) {\n focusables[0]?.focus();\n } else if (focusables.length === 0) {\n container.tabIndex = -1;\n container.focus();\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n const items = getFocusable(container);\n if (items.length === 0) {\n e.preventDefault();\n return;\n }\n const first = items[0];\n const last = items[items.length - 1];\n if (!first || !last) return;\n const active = document.activeElement;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n container.addEventListener('keydown', onKeyDown);\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n previouslyFocused?.focus?.();\n };\n }, [ref, enabled]);\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/**\n * Run `callback` whenever the referenced element's size changes. Returns\n * synchronously after layout, before paint. Cleans up automatically.\n */\nexport function useResizeObserver<T extends HTMLElement>(\n ref: RefObject<T | null>,\n callback: (entry: ResizeObserverEntry) => void,\n enabled = true,\n): void {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (!enabled || !ref.current || typeof ResizeObserver === 'undefined') return;\n const element = ref.current;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) callbackRef.current(entry);\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref, enabled]);\n}\n","import { useEffect, useState } from 'react';\n\n/**\n * Reactively follow a CSS media query. Pass a query string like\n * `'(min-width: 768px)'` or `'(prefers-reduced-motion: reduce)'`.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState(() => window.matchMedia(query).matches);\n\n useEffect(() => {\n const mql = window.matchMedia(query);\n setMatches(mql.matches);\n const onChange = (e: MediaQueryListEvent) => setMatches(e.matches);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n }, [query]);\n\n return matches;\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,43 @@
1
+ import { useId as useId$1, useEffect } from 'react';
2
+
3
+ // src/hooks/useId.ts
4
+ function useId(prefix) {
5
+ const id = useId$1();
6
+ return prefix ? `${id}-${prefix}` : id;
7
+ }
8
+ var lockCount = 0;
9
+ var originalOverflow = null;
10
+ var originalPaddingRight = null;
11
+ function getScrollbarWidth() {
12
+ return window.innerWidth - document.documentElement.clientWidth;
13
+ }
14
+ function useScrollLock(enabled = true) {
15
+ useEffect(() => {
16
+ if (!enabled) return;
17
+ if (lockCount === 0) {
18
+ const body = document.body;
19
+ const scrollbarWidth = getScrollbarWidth();
20
+ originalOverflow = body.style.overflow;
21
+ originalPaddingRight = body.style.paddingRight;
22
+ body.style.overflow = "hidden";
23
+ if (scrollbarWidth > 0) {
24
+ body.style.paddingRight = `${scrollbarWidth}px`;
25
+ }
26
+ }
27
+ lockCount += 1;
28
+ return () => {
29
+ lockCount -= 1;
30
+ if (lockCount === 0) {
31
+ const body = document.body;
32
+ body.style.overflow = originalOverflow ?? "";
33
+ body.style.paddingRight = originalPaddingRight ?? "";
34
+ originalOverflow = null;
35
+ originalPaddingRight = null;
36
+ }
37
+ };
38
+ }, [enabled]);
39
+ }
40
+
41
+ export { useId, useScrollLock };
42
+ //# sourceMappingURL=chunk-KDXJQNB6.js.map
43
+ //# sourceMappingURL=chunk-KDXJQNB6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useId.ts","../src/hooks/useScrollLock.ts"],"names":["useReactId"],"mappings":";;;AAMO,SAAS,MAAM,MAAA,EAAyB;AAC7C,EAAA,MAAM,KAAKA,OAAA,EAAW;AACtB,EAAA,OAAO,MAAA,GAAS,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK,EAAA;AACtC;ACPA,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-KDXJQNB6.js","sourcesContent":["import { useId as useReactId } from 'react';\n\n/**\n * Wraps React 19's `useId`. Optionally accepts a stable prefix so generated\n * IDs are easier to spot in DevTools (e.g. `useId('checkbox')` → `:r2:-checkbox`).\n */\nexport function useId(prefix?: string): string {\n const id = useReactId();\n return prefix ? `${id}-${prefix}` : id;\n}\n","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,11 @@
1
+ import clsx from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // src/utils/cn.ts
5
+ function cn(...inputs) {
6
+ return twMerge(clsx(inputs));
7
+ }
8
+
9
+ export { cn };
10
+ //# sourceMappingURL=chunk-KZ4VFY2T.js.map
11
+ //# sourceMappingURL=chunk-KZ4VFY2T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts"],"names":[],"mappings":";;;;AAOO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B","file":"chunk-KZ4VFY2T.js","sourcesContent":["import clsx, { type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Conditional class composer with Tailwind conflict-resolution.\n * Use anywhere you'd otherwise concatenate class strings.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-ECZ4YFAI.js';
1
+ import { cn } from './chunk-KZ4VFY2T.js';
2
2
  import { forwardRef } from 'react';
3
3
  import { tv } from 'tailwind-variants';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -37,5 +37,5 @@ var Button = forwardRef(
37
37
  Button.displayName = "Button";
38
38
 
39
39
  export { Button, buttonVariants };
40
- //# sourceMappingURL=chunk-7CP7KR5F.js.map
41
- //# sourceMappingURL=chunk-7CP7KR5F.js.map
40
+ //# sourceMappingURL=chunk-OEEYNBEO.js.map
41
+ //# sourceMappingURL=chunk-OEEYNBEO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/actions/button/Button.variants.ts","../src/actions/button/Button.tsx"],"names":[],"mappings":";;;;;AAEO,IAAM,iBAAiB,EAAA,CAAG;AAAA,EAC/B,IAAA,EAAM,qMAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,4CAAA;AAAA,MACT,SAAA,EAAW,sDAAA;AAAA,MACX,KAAA,EAAO;AAAA,KACT;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,6BAAA;AAAA,MACJ,EAAA,EAAI,8BAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAEV,CAAC;ACdM,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/C,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACzD,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-7CP7KR5F.js","sourcesContent":["import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const buttonVariants = tv({\n base: 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 disabled:pointer-events-none disabled:opacity-50',\n variants: {\n variant: {\n primary: 'bg-brand-600 text-white hover:bg-brand-700',\n secondary: 'bg-neutral-200 text-neutral-900 hover:bg-neutral-100',\n ghost: 'bg-transparent text-neutral-900 hover:bg-neutral-100',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-md',\n md: 'h-10 px-4 text-sm rounded-md',\n lg: 'h-12 px-6 text-base rounded-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n});\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { buttonVariants, type ButtonVariants } from './Button.variants';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, ButtonVariants {}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = 'Button';\n"]}
1
+ {"version":3,"sources":["../src/actions/button/Button.variants.ts","../src/actions/button/Button.tsx"],"names":[],"mappings":";;;;;AAEO,IAAM,iBAAiB,EAAA,CAAG;AAAA,EAC/B,IAAA,EAAM,qMAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,4CAAA;AAAA,MACT,SAAA,EAAW,sDAAA;AAAA,MACX,KAAA,EAAO;AAAA,KACT;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,6BAAA;AAAA,MACJ,EAAA,EAAI,8BAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAEV,CAAC;ACdM,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/C,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACzD,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-OEEYNBEO.js","sourcesContent":["import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const buttonVariants = tv({\n base: 'inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 disabled:pointer-events-none disabled:opacity-50',\n variants: {\n variant: {\n primary: 'bg-brand-600 text-white hover:bg-brand-700',\n secondary: 'bg-neutral-200 text-neutral-900 hover:bg-neutral-100',\n ghost: 'bg-transparent text-neutral-900 hover:bg-neutral-100',\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-md',\n md: 'h-10 px-4 text-sm rounded-md',\n lg: 'h-12 px-6 text-base rounded-lg',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n});\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { buttonVariants, type ButtonVariants } from './Button.variants';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, ButtonVariants {}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = 'Button';\n"]}