@coinloger/dev-ui 0.0.5 → 0.0.7
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/README.md +63 -0
- package/dist/cjs/components/Badge/Badge.cjs +1 -0
- package/dist/cjs/components/Button/Button.cjs +1 -0
- package/dist/cjs/components/Card/Card.cjs +1 -0
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -0
- package/dist/cjs/components/Input/Input.cjs +1 -0
- package/dist/cjs/components/Modal/Modal.cjs +1 -0
- package/dist/cjs/components/Radio/Radio.cjs +1 -0
- package/dist/cjs/components/Select/Select.cjs +1 -0
- package/dist/cjs/components/Switch/Switch.cjs +1 -0
- package/dist/cjs/components/Table/Table.cjs +1 -0
- package/dist/cjs/components/Tabs/Tabs.cjs +1 -0
- package/dist/cjs/components/Typography/Heading.cjs +1 -0
- package/dist/cjs/components/Typography/Text.cjs +1 -0
- package/dist/{style.css → cjs/dev-ui.css} +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/theme.cjs +1 -0
- package/dist/esm/components/Badge/Badge.d.ts +23 -0
- package/dist/esm/components/Badge/Badge.js +31 -0
- package/dist/esm/components/Button/Button.d.ts +22 -0
- package/dist/esm/components/Button/Button.js +24 -0
- package/dist/esm/components/Card/Card.d.ts +21 -0
- package/dist/esm/components/Card/Card.js +20 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts +26 -0
- package/dist/esm/components/Checkbox/Checkbox.js +54 -0
- package/dist/esm/components/Input/Input.d.ts +35 -0
- package/dist/esm/components/Input/Input.js +39 -0
- package/dist/esm/components/Modal/Modal.d.ts +123 -0
- package/dist/esm/components/Modal/Modal.js +123 -0
- package/dist/esm/components/Radio/Radio.d.ts +26 -0
- package/dist/esm/components/Radio/Radio.js +43 -0
- package/dist/esm/components/Select/Select.d.ts +76 -0
- package/dist/esm/components/Select/Select.js +110 -0
- package/dist/esm/components/Switch/Switch.d.ts +26 -0
- package/dist/esm/components/Switch/Switch.js +44 -0
- package/dist/esm/components/Table/Table.d.ts +27 -0
- package/dist/esm/components/Table/Table.js +27 -0
- package/dist/esm/components/Tabs/Tabs.d.ts +70 -0
- package/dist/esm/components/Tabs/Tabs.js +87 -0
- package/dist/esm/components/Typography/Heading.d.ts +21 -0
- package/dist/esm/components/Typography/Heading.js +35 -0
- package/dist/esm/components/Typography/Text.d.ts +34 -0
- package/dist/esm/components/Typography/Text.js +40 -0
- package/dist/esm/dev-ui.css +1 -0
- package/dist/esm/index.js +36 -0
- package/dist/esm/theme.d.ts +15 -0
- package/dist/esm/theme.js +32 -0
- package/package.json +18 -18
- package/style.css +1 -0
- package/dist/components/Badge/Badge.d.ts +0 -8
- package/dist/components/Badge/Badge.demo.d.ts +0 -1
- package/dist/components/Button/Button.d.ts +0 -7
- package/dist/components/Button/Button.demo.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +0 -8
- package/dist/components/Card/Card.demo.d.ts +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -9
- package/dist/components/Checkbox/Checkbox.demo.d.ts +0 -1
- package/dist/components/Input/Input.d.ts +0 -11
- package/dist/components/Input/Input.demo.d.ts +0 -1
- package/dist/components/Modal/Modal.d.ts +0 -38
- package/dist/components/Modal/Modal.demo.d.ts +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -9
- package/dist/components/Radio/Radio.demo.d.ts +0 -1
- package/dist/components/Select/Select.d.ts +0 -19
- package/dist/components/Select/Select.demo.d.ts +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -9
- package/dist/components/Switch/Switch.demo.d.ts +0 -1
- package/dist/components/Table/Table.d.ts +0 -10
- package/dist/components/Table/Table.demo.d.ts +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -26
- package/dist/components/Tabs/Tabs.demo.d.ts +0 -1
- package/dist/components/Typography/Heading.d.ts +0 -8
- package/dist/components/Typography/Text.d.ts +0 -11
- package/dist/components/Typography/Typography.demo.d.ts +0 -1
- package/dist/index.js +0 -488
- package/dist/theme.d.ts +0 -7
- /package/dist/{default-theme.d.ts → esm/default-theme.d.ts} +0 -0
- /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
- /package/dist/{types.d.ts → esm/types.d.ts} +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes, ButtonHTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
import * as PropTypes from 'prop-types';
|
|
4
|
+
/**
|
|
5
|
+
* Tabs Root properties.
|
|
6
|
+
*/
|
|
7
|
+
export interface TabsProps {
|
|
8
|
+
/**
|
|
9
|
+
* The default value of the tab to select initially (uncontrolled mode).
|
|
10
|
+
*/
|
|
11
|
+
defaultValue?: string;
|
|
12
|
+
/**
|
|
13
|
+
* The controlled value of the selected tab.
|
|
14
|
+
*/
|
|
15
|
+
value?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Callback fired when the value changes.
|
|
18
|
+
*/
|
|
19
|
+
onValueChange?: (value: string) => void;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface TabsListProps extends HTMLAttributes<HTMLDivElement> {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
variant?: 'line' | 'pills';
|
|
26
|
+
}
|
|
27
|
+
export interface TabsTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
28
|
+
value: string;
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
export interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
32
|
+
value: string;
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
}
|
|
35
|
+
export declare const Tabs: {
|
|
36
|
+
({ defaultValue, value, onValueChange, children, className }: TabsProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
displayName: string;
|
|
38
|
+
propTypes: {
|
|
39
|
+
defaultValue: PropTypes.Requireable<string>;
|
|
40
|
+
value: PropTypes.Requireable<string>;
|
|
41
|
+
onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
42
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
43
|
+
className: PropTypes.Requireable<string>;
|
|
44
|
+
};
|
|
45
|
+
} & {
|
|
46
|
+
List: {
|
|
47
|
+
({ className, children, variant, ...props }: TabsListProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
displayName: string;
|
|
49
|
+
propTypes: {
|
|
50
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
51
|
+
variant: PropTypes.Requireable<string>;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
Trigger: {
|
|
55
|
+
({ value, className, children, onClick, ...props }: TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
displayName: string;
|
|
57
|
+
propTypes: {
|
|
58
|
+
value: PropTypes.Validator<string>;
|
|
59
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
Content: {
|
|
63
|
+
({ value, className, children, ...props }: TabsContentProps): import("react/jsx-runtime").JSX.Element | null;
|
|
64
|
+
displayName: string;
|
|
65
|
+
propTypes: {
|
|
66
|
+
value: PropTypes.Validator<string>;
|
|
67
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as v, useState as y, useId as x, useContext as f } from "react";
|
|
3
|
+
import { clsx as d } from "clsx";
|
|
4
|
+
import * as e from "prop-types";
|
|
5
|
+
/* empty css */
|
|
6
|
+
const p = v(null), T = ({ defaultValue: t, value: s, onValueChange: r, children: i, className: a }) => {
|
|
7
|
+
const [n, o] = y(t || ""), c = s !== void 0, b = c ? s : n, u = x(), g = (I) => {
|
|
8
|
+
c || o(I), r?.(I);
|
|
9
|
+
};
|
|
10
|
+
return /* @__PURE__ */ l(p.Provider, { value: { value: b, onChange: g, baseId: u }, children: /* @__PURE__ */ l("div", { className: d("ui-tabs", a), children: i }) });
|
|
11
|
+
}, m = ({ className: t, children: s, variant: r = "line", ...i }) => /* @__PURE__ */ l(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
role: "tablist",
|
|
15
|
+
className: d("ui-tabs-list", `ui-tabs-list-${r}`, t),
|
|
16
|
+
...i,
|
|
17
|
+
children: s
|
|
18
|
+
}
|
|
19
|
+
), h = ({ value: t, className: s, children: r, onClick: i, ...a }) => {
|
|
20
|
+
const n = f(p);
|
|
21
|
+
if (!n) throw new Error("TabsTrigger must be used within Tabs");
|
|
22
|
+
const o = n.value === t, c = `${n.baseId}-trigger-${t}`, b = `${n.baseId}-content-${t}`, u = (g) => {
|
|
23
|
+
n.onChange(t), i?.(g);
|
|
24
|
+
};
|
|
25
|
+
return /* @__PURE__ */ l(
|
|
26
|
+
"button",
|
|
27
|
+
{
|
|
28
|
+
type: "button",
|
|
29
|
+
role: "tab",
|
|
30
|
+
"aria-selected": o,
|
|
31
|
+
"aria-controls": b,
|
|
32
|
+
id: c,
|
|
33
|
+
tabIndex: o ? 0 : -1,
|
|
34
|
+
"data-state": o ? "active" : "inactive",
|
|
35
|
+
className: d("ui-tabs-trigger", s),
|
|
36
|
+
onClick: u,
|
|
37
|
+
...a,
|
|
38
|
+
children: r
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}, C = ({ value: t, className: s, children: r, ...i }) => {
|
|
42
|
+
const a = f(p);
|
|
43
|
+
if (!a) throw new Error("TabsContent must be used within Tabs");
|
|
44
|
+
const n = a.value === t, o = `${a.baseId}-trigger-${t}`, c = `${a.baseId}-content-${t}`;
|
|
45
|
+
return n ? /* @__PURE__ */ l(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
role: "tabpanel",
|
|
49
|
+
id: c,
|
|
50
|
+
"aria-labelledby": o,
|
|
51
|
+
tabIndex: 0,
|
|
52
|
+
className: d("ui-tabs-content", s),
|
|
53
|
+
...i,
|
|
54
|
+
children: r
|
|
55
|
+
}
|
|
56
|
+
) : null;
|
|
57
|
+
}, L = Object.assign(T, {
|
|
58
|
+
List: m,
|
|
59
|
+
Trigger: h,
|
|
60
|
+
Content: C
|
|
61
|
+
});
|
|
62
|
+
T.displayName = "Tabs";
|
|
63
|
+
m.displayName = "TabsList";
|
|
64
|
+
h.displayName = "TabsTrigger";
|
|
65
|
+
C.displayName = "TabsContent";
|
|
66
|
+
T.propTypes = {
|
|
67
|
+
defaultValue: e.string,
|
|
68
|
+
value: e.string,
|
|
69
|
+
onValueChange: e.func,
|
|
70
|
+
children: e.node,
|
|
71
|
+
className: e.string
|
|
72
|
+
};
|
|
73
|
+
m.propTypes = {
|
|
74
|
+
children: e.node,
|
|
75
|
+
variant: e.oneOf(["line", "pills"])
|
|
76
|
+
};
|
|
77
|
+
h.propTypes = {
|
|
78
|
+
value: e.string.isRequired,
|
|
79
|
+
children: e.node
|
|
80
|
+
};
|
|
81
|
+
C.propTypes = {
|
|
82
|
+
value: e.string.isRequired,
|
|
83
|
+
children: e.node
|
|
84
|
+
};
|
|
85
|
+
export {
|
|
86
|
+
L as Tabs
|
|
87
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Heading typography component properties.
|
|
5
|
+
*/
|
|
6
|
+
export interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
7
|
+
/**
|
|
8
|
+
* The heading level (h1-h6).
|
|
9
|
+
* @default 1
|
|
10
|
+
*/
|
|
11
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
12
|
+
/**
|
|
13
|
+
* If true, truncates text with an ellipsis if it overflows one line.
|
|
14
|
+
*/
|
|
15
|
+
truncate?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Clamps the text to a specific number of lines.
|
|
18
|
+
*/
|
|
19
|
+
lines?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const Heading: import('react').ForwardRefExoticComponent<HeadingProps & import('react').RefAttributes<HTMLHeadingElement>>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as l } from "react";
|
|
3
|
+
import { clsx as d } from "clsx";
|
|
4
|
+
import * as t from "prop-types";
|
|
5
|
+
/* empty css */
|
|
6
|
+
const a = l(
|
|
7
|
+
({ className: i, children: m, level: e = 1, truncate: p, lines: o, style: r, ...n }, c) => {
|
|
8
|
+
const s = `h${e}`, u = o ? { ...r, "--ui-line-clamp": o } : r;
|
|
9
|
+
return /* @__PURE__ */ f(
|
|
10
|
+
s,
|
|
11
|
+
{
|
|
12
|
+
ref: c,
|
|
13
|
+
className: d(
|
|
14
|
+
"ui-heading",
|
|
15
|
+
`ui-heading-h${e}`,
|
|
16
|
+
p && "ui-text-truncate",
|
|
17
|
+
o && "ui-text-clamp",
|
|
18
|
+
i
|
|
19
|
+
),
|
|
20
|
+
style: u,
|
|
21
|
+
...n,
|
|
22
|
+
children: m
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
a.displayName = "Heading";
|
|
28
|
+
a.propTypes = {
|
|
29
|
+
level: t.oneOf([1, 2, 3, 4, 5, 6]),
|
|
30
|
+
truncate: t.bool,
|
|
31
|
+
lines: t.number
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
a as Heading
|
|
35
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HTMLAttributes, ElementType } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Text typography component properties.
|
|
5
|
+
*/
|
|
6
|
+
export interface TextProps extends HTMLAttributes<HTMLElement> {
|
|
7
|
+
/**
|
|
8
|
+
* The value scale variant.
|
|
9
|
+
* @default 'body'
|
|
10
|
+
*/
|
|
11
|
+
variant?: 'body' | 'small' | 'caption' | 'lead';
|
|
12
|
+
/**
|
|
13
|
+
* The font weight.
|
|
14
|
+
*/
|
|
15
|
+
weight?: 'normal' | 'medium' | 'semibold' | 'bold';
|
|
16
|
+
/**
|
|
17
|
+
* If true, applies styling to represent secondary or muted text.
|
|
18
|
+
*/
|
|
19
|
+
muted?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* If true, truncates text with an ellipsis if it overflows one line.
|
|
22
|
+
*/
|
|
23
|
+
truncate?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Clamps the text to a specific number of lines.
|
|
26
|
+
*/
|
|
27
|
+
lines?: number;
|
|
28
|
+
/**
|
|
29
|
+
* The HTML component to render (e.g., 'p', 'span', 'div').
|
|
30
|
+
* @default 'p'
|
|
31
|
+
*/
|
|
32
|
+
as?: ElementType;
|
|
33
|
+
}
|
|
34
|
+
export declare const Text: import('react').ForwardRefExoticComponent<TextProps & import('react').RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as f } from "react";
|
|
3
|
+
import { clsx as b } from "clsx";
|
|
4
|
+
import * as t from "prop-types";
|
|
5
|
+
/* empty css */
|
|
6
|
+
const r = f(
|
|
7
|
+
({ className: a, children: i, variant: p = "body", weight: o, muted: l, truncate: n, lines: e, as: u = "p", style: m, ...s }, x) => {
|
|
8
|
+
const c = e ? { ...m, "--ui-line-clamp": e } : m;
|
|
9
|
+
return /* @__PURE__ */ d(
|
|
10
|
+
u,
|
|
11
|
+
{
|
|
12
|
+
ref: x,
|
|
13
|
+
className: b(
|
|
14
|
+
"ui-text",
|
|
15
|
+
`ui-text-${p}`,
|
|
16
|
+
o && `ui-text-weight-${o}`,
|
|
17
|
+
l && "ui-text-muted",
|
|
18
|
+
n && "ui-text-truncate",
|
|
19
|
+
e && "ui-text-clamp",
|
|
20
|
+
a
|
|
21
|
+
),
|
|
22
|
+
style: c,
|
|
23
|
+
...s,
|
|
24
|
+
children: i
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
r.displayName = "Text";
|
|
30
|
+
r.propTypes = {
|
|
31
|
+
variant: t.oneOf(["body", "small", "caption", "lead"]),
|
|
32
|
+
weight: t.oneOf(["normal", "medium", "semibold", "bold"]),
|
|
33
|
+
muted: t.bool,
|
|
34
|
+
truncate: t.bool,
|
|
35
|
+
lines: t.number,
|
|
36
|
+
as: t.elementType
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
r as Text
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--ui-primary: #2563eb;--ui-primary-hover: color-mix(in srgb, var(--ui-primary), black 10%);--ui-primary-active: color-mix(in srgb, var(--ui-primary), black 20%);--ui-primary-light: #eff6ff;--ui-text-main: #111827;--ui-text-muted: #6b7280;--ui-border: #e5e7eb;--ui-border-hover: #d1d5db;--ui-bg-main: #ffffff;--ui-bg-subtle: #f9fafb;--ui-danger: #ef4444;--ui-success: #10b981;--ui-warning: #f59e0b;--ui-font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ui-font-size-sm: 12px;--ui-font-size-md: 13px;--ui-font-size-lg: 16px;--ui-font-size-xl: 21px;--ui-spacing-xs: 4px;--ui-spacing-xsl: 6px;--ui-spacing-sm: 8px;--ui-spacing-md: 12px;--ui-spacing-lg: 16px;--ui-spacing-xl: 21px;--ui-spacing-xxl: 24px;--ui-radius-sm: 2px;--ui-radius-md: 4px;--ui-radius-lg: 8px;--ui-radius-xl: 16px;--ui-radius-full: 50%;--ui-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--ui-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ui-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -2px rgb(0 0 0 / .05);--ui-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 10px 10px -5px rgb(0 0 0 / .04);--ui-btn-bg: transparent;--ui-btn-text: var(--ui-text-main);--ui-btn-border: transparent;--ui-btn-radius: var(--ui-radius-md);--ui-btn-padding: .5rem 1rem;--ui-btn-font-size: .95rem;--ui-btn-radius-sm: var(--ui-radius-md);--ui-btn-radius-md: var(--ui-radius-md);--ui-btn-radius-lg: var(--ui-radius-md);--ui-btn-radius-xl: var(--ui-radius-md);--ui-btn-padding-sm: .1rem .5rem;--ui-btn-padding-md: .25rem .5rem;--ui-btn-padding-lg: .25rem 1rem;--ui-btn-padding-xl: .5rem 1rem;--ui-btn-font-size-sm: var(--ui-font-size-sm);--ui-btn-font-size-md: var(--ui-font-size-md);--ui-btn-font-size-lg: var(--ui-font-size-lg);--ui-btn-font-size-xl: var(--ui-font-size-xl);--ui-input-radius: var(--ui-radius-md);--ui-input-bg: var(--ui-bg-main);--ui-input-border: 1px solid var(--ui-border);--ui-input-color: var(--ui-text-main);--ui-input-placeholder: var(--ui-text-muted);--ui-input-focus-border: var(--ui-primary);--ui-input-focus-ring: 0 0 0 3px var(--ui-primary-light);--ui-input-error-border: var(--ui-danger);--ui-input-error-ring: 0 0 0 3px rgba(239, 68, 68, .15);--ui-input-size-sm-padding: .35rem .5rem;--ui-input-size-sm-font-size: var(--ui-font-size-sm);--ui-input-size-md-padding: .5rem .75rem;--ui-input-size-md-font-size: var(--ui-font-size-md);--ui-input-size-lg-padding: .7rem 1rem;--ui-input-size-lg-font-size: var(--ui-font-size-lg);--ui-input-size-xl-padding: 1rem 1.25rem;--ui-input-size-xl-font-size: var(--ui-font-size-xl);--ui-select-radius: var(--ui-radius-md);--ui-select-bg: var(--ui-bg-main);--ui-select-border: 1px solid var(--ui-border);--ui-select-color: var(--ui-text-main);--ui-select-placeholder: var(--ui-text-muted);--ui-select-focus-border: var(--ui-primary);--ui-select-focus-ring: 0 0 0 3px var(--ui-primary-light);--ui-select-error-border: var(--ui-danger);--ui-select-error-ring: 0 0 0 3px rgba(239, 68, 68, .15);--ui-select-menu-bg: var(--ui-bg-main);--ui-select-menu-border: 1px solid var(--ui-border);--ui-select-menu-shadow: var(--ui-shadow-lg);--ui-select-option-hover-bg: var(--ui-bg-subtle);--ui-select-option-selected-bg: var(--ui-primary-light);--ui-select-option-selected-color: var(--ui-primary);--ui-select-size-sm-padding: var(--ui-input-size-sm-padding);--ui-select-size-sm-font-size: var(--ui-input-size-sm-font-size);--ui-select-size-md-padding: var(--ui-input-size-md-padding);--ui-select-size-md-font-size: var(--ui-input-size-md-font-size);--ui-select-size-lg-padding: var(--ui-input-size-lg-padding);--ui-select-size-lg-font-size: var(--ui-input-size-lg-font-size);--ui-select-size-xl-padding: var(--ui-input-size-xl-padding);--ui-select-size-xl-font-size: var(--ui-input-size-xl-font-size);--ui-card-radius: var(--ui-radius-md);--ui-card-bg: var(--ui-bg-main);--ui-card-border: 1px solid var(--ui-border);--ui-card-shadow: none;--ui-card-padding: var(--ui-spacing-md);--ui-card-header-bg: transparent;--ui-card-header-padding: var(--ui-spacing-md) var(--ui-spacing-md);--ui-card-header-border: 1px solid var(--ui-border);--ui-card-header-font-size: var(--ui-font-size-lg);--ui-card-font-size: var(--ui-font-size-md);--ui-card-footer-bg: var(--ui-bg-subtle);--ui-card-footer-padding: var(--ui-spacing-md) var(--ui-spacing-md);--ui-card-footer-border: 1px solid var(--ui-border);--ui-modal-radius: var(--ui-radius-lg);--ui-modal-bg: var(--ui-bg-main);--ui-modal-shadow: var(--ui-shadow-xl);--ui-modal-backdrop-bg: rgba(0, 0, 0, .4);--ui-modal-backdrop-blur: none;--ui-modal-border: 1px solid var(--ui-border);--ui-modal-z-index: 50;--ui-modal-header-padding: 1.25rem 1.5rem;--ui-modal-body-padding: 1.5rem;--ui-modal-footer-padding: 1.25rem 1.5rem;--ui-modal-size-sm-width: 400px;--ui-modal-size-md-width: 550px;--ui-modal-size-lg-width: 750px;--ui-modal-size-xl-width: 1140px;--ui-checkbox-size: 1.125rem;--ui-checkbox-radius: var(--ui-radius-sm);--ui-checkbox-bg: var(--ui-bg-main);--ui-checkbox-border: 1px solid var(--ui-border);--ui-checkbox-checked-bg: var(--ui-primary);--ui-checkbox-checked-border: var(--ui-primary);--ui-checkbox-checked-color: #ffffff;--ui-checkbox-disabled-opacity: .6;--ui-checkbox-size-sm-size: 1rem;--ui-checkbox-size-sm-font-size: var(--ui-font-size-sm);--ui-checkbox-size-md-size: 1.125rem;--ui-checkbox-size-md-font-size: var(--ui-font-size-md);--ui-checkbox-size-lg-size: 1.35rem;--ui-checkbox-size-lg-font-size: var(--ui-font-size-lg);--ui-checkbox-size-xl-size: 1.65rem;--ui-checkbox-size-xl-font-size: var(--ui-font-size-xl);--ui-radio-size: 1.125rem;--ui-radio-bg: var(--ui-bg-main);--ui-radio-border: 1px solid var(--ui-border);--ui-radio-checked-bg: var(--ui-primary);--ui-radio-checked-border: var(--ui-primary);--ui-radio-checked-color: #ffffff;--ui-radio-disabled-opacity: .6;--ui-radio-size-sm-size: 1rem;--ui-radio-size-sm-font-size: var(--ui-font-size-sm);--ui-radio-size-md-size: 1.125rem;--ui-radio-size-md-font-size: var(--ui-font-size-md);--ui-radio-size-lg-size: 1.35rem;--ui-radio-size-lg-font-size: var(--ui-font-size-lg);--ui-radio-size-xl-size: 1.65rem;--ui-radio-size-xl-font-size: var(--ui-font-size-xl);--ui-switch-width: 2.75rem;--ui-switch-height: 1.5rem;--ui-switch-bg: var(--ui-bg-subtle);--ui-switch-checked-bg: var(--ui-primary);--ui-switch-thumb-size: 1.125rem;--ui-switch-thumb-bg: #ffffff;--ui-switch-thumb-shadow: 0 1px 2px 0 rgb(0 0 0 / .15);--ui-switch-focus-ring: 0 0 0 3px var(--ui-primary-light);--ui-switch-disabled-opacity: .6;--ui-switch-size-sm-width: 2rem;--ui-switch-size-sm-height: 1.125rem;--ui-switch-size-sm-thumb-size: .8rem;--ui-switch-size-md-width: 2.75rem;--ui-switch-size-md-height: 1.5rem;--ui-switch-size-md-thumb-size: 1.125rem;--ui-switch-size-lg-width: 3.5rem;--ui-switch-size-lg-height: 1.875rem;--ui-switch-size-lg-thumb-size: 1.45rem;--ui-switch-size-xl-width: 4.25rem;--ui-switch-size-xl-height: 2.25rem;--ui-switch-size-xl-thumb-size: 1.75rem;--ui-badge-radius: var(--ui-radius-sm);--ui-badge-font-weight: 500;--ui-badge-size-sm-padding: .125rem .5rem;--ui-badge-size-sm-font-size: .75rem;--ui-badge-size-md-padding: .25rem .75rem;--ui-badge-size-md-font-size: .875rem;--ui-badge-size-lg-padding: .375rem .875rem;--ui-badge-size-lg-font-size: 1rem;--ui-badge-primary-bg: var(--ui-primary);--ui-badge-primary-text: #ffffff;--ui-badge-success-bg: var(--ui-success);--ui-badge-success-text: #ffffff;--ui-badge-warning-bg: var(--ui-warning);--ui-badge-warning-text: #ffffff;--ui-badge-danger-bg: var(--ui-danger);--ui-badge-danger-text: #ffffff;--ui-badge-neutral-bg: var(--ui-bg-subtle);--ui-badge-neutral-text: var(--ui-text-main);--ui-heading-h1-size: 2.5rem;--ui-heading-h1-line-height: 1.2;--ui-heading-h1-weight: 700;--ui-heading-h2-size: 2rem;--ui-heading-h2-line-height: 1.3;--ui-heading-h2-weight: 600;--ui-heading-h3-size: 1.75rem;--ui-heading-h3-line-height: 1.3;--ui-heading-h3-weight: 600;--ui-heading-h4-size: 1.5rem;--ui-heading-h4-line-height: 1.4;--ui-heading-h4-weight: 600;--ui-heading-h5-size: 1.25rem;--ui-heading-h5-line-height: 1.4;--ui-heading-h5-weight: 600;--ui-heading-h6-size: 1rem;--ui-heading-h6-line-height: 1.4;--ui-heading-h6-weight: 600;--ui-text-body-size: 1rem;--ui-text-body-line-height: 1.5;--ui-text-small-size: .875rem;--ui-text-small-line-height: 1.4;--ui-text-caption-size: .75rem;--ui-text-caption-line-height: 1.4;--ui-text-lead-weight: 400;--ui-tabs-border-color: var(--ui-border);--ui-tabs-active-color: var(--ui-primary);--ui-tabs-inactive-color: var(--ui-text-muted);--ui-tabs-hover-bg: var(--ui-bg-subtle);--ui-tabs-trigger-padding: .75rem 1rem;--ui-tabs-trigger-weight: 500;--ui-tabs-trigger-font-size: .95rem;--ui-tabs-content-padding: 1rem 0}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}body{line-height:1;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:var(--ui-font-size-md)}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;outline:none}table{border-collapse:collapse}button{background:none;border:none;cursor:pointer}.ui-m-xs{margin:var(--ui-spacing-xs)}.ui-mt-xs{margin-top:var(--ui-spacing-xs)}.ui-mb-xs{margin-bottom:var(--ui-spacing-xs)}.ui-ml-xs{margin-left:var(--ui-spacing-xs)}.ui-mr-xs{margin-right:var(--ui-spacing-xs)}.ui-mx-xs{margin-left:var(--ui-spacing-xs);margin-right:var(--ui-spacing-xs)}.ui-my-xs{margin-top:var(--ui-spacing-xs);margin-bottom:var(--ui-spacing-xs)}.ui-p-xs{padding:var(--ui-spacing-xs)}.ui-pt-xs{padding-top:var(--ui-spacing-xs)}.ui-pb-xs{padding-bottom:var(--ui-spacing-xs)}.ui-pl-xs{padding-left:var(--ui-spacing-xs)}.ui-pr-xs{padding-right:var(--ui-spacing-xs)}.ui-px-xs{padding-left:var(--ui-spacing-xs);padding-right:var(--ui-spacing-xs)}.ui-py-xs{padding-top:var(--ui-spacing-xs);padding-bottom:var(--ui-spacing-xs)}.ui-m-xsl{margin:var(--ui-spacing-xsl)}.ui-mt-xsl{margin-top:var(--ui-spacing-xsl)}.ui-mb-xsl{margin-bottom:var(--ui-spacing-xsl)}.ui-ml-xsl{margin-left:var(--ui-spacing-xsl)}.ui-mr-xsl{margin-right:var(--ui-spacing-xsl)}.ui-mx-xsl{margin-left:var(--ui-spacing-xsl);margin-right:var(--ui-spacing-xsl)}.ui-my-xsl{margin-top:var(--ui-spacing-xsl);margin-bottom:var(--ui-spacing-xsl)}.ui-p-xsl{padding:var(--ui-spacing-xsl)}.ui-pt-xsl{padding-top:var(--ui-spacing-xsl)}.ui-pb-xsl{padding-bottom:var(--ui-spacing-xsl)}.ui-pl-xsl{padding-left:var(--ui-spacing-xsl)}.ui-pr-xsl{padding-right:var(--ui-spacing-xsl)}.ui-px-xsl{padding-left:var(--ui-spacing-xsl);padding-right:var(--ui-spacing-xsl)}.ui-py-xsl{padding-top:var(--ui-spacing-xsl);padding-bottom:var(--ui-spacing-xsl)}.ui-m-sm{margin:var(--ui-spacing-sm)}.ui-mt-sm{margin-top:var(--ui-spacing-sm)}.ui-mb-sm{margin-bottom:var(--ui-spacing-sm)}.ui-ml-sm{margin-left:var(--ui-spacing-sm)}.ui-mr-sm{margin-right:var(--ui-spacing-sm)}.ui-mx-sm{margin-left:var(--ui-spacing-sm);margin-right:var(--ui-spacing-sm)}.ui-my-sm{margin-top:var(--ui-spacing-sm);margin-bottom:var(--ui-spacing-sm)}.ui-p-sm{padding:var(--ui-spacing-sm)}.ui-pt-sm{padding-top:var(--ui-spacing-sm)}.ui-pb-sm{padding-bottom:var(--ui-spacing-sm)}.ui-pl-sm{padding-left:var(--ui-spacing-sm)}.ui-pr-sm{padding-right:var(--ui-spacing-sm)}.ui-px-sm{padding-left:var(--ui-spacing-sm);padding-right:var(--ui-spacing-sm)}.ui-py-sm{padding-top:var(--ui-spacing-sm);padding-bottom:var(--ui-spacing-sm)}.ui-m-md{margin:var(--ui-spacing-md)}.ui-mt-md{margin-top:var(--ui-spacing-md)}.ui-mb-md{margin-bottom:var(--ui-spacing-md)}.ui-ml-md{margin-left:var(--ui-spacing-md)}.ui-mr-md{margin-right:var(--ui-spacing-md)}.ui-mx-md{margin-left:var(--ui-spacing-md);margin-right:var(--ui-spacing-md)}.ui-my-md{margin-top:var(--ui-spacing-md);margin-bottom:var(--ui-spacing-md)}.ui-p-md{padding:var(--ui-spacing-md)}.ui-pt-md{padding-top:var(--ui-spacing-md)}.ui-pb-md{padding-bottom:var(--ui-spacing-md)}.ui-pl-md{padding-left:var(--ui-spacing-md)}.ui-pr-md{padding-right:var(--ui-spacing-md)}.ui-px-md{padding-left:var(--ui-spacing-md);padding-right:var(--ui-spacing-md)}.ui-py-md{padding-top:var(--ui-spacing-md);padding-bottom:var(--ui-spacing-md)}.ui-m-lg{margin:var(--ui-spacing-lg)}.ui-mt-lg{margin-top:var(--ui-spacing-lg)}.ui-mb-lg{margin-bottom:var(--ui-spacing-lg)}.ui-ml-lg{margin-left:var(--ui-spacing-lg)}.ui-mr-lg{margin-right:var(--ui-spacing-lg)}.ui-mx-lg{margin-left:var(--ui-spacing-lg);margin-right:var(--ui-spacing-lg)}.ui-my-lg{margin-top:var(--ui-spacing-lg);margin-bottom:var(--ui-spacing-lg)}.ui-p-lg{padding:var(--ui-spacing-lg)}.ui-pt-lg{padding-top:var(--ui-spacing-lg)}.ui-pb-lg{padding-bottom:var(--ui-spacing-lg)}.ui-pl-lg{padding-left:var(--ui-spacing-lg)}.ui-pr-lg{padding-right:var(--ui-spacing-lg)}.ui-px-lg{padding-left:var(--ui-spacing-lg);padding-right:var(--ui-spacing-lg)}.ui-py-lg{padding-top:var(--ui-spacing-lg);padding-bottom:var(--ui-spacing-lg)}.ui-m-xl{margin:var(--ui-spacing-xl)}.ui-mt-xl{margin-top:var(--ui-spacing-xl)}.ui-mb-xl{margin-bottom:var(--ui-spacing-xl)}.ui-ml-xl{margin-left:var(--ui-spacing-xl)}.ui-mr-xl{margin-right:var(--ui-spacing-xl)}.ui-mx-xl{margin-left:var(--ui-spacing-xl);margin-right:var(--ui-spacing-xl)}.ui-my-xl{margin-top:var(--ui-spacing-xl);margin-bottom:var(--ui-spacing-xl)}.ui-p-xl{padding:var(--ui-spacing-xl)}.ui-pt-xl{padding-top:var(--ui-spacing-xl)}.ui-pb-xl{padding-bottom:var(--ui-spacing-xl)}.ui-pl-xl{padding-left:var(--ui-spacing-xl)}.ui-pr-xl{padding-right:var(--ui-spacing-xl)}.ui-px-xl{padding-left:var(--ui-spacing-xl);padding-right:var(--ui-spacing-xl)}.ui-py-xl{padding-top:var(--ui-spacing-xl);padding-bottom:var(--ui-spacing-xl)}.ui-m-xxl{margin:var(--ui-spacing-xxl)}.ui-mt-xxl{margin-top:var(--ui-spacing-xxl)}.ui-mb-xxl{margin-bottom:var(--ui-spacing-xxl)}.ui-ml-xxl{margin-left:var(--ui-spacing-xxl)}.ui-mr-xxl{margin-right:var(--ui-spacing-xxl)}.ui-mx-xxl{margin-left:var(--ui-spacing-xxl);margin-right:var(--ui-spacing-xxl)}.ui-my-xxl{margin-top:var(--ui-spacing-xxl);margin-bottom:var(--ui-spacing-xxl)}.ui-p-xxl{padding:var(--ui-spacing-xxl)}.ui-pt-xxl{padding-top:var(--ui-spacing-xxl)}.ui-pb-xxl{padding-bottom:var(--ui-spacing-xxl)}.ui-pl-xxl{padding-left:var(--ui-spacing-xxl)}.ui-pr-xxl{padding-right:var(--ui-spacing-xxl)}.ui-px-xxl{padding-left:var(--ui-spacing-xxl);padding-right:var(--ui-spacing-xxl)}.ui-py-xxl{padding-top:var(--ui-spacing-xxl);padding-bottom:var(--ui-spacing-xxl)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--ui-btn-padding);font-size:var(--ui-btn-font-size);border:1px solid transparent;border-radius:var(--ui-radius-md);font-family:var(--ui-font-family);font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);line-height:1.5;text-decoration:none;-webkit-user-select:none;user-select:none}.ui-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.ui-btn-primary{background-color:var(--ui-primary);color:#fff;border-color:var(--ui-primary)}.ui-btn-primary:hover{background-color:var(--ui-primary-hover);border-color:var(--ui-primary-hover)}.ui-btn-primary:active{background-color:var(--ui-primary-active)}.ui-btn-secondary{background-color:#fff;color:var(--ui-text-main);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-sm)}.ui-btn-secondary:hover{background-color:var(--ui-bg-subtle);border-color:var(--ui-border-hover);color:#000}.ui-btn-outline{background-color:transparent;color:var(--ui-primary);border-color:var(--ui-primary)}.ui-btn-outline:hover{background-color:var(--ui-primary-light)}.ui-btn-outline-danger{background-color:transparent;color:var(--ui-danger);border:1px solid var(--ui-danger)}.ui-btn-outline-danger:hover{background-color:color-mix(in srgb,var(--ui-danger),transparent 90%)}.ui-btn-outline-success{background-color:transparent;color:var(--ui-success);border:1px solid var(--ui-success)}.ui-btn-outline-success:hover{background-color:color-mix(in srgb,var(--ui-success),transparent 90%)}.ui-btn-outline-warning{background-color:transparent;color:var(--ui-warning);border:1px solid var(--ui-warning)}.ui-btn-outline-warning:hover{background-color:color-mix(in srgb,var(--ui-warning),transparent 90%)}.ui-btn-danger{background-color:var(--ui-danger);color:#fff;border-color:var(--ui-danger)}.ui-btn-danger:hover{background-color:color-mix(in srgb,var(--ui-danger),black 10%);border-color:color-mix(in srgb,var(--ui-danger),black 10%)}.ui-btn-success{background-color:var(--ui-success);color:#fff;border-color:var(--ui-success)}.ui-btn-success:hover{background-color:color-mix(in srgb,var(--ui-success),black 10%);border-color:color-mix(in srgb,var(--ui-success),black 10%)}.ui-btn-warning{background-color:var(--ui-warning);color:#fff;border-color:var(--ui-warning)}.ui-btn-warning:hover{background-color:color-mix(in srgb,var(--ui-warning),black 10%);border-color:color-mix(in srgb,var(--ui-warning),black 10%)}.ui-btn-ghost{background-color:transparent;color:var(--ui-text-main)}.ui-btn-ghost:hover{background-color:var(--ui-bg-subtle)}.ui-btn-sm{--ui-btn-padding: var(--ui-btn-padding-sm);--ui-btn-font-size: var(--ui-btn-font-size-sm);border-radius:var(--ui-btn-radius-sm, var(--ui-radius-sm))}.ui-btn-md{--ui-btn-padding: var(--ui-btn-padding-md);--ui-btn-font-size: var(--ui-btn-font-size-md);border-radius:var(--ui-btn-radius-md, var(--ui-radius-md))}.ui-btn-lg{--ui-btn-padding: var(--ui-btn-padding-lg);--ui-btn-font-size: var(--ui-btn-font-size-lg);border-radius:var(--ui-btn-radius-lg, var(--ui-radius-lg))}.ui-btn-xl{--ui-btn-padding: var(--ui-btn-padding-xl);--ui-btn-font-size: var(--ui-btn-font-size-xl);border-radius:var(--ui-btn-radius-xl, var(--ui-radius-xl))}.ui-btn:focus-visible{outline:2px solid var(--ui-primary);outline-offset:2px}.ui-btn:disabled,.ui-btn[aria-disabled=true]{opacity:.6;cursor:not-allowed;pointer-events:none;filter:grayscale(.5)}.ui-input-wrapper{display:inline-flex;flex-direction:column;gap:.375rem}.ui-input-wrapper-full{display:flex;width:100%}.ui-input-error{border-color:var(--ui-danger)}.ui-input-error:focus{box-shadow:0 0 0 3px #ef444426}.ui-label{font-size:.875rem;font-weight:500;color:var(--ui-text-main)}.ui-input{display:block;width:100%;padding:var(--ui-input-size-md-padding);font-size:var(--ui-input-size-md-font-size);font-family:var(--ui-font-family);color:var(--ui-input-color);background-color:var(--ui-input-bg);border:var(--ui-input-border);border-radius:var(--ui-input-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.ui-input::placeholder{color:var(--ui-input-placeholder);opacity:.8}.ui-input:hover{border-color:var(--ui-border-hover)}.ui-input:focus{border-color:var(--ui-input-focus-border);outline:0;box-shadow:var(--ui-input-focus-ring)}.ui-input-sm{padding:var(--ui-input-size-sm-padding);font-size:var(--ui-input-size-sm-font-size)}.ui-input-md{padding:var(--ui-input-size-md-padding);font-size:var(--ui-input-size-md-font-size)}.ui-input-lg{padding:var(--ui-input-size-lg-padding);font-size:var(--ui-input-size-lg-font-size)}.ui-input-xl{padding:var(--ui-input-size-xl-padding);font-size:var(--ui-input-size-xl-font-size)}.ui-input-error{border-color:var(--ui-input-error-border)}.ui-input-error:focus{border-color:var(--ui-input-error-border);box-shadow:var(--ui-input-error-ring)}.ui-helper-text{font-size:.8rem;color:var(--ui-text-muted)}.ui-helper-text-error{color:var(--ui-danger)}.ui-card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:var(--ui-card-bg);border:var(--ui-card-border);border-radius:var(--ui-card-radius);box-shadow:var(--ui-card-shadow);transition:border-color .2s ease,box-shadow .2s ease}.ui-card:hover{border-color:var(--ui-border-hover)}.ui-card__header{padding:var(--ui-card-header-padding);margin-bottom:0;background-color:var(--ui-card-header-bg);border-bottom:var(--ui-card-header-border);font-weight:600;font-size:var(--ui-card-header-font-size);color:var(--ui-text-main);border-top-left-radius:calc(var(--ui-card-radius) - 1px);border-top-right-radius:calc(var(--ui-card-radius) - 1px)}.ui-card__body{flex:1 1 auto;padding:var(--ui-card-padding);color:var(--ui-text-muted);font-size:var(--ui-card-font-size);line-height:1.6}.ui-card__footer{padding:var(--ui-card-footer-padding);background-color:var(--ui-card-footer-bg);border-top:var(--ui-card-footer-border);display:flex;align-items:center;border-bottom-left-radius:calc(var(--ui-card-radius) - 1px);border-bottom-right-radius:calc(var(--ui-card-radius) - 1px)}.ui-modal-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background-color:var(--ui-modal-backdrop-bg);-webkit-backdrop-filter:var(--ui-modal-backdrop-blur);backdrop-filter:var(--ui-modal-backdrop-blur);z-index:var(--ui-modal-z-index);padding:1rem;animation:ui-modal-fade-in .15s linear}.ui-modal{position:relative;display:flex;flex-direction:column;width:100%;max-height:90vh;background-color:var(--ui-modal-bg);border:var(--ui-modal-border);border-radius:var(--ui-modal-radius);box-shadow:var(--ui-modal-shadow);color:var(--ui-text-main);animation:ui-modal-slide-down .3s ease-out}.ui-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ui-modal-header-padding);border-bottom:1px solid var(--ui-border)}.ui-modal-title{margin:0;font-size:1.125rem;font-weight:600}.ui-modal-close{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:transparent;border:none;cursor:pointer;color:var(--ui-text-muted);border-radius:var(--ui-radius-sm);transition:all .2s}.ui-modal-close:hover{background-color:var(--ui-bg-subtle);color:var(--ui-text-main)}.ui-modal-body{padding:var(--ui-modal-body-padding);overflow-y:auto;font-size:.95rem;line-height:1.5}.ui-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:var(--ui-modal-footer-padding);background-color:var(--ui-bg-subtle);border-top:1px solid var(--ui-border);border-bottom-left-radius:calc(var(--ui-modal-radius) - 1px);border-bottom-right-radius:calc(var(--ui-modal-radius) - 1px)}.ui-modal-sm{max-width:var(--ui-modal-size-sm-width)}.ui-modal-md{max-width:var(--ui-modal-size-md-width)}.ui-modal-lg{max-width:var(--ui-modal-size-lg-width)}.ui-modal-xl{max-width:var(--ui-modal-size-xl-width)}@keyframes ui-modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ui-modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes ui-modal-slide-down{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:none}}@keyframes ui-modal-slide-up{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-50px)}}.ui-modal-overlay.ui-modal-closing{animation:ui-modal-fade-out .15s linear forwards}.ui-modal.ui-modal-closing{animation:ui-modal-slide-up .3s ease-out forwards}.ui-select-wrapper{position:relative;width:100%}.ui-select-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;text-align:left;background-color:var(--ui-select-bg);border:var(--ui-select-border);border-radius:var(--ui-select-radius);color:var(--ui-select-color);transition:all .15s ease-in-out}.ui-select-trigger:focus{outline:none;border-color:var(--ui-select-focus-border);box-shadow:var(--ui-select-focus-ring)}.ui-select-trigger.ui-select-error{border-color:var(--ui-select-error-border)}.ui-select-trigger.ui-select-error:focus{box-shadow:var(--ui-select-error-ring)}.ui-select-trigger.ui-select-disabled{opacity:.6;cursor:not-allowed;background-color:var(--ui-bg-subtle)}.ui-select-placeholder{color:var(--ui-select-placeholder)}.ui-select-icon{width:1.25rem;height:1.25rem;color:var(--ui-text-muted);transition:transform .2s}.ui-select-open .ui-select-icon{transform:rotate(180deg)}.ui-select-menu{position:absolute;top:100%;left:0;width:100%;margin-top:4px;padding:4px;background-color:var(--ui-select-menu-bg);border:var(--ui-select-menu-border);border-radius:var(--ui-select-radius);box-shadow:var(--ui-select-menu-shadow);z-index:10;max-height:250px;overflow-y:auto;animation:ui-select-fade-in .1s ease-out}.ui-select-option{display:flex;align-items:center;width:100%;padding:.5rem .75rem;font-size:.95rem;cursor:pointer;border-radius:var(--ui-radius-sm);color:var(--ui-text-main);transition:background-color .1s}.ui-select-option:hover{background-color:var(--ui-select-option-hover-bg)}.ui-select-option.ui-select-selected{background-color:var(--ui-select-option-selected-bg);color:var(--ui-select-option-selected-color);font-weight:500}.ui-select-sm{padding:var(--ui-select-size-sm-padding);font-size:var(--ui-select-size-sm-font-size)}.ui-select-md{padding:var(--ui-select-size-md-padding);font-size:var(--ui-select-size-md-font-size)}.ui-select-lg{padding:var(--ui-select-size-lg-padding);font-size:var(--ui-select-size-lg-font-size)}.ui-select-xl{padding:var(--ui-select-size-xl-padding);font-size:var(--ui-select-size-xl-font-size)}@keyframes ui-select-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ui-checkbox-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-size:var(--ui-checkbox-font-size, .95rem);-webkit-user-select:none;user-select:none;color:var(--ui-text-main)}.ui-checkbox-label.ui-checkbox-disabled{cursor:not-allowed;opacity:var(--ui-checkbox-disabled-opacity)}.ui-checkbox-input{position:absolute;opacity:0;width:0;height:0}.ui-checkbox-custom{display:flex;align-items:center;justify-content:center;width:var(--ui-checkbox-size);height:var(--ui-checkbox-size);background-color:var(--ui-checkbox-bg);border:var(--ui-checkbox-border);border-radius:var(--ui-checkbox-radius);transition:all .15s ease-in-out;color:transparent;flex-shrink:0}.ui-checkbox-label:hover .ui-checkbox-custom{border-color:var(--ui-border-hover)}.ui-checkbox-input:focus+.ui-checkbox-custom{box-shadow:0 0 0 3px var(--ui-primary-light);border-color:var(--ui-primary)}.ui-checkbox-input:checked+.ui-checkbox-custom{background-color:var(--ui-checkbox-checked-bg);border-color:var(--ui-checkbox-checked-border);color:var(--ui-checkbox-checked-color)}.ui-checkbox-icon{width:.8em;height:.8em;stroke-width:3}.ui-checkbox-sm{--ui-checkbox-size: var(--ui-checkbox-size-sm-size);font-size:var(--ui-checkbox-size-sm-font-size)}.ui-checkbox-md{--ui-checkbox-size: var(--ui-checkbox-size-md-size);font-size:var(--ui-checkbox-size-md-font-size)}.ui-checkbox-lg{--ui-checkbox-size: var(--ui-checkbox-size-lg-size);font-size:var(--ui-checkbox-size-lg-font-size)}.ui-checkbox-xl{--ui-checkbox-size: var(--ui-checkbox-size-xl-size);font-size:var(--ui-checkbox-size-xl-font-size)}.ui-checkbox-primary .ui-checkbox-input:checked+.ui-checkbox-custom{background-color:var(--ui-primary);border-color:var(--ui-primary)}.ui-checkbox-primary .ui-checkbox-input:focus+.ui-checkbox-custom{box-shadow:0 0 0 3px var(--ui-primary-light);border-color:var(--ui-primary)}.ui-checkbox-success .ui-checkbox-input:checked+.ui-checkbox-custom{background-color:var(--ui-success);border-color:var(--ui-success)}.ui-checkbox-success .ui-checkbox-input:focus+.ui-checkbox-custom{box-shadow:0 0 0 3px #10b98140;border-color:var(--ui-success)}.ui-checkbox-warning .ui-checkbox-input:checked+.ui-checkbox-custom{background-color:var(--ui-warning);border-color:var(--ui-warning)}.ui-checkbox-warning .ui-checkbox-input:focus+.ui-checkbox-custom{box-shadow:0 0 0 3px #f59e0b40;border-color:var(--ui-warning)}.ui-checkbox-danger .ui-checkbox-input:checked+.ui-checkbox-custom{background-color:var(--ui-danger);border-color:var(--ui-danger)}.ui-checkbox-danger .ui-checkbox-input:focus+.ui-checkbox-custom{box-shadow:0 0 0 3px #ef444440;border-color:var(--ui-danger)}.ui-radio-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-size:var(--ui-radio-font-size, .95rem);-webkit-user-select:none;user-select:none;color:var(--ui-text-main)}.ui-radio-label.ui-radio-disabled{cursor:not-allowed;opacity:var(--ui-radio-disabled-opacity)}.ui-radio-input{position:absolute;opacity:0;width:0;height:0}.ui-radio-custom{display:flex;align-items:center;justify-content:center;width:var(--ui-radio-size);height:var(--ui-radio-size);background-color:var(--ui-radio-bg);border:var(--ui-radio-border);border-radius:50%;transition:all .15s ease-in-out;flex-shrink:0}.ui-radio-dot{width:.5em;height:.5em;background-color:var(--ui-radio-checked-color);border-radius:50%;transform:scale(0);transition:transform .15s ease-in-out}.ui-radio-label:hover .ui-radio-custom{border-color:var(--ui-border-hover)}.ui-radio-input:focus+.ui-radio-custom{box-shadow:0 0 0 3px var(--ui-primary-light);border-color:var(--ui-primary)}.ui-radio-input:checked+.ui-radio-custom{background-color:var(--ui-radio-checked-bg);border-color:var(--ui-radio-checked-border)}.ui-radio-input:checked+.ui-radio-custom .ui-radio-dot{transform:scale(1)}.ui-radio-sm{--ui-radio-size: var(--ui-radio-size-sm-size);font-size:var(--ui-radio-size-sm-font-size)}.ui-radio-md{--ui-radio-size: var(--ui-radio-size-md-size);font-size:var(--ui-radio-size-md-font-size)}.ui-radio-lg{--ui-radio-size: var(--ui-radio-size-lg-size);font-size:var(--ui-radio-size-lg-font-size)}.ui-radio-xl{--ui-radio-size: var(--ui-radio-size-xl-size);font-size:var(--ui-radio-size-xl-font-size)}.ui-radio-primary .ui-radio-input:checked+.ui-radio-custom{background-color:var(--ui-primary);border-color:var(--ui-primary)}.ui-radio-primary .ui-radio-input:focus+.ui-radio-custom{box-shadow:0 0 0 3px var(--ui-primary-light);border-color:var(--ui-primary)}.ui-radio-success .ui-radio-input:checked+.ui-radio-custom{background-color:var(--ui-success);border-color:var(--ui-success)}.ui-radio-success .ui-radio-input:focus+.ui-radio-custom{box-shadow:0 0 0 3px #10b98140;border-color:var(--ui-success)}.ui-radio-warning .ui-radio-input:checked+.ui-radio-custom{background-color:var(--ui-warning);border-color:var(--ui-warning)}.ui-radio-warning .ui-radio-input:focus+.ui-radio-custom{box-shadow:0 0 0 3px #f59e0b40;border-color:var(--ui-warning)}.ui-radio-danger .ui-radio-input:checked+.ui-radio-custom{background-color:var(--ui-danger);border-color:var(--ui-danger)}.ui-radio-danger .ui-radio-input:focus+.ui-radio-custom{box-shadow:0 0 0 3px #ef444440;border-color:var(--ui-danger)}.ui-switch-label{display:inline-flex;align-items:center;gap:.75rem;cursor:pointer;font-size:.95rem;-webkit-user-select:none;user-select:none;color:var(--ui-text-main)}.ui-switch-label.ui-switch-disabled{cursor:not-allowed;opacity:var(--ui-switch-disabled-opacity)}.ui-switch-input{position:absolute;opacity:0;width:0;height:0}.ui-switch-track{position:relative;width:var(--ui-switch-width);height:var(--ui-switch-height);background-color:var(--ui-border);border-radius:9999px;transition:background-color .2s ease-in-out;flex-shrink:0}.ui-switch-input:checked+.ui-switch-track{background-color:var(--ui-switch-checked-bg)}.ui-switch-thumb{position:absolute;top:50%;transform:translateY(-50%);left:2px;width:var(--ui-switch-thumb-size);height:var(--ui-switch-thumb-size);background-color:var(--ui-switch-thumb-bg);border-radius:50%;box-shadow:var(--ui-switch-thumb-shadow);transition:left .2s cubic-bezier(.4,0,.2,1)}.ui-switch-input:checked+.ui-switch-track .ui-switch-thumb{left:calc(100% - var(--ui-switch-thumb-size) - 2px)}.ui-switch-input:focus+.ui-switch-track{box-shadow:var(--ui-switch-focus-ring)}.ui-switch-sm{--ui-switch-width: var(--ui-switch-size-sm-width);--ui-switch-height: var(--ui-switch-size-sm-height);--ui-switch-thumb-size: var(--ui-switch-size-sm-thumb-size);font-size:var(--ui-font-size-sm)}.ui-switch-md{--ui-switch-width: var(--ui-switch-size-md-width);--ui-switch-height: var(--ui-switch-size-md-height);--ui-switch-thumb-size: var(--ui-switch-size-md-thumb-size);font-size:var(--ui-font-size-md)}.ui-switch-lg{--ui-switch-width: var(--ui-switch-size-lg-width);--ui-switch-height: var(--ui-switch-size-lg-height);--ui-switch-thumb-size: var(--ui-switch-size-lg-thumb-size);font-size:var(--ui-font-size-lg)}.ui-switch-xl{--ui-switch-width: var(--ui-switch-size-xl-width);--ui-switch-height: var(--ui-switch-size-xl-height);--ui-switch-thumb-size: var(--ui-switch-size-xl-thumb-size);font-size:var(--ui-font-size-xl)}.ui-switch-primary .ui-switch-input:focus+.ui-switch-track{box-shadow:0 0 0 3px var(--ui-primary-light)}.ui-switch-success .ui-switch-input:checked+.ui-switch-track{background-color:var(--ui-success)}.ui-switch-success .ui-switch-input:focus+.ui-switch-track{box-shadow:0 0 0 3px #10b98140}.ui-switch-warning .ui-switch-input:checked+.ui-switch-track{background-color:var(--ui-warning)}.ui-switch-warning .ui-switch-input:focus+.ui-switch-track{box-shadow:0 0 0 3px #f59e0b40}.ui-switch-danger .ui-switch-input:checked+.ui-switch-track{background-color:var(--ui-danger)}.ui-switch-danger .ui-switch-input:focus+.ui-switch-track{box-shadow:0 0 0 3px #ef444440}.ui-badge{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:var(--ui-badge-radius);font-weight:var(--ui-badge-font-weight);line-height:1;transition:all .2s ease}.ui-badge-pill{border-radius:9999px}.ui-badge-sm{padding:var(--ui-badge-size-sm-padding);font-size:var(--ui-badge-size-sm-font-size)}.ui-badge-md{padding:var(--ui-badge-size-md-padding);font-size:var(--ui-badge-size-md-font-size)}.ui-badge-lg{padding:var(--ui-badge-size-lg-padding);font-size:var(--ui-badge-size-lg-font-size)}.ui-badge-primary{background-color:var(--ui-badge-primary-bg);color:var(--ui-badge-primary-text)}.ui-badge-success{background-color:var(--ui-badge-success-bg);color:var(--ui-badge-success-text)}.ui-badge-warning{background-color:var(--ui-badge-warning-bg);color:var(--ui-badge-warning-text)}.ui-badge-danger{background-color:var(--ui-badge-danger-bg);color:var(--ui-badge-danger-text)}.ui-badge-neutral{background-color:var(--ui-badge-neutral-bg);color:var(--ui-badge-neutral-text);border:1px solid var(--ui-border)}.ui-heading{margin:0;color:var(--ui-text-main);font-family:inherit}.ui-heading-h1{font-size:var(--ui-heading-h1-size);font-weight:var(--ui-heading-h1-weight);line-height:var(--ui-heading-h1-line-height)}.ui-heading-h2{font-size:var(--ui-heading-h2-size);font-weight:var(--ui-heading-h2-weight);line-height:var(--ui-heading-h2-line-height)}.ui-heading-h3{font-size:var(--ui-heading-h3-size);font-weight:var(--ui-heading-h3-weight);line-height:var(--ui-heading-h3-line-height)}.ui-heading-h4{font-size:var(--ui-heading-h4-size);font-weight:var(--ui-heading-h4-weight);line-height:var(--ui-heading-h4-line-height)}.ui-heading-h5{font-size:var(--ui-heading-h5-size);font-weight:var(--ui-heading-h5-weight);line-height:var(--ui-heading-h5-line-height)}.ui-heading-h6{font-size:var(--ui-heading-h6-size);font-weight:var(--ui-heading-h6-weight);line-height:var(--ui-heading-h6-line-height)}.ui-text{margin:0;color:var(--ui-text-main);font-family:inherit}.ui-text-muted{color:var(--ui-text-muted)}.ui-text-body{font-size:var(--ui-text-body-size);line-height:var(--ui-text-body-line-height)}.ui-text-small{font-size:var(--ui-text-small-size);line-height:var(--ui-text-small-line-height)}.ui-text-caption{font-size:var(--ui-text-caption-size);line-height:var(--ui-text-caption-line-height);color:var(--ui-text-muted)}.ui-text-lead{font-size:var(--ui-text-lead-size);line-height:var(--ui-text-lead-line-height);font-weight:var(--ui-text-lead-weight);color:var(--ui-text-muted)}.ui-text-weight-normal{font-weight:400}.ui-text-weight-medium{font-weight:500}.ui-text-weight-semibold{font-weight:600}.ui-text-weight-bold{font-weight:700}.ui-text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-text-clamp{display:-webkit-box;-webkit-line-clamp:var(--ui-line-clamp, 1);-webkit-box-orient:vertical;overflow:hidden;max-width:100%}.ui-tabs{display:flex;flex-direction:column;width:100%}.ui-tabs-list{display:flex;margin:0;padding:0;list-style:none;overflow-x:auto;scrollbar-width:none}.ui-tabs-list-line{border-bottom:1px solid var(--ui-tabs-border-color)}.ui-tabs-list-line .ui-tabs-trigger{border-bottom:2px solid transparent;margin-bottom:-1px}.ui-tabs-list-line .ui-tabs-trigger[data-state=active]{color:var(--ui-tabs-active-color);border-bottom-color:var(--ui-tabs-active-color)}.ui-tabs-list-pills{display:inline-flex;flex-wrap:wrap;gap:.5rem;padding:0;background:transparent;border-radius:0}.ui-tabs-list-pills .ui-tabs-trigger{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;line-height:1.5;border-radius:var(--ui-radius-md);border:1px solid transparent;background-color:transparent;color:var(--ui-text-main);flex:none;min-width:auto}.ui-tabs-list-pills .ui-tabs-trigger[data-state=active]{background-color:var(--ui-primary);color:#fff;border-color:var(--ui-primary);box-shadow:none}.ui-tabs-list-pills .ui-tabs-trigger:hover:not(:disabled):not([data-state=active]){background-color:var(--ui-bg-subtle);color:var(--ui-text-main)}.ui-tabs-trigger{position:relative;display:flex;align-items:center;justify-content:center;padding:var(--ui-tabs-trigger-padding);font-size:var(--ui-tabs-trigger-font-size);font-weight:var(--ui-tabs-trigger-weight);color:var(--ui-tabs-inactive-color);background:transparent;cursor:pointer;white-space:nowrap;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none;-webkit-user-select:none;user-select:none}.ui-tabs-trigger:hover:not(:disabled):not([data-state=active]){background-color:var(--ui-tabs-hover-bg);color:var(--ui-text-main)}.ui-tabs-trigger:disabled{opacity:.5;cursor:not-allowed}.ui-tabs-trigger:focus-visible{border-radius:var(--ui-radius-sm);outline:2px solid var(--ui-primary);outline-offset:2px}.ui-tabs-content{padding:var(--ui-tabs-content-padding);outline:none}.ui-table{width:100%;margin-bottom:1rem;color:var(--ui-text-main);background-color:transparent;border-collapse:collapse;font-family:var(--ui-font-family);font-size:.95rem}.ui-table th,.ui-table td{padding:.75rem;vertical-align:top;border-bottom:1px solid var(--ui-border);text-align:left}.ui-table th{font-weight:600;color:var(--ui-text-main);background-color:var(--ui-bg-subtle);border-bottom-width:2px}.ui-table-bordered,.ui-table-bordered th,.ui-table-bordered td{border:1px solid var(--ui-border)}.ui-table-striped tbody tr:nth-of-type(odd){background-color:var(--ui-bg-subtle)}.ui-table-hover tbody tr:hover{background-color:var(--ui-primary-light);color:var(--ui-primary-dark)}.ui-table-sm th,.ui-table-sm td{padding:.375rem;font-size:.875rem}.ui-table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { Button as p } from "./components/Button/Button.js";
|
|
5
|
+
import { Input as f } from "./components/Input/Input.js";
|
|
6
|
+
import { Card as d } from "./components/Card/Card.js";
|
|
7
|
+
import { Modal as l, ModalBody as M, ModalFooter as T, ModalHeader as b } from "./components/Modal/Modal.js";
|
|
8
|
+
import { Select as h } from "./components/Select/Select.js";
|
|
9
|
+
import { Checkbox as B } from "./components/Checkbox/Checkbox.js";
|
|
10
|
+
import { Radio as u } from "./components/Radio/Radio.js";
|
|
11
|
+
import { Switch as H } from "./components/Switch/Switch.js";
|
|
12
|
+
import { Badge as k } from "./components/Badge/Badge.js";
|
|
13
|
+
import { Heading as v } from "./components/Typography/Heading.js";
|
|
14
|
+
import { Text as y } from "./components/Typography/Text.js";
|
|
15
|
+
import { Tabs as I } from "./components/Tabs/Tabs.js";
|
|
16
|
+
import { Table as R } from "./components/Table/Table.js";
|
|
17
|
+
import { ThemeProvider as q } from "./theme.js";
|
|
18
|
+
export {
|
|
19
|
+
k as Badge,
|
|
20
|
+
p as Button,
|
|
21
|
+
d as Card,
|
|
22
|
+
B as Checkbox,
|
|
23
|
+
v as Heading,
|
|
24
|
+
f as Input,
|
|
25
|
+
l as Modal,
|
|
26
|
+
M as ModalBody,
|
|
27
|
+
T as ModalFooter,
|
|
28
|
+
b as ModalHeader,
|
|
29
|
+
u as Radio,
|
|
30
|
+
h as Select,
|
|
31
|
+
H as Switch,
|
|
32
|
+
R as Table,
|
|
33
|
+
I as Tabs,
|
|
34
|
+
y as Text,
|
|
35
|
+
q as ThemeProvider
|
|
36
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ThemeConfig } from './types';
|
|
3
|
+
|
|
4
|
+
import * as PropTypes from 'prop-types';
|
|
5
|
+
export declare const ThemeProvider: {
|
|
6
|
+
({ theme, children }: {
|
|
7
|
+
theme: ThemeConfig;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
displayName: string;
|
|
11
|
+
propTypes: {
|
|
12
|
+
theme: PropTypes.Validator<object>;
|
|
13
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as y } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as u } from "react";
|
|
3
|
+
import * as t from "prop-types";
|
|
4
|
+
function e(o) {
|
|
5
|
+
return o && typeof o == "object" && !Array.isArray(o);
|
|
6
|
+
}
|
|
7
|
+
function d(o) {
|
|
8
|
+
const i = {}, s = (r, n) => {
|
|
9
|
+
Object.keys(r).forEach((a) => {
|
|
10
|
+
const c = r[a], p = `${n}-${a}`;
|
|
11
|
+
e(c) ? s(c, p) : i[`-${p}`] = c;
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
return o.colors && Object.keys(o.colors).forEach((r) => {
|
|
15
|
+
i[`--ui-${r}`] = o.colors[r];
|
|
16
|
+
}), o.components && Object.keys(o.components).forEach((r) => {
|
|
17
|
+
const n = o.components[r];
|
|
18
|
+
n && s(n, `-ui-${r.toLowerCase()}`);
|
|
19
|
+
}), o.spacing && s(o.spacing, "-ui-spacing"), o.radius && s(o.radius, "-ui-radius"), o.shadows && s(o.shadows, "-ui-shadow"), o.typography && s(o.typography, "-ui-typography"), i;
|
|
20
|
+
}
|
|
21
|
+
const f = ({ theme: o, children: i }) => {
|
|
22
|
+
const s = u(() => d(o), [o]);
|
|
23
|
+
return /* @__PURE__ */ y("div", { style: { display: "contents", ...s }, children: i });
|
|
24
|
+
};
|
|
25
|
+
f.displayName = "ThemeProvider";
|
|
26
|
+
f.propTypes = {
|
|
27
|
+
theme: t.object.isRequired,
|
|
28
|
+
children: t.node
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
f as ThemeProvider
|
|
32
|
+
};
|
package/package.json
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coinloger/dev-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "./dist/index.
|
|
6
|
-
"module": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
5
|
+
"main": "./dist/cjs/index.cjs",
|
|
6
|
+
"module": "./dist/esm/index.js",
|
|
7
|
+
"types": "./dist/esm/index.d.ts",
|
|
8
8
|
"files": [
|
|
9
|
-
"dist"
|
|
9
|
+
"dist",
|
|
10
|
+
"style.css"
|
|
10
11
|
],
|
|
11
|
-
"
|
|
12
|
-
".": {
|
|
13
|
-
"import": "./dist/index.js",
|
|
14
|
-
"types": "./dist/index.d.ts"
|
|
15
|
-
},
|
|
16
|
-
"./style.css": "./dist/style.css"
|
|
17
|
-
},
|
|
12
|
+
"style": "./style.css",
|
|
18
13
|
"scripts": {
|
|
19
14
|
"dev": "vite",
|
|
20
15
|
"build": "tsc && vite build",
|
|
21
16
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
22
17
|
"preview": "vite preview",
|
|
23
18
|
"generate:theme": "node scripts/generate-theme.js",
|
|
19
|
+
"prepare": "npm run build",
|
|
24
20
|
"prepublishOnly": "npm run build"
|
|
25
21
|
},
|
|
26
22
|
"peerDependencies": {
|
|
@@ -28,10 +24,14 @@
|
|
|
28
24
|
"react-dom": "^19.2.0"
|
|
29
25
|
},
|
|
30
26
|
"dependencies": {
|
|
31
|
-
"
|
|
27
|
+
"bootstrap": "^5.3.8",
|
|
28
|
+
"clsx": "^2.1.0",
|
|
29
|
+
"prop-types": "^15.8.1",
|
|
30
|
+
"react-bootstrap": "^2.10.10"
|
|
32
31
|
},
|
|
33
32
|
"devDependencies": {
|
|
34
33
|
"@eslint/js": "^9.39.1",
|
|
34
|
+
"@types/prop-types": "^15.7.15",
|
|
35
35
|
"@types/react": "^19.2.5",
|
|
36
36
|
"@types/react-dom": "^19.2.3",
|
|
37
37
|
"@vitejs/plugin-react": "^5.1.1",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
40
40
|
"eslint-plugin-react-refresh": "^0.4.24",
|
|
41
41
|
"globals": "^16.5.0",
|
|
42
|
-
"vite": "^7.2.4",
|
|
43
|
-
"typescript": "^5.2.2",
|
|
44
42
|
"jiti": "^2.6.1",
|
|
45
|
-
"ts-node": "^10.9.2",
|
|
46
|
-
"vite-plugin-dts": "^3.7.3",
|
|
47
43
|
"react": "^19.2.0",
|
|
48
|
-
"react-dom": "^19.2.0"
|
|
44
|
+
"react-dom": "^19.2.0",
|
|
45
|
+
"ts-node": "^10.9.2",
|
|
46
|
+
"typescript": "^5.2.2",
|
|
47
|
+
"vite": "^7.2.4",
|
|
48
|
+
"vite-plugin-dts": "^3.7.3"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "./dist/esm/dev-ui.css";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
4
|
-
variant?: 'primary' | 'success' | 'warning' | 'danger' | 'neutral';
|
|
5
|
-
size?: 'sm' | 'md' | 'lg';
|
|
6
|
-
shape?: 'rounded' | 'pill';
|
|
7
|
-
}
|
|
8
|
-
export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function BadgeDemo(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
-
variant?: 'primary' | 'secondary' | 'outline' | 'danger' | 'success' | 'warning' | 'ghost' | 'outline-danger' | 'outline-success' | 'outline-warning';
|
|
5
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
6
|
-
}
|
|
7
|
-
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function ButtonDemo(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4
|
-
title?: React.ReactNode;
|
|
5
|
-
footer?: React.ReactNode;
|
|
6
|
-
}
|
|
7
|
-
export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function CardDemo(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
-
label?: React.ReactNode;
|
|
5
|
-
error?: boolean;
|
|
6
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
7
|
-
variant?: 'primary' | 'success' | 'warning' | 'danger';
|
|
8
|
-
}
|
|
9
|
-
export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function CheckboxDemo(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
-
label?: string;
|
|
5
|
-
error?: boolean;
|
|
6
|
-
helperText?: string;
|
|
7
|
-
fullWidth?: boolean;
|
|
8
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
9
|
-
}
|
|
10
|
-
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
11
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function InputDemo(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
export declare const ModalHeader: ({ children, className }: {
|
|
4
|
-
children: React.ReactNode;
|
|
5
|
-
className?: string;
|
|
6
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export declare const ModalBody: ({ children, className }: {
|
|
8
|
-
children: React.ReactNode;
|
|
9
|
-
className?: string;
|
|
10
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export declare const ModalFooter: ({ children, className }: {
|
|
12
|
-
children: React.ReactNode;
|
|
13
|
-
className?: string;
|
|
14
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
export interface ModalProps {
|
|
16
|
-
isOpen: boolean;
|
|
17
|
-
onClose: () => void;
|
|
18
|
-
title?: React.ReactNode;
|
|
19
|
-
children: React.ReactNode;
|
|
20
|
-
footer?: React.ReactNode;
|
|
21
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
22
|
-
className?: string;
|
|
23
|
-
closeOnBackdropClick?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export declare const Modal: (({ isOpen, onClose, title, children, footer, size, className, closeOnBackdropClick, }: ModalProps) => React.ReactPortal | null) & {
|
|
26
|
-
Header: ({ children, className }: {
|
|
27
|
-
children: React.ReactNode;
|
|
28
|
-
className?: string;
|
|
29
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
Body: ({ children, className }: {
|
|
31
|
-
children: React.ReactNode;
|
|
32
|
-
className?: string;
|
|
33
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
-
Footer: ({ children, className }: {
|
|
35
|
-
children: React.ReactNode;
|
|
36
|
-
className?: string;
|
|
37
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function ModalDemo(): import("react/jsx-runtime").JSX.Element;
|