@cytario/design 0.0.0-development

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 (177) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +143 -0
  3. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -0
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.js +9 -0
  6. package/dist/components/Breadcrumbs/index.d.ts +3 -0
  7. package/dist/components/Breadcrumbs/index.d.ts.map +1 -0
  8. package/dist/components/Breadcrumbs/index.js +1 -0
  9. package/dist/components/Button/Button.d.ts +18 -0
  10. package/dist/components/Button/Button.d.ts.map +1 -0
  11. package/dist/components/Button/Button.js +51 -0
  12. package/dist/components/Button/index.d.ts +3 -0
  13. package/dist/components/Button/index.d.ts.map +1 -0
  14. package/dist/components/Button/index.js +1 -0
  15. package/dist/components/ButtonLink/ButtonLink.d.ts +35 -0
  16. package/dist/components/ButtonLink/ButtonLink.d.ts.map +1 -0
  17. package/dist/components/ButtonLink/ButtonLink.js +47 -0
  18. package/dist/components/ButtonLink/index.d.ts +3 -0
  19. package/dist/components/ButtonLink/index.d.ts.map +1 -0
  20. package/dist/components/ButtonLink/index.js +1 -0
  21. package/dist/components/Checkbox/Checkbox.d.ts +8 -0
  22. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  23. package/dist/components/Checkbox/Checkbox.js +19 -0
  24. package/dist/components/Checkbox/index.d.ts +3 -0
  25. package/dist/components/Checkbox/index.d.ts.map +1 -0
  26. package/dist/components/Checkbox/index.js +1 -0
  27. package/dist/components/Dialog/Dialog.d.ts +11 -0
  28. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  29. package/dist/components/Dialog/Dialog.js +31 -0
  30. package/dist/components/Dialog/index.d.ts +3 -0
  31. package/dist/components/Dialog/index.d.ts.map +1 -0
  32. package/dist/components/Dialog/index.js +1 -0
  33. package/dist/components/EmptyState/EmptyState.d.ts +11 -0
  34. package/dist/components/EmptyState/EmptyState.d.ts.map +1 -0
  35. package/dist/components/EmptyState/EmptyState.js +10 -0
  36. package/dist/components/EmptyState/index.d.ts +3 -0
  37. package/dist/components/EmptyState/index.d.ts.map +1 -0
  38. package/dist/components/EmptyState/index.js +1 -0
  39. package/dist/components/Field/Field.d.ts +13 -0
  40. package/dist/components/Field/Field.d.ts.map +1 -0
  41. package/dist/components/Field/Field.js +15 -0
  42. package/dist/components/Field/index.d.ts +3 -0
  43. package/dist/components/Field/index.d.ts.map +1 -0
  44. package/dist/components/Field/index.js +1 -0
  45. package/dist/components/Fieldset/Fieldset.d.ts +8 -0
  46. package/dist/components/Fieldset/Fieldset.d.ts.map +1 -0
  47. package/dist/components/Fieldset/Fieldset.js +15 -0
  48. package/dist/components/Fieldset/index.d.ts +3 -0
  49. package/dist/components/Fieldset/index.d.ts.map +1 -0
  50. package/dist/components/Fieldset/index.js +1 -0
  51. package/dist/components/Heading/Heading.d.ts +19 -0
  52. package/dist/components/Heading/Heading.d.ts.map +1 -0
  53. package/dist/components/Heading/Heading.js +39 -0
  54. package/dist/components/Heading/index.d.ts +3 -0
  55. package/dist/components/Heading/index.d.ts.map +1 -0
  56. package/dist/components/Heading/index.js +1 -0
  57. package/dist/components/Icon/Icon.d.ts +15 -0
  58. package/dist/components/Icon/Icon.d.ts.map +1 -0
  59. package/dist/components/Icon/Icon.js +11 -0
  60. package/dist/components/Icon/index.d.ts +3 -0
  61. package/dist/components/Icon/index.d.ts.map +1 -0
  62. package/dist/components/Icon/index.js +1 -0
  63. package/dist/components/IconButton/IconButton.d.ts +23 -0
  64. package/dist/components/IconButton/IconButton.d.ts.map +1 -0
  65. package/dist/components/IconButton/IconButton.js +59 -0
  66. package/dist/components/IconButton/index.d.ts +3 -0
  67. package/dist/components/IconButton/index.d.ts.map +1 -0
  68. package/dist/components/IconButton/index.js +1 -0
  69. package/dist/components/Input/Input.d.ts +23 -0
  70. package/dist/components/Input/Input.d.ts.map +1 -0
  71. package/dist/components/Input/Input.js +97 -0
  72. package/dist/components/Input/index.d.ts +3 -0
  73. package/dist/components/Input/index.d.ts.map +1 -0
  74. package/dist/components/Input/index.js +1 -0
  75. package/dist/components/InputAddon/InputAddon.d.ts +7 -0
  76. package/dist/components/InputAddon/InputAddon.d.ts.map +1 -0
  77. package/dist/components/InputAddon/InputAddon.js +35 -0
  78. package/dist/components/InputAddon/index.d.ts +3 -0
  79. package/dist/components/InputAddon/index.d.ts.map +1 -0
  80. package/dist/components/InputAddon/index.js +1 -0
  81. package/dist/components/InputGroup/InputGroup.d.ts +7 -0
  82. package/dist/components/InputGroup/InputGroup.d.ts.map +1 -0
  83. package/dist/components/InputGroup/InputGroup.js +16 -0
  84. package/dist/components/InputGroup/InputGroupContext.d.ts +9 -0
  85. package/dist/components/InputGroup/InputGroupContext.d.ts.map +1 -0
  86. package/dist/components/InputGroup/InputGroupContext.js +8 -0
  87. package/dist/components/InputGroup/index.d.ts +5 -0
  88. package/dist/components/InputGroup/index.d.ts.map +1 -0
  89. package/dist/components/InputGroup/index.js +2 -0
  90. package/dist/components/Label/Label.d.ts +7 -0
  91. package/dist/components/Label/Label.d.ts.map +1 -0
  92. package/dist/components/Label/Label.js +12 -0
  93. package/dist/components/Label/index.d.ts +3 -0
  94. package/dist/components/Label/index.d.ts.map +1 -0
  95. package/dist/components/Label/index.js +1 -0
  96. package/dist/components/Link/Link.d.ts +10 -0
  97. package/dist/components/Link/Link.d.ts.map +1 -0
  98. package/dist/components/Link/Link.js +22 -0
  99. package/dist/components/Link/index.d.ts +3 -0
  100. package/dist/components/Link/index.d.ts.map +1 -0
  101. package/dist/components/Link/index.js +1 -0
  102. package/dist/components/Menu/Menu.d.ts +24 -0
  103. package/dist/components/Menu/Menu.d.ts.map +1 -0
  104. package/dist/components/Menu/Menu.js +29 -0
  105. package/dist/components/Menu/index.d.ts +3 -0
  106. package/dist/components/Menu/index.d.ts.map +1 -0
  107. package/dist/components/Menu/index.js +1 -0
  108. package/dist/components/Radio/Radio.d.ts +18 -0
  109. package/dist/components/Radio/Radio.d.ts.map +1 -0
  110. package/dist/components/Radio/Radio.js +43 -0
  111. package/dist/components/Radio/index.d.ts +3 -0
  112. package/dist/components/Radio/index.d.ts.map +1 -0
  113. package/dist/components/Radio/index.js +1 -0
  114. package/dist/components/Select/Select.d.ts +17 -0
  115. package/dist/components/Select/Select.d.ts.map +1 -0
  116. package/dist/components/Select/Select.js +42 -0
  117. package/dist/components/Select/index.d.ts +3 -0
  118. package/dist/components/Select/index.d.ts.map +1 -0
  119. package/dist/components/Select/index.js +1 -0
  120. package/dist/components/Spinner/Spinner.d.ts +10 -0
  121. package/dist/components/Spinner/Spinner.d.ts.map +1 -0
  122. package/dist/components/Spinner/Spinner.js +12 -0
  123. package/dist/components/Spinner/index.d.ts +3 -0
  124. package/dist/components/Spinner/index.d.ts.map +1 -0
  125. package/dist/components/Spinner/index.js +1 -0
  126. package/dist/components/Switch/Switch.d.ts +9 -0
  127. package/dist/components/Switch/Switch.d.ts.map +1 -0
  128. package/dist/components/Switch/Switch.js +25 -0
  129. package/dist/components/Switch/index.d.ts +3 -0
  130. package/dist/components/Switch/index.d.ts.map +1 -0
  131. package/dist/components/Switch/index.js +1 -0
  132. package/dist/components/Table/Table.d.ts +13 -0
  133. package/dist/components/Table/Table.d.ts.map +1 -0
  134. package/dist/components/Table/Table.js +61 -0
  135. package/dist/components/Table/index.d.ts +3 -0
  136. package/dist/components/Table/index.d.ts.map +1 -0
  137. package/dist/components/Table/index.js +1 -0
  138. package/dist/components/Tabs/Tabs.d.ts +32 -0
  139. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  140. package/dist/components/Tabs/Tabs.js +100 -0
  141. package/dist/components/Tabs/index.d.ts +3 -0
  142. package/dist/components/Tabs/index.d.ts.map +1 -0
  143. package/dist/components/Tabs/index.js +1 -0
  144. package/dist/components/Toast/Toast.d.ts +33 -0
  145. package/dist/components/Toast/Toast.d.ts.map +1 -0
  146. package/dist/components/Toast/Toast.js +102 -0
  147. package/dist/components/Toast/index.d.ts +3 -0
  148. package/dist/components/Toast/index.d.ts.map +1 -0
  149. package/dist/components/Toast/index.js +1 -0
  150. package/dist/components/ToggleButton/ToggleButton.d.ts +13 -0
  151. package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -0
  152. package/dist/components/ToggleButton/ToggleButton.js +42 -0
  153. package/dist/components/ToggleButton/index.d.ts +3 -0
  154. package/dist/components/ToggleButton/index.d.ts.map +1 -0
  155. package/dist/components/ToggleButton/index.js +1 -0
  156. package/dist/components/Tooltip/Tooltip.d.ts +15 -0
  157. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  158. package/dist/components/Tooltip/Tooltip.js +20 -0
  159. package/dist/components/Tooltip/index.d.ts +3 -0
  160. package/dist/components/Tooltip/index.d.ts.map +1 -0
  161. package/dist/components/Tooltip/index.js +1 -0
  162. package/dist/components/_shared/styles.d.ts +5 -0
  163. package/dist/components/_shared/styles.d.ts.map +1 -0
  164. package/dist/components/_shared/styles.js +43 -0
  165. package/dist/index.d.ts +56 -0
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +32 -0
  168. package/dist/test-setup.d.ts +2 -0
  169. package/dist/test-setup.d.ts.map +1 -0
  170. package/dist/test-setup.js +1 -0
  171. package/dist/tokens/tokens.d.ts +144 -0
  172. package/dist/tokens/tokens.d.ts.map +1 -0
  173. package/dist/tokens/tokens.js +143 -0
  174. package/package.json +85 -0
  175. package/src/styles/global.css +38 -0
  176. package/src/styles/tailwind.css +78 -0
  177. package/src/tokens/variables.css +148 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAKL,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,QAAQ,IAAI,YAAY,EAC7B,KAAK,aAAa,IAAI,iBAAiB,EAExC,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA0B1C,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,CAAC;IACxD,2BAA2B;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,kBAAkB;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,yBAAyB;IACzB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAqB,EACrB,IAAW,EACX,WAA0B,EAC1B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,2CAiBX;AAMD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,CAC5C,SAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;IAC9C,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EACxC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,CAAC,CAAC,CAAC,2CA4BjB;AAMD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;IAC/D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,2CAoCpD;AAmDD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC;IACzE,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAO9D"}
