@g4rcez/components 3.0.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/CaretDown.es-Cj7klWI3.js +33 -0
  2. package/dist/CaretDown.es-Cj7klWI3.js.map +1 -0
  3. package/dist/CaretRight.es-0-M8D9y8.js +33 -0
  4. package/dist/CaretRight.es-0-M8D9y8.js.map +1 -0
  5. package/dist/CheckCircle.es-C6QWLfk_.js +33 -0
  6. package/dist/CheckCircle.es-C6QWLfk_.js.map +1 -0
  7. package/dist/File.es-CA-vuPED.js +33 -0
  8. package/dist/File.es-CA-vuPED.js.map +1 -0
  9. package/dist/IconBase.es-DJ1oCtpo.js +50 -0
  10. package/dist/IconBase.es-DJ1oCtpo.js.map +1 -0
  11. package/dist/Info.es-CrZKs4q4.js +33 -0
  12. package/dist/Info.es-CrZKs4q4.js.map +1 -0
  13. package/dist/MotionConfigContext-C7MqlSdv.js +2713 -0
  14. package/dist/MotionConfigContext-C7MqlSdv.js.map +1 -0
  15. package/dist/Warning.es-D_eI6tLe.js +39 -0
  16. package/dist/Warning.es-D_eI6tLe.js.map +1 -0
  17. package/dist/X.es-BJ1O93El.js +39 -0
  18. package/dist/X.es-BJ1O93El.js.map +1 -0
  19. package/dist/ai/docs/Alert.md +1 -1
  20. package/dist/ai/docs/AnimatedList.md +3 -3
  21. package/dist/ai/docs/Button.md +1 -1
  22. package/dist/ai/docs/CommandPalette.md +7 -7
  23. package/dist/ai/docs/Dropdown.md +4 -4
  24. package/dist/ai/docs/Empty.md +9 -9
  25. package/dist/ai/docs/Expand.md +1 -1
  26. package/dist/ai/docs/FileUpload.md +2 -2
  27. package/dist/ai/docs/Input.md +2 -2
  28. package/dist/ai/docs/InputField.md +2 -2
  29. package/dist/ai/docs/List.md +3 -3
  30. package/dist/ai/docs/Menu.md +3 -3
  31. package/dist/ai/docs/MultiSelect.md +1 -1
  32. package/dist/ai/docs/PageCalendar.md +1 -1
  33. package/dist/ai/docs/Select.md +1 -1
  34. package/dist/ai/docs/Slot.md +1 -1
  35. package/dist/ai/docs/Stats.md +11 -11
  36. package/dist/ai/docs/Table.md +1 -1
  37. package/dist/ai/docs/Tag.md +2 -2
  38. package/dist/ai/docs/Timeline.md +5 -5
  39. package/dist/ai/docs/Toolbar.md +2 -2
  40. package/dist/ai/docs/Tooltip.md +3 -3
  41. package/dist/ai/docs/TransferList.md +2 -2
  42. package/dist/autocomplete-Cn9Z2hLq.js +375 -0
  43. package/dist/autocomplete-Cn9Z2hLq.js.map +1 -0
  44. package/dist/calendar-B5lSd0ID.js +1747 -0
  45. package/dist/calendar-B5lSd0ID.js.map +1 -0
  46. package/dist/components/core/button.js +76 -0
  47. package/dist/components/core/button.js.map +1 -0
  48. package/dist/components/core/tag.js +67 -0
  49. package/dist/components/core/tag.js.map +1 -0
  50. package/dist/components/display/alert.js +94 -0
  51. package/dist/components/display/alert.js.map +1 -0
  52. package/dist/components/display/calendar.js +15 -0
  53. package/dist/components/display/calendar.js.map +1 -0
  54. package/dist/components/display/card.d.ts +2 -2
  55. package/dist/components/display/card.d.ts.map +1 -1
  56. package/dist/components/display/card.js +84 -0
  57. package/dist/components/display/card.js.map +1 -0
  58. package/dist/components/display/empty.d.ts +2 -2
  59. package/dist/components/display/empty.d.ts.map +1 -1
  60. package/dist/components/display/list.js +93 -0
  61. package/dist/components/display/list.js.map +1 -0
  62. package/dist/components/display/notifications.js +15 -0
  63. package/dist/components/display/notifications.js.map +1 -0
  64. package/dist/components/display/stats.js +16 -0
  65. package/dist/components/display/stats.js.map +1 -0
  66. package/dist/components/display/tabs.js +12 -0
  67. package/dist/components/display/tabs.js.map +1 -0
  68. package/dist/components/display/timeline.js +29 -0
  69. package/dist/components/display/timeline.js.map +1 -0
  70. package/dist/components/floating/command-palette.d.ts +3 -3
  71. package/dist/components/floating/command-palette.d.ts.map +1 -1
  72. package/dist/components/floating/dropdown.js +58 -0
  73. package/dist/components/floating/dropdown.js.map +1 -0
  74. package/dist/components/floating/expand.js +41 -0
  75. package/dist/components/floating/expand.js.map +1 -0
  76. package/dist/components/floating/menu.d.ts +2 -2
  77. package/dist/components/floating/menu.d.ts.map +1 -1
  78. package/dist/components/floating/menu.js +177 -0
  79. package/dist/components/floating/menu.js.map +1 -0
  80. package/dist/components/floating/modal.js +297 -0
  81. package/dist/components/floating/modal.js.map +1 -0
  82. package/dist/components/floating/tooltip.js +73 -0
  83. package/dist/components/floating/tooltip.js.map +1 -0
  84. package/dist/components/form/autocomplete.js +16 -0
  85. package/dist/components/form/autocomplete.js.map +1 -0
  86. package/dist/components/form/checkbox.js +44 -0
  87. package/dist/components/form/checkbox.js.map +1 -0
  88. package/dist/components/form/date-picker.js +12 -0
  89. package/dist/components/form/date-picker.js.map +1 -0
  90. package/dist/components/form/file-upload.d.ts.map +1 -1
  91. package/dist/components/form/file-upload.js +11 -0
  92. package/dist/components/form/file-upload.js.map +1 -0
  93. package/dist/components/form/form.js +8 -0
  94. package/dist/components/form/form.js.map +1 -0
  95. package/dist/components/form/input-field.d.ts.map +1 -1
  96. package/dist/components/form/input.js +5 -0
  97. package/dist/components/form/input.js.map +1 -0
  98. package/dist/components/form/radiobox.js +30 -0
  99. package/dist/components/form/radiobox.js.map +1 -0
  100. package/dist/components/form/select.js +106 -0
  101. package/dist/components/form/select.js.map +1 -0
  102. package/dist/components/form/switch.js +65 -0
  103. package/dist/components/form/switch.js.map +1 -0
  104. package/dist/components/form/task-list.js +68 -0
  105. package/dist/components/form/task-list.js.map +1 -0
  106. package/dist/components/form/transfer-list.js +55 -0
  107. package/dist/components/form/transfer-list.js.map +1 -0
  108. package/dist/components/page-calendar/calendar-header.d.ts.map +1 -1
  109. package/dist/components/table/table.js +10 -0
  110. package/dist/components/table/table.js.map +1 -0
  111. package/dist/config/context.d.ts +2 -0
  112. package/dist/config/context.d.ts.map +1 -1
  113. package/dist/constants-r-AHn273.js +6 -0
  114. package/dist/constants-r-AHn273.js.map +1 -0
  115. package/dist/context-BFXNJVn2.js +161 -0
  116. package/dist/context-BFXNJVn2.js.map +1 -0
  117. package/dist/date-picker-DwNo22lx.js +1626 -0
  118. package/dist/date-picker-DwNo22lx.js.map +1 -0
  119. package/dist/dom-Dl8XH0CK.js +2833 -0
  120. package/dist/dom-Dl8XH0CK.js.map +1 -0
  121. package/dist/file-upload-Brf2NkLr.js +3245 -0
  122. package/dist/file-upload-Brf2NkLr.js.map +1 -0
  123. package/dist/floating-ui.react-QNHG9W4N.js +3706 -0
  124. package/dist/floating-ui.react-QNHG9W4N.js.map +1 -0
  125. package/dist/fns-D2eyJKd5.js +33 -0
  126. package/dist/fns-D2eyJKd5.js.map +1 -0
  127. package/dist/hooks/use-components-provider.d.ts.map +1 -1
  128. package/dist/index-0YMC-_Lt.js +20 -0
  129. package/dist/index-0YMC-_Lt.js.map +1 -0
  130. package/dist/index-BelDtX5M.js +1821 -0
  131. package/dist/index-BelDtX5M.js.map +1 -0
  132. package/dist/index-C-PuFUZi.js +3416 -0
  133. package/dist/index-C-PuFUZi.js.map +1 -0
  134. package/dist/index-DJSMaZR4.js +35 -0
  135. package/dist/index-DJSMaZR4.js.map +1 -0
  136. package/dist/index-Z-fZHxfJ.js +335 -0
  137. package/dist/index-Z-fZHxfJ.js.map +1 -0
  138. package/dist/index-t1qLJTt5.js +351 -0
  139. package/dist/index-t1qLJTt5.js.map +1 -0
  140. package/dist/index.esm-BaIwleSE.js +343 -0
  141. package/dist/index.esm-BaIwleSE.js.map +1 -0
  142. package/dist/index.js +8125 -27
  143. package/dist/index.js.map +1 -1
  144. package/dist/input-CrGrSnUt.js +441 -0
  145. package/dist/input-CrGrSnUt.js.map +1 -0
  146. package/dist/input-field-5vYcz5tT.js +166 -0
  147. package/dist/input-field-5vYcz5tT.js.map +1 -0
  148. package/dist/notifications-cUdVPs-B.js +2786 -0
  149. package/dist/notifications-cUdVPs-B.js.map +1 -0
  150. package/dist/polymorph-B5n9fs_K.js +10 -0
  151. package/dist/polymorph-B5n9fs_K.js.map +1 -0
  152. package/dist/proxy-BZcQiBrp.js +2495 -0
  153. package/dist/proxy-BZcQiBrp.js.map +1 -0
  154. package/dist/skeleton-D75GFBV6.js +10 -0
  155. package/dist/skeleton-D75GFBV6.js.map +1 -0
  156. package/dist/slot-CRyweuj0.js +79 -0
  157. package/dist/slot-CRyweuj0.js.map +1 -0
  158. package/dist/styles/common.js +29 -0
  159. package/dist/styles/dark.js +214 -0
  160. package/dist/styles/design-tokens.js +98 -0
  161. package/dist/styles/light.js +214 -0
  162. package/dist/styles/theme.js +4 -0
  163. package/dist/styles/theme.types.js +1 -0
  164. package/dist/tabs-S00a8qq8.js +106 -0
  165. package/dist/tabs-S00a8qq8.js.map +1 -0
  166. package/dist/use-motion-value-eGwNuWuw.js +14 -0
  167. package/dist/use-motion-value-eGwNuWuw.js.map +1 -0
  168. package/dist/use-stable-ref-CYh-YkID.js +11 -0
  169. package/dist/use-stable-ref-CYh-YkID.js.map +1 -0
  170. package/dist/use-translations-BwLKTrZv.js +10 -0
  171. package/dist/use-translations-BwLKTrZv.js.map +1 -0
  172. package/package.json +4 -5
  173. package/dist/index.mjs +0 -37108
  174. package/dist/index.mjs.map +0 -1
  175. package/dist/index.umd.js +0 -28
  176. package/dist/index.umd.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ import { DARK_THEME } from "./dark";
