@cytario/design 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +583 -58
- package/dist/index.js +2145 -32
- package/dist/index.js.map +1 -0
- package/package.json +7 -5
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -11
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +0 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js +0 -9
- package/dist/components/Breadcrumbs/index.d.ts +0 -3
- package/dist/components/Breadcrumbs/index.d.ts.map +0 -1
- package/dist/components/Breadcrumbs/index.js +0 -1
- package/dist/components/Button/Button.d.ts +0 -18
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.js +0 -51
- package/dist/components/Button/index.d.ts +0 -3
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Button/index.js +0 -1
- package/dist/components/ButtonLink/ButtonLink.d.ts +0 -35
- package/dist/components/ButtonLink/ButtonLink.d.ts.map +0 -1
- package/dist/components/ButtonLink/ButtonLink.js +0 -47
- package/dist/components/ButtonLink/index.d.ts +0 -3
- package/dist/components/ButtonLink/index.d.ts.map +0 -1
- package/dist/components/ButtonLink/index.js +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -8
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.js +0 -19
- package/dist/components/Checkbox/index.d.ts +0 -3
- package/dist/components/Checkbox/index.d.ts.map +0 -1
- package/dist/components/Checkbox/index.js +0 -1
- package/dist/components/Dialog/Dialog.d.ts +0 -11
- package/dist/components/Dialog/Dialog.d.ts.map +0 -1
- package/dist/components/Dialog/Dialog.js +0 -31
- package/dist/components/Dialog/index.d.ts +0 -3
- package/dist/components/Dialog/index.d.ts.map +0 -1
- package/dist/components/Dialog/index.js +0 -1
- package/dist/components/EmptyState/EmptyState.d.ts +0 -11
- package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
- package/dist/components/EmptyState/EmptyState.js +0 -10
- package/dist/components/EmptyState/index.d.ts +0 -3
- package/dist/components/EmptyState/index.d.ts.map +0 -1
- package/dist/components/EmptyState/index.js +0 -1
- package/dist/components/Field/Field.d.ts +0 -13
- package/dist/components/Field/Field.d.ts.map +0 -1
- package/dist/components/Field/Field.js +0 -15
- package/dist/components/Field/index.d.ts +0 -3
- package/dist/components/Field/index.d.ts.map +0 -1
- package/dist/components/Field/index.js +0 -1
- package/dist/components/Fieldset/Fieldset.d.ts +0 -8
- package/dist/components/Fieldset/Fieldset.d.ts.map +0 -1
- package/dist/components/Fieldset/Fieldset.js +0 -15
- package/dist/components/Fieldset/index.d.ts +0 -3
- package/dist/components/Fieldset/index.d.ts.map +0 -1
- package/dist/components/Fieldset/index.js +0 -1
- package/dist/components/Heading/Heading.d.ts +0 -19
- package/dist/components/Heading/Heading.d.ts.map +0 -1
- package/dist/components/Heading/Heading.js +0 -39
- package/dist/components/Heading/index.d.ts +0 -3
- package/dist/components/Heading/index.d.ts.map +0 -1
- package/dist/components/Heading/index.js +0 -1
- package/dist/components/Icon/Icon.d.ts +0 -15
- package/dist/components/Icon/Icon.d.ts.map +0 -1
- package/dist/components/Icon/Icon.js +0 -11
- package/dist/components/Icon/index.d.ts +0 -3
- package/dist/components/Icon/index.d.ts.map +0 -1
- package/dist/components/Icon/index.js +0 -1
- package/dist/components/IconButton/IconButton.d.ts +0 -23
- package/dist/components/IconButton/IconButton.d.ts.map +0 -1
- package/dist/components/IconButton/IconButton.js +0 -59
- package/dist/components/IconButton/index.d.ts +0 -3
- package/dist/components/IconButton/index.d.ts.map +0 -1
- package/dist/components/IconButton/index.js +0 -1
- package/dist/components/Input/Input.d.ts +0 -23
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.js +0 -97
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/Input/index.js +0 -1
- package/dist/components/InputAddon/InputAddon.d.ts +0 -7
- package/dist/components/InputAddon/InputAddon.d.ts.map +0 -1
- package/dist/components/InputAddon/InputAddon.js +0 -35
- package/dist/components/InputAddon/index.d.ts +0 -3
- package/dist/components/InputAddon/index.d.ts.map +0 -1
- package/dist/components/InputAddon/index.js +0 -1
- package/dist/components/InputGroup/InputGroup.d.ts +0 -7
- package/dist/components/InputGroup/InputGroup.d.ts.map +0 -1
- package/dist/components/InputGroup/InputGroup.js +0 -16
- package/dist/components/InputGroup/InputGroupContext.d.ts +0 -9
- package/dist/components/InputGroup/InputGroupContext.d.ts.map +0 -1
- package/dist/components/InputGroup/InputGroupContext.js +0 -8
- package/dist/components/InputGroup/index.d.ts +0 -5
- package/dist/components/InputGroup/index.d.ts.map +0 -1
- package/dist/components/InputGroup/index.js +0 -2
- package/dist/components/Label/Label.d.ts +0 -7
- package/dist/components/Label/Label.d.ts.map +0 -1
- package/dist/components/Label/Label.js +0 -12
- package/dist/components/Label/index.d.ts +0 -3
- package/dist/components/Label/index.d.ts.map +0 -1
- package/dist/components/Label/index.js +0 -1
- package/dist/components/Link/Link.d.ts +0 -10
- package/dist/components/Link/Link.d.ts.map +0 -1
- package/dist/components/Link/Link.js +0 -22
- package/dist/components/Link/index.d.ts +0 -3
- package/dist/components/Link/index.d.ts.map +0 -1
- package/dist/components/Link/index.js +0 -1
- package/dist/components/Menu/Menu.d.ts +0 -24
- package/dist/components/Menu/Menu.d.ts.map +0 -1
- package/dist/components/Menu/Menu.js +0 -29
- package/dist/components/Menu/index.d.ts +0 -3
- package/dist/components/Menu/index.d.ts.map +0 -1
- package/dist/components/Menu/index.js +0 -1
- package/dist/components/Popover/Popover.d.ts +0 -44
- package/dist/components/Popover/Popover.d.ts.map +0 -1
- package/dist/components/Popover/Popover.js +0 -46
- package/dist/components/Popover/index.d.ts +0 -3
- package/dist/components/Popover/index.d.ts.map +0 -1
- package/dist/components/Popover/index.js +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -18
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.js +0 -43
- package/dist/components/Radio/index.d.ts +0 -3
- package/dist/components/Radio/index.d.ts.map +0 -1
- package/dist/components/Radio/index.js +0 -1
- package/dist/components/Select/Select.d.ts +0 -17
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.js +0 -42
- package/dist/components/Select/index.d.ts +0 -3
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/Select/index.js +0 -1
- package/dist/components/Spinner/Spinner.d.ts +0 -10
- package/dist/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.js +0 -12
- package/dist/components/Spinner/index.d.ts +0 -3
- package/dist/components/Spinner/index.d.ts.map +0 -1
- package/dist/components/Spinner/index.js +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -12
- package/dist/components/Switch/Switch.d.ts.map +0 -1
- package/dist/components/Switch/Switch.js +0 -34
- package/dist/components/Switch/index.d.ts +0 -3
- package/dist/components/Switch/index.d.ts.map +0 -1
- package/dist/components/Switch/index.js +0 -1
- package/dist/components/Table/Table.d.ts +0 -13
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.js +0 -61
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Table/index.js +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -32
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.js +0 -100
- package/dist/components/Tabs/index.d.ts +0 -3
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Tabs/index.js +0 -1
- package/dist/components/Toast/Toast.d.ts +0 -33
- package/dist/components/Toast/Toast.d.ts.map +0 -1
- package/dist/components/Toast/Toast.js +0 -102
- package/dist/components/Toast/index.d.ts +0 -3
- package/dist/components/Toast/index.d.ts.map +0 -1
- package/dist/components/Toast/index.js +0 -1
- package/dist/components/ToggleButton/ToggleButton.d.ts +0 -13
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +0 -1
- package/dist/components/ToggleButton/ToggleButton.js +0 -42
- package/dist/components/ToggleButton/index.d.ts +0 -3
- package/dist/components/ToggleButton/index.d.ts.map +0 -1
- package/dist/components/ToggleButton/index.js +0 -1
- package/dist/components/Tooltip/Tooltip.d.ts +0 -15
- package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/components/Tooltip/Tooltip.js +0 -20
- package/dist/components/Tooltip/index.d.ts +0 -3
- package/dist/components/Tooltip/index.d.ts.map +0 -1
- package/dist/components/Tooltip/index.js +0 -1
- package/dist/components/_shared/styles.d.ts +0 -5
- package/dist/components/_shared/styles.d.ts.map +0 -1
- package/dist/components/_shared/styles.js +0 -43
- package/dist/index.d.ts.map +0 -1
- package/dist/test-setup.d.ts +0 -2
- package/dist/test-setup.d.ts.map +0 -1
- package/dist/test-setup.js +0 -1
- package/dist/tokens/tokens.d.ts +0 -144
- package/dist/tokens/tokens.d.ts.map +0 -1
- package/dist/tokens/tokens.js +0 -143
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Switch as AriaSwitch, } from "react-aria-components";
|
|
3
|
-
const trackColorMap = {
|
|
4
|
-
primary: "bg-[var(--color-action-primary)]",
|
|
5
|
-
success: "bg-[var(--color-action-success)]",
|
|
6
|
-
destructive: "bg-[var(--color-action-danger)]",
|
|
7
|
-
};
|
|
8
|
-
const presetColors = new Set(Object.keys(trackColorMap));
|
|
9
|
-
function isPresetColor(color) {
|
|
10
|
-
return presetColors.has(color);
|
|
11
|
-
}
|
|
12
|
-
export function Switch({ children, color = "primary", className, ...props }) {
|
|
13
|
-
const isPreset = isPresetColor(color);
|
|
14
|
-
return (_jsx(AriaSwitch, { ...props, className: [
|
|
15
|
-
"group flex items-center gap-2 text-[length:var(--font-size-sm)] text-[var(--color-text-primary)] cursor-pointer",
|
|
16
|
-
"disabled:opacity-50 disabled:cursor-default",
|
|
17
|
-
className,
|
|
18
|
-
]
|
|
19
|
-
.filter(Boolean)
|
|
20
|
-
.join(" "), children: ({ isSelected }) => (_jsxs(_Fragment, { children: [_jsx("div", { className: [
|
|
21
|
-
"w-9 h-5 rounded-full transition-colors shrink-0 p-0.5",
|
|
22
|
-
"group-focus-visible:ring-2 group-focus-visible:ring-[var(--color-border-focus)] group-focus-visible:ring-offset-2",
|
|
23
|
-
isSelected && isPreset
|
|
24
|
-
? trackColorMap[color]
|
|
25
|
-
: !isSelected
|
|
26
|
-
? "bg-[var(--color-border-strong)]"
|
|
27
|
-
: "",
|
|
28
|
-
].join(" "), style: isSelected && !isPreset
|
|
29
|
-
? { backgroundColor: color }
|
|
30
|
-
: undefined, children: _jsx("div", { className: [
|
|
31
|
-
"w-4 h-4 rounded-full bg-[var(--color-surface-default)] transition-transform shadow-sm",
|
|
32
|
-
isSelected ? "translate-x-4" : "translate-x-0",
|
|
33
|
-
].join(" ") }) }), children && _jsx("span", { children: children })] })) }));
|
|
34
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Switch } from "./Switch";
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type CellProps, type ColumnProps, type RowProps, type TableBodyProps, type TableHeaderProps, type TableProps } from "react-aria-components";
|
|
2
|
-
export type TableSize = "compact" | "comfortable";
|
|
3
|
-
export interface DataTableProps extends TableProps {
|
|
4
|
-
/** Row density */
|
|
5
|
-
size?: TableSize;
|
|
6
|
-
}
|
|
7
|
-
export declare function Table({ size, className, ...props }: DataTableProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export declare function TableHeader<T extends object>(props: TableHeaderProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
export declare function Column(props: ColumnProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
export declare function TableBody<T extends object>(props: TableBodyProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export declare function Row<T extends object>(props: RowProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export declare function Cell(props: CellProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
-
//# sourceMappingURL=Table.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAMlD,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,kBAAkB;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAOD,wBAAgB,KAAK,CAAC,EAAE,IAAoB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAalF;AAMD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,2CAEvE;AAMD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAuBxC;AAMD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,2CAEnE;AAMD,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,2CAcvD;AAMD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAWpC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Cell as AriaCell, Column as AriaColumn, Row as AriaRow, Table as AriaTable, TableBody as AriaTableBody, TableHeader as AriaTableHeader, } from "react-aria-components";
|
|
3
|
-
const tableSizeClass = {
|
|
4
|
-
compact: "[--table-row-py:theme(spacing.1)]",
|
|
5
|
-
comfortable: "[--table-row-py:theme(spacing.3)]",
|
|
6
|
-
};
|
|
7
|
-
export function Table({ size = "comfortable", className, ...props }) {
|
|
8
|
-
return (_jsx(AriaTable, { ...props, className: [
|
|
9
|
-
"w-full border-collapse text-[var(--font-size-sm)] text-[var(--color-text-primary)]",
|
|
10
|
-
tableSizeClass[size],
|
|
11
|
-
className,
|
|
12
|
-
]
|
|
13
|
-
.filter(Boolean)
|
|
14
|
-
.join(" ") }));
|
|
15
|
-
}
|
|
16
|
-
/* ------------------------------------------------------------------ */
|
|
17
|
-
/* TableHeader */
|
|
18
|
-
/* ------------------------------------------------------------------ */
|
|
19
|
-
export function TableHeader(props) {
|
|
20
|
-
return _jsx(AriaTableHeader, { ...props });
|
|
21
|
-
}
|
|
22
|
-
/* ------------------------------------------------------------------ */
|
|
23
|
-
/* Column */
|
|
24
|
-
/* ------------------------------------------------------------------ */
|
|
25
|
-
export function Column(props) {
|
|
26
|
-
return (_jsx(AriaColumn, { ...props, className: [
|
|
27
|
-
"px-3 py-2 text-left font-[var(--font-weight-semibold)] text-[var(--color-text-secondary)]",
|
|
28
|
-
"border-b-2 border-[var(--color-border-default)]",
|
|
29
|
-
"cursor-default select-none outline-none",
|
|
30
|
-
"focus-visible:outline-2 focus-visible:outline-[var(--color-border-focus)] focus-visible:outline-offset-[-2px]",
|
|
31
|
-
].join(" "), children: ({ allowsSorting, sortDirection }) => (_jsxs("span", { className: "inline-flex items-center gap-1", children: [props.children, allowsSorting && (_jsx("span", { "aria-hidden": "true", className: "text-[var(--color-text-tertiary)]", children: sortDirection === "ascending" ? "\u25B2" : sortDirection === "descending" ? "\u25BC" : "\u25B4" }))] })) }));
|
|
32
|
-
}
|
|
33
|
-
/* ------------------------------------------------------------------ */
|
|
34
|
-
/* TableBody */
|
|
35
|
-
/* ------------------------------------------------------------------ */
|
|
36
|
-
export function TableBody(props) {
|
|
37
|
-
return _jsx(AriaTableBody, { ...props });
|
|
38
|
-
}
|
|
39
|
-
/* ------------------------------------------------------------------ */
|
|
40
|
-
/* Row */
|
|
41
|
-
/* ------------------------------------------------------------------ */
|
|
42
|
-
export function Row(props) {
|
|
43
|
-
return (_jsx(AriaRow, { ...props, className: [
|
|
44
|
-
"border-b border-[var(--color-border-default)]",
|
|
45
|
-
"even:bg-[var(--color-neutral-50)]",
|
|
46
|
-
"hover:bg-[var(--color-teal-50)]",
|
|
47
|
-
"outline-none",
|
|
48
|
-
"focus-visible:outline-2 focus-visible:outline-[var(--color-border-focus)] focus-visible:outline-offset-[-2px]",
|
|
49
|
-
"transition-colors",
|
|
50
|
-
].join(" ") }));
|
|
51
|
-
}
|
|
52
|
-
/* ------------------------------------------------------------------ */
|
|
53
|
-
/* Cell */
|
|
54
|
-
/* ------------------------------------------------------------------ */
|
|
55
|
-
export function Cell(props) {
|
|
56
|
-
return (_jsx(AriaCell, { ...props, className: [
|
|
57
|
-
"px-3 py-[var(--table-row-py)]",
|
|
58
|
-
"outline-none",
|
|
59
|
-
"focus-visible:outline-2 focus-visible:outline-[var(--color-border-focus)] focus-visible:outline-offset-[-2px]",
|
|
60
|
-
].join(" ") }));
|
|
61
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Table, TableHeader, Column, TableBody, Row, Cell } from "./Table";
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
import { type TabsProps as AriaTabsProps, type TabListProps as AriaTabListProps, type TabProps as AriaTabProps, type TabPanelProps as AriaTabPanelProps } from "react-aria-components";
|
|
3
|
-
export type TabsVariant = "underline" | "pills";
|
|
4
|
-
export type TabsSize = "sm" | "md" | "lg";
|
|
5
|
-
export interface TabsProps extends Omit<AriaTabsProps, "className" | "orientation"> {
|
|
6
|
-
/** Visual style variant */
|
|
7
|
-
variant?: TabsVariant;
|
|
8
|
-
/** Size preset */
|
|
9
|
-
size?: TabsSize;
|
|
10
|
-
/** Layout orientation */
|
|
11
|
-
orientation?: "horizontal" | "vertical";
|
|
12
|
-
/** Additional CSS classes */
|
|
13
|
-
className?: string;
|
|
14
|
-
children: ReactNode;
|
|
15
|
-
}
|
|
16
|
-
export declare function Tabs({ variant, size, orientation, className, children, ...props }: TabsProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
export interface TabListProps<T extends object> extends Omit<AriaTabListProps<T>, "className"> {
|
|
18
|
-
/** Additional CSS classes */
|
|
19
|
-
className?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare function TabList<T extends object>({ className, ...props }: TabListProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
-
export interface TabProps extends Omit<AriaTabProps, "className"> {
|
|
23
|
-
/** Additional CSS classes */
|
|
24
|
-
className?: string;
|
|
25
|
-
}
|
|
26
|
-
export declare function Tab({ className, ...props }: TabProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
-
export interface TabPanelProps extends Omit<AriaTabPanelProps, "className"> {
|
|
28
|
-
/** Additional CSS classes */
|
|
29
|
-
className?: string;
|
|
30
|
-
}
|
|
31
|
-
export declare function TabPanel({ className, ...props }: TabPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Tabs, TabList, Tab, TabPanel } from "./Tabs";
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,102 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ToastProvider, useToast, createToastBridge } from "./Toast";
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ToggleButton } from "./ToggleButton";
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Tooltip } from "./Tooltip";
|
|
@@ -1,5 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
-
};
|