@@ -0,0 +1,100 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from "react";
3
+ import { Tabs as AriaTabs, TabList as AriaTabList, Tab as AriaTab, TabPanel as AriaTabPanel, } from "react-aria-components";
4
+ const TabsContext = createContext({
5
+ variant: "underline",
6
+ size: "md",
7
+ });
8
+ // ---------------------------------------------------------------------------
9
+ // Style maps
10
+ // ---------------------------------------------------------------------------
11
+ const sizeStyles = {
12
+ sm: "px-3 py-1.5 text-sm",
13
+ md: "px-4 py-2 text-base",
14
+ lg: "px-6 py-3 text-lg",
15
+ };
16
+ export function Tabs({ variant = "underline", size = "md", orientation = "horizontal", className, children, ...props }) {
17
+ return (_jsx(TabsContext.Provider, { value: { variant, size }, children: _jsx(AriaTabs, { ...props, orientation: orientation, className: [
18
+ orientation === "vertical" ? "flex" : "",
19
+ className,
20
+ ]
21
+ .filter(Boolean)
22
+ .join(" "), children: children }) }));
23
+ }
24
+ export function TabList({ className, ...props }) {
25
+ const { variant } = useContext(TabsContext);
26
+ const baseStyles = variant === "underline"
27
+ ? "flex items-center border-b border-[var(--color-border-default)]"
28
+ : "inline-flex items-center bg-[var(--color-surface-muted)] rounded-[var(--border-radius-lg)] p-1 gap-1";
29
+ // Vertical orientation overrides
30
+ const verticalStyles = variant === "underline"
31
+ ? "flex-col border-b-0 border-r border-[var(--color-border-default)]"
32
+ : "flex-col";
33
+ return (_jsx(AriaTabList, { ...props, className: ({ orientation }) => [
34
+ baseStyles,
35
+ orientation === "vertical" ? verticalStyles : "",
36
+ className,
37
+ ]
38
+ .filter(Boolean)
39
+ .join(" ") }));
40
+ }
41
+ export function Tab({ className, ...props }) {
42
+ const { variant, size } = useContext(TabsContext);
43
+ return (_jsx(AriaTab, { ...props, className: ({ isSelected, isDisabled, isHovered, isPressed }) => [
44
+ // Base
45
+ "cursor-pointer outline-none transition-colors",
46
+ "font-[var(--font-weight-medium)]",
47
+ // Focus ring
48
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2",
49
+ // Disabled
50
+ isDisabled ? "opacity-50 pointer-events-none" : "",
51
+ // Size
52
+ sizeStyles[size],
53
+ // Variant-specific styles
54
+ ...getTabVariantStyles(variant, {
55
+ isSelected,
56
+ isHovered,
57
+ isPressed,
58
+ isDisabled,
59
+ }),
60
+ className,
61
+ ]
62
+ .filter(Boolean)
63
+ .join(" ") }));
64
+ }
65
+ function getTabVariantStyles(variant, state) {
66
+ if (variant === "underline") {
67
+ return [
68
+ // Shape
69
+ "relative rounded-t-[var(--border-radius-sm)]",
70
+ // Color states
71
+ state.isSelected
72
+ ? [
73
+ "text-[var(--color-teal-700)] font-[var(--font-weight-semibold)]",
74
+ // Bottom indicator via pseudo-element
75
+ "after:absolute after:bottom-[-1px] after:left-0 after:right-0 after:h-0.5 after:bg-[var(--color-teal-600)]",
76
+ ].join(" ")
77
+ : state.isPressed
78
+ ? "text-[var(--color-text-primary)] bg-[var(--color-neutral-100)]"
79
+ : state.isHovered
80
+ ? "text-[var(--color-text-primary)] bg-[var(--color-neutral-50)]"
81
+ : "text-[var(--color-text-secondary)] bg-transparent",
82
+ ];
83
+ }
84
+ // Pills variant
85
+ return [
86
+ // Shape
87
+ "rounded-[var(--border-radius-md)]",
88
+ // Color states
89
+ state.isSelected
90
+ ? "text-[var(--color-text-primary)] font-[var(--font-weight-semibold)] bg-[var(--color-surface-default)] shadow-sm"
91
+ : state.isPressed
92
+ ? "text-[var(--color-text-primary)] bg-[var(--color-neutral-50)] shadow-none"
93
+ : state.isHovered
94
+ ? "text-[var(--color-text-primary)] bg-[var(--color-neutral-200)]"
95
+ : "text-[var(--color-text-secondary)] bg-transparent",
96
+ ];
97
+ }
98
+ export function TabPanel({ className, ...props }) {
99
+ return (_jsx(AriaTabPanel, { ...props, className: ["mt-4 outline-none", className].filter(Boolean).join(" ") }));
100
+ }
@@ -0,0 +1,3 @@
1
+ export { Tabs, TabList, Tab, TabPanel } from "./Tabs";
2
+ export type { TabsProps, TabListProps, TabProps, TabPanelProps, TabsVariant, TabsSize, } from "./Tabs";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAAW,EACX,QAAQ,GACT,MAAM,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export { Tabs, TabList, Tab, TabPanel } from "./Tabs";
@@ -0,0 +1,33 @@
1
+ import { type ReactNode } from "react";
2
+ export type ToastVariant = "success" | "error" | "info";
3
+ export interface ToastData {
4
+ id: string;
5
+ variant: ToastVariant;
6
+ message: string;
7
+ duration?: number;
8
+ }
9
+ export interface ToastContextValue {
10
+ toasts: ToastData[];
11
+ addToast: (toast: Omit<ToastData, "id">) => void;
12
+ removeToast: (id: string) => void;
13
+ }
14
+ export interface ToastBridge {
15
+ /** Call from anywhere (including outside React) to show a toast. */
16
+ emit: (toast: Omit<ToastData, "id">) => void;
17
+ /** Used internally by ToastProvider to subscribe to external emits. */
18
+ subscribe: (fn: (toast: Omit<ToastData, "id">) => void) => () => void;
19
+ }
20
+ export declare function createToastBridge(): ToastBridge;
21
+ interface ToastProviderProps {
22
+ children: ReactNode;
23
+ /** Optional bridge for receiving toasts from outside the React tree. */
24
+ bridge?: ToastBridge;
25
+ }
26
+ export declare function ToastProvider({ children, bridge }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function useToast(): {
28
+ toast: (toast: Omit<ToastData, "id">) => void;
29
+ toasts: ToastData[];
30
+ removeToast: (id: string) => void;
31
+ };
32
+ export {};
33
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IACjD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAuGD,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC7C,uEAAuE;IACvE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CACvE;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAa/C;AAMD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAwBrE;AAED,wBAAgB,QAAQ;mBAnKJ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI;;sBAC9B,MAAM,KAAK,IAAI;EA4KlC"}
@@ -0,0 +1,102 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useRef, useState, } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { CheckCircle, XCircle, Info, X } from "lucide-react";
5
+ const ToastContext = createContext(null);
6
+ let toastCounter = 0;
7
+ const defaultDuration = {
8
+ success: 5000,
9
+ info: 5000,
10
+ error: 10000,
11
+ };
12
+ const variantConfig = {
13
+ success: {
14
+ icon: CheckCircle,
15
+ containerClass: "bg-[var(--color-surface-success)] border-[var(--color-border-success)] text-[var(--color-text-success)]",
16
+ iconClass: "text-[var(--color-action-success)]",
17
+ },
18
+ error: {
19
+ icon: XCircle,
20
+ containerClass: "bg-[var(--color-surface-danger)] border-[var(--color-border-danger)] text-[var(--color-text-danger)]",
21
+ iconClass: "text-[var(--color-action-danger)]",
22
+ },
23
+ info: {
24
+ icon: Info,
25
+ containerClass: "bg-[var(--color-surface-info)] border-[var(--color-border-info)] text-[var(--color-text-info)]",
26
+ iconClass: "text-[var(--color-text-info)]",
27
+ },
28
+ };
29
+ function ToastItem({ toast, onRemove, }) {
30
+ const [isExiting, setIsExiting] = useState(false);
31
+ const timerRef = useRef(null);
32
+ const config = variantConfig[toast.variant];
33
+ const IconComponent = config.icon;
34
+ const dismiss = useCallback(() => {
35
+ setIsExiting(true);
36
+ setTimeout(() => onRemove(toast.id), 200);
37
+ }, [onRemove, toast.id]);
38
+ useEffect(() => {
39
+ const duration = toast.duration ?? defaultDuration[toast.variant];
40
+ timerRef.current = setTimeout(dismiss, duration);
41
+ return () => {
42
+ if (timerRef.current)
43
+ clearTimeout(timerRef.current);
44
+ };
45
+ }, [toast.duration, toast.variant, dismiss]);
46
+ return (_jsxs("div", { role: "status", "aria-live": "polite", className: [
47
+ "flex items-start gap-3 rounded-lg border px-4 py-3 shadow-md",
48
+ "min-w-[320px] max-w-[420px]",
49
+ "transition-all duration-200",
50
+ isExiting
51
+ ? "translate-x-full opacity-0"
52
+ : "translate-x-0 opacity-100 animate-in slide-in-from-right",
53
+ config.containerClass,
54
+ ].join(" "), children: [_jsx(IconComponent, { size: 20, className: ["shrink-0 mt-0.5", config.iconClass].join(" "), "aria-hidden": "true" }), _jsx("p", { className: "flex-1 text-sm font-medium", children: toast.message }), _jsx("button", { type: "button", onClick: dismiss, className: "shrink-0 rounded p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current", "aria-label": "Dismiss", children: _jsx(X, { size: 16, "aria-hidden": "true" }) })] }));
55
+ }
56
+ function ToastContainer({ toasts, removeToast }) {
57
+ if (toasts.length === 0)
58
+ return null;
59
+ return createPortal(_jsx("div", { className: "fixed bottom-4 right-4 z-50 flex flex-col gap-2", children: toasts.map((toast) => (_jsx(ToastItem, { toast: toast, onRemove: removeToast }, toast.id))) }), document.body);
60
+ }
61
+ export function createToastBridge() {
62
+ const listeners = new Set();
63
+ return {
64
+ emit: (toast) => {
65
+ listeners.forEach((fn) => fn(toast));
66
+ },
67
+ subscribe: (fn) => {
68
+ listeners.add(fn);
69
+ return () => {
70
+ listeners.delete(fn);
71
+ };
72
+ },
73
+ };
74
+ }
75
+ export function ToastProvider({ children, bridge }) {
76
+ const [toasts, setToasts] = useState([]);
77
+ const addToast = useCallback((toast) => {
78
+ const id = `toast-${++toastCounter}`;
79
+ setToasts((prev) => [...prev, { ...toast, id }]);
80
+ }, []);
81
+ const removeToast = useCallback((id) => {
82
+ setToasts((prev) => prev.filter((t) => t.id !== id));
83
+ }, []);
84
+ // Subscribe to external bridge emits
85
+ useEffect(() => {
86
+ if (!bridge)
87
+ return;
88
+ return bridge.subscribe(addToast);
89
+ }, [bridge, addToast]);
90
+ return (_jsxs(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [children, _jsx(ToastContainer, { toasts: toasts, removeToast: removeToast })] }));
91
+ }
92
+ export function useToast() {
93
+ const context = useContext(ToastContext);
94
+ if (!context) {
95
+ throw new Error("useToast must be used within a ToastProvider");
96
+ }
97
+ return {
98
+ toast: context.addToast,
99
+ toasts: context.toasts,
100
+ removeToast: context.removeToast,
101
+ };
102
+ }
@@ -0,0 +1,3 @@
1
+ export { ToastProvider, useToast, createToastBridge } from "./Toast";
2
+ export type { ToastData, ToastVariant, ToastContextValue, ToastBridge } from "./Toast";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export { ToastProvider, useToast, createToastBridge } from "./Toast";
@@ -0,0 +1,13 @@
1
+ import { type ToggleButtonProps as AriaToggleButtonProps } from "react-aria-components";
2
+ export type ToggleButtonVariant = "default" | "primary";
3
+ export type ToggleButtonSize = "sm" | "md" | "lg";
4
+ export interface ToggleButtonProps extends Omit<AriaToggleButtonProps, "className"> {
5
+ /** Visual style variant */
6
+ variant?: ToggleButtonVariant;
7
+ /** Size preset */
8
+ size?: ToggleButtonSize;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ }
12
+ export declare function ToggleButton({ variant, size, className, ...props }: ToggleButtonProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=ToggleButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleButton/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,IAAI,qBAAqB,EAChD,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC;IAChD,2BAA2B;IAC3B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,kBAAkB;IAClB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,YAAY,CAAC,EAC3B,OAAmB,EACnB,IAAW,EACX,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAwBnB"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ToggleButton as AriaToggleButton, } from "react-aria-components";
3
+ const sizeStyles = {
4
+ sm: "px-3 py-1.5 text-sm",
5
+ md: "px-4 py-2 text-base",
6
+ lg: "px-6 py-3 text-lg",
7
+ };
8
+ const variantStyles = {
9
+ default: {
10
+ base: [
11
+ "bg-transparent text-[var(--color-text-primary)]",
12
+ "hover:bg-[var(--color-neutral-100)]",
13
+ "pressed:bg-[var(--color-neutral-200)]",
14
+ ].join(" "),
15
+ selected: "bg-[var(--color-neutral-200)] text-[var(--color-text-primary)]",
16
+ },
17
+ primary: {
18
+ base: [
19
+ "bg-transparent text-[var(--color-text-primary)]",
20
+ "hover:bg-[var(--color-neutral-100)]",
21
+ "pressed:bg-[var(--color-neutral-200)]",
22
+ ].join(" "),
23
+ selected: "bg-[var(--color-teal-500)] text-[var(--color-text-inverse)]",
24
+ },
25
+ };
26
+ export function ToggleButton({ variant = "default", size = "md", className, ...props }) {
27
+ const styles = variantStyles[variant];
28
+ return (_jsx(AriaToggleButton, { ...props, className: ({ isSelected }) => [
29
+ "inline-flex items-center justify-center gap-2",
30
+ "rounded-[var(--border-radius-md)]",
31
+ "font-[var(--font-weight-medium)]",
32
+ "leading-[var(--line-height-tight)]",
33
+ "outline-none transition-colors",
34
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2",
35
+ "disabled:opacity-50 disabled:pointer-events-none",
36
+ sizeStyles[size],
37
+ isSelected ? styles.selected : styles.base,
38
+ className,
39
+ ]
40
+ .filter(Boolean)
41
+ .join(" ") }));
42
+ }
@@ -0,0 +1,3 @@
1
+ export { ToggleButton } from "./ToggleButton";
2
+ export type { ToggleButtonProps, ToggleButtonVariant, ToggleButtonSize, } from "./ToggleButton";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ export { ToggleButton } from "./ToggleButton";
@@ -0,0 +1,15 @@
1
+ import type React from "react";
2
+ export interface TooltipProps {
3
+ /** Tooltip text content */
4
+ content: string;
5
+ /** Trigger element */
6
+ children: React.ReactElement;
7
+ /** Placement relative to trigger */
8
+ placement?: "top" | "bottom" | "left" | "right";
9
+ /** Delay in ms before showing (default 500) */
10
+ delay?: number;
11
+ /** Additional CSS classes for the tooltip */
12
+ className?: string;
13
+ }
14
+ export declare function Tooltip({ content, children, placement, delay, className, }: TooltipProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=Tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,oCAAoC;IACpC,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAChD,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,QAAQ,EACR,SAAiB,EACjB,KAAW,EACX,SAAS,GACV,EAAE,YAAY,2CA2Bd"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip as AriaTooltip, TooltipTrigger, } from "react-aria-components";
3
+ export function Tooltip({ content, children, placement = "top", delay = 500, className, }) {
4
+ return (_jsxs(TooltipTrigger, { delay: delay, children: [children, _jsx(AriaTooltip, { placement: placement, className: [
5
+ "bg-[var(--color-surface-overlay)] backdrop-blur-sm",
6
+ "text-[var(--color-text-inverse)] text-sm",
7
+ "px-3 py-1.5",
8
+ "rounded-md",
9
+ "max-w-xs",
10
+ "entering:animate-in entering:fade-in entering:duration-150",
11
+ "exiting:animate-out exiting:fade-out exiting:duration-100",
12
+ "entering:placement-top:slide-in-from-bottom-1",
13
+ "entering:placement-bottom:slide-in-from-top-1",
14
+ "entering:placement-left:slide-in-from-right-1",
15
+ "entering:placement-right:slide-in-from-left-1",
16
+ className,
17
+ ]
18
+ .filter(Boolean)
19
+ .join(" "), children: content })] }));
20
+ }
@@ -0,0 +1,3 @@
1
+ export { Tooltip } from "./Tooltip";
2
+ export type { TooltipProps } from "./Tooltip";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export { Tooltip } from "./Tooltip";
@@ -0,0 +1,5 @@
1
+ export type ButtonVariant = "primary" | "secondary" | "ghost" | "destructive" | "default" | "success" | "info";
2
+ export type ButtonSize = "sm" | "md" | "lg";
3
+ export declare const variantStyles: Record<ButtonVariant, string>;
4
+ export declare const sizeStyles: Record<ButtonSize, string>;
5
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/styles.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,OAAO,GACP,aAAa,GACb,SAAS,GACT,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAqCvD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAIjD,CAAC"}
@@ -0,0 +1,43 @@
1
+ export const variantStyles = {
2
+ primary: [
3
+ "bg-[var(--color-action-primary)] text-[var(--color-text-inverse)]",
4
+ "hover:bg-[var(--color-action-primary-hover)]",
5
+ "pressed:bg-[var(--color-action-primary-active)]",
6
+ ].join(" "),
7
+ secondary: [
8
+ "bg-transparent text-[var(--color-action-secondary)]",
9
+ "border border-[var(--color-border-brand)]",
10
+ "hover:bg-[var(--color-purple-50)]",
11
+ "pressed:bg-[var(--color-purple-100)]",
12
+ ].join(" "),
13
+ ghost: [
14
+ "bg-transparent text-[var(--color-text-primary)]",
15
+ "hover:bg-[var(--color-neutral-100)]",
16
+ "pressed:bg-[var(--color-neutral-200)]",
17
+ ].join(" "),
18
+ destructive: [
19
+ "bg-[var(--color-action-danger)] text-[var(--color-text-inverse)]",
20
+ "hover:bg-[var(--color-action-danger-hover)]",
21
+ "pressed:bg-[var(--color-action-danger-hover)]",
22
+ ].join(" "),
23
+ default: [
24
+ "bg-[var(--color-action-default)] text-[var(--color-text-inverse)]",
25
+ "hover:bg-[var(--color-action-default-hover)]",
26
+ "pressed:bg-[var(--color-slate-600)]",
27
+ ].join(" "),
28
+ success: [
29
+ "bg-[var(--color-action-success)] text-[var(--color-text-inverse)]",
30
+ "hover:bg-[var(--color-action-success-hover)]",
31
+ "pressed:bg-[var(--color-green-800)]",
32
+ ].join(" "),
33
+ info: [
34
+ "bg-[var(--color-action-info)] text-[var(--color-text-inverse)]",
35
+ "hover:bg-[var(--color-action-info-hover)]",
36
+ "pressed:bg-[var(--color-slate-800)]",
37
+ ].join(" "),
38
+ };
39
+ export const sizeStyles = {
40
+ sm: "px-3 py-1.5 text-sm",
41
+ md: "px-4 py-2 text-base",
42
+ lg: "px-6 py-3 text-lg",
43
+ };
@@ -0,0 +1,56 @@
1
+ export { RouterProvider } from "react-aria-components";
2
+ export type { RouterConfig, Key } from "react-aria-components";
3
+ export { Button } from "./components/Button";
4
+ export type { ButtonProps, ButtonVariant, ButtonSize } from "./components/Button";
5
+ export { Spinner } from "./components/Spinner";
6
+ export type { SpinnerProps } from "./components/Spinner";
7
+ export { Icon } from "./components/Icon";
8
+ export type { IconProps } from "./components/Icon";
9
+ export { Tooltip } from "./components/Tooltip";
10
+ export type { TooltipProps } from "./components/Tooltip";
11
+ export { IconButton } from "./components/IconButton";
12
+ export type { IconButtonProps } from "./components/IconButton";
13
+ export { Input } from "./components/Input";
14
+ export type { InputProps } from "./components/Input";
15
+ export { Select } from "./components/Select";
16
+ export type { SelectProps, SelectItem } from "./components/Select";
17
+ export { Table, TableHeader, Column, TableBody, Row, Cell } from "./components/Table";
18
+ export type { DataTableProps, TableSize } from "./components/Table";
19
+ export { Dialog } from "./components/Dialog";
20
+ export type { DialogProps } from "./components/Dialog";
21
+ export { ToastProvider, useToast, createToastBridge } from "./components/Toast";
22
+ export type { ToastData, ToastVariant, ToastContextValue, ToastBridge } from "./components/Toast";
23
+ export { EmptyState } from "./components/EmptyState";
24
+ export type { EmptyStateProps } from "./components/EmptyState";
25
+ export { Checkbox } from "./components/Checkbox";
26
+ export type { CheckboxProps } from "./components/Checkbox";
27
+ export { Switch } from "./components/Switch";
28
+ export type { SwitchProps } from "./components/Switch";
29
+ export { RadioGroup, Radio, RadioButton } from "./components/Radio";
30
+ export type { RadioGroupProps, RadioProps, RadioButtonProps } from "./components/Radio";
31
+ export { Label } from "./components/Label";
32
+ export type { LabelProps } from "./components/Label";
33
+ export { Field } from "./components/Field";
34
+ export type { FieldProps } from "./components/Field";
35
+ export { Fieldset } from "./components/Fieldset";
36
+ export type { FieldsetProps } from "./components/Fieldset";
37
+ export { InputGroup, InputGroupContext, useInputGroup } from "./components/InputGroup";
38
+ export type { InputGroupProps, GroupPosition } from "./components/InputGroup";
39
+ export { InputAddon } from "./components/InputAddon";
40
+ export type { InputAddonProps } from "./components/InputAddon";
41
+ export { Heading, H1, H2, H3 } from "./components/Heading";
42
+ export type { HeadingProps, HeadingLevel, HeadingSize } from "./components/Heading";
43
+ export { Link } from "./components/Link";
44
+ export type { LinkProps, LinkVariant } from "./components/Link";
45
+ export { Breadcrumbs } from "./components/Breadcrumbs";
46
+ export type { BreadcrumbsProps, BreadcrumbItem } from "./components/Breadcrumbs";
47
+ export { ButtonLink, IconButtonLink } from "./components/ButtonLink";
48
+ export type { ButtonLinkProps, IconButtonLinkProps } from "./components/ButtonLink";
49
+ export { ToggleButton } from "./components/ToggleButton";
50
+ export type { ToggleButtonProps, ToggleButtonVariant, ToggleButtonSize } from "./components/ToggleButton";
51
+ export { Menu } from "./components/Menu";
52
+ export type { MenuProps, MenuItemData } from "./components/Menu";
53
+ export { Tabs, TabList, Tab, TabPanel } from "./components/Tabs";
54
+ export type { TabsProps, TabListProps, TabProps, TabPanelProps, TabsVariant, TabsSize } from "./components/Tabs";
55
+ export * from "./tokens/tokens";
56
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ // React Aria re-exports for consumer integration
3
+ export { RouterProvider } from "react-aria-components";
4
+ // Components
5
+ export { Button } from "./components/Button";
6
+ export { Spinner } from "./components/Spinner";
7
+ export { Icon } from "./components/Icon";
8
+ export { Tooltip } from "./components/Tooltip";
9
+ export { IconButton } from "./components/IconButton";
10
+ export { Input } from "./components/Input";
11
+ export { Select } from "./components/Select";
12
+ export { Table, TableHeader, Column, TableBody, Row, Cell } from "./components/Table";
13
+ export { Dialog } from "./components/Dialog";
14
+ export { ToastProvider, useToast, createToastBridge } from "./components/Toast";
15
+ export { EmptyState } from "./components/EmptyState";
16
+ export { Checkbox } from "./components/Checkbox";
17
+ export { Switch } from "./components/Switch";
18
+ export { RadioGroup, Radio, RadioButton } from "./components/Radio";
19
+ export { Label } from "./components/Label";
20
+ export { Field } from "./components/Field";
21
+ export { Fieldset } from "./components/Fieldset";
22
+ export { InputGroup, InputGroupContext, useInputGroup } from "./components/InputGroup";
23
+ export { InputAddon } from "./components/InputAddon";
24
+ export { Heading, H1, H2, H3 } from "./components/Heading";
25
+ export { Link } from "./components/Link";
26
+ export { Breadcrumbs } from "./components/Breadcrumbs";
27
+ export { ButtonLink, IconButtonLink } from "./components/ButtonLink";
28
+ export { ToggleButton } from "./components/ToggleButton";
29
+ export { Menu } from "./components/Menu";
30
+ export { Tabs, TabList, Tab, TabPanel } from "./components/Tabs";
31
+ // Design tokens (TypeScript constants)
32
+ export * from "./tokens/tokens";
@@ -0,0 +1,2 @@
1
+ import "@testing-library/jest-dom/vitest";
2
+ //# sourceMappingURL=test-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1 @@
1
+ import "@testing-library/jest-dom/vitest";