reend-components 0.1.0 → 0.3.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/README.md CHANGED
@@ -3,11 +3,22 @@
3
3
  [![npm version](https://img.shields.io/npm/v/reend-components)](https://www.npmjs.com/package/reend-components)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/reend-components)](https://www.npmjs.com/package/reend-components)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+ [![CI](https://github.com/VBeatDead/ReEnd-Components/actions/workflows/ci.yml/badge.svg)](https://github.com/VBeatDead/ReEnd-Components/actions/workflows/ci.yml)
6
7
 
7
- **Arknights: Endfield Design System** — A React component library inspired by the UI aesthetics of Arknights: Endfield. Built with TypeScript, Tailwind CSS, and Radix UI primitives.
8
+ **The only React component library built for tactical, sci-fi, and gaming-inspired UI.**
9
+
10
+ Not another shadcn clone. Not a Bootstrap wrapper.
11
+ ReEnd is for when your app should look like a tactical HUD.
12
+
13
+ → Dark-first design system (Endfield aesthetic)
14
+ → Signature components you won't find anywhere else
15
+ → CSS variable tokens + Tailwind preset
16
+ → TypeScript, Radix UI primitives, accessible
8
17
 
9
18
  [Documentation](https://reend-components.pages.dev) · [GitHub](https://github.com/VBeatDead/ReEnd-Components) · [npm](https://www.npmjs.com/package/reend-components)
10
19
 
20
+ ---
21
+
11
22
  ## Installation
12
23
 
13
24
  ```bash
@@ -22,11 +33,20 @@ bun add reend-components
22
33
 
23
34
  ### Peer Dependencies
24
35
 
25
- | Package | Version |
26
- | ----------- | ----------------- |
27
- | react | ≥18.0.0 |
28
- | react-dom | ≥18.0.0 |
29
- | tailwindcss | ≥3.4.0 (optional) |
36
+ | Package | Version | Required for |
37
+ | ---------------- | ------------------ | --------------------- |
38
+ | `react` | ≥18.0.0 | All components |
39
+ | `react-dom` | ≥18.0.0 | All components |
40
+ | `tailwindcss` | ≥3.4.0 *(optional)*| Tailwind preset |
41
+ | `framer-motion` | ≥10.0.0 *(optional)*| Signature components |
42
+ | `lucide-react` | ≥0.400.0 *(optional)*| HoloCard icon prop |
43
+
44
+ ```bash
45
+ # For Signature components (GlitchText, RadarChart, TacticalPanel, etc.)
46
+ npm install framer-motion lucide-react
47
+ ```
48
+
49
+ ---
30
50
 
31
51
  ## Quick Start
32
52
 
@@ -40,6 +60,7 @@ export default {
40
60
  presets: [reendPreset],
41
61
  content: [
42
62
  "./src/**/*.{ts,tsx}",
63
+ // Required for Signature component classes to be included
43
64
  "./node_modules/reend-components/dist/**/*.{js,mjs}",
44
65
  ],
45
66
  };
@@ -76,13 +97,15 @@ function App() {
76
97
 
77
98
  ### Without Tailwind
78
99
 
79
- If you're not using Tailwind CSS, import the pre-built stylesheet:
100
+ Import the pre-built stylesheet instead:
80
101
 
81
102
  ```tsx
82
103
  import "reend-components/styles.css";
83
104
  import { Tooltip } from "reend-components";
84
105
  ```
85
106
 
107
+ ---
108
+
86
109
  ## Components
87
110
 
88
111
  | Component | Description |
@@ -94,6 +117,61 @@ import { Tooltip } from "reend-components";
94
117
  | `cn()` | Utility for merging Tailwind classes |
95
118
  | `useToast()` | Toast notification hook |
96
119
 
120
+ ---
121
+
122
+ ## Signature Components
123
+
124
+ > **Requires** `framer-motion` and/or `lucide-react` peer dependencies.
125
+ > Add `./node_modules/reend-components/dist/**/*.{js,mjs}` to your Tailwind `content`
126
+ > array so animation utilities (`animate-glitch`, `clip-corner`, etc.) are included.
127
+
128
+ ```bash
129
+ npm install framer-motion lucide-react
130
+ ```
131
+
132
+ | Component | Description | Key Props |
133
+ | ---------------- | -------------------------------------------------------- | --------- |
134
+ | `GlitchText` | Animated glitch effect text span | `children: string`, `className?` |
135
+ | `DiamondLoader` | Rotating diamond loading spinner | `size?: "sm"\|"md"\|"lg"`, `label?` |
136
+ | `TacticalPanel` | HUD-style content panel with status indicator | `title`, `status?: "online"\|"warning"\|"offline"\|"scanning"` |
137
+ | `HoloCard` | Holographic stat/feature card with hover tilt | `title`, `subtitle`, `icon: React.ElementType`, `value?` |
138
+ | `DataStream` | Scrolling live data feed terminal | `messages?: string[]` |
139
+ | `TacticalBadge` | Status badge with semantic variants (CVA-powered) | `variant?: "default"\|"success"\|"warning"\|"danger"\|"info"` |
140
+ | `WarningBanner` | Alert banner with severity levels | `level?: "caution"\|"alert"\|"critical"` |
141
+ | `ScanDivider` | Animated scan-line section divider | `label?` |
142
+ | `CoordinateTag` | HUD coordinate display tag | `label`, `value`, `unit?` |
143
+ | `RadarChart` | Animated SVG radar/spider chart | `data: {label, value}[]`, `size?`, `color?: "primary"\|"cyan"` |
144
+ | `HUDOverlay` | Corner-bracket HUD overlay with crosshair and coords | `systemLabel?`, `lat?`, `lon?`, `showCoords?`, `showCrosshair?` |
145
+
146
+ ```tsx
147
+ import {
148
+ TacticalPanel,
149
+ HUDOverlay,
150
+ RadarChart,
151
+ GlitchText,
152
+ } from "reend-components";
153
+
154
+ function Dashboard() {
155
+ return (
156
+ <HUDOverlay systemLabel="ENDFIELD::DASHBOARD">
157
+ <TacticalPanel title="OPERATOR STATUS" status="online">
158
+ <GlitchText>DR. AMBROSE</GlitchText>
159
+ <RadarChart
160
+ data={[
161
+ { label: "ATK", value: 88 },
162
+ { label: "DEF", value: 62 },
163
+ { label: "TECH", value: 95 },
164
+ { label: "SPD", value: 74 },
165
+ ]}
166
+ />
167
+ </TacticalPanel>
168
+ </HUDOverlay>
169
+ );
170
+ }
171
+ ```
172
+
173
+ ---
174
+
97
175
  ## Theming
98
176
 
99
177
  ReEnd uses CSS custom properties for all colors. Override any variable:
@@ -128,6 +206,8 @@ See [CSS Variable Reference](https://reend-components.pages.dev/docs/foundations
128
206
 
129
207
  [Full token reference →](https://reend-components.pages.dev/docs/foundations)
130
208
 
209
+ ---
210
+
131
211
  ## Development
132
212
 
133
213
  ```bash
@@ -137,9 +217,27 @@ npm install
137
217
  npm run dev # docs dev server at :8080
138
218
  npm run build # build docs SPA
139
219
  npm run build:lib # build library for npm
140
- npm run test # run tests
220
+ npm run test # run tests (89 tests)
221
+ npm run test:coverage # test + coverage report
141
222
  ```
142
223
 
224
+ ---
225
+
226
+ ## Internationalization (i18n)
227
+
228
+ The documentation site supports **English** (default) and **Bahasa Indonesia** via [react-i18next](https://react.i18next.com).
229
+
230
+ ### URL Structure
231
+
232
+ | URL Pattern | Language |
233
+ | ---------------------- | ---------- |
234
+ | `/docs/foundations` | English |
235
+ | `/id/docs/foundations` | Indonesian |
236
+
237
+ **1,425 translation keys** across 16 namespaces × 2 languages.
238
+
239
+ ---
240
+
143
241
  ## License
144
242
 
145
243
  MIT © [VBeatDead](https://github.com/VBeatDead)
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),R=require("react"),D=require("@radix-ui/react-tooltip"),P=require("clsx"),E=require("tailwind-merge"),M=require("@radix-ui/react-toast"),I=require("class-variance-authority"),V=require("lucide-react"),w=require("sonner");function g(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const o in t)if(o!=="default"){const s=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(e,o,s.get?s:{enumerable:!0,get:()=>t[o]})}}return e.default=t,Object.freeze(e)}const i=g(R),u=g(D),a=g(M);function n(...t){return E.twMerge(P.clsx(t))}const q=u.Provider,C=u.Root,k=u.Trigger,S=i.forwardRef(({className:t,sideOffset:e=4,...o},s)=>r.jsx(u.Content,{ref:s,sideOffset:e,className:n("z-50 overflow-hidden border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...o}));S.displayName=u.Content.displayName;const N=a.Provider,T=i.forwardRef(({className:t,...e},o)=>r.jsx(a.Viewport,{ref:o,className:n("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...e}));T.displayName=a.Viewport.displayName;const z=I.cva("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),v=i.forwardRef(({className:t,variant:e,...o},s)=>r.jsx(a.Root,{ref:s,className:n(z({variant:e}),t),...o}));v.displayName=a.Root.displayName;const j=i.forwardRef(({className:t,...e},o)=>r.jsx(a.Action,{ref:o,className:n("inline-flex h-8 shrink-0 items-center justify-center border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",t),...e}));j.displayName=a.Action.displayName;const x=i.forwardRef(({className:t,...e},o)=>r.jsx(a.Close,{ref:o,className:n("absolute right-2 top-2 p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:r.jsx(V.X,{className:"h-4 w-4"})}));x.displayName=a.Close.displayName;const b=i.forwardRef(({className:t,...e},o)=>r.jsx(a.Title,{ref:o,className:n("text-sm font-semibold",t),...e}));b.displayName=a.Title.displayName;const y=i.forwardRef(({className:t,...e},o)=>r.jsx(a.Description,{ref:o,className:n("text-sm opacity-90",t),...e}));y.displayName=a.Description.displayName;const B=1,L=5e3;let f=0;function U(){return f=(f+1)%Number.MAX_SAFE_INTEGER,f.toString()}const m=new Map,h=t=>{if(m.has(t))return;const e=setTimeout(()=>{m.delete(t),c({type:"REMOVE_TOAST",toastId:t})},L);m.set(t,e)},X=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,B)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(o=>o.id===e.toast.id?{...o,...e.toast}:o)};case"DISMISS_TOAST":{const{toastId:o}=e;return o?h(o):t.toasts.forEach(s=>{h(s.id)}),{...t,toasts:t.toasts.map(s=>s.id===o||o===void 0?{...s,open:!1}:s)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(o=>o.id!==e.toastId)}}},l=[];let p={toasts:[]};function c(t){p=X(p,t),l.forEach(e=>{e(p)})}function A({...t}){const e=U(),o=d=>c({type:"UPDATE_TOAST",toast:{...d,id:e}}),s=()=>c({type:"DISMISS_TOAST",toastId:e});return c({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:d=>{d||s()}}}),{id:e,dismiss:s,update:o}}function O(){const[t,e]=i.useState(p);return i.useEffect(()=>(l.push(e),()=>{const o=l.indexOf(e);o>-1&&l.splice(o,1)}),[t]),{...t,toast:A,dismiss:o=>c({type:"DISMISS_TOAST",toastId:o})}}function F(){const{toasts:t}=O();return r.jsxs(N,{children:[t.map(function({id:e,title:o,description:s,action:d,..._}){return r.jsxs(v,{..._,children:[r.jsxs("div",{className:"grid gap-1",children:[o&&r.jsx(b,{children:o}),s&&r.jsx(y,{children:s})]}),d,r.jsx(x,{})]},e)}),r.jsx(T,{})]})}const G=({theme:t="dark",...e})=>r.jsx(w.Toaster,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});Object.defineProperty(exports,"toast",{enumerable:!0,get:()=>w.toast});exports.SonnerToaster=G;exports.Toast=v;exports.ToastAction=j;exports.ToastClose=x;exports.ToastDescription=y;exports.ToastProvider=N;exports.ToastTitle=b;exports.ToastViewport=T;exports.Toaster=F;exports.Tooltip=C;exports.TooltipContent=S;exports.TooltipProvider=q;exports.TooltipTrigger=k;exports.cn=n;exports.toastAction=A;exports.useToast=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),At=require("react"),_t=require("@radix-ui/react-tooltip"),It=require("clsx"),Vt=require("tailwind-merge"),Et=require("@radix-ui/react-toast"),b=require("class-variance-authority"),_=require("lucide-react"),re=require("sonner"),$t=require("@radix-ui/react-slot"),Ot=require("@radix-ui/react-checkbox"),Bt=require("@radix-ui/react-radio-group"),Lt=require("@radix-ui/react-switch"),Mt=require("@radix-ui/react-select"),zt=require("@radix-ui/react-avatar"),Ft=require("@radix-ui/react-progress"),qt=require("@radix-ui/react-accordion"),Gt=require("@radix-ui/react-tabs"),Ht=require("@radix-ui/react-popover"),Ut=require("@radix-ui/react-dialog"),Wt=require("@radix-ui/react-separator"),T=require("framer-motion");function v(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const o=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(r,a,o.get?o:{enumerable:!0,get:()=>t[a]})}}return r.default=t,Object.freeze(r)}const s=v(At),C=v(_t),h=v(Et),Z=v(Ot),ae=v(Bt),J=v(Lt),g=v(Mt),B=v(zt),ee=v(Ft),R=v(qt),I=v(Gt),k=v(Ht),y=v(Ut),Yt=v(Wt);function i(...t){return Vt.twMerge(It.clsx(t))}const Xt=C.Provider,Kt=C.Root,Qt=C.Trigger,oe=s.forwardRef(({className:t,sideOffset:r=4,...a},o)=>e.jsx(C.Content,{ref:o,sideOffset:r,className:i("z-50 overflow-hidden border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...a}));oe.displayName=C.Content.displayName;const se=h.Provider,L=s.forwardRef(({className:t,...r},a)=>e.jsx(h.Viewport,{ref:a,className:i("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...r}));L.displayName=h.Viewport.displayName;const Zt=b.cva("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),M=s.forwardRef(({className:t,variant:r,...a},o)=>e.jsx(h.Root,{ref:o,className:i(Zt({variant:r}),t),...a}));M.displayName=h.Root.displayName;const ne=s.forwardRef(({className:t,...r},a)=>e.jsx(h.Action,{ref:a,className:i("inline-flex h-8 shrink-0 items-center justify-center border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",t),...r}));ne.displayName=h.Action.displayName;const z=s.forwardRef(({className:t,...r},a)=>e.jsx(h.Close,{ref:a,className:i("absolute right-2 top-2 p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...r,children:e.jsx(_.X,{className:"h-4 w-4"})}));z.displayName=h.Close.displayName;const F=s.forwardRef(({className:t,...r},a)=>e.jsx(h.Title,{ref:a,className:i("text-sm font-semibold",t),...r}));F.displayName=h.Title.displayName;const q=s.forwardRef(({className:t,...r},a)=>e.jsx(h.Description,{ref:a,className:i("text-sm opacity-90",t),...r}));q.displayName=h.Description.displayName;const Jt=1,er=5e3;let E=0;function tr(){return E=(E+1)%Number.MAX_SAFE_INTEGER,E.toString()}const $=new Map,te=t=>{if($.has(t))return;const r=setTimeout(()=>{$.delete(t),S({type:"REMOVE_TOAST",toastId:t})},er);$.set(t,r)},rr=(t,r)=>{switch(r.type){case"ADD_TOAST":return{...t,toasts:[r.toast,...t.toasts].slice(0,Jt)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(a=>a.id===r.toast.id?{...a,...r.toast}:a)};case"DISMISS_TOAST":{const{toastId:a}=r;return a?te(a):t.toasts.forEach(o=>{te(o.id)}),{...t,toasts:t.toasts.map(o=>o.id===a||a===void 0?{...o,open:!1}:o)}}case"REMOVE_TOAST":return r.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(a=>a.id!==r.toastId)}}},P=[];let A={toasts:[]};function S(t){A=rr(A,t),P.forEach(r=>{r(A)})}function ie({...t}){const r=tr(),a=n=>S({type:"UPDATE_TOAST",toast:{...n,id:r}}),o=()=>S({type:"DISMISS_TOAST",toastId:r});return S({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:n=>{n||o()}}}),{id:r,dismiss:o,update:a}}function le(){const[t,r]=s.useState(A);return s.useEffect(()=>(P.push(r),()=>{const a=P.indexOf(r);a>-1&&P.splice(a,1)}),[t]),{...t,toast:ie,dismiss:a=>S({type:"DISMISS_TOAST",toastId:a})}}function ar(){const{toasts:t}=le();return e.jsxs(se,{children:[t.map(function({id:r,title:a,description:o,action:n,...l}){return e.jsxs(M,{...l,children:[e.jsxs("div",{className:"grid gap-1",children:[a&&e.jsx(F,{children:a}),o&&e.jsx(q,{children:o})]}),n,e.jsx(z,{})]},r)}),e.jsx(L,{})]})}const or=({theme:t="dark",...r})=>e.jsx(re.Toaster,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...r}),O=b.cva("inline-flex items-center justify-center gap-2 font-display font-bold uppercase tracking-[0.1em] transition-all duration-150 select-none whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-40",{variants:{variant:{primary:"clip-corner bg-primary text-primary-foreground hover:brightness-110 hover:shadow-glow active:brightness-90",secondary:"clip-corner border border-white/25 text-card-foreground bg-transparent hover:border-primary/60 hover:text-primary active:bg-primary/5",ghost:"bg-transparent text-muted-foreground hover:text-primary hover:bg-primary/5 active:bg-primary/10",danger:"clip-corner bg-destructive text-destructive-foreground hover:brightness-110 active:brightness-90",link:"bg-transparent text-primary underline-offset-4 hover:underline h-auto p-0",icon:"bg-white/5 border border-white/10 text-muted-foreground hover:border-primary/30 hover:bg-primary/10 hover:text-primary"},size:{xs:"h-7 px-3 text-[11px]",sm:"h-8 px-4 text-xs",md:"h-11 px-7 text-sm",lg:"h-[52px] px-9 text-base",xl:"h-[60px] px-12 text-lg",icon:"h-10 w-10 p-0"}},defaultVariants:{variant:"primary",size:"md"}}),de=s.forwardRef(({className:t,variant:r,size:a,asChild:o=!1,loading:n=!1,disabled:l,children:d,type:c="button",...p},u)=>o?e.jsx($t.Slot,{ref:u,className:i(O({variant:r,size:a}),t),"aria-disabled":l||void 0,...p,children:d}):e.jsxs("button",{ref:u,type:c,className:i(O({variant:r,size:a}),n&&"pointer-events-none opacity-80",t),disabled:l||n,"aria-busy":n||void 0,...p,children:[n&&e.jsx("span",{className:"h-4 w-4 shrink-0 border-2 border-current clip-corner-sm animate-diamond-spin","aria-hidden":"true"}),d]}));de.displayName="Button";const ce=b.cva("inline-flex items-center gap-1.5 border px-2.5 py-0.5 font-mono text-[10px] font-semibold tracking-[0.12em] uppercase transition-colors",{variants:{variant:{default:"border-white/15 text-muted-foreground bg-white/5",primary:"border-primary/40 text-primary bg-primary/10",info:"border-ef-blue/40 text-ef-blue bg-ef-blue/10",success:"border-ef-green/40 text-ef-green bg-ef-green/10",warning:"border-ef-orange/40 text-ef-orange bg-ef-orange/10",danger:"border-destructive/40 text-destructive bg-destructive/10",purple:"border-ef-purple/40 text-ef-purple bg-ef-purple/10"}},defaultVariants:{variant:"default"}}),pe=s.forwardRef(({className:t,variant:r,removable:a,onRemove:o,children:n,...l},d)=>e.jsxs("span",{ref:d,className:i(ce({variant:r}),a&&"pr-1",t),...l,children:[n,a&&e.jsx("button",{type:"button",onClick:c=>{c.stopPropagation(),o==null||o()},className:"ml-0.5 inline-flex items-center justify-center leading-none opacity-50 hover:opacity-100 transition-opacity focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current","aria-label":"Remove",tabIndex:0,children:"×"})]}));pe.displayName="Badge";const sr="before:content-[''] before:absolute before:-top-px before:-left-px before:w-6 before:h-6 before:border-t-2 before:border-l-2 before:border-primary/40 before:pointer-events-none after:content-[''] after:absolute after:-bottom-px after:-right-px after:w-6 after:h-6 after:border-b-2 after:border-r-2 after:border-primary/40 after:pointer-events-none",ue=b.cva(["relative bg-surface-1 border border-border transition-all duration-300",sr].join(" "),{variants:{hoverable:{true:["cursor-pointer","hover:-translate-y-1","hover:shadow-[0_16px_48px_rgba(0,0,0,0.5)]","hover:border-primary/20","hover:before:border-primary/60","hover:after:border-primary/60"].join(" "),false:""},selected:{true:"border-2 border-primary/40 bg-primary/[0.06]",false:""}},defaultVariants:{hoverable:!1,selected:!1}}),me=s.forwardRef(({className:t,hoverable:r,selected:a,...o},n)=>e.jsx("div",{ref:n,className:i(ue({hoverable:r,selected:a}),t),...o}));me.displayName="Card";const fe=s.forwardRef(({className:t,...r},a)=>e.jsx("div",{ref:a,className:i("flex items-start justify-between gap-4 p-5",t),...r}));fe.displayName="CardHeader";const xe=s.forwardRef(({className:t,...r},a)=>e.jsx("p",{ref:a,className:i("font-mono text-[10px] tracking-[0.15em] uppercase text-primary mb-2",t),...r}));xe.displayName="CardMeta";const ge=s.forwardRef(({className:t,...r},a)=>e.jsx("h3",{ref:a,className:i("font-display text-sm font-bold tracking-[0.02em] uppercase text-foreground",t),...r}));ge.displayName="CardTitle";const be=s.forwardRef(({className:t,...r},a)=>e.jsx("p",{ref:a,className:i("text-sm text-muted-foreground leading-relaxed",t),...r}));be.displayName="CardDescription";const ve=s.forwardRef(({className:t,...r},a)=>e.jsx("div",{ref:a,className:i("p-5",t),...r}));ve.displayName="CardBody";const he=s.forwardRef(({className:t,...r},a)=>e.jsx("div",{ref:a,className:i("flex items-center gap-3 px-5 py-4 border-t border-border",t),...r}));he.displayName="CardFooter";const ye=b.cva("relative flex items-center border transition-all duration-150 bg-surface-1",{variants:{state:{default:["border-white/[0.12]","hover:border-white/20","focus-within:border-primary","focus-within:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]"].join(" "),error:["border-ef-red","focus-within:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]"].join(" "),success:"border-ef-green"},size:{sm:"h-8",md:"h-11",lg:"h-[52px]"}},defaultVariants:{state:"default",size:"md"}}),Ne=s.forwardRef(({className:t,state:r="default",size:a="md",leftElement:o,rightElement:n,disabled:l,...d},c)=>{const p=o||a==="sm"?"pl-2":"pl-3",u=n||a==="sm"?"pr-2":"pr-3";return e.jsxs("div",{className:i(ye({state:r,size:a}),l&&"opacity-40 cursor-not-allowed pointer-events-none bg-background",t),children:[o&&e.jsx("span",{className:"pl-3 flex-shrink-0 text-muted-foreground flex items-center",children:o}),e.jsx("input",{ref:c,disabled:l,className:i("h-full flex-1 min-w-0 bg-transparent text-foreground text-sm font-mono","placeholder:text-muted-foreground focus:outline-none",p,u),...d}),n&&e.jsx("span",{className:"pr-3 flex-shrink-0 text-muted-foreground flex items-center",children:n})]})});Ne.displayName="Input";const we=s.forwardRef(({className:t,...r},a)=>e.jsx("label",{ref:a,className:i("font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",t),...r}));we.displayName="Label";const je=s.forwardRef(({className:t,state:r="default",...a},o)=>e.jsx("p",{ref:o,className:i("text-[12px] leading-tight",r==="error"&&"text-destructive",r==="success"&&"text-ef-green",r==="default"&&"text-muted-foreground",t),...a}));je.displayName="HelperText";const Te=b.cva(["w-full resize-y border bg-surface-1 text-foreground","placeholder:text-muted-foreground font-mono text-sm","transition-all duration-150 focus:outline-none","min-h-[120px] px-3 py-2.5","disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-background disabled:pointer-events-none"].join(" "),{variants:{state:{default:["border-white/[0.12]","hover:border-white/20","focus:border-primary","focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]"].join(" "),error:["border-ef-red","focus:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]"].join(" "),success:"border-ef-green"}},defaultVariants:{state:"default"}}),Se=s.forwardRef(({className:t,state:r="default",showCount:a,maxLength:o,onChange:n,...l},d)=>{const[c,p]=s.useState(()=>{const f=l.value??l.defaultValue??"";return String(f).length});s.useEffect(()=>{l.value!==void 0&&p(String(l.value).length)},[l.value]);const u=()=>o!==void 0&&c>o?"text-destructive":o!==void 0&&c/o>=.8?"text-ef-orange":"text-muted-foreground";return e.jsxs("div",{className:"relative",children:[e.jsx("textarea",{ref:d,maxLength:o,onChange:f=>{p(f.target.value.length),n==null||n(f)},className:i(Te({state:r}),a&&"pb-7",t),...l}),a&&e.jsx("span",{className:i("absolute bottom-2 right-3 font-mono text-[11px] pointer-events-none select-none",u()),children:o!==void 0?`${c}/${o}`:c})]})});Se.displayName="Textarea";const Re=s.forwardRef(({className:t,label:r,helperText:a,id:o,...n},l)=>{const d=s.useId(),c=o??d;return e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Z.Root,{ref:l,id:c,className:i("group peer h-[18px] w-[18px] shrink-0 border-2 border-white/25 bg-transparent","cursor-pointer transition-all duration-150","hover:border-primary/60","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-40","data-[state=checked]:bg-primary data-[state=checked]:border-primary","data-[state=indeterminate]:bg-primary/50 data-[state=indeterminate]:border-primary",t),...n,children:e.jsxs(Z.Indicator,{className:"flex items-center justify-center",children:[e.jsx("span",{className:"hidden group-data-[state=checked]:inline leading-none text-primary-foreground text-[10px] font-bold select-none",children:"◆"}),e.jsx("span",{className:"hidden group-data-[state=indeterminate]:inline leading-none text-primary-foreground text-sm font-bold select-none",children:"−"})]})}),r&&e.jsx("label",{htmlFor:c,className:"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none",children:r})]}),a&&e.jsx("p",{className:"text-[12px] text-muted-foreground pl-[30px]",children:a})]})});Re.displayName="Checkbox";const ke=s.forwardRef(({className:t,...r},a)=>e.jsx(ae.Root,{ref:a,className:i("flex flex-col gap-3",t),...r}));ke.displayName="RadioGroup";const Ce=s.forwardRef(({className:t,label:r,helperText:a,id:o,...n},l)=>{const d=s.useId(),c=o??d;return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(ae.Item,{ref:l,id:c,className:i("group peer cursor-pointer shrink-0 flex items-center justify-center","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-40",t),...n,children:[e.jsx("span",{className:"text-[18px] leading-none select-none transition-colors duration-150 group-data-[state=unchecked]:inline group-data-[state=checked]:hidden text-muted-foreground/50 group-hover:text-muted-foreground group-data-[disabled]:pointer-events-none",children:"◇"}),e.jsx("span",{className:"text-[18px] leading-none select-none transition-colors duration-150 group-data-[state=checked]:inline group-data-[state=unchecked]:hidden text-primary",children:"◆"})]}),r&&e.jsx("label",{htmlFor:c,className:"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none",children:r})]}),a&&e.jsx("p",{className:"text-[12px] text-muted-foreground pl-[30px]",children:a})]})});Ce.displayName="RadioGroupItem";const De=s.forwardRef(({className:t,label:r,offLabel:a,onLabel:o,id:n,checked:l,...d},c)=>{const p=s.useId(),u=n??p;return e.jsxs("div",{className:"flex items-center gap-3",children:[(a||o)&&e.jsx("span",{className:"text-[11px] font-mono uppercase tracking-widest text-muted-foreground select-none min-w-[32px] text-right",children:l?o:a}),e.jsx(J.Root,{ref:c,id:u,checked:l,className:i("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-none","border border-white/15 bg-white/10","transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-40","data-[state=checked]:bg-primary data-[state=checked]:border-primary",t),...d,children:e.jsx(J.Thumb,{className:i("pointer-events-none block h-5 w-5 bg-white shadow-sm ring-0","transition-transform duration-200","data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5")})}),r&&e.jsx("label",{htmlFor:u,className:"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none",children:r})]})});De.displayName="Switch";const Pe=g.Root;Pe.displayName="Select";const Ae=g.Group;Ae.displayName="SelectGroup";const _e=g.Value;_e.displayName="SelectValue";const Ie=s.forwardRef(({className:t,children:r,...a},o)=>e.jsxs(g.Trigger,{ref:o,className:i("relative flex h-11 w-full items-center justify-between","border border-white/[0.12] bg-surface-1 px-3","font-mono text-sm text-foreground","transition-all duration-150","hover:border-white/20","focus:outline-none focus:border-primary focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]","disabled:cursor-not-allowed disabled:opacity-40 disabled:pointer-events-none","data-[placeholder]:text-muted-foreground","[&>span]:line-clamp-1",t),...a,children:[r,e.jsx(g.Icon,{asChild:!0,children:e.jsx("span",{className:"shrink-0 text-muted-foreground text-xs ml-2 select-none",children:"▾"})})]}));Ie.displayName="SelectTrigger";const G=s.forwardRef(({className:t,...r},a)=>e.jsx(g.ScrollUpButton,{ref:a,className:i("flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs",t),...r,children:"▴"}));G.displayName="SelectScrollUpButton";const H=s.forwardRef(({className:t,...r},a)=>e.jsx(g.ScrollDownButton,{ref:a,className:i("flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs",t),...r,children:"▾"}));H.displayName="SelectScrollDownButton";const Ve=s.forwardRef(({className:t,children:r,position:a="popper",...o},n)=>e.jsx(g.Portal,{children:e.jsxs(g.Content,{ref:n,className:i("relative z-[var(--z-overlay,50)] min-w-[8rem] overflow-hidden","bg-surface-2 border border-white/10 shadow-lg","data-[state=open]:animate-fade-in-up","data-[state=closed]:animate-fade-in-up",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",t),position:a,...o,children:[e.jsx(G,{}),e.jsx(g.Viewport,{className:i("p-1",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(H,{})]})}));Ve.displayName="SelectContent";const Ee=s.forwardRef(({className:t,...r},a)=>e.jsx(g.Label,{ref:a,className:i("font-mono text-[10px] uppercase tracking-widest text-muted-foreground/60 px-4 py-1.5",t),...r}));Ee.displayName="SelectLabel";const $e=s.forwardRef(({className:t,children:r,danger:a,...o},n)=>e.jsx(g.Item,{ref:n,className:i("relative flex w-full cursor-pointer select-none items-center px-4 py-2 text-sm text-muted-foreground","outline-none transition-colors duration-100","focus:bg-primary/6 focus:text-primary","data-[state=checked]:text-primary data-[state=checked]:font-medium","data-[disabled]:pointer-events-none data-[disabled]:opacity-40",a?"hover:bg-destructive/6 hover:text-destructive focus:bg-destructive/6 focus:text-destructive":"hover:bg-primary/6 hover:text-primary",t),...o,children:e.jsx(g.ItemText,{children:r})}));$e.displayName="SelectItem";const Oe=s.forwardRef(({className:t,...r},a)=>e.jsx(g.Separator,{ref:a,className:i("my-1 h-px bg-white/8",t),...r}));Oe.displayName="SelectSeparator";const Be=b.cva("relative inline-flex shrink-0 overflow-hidden clip-corner-sm",{variants:{size:{xs:"h-6 w-6",sm:"h-8 w-8",md:"h-10 w-10",lg:"h-14 w-14",xl:"h-20 w-20","2xl":"h-[120px] w-[120px]"}},defaultVariants:{size:"md"}}),nr={online:"text-ef-green",offline:"text-muted-foreground/50",busy:"text-destructive",away:"text-ef-orange"},Le=s.forwardRef(({className:t,size:r,status:a,...o},n)=>e.jsxs("div",{className:"relative inline-flex shrink-0",children:[e.jsx(B.Root,{ref:n,className:i(Be({size:r}),t),...o}),a&&e.jsx("span",{className:i("absolute -bottom-0.5 -right-0.5 text-[10px] leading-none select-none",nr[a]),"aria-label":a,children:"◆"})]}));Le.displayName="Avatar";const Me=s.forwardRef(({className:t,...r},a)=>e.jsx(B.Image,{ref:a,className:i("aspect-square h-full w-full object-cover",t),...r}));Me.displayName="AvatarImage";const ze=s.forwardRef(({className:t,...r},a)=>e.jsx(B.Fallback,{ref:a,className:i("flex h-full w-full items-center justify-center","bg-surface-2 font-display text-muted-foreground uppercase text-center","text-[clamp(8px,35%,28px)]",t),...r}));ze.displayName="AvatarFallback";const Fe=b.cva("relative w-full overflow-hidden bg-white/8",{variants:{size:{sm:"h-1",md:"h-1.5",lg:"h-2.5"}},defaultVariants:{size:"md"}}),qe=b.cva("h-full w-full flex-1 transition-all duration-500 ease-smooth origin-left",{variants:{variant:{default:"bg-primary",success:"bg-ef-green",danger:"bg-destructive",info:"bg-ef-blue"}},defaultVariants:{variant:"default"}}),Ge=s.forwardRef(({className:t,value:r,showLabel:a,size:o,variant:n,...l},d)=>{const c=r==null,p=c?void 0:Math.min(100,Math.max(0,r));return e.jsxs("div",{className:"w-full space-y-1",children:[a&&!c&&e.jsx("div",{className:"flex justify-end",children:e.jsxs("span",{className:"font-mono text-[11px] text-muted-foreground",children:[p,"%"]})}),e.jsx(ee.Root,{ref:d,className:i(Fe({size:o}),t),value:p,...l,children:e.jsx(ee.Indicator,{className:i(c?"h-full animate-skeleton":qe({variant:n})),style:c?void 0:{transform:`translateX(-${100-(p??0)}%)`}})})]})});Ge.displayName="Progress";const He=R.Root;He.displayName="Accordion";const Ue=s.forwardRef(({className:t,...r},a)=>e.jsx(R.Item,{ref:a,className:i("border border-white/6",t),...r}));Ue.displayName="AccordionItem";const We=s.forwardRef(({className:t,children:r,...a},o)=>e.jsx(R.Header,{className:"flex",children:e.jsxs(R.Trigger,{ref:o,className:i("group flex flex-1 items-center justify-between px-4 py-3","font-display text-[13px] font-semibold uppercase tracking-wider text-foreground","transition-all duration-200","hover:text-primary hover:bg-white/[0.02]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset","disabled:cursor-not-allowed disabled:opacity-40",t),...a,children:[r,e.jsx("span",{className:i("font-mono text-base leading-none select-none shrink-0 ml-2","text-muted-foreground transition-colors duration-200","group-hover:text-primary","group-data-[state=open]:hidden group-data-[state=closed]:inline"),"aria-hidden":!0,children:"+"}),e.jsx("span",{className:i("font-mono text-base leading-none select-none shrink-0 ml-2","text-primary transition-colors duration-200","group-data-[state=open]:inline group-data-[state=closed]:hidden"),"aria-hidden":!0,children:"−"})]})}));We.displayName="AccordionTrigger";const Ye=s.forwardRef(({className:t,children:r,...a},o)=>e.jsx(R.Content,{ref:o,className:"overflow-hidden data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up",...a,children:e.jsx("div",{className:i("px-4 pb-4 pt-1 text-sm text-muted-foreground",t),children:r})}));Ye.displayName="AccordionContent";const Xe=I.Root;Xe.displayName="Tabs";const Ke=b.cva("inline-flex items-center",{variants:{variant:{underline:"border-b border-white/10 gap-0",pill:"gap-1 bg-surface-1 p-1",bordered:"border border-white/10 gap-0"}},defaultVariants:{variant:"underline"}}),Qe=s.forwardRef(({className:t,variant:r,...a},o)=>e.jsx(I.List,{ref:o,className:i(Ke({variant:r}),t),...a}));Qe.displayName="TabsList";const Ze=b.cva(["font-display text-[13px] font-semibold uppercase tracking-wider","transition-all duration-150 cursor-pointer","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset","disabled:cursor-not-allowed disabled:opacity-40"],{variants:{variant:{underline:["px-4 py-2.5 text-muted-foreground border-b-2 border-transparent -mb-px","hover:text-foreground","data-[state=active]:text-primary data-[state=active]:border-b-primary"],pill:["px-4 py-1.5 text-muted-foreground","hover:text-foreground","data-[state=active]:bg-surface-3 data-[state=active]:text-primary"],bordered:["px-4 py-2.5 text-muted-foreground border-r border-white/10 last:border-r-0","hover:text-foreground hover:bg-white/[0.03]","data-[state=active]:text-primary data-[state=active]:bg-white/[0.05]"]}},defaultVariants:{variant:"underline"}}),Je=s.forwardRef(({className:t,variant:r,...a},o)=>e.jsx(I.Trigger,{ref:o,className:i(Ze({variant:r}),t),...a}));Je.displayName="TabsTrigger";const et=s.forwardRef(({className:t,...r},a)=>e.jsx(I.Content,{ref:a,className:i("mt-4 text-sm text-muted-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background",t),...r}));et.displayName="TabsContent";const tt=k.Root;tt.displayName="Popover";const rt=k.Trigger;rt.displayName="PopoverTrigger";const at=k.Anchor;at.displayName="PopoverAnchor";const ot=s.forwardRef(({className:t,align:r="center",sideOffset:a=6,...o},n)=>e.jsx(k.Portal,{children:e.jsx(k.Content,{ref:n,align:r,sideOffset:a,className:i("z-50 min-w-[200px]","bg-surface-2 border border-white/10 shadow-lg","p-4","data-[state=open]:animate-fade-in-up","data-[state=closed]:animate-fade-in-up","focus:outline-none",t),...o})}));ot.displayName="PopoverContent";const st=y.Root;st.displayName="Dialog";const nt=y.Trigger;nt.displayName="DialogTrigger";const U=y.Portal;U.displayName="DialogPortal";const it=y.Close;it.displayName="DialogClose";const W=s.forwardRef(({className:t,...r},a)=>e.jsx(y.Overlay,{ref:a,className:i("fixed inset-0 z-50 bg-black/75 backdrop-blur-sm","data-[state=open]:animate-fade-in-up",t),...r}));W.displayName="DialogOverlay";const lt=b.cva(["fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2","bg-surface-2 border border-white/10 shadow-xl","flex flex-col","data-[state=open]:animate-fade-in-up","focus:outline-none"],{variants:{size:{sm:"w-full max-w-sm",md:"w-full max-w-lg",lg:"w-full max-w-2xl",xl:"w-full max-w-4xl",fullscreen:"w-screen h-screen max-w-none"}},defaultVariants:{size:"md"}}),dt=s.forwardRef(({className:t,size:r,children:a,...o},n)=>e.jsxs(U,{children:[e.jsx(W,{}),e.jsx(y.Content,{ref:n,className:i(lt({size:r}),t),...o,children:a})]}));dt.displayName="DialogContent";function ct({className:t,...r}){return e.jsx("div",{className:i("flex shrink-0 items-center justify-between border-b border-white/8 px-6 py-4",t),...r})}ct.displayName="DialogHeader";function pt({className:t,...r}){return e.jsx("div",{className:i("flex shrink-0 items-center justify-end gap-3 border-t border-white/8 px-6 py-4",t),...r})}pt.displayName="DialogFooter";const ut=s.forwardRef(({className:t,...r},a)=>e.jsx(y.Title,{ref:a,className:i("font-display text-base font-semibold uppercase tracking-wider text-foreground",t),...r}));ut.displayName="DialogTitle";const mt=s.forwardRef(({className:t,...r},a)=>e.jsx(y.Description,{ref:a,className:i("flex-1 overflow-y-auto px-6 py-4 text-sm text-muted-foreground",t),...r}));mt.displayName="DialogDescription";const ft=b.cva("shrink-0",{variants:{variant:{default:"bg-white/10",subtle:"bg-white/5",strong:"bg-white/25",glow:"bg-gradient-to-r from-transparent via-primary/40 to-transparent",accent:"bg-primary/30"},orientation:{horizontal:"h-px w-full",vertical:"w-px h-full"}},defaultVariants:{variant:"default",orientation:"horizontal"}}),xt=s.forwardRef(({className:t,orientation:r="horizontal",variant:a,decorative:o=!0,...n},l)=>{const d=r??"horizontal";return e.jsx(Yt.Root,{ref:l,decorative:o,orientation:d,className:i(ft({variant:a,orientation:d}),t),...n})});xt.displayName="Separator";const gt=s.forwardRef(({children:t,className:r=""},a)=>e.jsxs("span",{ref:a,className:`relative inline-block ${r}`,children:[e.jsx("span",{className:"relative z-10",children:t}),e.jsx("span",{"aria-hidden":!0,className:"absolute inset-0 text-ef-cyan opacity-70 animate-glitch",style:{clipPath:"inset(20% 0 50% 0)",transform:"translate(-2px, 0)"},children:t}),e.jsx("span",{"aria-hidden":!0,className:"absolute inset-0 text-ef-red opacity-70 animate-glitch",style:{clipPath:"inset(50% 0 20% 0)",transform:"translate(2px, 0)",animationDelay:"0.1s"},children:t})]}));gt.displayName="GlitchText";const ir={sm:16,md:28,lg:44},bt=s.forwardRef(({size:t="md",label:r,className:a},o)=>{const n=ir[t];return e.jsxs("div",{ref:o,className:`flex flex-col items-center gap-3${a?` ${a}`:""}`,children:[e.jsx("div",{className:"relative",style:{width:n*2,height:n*2},children:[0,1,2].map(l=>e.jsx("div",{className:"absolute inset-0 border-2 border-primary",style:{transform:`rotate(45deg) scale(${1-l*.25})`,animation:`diamondSpin ${1.2+l*.4}s linear infinite${l===1?" reverse":""}`,opacity:1-l*.25}},l))}),r&&e.jsx("span",{className:"font-mono text-xs text-muted-foreground tracking-[0.15em] uppercase",children:r})]})});bt.displayName="DiamondLoader";const lr={online:"ONLINE",warning:"CAUTION",offline:"OFFLINE",scanning:"SCANNING"},dr={online:"bg-ef-green",warning:"bg-ef-yellow",offline:"bg-ef-red",scanning:"bg-ef-cyan animate-pulse"},vt=s.forwardRef(({title:t,status:r="online",children:a,className:o},n)=>e.jsxs("div",{ref:n,className:`relative border border-border bg-surface-1 scanline-overlay${o?` ${o}`:""}`,children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-border bg-surface-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(_.Crosshair,{className:"w-3.5 h-3.5 text-primary"}),e.jsx("span",{className:"font-display text-[11px] font-bold tracking-[0.15em] uppercase text-foreground",children:t})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-2 h-2 ${dr[r]}`,style:{clipPath:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"}}),e.jsx("span",{className:"font-mono text-[10px] tracking-[0.1em] text-muted-foreground",children:lr[r]})]})]}),e.jsx("div",{className:"absolute top-0 left-0 w-6 h-6 border-t-2 border-l-2 border-primary/40 pointer-events-none"}),e.jsx("div",{className:"absolute top-0 right-0 w-6 h-6 border-t-2 border-r-2 border-primary/40 pointer-events-none"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-6 h-6 border-b-2 border-l-2 border-primary/40 pointer-events-none"}),e.jsx("div",{className:"absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary/40 pointer-events-none"}),e.jsx("div",{className:"p-5",children:a})]}));vt.displayName="TacticalPanel";const ht=s.forwardRef(({title:t,subtitle:r,icon:a,value:o,className:n},l)=>{const[d,c]=s.useState(!1);return e.jsxs("div",{ref:l,className:`relative clip-corner border border-border bg-surface-1 p-6 overflow-hidden group cursor-pointer transition-all duration-500 hover:border-primary/30${n?` ${n}`:""}`,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:[e.jsx("div",{className:"absolute left-0 right-0 h-px bg-gradient-to-r from-transparent via-primary/60 to-transparent pointer-events-none transition-all",style:{top:d?"100%":"-10%",opacity:d?1:0,transitionDuration:"2000ms"}}),e.jsx("div",{className:"absolute inset-0 pointer-events-none transition-opacity duration-500",style:{background:"linear-gradient(135deg, transparent 0%, hsl(var(--primary) / 0.03) 40%, transparent 60%)",opacity:d?1:0}}),e.jsxs("div",{className:"relative z-10",children:[e.jsx(a,{className:"w-5 h-5 text-primary mb-4 group-hover:drop-shadow-[0_0_8px_hsl(var(--primary)/0.5)] transition-all"}),o&&e.jsx("p",{className:"font-display text-3xl font-bold text-primary mb-1",children:o}),e.jsx("h4",{className:"font-display text-sm font-bold tracking-[0.05em] uppercase text-foreground mb-1",children:t}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r})]}),e.jsx("div",{className:"absolute bottom-3 right-3 text-primary/20 group-hover:text-primary/60 transition-colors text-xs",children:"◆"})]})});ht.displayName="HoloCard";const cr=["[SYS] Initializing ENDFIELD protocol...","[NET] Connection established — latency: 12ms","[SEC] Authentication verified ◆ Level: ALPHA","[DAT] Loading design tokens: 94 variables mapped","[GPU] Render pipeline: Optimized (60fps locked)","[SYS] Component registry: 70 modules online","[NET] Sync complete — all nodes operational","[DAT] Color system: HSL-based, 9 neutrals, 9 accents","[SEC] Encryption: AES-256 ◆ Status: ACTIVE","[SYS] ENDFIELD DESIGN SYSTEM v2.0 ◆ READY"],yt=s.forwardRef(({messages:t=cr,className:r},a)=>{const[o,n]=s.useState([]),l=s.useRef(null);return s.useEffect(()=>{let d=0;const c=setInterval(()=>{n(p=>{const u=[...p,t[d%t.length]];return u.length>8?u.slice(-8):u}),d++},1200);return()=>clearInterval(c)},[t]),s.useEffect(()=>{l.current&&(l.current.scrollTop=l.current.scrollHeight)},[o]),e.jsxs("div",{ref:a,className:`border border-border bg-background clip-corner overflow-hidden${r?` ${r}`:""}`,children:[e.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-border bg-surface-0",children:[e.jsx(_.Terminal,{className:"w-3.5 h-3.5 text-primary"}),e.jsx("span",{className:"font-mono text-[10px] tracking-[0.1em] text-muted-foreground uppercase",children:"LIVE FEED"}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx("div",{className:"w-1.5 h-1.5 bg-ef-green animate-pulse",style:{clipPath:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"}}),e.jsx("span",{className:"font-mono text-[10px] text-ef-green",children:"ACTIVE"})]})]}),e.jsxs("div",{ref:l,className:"p-4 h-48 overflow-y-auto font-mono text-xs space-y-1",children:[e.jsx(T.AnimatePresence,{children:o.map((d,c)=>e.jsx(T.motion.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:d.includes("[SEC]")?"text-ef-green":d.includes("[NET]")?"text-ef-blue":d.includes("[DAT]")?"text-ef-cyan":d.includes("[GPU]")?"text-ef-purple":"text-muted-foreground",children:d},`${d}-${c}`))}),e.jsx("span",{className:"inline-block w-2 h-4 bg-primary animate-cursor-blink"})]})]})});yt.displayName="DataStream";const Nt=b.cva("inline-flex items-center gap-1.5 clip-corner-sm border px-3 py-1 font-display text-[10px] font-bold tracking-[0.15em] uppercase",{variants:{variant:{default:"border-primary/40 text-primary bg-primary/10",success:"border-ef-green/40 text-ef-green bg-ef-green/10",warning:"border-ef-yellow/40 text-ef-yellow bg-ef-yellow/10",danger:"border-ef-red/40 text-ef-red bg-ef-red/10",info:"border-ef-cyan/40 text-ef-cyan bg-ef-cyan/10"}},defaultVariants:{variant:"default"}}),wt=s.forwardRef(({variant:t,className:r,children:a,...o},n)=>e.jsxs("span",{ref:n,className:i(Nt({variant:t}),r),...o,children:[e.jsx("span",{style:{fontSize:"6px"},children:"◆"}),a]}));wt.displayName="TacticalBadge";const pr={caution:{border:"border-ef-yellow/30",bg:"bg-ef-yellow/5",icon:"text-ef-yellow",label:"CAUTION"},alert:{border:"border-ef-orange/30",bg:"bg-ef-orange/5",icon:"text-ef-orange",label:"ALERT"},critical:{border:"border-ef-red/30",bg:"bg-ef-red/5",icon:"text-ef-red",label:"CRITICAL"}},jt=s.forwardRef(({level:t="caution",children:r,className:a},o)=>{const n=pr[t];return e.jsxs("div",{ref:o,className:`clip-corner border ${n.border} ${n.bg} p-4 flex items-start gap-3${a?` ${a}`:""}`,children:[e.jsx(_.AlertTriangle,{className:`w-5 h-5 ${n.icon} shrink-0 mt-0.5`}),e.jsxs("div",{children:[e.jsx("span",{className:`font-display text-[11px] font-bold tracking-[0.15em] ${n.icon}`,children:n.label}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:r})]})]})});jt.displayName="WarningBanner";const Tt=s.forwardRef(({label:t,className:r},a)=>e.jsxs("div",{ref:a,className:`relative flex items-center gap-4 py-2${r?` ${r}`:""}`,children:[e.jsx("div",{className:"flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent"}),t&&e.jsxs("span",{className:"font-display text-[10px] font-bold tracking-[0.2em] uppercase text-primary/60 flex items-center gap-2",children:[e.jsx("span",{style:{fontSize:"6px"},children:"◆"})," ",t," ",e.jsx("span",{style:{fontSize:"6px"},children:"◆"})]}),e.jsx("div",{className:"flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent"})]}));Tt.displayName="ScanDivider";const St=s.forwardRef(({label:t,value:r,unit:a,className:o},n)=>e.jsxs("div",{ref:n,className:`inline-flex items-center border border-border bg-surface-0 overflow-hidden${o?` ${o}`:""}`,children:[e.jsx("span",{className:"font-mono text-[10px] tracking-[0.1em] uppercase text-muted-foreground bg-surface-2 px-2.5 py-1.5 border-r border-border",children:t}),e.jsx("span",{className:"font-mono text-xs text-primary px-2.5 py-1.5 font-bold",children:r}),a&&e.jsx("span",{className:"font-mono text-[10px] text-muted-foreground pr-2.5",children:a})]}));St.displayName="CoordinateTag";const Rt=s.forwardRef(({data:t,size:r=260,color:a="primary",className:o},n)=>{const l=s.useRef(null),d=T.useInView(l,{once:!0}),c=s.useCallback(m=>{l.current=m,typeof n=="function"?n(m):n&&(n.current=m)},[n]),p=r/2,u=r/2,f=r*.38,w=4,Ct=t.length,Y=Math.PI*2/Ct,j=a==="cyan"?"--ef-cyan":"--primary",D=(m,x)=>({x:p+x*Math.sin(m*Y),y:u-x*Math.cos(m*Y)}),Dt=Array.from({length:w},(m,x)=>{const N=f*((x+1)/w);return t.map((V,Pt)=>D(Pt,N)).map(V=>`${V.x},${V.y}`).join(" ")}),X=t.map((m,x)=>D(x,m.value/100*f)),K=X.map(m=>`${m.x},${m.y}`).join(" "),Q=t.map(()=>`${p},${u}`).join(" ");return e.jsx("div",{ref:c,className:`flex flex-col items-center w-full${o?` ${o}`:""}`,children:e.jsxs("svg",{viewBox:`0 0 ${r} ${r}`,className:"w-full max-w-[260px] h-auto overflow-visible",children:[Dt.map((m,x)=>e.jsx("polygon",{points:m,fill:"none",stroke:"hsl(var(--border))",strokeWidth:1,opacity:.5},x)),t.map((m,x)=>{const N=D(x,f);return e.jsx("line",{x1:p,y1:u,x2:N.x,y2:N.y,stroke:"hsl(var(--border))",strokeWidth:1,opacity:.3},x)}),e.jsx(T.motion.polygon,{points:d?K:Q,fill:`hsl(var(${j}) / 0.15)`,stroke:`hsl(var(${j}))`,strokeWidth:2,initial:!1,animate:{points:d?K:Q},transition:{duration:.8,ease:[.25,.8,.25,1]},style:{filter:`drop-shadow(0 0 8px hsl(var(${j}) / 0.3))`}}),X.map((m,x)=>e.jsx(T.motion.circle,{cx:p,cy:u,r:4,fill:`hsl(var(${j}))`,stroke:"hsl(var(--background))",strokeWidth:2,initial:!1,animate:{cx:d?m.x:p,cy:d?m.y:u},transition:{duration:.8,delay:x*.05},style:{filter:`drop-shadow(0 0 4px hsl(var(${j}) / 0.5))`}},x)),t.map((m,x)=>{const N=D(x,f+20);return e.jsx("text",{x:N.x,y:N.y,textAnchor:"middle",dominantBaseline:"middle",className:"font-display text-[9px] font-bold tracking-[0.1em] uppercase",fill:"hsl(var(--muted-foreground))",children:m.label},x)})]})})});Rt.displayName="RadarChart";const kt=s.forwardRef(({children:t,systemLabel:r="SYS::ENDFIELD v2.0",lat:a="LAT 37.7749°N",lon:o="LON 122.4194°W",showCoords:n=!0,showCrosshair:l=!0,className:d},c)=>{const[p,u]=s.useState("");return s.useEffect(()=>{const f=()=>u(new Date().toLocaleTimeString("en-GB"));f();const w=setInterval(f,1e3);return()=>clearInterval(w)},[]),e.jsxs("div",{ref:c,className:`relative border border-border bg-surface-0 aspect-video flex items-center justify-center overflow-hidden${d?` ${d}`:""}`,children:[e.jsx("div",{className:"absolute inset-0 scanline-overlay"}),["top-3 left-3 border-t-2 border-l-2","top-3 right-3 border-t-2 border-r-2","bottom-3 left-3 border-b-2 border-l-2","bottom-3 right-3 border-b-2 border-r-2"].map((f,w)=>e.jsx("div",{className:`absolute w-8 h-8 ${f} border-primary/40 pointer-events-none`},w)),l&&e.jsxs("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none",children:[e.jsx("div",{className:"w-6 h-px bg-primary/20",style:{position:"absolute",top:"50%",left:"-12px"}}),e.jsx("div",{className:"h-6 w-px bg-primary/20",style:{position:"absolute",left:"50%",top:"-12px"}})]}),n&&e.jsxs("div",{className:"absolute top-4 left-12 font-mono text-[9px] text-muted-foreground/60 space-y-0.5",children:[e.jsx("div",{children:r}),e.jsx("div",{className:"text-primary/60",children:p})]}),n&&e.jsxs("div",{className:"absolute top-4 right-12 font-mono text-[9px] text-muted-foreground/60 text-right space-y-0.5",children:[e.jsx("div",{children:a}),e.jsx("div",{children:o})]}),e.jsxs("div",{className:"absolute bottom-4 left-12 right-12 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 bg-ef-green",style:{clipPath:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"}}),e.jsx("span",{className:"font-mono text-[9px] text-ef-green/80",children:"LINK ACTIVE"})]}),e.jsx("div",{className:"flex gap-4",children:["FPS:60","MEM:47%","NET:12ms"].map(f=>e.jsx("span",{className:"font-mono text-[9px] text-muted-foreground/50",children:f},f))})]}),e.jsx("div",{className:"relative z-10",children:t})]})});kt.displayName="HUDOverlay";Object.defineProperty(exports,"toast",{enumerable:!0,get:()=>re.toast});exports.Accordion=He;exports.AccordionContent=Ye;exports.AccordionItem=Ue;exports.AccordionTrigger=We;exports.Avatar=Le;exports.AvatarFallback=ze;exports.AvatarImage=Me;exports.Badge=pe;exports.Button=de;exports.Card=me;exports.CardBody=ve;exports.CardDescription=be;exports.CardFooter=he;exports.CardHeader=fe;exports.CardMeta=xe;exports.CardTitle=ge;exports.Checkbox=Re;exports.CoordinateTag=St;exports.DataStream=yt;exports.Dialog=st;exports.DialogClose=it;exports.DialogContent=dt;exports.DialogDescription=mt;exports.DialogFooter=pt;exports.DialogHeader=ct;exports.DialogOverlay=W;exports.DialogPortal=U;exports.DialogTitle=ut;exports.DialogTrigger=nt;exports.DiamondLoader=bt;exports.GlitchText=gt;exports.HUDOverlay=kt;exports.HelperText=je;exports.HoloCard=ht;exports.Input=Ne;exports.Label=we;exports.Popover=tt;exports.PopoverAnchor=at;exports.PopoverContent=ot;exports.PopoverTrigger=rt;exports.Progress=Ge;exports.RadarChart=Rt;exports.RadioGroup=ke;exports.RadioGroupItem=Ce;exports.ScanDivider=Tt;exports.Select=Pe;exports.SelectContent=Ve;exports.SelectGroup=Ae;exports.SelectItem=$e;exports.SelectLabel=Ee;exports.SelectScrollDownButton=H;exports.SelectScrollUpButton=G;exports.SelectSeparator=Oe;exports.SelectTrigger=Ie;exports.SelectValue=_e;exports.Separator=xt;exports.SonnerToaster=or;exports.Switch=De;exports.Tabs=Xe;exports.TabsContent=et;exports.TabsList=Qe;exports.TabsTrigger=Je;exports.TacticalBadge=wt;exports.TacticalPanel=vt;exports.Textarea=Se;exports.Toast=M;exports.ToastAction=ne;exports.ToastClose=z;exports.ToastDescription=q;exports.ToastProvider=se;exports.ToastTitle=F;exports.ToastViewport=L;exports.Toaster=ar;exports.Tooltip=Kt;exports.TooltipContent=oe;exports.TooltipProvider=Xt;exports.TooltipTrigger=Qt;exports.WarningBanner=jt;exports.avatarVariants=Be;exports.badgeVariants=ce;exports.buttonVariants=O;exports.cardVariants=ue;exports.cn=i;exports.dialogContentVariants=lt;exports.inputWrapperVariants=ye;exports.progressFillVariants=qe;exports.progressTrackVariants=Fe;exports.separatorVariants=ft;exports.tabsListVariants=Ke;exports.tabsTriggerVariants=Ze;exports.tacticalBadgeVariants=Nt;exports.textareaVariants=Te;exports.toastAction=ie;exports.useToast=le;
2
2
  //# sourceMappingURL=index.cjs.map