@aback-ui/ui 0.0.0-stage → 0.2.1

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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -2
  3. package/dist/components/accordion.d.ts +8 -0
  4. package/dist/components/accordion.d.ts.map +1 -0
  5. package/dist/components/accordion.js +17 -0
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/alert-dialog.d.ts +15 -0
  8. package/dist/components/alert-dialog.d.ts.map +1 -0
  9. package/dist/components/alert-dialog.js +38 -0
  10. package/dist/components/alert-dialog.js.map +1 -0
  11. package/dist/components/alert.d.ts +12 -0
  12. package/dist/components/alert.d.ts.map +1 -0
  13. package/dist/components/alert.js +28 -0
  14. package/dist/components/alert.js.map +1 -0
  15. package/dist/components/avatar.d.ts +25 -0
  16. package/dist/components/avatar.d.ts.map +1 -0
  17. package/dist/components/avatar.js +34 -0
  18. package/dist/components/avatar.js.map +1 -0
  19. package/dist/components/badge.d.ts +15 -0
  20. package/dist/components/badge.d.ts.map +1 -0
  21. package/dist/components/badge.js +27 -0
  22. package/dist/components/badge.js.map +1 -0
  23. package/dist/components/breadcrumbs.d.ts +11 -0
  24. package/dist/components/breadcrumbs.d.ts.map +1 -0
  25. package/dist/components/breadcrumbs.js +11 -0
  26. package/dist/components/breadcrumbs.js.map +1 -0
  27. package/dist/components/button.d.ts +12 -0
  28. package/dist/components/button.d.ts.map +1 -0
  29. package/dist/components/button.js +43 -0
  30. package/dist/components/button.js.map +1 -0
  31. package/dist/components/calendar.d.ts +25 -0
  32. package/dist/components/calendar.d.ts.map +1 -0
  33. package/dist/components/calendar.js +87 -0
  34. package/dist/components/calendar.js.map +1 -0
  35. package/dist/components/card.d.ts +12 -0
  36. package/dist/components/card.d.ts.map +1 -0
  37. package/dist/components/card.js +25 -0
  38. package/dist/components/card.js.map +1 -0
  39. package/dist/components/checkbox.d.ts +5 -0
  40. package/dist/components/checkbox.d.ts.map +1 -0
  41. package/dist/components/checkbox.js +10 -0
  42. package/dist/components/checkbox.js.map +1 -0
  43. package/dist/components/code-block.d.ts +25 -0
  44. package/dist/components/code-block.d.ts.map +1 -0
  45. package/dist/components/code-block.js +19 -0
  46. package/dist/components/code-block.js.map +1 -0
  47. package/dist/components/collapsible.d.ts +7 -0
  48. package/dist/components/collapsible.d.ts.map +1 -0
  49. package/dist/components/collapsible.js +11 -0
  50. package/dist/components/collapsible.js.map +1 -0
  51. package/dist/components/combobox.d.ts +40 -0
  52. package/dist/components/combobox.d.ts.map +1 -0
  53. package/dist/components/combobox.js +27 -0
  54. package/dist/components/combobox.js.map +1 -0
  55. package/dist/components/command.d.ts +24 -0
  56. package/dist/components/command.d.ts.map +1 -0
  57. package/dist/components/command.js +35 -0
  58. package/dist/components/command.js.map +1 -0
  59. package/dist/components/copy-button.d.ts +32 -0
  60. package/dist/components/copy-button.d.ts.map +1 -0
  61. package/dist/components/copy-button.js +65 -0
  62. package/dist/components/copy-button.js.map +1 -0
  63. package/dist/components/date-picker.d.ts +66 -0
  64. package/dist/components/date-picker.d.ts.map +1 -0
  65. package/dist/components/date-picker.js +75 -0
  66. package/dist/components/date-picker.js.map +1 -0
  67. package/dist/components/description-list.d.ts +29 -0
  68. package/dist/components/description-list.d.ts.map +1 -0
  69. package/dist/components/description-list.js +28 -0
  70. package/dist/components/description-list.js.map +1 -0
  71. package/dist/components/dialog.d.ts +16 -0
  72. package/dist/components/dialog.d.ts.map +1 -0
  73. package/dist/components/dialog.js +29 -0
  74. package/dist/components/dialog.js.map +1 -0
  75. package/dist/components/dropdown-menu.d.ts +26 -0
  76. package/dist/components/dropdown-menu.d.ts.map +1 -0
  77. package/dist/components/dropdown-menu.js +41 -0
  78. package/dist/components/dropdown-menu.js.map +1 -0
  79. package/dist/components/dropzone.d.ts +47 -0
  80. package/dist/components/dropzone.d.ts.map +1 -0
  81. package/dist/components/dropzone.js +125 -0
  82. package/dist/components/dropzone.js.map +1 -0
  83. package/dist/components/empty-state.d.ts +10 -0
  84. package/dist/components/empty-state.d.ts.map +1 -0
  85. package/dist/components/empty-state.js +8 -0
  86. package/dist/components/empty-state.js.map +1 -0
  87. package/dist/components/field.d.ts +17 -0
  88. package/dist/components/field.d.ts.map +1 -0
  89. package/dist/components/field.js +13 -0
  90. package/dist/components/field.js.map +1 -0
  91. package/dist/components/hover-card.d.ts +7 -0
  92. package/dist/components/hover-card.d.ts.map +1 -0
  93. package/dist/components/hover-card.js +11 -0
  94. package/dist/components/hover-card.js.map +1 -0
  95. package/dist/components/input-group.d.ts +26 -0
  96. package/dist/components/input-group.d.ts.map +1 -0
  97. package/dist/components/input-group.js +41 -0
  98. package/dist/components/input-group.js.map +1 -0
  99. package/dist/components/input.d.ts +5 -0
  100. package/dist/components/input.d.ts.map +1 -0
  101. package/dist/components/input.js +19 -0
  102. package/dist/components/input.js.map +1 -0
  103. package/dist/components/kbd.d.ts +4 -0
  104. package/dist/components/kbd.d.ts.map +1 -0
  105. package/dist/components/kbd.js +7 -0
  106. package/dist/components/kbd.js.map +1 -0
  107. package/dist/components/label.d.ts +4 -0
  108. package/dist/components/label.d.ts.map +1 -0
  109. package/dist/components/label.js +9 -0
  110. package/dist/components/label.js.map +1 -0
  111. package/dist/components/layout.d.ts +69 -0
  112. package/dist/components/layout.d.ts.map +1 -0
  113. package/dist/components/layout.js +61 -0
  114. package/dist/components/layout.js.map +1 -0
  115. package/dist/components/page-header.d.ts +20 -0
  116. package/dist/components/page-header.d.ts.map +1 -0
  117. package/dist/components/page-header.js +11 -0
  118. package/dist/components/page-header.js.map +1 -0
  119. package/dist/components/pagination.d.ts +20 -0
  120. package/dist/components/pagination.d.ts.map +1 -0
  121. package/dist/components/pagination.js +51 -0
  122. package/dist/components/pagination.js.map +1 -0
  123. package/dist/components/popover.d.ts +8 -0
  124. package/dist/components/popover.d.ts.map +1 -0
  125. package/dist/components/popover.js +12 -0
  126. package/dist/components/popover.js.map +1 -0
  127. package/dist/components/progress.d.ts +12 -0
  128. package/dist/components/progress.d.ts.map +1 -0
  129. package/dist/components/progress.js +11 -0
  130. package/dist/components/progress.js.map +1 -0
  131. package/dist/components/radio-group.d.ts +6 -0
  132. package/dist/components/radio-group.d.ts.map +1 -0
  133. package/dist/components/radio-group.js +12 -0
  134. package/dist/components/radio-group.js.map +1 -0
  135. package/dist/components/rating.d.ts +33 -0
  136. package/dist/components/rating.d.ts.map +1 -0
  137. package/dist/components/rating.js +52 -0
  138. package/dist/components/rating.js.map +1 -0
  139. package/dist/components/reading-progress.d.ts +16 -0
  140. package/dist/components/reading-progress.d.ts.map +1 -0
  141. package/dist/components/reading-progress.js +54 -0
  142. package/dist/components/reading-progress.js.map +1 -0
  143. package/dist/components/relative-time.d.ts +26 -0
  144. package/dist/components/relative-time.d.ts.map +1 -0
  145. package/dist/components/relative-time.js +83 -0
  146. package/dist/components/relative-time.js.map +1 -0
  147. package/dist/components/scroll-area.d.ts +10 -0
  148. package/dist/components/scroll-area.d.ts.map +1 -0
  149. package/dist/components/scroll-area.js +9 -0
  150. package/dist/components/scroll-area.js.map +1 -0
  151. package/dist/components/section-heading.d.ts +28 -0
  152. package/dist/components/section-heading.d.ts.map +1 -0
  153. package/dist/components/section-heading.js +23 -0
  154. package/dist/components/section-heading.js.map +1 -0
  155. package/dist/components/select.d.ts +5 -0
  156. package/dist/components/select.d.ts.map +1 -0
  157. package/dist/components/select.js +17 -0
  158. package/dist/components/select.js.map +1 -0
  159. package/dist/components/separator.d.ts +5 -0
  160. package/dist/components/separator.d.ts.map +1 -0
  161. package/dist/components/separator.js +9 -0
  162. package/dist/components/separator.js.map +1 -0
  163. package/dist/components/share-buttons.d.ts +25 -0
  164. package/dist/components/share-buttons.d.ts.map +1 -0
  165. package/dist/components/share-buttons.js +67 -0
  166. package/dist/components/share-buttons.js.map +1 -0
  167. package/dist/components/sheet.d.ts +18 -0
  168. package/dist/components/sheet.d.ts.map +1 -0
  169. package/dist/components/sheet.js +35 -0
  170. package/dist/components/sheet.js.map +1 -0
  171. package/dist/components/skeleton.d.ts +4 -0
  172. package/dist/components/skeleton.d.ts.map +1 -0
  173. package/dist/components/skeleton.js +7 -0
  174. package/dist/components/skeleton.js.map +1 -0
  175. package/dist/components/skip-link.d.ts +13 -0
  176. package/dist/components/skip-link.d.ts.map +1 -0
  177. package/dist/components/skip-link.js +12 -0
  178. package/dist/components/skip-link.js.map +1 -0
  179. package/dist/components/slider.d.ts +9 -0
  180. package/dist/components/slider.d.ts.map +1 -0
  181. package/dist/components/slider.js +9 -0
  182. package/dist/components/slider.js.map +1 -0
  183. package/dist/components/spinner.d.ts +14 -0
  184. package/dist/components/spinner.d.ts.map +1 -0
  185. package/dist/components/spinner.js +13 -0
  186. package/dist/components/spinner.js.map +1 -0
  187. package/dist/components/stat.d.ts +54 -0
  188. package/dist/components/stat.d.ts.map +1 -0
  189. package/dist/components/stat.js +62 -0
  190. package/dist/components/stat.js.map +1 -0
  191. package/dist/components/steps.d.ts +21 -0
  192. package/dist/components/steps.d.ts.map +1 -0
  193. package/dist/components/steps.js +26 -0
  194. package/dist/components/steps.js.map +1 -0
  195. package/dist/components/switch.d.ts +5 -0
  196. package/dist/components/switch.d.ts.map +1 -0
  197. package/dist/components/switch.js +9 -0
  198. package/dist/components/switch.js.map +1 -0
  199. package/dist/components/table-of-contents.d.ts +28 -0
  200. package/dist/components/table-of-contents.d.ts.map +1 -0
  201. package/dist/components/table-of-contents.js +79 -0
  202. package/dist/components/table-of-contents.js.map +1 -0
  203. package/dist/components/table.d.ts +15 -0
  204. package/dist/components/table.d.ts.map +1 -0
  205. package/dist/components/table.js +29 -0
  206. package/dist/components/table.js.map +1 -0
  207. package/dist/components/tabs.d.ts +8 -0
  208. package/dist/components/tabs.d.ts.map +1 -0
  209. package/dist/components/tabs.js +16 -0
  210. package/dist/components/tabs.js.map +1 -0
  211. package/dist/components/textarea.d.ts +5 -0
  212. package/dist/components/textarea.d.ts.map +1 -0
  213. package/dist/components/textarea.js +18 -0
  214. package/dist/components/textarea.js.map +1 -0
  215. package/dist/components/theme-toggle.d.ts +43 -0
  216. package/dist/components/theme-toggle.d.ts.map +1 -0
  217. package/dist/components/theme-toggle.js +99 -0
  218. package/dist/components/theme-toggle.js.map +1 -0
  219. package/dist/components/toaster.d.ts +27 -0
  220. package/dist/components/toaster.d.ts.map +1 -0
  221. package/dist/components/toaster.js +52 -0
  222. package/dist/components/toaster.js.map +1 -0
  223. package/dist/components/toggle-group.d.ts +12 -0
  224. package/dist/components/toggle-group.d.ts.map +1 -0
  225. package/dist/components/toggle-group.js +39 -0
  226. package/dist/components/toggle-group.js.map +1 -0
  227. package/dist/components/tooltip.d.ts +10 -0
  228. package/dist/components/tooltip.d.ts.map +1 -0
  229. package/dist/components/tooltip.js +14 -0
  230. package/dist/components/tooltip.js.map +1 -0
  231. package/dist/index.d.ts +59 -0
  232. package/dist/index.d.ts.map +1 -0
  233. package/dist/index.js +59 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/lib/utils.d.ts +3 -0
  236. package/dist/lib/utils.d.ts.map +1 -0
  237. package/dist/lib/utils.js +6 -0
  238. package/dist/lib/utils.js.map +1 -0
  239. package/package.json +76 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,iBAAiB,GAAG;IACxB,wGAAwG;IACxG,uFAAuF;IACvF,mCAAmC;IACnC,+IAA+I;IAC/I,iDAAiD;IACjD,kEAAkE;IAClE,kBAAkB;CACnB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC9C,OAAO,CACL,mBACE,GAAG,EAAE,GAAG,eACE,UAAU,EACpB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KACvC,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,43 @@