2
+ import { LIGHT_THEME } from "./light";
3
+ export var defaultDarkTheme = DARK_THEME;
4
+ export var defaultLightTheme = LIGHT_THEME;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,106 @@
1
+ import { jsx as l, jsxs as g } from "react/jsx-runtime";
2
+ import A, { useState as k, useEffect as u, createContext as p, useRef as C, useContext as N, Fragment as S } from "react";
3
+ import { c as m, I as R } from "./dom-Dl8XH0CK.js";
4
+ import { u as T } from "./use-stable-ref-CYh-YkID.js";
5
+ import { P as q } from "./polymorph-B5n9fs_K.js";
6
+ import { Card as I } from "./components/display/card.js";
7
+ const _ = (t, r) => {
8
+ const [n, a] = k(() => r || t);
9
+ return u(() => {
10
+ a(t);
11
+ }, [t]), [n, a];
12
+ }, h = {
13
+ ArrowLeft: "ArrowLeft",
14
+ ArrowRight: "ArrowRight"
15
+ }, y = p(""), j = (t) => t.hasAttribute("disabled") || t.getAttribute("aria-disabled") === "true", f = (t, r, n) => {
16
+ const a = n === "forward" ? 1 : -1, o = r + a;
17
+ for (let s = o; s >= 0 && s < t.length; s += a) {
18
+ const d = t[s];
19
+ if (!j(d)) return d;
20
+ }
21
+ return n === "backward" ? f(t, t.length - 1, "backward") : f(t, -1, "forward");
22
+ }, w = (t, r) => {
23
+ const n = Array.from(t.querySelectorAll("li")), a = n.findIndex((s) => s.dataset.active === "true");
24
+ if (a === -1) return null;
25
+ const o = f(n, a, r);
26
+ return o === null ? null : (o.querySelector("button")?.focus({ preventScroll: !1 }), o.getAttribute("data-id") || "");
27
+ }, v = {
28
+ [h.ArrowLeft]: (t, r) => w(r, "backward"),
29
+ [h.ArrowRight]: (t, r) => w(r, "forward")
30
+ }, $ = (t) => {
31
+ const [r, n] = _(t.active), a = C(null), o = T(t.onChange);
32
+ u(() => {
33
+ const i = a.current;
34
+ if (i === null) return;
35
+ let e = i.querySelector("li[data-active=true]");
36
+ if (e === null) {
37
+ e = i.querySelector("li[data-id]");
38
+ const c = e.getAttribute("data-id") || "";
39
+ n(c);
40
+ }
41
+ }, [t.active, n]), u(() => {
42
+ o.current && o.current(r);
43
+ }, [o, r]);
44
+ const s = A.Children.toArray(t.children), d = (i) => {
45
+ const e = i.currentTarget;
46
+ n(e.dataset.id || "");
47
+ }, x = (i) => {
48
+ if (a.current === null) return;
49
+ const e = i.key;
50
+ if (R.keyof(v, e)) {
51
+ const c = v[e], b = c(i, a.current);
52
+ if (b === null) return;
53
+ n(b);
54
+ }
55
+ };
56
+ return /* @__PURE__ */ l(y.Provider, { value: r, children: /* @__PURE__ */ l(
57
+ I,
58
+ {
59
+ className: t.className,
60
+ container: m("pt-0 max-w-full w-full min-w-0", t.container),
61
+ header: /* @__PURE__ */ g("header", { className: "relative mb-2 overflow-x-auto", children: [
62
+ /* @__PURE__ */ l("div", { className: "absolute bottom-0 h-[1px] w-full bg-card-border" }),
63
+ /* @__PURE__ */ l("nav", { className: "min-w-0", children: /* @__PURE__ */ l("ul", { onKeyDown: x, ref: a, className: "flex w-0 min-w-full flex-1 justify-start overflow-x-auto", children: s.map((i) => {
64
+ const e = i.props, c = r === e.id;
65
+ return /* @__PURE__ */ l(
66
+ "li",
67
+ {
68
+ "data-id": e.id,
69
+ "data-active": c,
70
+ "aria-disabled": e.disabled,
71
+ className: m(
72
+ "relative w-fit border-b border-transparent transition-all",
73
+ c ? "border-primary font-medium text-primary" : "",
74
+ e.disabled ? "aria-disabled:text-disabled" : ""
75
+ ),
76
+ children: /* @__PURE__ */ l(
77
+ q,
78
+ {
79
+ as: "button",
80
+ type: "button",
81
+ "data-id": e.id,
82
+ "aria-current": "page",
83
+ disabled: e.disabled,
84
+ onClick: e.disabled ? void 0 : d,
85
+ className: "block w-full whitespace-nowrap px-10 py-4 disabled:cursor-not-allowed",
86
+ children: e.title
87
+ }
88
+ )
89
+ },
90
+ `tab-header-${e.id}`
91
+ );
92
+ }) }) })
93
+ ] }),
94
+ children: t.children
95
+ }
96
+ ) });
97
+ }, E = () => N(y), z = (t) => {
98
+ const r = E();
99
+ return /* @__PURE__ */ l(S, { children: t.id === r ? t.children : null });
100
+ };
101
+ export {
102
+ $ as T,
103
+ z as a,
104
+ _ as u
105
+ };
106
+ //# sourceMappingURL=tabs-S00a8qq8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-S00a8qq8.js","sources":["../src/hooks/use-reactive.ts","../src/lib/keyboard-area.ts","../src/components/display/tabs.tsx"],"sourcesContent":["\"use client\";\nimport { useEffect, useState } from \"react\";\n\nexport const useReactive = <T>(t: T, initial?: T) => {\n const [state, setState] = useState(() => (initial ? initial : t));\n useEffect(() => {\n setState(t);\n }, [t]);\n return [state, setState] as const;\n};\n","import React from \"react\";\n\ntype EventKey =\n | \"Backspace\"\n | \"Tab\"\n | \"Enter\"\n | \"Shift\"\n | \"Control\"\n | \"Alt\"\n | \"Pause\"\n | \"CapsLock\"\n | \"Escape\"\n | \"Space\"\n | \"PageUp\"\n | \"PageDown\"\n | \"End\"\n | \"Home\"\n | \"ArrowLeft\"\n | \"ArrowUp\"\n | \"ArrowRight\"\n | \"ArrowDown\"\n | \"PrintScreen\"\n | \"Insert\"\n | \"Delete\"\n | \"0\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"7\"\n | \"8\"\n | \"9\"\n | \"a\"\n | \"b\"\n | \"c\"\n | \"d\"\n | \"e\"\n | \"f\"\n | \"g\"\n | \"h\"\n | \"i\"\n | \"j\"\n | \"k\"\n | \"l\"\n | \"m\"\n | \"n\"\n | \"o\"\n | \"p\"\n | \"q\"\n | \"r\"\n | \"s\"\n | \"t\"\n | \"u\"\n | \"v\"\n | \"w\"\n | \"x\"\n | \"y\"\n | \"z\"\n | \"Meta\"\n | \"ContextMenu\"\n | \"F1\"\n | \"F2\"\n | \"F3\"\n | \"F4\"\n | \"F5\"\n | \"F6\"\n | \"F7\"\n | \"F8\"\n | \"F9\"\n | \"F10\"\n | \"F11\"\n | \"F12\"\n | \"NumLock\"\n | \"ScrollLock\"\n | \"AudioVolumeMute\"\n | \"AudioVolumeUp\"\n | \"AudioVolumeDown\"\n | \"MediaTrackNext\"\n | \"MediaTrackPrevious\"\n | \"MediaStop\"\n | \"MediaPlayPause\"\n | \"LaunchMail\"\n | \"LaunchMediaPlayer\"\n | \"LaunchApplication1\"\n | \"LaunchApplication2\"\n | \"Semicolon\"\n | \"Equal\"\n | \"Comma\"\n | \"Minus\"\n | \"Period\"\n | \"Slash\"\n | \"Backquote\"\n | \"BracketLeft\"\n | \"Backslash\"\n | \"BracketRight\"\n | \"Quote\";\n\nexport const keyboardKeys = {\n ArrowUp: \"ArrowUp\",\n ArrowDown: \"ArrowDown\",\n ArrowLeft: \"ArrowLeft\",\n ArrowRight: \"ArrowRight\",\n} as const;\n\ntype Callback<T extends HTMLElement = HTMLElement> = (e: KeyboardEvent | React.KeyboardEvent<T>) => void;\n\nexport class KeyboardArea<T extends HTMLElement> {\n private set = new Set();\n\n public key(key: EventKey, callback: Callback<T>) {\n const fn: Callback<T> = (e) => (e.key === key ? callback(e) : undefined);\n return () => this.set.delete(fn);\n }\n\n public onKeyDown(_: Callback<T>) {}\n}\n","\"use client\";\nimport React, { createContext, Fragment, PropsWithChildren, useContext, useEffect, useRef } from \"react\";\nimport { Is, Nullable } from \"sidekicker\";\nimport { useReactive } from \"../../hooks/use-reactive\";\nimport { useStableRef } from \"../../hooks/use-stable-ref\";\nimport { css } from \"../../lib/dom\";\nimport { keyboardKeys } from \"../../lib/keyboard-area\";\nimport { Label } from \"../../types\";\nimport { Polymorph } from \"../core/polymorph\";\nimport { Card, CardProps } from \"./card\";\n\nexport type TabsProps = Omit<CardProps<\"div\">, \"onChange\"> & {\n active: string;\n container?: string;\n className?: string;\n onChange?: (id: string) => void;\n};\n\nconst Context = createContext<string>(\"\");\n\nconst isElementDisabled = (element: HTMLElement): boolean => element.hasAttribute(\"disabled\") || element.getAttribute(\"aria-disabled\") === \"true\";\n\nconst getNElement = (elements: HTMLElement[], currentIndex: number, direction: \"backward\" | \"forward\"): HTMLElement | null => {\n const step = direction === \"forward\" ? 1 : -1;\n const startIndex = currentIndex + step;\n for (let i = startIndex; i >= 0 && i < elements.length; i += step) {\n const element = elements[i];\n if (!isElementDisabled(element)) return element;\n }\n return direction === \"backward\" ? getNElement(elements, elements.length - 1, \"backward\") : getNElement(elements, -1, \"forward\");\n};\n\nconst moveOn = (ul: HTMLUListElement, direction: \"backward\" | \"forward\") => {\n const items = Array.from(ul.querySelectorAll(\"li\"));\n const find = items.findIndex((x) => x.dataset.active === \"true\");\n if (find === -1) return null;\n const item = getNElement(items, find, direction);\n if (item === null) return null;\n item.querySelector(\"button\")?.focus({ preventScroll: false });\n return item.getAttribute(\"data-id\") || \"\";\n};\n\nconst actionKeys = {\n [keyboardKeys.ArrowLeft]: (_: unknown, ul: HTMLUListElement): Nullable<string> => moveOn(ul, \"backward\"),\n [keyboardKeys.ArrowRight]: (_: unknown, ul: HTMLUListElement): Nullable<string> => moveOn(ul, \"forward\"),\n};\n\nexport const Tabs = (props: PropsWithChildren<TabsProps>) => {\n const [active, setActive] = useReactive(props.active);\n const ref = useRef<HTMLUListElement | null>(null);\n const onChangeRef = useStableRef(props.onChange);\n\n useEffect(() => {\n const header = ref.current;\n if (header === null) return;\n let first = header.querySelector<HTMLElement>(`li[data-active=true]`);\n if (first === null) {\n first = header.querySelector<HTMLElement>(`li[data-id]`)!;\n const id = first.getAttribute(\"data-id\") || \"\";\n setActive(id);\n }\n }, [props.active, setActive]);\n\n useEffect(() => {\n if (onChangeRef.current) onChangeRef.current(active);\n }, [onChangeRef, active]);\n\n const items = React.Children.toArray(props.children as React.ReactElement<TabProps>);\n\n const onClick = (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => {\n const anchor = e.currentTarget;\n setActive(anchor.dataset.id || \"\");\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLUListElement>) => {\n if (ref.current === null) return;\n const k = e.key;\n if (Is.keyof(actionKeys, k)) {\n const fn = actionKeys[k];\n const result = fn(e, ref.current);\n if (result === null) return;\n setActive(result);\n }\n };\n\n return (\n <Context.Provider value={active}>\n <Card\n className={props.className}\n container={css(\"pt-0 max-w-full w-full min-w-0\", props.container)}\n header={\n <header className=\"relative mb-2 overflow-x-auto\">\n <div className=\"absolute bottom-0 h-[1px] w-full bg-card-border\" />\n <nav className=\"min-w-0\">\n <ul onKeyDown={onKeyDown} ref={ref} className=\"flex w-0 min-w-full flex-1 justify-start overflow-x-auto\">\n {items.map((x: any) => {\n const inner = x.props as TabProps;\n const current = active === inner.id;\n return (\n <li\n data-id={inner.id}\n data-active={current}\n key={`tab-header-${inner.id}`}\n aria-disabled={inner.disabled}\n className={css(\n \"relative w-fit border-b border-transparent transition-all\",\n current ? \"border-primary font-medium text-primary\" : \"\",\n inner.disabled ? \"aria-disabled:text-disabled\" : \"\"\n )}\n >\n <Polymorph\n as=\"button\"\n type=\"button\"\n data-id={inner.id}\n aria-current=\"page\"\n disabled={inner.disabled}\n onClick={inner.disabled ? undefined : onClick}\n className=\"block w-full whitespace-nowrap px-10 py-4 disabled:cursor-not-allowed\"\n >\n {inner.title as any}\n </Polymorph>\n </li>\n );\n })}\n </ul>\n </nav>\n </header>\n }\n >\n {props.children}\n </Card>\n </Context.Provider>\n );\n};\n\nconst useTabs = () => useContext(Context);\n\ntype CommonTabProps = { id: string; disabled?: boolean };\n\nexport type TabProps = CommonTabProps &\n (\n | { title: string; label?: undefined }\n | {\n label: string;\n title: Omit<Label, string>;\n }\n );\n\nexport const Tab = (props: PropsWithChildren<TabProps>) => {\n const active = useTabs();\n return <Fragment>{props.id === active ? props.children : null}</Fragment>;\n};\n"],"names":["useReactive","initial","state","setState","useState","useEffect","keyboardKeys","Context","createContext","isElementDisabled","element","getNElement","elements","currentIndex","direction","step","startIndex","i","moveOn","ul","items","find","x","item","actionKeys","_","Tabs","props","active","setActive","ref","useRef","onChangeRef","useStableRef","header","first","id","React","onClick","e","anchor","onKeyDown","k","Is","fn","result","jsx","Card","css","jsxs","inner","current","Polymorph","useTabs","useContext","Tab","Fragment"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { useContext as n, useState as u, useEffect as a } from "react";
2
+ import { u as c, y as f, M as i } from "./MotionConfigContext-C7MqlSdv.js";
3
+ function C(t) {
4
+ const o = c(() => f(t)), { isStatic: e } = n(i);
5
+ if (e) {
6
+ const [, s] = u(t);
7
+ a(() => o.on("change", s), []);
8
+ }
9
+ return o;
10
+ }
11
+ export {
12
+ C as u
13
+ };
14
+ //# sourceMappingURL=use-motion-value-eGwNuWuw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-motion-value-eGwNuWuw.js","sources":["../node_modules/framer-motion/dist/es/value/use-motion-value.mjs"],"sourcesContent":["\"use client\";\nimport { motionValue } from 'motion-dom';\nimport { useContext, useState, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\n\n/**\n * Creates a `MotionValue` to track the state and velocity of a value.\n *\n * Usually, these are created automatically. For advanced use-cases, like use with `useTransform`, you can create `MotionValue`s externally and pass them into the animated component via the `style` prop.\n *\n * ```jsx\n * export const MyComponent = () => {\n * const scale = useMotionValue(1)\n *\n * return <motion.div style={{ scale }} />\n * }\n * ```\n *\n * @param initial - The initial state.\n *\n * @public\n */\nfunction useMotionValue(initial) {\n const value = useConstant(() => motionValue(initial));\n /**\n * If this motion value is being used in static mode, like on\n * the Framer canvas, force components to rerender when the motion\n * value is updated.\n */\n const { isStatic } = useContext(MotionConfigContext);\n if (isStatic) {\n const [, setLatest] = useState(initial);\n useEffect(() => value.on(\"change\", setLatest), []);\n }\n return value;\n}\n\nexport { useMotionValue };\n//# sourceMappingURL=use-motion-value.mjs.map\n"],"names":["useMotionValue","initial","value","useConstant","motionValue","isStatic","useContext","MotionConfigContext","setLatest","useState","useEffect"],"mappings":";;AAuBA,SAASA,EAAeC,GAAS;AAC7B,QAAMC,IAAQC,EAAY,MAAMC,EAAYH,CAAO,CAAC,GAM9C,EAAE,UAAAI,EAAQ,IAAKC,EAAWC,CAAmB;AACnD,MAAIF,GAAU;AACV,UAAM,GAAGG,CAAS,IAAIC,EAASR,CAAO;AACtC,IAAAS,EAAU,MAAMR,EAAM,GAAG,UAAUM,CAAS,GAAG,EAAE;AAAA,EACzD;AACI,SAAON;AACX;","x_google_ignoreList":[0]}
@@ -0,0 +1,11 @@
1
+ import { useRef as t, useEffect as f } from "react";
2
+ const o = (e) => {
3
+ const r = t(e);
4
+ return f(() => {
5
+ r.current = e;
6
+ }, [e]), r;
7
+ };
8
+ export {
9
+ o as u
10
+ };
11
+ //# sourceMappingURL=use-stable-ref-CYh-YkID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stable-ref-CYh-YkID.js","sources":["../src/hooks/use-stable-ref.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useStableRef = <T>(value: T) => {\n const ref = useRef<T>(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref;\n};\n"],"names":["useStableRef","value","ref","useRef","useEffect"],"mappings":";AAGO,MAAMA,IAAe,CAAIC,MAAa;AACzC,QAAMC,IAAMC,EAAUF,CAAK;AAE3B,SAAAG,EAAU,MAAM;AACZ,IAAAF,EAAI,UAAUD;AAAA,EAAA,GACf,CAACA,CAAK,CAAC,GAEHC;AACX;"}
@@ -0,0 +1,10 @@
1
+ import { useContext as o } from "react";
2
+ import { C as r, d as s } from "./context-BFXNJVn2.js";
3
+ const e = () => {
4
+ const t = o(r);
5
+ return t ? t.map : s;
6
+ };
7
+ export {
8
+ e as u
9
+ };
10
+ //# sourceMappingURL=use-translations-BwLKTrZv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-translations-BwLKTrZv.js","sources":["../src/hooks/use-translations.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { Context } from \"../config/context\";\nimport { defaultTranslations } from \"../config/default-translations\";\n\nexport const useTranslations = () => {\n const ctx = useContext(Context);\n if (!ctx) return defaultTranslations;\n return ctx.map!;\n};\n"],"names":["useTranslations","ctx","useContext","Context","defaultTranslations"],"mappings":";;AAIO,MAAMA,IAAkB,MAAM;AACjC,QAAMC,IAAMC,EAAWC,CAAO;AAC9B,SAAKF,IACEA,EAAI,MADMG;AAErB;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g4rcez/components",
3
3
  "description": "Customizable react components.",
