@usevane/ui 0.1.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/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/components/alert.d.ts +19 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +33 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/api-route.d.ts +32 -0
- package/dist/components/api-route.d.ts.map +1 -0
- package/dist/components/api-route.js +23 -0
- package/dist/components/api-route.js.map +1 -0
- package/dist/components/badge.d.ts +17 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +30 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +18 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +32 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/callout.d.ts +16 -0
- package/dist/components/callout.d.ts.map +1 -0
- package/dist/components/callout.js +40 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.d.ts +22 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +35 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/charts.d.ts +65 -0
- package/dist/components/charts.d.ts.map +1 -0
- package/dist/components/charts.js +56 -0
- package/dist/components/charts.js.map +1 -0
- package/dist/components/code-block.d.ts +16 -0
- package/dist/components/code-block.d.ts.map +1 -0
- package/dist/components/code-block.js +14 -0
- package/dist/components/code-block.js.map +1 -0
- package/dist/components/command-palette.d.ts +23 -0
- package/dist/components/command-palette.d.ts.map +1 -0
- package/dist/components/command-palette.js +107 -0
- package/dist/components/command-palette.js.map +1 -0
- package/dist/components/command-provider.d.ts +22 -0
- package/dist/components/command-provider.d.ts.map +1 -0
- package/dist/components/command-provider.js +42 -0
- package/dist/components/command-provider.js.map +1 -0
- package/dist/components/confirm-dialog.d.ts +22 -0
- package/dist/components/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog.js +42 -0
- package/dist/components/confirm-dialog.js.map +1 -0
- package/dist/components/copy-block.d.ts +17 -0
- package/dist/components/copy-block.d.ts.map +1 -0
- package/dist/components/copy-block.js +23 -0
- package/dist/components/copy-block.js.map +1 -0
- package/dist/components/data-module.d.ts +26 -0
- package/dist/components/data-module.d.ts.map +1 -0
- package/dist/components/data-module.js +46 -0
- package/dist/components/data-module.js.map +1 -0
- package/dist/components/data-stack.d.ts +23 -0
- package/dist/components/data-stack.d.ts.map +1 -0
- package/dist/components/data-stack.js +31 -0
- package/dist/components/data-stack.js.map +1 -0
- package/dist/components/data-table.d.ts +15 -0
- package/dist/components/data-table.d.ts.map +1 -0
- package/dist/components/data-table.js +22 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/doc-heading.d.ts +14 -0
- package/dist/components/doc-heading.d.ts.map +1 -0
- package/dist/components/doc-heading.js +28 -0
- package/dist/components/doc-heading.js.map +1 -0
- package/dist/components/empty-state.d.ts +16 -0
- package/dist/components/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state.js +11 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/error-page.d.ts +27 -0
- package/dist/components/error-page.d.ts.map +1 -0
- package/dist/components/error-page.js +16 -0
- package/dist/components/error-page.js.map +1 -0
- package/dist/components/form-field.d.ts +23 -0
- package/dist/components/form-field.d.ts.map +1 -0
- package/dist/components/form-field.js +23 -0
- package/dist/components/form-field.js.map +1 -0
- package/dist/components/grid.d.ts +16 -0
- package/dist/components/grid.d.ts.map +1 -0
- package/dist/components/grid.js +22 -0
- package/dist/components/grid.js.map +1 -0
- package/dist/components/heading.d.ts +15 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +21 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/input.d.ts +16 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +23 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +14 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +11 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +11 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +12 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/mobile-menu.d.ts +14 -0
- package/dist/components/mobile-menu.d.ts.map +1 -0
- package/dist/components/mobile-menu.js +15 -0
- package/dist/components/mobile-menu.js.map +1 -0
- package/dist/components/modal.d.ts +20 -0
- package/dist/components/modal.d.ts.map +1 -0
- package/dist/components/modal.js +62 -0
- package/dist/components/modal.js.map +1 -0
- package/dist/components/nav-link.d.ts +16 -0
- package/dist/components/nav-link.d.ts.map +1 -0
- package/dist/components/nav-link.js +13 -0
- package/dist/components/nav-link.js.map +1 -0
- package/dist/components/page-header.d.ts +18 -0
- package/dist/components/page-header.d.ts.map +1 -0
- package/dist/components/page-header.js +11 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/select.d.ts +16 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +23 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +16 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +11 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sidebar.d.ts +20 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +16 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/sign-out-button.d.ts +15 -0
- package/dist/components/sign-out-button.d.ts.map +1 -0
- package/dist/components/sign-out-button.js +14 -0
- package/dist/components/sign-out-button.js.map +1 -0
- package/dist/components/skeleton.d.ts +11 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +12 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/spacer.d.ts +14 -0
- package/dist/components/spacer.d.ts.map +1 -0
- package/dist/components/spacer.js +18 -0
- package/dist/components/spacer.js.map +1 -0
- package/dist/components/stack.d.ts +20 -0
- package/dist/components/stack.d.ts.map +1 -0
- package/dist/components/stack.js +14 -0
- package/dist/components/stack.js.map +1 -0
- package/dist/components/status-badge.d.ts +17 -0
- package/dist/components/status-badge.d.ts.map +1 -0
- package/dist/components/status-badge.js +27 -0
- package/dist/components/status-badge.js.map +1 -0
- package/dist/components/tabs.d.ts +18 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +12 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +16 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +23 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +36 -0
- package/dist/components/toast.d.ts.map +1 -0
- package/dist/components/toast.js +47 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/top-bar.d.ts +18 -0
- package/dist/components/top-bar.d.ts.map +1 -0
- package/dist/components/top-bar.js +11 -0
- package/dist/components/top-bar.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +8 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +46 -0
- package/src/theme.css +78 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/modal.tsx
|
|
3
|
+
* @description Moe-Brutalist modal — hard-bordered overlay with focus trap.
|
|
4
|
+
* Full-screen on mobile, centered on desktop. Snap open, no fade.
|
|
5
|
+
*/
|
|
6
|
+
'use client';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { cn } from '../lib/utils';
|
|
10
|
+
const FOCUSABLE = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
11
|
+
const Modal = ({ open, onClose, title, children, className }) => {
|
|
12
|
+
const modalRef = React.useRef(null);
|
|
13
|
+
const triggerRef = React.useRef(null);
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
if (open) {
|
|
16
|
+
triggerRef.current = document.activeElement;
|
|
17
|
+
const focusable = modalRef.current?.querySelectorAll(FOCUSABLE);
|
|
18
|
+
focusable?.[0]?.focus();
|
|
19
|
+
}
|
|
20
|
+
else if (triggerRef.current instanceof HTMLElement) {
|
|
21
|
+
triggerRef.current.focus();
|
|
22
|
+
triggerRef.current = null;
|
|
23
|
+
}
|
|
24
|
+
}, [open]);
|
|
25
|
+
React.useEffect(() => {
|
|
26
|
+
if (!open)
|
|
27
|
+
return;
|
|
28
|
+
const handleKeyDown = (e) => {
|
|
29
|
+
if (e.key === 'Escape') {
|
|
30
|
+
onClose();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (e.key !== 'Tab' || !modalRef.current)
|
|
34
|
+
return;
|
|
35
|
+
const focusable = modalRef.current.querySelectorAll(FOCUSABLE);
|
|
36
|
+
if (focusable.length === 0)
|
|
37
|
+
return;
|
|
38
|
+
const first = focusable[0];
|
|
39
|
+
const last = focusable[focusable.length - 1];
|
|
40
|
+
if (e.shiftKey) {
|
|
41
|
+
if (document.activeElement === first && last) {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
last.focus();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (document.activeElement === last && first) {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
first.focus();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
54
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
55
|
+
}, [open, onClose]);
|
|
56
|
+
if (!open)
|
|
57
|
+
return null;
|
|
58
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "fixed inset-0 bg-void/80", onClick: onClose, "aria-hidden": "true" }), _jsxs("div", { ref: modalRef, role: "dialog", "aria-modal": "true", "aria-labelledby": title ? 'modal-title' : undefined, className: cn('relative z-10 w-full rounded-none border-2 border-white bg-surface shadow-hard-pink', 'h-full md:h-auto md:max-h-[85vh] md:max-w-lg', 'overflow-y-auto', className), children: [title && (_jsx("div", { className: "border-b-2 border-white/20 px-6 py-4", children: _jsx("h2", { id: "modal-title", className: "font-mono text-sm font-semibold uppercase tracking-widest text-white", children: title }) })), _jsx("div", { className: "p-6", children: children }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: "absolute right-4 top-4 font-mono text-[11px] uppercase tracking-widest text-secondary hover:text-white cursor-pointer min-h-7 min-w-7 flex items-center justify-center", children: "ESC" })] })] }));
|
|
59
|
+
};
|
|
60
|
+
Modal.displayName = 'Modal';
|
|
61
|
+
export { Modal };
|
|
62
|
+
//# sourceMappingURL=modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../src/components/modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/nav-link.tsx
|
|
3
|
+
* @description Moe-Brutalist navigation link — active state snaps to pink.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
type NavLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
7
|
+
active?: boolean;
|
|
8
|
+
variant?: 'default' | 'threat';
|
|
9
|
+
};
|
|
10
|
+
declare const NavLink: React.ForwardRefExoticComponent<React.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
11
|
+
active?: boolean;
|
|
12
|
+
variant?: "default" | "threat";
|
|
13
|
+
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
14
|
+
export { NavLink };
|
|
15
|
+
export type { NavLinkProps };
|
|
16
|
+
//# sourceMappingURL=nav-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-link.d.ts","sourceRoot":"","sources":["../../src/components/nav-link.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,YAAY,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAClE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC/B,CAAA;AAED,QAAA,MAAM,OAAO;aAJF,OAAO;cACN,SAAS,GAAG,QAAQ;2CAkB/B,CAAA;AAGD,OAAO,EAAE,OAAO,EAAE,CAAA;AAClB,YAAY,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/nav-link.tsx
|
|
4
|
+
* @description Moe-Brutalist navigation link — active state snaps to pink.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const NavLink = React.forwardRef(({ className, active, variant = 'default', ...props }, ref) => (_jsx("a", { className: cn('font-mono text-[11px] uppercase tracking-widest min-h-11 inline-flex items-center', variant === 'threat'
|
|
9
|
+
? active ? 'text-critical' : 'text-threat hover:text-critical'
|
|
10
|
+
: active ? 'text-pink' : 'text-secondary hover:text-pink', className), ref: ref, "aria-current": active ? 'page' : undefined, ...props })));
|
|
11
|
+
NavLink.displayName = 'NavLink';
|
|
12
|
+
export { NavLink };
|
|
13
|
+
//# sourceMappingURL=nav-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-link.js","sourceRoot":"","sources":["../../src/components/nav-link.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAOjC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC7D,YACE,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,OAAO,KAAK,QAAQ;QAClB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iCAAiC;QAC9D,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gCAAgC,EAC3D,SAAS,CACV,EACD,GAAG,EAAE,GAAG,kBACM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KACrC,KAAK,GACT,CACH,CACF,CAAA;AACD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/page-header.tsx
|
|
3
|
+
* @description Moe-Brutalist page header — Syne display title + mono subtitle + actions.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
type PageHeaderProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
7
|
+
title: string;
|
|
8
|
+
subtitle?: string;
|
|
9
|
+
actions?: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
declare const PageHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
12
|
+
title: string;
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
actions?: React.ReactNode;
|
|
15
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export { PageHeader };
|
|
17
|
+
export type { PageHeaderProps };
|
|
18
|
+
//# sourceMappingURL=page-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../src/components/page-header.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,QAAA,MAAM,UAAU;WALP,MAAM;eACF,MAAM;cACP,KAAK,CAAC,SAAS;wCAmB1B,CAAA;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,YAAY,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/page-header.tsx
|
|
4
|
+
* @description Moe-Brutalist page header — Syne display title + mono subtitle + actions.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const PageHeader = React.forwardRef(({ className, title, subtitle, actions, ...props }, ref) => (_jsxs("div", { className: cn('flex items-start justify-between', className), ref: ref, ...props, children: [_jsxs("div", { children: [_jsx("h1", { className: "font-display text-4xl font-bold uppercase text-white md:text-5xl", children: title }), subtitle ? (_jsx("p", { className: "mt-2 font-mono text-[11px] uppercase tracking-widest text-secondary", children: subtitle })) : null] }), actions ? _jsx("div", { className: "flex items-center gap-3", children: actions }) : null] })));
|
|
9
|
+
PageHeader.displayName = 'PageHeader';
|
|
10
|
+
export { PageHeader };
|
|
11
|
+
//# sourceMappingURL=page-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.js","sourceRoot":"","sources":["../../src/components/page-header.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAQjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1D,eAAK,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,aACpF,0BACE,aAAI,SAAS,EAAC,kEAAkE,YAC7E,KAAK,GACH,EACJ,QAAQ,CAAC,CAAC,CAAC,CACV,YAAG,SAAS,EAAC,qEAAqE,YAC/E,QAAQ,GACP,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,yBAAyB,YAAE,OAAO,GAAO,CAAC,CAAC,CAAC,IAAI,IACtE,CACP,CACF,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/select.tsx
|
|
3
|
+
* @description Moe-Brutalist select dropdown — same base style as Input.
|
|
4
|
+
*/
|
|
5
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
declare const selectVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "threat" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
|
+
type SelectProps = React.SelectHTMLAttributes<HTMLSelectElement> & VariantProps<typeof selectVariants>;
|
|
11
|
+
declare const Select: React.ForwardRefExoticComponent<React.SelectHTMLAttributes<HTMLSelectElement> & VariantProps<(props?: ({
|
|
12
|
+
variant?: "default" | "threat" | null | undefined;
|
|
13
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLSelectElement>>;
|
|
14
|
+
export { Select, selectVariants };
|
|
15
|
+
export type { SelectProps };
|
|
16
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,cAAc;;8EAanB,CAAA;AAED,KAAK,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAC9D,YAAY,CAAC,OAAO,cAAc,CAAC,CAAA;AAErC,QAAA,MAAM,MAAM;;yHAQX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AACjC,YAAY,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/select.tsx
|
|
4
|
+
* @description Moe-Brutalist select dropdown — same base style as Input.
|
|
5
|
+
*/
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { cn } from '../lib/utils';
|
|
9
|
+
const selectVariants = cva('w-full rounded-none border-2 bg-void px-4 py-2 font-mono text-sm leading-5 text-white min-h-11 shadow-hard appearance-none cursor-pointer focus-visible:outline-none focus-visible:shadow-hard-focus focus-visible:border-cyan disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed disabled:border-secondary', {
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: 'border-white',
|
|
13
|
+
threat: 'border-threat shadow-hard-threat focus-visible:shadow-hard-threat focus-visible:border-threat',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
variant: 'default',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const Select = React.forwardRef(({ className, variant, ...props }, ref) => (_jsx("select", { className: cn(selectVariants({ variant, className })), ref: ref, ...props })));
|
|
21
|
+
Select.displayName = 'Select';
|
|
22
|
+
export { Select, selectVariants };
|
|
23
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,uUAAuU,EACvU;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,+FAA+F;SACxG;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAKD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACzC,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EACrD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/separator.tsx
|
|
3
|
+
* @description Moe-Brutalist separator — hard divider line, horizontal or vertical.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
type SeparatorProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
7
|
+
orientation?: 'horizontal' | 'vertical';
|
|
8
|
+
subtle?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const Separator: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
11
|
+
orientation?: "horizontal" | "vertical";
|
|
12
|
+
subtle?: boolean;
|
|
13
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
export { Separator };
|
|
15
|
+
export type { SeparatorProps };
|
|
16
|
+
//# sourceMappingURL=separator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../src/components/separator.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC3D,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,QAAA,MAAM,SAAS;kBAJC,YAAY,GAAG,UAAU;aAC9B,OAAO;wCAiBjB,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,YAAY,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/separator.tsx
|
|
4
|
+
* @description Moe-Brutalist separator — hard divider line, horizontal or vertical.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const Separator = React.forwardRef(({ orientation = 'horizontal', subtle, className, ...props }, ref) => (_jsx("div", { ref: ref, role: "separator", "aria-orientation": orientation, className: cn(orientation === 'horizontal' ? 'h-0.5 w-full' : 'h-full w-0.5', subtle ? 'bg-white/20' : 'bg-white', className), ...props })));
|
|
9
|
+
Separator.displayName = 'Separator';
|
|
10
|
+
export { Separator };
|
|
11
|
+
//# sourceMappingURL=separator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.js","sourceRoot":"","sources":["../../src/components/separator.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAOjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACpE,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,WAAW,sBACE,WAAW,EAC7B,SAAS,EAAE,EAAE,CACX,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,EAC9D,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EACnC,SAAS,CACV,KACG,KAAK,GACT,CACH,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/sidebar.tsx
|
|
3
|
+
* @description Moe-Brutalist sidebar — fixed left on desktop, hidden on mobile.
|
|
4
|
+
* Hard right border. Sections with labels + NavLinks.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
type SidebarProps = React.HTMLAttributes<HTMLElement>;
|
|
8
|
+
declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLElement>>;
|
|
9
|
+
type SidebarSectionProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
10
|
+
label?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const SidebarSection: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
13
|
+
label?: string;
|
|
14
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
declare const SidebarLink: React.ForwardRefExoticComponent<React.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
16
|
+
active?: boolean;
|
|
17
|
+
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
18
|
+
export { Sidebar, SidebarSection, SidebarLink };
|
|
19
|
+
export type { SidebarProps, SidebarSectionProps };
|
|
20
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAErD,QAAA,MAAM,OAAO,kFAeZ,CAAA;AAGD,KAAK,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAChE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,QAAA,MAAM,cAAc;YAHV,MAAM;wCAcf,CAAA;AAGD,QAAA,MAAM,WAAW;aAE4C,OAAO;2CAWlE,CAAA;AAGF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/sidebar.tsx
|
|
4
|
+
* @description Moe-Brutalist sidebar — fixed left on desktop, hidden on mobile.
|
|
5
|
+
* Hard right border. Sections with labels + NavLinks.
|
|
6
|
+
*/
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { cn } from '../lib/utils';
|
|
9
|
+
const Sidebar = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("aside", { className: cn('hidden w-60 shrink-0 border-r-2 border-white bg-void md:block', className), ref: ref, ...props, children: _jsx("div", { className: "sticky top-0 overflow-y-auto px-4 py-6", children: children }) })));
|
|
10
|
+
Sidebar.displayName = 'Sidebar';
|
|
11
|
+
const SidebarSection = React.forwardRef(({ className, label, children, ...props }, ref) => (_jsxs("div", { className: cn('mb-6', className), ref: ref, ...props, children: [label ? (_jsx("span", { className: "mb-3 block font-mono text-[10px] uppercase tracking-widest text-secondary", children: label })) : null, _jsx("div", { className: "space-y-1", children: children })] })));
|
|
12
|
+
SidebarSection.displayName = 'SidebarSection';
|
|
13
|
+
const SidebarLink = React.forwardRef(({ className, active, ...props }, ref) => (_jsx("a", { className: cn('block rounded-none px-2 py-1.5 font-mono text-sm', active ? 'bg-surface text-pink' : 'text-secondary hover:text-pink', className), ref: ref, ...props })));
|
|
14
|
+
SidebarLink.displayName = 'SidebarLink';
|
|
15
|
+
export { Sidebar, SidebarSection, SidebarLink };
|
|
16
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAIjC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,gBACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,YAET,cAAK,SAAS,EAAC,wCAAwC,YACpD,QAAQ,GACL,GACA,CACT,CACF,CAAA;AACD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;AAM/B,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACjD,eAAK,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,aACvD,KAAK,CAAC,CAAC,CAAC,CACP,eAAM,SAAS,EAAC,2EAA2E,YACxF,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,IACvC,CACP,CACF,CAAA;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAE7C,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAGlC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,YACE,SAAS,EAAE,EAAE,CACX,kDAAkD,EAClD,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gCAAgC,EAClE,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC,CAAA;AACF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/sign-out-button.tsx
|
|
3
|
+
* @description Moe-Brutalist sign-out button — threat-red via Button component.
|
|
4
|
+
* Takes an onSignOut callback so it's auth-provider agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
type SignOutButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
8
|
+
onSignOut: () => void | Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
declare const SignOutButton: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
11
|
+
onSignOut: () => void | Promise<void>;
|
|
12
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
13
|
+
export { SignOutButton };
|
|
14
|
+
export type { SignOutButtonProps };
|
|
15
|
+
//# sourceMappingURL=sign-out-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-out-button.d.ts","sourceRoot":"","sources":["../../src/components/sign-out-button.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,kBAAkB,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACxE,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC,CAAA;AAED,QAAA,MAAM,aAAa;eAHN,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;2CAgBtC,CAAA;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/sign-out-button.tsx
|
|
3
|
+
* @description Moe-Brutalist sign-out button — threat-red via Button component.
|
|
4
|
+
* Takes an onSignOut callback so it's auth-provider agnostic.
|
|
5
|
+
*/
|
|
6
|
+
'use client';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { cn } from '../lib/utils';
|
|
10
|
+
import { Button } from './button';
|
|
11
|
+
const SignOutButton = React.forwardRef(({ className, onSignOut, ...props }, ref) => (_jsx(Button, { type: "button", variant: "threat", onClick: onSignOut, className: cn(className), ref: ref, ...props, children: "SIGN OUT" })));
|
|
12
|
+
SignOutButton.displayName = 'SignOutButton';
|
|
13
|
+
export { SignOutButton };
|
|
14
|
+
//# sourceMappingURL=sign-out-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-out-button.js","sourceRoot":"","sources":["../../src/components/sign-out-button.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMjC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC3C,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EACxB,GAAG,EAAE,GAAG,KACJ,KAAK,yBAGF,CACV,CACF,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/skeleton.tsx
|
|
3
|
+
* @description Moe-Brutalist skeleton — loading placeholder. Hard rectangles.
|
|
4
|
+
* No gradient shimmer — uses opacity to indicate loading state.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
type SkeletonProps = React.HTMLAttributes<HTMLDivElement>;
|
|
8
|
+
declare const Skeleton: React.ForwardRefExoticComponent<SkeletonProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export { Skeleton };
|
|
10
|
+
export type { SkeletonProps };
|
|
11
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;AAEzD,QAAA,MAAM,QAAQ,sFASb,CAAA;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/skeleton.tsx
|
|
4
|
+
* @description Moe-Brutalist skeleton — loading placeholder. Hard rectangles.
|
|
5
|
+
* No gradient shimmer — uses opacity to indicate loading state.
|
|
6
|
+
*/
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { cn } from '../lib/utils';
|
|
9
|
+
const Skeleton = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { "aria-hidden": "true", className: cn('rounded-none border border-white/10 bg-white/5', className), ref: ref, ...props })));
|
|
10
|
+
Skeleton.displayName = 'Skeleton';
|
|
11
|
+
export { Skeleton };
|
|
12
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAIjC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,6BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,SAAS,CAAC,EAC1E,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/spacer.tsx
|
|
3
|
+
* @description Moe-Brutalist spacer — explicit spacing on the 4px/8px grid.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
type SpacerProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
7
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
8
|
+
};
|
|
9
|
+
declare const Spacer: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
10
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
export { Spacer };
|
|
13
|
+
export type { SpacerProps };
|
|
14
|
+
//# sourceMappingURL=spacer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacer.d.ts","sourceRoot":"","sources":["../../src/components/spacer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACxC,CAAA;AAUD,QAAA,MAAM,MAAM;WAXH,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;wCAoBxC,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/spacer.tsx
|
|
4
|
+
* @description Moe-Brutalist spacer — explicit spacing on the 4px/8px grid.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const SPACER_SIZES = {
|
|
9
|
+
xs: 'h-2',
|
|
10
|
+
sm: 'h-4',
|
|
11
|
+
md: 'h-6',
|
|
12
|
+
lg: 'h-8',
|
|
13
|
+
xl: 'h-12',
|
|
14
|
+
};
|
|
15
|
+
const Spacer = React.forwardRef(({ size = 'md', className, ...props }, ref) => (_jsx("div", { ref: ref, "aria-hidden": "true", className: cn(SPACER_SIZES[size], className), ...props })));
|
|
16
|
+
Spacer.displayName = 'Spacer';
|
|
17
|
+
export { Spacer };
|
|
18
|
+
//# sourceMappingURL=spacer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacer.js","sourceRoot":"","sources":["../../src/components/spacer.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAMjC,MAAM,YAAY,GAAG;IACnB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;CACF,CAAA;AAEV,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC7C,cACE,GAAG,EAAE,GAAG,iBACI,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KACxC,KAAK,GACT,CACH,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/stack.tsx
|
|
3
|
+
* @description Moe-Brutalist stack — flex layout primitive with constrained gap/align/justify.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
type StackProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
7
|
+
direction?: 'row' | 'col';
|
|
8
|
+
gap?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
9
|
+
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
10
|
+
justify?: 'start' | 'center' | 'end' | 'between';
|
|
11
|
+
};
|
|
12
|
+
declare const Stack: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
13
|
+
direction?: "row" | "col";
|
|
14
|
+
gap?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
15
|
+
align?: "start" | "center" | "end" | "stretch";
|
|
16
|
+
justify?: "start" | "center" | "end" | "between";
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export { Stack };
|
|
19
|
+
export type { StackProps };
|
|
20
|
+
//# sourceMappingURL=stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/components/stack.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACvD,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACzB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACtC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;CACjD,CAAA;AAMD,QAAA,MAAM,KAAK;gBAVG,KAAK,GAAG,KAAK;UACnB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;YAC9B,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS;cACpC,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS;wCAsBjD,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,YAAY,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/stack.tsx
|
|
4
|
+
* @description Moe-Brutalist stack — flex layout primitive with constrained gap/align/justify.
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const GAP = { xs: 'gap-2', sm: 'gap-3', md: 'gap-4', lg: 'gap-6', xl: 'gap-8' };
|
|
9
|
+
const ALIGN = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' };
|
|
10
|
+
const JUSTIFY = { start: 'justify-start', center: 'justify-center', end: 'justify-end', between: 'justify-between' };
|
|
11
|
+
const Stack = React.forwardRef(({ direction = 'col', gap = 'md', align = 'start', justify = 'start', className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex', direction === 'row' ? 'flex-row' : 'flex-col', GAP[gap], ALIGN[align], JUSTIFY[justify], className), ...props })));
|
|
12
|
+
Stack.displayName = 'Stack';
|
|
13
|
+
export { Stack };
|
|
14
|
+
//# sourceMappingURL=stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../src/components/stack.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AASjC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAW,CAAA;AACxF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAW,CAAA;AACnH,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAW,CAAA;AAE7H,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnG,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,MAAM,EACN,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC7C,GAAG,CAAC,GAAG,CAAC,EACR,KAAK,CAAC,KAAK,CAAC,EACZ,OAAO,CAAC,OAAO,CAAC,EAChB,SAAS,CACV,KACG,KAAK,GACT,CACH,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/status-badge.tsx
|
|
3
|
+
* @description Status indicator that snaps between calm (pink) and threat (red).
|
|
4
|
+
* The color IS the alarm — when it snaps, you feel it. No transition. Instant.
|
|
5
|
+
*/
|
|
6
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
declare const statusBadgeVariants: (props?: ({
|
|
9
|
+
status?: "threat" | "critical" | "calm" | "warning" | "inactive" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
type StatusBadgeProps = React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof statusBadgeVariants>;
|
|
12
|
+
declare const StatusBadge: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & VariantProps<(props?: ({
|
|
13
|
+
status?: "threat" | "critical" | "calm" | "warning" | "inactive" | null | undefined;
|
|
14
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLSpanElement>>;
|
|
15
|
+
export { StatusBadge, statusBadgeVariants };
|
|
16
|
+
export type { StatusBadgeProps };
|
|
17
|
+
//# sourceMappingURL=status-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../src/components/status-badge.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,mBAAmB;;8EAgBxB,CAAA;AAED,KAAK,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GAC3D,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE1C,QAAA,MAAM,WAAW;;uHAUhB,CAAA;AAGD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/status-badge.tsx
|
|
4
|
+
* @description Status indicator that snaps between calm (pink) and threat (red).
|
|
5
|
+
* The color IS the alarm — when it snaps, you feel it. No transition. Instant.
|
|
6
|
+
*/
|
|
7
|
+
import { cva } from 'class-variance-authority';
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { cn } from '../lib/utils';
|
|
10
|
+
const statusBadgeVariants = cva('inline-flex items-center rounded-none border-2 font-mono text-[11px] uppercase tracking-widest px-3 py-1.5', {
|
|
11
|
+
variants: {
|
|
12
|
+
status: {
|
|
13
|
+
calm: 'border-pink text-pink shadow-hard-sm',
|
|
14
|
+
threat: 'border-threat text-threat shadow-hard-threat',
|
|
15
|
+
critical: 'border-critical text-critical shadow-hard-sm',
|
|
16
|
+
warning: 'border-peach text-peach shadow-hard-sm',
|
|
17
|
+
inactive: 'border-secondary text-secondary shadow-none',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
status: 'calm',
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const StatusBadge = React.forwardRef(({ className, status, ...props }, ref) => (_jsx("span", { role: "status", "aria-live": "polite", className: cn(statusBadgeVariants({ status, className })), ref: ref, ...props })));
|
|
25
|
+
StatusBadge.displayName = 'StatusBadge';
|
|
26
|
+
export { StatusBadge, statusBadgeVariants };
|
|
27
|
+
//# sourceMappingURL=status-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.js","sourceRoot":"","sources":["../../src/components/status-badge.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,mBAAmB,GAAG,GAAG,CAC7B,4GAA4G,EAC5G;IACE,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,IAAI,EAAE,sCAAsC;YAC5C,MAAM,EAAE,8CAA8C;YACtD,QAAQ,EAAE,8CAA8C;YACxD,OAAO,EAAE,wCAAwC;YACjD,QAAQ,EAAE,6CAA6C;SACxD;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE,MAAM;KACf;CACF,CACF,CAAA;AAKD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAClC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACxC,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EACzD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/tabs.tsx
|
|
3
|
+
* @description Moe-Brutalist tabs — active tab snaps to pink underline.
|
|
4
|
+
*/
|
|
5
|
+
type Tab = {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
};
|
|
9
|
+
type TabsProps = {
|
|
10
|
+
tabs: Tab[];
|
|
11
|
+
activeTab: string;
|
|
12
|
+
onTabChange: (id: string) => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
};
|
|
15
|
+
declare const Tabs: ({ tabs, activeTab, onTabChange, className }: TabsProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export { Tabs };
|
|
17
|
+
export type { TabsProps, Tab };
|
|
18
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,KAAK,GAAG,GAAG;IACT,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,IAAI,GAAI,6CAA6C,SAAS,4CAoBnE,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/tabs.tsx
|
|
3
|
+
* @description Moe-Brutalist tabs — active tab snaps to pink underline.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const Tabs = ({ tabs, activeTab, onTabChange, className }) => (_jsx("div", { role: "tablist", className: cn('flex gap-0 border-b-2 border-white/20', className), children: tabs.map((tab) => (_jsx("button", { type: "button", role: "tab", "aria-selected": activeTab === tab.id, onClick: () => onTabChange(tab.id), className: cn('cursor-pointer px-4 py-2 font-mono text-[11px] uppercase tracking-widest min-h-11', activeTab === tab.id
|
|
9
|
+
? 'border-b-2 border-pink text-white -mb-[2px]'
|
|
10
|
+
: 'text-secondary hover:text-pink'), children: tab.label }, tab.id))) }));
|
|
11
|
+
export { Tabs };
|
|
12
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAA;;AAGZ,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAcjC,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAa,EAAE,EAAE,CAAC,CACvE,cAAK,IAAI,EAAC,SAAS,EAAC,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC,YAClF,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,SAAS,KAAK,GAAG,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAClC,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,SAAS,KAAK,GAAG,CAAC,EAAE;YAClB,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,gCAAgC,CACrC,YAEA,GAAG,CAAC,KAAK,IAZL,GAAG,CAAC,EAAE,CAaJ,CACV,CAAC,GACE,CACP,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/ui/src/components/textarea.tsx
|
|
3
|
+
* @description Moe-Brutalist textarea — multi-line input, same base as Input.
|
|
4
|
+
*/
|
|
5
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
declare const textareaVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "threat" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
|
+
type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & VariantProps<typeof textareaVariants>;
|
|
11
|
+
declare const Textarea: React.ForwardRefExoticComponent<React.TextareaHTMLAttributes<HTMLTextAreaElement> & VariantProps<(props?: ({
|
|
12
|
+
variant?: "default" | "threat" | null | undefined;
|
|
13
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
14
|
+
export { Textarea, textareaVariants };
|
|
15
|
+
export type { TextareaProps };
|
|
16
|
+
//# sourceMappingURL=textarea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,gBAAgB;;8EAarB,CAAA;AAED,KAAK,aAAa,GAAG,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,GACpE,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEvC,QAAA,MAAM,QAAQ;;2HAQb,CAAA;AAGD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;AACrC,YAAY,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/ui/src/components/textarea.tsx
|
|
4
|
+
* @description Moe-Brutalist textarea — multi-line input, same base as Input.
|
|
5
|
+
*/
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { cn } from '../lib/utils';
|
|
9
|
+
const textareaVariants = cva('w-full rounded-none border-2 bg-void px-4 py-2 font-mono text-sm leading-5 text-white min-h-24 shadow-hard resize-y placeholder:text-secondary/50 focus-visible:outline-none focus-visible:shadow-hard-focus focus-visible:border-cyan disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed disabled:border-secondary', {
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: 'border-white',
|
|
13
|
+
threat: 'border-threat shadow-hard-threat focus-visible:shadow-hard-threat focus-visible:border-threat',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
variant: 'default',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const Textarea = React.forwardRef(({ className, variant, ...props }, ref) => (_jsx("textarea", { className: cn(textareaVariants({ variant, className })), ref: ref, ...props })));
|
|
21
|
+
Textarea.displayName = 'Textarea';
|
|
22
|
+
export { Textarea, textareaVariants };
|
|
23
|
+
//# sourceMappingURL=textarea.js.map
|