@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.
- package/LICENSE +191 -0
- package/README.md +143 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +9 -0
- package/dist/components/Breadcrumbs/index.d.ts +3 -0
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/index.js +1 -0
- package/dist/components/Button/Button.d.ts +18 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/Button.js +51 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +1 -0
- package/dist/components/ButtonLink/ButtonLink.d.ts +35 -0
- package/dist/components/ButtonLink/ButtonLink.d.ts.map +1 -0
- package/dist/components/ButtonLink/ButtonLink.js +47 -0
- package/dist/components/ButtonLink/index.d.ts +3 -0
- package/dist/components/ButtonLink/index.d.ts.map +1 -0
- package/dist/components/ButtonLink/index.js +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +8 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +19 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +1 -0
- package/dist/components/Dialog/Dialog.d.ts +11 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.js +31 -0
- package/dist/components/Dialog/index.d.ts +3 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/EmptyState/EmptyState.d.ts +11 -0
- package/dist/components/EmptyState/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState/EmptyState.js +10 -0
- package/dist/components/EmptyState/index.d.ts +3 -0
- package/dist/components/EmptyState/index.d.ts.map +1 -0
- package/dist/components/EmptyState/index.js +1 -0
- package/dist/components/Field/Field.d.ts +13 -0
- package/dist/components/Field/Field.d.ts.map +1 -0
- package/dist/components/Field/Field.js +15 -0
- package/dist/components/Field/index.d.ts +3 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/index.js +1 -0
- package/dist/components/Fieldset/Fieldset.d.ts +8 -0
- package/dist/components/Fieldset/Fieldset.d.ts.map +1 -0
- package/dist/components/Fieldset/Fieldset.js +15 -0
- package/dist/components/Fieldset/index.d.ts +3 -0
- package/dist/components/Fieldset/index.d.ts.map +1 -0
- package/dist/components/Fieldset/index.js +1 -0
- package/dist/components/Heading/Heading.d.ts +19 -0
- package/dist/components/Heading/Heading.d.ts.map +1 -0
- package/dist/components/Heading/Heading.js +39 -0
- package/dist/components/Heading/index.d.ts +3 -0
- package/dist/components/Heading/index.d.ts.map +1 -0
- package/dist/components/Heading/index.js +1 -0
- package/dist/components/Icon/Icon.d.ts +15 -0
- package/dist/components/Icon/Icon.d.ts.map +1 -0
- package/dist/components/Icon/Icon.js +11 -0
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/Icon/index.d.ts.map +1 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/IconButton/IconButton.d.ts +23 -0
- package/dist/components/IconButton/IconButton.d.ts.map +1 -0
- package/dist/components/IconButton/IconButton.js +59 -0
- package/dist/components/IconButton/index.d.ts +3 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/IconButton/index.js +1 -0
- package/dist/components/Input/Input.d.ts +23 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/Input.js +97 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +1 -0
- package/dist/components/InputAddon/InputAddon.d.ts +7 -0
- package/dist/components/InputAddon/InputAddon.d.ts.map +1 -0
- package/dist/components/InputAddon/InputAddon.js +35 -0
- package/dist/components/InputAddon/index.d.ts +3 -0
- package/dist/components/InputAddon/index.d.ts.map +1 -0
- package/dist/components/InputAddon/index.js +1 -0
- package/dist/components/InputGroup/InputGroup.d.ts +7 -0
- package/dist/components/InputGroup/InputGroup.d.ts.map +1 -0
- package/dist/components/InputGroup/InputGroup.js +16 -0
- package/dist/components/InputGroup/InputGroupContext.d.ts +9 -0
- package/dist/components/InputGroup/InputGroupContext.d.ts.map +1 -0
- package/dist/components/InputGroup/InputGroupContext.js +8 -0
- package/dist/components/InputGroup/index.d.ts +5 -0
- package/dist/components/InputGroup/index.d.ts.map +1 -0
- package/dist/components/InputGroup/index.js +2 -0
- package/dist/components/Label/Label.d.ts +7 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/Label.js +12 -0
- package/dist/components/Label/index.d.ts +3 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Label/index.js +1 -0
- package/dist/components/Link/Link.d.ts +10 -0
- package/dist/components/Link/Link.d.ts.map +1 -0
- package/dist/components/Link/Link.js +22 -0
- package/dist/components/Link/index.d.ts +3 -0
- package/dist/components/Link/index.d.ts.map +1 -0
- package/dist/components/Link/index.js +1 -0
- package/dist/components/Menu/Menu.d.ts +24 -0
- package/dist/components/Menu/Menu.d.ts.map +1 -0
- package/dist/components/Menu/Menu.js +29 -0
- package/dist/components/Menu/index.d.ts +3 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Radio/Radio.d.ts +18 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -0
- package/dist/components/Radio/Radio.js +43 -0
- package/dist/components/Radio/index.d.ts +3 -0
- package/dist/components/Radio/index.d.ts.map +1 -0
- package/dist/components/Radio/index.js +1 -0
- package/dist/components/Select/Select.d.ts +17 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +42 -0
- package/dist/components/Select/index.d.ts +3 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +1 -0
- package/dist/components/Spinner/Spinner.d.ts +10 -0
- package/dist/components/Spinner/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner/Spinner.js +12 -0
- package/dist/components/Spinner/index.d.ts +3 -0
- package/dist/components/Spinner/index.d.ts.map +1 -0
- package/dist/components/Spinner/index.js +1 -0
- package/dist/components/Switch/Switch.d.ts +9 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/Switch.js +25 -0
- package/dist/components/Switch/index.d.ts +3 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +1 -0
- package/dist/components/Table/Table.d.ts +13 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/Table.js +61 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Table/index.js +1 -0
- package/dist/components/Tabs/Tabs.d.ts +32 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.js +100 -0
- package/dist/components/Tabs/index.d.ts +3 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +1 -0
- package/dist/components/Toast/Toast.d.ts +33 -0
- package/dist/components/Toast/Toast.d.ts.map +1 -0
- package/dist/components/Toast/Toast.js +102 -0
- package/dist/components/Toast/index.d.ts +3 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +1 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts +13 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -0
- package/dist/components/ToggleButton/ToggleButton.js +42 -0
- package/dist/components/ToggleButton/index.d.ts +3 -0
- package/dist/components/ToggleButton/index.d.ts.map +1 -0
- package/dist/components/ToggleButton/index.js +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +15 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +20 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/_shared/styles.d.ts +5 -0
- package/dist/components/_shared/styles.d.ts.map +1 -0
- package/dist/components/_shared/styles.js +43 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +1 -0
- package/dist/tokens/tokens.d.ts +144 -0
- package/dist/tokens/tokens.d.ts.map +1 -0
- package/dist/tokens/tokens.js +143 -0
- package/package.json +85 -0
- package/src/styles/global.css +38 -0
- package/src/styles/tailwind.css +78 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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";
|