4
- "version": "3.0.1",
4
+ "version": "4.0.0",
5
5
  "sideEffects": false,
6
6
  "private": false,
7
7
  "packageManager": "pnpm@10.12.3",
@@ -29,7 +29,7 @@
29
29
  "lib:css": "BUILD_LIB=true tailwind -i ./src/index.css -o ./dist/index.css --minify",
30
30
  "lib:tailwind": "tsc -p tsconfig.tailwind.json",
31
31
  "lib:types": "tsc -p tsconfig.lib.json",
32
- "preset": "tsc -p tsconfig.tailwind.json",
32
+ "preset": "tsc -p tsconfig.styles.json && tsc -p tsconfig.tailwind.json",
33
33
  "test": "vitest run",
34
34
  "test:watch": "vitest watch"
35
35
  },
@@ -40,11 +40,11 @@
40
40
  "dependencies": {
41
41
  "@base-ui/react": "1.2.0",
42
42
  "@floating-ui/react": "0.27.18",
43
+ "@phosphor-icons/react": "2.1.10",
43
44
  "class-variance-authority": "0.7.1",
44
45
  "clsx": "2.1.1",
45
46
  "date-fns": "4.1.0",
46
47
  "linq-arrays": "3.2.5",
47
- "lucide-react": "0.575.0",
48
48
  "motion": "12.34.3",
49
49
  "pretty-bytes": "7.1.0",
50
50
  "qs": "6.15.0",
@@ -87,8 +87,7 @@
87
87
  },
88
88
  "source": "./src/index.ts",
89
89
  "types": "./dist/index.d.ts",
90
- "main": "./dist/index.mjs",
91
- "browser": "./dist/index.umd.js",
90
+ "main": "./dist/index.js",
92
91
  "module": "./dist/index.js",
93
92
  "files": [
94
93
  "dist",