1
+ import * as React from "react";
2
+ import { type ButtonProps } from "./button.js";
3
+ export type ThemePreference = "light" | "dark" | "system";
4
+ export type ResolvedTheme = "light" | "dark";
5
+ export interface UseThemeResult {
6
+ /** What the visitor chose, including "system". */
7
+ theme: ThemePreference;
8
+ /** What is on screen. "light" during the server render. */
9
+ resolvedTheme: ResolvedTheme;
10
+ setTheme: (theme: ThemePreference) => void;
11
+ }
12
+ /**
13
+ * Reads and writes the colour theme. The contract is the one the Aback theme
14
+ * CSS expects: a `dark` class on `<html>`, with the choice stored under
15
+ * `storageKey`. Every component using the hook stays in sync, and so do
16
+ * other tabs.
17
+ */
18
+ declare function useTheme(storageKey?: string): UseThemeResult;
19
+ export interface ThemeToggleProps extends Omit<ButtonProps, "onClick" | "children" | "asChild"> {
20
+ storageKey?: string;
21
+ /** Accessible name while the light theme is showing. */
22
+ toDarkLabel?: string;
23
+ /** Accessible name while the dark theme is showing. */
24
+ toLightLabel?: string;
25
+ }
26
+ /**
27
+ * A light and dark switch. The icon follows the `dark` class through CSS, so
28
+ * it is right before hydration; the accessible name follows the state.
29
+ */
30
+ declare function ThemeToggle({ storageKey, toDarkLabel, toLightLabel, variant, size, className, ...props }: ThemeToggleProps): React.JSX.Element;
31
+ export interface ThemeScriptProps {
32
+ storageKey?: string;
33
+ /** Content Security Policy nonce for the inline script. */
34
+ nonce?: string;
35
+ }
36
+ /**
37
+ * Applies the stored theme before the first paint, so a dark-mode visitor
38
+ * never sees a white flash. Render it in `<head>`, or first in `<body>`, and
39
+ * add `suppressHydrationWarning` to `<html>` because the class changes early.
40
+ */
41
+ declare function ThemeScript({ storageKey, nonce }: ThemeScriptProps): React.JSX.Element;
42
+ export { ThemeScript, ThemeToggle, useTheme };
43
+ //# sourceMappingURL=theme-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../src/components/theme-toggle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAoD7C,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,KAAK,EAAE,eAAe,CAAC;IACvB,2DAA2D;IAC3D,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,iBAAS,QAAQ,CAAC,UAAU,GAAE,MAA4B,GAAG,cAAc,CA8B1E;AAED,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,iBAAS,WAAW,CAAC,EACnB,UAAU,EACV,WAAoC,EACpC,YAAsC,EACtC,OAAiB,EACjB,IAAa,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAoBlB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,iBAAS,WAAW,CAAC,EAAE,UAAgC,EAAE,KAAK,EAAE,EAAE,gBAAgB,qBAKjF;AAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { IconMoon, IconSun } from "@tabler/icons-react";
5
+ import { cn } from "../lib/utils.js";
6
+ import { Button } from "./button.js";
7
+ const DEFAULT_STORAGE_KEY = "theme";
8
+ const CHANGE_EVENT = "aback-ui:themechange";
9
+ function readPreference(storageKey) {
10
+ try {
11
+ const stored = window.localStorage.getItem(storageKey);
12
+ if (stored === "light" || stored === "dark" || stored === "system")
13
+ return stored;
14
+ }
15
+ catch {
16
+ // Storage throws in some privacy modes and sandboxed frames.
17
+ }
18
+ return "system";
19
+ }
20
+ function systemTheme() {
21
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
22
+ }
23
+ function resolve(preference) {
24
+ return preference === "system" ? systemTheme() : preference;
25
+ }
26
+ function applyTheme(theme) {
27
+ document.documentElement.classList.toggle("dark", theme === "dark");
28
+ }
29
+ function subscribe(storageKey, onChange) {
30
+ const media = window.matchMedia("(prefers-color-scheme: dark)");
31
+ function onSystemChange() {
32
+ if (readPreference(storageKey) !== "system")
33
+ return;
34
+ applyTheme(systemTheme());
35
+ onChange();
36
+ }
37
+ function onStorage(event) {
38
+ if (event.key !== storageKey)
39
+ return;
40
+ applyTheme(resolve(readPreference(storageKey)));
41
+ onChange();
42
+ }
43
+ media.addEventListener("change", onSystemChange);
44
+ window.addEventListener("storage", onStorage);
45
+ window.addEventListener(CHANGE_EVENT, onChange);
46
+ return () => {
47
+ media.removeEventListener("change", onSystemChange);
48
+ window.removeEventListener("storage", onStorage);
49
+ window.removeEventListener(CHANGE_EVENT, onChange);
50
+ };
51
+ }
52
+ /**
53
+ * Reads and writes the colour theme. The contract is the one the Aback theme
54
+ * CSS expects: a `dark` class on `<html>`, with the choice stored under
55
+ * `storageKey`. Every component using the hook stays in sync, and so do
56
+ * other tabs.
57
+ */
58
+ function useTheme(storageKey = DEFAULT_STORAGE_KEY) {
59
+ const subscribeToTheme = React.useCallback((onChange) => subscribe(storageKey, onChange), [storageKey]);
60
+ // A string snapshot keeps the value primitive, so React can compare it.
61
+ const snapshot = React.useSyncExternalStore(subscribeToTheme, () => {
62
+ const preference = readPreference(storageKey);
63
+ return `${preference}:${document.documentElement.classList.contains("dark") ? "dark" : "light"}`;
64
+ }, () => "system:light");
65
+ const [theme, resolvedTheme] = snapshot.split(":");
66
+ const setTheme = React.useCallback((next) => {
67
+ try {
68
+ window.localStorage.setItem(storageKey, next);
69
+ }
70
+ catch {
71
+ // Not persisted, but the theme still changes for this page view.
72
+ }
73
+ applyTheme(resolve(next));
74
+ window.dispatchEvent(new Event(CHANGE_EVENT));
75
+ }, [storageKey]);
76
+ return { theme, resolvedTheme, setTheme };
77
+ }
78
+ /**
79
+ * A light and dark switch. The icon follows the `dark` class through CSS, so
80
+ * it is right before hydration; the accessible name follows the state.
81
+ */
82
+ function ThemeToggle({ storageKey, toDarkLabel = "Switch to dark theme", toLightLabel = "Switch to light theme", variant = "ghost", size = "icon", className, ...props }) {
83
+ const { resolvedTheme, setTheme } = useTheme(storageKey);
84
+ const label = resolvedTheme === "dark" ? toLightLabel : toDarkLabel;
85
+ return (_jsxs(Button, { type: "button", "data-slot": "theme-toggle", variant: variant, size: size, "aria-label": label, title: label, onClick: () => setTheme(resolvedTheme === "dark" ? "light" : "dark"), className: cn(className), ...props, children: [_jsx(IconMoon, { "aria-hidden": "true", className: "dark:hidden" }), _jsx(IconSun, { "aria-hidden": "true", className: "hidden dark:block" })] }));
86
+ }
87
+ /**
88
+ * Applies the stored theme before the first paint, so a dark-mode visitor
89
+ * never sees a white flash. Render it in `<head>`, or first in `<body>`, and
90
+ * add `suppressHydrationWarning` to `<html>` because the class changes early.
91
+ */
92
+ function ThemeScript({ storageKey = DEFAULT_STORAGE_KEY, nonce }) {
93
+ // JSON.stringify quotes the key, and the escape keeps it inside the script.
94
+ const key = JSON.stringify(storageKey).replace(/</g, "\\u003c");
95
+ const code = `(function(){try{var t=localStorage.getItem(${key});var d=t==="dark"||((!t||t==="system")&&window.matchMedia("(prefers-color-scheme: dark)").matches);document.documentElement.classList.toggle("dark",d);}catch(e){}})();`;
96
+ return _jsx("script", { nonce: nonce, dangerouslySetInnerHTML: { __html: code } });
97
+ }
98
+ export { ThemeScript, ThemeToggle, useTheme };
99
+ //# sourceMappingURL=theme-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.js","sourceRoot":"","sources":["../../src/components/theme-toggle.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { toast, type ToasterProps as SonnerToasterProps } from "sonner";
2
+ /**
3
+ * The toast surface.
4
+ *
5
+ * `Toaster` is the Aback presentation of sonner: the same toast API the rest of
6
+ * the ecosystem uses, drawn with the design tokens instead of sonner's own
7
+ * palette. Mount it once near the root of the app, then call `toast()` from
8
+ * anywhere — including event handlers and non-React modules.
9
+ *
10
+ * The status colours are read from the token layer, so a toast, an `Alert`, and
11
+ * a `Badge` in the same viewport are the same green or red. The normal toast is
12
+ * a popover surface, not a signal. The shape is square, like every other Aback
13
+ * surface.
14
+ *
15
+ * Toasts are supplementary: a message that must be seen belongs inline, next to
16
+ * the thing it is about. Use a toast when the failure has no natural home on the
17
+ * page (an optimistic background mutation) or to confirm an action whose result
18
+ * is no longer visible.
19
+ */
20
+ export interface ToasterProps extends Omit<SonnerToasterProps, "className" | "style" | "theme"> {
21
+ /** Force a theme. Defaults to `system`; pass the app's resolved theme when it is class-based. */
22
+ theme?: "light" | "dark" | "system";
23
+ className?: string;
24
+ }
25
+ declare function Toaster({ theme, position, closeButton, richColors, className, toastOptions, ...props }: ToasterProps): import("react").JSX.Element;
26
+ export { Toaster, toast };
27
+ //# sourceMappingURL=toaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,EACL,KAAK,YAAY,IAAI,kBAAkB,EACxC,MAAM,QAAQ,CAAC;AAIhB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IACjE,iGAAiG;IACjG,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+BD,iBAAS,OAAO,CAAC,EACf,KAAgB,EAChB,QAAsB,EACtB,WAAkB,EAClB,UAAiB,EACjB,SAAS,EACT,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,YAAY,+BAkCd;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { IconAlertTriangle, IconCircleCheck, IconCircleX, IconInfoCircle, IconX, } from "@tabler/icons-react";
4
+ import { Toaster as SonnerToaster, toast, } from "sonner";
5
+ import { cn } from "../lib/utils.js";
6
+ const iconProps = { size: 16, stroke: 2, "aria-hidden": true };
7
+ const tokenVariables = {
8
+ // Neutral toast: a popover surface, so it follows the theme.
9
+ "--normal-bg": "var(--popover)",
10
+ "--normal-bg-hover": "var(--muted)",
11
+ "--normal-border": "var(--border)",
12
+ "--normal-border-hover": "var(--separator)",
13
+ "--normal-text": "var(--popover-foreground)",
14
+ // Status toasts: the same soft/strong pairs the Alert uses.
15
+ "--success-bg": "var(--success-soft)",
16
+ "--success-border": "color-mix(in oklab, var(--success) 30%, transparent)",
17
+ "--success-text": "var(--success-strong)",
18
+ "--error-bg": "var(--danger-soft)",
19
+ "--error-border": "color-mix(in oklab, var(--danger) 30%, transparent)",
20
+ "--error-text": "var(--danger-strong)",
21
+ "--warning-bg": "var(--warning-soft)",
22
+ "--warning-border": "color-mix(in oklab, var(--warning) 30%, transparent)",
23
+ "--warning-text": "var(--warning-strong)",
24
+ "--info-bg": "var(--info-soft)",
25
+ "--info-border": "color-mix(in oklab, var(--info) 30%, transparent)",
26
+ "--info-text": "var(--info)",
27
+ // Square everywhere, like the rest of the system.
28
+ "--border-radius": "0px",
29
+ "--width": "22.5rem",
30
+ };
31
+ function Toaster({ theme = "system", position = "top-right", closeButton = true, richColors = true, className, toastOptions, ...props }) {
32
+ return (_jsx(SonnerToaster, { theme: theme, position: position, closeButton: closeButton, richColors: richColors, className: cn("font-sans", className), style: { ...tokenVariables, fontFamily: "var(--font-sans)" }, icons: {
33
+ success: _jsx(IconCircleCheck, { ...iconProps }),
34
+ error: _jsx(IconCircleX, { ...iconProps }),
35
+ warning: _jsx(IconAlertTriangle, { ...iconProps }),
36
+ info: _jsx(IconInfoCircle, { ...iconProps }),
37
+ close: _jsx(IconX, { size: 13, stroke: 2, "aria-hidden": "true" }),
38
+ }, toastOptions: {
39
+ ...toastOptions,
40
+ classNames: {
41
+ toast: "!rounded-none !p-3.5 !gap-2.5",
42
+ title: "!text-sm !font-semibold",
43
+ description: "!text-xs !leading-relaxed",
44
+ actionButton: "!rounded-none !bg-primary !text-primary-foreground !text-xs !font-semibold",
45
+ cancelButton: "!rounded-none !bg-muted !text-foreground !text-xs !font-semibold",
46
+ closeButton: "!rounded-none !border-border !bg-popover !text-muted-foreground hover:!text-foreground",
47
+ ...toastOptions?.classNames,
48
+ },
49
+ }, ...props }));
50
+ }
51
+ export { Toaster, toast };
52
+ //# sourceMappingURL=toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,cAAc,EACd,KAAK,GACN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,GAEN,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AA2BlC,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAW,CAAC;AAExE,MAAM,cAAc,GAAG;IACrB,6DAA6D;IAC7D,aAAa,EAAE,gBAAgB;IAC/B,mBAAmB,EAAE,cAAc;IACnC,iBAAiB,EAAE,eAAe;IAClC,uBAAuB,EAAE,kBAAkB;IAC3C,eAAe,EAAE,2BAA2B;IAE5C,4DAA4D;IAC5D,cAAc,EAAE,qBAAqB;IACrC,kBAAkB,EAAE,sDAAsD;IAC1E,gBAAgB,EAAE,uBAAuB;IACzC,YAAY,EAAE,oBAAoB;IAClC,gBAAgB,EAAE,qDAAqD;IACvE,cAAc,EAAE,sBAAsB;IACtC,cAAc,EAAE,qBAAqB;IACrC,kBAAkB,EAAE,sDAAsD;IAC1E,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,kBAAkB;IAC/B,eAAe,EAAE,mDAAmD;IACpE,aAAa,EAAE,aAAa;IAE5B,kDAAkD;IAClD,iBAAiB,EAAE,KAAK;IACxB,SAAS,EAAE,SAAS;CACE,CAAC;AAEzB,SAAS,OAAO,CAAC,EACf,KAAK,GAAG,QAAQ,EAChB,QAAQ,GAAG,WAAW,EACtB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,IAAI,EACjB,SAAS,EACT,YAAY,EACZ,GAAG,KAAK,EACK;IACb,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAC5D,KAAK,EAAE;YACL,OAAO,EAAE,KAAC,eAAe,OAAK,SAAS,GAAI;YAC3C,KAAK,EAAE,KAAC,WAAW,OAAK,SAAS,GAAI;YACrC,OAAO,EAAE,KAAC,iBAAiB,OAAK,SAAS,GAAI;YAC7C,IAAI,EAAE,KAAC,cAAc,OAAK,SAAS,GAAI;YACvC,KAAK,EAAE,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,iBAAc,MAAM,GAAG;SACzD,EACD,YAAY,EAAE;YACZ,GAAG,YAAY;YACf,UAAU,EAAE;gBACV,KAAK,EAAE,+BAA+B;gBACtC,KAAK,EAAE,yBAAyB;gBAChC,WAAW,EAAE,2BAA2B;gBACxC,YAAY,EACV,4EAA4E;gBAC9E,YAAY,EACV,kEAAkE;gBACpE,WAAW,EACT,wFAAwF;gBAC1F,GAAG,YAAY,EAAE,UAAU;aAC5B;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ declare const toggleGroupItemVariants: (props?: ({
5
+ variant?: "default" | "outline" | null | undefined;
6
+ size?: "sm" | "default" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export type ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleGroupItemVariants>;
9
+ declare function ToggleGroup({ className, variant, size, ...props }: ToggleGroupProps): React.JSX.Element;
10
+ declare function ToggleGroupItem({ className, variant, size, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleGroupItemVariants>): React.JSX.Element;
11
+ export { ToggleGroup, ToggleGroupItem, toggleGroupItemVariants };
12
+ //# sourceMappingURL=toggle-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../src/components/toggle-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,uBAAuB;;;8EA0B5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACnF,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAM/C,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAalB;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAQ7C;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../lib/utils.js";
6
+ const toggleGroupItemVariants = cva([
7
+ "inline-flex shrink-0 items-center justify-center gap-1.5 text-sm font-medium whitespace-nowrap",
8
+ "outline-none transition-colors duration-150",
9
+ "focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-inset",
10
+ "disabled:pointer-events-none disabled:opacity-50",
11
+ "data-[state=on]:bg-primary data-[state=on]:text-primary-foreground",
12
+ ], {
13
+ variants: {
14
+ variant: {
15
+ default: "bg-transparent text-foreground hover:bg-muted",
16
+ outline: "border border-input bg-background text-foreground hover:bg-muted data-[state=on]:border-primary",
17
+ },
18
+ size: {
19
+ sm: "h-8 min-w-8 px-2.5 text-xs [&_svg:not([class*='size-'])]:size-3.5",
20
+ default: "h-9 min-w-9 px-3 [&_svg:not([class*='size-'])]:size-4",
21
+ lg: "h-10 min-w-10 px-4 [&_svg:not([class*='size-'])]:size-4",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default",
27
+ },
28
+ });
29
+ // Root is a single/multiple discriminated union; the wrapper keeps the same
30
+ // contract and forwards `type` untouched.
31
+ const ToggleGroupRoot = ToggleGroupPrimitive.Root;
32
+ function ToggleGroup({ className, variant = "default", size = "default", ...props }) {
33
+ return (_jsx(ToggleGroupRoot, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, className: cn("inline-flex w-fit divide-x divide-border border border-border bg-background", className), ...props }));
34
+ }
35
+ function ToggleGroupItem({ className, variant = "default", size = "default", ...props }) {
36
+ return (_jsx(ToggleGroupPrimitive.Item, { "data-slot": "toggle-group-item", className: cn(toggleGroupItemVariants({ variant, size }), className), ...props }));
37
+ }
38
+ export { ToggleGroup, ToggleGroupItem, toggleGroupItemVariants };
39
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../src/components/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,uBAAuB,GAAG,GAAG,CACjC;IACE,gGAAgG;IAChG,6CAA6C;IAC7C,6EAA6E;IAC7E,kDAAkD;IAClD,oEAAoE;CACrE,EACD;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,+CAA+C;YACxD,OAAO,EACL,iGAAiG;SACpG;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,mEAAmE;YACvE,OAAO,EAAE,uDAAuD;YAChE,EAAE,EAAE,yDAAyD;SAC9D;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAKF,4EAA4E;AAC5E,0CAA0C;AAC1C,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAA6C,CAAC;AAE3F,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACS;IACjB,OAAO,CACL,KAAC,eAAe,iBACJ,cAAc,kBACV,OAAO,eACV,IAAI,EACf,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EAEoC;IAC5C,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,mBAAmB,EAC7B,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAChE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { Tooltip as TooltipPrimitive } from "radix-ui";
3
+ declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
4
+ declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare function Tooltip({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Root> & {
6
+ delayDuration?: number;
7
+ }): React.JSX.Element;
8
+ declare function TooltipContent({ className, sideOffset, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
9
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
10
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIvD,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAClD,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,iBAAS,OAAO,CAAC,EACf,aAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,qBAMA;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAiBvD;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Tooltip as TooltipPrimitive } from "radix-ui";
4
+ import { cn } from "../lib/utils.js";
5
+ const TooltipProvider = TooltipPrimitive.Provider;
6
+ const TooltipTrigger = TooltipPrimitive.Trigger;
7
+ function Tooltip({ delayDuration = 200, ...props }) {
8
+ return (_jsx(TooltipPrimitive.Provider, { delayDuration: delayDuration, children: _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) }));
9
+ }
10
+ function TooltipContent({ className, sideOffset = 6, ...props }) {
11
+ return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn("z-[70] max-w-xs border border-border bg-popover px-2.5 py-1.5", "text-xs leading-relaxed text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95 duration-150", "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95", className), ...props }) }));
12
+ }
13
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
14
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClD,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEhD,SAAS,OAAO,CAAC,EACf,aAAa,GAAG,GAAG,EACnB,GAAG,KAAK,EAGT;IACC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,aAAa,EAAE,aAAa,YACrD,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,GAC9B,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,2DAA2D,EAC3D,8CAA8C,EAC9C,gGAAgG,EAChG,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,59 @@
1
+ export * from "./components/accordion.js";
2
+ export * from "./components/alert.js";
3
+ export * from "./components/alert-dialog.js";
4
+ export * from "./components/avatar.js";
5
+ export * from "./components/badge.js";
6
+ export * from "./components/breadcrumbs.js";
7
+ export * from "./components/button.js";
8
+ export * from "./components/calendar.js";
9
+ export * from "./components/card.js";
10
+ export * from "./components/checkbox.js";
11
+ export * from "./components/code-block.js";
12
+ export * from "./components/collapsible.js";
13
+ export * from "./components/combobox.js";
14
+ export * from "./components/command.js";
15
+ export * from "./components/copy-button.js";
16
+ export * from "./components/date-picker.js";
17
+ export * from "./components/description-list.js";
18
+ export * from "./components/dialog.js";
19
+ export * from "./components/dropdown-menu.js";
20
+ export * from "./components/dropzone.js";
21
+ export * from "./components/empty-state.js";
22
+ export * from "./components/field.js";
23
+ export * from "./components/hover-card.js";
24
+ export * from "./components/input.js";
25
+ export * from "./components/input-group.js";
26
+ export * from "./components/kbd.js";
27
+ export * from "./components/label.js";
28
+ export * from "./components/layout.js";
29
+ export * from "./components/page-header.js";
30
+ export * from "./components/pagination.js";
31
+ export * from "./components/popover.js";
32
+ export * from "./components/progress.js";
33
+ export * from "./components/radio-group.js";
34
+ export * from "./components/rating.js";
35
+ export * from "./components/reading-progress.js";
36
+ export * from "./components/relative-time.js";
37
+ export * from "./components/select.js";
38
+ export * from "./components/scroll-area.js";
39
+ export * from "./components/section-heading.js";
40
+ export * from "./components/separator.js";
41
+ export * from "./components/share-buttons.js";
42
+ export * from "./components/sheet.js";
43
+ export * from "./components/skeleton.js";
44
+ export * from "./components/skip-link.js";
45
+ export * from "./components/slider.js";
46
+ export * from "./components/spinner.js";
47
+ export * from "./components/stat.js";
48
+ export * from "./components/steps.js";
49
+ export * from "./components/switch.js";
50
+ export * from "./components/table.js";
51
+ export * from "./components/table-of-contents.js";
52
+ export * from "./components/tabs.js";
53
+ export * from "./components/textarea.js";
54
+ export * from "./components/theme-toggle.js";
55
+ export * from "./components/toaster.js";
56
+ export * from "./components/toggle-group.js";
57
+ export * from "./components/tooltip.js";
58
+ export { cn } from "./lib/utils.js";
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,59 @@
1
+ export * from "./components/accordion.js";
2
+ export * from "./components/alert.js";
3
+ export * from "./components/alert-dialog.js";
4
+ export * from "./components/avatar.js";
5
+ export * from "./components/badge.js";
6
+ export * from "./components/breadcrumbs.js";
7
+ export * from "./components/button.js";
8
+ export * from "./components/calendar.js";
9
+ export * from "./components/card.js";
10
+ export * from "./components/checkbox.js";
11
+ export * from "./components/code-block.js";
12
+ export * from "./components/collapsible.js";
13
+ export * from "./components/combobox.js";
14
+ export * from "./components/command.js";
15
+ export * from "./components/copy-button.js";
16
+ export * from "./components/date-picker.js";
17
+ export * from "./components/description-list.js";
18
+ export * from "./components/dialog.js";
19
+ export * from "./components/dropdown-menu.js";
20
+ export * from "./components/dropzone.js";
21
+ export * from "./components/empty-state.js";
22
+ export * from "./components/field.js";
23
+ export * from "./components/hover-card.js";
24
+ export * from "./components/input.js";
25
+ export * from "./components/input-group.js";
26
+ export * from "./components/kbd.js";
27
+ export * from "./components/label.js";
28
+ export * from "./components/layout.js";
29
+ export * from "./components/page-header.js";
30
+ export * from "./components/pagination.js";
31
+ export * from "./components/popover.js";
32
+ export * from "./components/progress.js";
33
+ export * from "./components/radio-group.js";
34
+ export * from "./components/rating.js";
35
+ export * from "./components/reading-progress.js";
36
+ export * from "./components/relative-time.js";
37
+ export * from "./components/select.js";
38
+ export * from "./components/scroll-area.js";
39
+ export * from "./components/section-heading.js";
40
+ export * from "./components/separator.js";
41
+ export * from "./components/share-buttons.js";
42
+ export * from "./components/sheet.js";
43
+ export * from "./components/skeleton.js";
44
+ export * from "./components/skip-link.js";
45
+ export * from "./components/slider.js";
46
+ export * from "./components/spinner.js";
47
+ export * from "./components/stat.js";
48
+ export * from "./components/steps.js";
49
+ export * from "./components/switch.js";
50
+ export * from "./components/table.js";
51
+ export * from "./components/table-of-contents.js";
52
+ export * from "./components/tabs.js";
53
+ export * from "./components/textarea.js";
54
+ export * from "./components/theme-toggle.js";
55
+ export * from "./components/toaster.js";
56
+ export * from "./components/toggle-group.js";
57
+ export * from "./components/tooltip.js";
58
+ export { cn } from "./lib/utils.js";
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,78 @@
1
1
  {
2
2
  "name": "@aback-ui/ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.1",
4
+ "description": "Accessible, square-cornered React components for the Aback design system.",
5
+ "license": "MIT",
6
+ "author": "Aback Group",
7
+ "type": "module",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/devvrat-hans/aback-ui.git",
11
+ "directory": "packages/ui"
12
+ },
13
+ "homepage": "https://abackui.com/docs/installation",
14
+ "bugs": {
15
+ "url": "https://github.com/devvrat-hans/aback-ui/issues"
16
+ },
17
+ "engines": {
18
+ "node": ">=20.9.0"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "sideEffects": false,
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ },
29
+ "./package.json": "./package.json"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "LICENSE",
34
+ "README.md"
35
+ ],
36
+ "scripts": {
37
+ "build": "rm -rf dist node_modules/.cache && tsc -p tsconfig.build.json && bun ../../scripts/fix-dist-extensions.mjs",
38
+ "dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput",
39
+ "typecheck": "tsc -p tsconfig.json --noEmit",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "prepublishOnly": "bun run typecheck && bun run test && bun run build && bun ../../scripts/verify-publishable.mjs"
43
+ },
44
+ "peerDependencies": {
45
+ "react": "^19.0.0",
46
+ "react-dom": "^19.0.0"
47
+ },
48
+ "dependencies": {
49
+ "@tabler/icons-react": "^3.49.0",
50
+ "class-variance-authority": "^0.7.1",
51
+ "clsx": "^2.1.1",
52
+ "cmdk": "^1.1.1",
53
+ "radix-ui": "^1.8.1",
54
+ "react-day-picker": "^10.0.2",
55
+ "sonner": "^2.0.8",
56
+ "tailwind-merge": "^3.7.0"
57
+ },
58
+ "devDependencies": {
59
+ "@testing-library/jest-dom": "^6.9.1",
60
+ "@testing-library/react": "^16.3.3",
61
+ "@testing-library/user-event": "^14.6.8",
62
+ "@types/react": "^19.3.0",
63
+ "@types/react-dom": "^19.3.0",
64
+ "axe-core": "^4.14.0",
65
+ "jsdom": "^30.1.3",
66
+ "react": "^19.3.1",
67
+ "react-dom": "^19.3.1",
68
+ "typescript": "^5.9.3",
69
+ "vitest": "^5.0.5"
70
+ },
71
+ "keywords": [
72
+ "aback",
73
+ "design-system",
74
+ "react",
75
+ "tailwindcss",
76
+ "radix-ui"
77
+ ]
78
+ }