reend-components 0.2.0 → 0.4.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.
@@ -1,43 +1,55 @@
1
- import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
- import * as n from "react";
3
- import * as T from "@radix-ui/react-tooltip";
4
- import { clsx as z } from "clsx";
5
- import { twMerge as H } from "tailwind-merge";
6
- import * as m from "@radix-ui/react-toast";
7
- import { cva as P } from "class-variance-authority";
8
- import { X as W, Crosshair as Y, Terminal as X, AlertTriangle as K } from "lucide-react";
9
- import { Toaster as Q } from "sonner";
10
- import { toast as Ue } from "sonner";
11
- import { AnimatePresence as Z, motion as I, useInView as q } from "framer-motion";
12
- function x(...e) {
13
- return H(z(e));
1
+ import { jsx as e, jsxs as c, Fragment as Le } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import * as z from "@radix-ui/react-tooltip";
4
+ import { clsx as $e } from "clsx";
5
+ import { twMerge as Fe } from "tailwind-merge";
6
+ import * as D from "@radix-ui/react-toast";
7
+ import { cva as T } from "class-variance-authority";
8
+ import { X as Be, Crosshair as je, Terminal as ze, AlertTriangle as Ge } from "lucide-react";
9
+ import { Toaster as Ue } from "sonner";
10
+ import { toast as Va } from "sonner";
11
+ import { Slot as He } from "@radix-ui/react-slot";
12
+ import * as oe from "@radix-ui/react-checkbox";
13
+ import * as Te from "@radix-ui/react-radio-group";
14
+ import * as ne from "@radix-ui/react-switch";
15
+ import * as A from "@radix-ui/react-select";
16
+ import * as re from "@radix-ui/react-avatar";
17
+ import * as se from "@radix-ui/react-progress";
18
+ import * as B from "@radix-ui/react-accordion";
19
+ import * as q from "@radix-ui/react-tabs";
20
+ import * as j from "@radix-ui/react-popover";
21
+ import * as P from "@radix-ui/react-dialog";
22
+ import * as Ye from "@radix-ui/react-separator";
23
+ import { AnimatePresence as We, motion as te, useInView as qe } from "framer-motion";
24
+ function s(...t) {
25
+ return Fe($e(t));
14
26
  }
15
- const Le = T.Provider, Oe = T.Root, Pe = T.Trigger, J = n.forwardRef(({ className: e, sideOffset: r = 4, ...o }, a) => /* @__PURE__ */ t(
16
- T.Content,
27
+ const Ra = z.Provider, Ia = z.Root, Ca = z.Trigger, Ke = i.forwardRef(({ className: t, sideOffset: r = 4, ...a }, o) => /* @__PURE__ */ e(
28
+ z.Content,
17
29
  {
18
- ref: a,
30
+ ref: o,
19
31
  sideOffset: r,
20
- className: x(
32
+ className: s(
21
33
  "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",
22
- e
34
+ t
23
35
  ),
24
- ...o
36
+ ...a
25
37
  }
26
38
  ));
27
- J.displayName = T.Content.displayName;
28
- const ee = m.Provider, _ = n.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
29
- m.Viewport,
39
+ Ke.displayName = z.Content.displayName;
40
+ const Xe = D.Provider, ke = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
41
+ D.Viewport,
30
42
  {
31
- ref: o,
32
- className: x(
43
+ ref: a,
44
+ className: s(
33
45
  "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]",
34
- e
46
+ t
35
47
  ),
36
48
  ...r
37
49
  }
38
50
  ));
39
- _.displayName = m.Viewport.displayName;
40
- const te = P(
51
+ ke.displayName = D.Viewport.displayName;
52
+ const Ze = T(
41
53
  "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",
42
54
  {
43
55
  variants: {
@@ -50,170 +62,170 @@ const te = P(
50
62
  variant: "default"
51
63
  }
52
64
  }
53
- ), M = n.forwardRef(({ className: e, variant: r, ...o }, a) => /* @__PURE__ */ t(
54
- m.Root,
65
+ ), Se = i.forwardRef(({ className: t, variant: r, ...a }, o) => /* @__PURE__ */ e(
66
+ D.Root,
55
67
  {
56
- ref: a,
57
- className: x(te({ variant: r }), e),
58
- ...o
68
+ ref: o,
69
+ className: s(Ze({ variant: r }), t),
70
+ ...a
59
71
  }
60
72
  ));
61
- M.displayName = m.Root.displayName;
62
- const re = n.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
63
- m.Action,
73
+ Se.displayName = D.Root.displayName;
74
+ const Qe = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
75
+ D.Action,
64
76
  {
65
- ref: o,
66
- className: x(
77
+ ref: a,
78
+ className: s(
67
79
  "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",
68
- e
80
+ t
69
81
  ),
70
82
  ...r
71
83
  }
72
84
  ));
73
- re.displayName = m.Action.displayName;
74
- const V = n.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
75
- m.Close,
85
+ Qe.displayName = D.Action.displayName;
86
+ const Re = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
87
+ D.Close,
76
88
  {
77
- ref: o,
78
- className: x(
89
+ ref: a,
90
+ className: s(
79
91
  "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",
80
- e
92
+ t
81
93
  ),
82
94
  "toast-close": "",
83
95
  ...r,
84
- children: /* @__PURE__ */ t(W, { className: "h-4 w-4" })
96
+ children: /* @__PURE__ */ e(Be, { className: "h-4 w-4" })
85
97
  }
86
98
  ));
87
- V.displayName = m.Close.displayName;
88
- const B = n.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
89
- m.Title,
99
+ Re.displayName = D.Close.displayName;
100
+ const Ie = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
101
+ D.Title,
90
102
  {
91
- ref: o,
92
- className: x("text-sm font-semibold", e),
103
+ ref: a,
104
+ className: s("text-sm font-semibold", t),
93
105
  ...r
94
106
  }
95
107
  ));
96
- B.displayName = m.Title.displayName;
97
- const U = n.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
98
- m.Description,
108
+ Ie.displayName = D.Title.displayName;
109
+ const Ce = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
110
+ D.Description,
99
111
  {
100
- ref: o,
101
- className: x("text-sm opacity-90", e),
112
+ ref: a,
113
+ className: s("text-sm opacity-90", t),
102
114
  ...r
103
115
  }
104
116
  ));
105
- U.displayName = m.Description.displayName;
106
- const oe = 1, ae = 5e3;
107
- let $ = 0;
108
- function se() {
109
- return $ = ($ + 1) % Number.MAX_SAFE_INTEGER, $.toString();
117
+ Ce.displayName = D.Description.displayName;
118
+ const Je = 1, et = 5e3;
119
+ let K = 0;
120
+ function tt() {
121
+ return K = (K + 1) % Number.MAX_SAFE_INTEGER, K.toString();
110
122
  }
111
- const D = /* @__PURE__ */ new Map(), O = (e) => {
112
- if (D.has(e))
123
+ const X = /* @__PURE__ */ new Map(), ie = (t) => {
124
+ if (X.has(t))
113
125
  return;
114
126
  const r = setTimeout(() => {
115
- D.delete(e), N({
127
+ X.delete(t), $({
116
128
  type: "REMOVE_TOAST",
117
- toastId: e
129
+ toastId: t
118
130
  });
119
- }, ae);
120
- D.set(e, r);
121
- }, ne = (e, r) => {
131
+ }, et);
132
+ X.set(t, r);
133
+ }, rt = (t, r) => {
122
134
  switch (r.type) {
123
135
  case "ADD_TOAST":
124
136
  return {
125
- ...e,
126
- toasts: [r.toast, ...e.toasts].slice(0, oe)
137
+ ...t,
138
+ toasts: [r.toast, ...t.toasts].slice(0, Je)
127
139
  };
128
140
  case "UPDATE_TOAST":
129
141
  return {
130
- ...e,
131
- toasts: e.toasts.map(
132
- (o) => o.id === r.toast.id ? { ...o, ...r.toast } : o
142
+ ...t,
143
+ toasts: t.toasts.map(
144
+ (a) => a.id === r.toast.id ? { ...a, ...r.toast } : a
133
145
  )
134
146
  };
135
147
  case "DISMISS_TOAST": {
136
- const { toastId: o } = r;
137
- return o ? O(o) : e.toasts.forEach((a) => {
138
- O(a.id);
148
+ const { toastId: a } = r;
149
+ return a ? ie(a) : t.toasts.forEach((o) => {
150
+ ie(o.id);
139
151
  }), {
140
- ...e,
141
- toasts: e.toasts.map(
142
- (a) => a.id === o || o === void 0 ? {
143
- ...a,
152
+ ...t,
153
+ toasts: t.toasts.map(
154
+ (o) => o.id === a || a === void 0 ? {
155
+ ...o,
144
156
  open: !1
145
- } : a
157
+ } : o
146
158
  )
147
159
  };
148
160
  }
149
161
  case "REMOVE_TOAST":
150
162
  return r.toastId === void 0 ? {
151
- ...e,
163
+ ...t,
152
164
  toasts: []
153
165
  } : {
154
- ...e,
155
- toasts: e.toasts.filter((o) => o.id !== r.toastId)
166
+ ...t,
167
+ toasts: t.toasts.filter((a) => a.id !== r.toastId)
156
168
  };
157
169
  }
158
- }, S = [];
159
- let E = { toasts: [] };
160
- function N(e) {
161
- E = ne(E, e), S.forEach((r) => {
162
- r(E);
170
+ }, Y = [];
171
+ let W = { toasts: [] };
172
+ function $(t) {
173
+ W = rt(W, t), Y.forEach((r) => {
174
+ r(W);
163
175
  });
164
176
  }
165
- function ie({ ...e }) {
166
- const r = se(), o = (s) => N({
177
+ function at({ ...t }) {
178
+ const r = tt(), a = (n) => $({
167
179
  type: "UPDATE_TOAST",
168
- toast: { ...s, id: r }
169
- }), a = () => N({ type: "DISMISS_TOAST", toastId: r });
170
- return N({
180
+ toast: { ...n, id: r }
181
+ }), o = () => $({ type: "DISMISS_TOAST", toastId: r });
182
+ return $({
171
183
  type: "ADD_TOAST",
172
184
  toast: {
173
- ...e,
185
+ ...t,
174
186
  id: r,
175
187
  open: !0,
176
- onOpenChange: (s) => {
177
- s || a();
188
+ onOpenChange: (n) => {
189
+ n || o();
178
190
  }
179
191
  }
180
192
  }), {
181
193
  id: r,
182
- dismiss: a,
183
- update: o
194
+ dismiss: o,
195
+ update: a
184
196
  };
185
197
  }
186
- function le() {
187
- const [e, r] = n.useState(E);
188
- return n.useEffect(() => (S.push(r), () => {
189
- const o = S.indexOf(r);
190
- o > -1 && S.splice(o, 1);
191
- }), [e]), {
192
- ...e,
193
- toast: ie,
194
- dismiss: (o) => N({ type: "DISMISS_TOAST", toastId: o })
198
+ function ot() {
199
+ const [t, r] = i.useState(W);
200
+ return i.useEffect(() => (Y.push(r), () => {
201
+ const a = Y.indexOf(r);
202
+ a > -1 && Y.splice(a, 1);
203
+ }), [t]), {
204
+ ...t,
205
+ toast: at,
206
+ dismiss: (a) => $({ type: "DISMISS_TOAST", toastId: a })
195
207
  };
196
208
  }
197
- function _e() {
198
- const { toasts: e } = le();
199
- return /* @__PURE__ */ i(ee, { children: [
200
- e.map(function({ id: r, title: o, description: a, action: s, ...c }) {
201
- return /* @__PURE__ */ i(M, { ...c, children: [
202
- /* @__PURE__ */ i("div", { className: "grid gap-1", children: [
203
- o && /* @__PURE__ */ t(B, { children: o }),
204
- a && /* @__PURE__ */ t(U, { children: a })
209
+ function Aa() {
210
+ const { toasts: t } = ot();
211
+ return /* @__PURE__ */ c(Xe, { children: [
212
+ t.map(function({ id: r, title: a, description: o, action: n, ...l }) {
213
+ return /* @__PURE__ */ c(Se, { ...l, children: [
214
+ /* @__PURE__ */ c("div", { className: "grid gap-1", children: [
215
+ a && /* @__PURE__ */ e(Ie, { children: a }),
216
+ o && /* @__PURE__ */ e(Ce, { children: o })
205
217
  ] }),
206
- s,
207
- /* @__PURE__ */ t(V, {})
218
+ n,
219
+ /* @__PURE__ */ e(Re, {})
208
220
  ] }, r);
209
221
  }),
210
- /* @__PURE__ */ t(_, {})
222
+ /* @__PURE__ */ e(ke, {})
211
223
  ] });
212
224
  }
213
- const Me = ({ theme: e = "dark", ...r }) => /* @__PURE__ */ t(
214
- Q,
225
+ const Da = ({ theme: t = "dark", ...r }) => /* @__PURE__ */ e(
226
+ Ue,
215
227
  {
216
- theme: e,
228
+ theme: t,
217
229
  className: "toaster group",
218
230
  toastOptions: {
219
231
  classNames: {
@@ -225,479 +237,2442 @@ const Me = ({ theme: e = "dark", ...r }) => /* @__PURE__ */ t(
225
237
  },
226
238
  ...r
227
239
  }
228
- ), de = n.forwardRef(
229
- ({ children: e, className: r = "" }, o) => /* @__PURE__ */ i("span", { ref: o, className: `relative inline-block ${r}`, children: [
230
- /* @__PURE__ */ t("span", { className: "relative z-10", children: e }),
231
- /* @__PURE__ */ t(
232
- "span",
233
- {
234
- "aria-hidden": !0,
235
- className: "absolute inset-0 text-ef-cyan opacity-70 animate-glitch",
236
- style: {
237
- clipPath: "inset(20% 0 50% 0)",
238
- transform: "translate(-2px, 0)"
239
- },
240
- children: e
241
- }
242
- ),
243
- /* @__PURE__ */ t(
244
- "span",
245
- {
246
- "aria-hidden": !0,
247
- className: "absolute inset-0 text-ef-red opacity-70 animate-glitch",
248
- style: {
249
- clipPath: "inset(50% 0 20% 0)",
250
- transform: "translate(2px, 0)",
251
- animationDelay: "0.1s"
252
- },
253
- children: e
240
+ ), le = T(
241
+ "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",
242
+ {
243
+ variants: {
244
+ variant: {
245
+ primary: "clip-corner bg-primary text-primary-foreground hover:brightness-110 hover:shadow-glow active:brightness-90",
246
+ secondary: "clip-corner border border-white/25 text-card-foreground bg-transparent hover:border-primary/60 hover:text-primary active:bg-primary/5",
247
+ ghost: "bg-transparent text-muted-foreground hover:text-primary hover:bg-primary/5 active:bg-primary/10",
248
+ danger: "clip-corner bg-destructive text-destructive-foreground hover:brightness-110 active:brightness-90",
249
+ link: "bg-transparent text-primary underline-offset-4 hover:underline h-auto p-0",
250
+ icon: "bg-white/5 border border-white/10 text-muted-foreground hover:border-primary/30 hover:bg-primary/10 hover:text-primary"
251
+ },
252
+ size: {
253
+ xs: "h-7 px-3 text-[11px]",
254
+ sm: "h-8 px-4 text-xs",
255
+ md: "h-11 px-7 text-sm",
256
+ lg: "h-[52px] px-9 text-base",
257
+ xl: "h-[60px] px-12 text-lg",
258
+ icon: "h-10 w-10 p-0"
254
259
  }
255
- )
256
- ] })
257
- );
258
- de.displayName = "GlitchText";
259
- const ce = { sm: 16, md: 28, lg: 44 }, pe = n.forwardRef(({ size: e = "md", label: r, className: o }, a) => {
260
- const s = ce[e];
261
- return /* @__PURE__ */ i(
262
- "div",
260
+ },
261
+ defaultVariants: {
262
+ variant: "primary",
263
+ size: "md"
264
+ }
265
+ }
266
+ ), nt = i.forwardRef(
267
+ ({
268
+ className: t,
269
+ variant: r,
270
+ size: a,
271
+ asChild: o = !1,
272
+ loading: n = !1,
273
+ disabled: l,
274
+ children: p,
275
+ type: d = "button",
276
+ ...m
277
+ }, u) => o ? /* @__PURE__ */ e(
278
+ He,
263
279
  {
264
- ref: a,
265
- className: `flex flex-col items-center gap-3${o ? ` ${o}` : ""}`,
280
+ ref: u,
281
+ className: s(le({ variant: r, size: a }), t),
282
+ "aria-disabled": l || void 0,
283
+ ...m,
284
+ children: p
285
+ }
286
+ ) : /* @__PURE__ */ c(
287
+ "button",
288
+ {
289
+ ref: u,
290
+ type: d,
291
+ className: s(
292
+ le({ variant: r, size: a }),
293
+ n && "pointer-events-none opacity-80",
294
+ t
295
+ ),
296
+ disabled: l || n,
297
+ "aria-busy": n || void 0,
298
+ ...m,
266
299
  children: [
267
- /* @__PURE__ */ t("div", { className: "relative", style: { width: s * 2, height: s * 2 }, children: [0, 1, 2].map((c) => /* @__PURE__ */ t(
268
- "div",
300
+ n && /* @__PURE__ */ e(
301
+ "span",
269
302
  {
270
- className: "absolute inset-0 border-2 border-primary",
271
- style: {
272
- transform: `rotate(45deg) scale(${1 - c * 0.25})`,
273
- animation: `diamondSpin ${1.2 + c * 0.4}s linear infinite${c === 1 ? " reverse" : ""}`,
274
- opacity: 1 - c * 0.25
275
- }
276
- },
277
- c
278
- )) }),
279
- r && /* @__PURE__ */ t("span", { className: "font-mono text-xs text-muted-foreground tracking-[0.15em] uppercase", children: r })
303
+ className: "h-4 w-4 shrink-0 border-2 border-current clip-corner-sm animate-diamond-spin",
304
+ "aria-hidden": "true"
305
+ }
306
+ ),
307
+ p
280
308
  ]
281
309
  }
282
- );
283
- });
284
- pe.displayName = "DiamondLoader";
285
- const me = {
286
- online: "ONLINE",
287
- warning: "CAUTION",
288
- offline: "OFFLINE",
289
- scanning: "SCANNING"
290
- }, fe = {
291
- online: "bg-ef-green",
292
- warning: "bg-ef-yellow",
293
- offline: "bg-ef-red",
294
- scanning: "bg-ef-cyan animate-pulse"
295
- }, ue = n.forwardRef(({ title: e, status: r = "online", children: o, className: a }, s) => /* @__PURE__ */ i(
296
- "div",
297
- {
298
- ref: s,
299
- className: `relative border border-border bg-surface-1 scanline-overlay${a ? ` ${a}` : ""}`,
300
- children: [
301
- /* @__PURE__ */ i("div", { className: "flex items-center justify-between px-4 py-2.5 border-b border-border bg-surface-0", children: [
302
- /* @__PURE__ */ i("div", { className: "flex items-center gap-3", children: [
303
- /* @__PURE__ */ t(Y, { className: "w-3.5 h-3.5 text-primary" }),
304
- /* @__PURE__ */ t("span", { className: "font-display text-[11px] font-bold tracking-[0.15em] uppercase text-foreground", children: e })
305
- ] }),
306
- /* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
307
- /* @__PURE__ */ t(
308
- "div",
309
- {
310
- className: `w-2 h-2 ${fe[r]}`,
311
- style: { clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)" }
312
- }
313
- ),
314
- /* @__PURE__ */ t("span", { className: "font-mono text-[10px] tracking-[0.1em] text-muted-foreground", children: me[r] })
315
- ] })
316
- ] }),
317
- /* @__PURE__ */ t("div", { className: "absolute top-0 left-0 w-6 h-6 border-t-2 border-l-2 border-primary/40 pointer-events-none" }),
318
- /* @__PURE__ */ t("div", { className: "absolute top-0 right-0 w-6 h-6 border-t-2 border-r-2 border-primary/40 pointer-events-none" }),
319
- /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-0 w-6 h-6 border-b-2 border-l-2 border-primary/40 pointer-events-none" }),
320
- /* @__PURE__ */ t("div", { className: "absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary/40 pointer-events-none" }),
321
- /* @__PURE__ */ t("div", { className: "p-5", children: o })
322
- ]
323
- }
324
- ));
325
- ue.displayName = "TacticalPanel";
326
- const ge = n.forwardRef(
327
- ({ title: e, subtitle: r, icon: o, value: a, className: s }, c) => {
328
- const [l, g] = n.useState(!1);
329
- return /* @__PURE__ */ i(
330
- "div",
331
- {
332
- ref: c,
333
- 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${s ? ` ${s}` : ""}`,
334
- onMouseEnter: () => g(!0),
335
- onMouseLeave: () => g(!1),
336
- children: [
337
- /* @__PURE__ */ t(
338
- "div",
339
- {
340
- className: "absolute left-0 right-0 h-px bg-gradient-to-r from-transparent via-primary/60 to-transparent pointer-events-none transition-all",
341
- style: {
342
- top: l ? "100%" : "-10%",
343
- opacity: l ? 1 : 0,
344
- transitionDuration: "2000ms"
345
- }
346
- }
347
- ),
348
- /* @__PURE__ */ t(
349
- "div",
350
- {
351
- className: "absolute inset-0 pointer-events-none transition-opacity duration-500",
352
- style: {
353
- background: "linear-gradient(135deg, transparent 0%, hsl(var(--primary) / 0.03) 40%, transparent 60%)",
354
- opacity: l ? 1 : 0
355
- }
356
- }
357
- ),
358
- /* @__PURE__ */ i("div", { className: "relative z-10", children: [
359
- /* @__PURE__ */ t(o, { className: "w-5 h-5 text-primary mb-4 group-hover:drop-shadow-[0_0_8px_hsl(var(--primary)/0.5)] transition-all" }),
360
- a && /* @__PURE__ */ t("p", { className: "font-display text-3xl font-bold text-primary mb-1", children: a }),
361
- /* @__PURE__ */ t("h4", { className: "font-display text-sm font-bold tracking-[0.05em] uppercase text-foreground mb-1", children: e }),
362
- /* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground", children: r })
363
- ] }),
364
- /* @__PURE__ */ t("div", { className: "absolute bottom-3 right-3 text-primary/20 group-hover:text-primary/60 transition-colors text-xs", children: "◆" })
365
- ]
366
- }
367
- );
368
- }
369
- );
370
- ge.displayName = "HoloCard";
371
- const be = [
372
- "[SYS] Initializing ENDFIELD protocol...",
373
- "[NET] Connection established — latency: 12ms",
374
- "[SEC] Authentication verified ◆ Level: ALPHA",
375
- "[DAT] Loading design tokens: 94 variables mapped",
376
- "[GPU] Render pipeline: Optimized (60fps locked)",
377
- "[SYS] Component registry: 70 modules online",
378
- "[NET] Sync complete — all nodes operational",
379
- "[DAT] Color system: HSL-based, 9 neutrals, 9 accents",
380
- "[SEC] Encryption: AES-256 ◆ Status: ACTIVE",
381
- "[SYS] ENDFIELD DESIGN SYSTEM v2.0 ◆ READY"
382
- ], xe = n.forwardRef(
383
- ({ messages: e = be, className: r }, o) => {
384
- const [a, s] = n.useState([]), c = n.useRef(null);
385
- return n.useEffect(() => {
386
- let l = 0;
387
- const g = setInterval(() => {
388
- s((b) => {
389
- const u = [...b, e[l % e.length]];
390
- return u.length > 8 ? u.slice(-8) : u;
391
- }), l++;
392
- }, 1200);
393
- return () => clearInterval(g);
394
- }, [e]), n.useEffect(() => {
395
- c.current && (c.current.scrollTop = c.current.scrollHeight);
396
- }, [a]), /* @__PURE__ */ i(
397
- "div",
398
- {
399
- ref: o,
400
- className: `border border-border bg-background clip-corner overflow-hidden${r ? ` ${r}` : ""}`,
401
- children: [
402
- /* @__PURE__ */ i("div", { className: "flex items-center gap-2 px-4 py-2 border-b border-border bg-surface-0", children: [
403
- /* @__PURE__ */ t(X, { className: "w-3.5 h-3.5 text-primary" }),
404
- /* @__PURE__ */ t("span", { className: "font-mono text-[10px] tracking-[0.1em] text-muted-foreground uppercase", children: "LIVE FEED" }),
405
- /* @__PURE__ */ i("div", { className: "ml-auto flex items-center gap-1.5", children: [
406
- /* @__PURE__ */ t(
407
- "div",
408
- {
409
- className: "w-1.5 h-1.5 bg-ef-green animate-pulse",
410
- style: { clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)" }
411
- }
412
- ),
413
- /* @__PURE__ */ t("span", { className: "font-mono text-[10px] text-ef-green", children: "ACTIVE" })
414
- ] })
415
- ] }),
416
- /* @__PURE__ */ i(
417
- "div",
418
- {
419
- ref: c,
420
- className: "p-4 h-48 overflow-y-auto font-mono text-xs space-y-1",
421
- children: [
422
- /* @__PURE__ */ t(Z, { children: a.map((l, g) => /* @__PURE__ */ t(
423
- I.div,
424
- {
425
- initial: { opacity: 0, x: -10 },
426
- animate: { opacity: 1, x: 0 },
427
- className: l.includes("[SEC]") ? "text-ef-green" : l.includes("[NET]") ? "text-ef-blue" : l.includes("[DAT]") ? "text-ef-cyan" : l.includes("[GPU]") ? "text-ef-purple" : "text-muted-foreground",
428
- children: l
429
- },
430
- `${l}-${g}`
431
- )) }),
432
- /* @__PURE__ */ t("span", { className: "inline-block w-2 h-4 bg-primary animate-cursor-blink" })
433
- ]
434
- }
435
- )
436
- ]
437
- }
438
- );
439
- }
310
+ )
440
311
  );
441
- xe.displayName = "DataStream";
442
- const he = P(
443
- "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",
312
+ nt.displayName = "Button";
313
+ const st = T(
314
+ "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",
444
315
  {
445
316
  variants: {
446
317
  variant: {
447
- default: "border-primary/40 text-primary bg-primary/10",
318
+ default: "border-white/15 text-muted-foreground bg-white/5",
319
+ primary: "border-primary/40 text-primary bg-primary/10",
320
+ info: "border-ef-blue/40 text-ef-blue bg-ef-blue/10",
448
321
  success: "border-ef-green/40 text-ef-green bg-ef-green/10",
449
- warning: "border-ef-yellow/40 text-ef-yellow bg-ef-yellow/10",
450
- danger: "border-ef-red/40 text-ef-red bg-ef-red/10",
451
- info: "border-ef-cyan/40 text-ef-cyan bg-ef-cyan/10"
322
+ warning: "border-ef-orange/40 text-ef-orange bg-ef-orange/10",
323
+ danger: "border-destructive/40 text-destructive bg-destructive/10",
324
+ purple: "border-ef-purple/40 text-ef-purple bg-ef-purple/10"
452
325
  }
453
326
  },
454
327
  defaultVariants: {
455
328
  variant: "default"
456
329
  }
457
330
  }
458
- ), ve = n.forwardRef(({ variant: e, className: r, children: o, ...a }, s) => /* @__PURE__ */ i(
459
- "span",
460
- {
461
- ref: s,
462
- className: x(he({ variant: e }), r),
463
- ...a,
464
- children: [
465
- /* @__PURE__ */ t("span", { style: { fontSize: "6px" }, children: "◆" }),
466
- o
467
- ]
468
- }
469
- ));
470
- ve.displayName = "TacticalBadge";
471
- const ye = {
472
- caution: {
473
- border: "border-ef-yellow/30",
474
- bg: "bg-ef-yellow/5",
475
- icon: "text-ef-yellow",
476
- label: "CAUTION"
477
- },
478
- alert: {
479
- border: "border-ef-orange/30",
480
- bg: "bg-ef-orange/5",
481
- icon: "text-ef-orange",
482
- label: "ALERT"
483
- },
484
- critical: {
485
- border: "border-ef-red/30",
486
- bg: "bg-ef-red/5",
487
- icon: "text-ef-red",
488
- label: "CRITICAL"
489
- }
490
- }, Ne = n.forwardRef(({ level: e = "caution", children: r, className: o }, a) => {
491
- const s = ye[e];
492
- return /* @__PURE__ */ i(
493
- "div",
331
+ ), it = i.forwardRef(
332
+ ({ className: t, variant: r, removable: a, onRemove: o, children: n, ...l }, p) => /* @__PURE__ */ c(
333
+ "span",
494
334
  {
495
- ref: a,
496
- className: `clip-corner border ${s.border} ${s.bg} p-4 flex items-start gap-3${o ? ` ${o}` : ""}`,
335
+ ref: p,
336
+ className: s(st({ variant: r }), a && "pr-1", t),
337
+ ...l,
497
338
  children: [
498
- /* @__PURE__ */ t(K, { className: `w-5 h-5 ${s.icon} shrink-0 mt-0.5` }),
499
- /* @__PURE__ */ i("div", { children: [
500
- /* @__PURE__ */ t(
501
- "span",
502
- {
503
- className: `font-display text-[11px] font-bold tracking-[0.15em] ${s.icon}`,
504
- children: s.label
505
- }
506
- ),
507
- /* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground mt-1", children: r })
508
- ] })
339
+ n,
340
+ a && /* @__PURE__ */ e(
341
+ "button",
342
+ {
343
+ type: "button",
344
+ onClick: (d) => {
345
+ d.stopPropagation(), o == null || o();
346
+ },
347
+ 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",
348
+ "aria-label": "Remove",
349
+ tabIndex: 0,
350
+ children: "×"
351
+ }
352
+ )
509
353
  ]
510
354
  }
511
- );
512
- });
513
- Ne.displayName = "WarningBanner";
514
- const Te = n.forwardRef(
515
- ({ label: e, className: r }, o) => /* @__PURE__ */ i(
355
+ )
356
+ );
357
+ it.displayName = "Badge";
358
+ const lt = "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", dt = T(
359
+ [
360
+ "relative bg-surface-1 border border-border transition-all duration-300",
361
+ lt
362
+ ].join(" "),
363
+ {
364
+ variants: {
365
+ hoverable: {
366
+ true: [
367
+ "cursor-pointer",
368
+ "hover:-translate-y-1",
369
+ "hover:shadow-[0_16px_48px_rgba(0,0,0,0.5)]",
370
+ "hover:border-primary/20",
371
+ "hover:before:border-primary/60",
372
+ "hover:after:border-primary/60"
373
+ ].join(" "),
374
+ false: ""
375
+ },
376
+ selected: {
377
+ true: "border-2 border-primary/40 bg-primary/[0.06]",
378
+ false: ""
379
+ }
380
+ },
381
+ defaultVariants: {
382
+ hoverable: !1,
383
+ selected: !1
384
+ }
385
+ }
386
+ ), ct = i.forwardRef(
387
+ ({ className: t, hoverable: r, selected: a, ...o }, n) => /* @__PURE__ */ e(
516
388
  "div",
517
389
  {
518
- ref: o,
519
- className: `relative flex items-center gap-4 py-2${r ? ` ${r}` : ""}`,
520
- children: [
521
- /* @__PURE__ */ t("div", { className: "flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent" }),
522
- e && /* @__PURE__ */ i("span", { className: "font-display text-[10px] font-bold tracking-[0.2em] uppercase text-primary/60 flex items-center gap-2", children: [
523
- /* @__PURE__ */ t("span", { style: { fontSize: "6px" }, children: "◆" }),
524
- " ",
525
- e,
526
- " ",
527
- /* @__PURE__ */ t("span", { style: { fontSize: "6px" }, children: "◆" })
528
- ] }),
529
- /* @__PURE__ */ t("div", { className: "flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent" })
530
- ]
390
+ ref: n,
391
+ className: s(dt({ hoverable: r, selected: a }), t),
392
+ ...o
531
393
  }
532
394
  )
533
395
  );
534
- Te.displayName = "ScanDivider";
535
- const we = n.forwardRef(({ label: e, value: r, unit: o, className: a }, s) => /* @__PURE__ */ i(
396
+ ct.displayName = "Card";
397
+ const pt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
536
398
  "div",
537
399
  {
538
- ref: s,
539
- className: `inline-flex items-center border border-border bg-surface-0 overflow-hidden${a ? ` ${a}` : ""}`,
540
- children: [
541
- /* @__PURE__ */ t("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: e }),
542
- /* @__PURE__ */ t("span", { className: "font-mono text-xs text-primary px-2.5 py-1.5 font-bold", children: r }),
543
- o && /* @__PURE__ */ t("span", { className: "font-mono text-[10px] text-muted-foreground pr-2.5", children: o })
544
- ]
400
+ ref: a,
401
+ className: s("flex items-start justify-between gap-4 p-5", t),
402
+ ...r
403
+ }
404
+ ));
405
+ pt.displayName = "CardHeader";
406
+ const mt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
407
+ "p",
408
+ {
409
+ ref: a,
410
+ className: s(
411
+ "font-mono text-[10px] tracking-[0.15em] uppercase text-primary mb-2",
412
+ t
413
+ ),
414
+ ...r
415
+ }
416
+ ));
417
+ mt.displayName = "CardMeta";
418
+ const ft = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
419
+ "h3",
420
+ {
421
+ ref: a,
422
+ className: s(
423
+ "font-display text-sm font-bold tracking-[0.02em] uppercase text-foreground",
424
+ t
425
+ ),
426
+ ...r
427
+ }
428
+ ));
429
+ ft.displayName = "CardTitle";
430
+ const ut = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
431
+ "p",
432
+ {
433
+ ref: a,
434
+ className: s("text-sm text-muted-foreground leading-relaxed", t),
435
+ ...r
436
+ }
437
+ ));
438
+ ut.displayName = "CardDescription";
439
+ const xt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e("div", { ref: a, className: s("p-5", t), ...r }));
440
+ xt.displayName = "CardBody";
441
+ const gt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
442
+ "div",
443
+ {
444
+ ref: a,
445
+ className: s(
446
+ "flex items-center gap-3 px-5 py-4 border-t border-border",
447
+ t
448
+ ),
449
+ ...r
545
450
  }
546
451
  ));
547
- we.displayName = "CoordinateTag";
548
- const Se = n.forwardRef(
549
- ({ data: e, size: r = 260, color: o = "primary", className: a }, s) => {
550
- const c = n.useRef(null), l = q(c, { once: !0 }), g = n.useCallback(
551
- (d) => {
552
- c.current = d, typeof s == "function" ? s(d) : s && (s.current = d);
452
+ gt.displayName = "CardFooter";
453
+ const ht = T(
454
+ "relative flex items-center border transition-all duration-150 bg-surface-1",
455
+ {
456
+ variants: {
457
+ state: {
458
+ default: [
459
+ "border-white/[0.12]",
460
+ "hover:border-white/20",
461
+ "focus-within:border-primary",
462
+ "focus-within:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]"
463
+ ].join(" "),
464
+ error: [
465
+ "border-ef-red",
466
+ "focus-within:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]"
467
+ ].join(" "),
468
+ success: "border-ef-green"
553
469
  },
554
- [s]
555
- ), b = r / 2, u = r / 2, f = r * 0.38, v = 4, j = e.length, R = Math.PI * 2 / j, y = o === "cyan" ? "--ef-cyan" : "--primary", w = (d, p) => ({
556
- x: b + p * Math.sin(d * R),
557
- y: u - p * Math.cos(d * R)
558
- }), G = Array.from({ length: v }, (d, p) => {
559
- const h = f * ((p + 1) / v);
560
- return e.map((A, F) => w(F, h)).map((A) => `${A.x},${A.y}`).join(" ");
561
- }), k = e.map((d, p) => w(p, d.value / 100 * f)), C = k.map((d) => `${d.x},${d.y}`).join(" "), L = e.map(() => `${b},${u}`).join(" ");
562
- return /* @__PURE__ */ t(
563
- "div",
564
- {
565
- ref: g,
566
- className: `flex flex-col items-center w-full${a ? ` ${a}` : ""}`,
567
- children: /* @__PURE__ */ i(
568
- "svg",
569
- {
570
- viewBox: `0 0 ${r} ${r}`,
571
- className: "w-full max-w-[260px] h-auto overflow-visible",
572
- children: [
573
- G.map((d, p) => /* @__PURE__ */ t(
574
- "polygon",
575
- {
576
- points: d,
577
- fill: "none",
578
- stroke: "hsl(var(--border))",
579
- strokeWidth: 1,
580
- opacity: 0.5
581
- },
582
- p
583
- )),
584
- e.map((d, p) => {
585
- const h = w(p, f);
586
- return /* @__PURE__ */ t(
587
- "line",
588
- {
589
- x1: b,
590
- y1: u,
591
- x2: h.x,
592
- y2: h.y,
593
- stroke: "hsl(var(--border))",
594
- strokeWidth: 1,
595
- opacity: 0.3
596
- },
597
- p
598
- );
599
- }),
600
- /* @__PURE__ */ t(
601
- I.polygon,
602
- {
603
- points: l ? C : L,
604
- fill: `hsl(var(${y}) / 0.15)`,
605
- stroke: `hsl(var(${y}))`,
606
- strokeWidth: 2,
607
- initial: !1,
608
- animate: { points: l ? C : L },
609
- transition: { duration: 0.8, ease: [0.25, 0.8, 0.25, 1] },
610
- style: {
611
- filter: `drop-shadow(0 0 8px hsl(var(${y}) / 0.3))`
612
- }
613
- }
614
- ),
615
- k.map((d, p) => /* @__PURE__ */ t(
616
- I.circle,
617
- {
618
- cx: b,
619
- cy: u,
620
- r: 4,
621
- fill: `hsl(var(${y}))`,
622
- stroke: "hsl(var(--background))",
623
- strokeWidth: 2,
624
- initial: !1,
625
- animate: { cx: l ? d.x : b, cy: l ? d.y : u },
626
- transition: { duration: 0.8, delay: p * 0.05 },
627
- style: {
628
- filter: `drop-shadow(0 0 4px hsl(var(${y}) / 0.5))`
629
- }
630
- },
631
- p
632
- )),
633
- e.map((d, p) => {
634
- const h = w(p, f + 20);
635
- return /* @__PURE__ */ t(
636
- "text",
637
- {
638
- x: h.x,
639
- y: h.y,
640
- textAnchor: "middle",
641
- dominantBaseline: "middle",
642
- className: "font-display text-[9px] font-bold tracking-[0.1em] uppercase",
643
- fill: "hsl(var(--muted-foreground))",
644
- children: d.label
645
- },
646
- p
647
- );
648
- })
649
- ]
650
- }
651
- )
470
+ size: {
471
+ sm: "h-8",
472
+ md: "h-11",
473
+ lg: "h-[52px]"
652
474
  }
653
- );
475
+ },
476
+ defaultVariants: {
477
+ state: "default",
478
+ size: "md"
479
+ }
654
480
  }
655
- );
656
- Se.displayName = "RadarChart";
657
- const Ee = n.forwardRef(
481
+ ), bt = i.forwardRef(
658
482
  ({
659
- children: e,
660
- systemLabel: r = "SYS::ENDFIELD v2.0",
661
- lat: o = "LAT 37.7749°N",
662
- lon: a = "LON 122.4194°W",
663
- showCoords: s = !0,
664
- showCrosshair: c = !0,
665
- className: l
666
- }, g) => {
667
- const [b, u] = n.useState("");
668
- return n.useEffect(() => {
669
- const f = () => u((/* @__PURE__ */ new Date()).toLocaleTimeString("en-GB"));
670
- f();
671
- const v = setInterval(f, 1e3);
672
- return () => clearInterval(v);
673
- }, []), /* @__PURE__ */ i(
483
+ className: t,
484
+ state: r = "default",
485
+ size: a = "md",
486
+ leftElement: o,
487
+ rightElement: n,
488
+ disabled: l,
489
+ ...p
490
+ }, d) => {
491
+ const m = o || a === "sm" ? "pl-2" : "pl-3", u = n || a === "sm" ? "pr-2" : "pr-3";
492
+ return /* @__PURE__ */ c(
674
493
  "div",
675
494
  {
676
- ref: g,
677
- className: `relative border border-border bg-surface-0 aspect-video flex items-center justify-center overflow-hidden${l ? ` ${l}` : ""}`,
495
+ className: s(
496
+ ht({ state: r, size: a }),
497
+ l && "opacity-40 cursor-not-allowed pointer-events-none bg-background",
498
+ t
499
+ ),
678
500
  children: [
679
- /* @__PURE__ */ t("div", { className: "absolute inset-0 scanline-overlay" }),
680
- [
681
- "top-3 left-3 border-t-2 border-l-2",
682
- "top-3 right-3 border-t-2 border-r-2",
683
- "bottom-3 left-3 border-b-2 border-l-2",
684
- "bottom-3 right-3 border-b-2 border-r-2"
685
- ].map((f, v) => /* @__PURE__ */ t(
686
- "div",
501
+ o && /* @__PURE__ */ e("span", { className: "pl-3 flex-shrink-0 text-muted-foreground flex items-center", children: o }),
502
+ /* @__PURE__ */ e(
503
+ "input",
687
504
  {
688
- className: `absolute w-8 h-8 ${f} border-primary/40 pointer-events-none`
689
- },
690
- v
691
- )),
692
- c && /* @__PURE__ */ i("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none", children: [
693
- /* @__PURE__ */ t(
505
+ ref: d,
506
+ disabled: l,
507
+ className: s(
508
+ "h-full flex-1 min-w-0 bg-transparent text-foreground text-sm font-mono",
509
+ "placeholder:text-muted-foreground focus:outline-none",
510
+ m,
511
+ u
512
+ ),
513
+ ...p
514
+ }
515
+ ),
516
+ n && /* @__PURE__ */ e("span", { className: "pr-3 flex-shrink-0 text-muted-foreground flex items-center", children: n })
517
+ ]
518
+ }
519
+ );
520
+ }
521
+ );
522
+ bt.displayName = "Input";
523
+ const vt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
524
+ "label",
525
+ {
526
+ ref: a,
527
+ className: s(
528
+ "font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",
529
+ t
530
+ ),
531
+ ...r
532
+ }
533
+ ));
534
+ vt.displayName = "Label";
535
+ const yt = i.forwardRef(
536
+ ({ className: t, state: r = "default", ...a }, o) => /* @__PURE__ */ e(
537
+ "p",
538
+ {
539
+ ref: o,
540
+ className: s(
541
+ "text-[12px] leading-tight",
542
+ r === "error" && "text-destructive",
543
+ r === "success" && "text-ef-green",
544
+ r === "default" && "text-muted-foreground",
545
+ t
546
+ ),
547
+ ...a
548
+ }
549
+ )
550
+ );
551
+ yt.displayName = "HelperText";
552
+ const Nt = T(
553
+ [
554
+ "w-full resize-y border bg-surface-1 text-foreground",
555
+ "placeholder:text-muted-foreground font-mono text-sm",
556
+ "transition-all duration-150 focus:outline-none",
557
+ "min-h-[120px] px-3 py-2.5",
558
+ "disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-background disabled:pointer-events-none"
559
+ ].join(" "),
560
+ {
561
+ variants: {
562
+ state: {
563
+ default: [
564
+ "border-white/[0.12]",
565
+ "hover:border-white/20",
566
+ "focus:border-primary",
567
+ "focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]"
568
+ ].join(" "),
569
+ error: [
570
+ "border-ef-red",
571
+ "focus:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]"
572
+ ].join(" "),
573
+ success: "border-ef-green"
574
+ }
575
+ },
576
+ defaultVariants: {
577
+ state: "default"
578
+ }
579
+ }
580
+ ), wt = i.forwardRef(
581
+ ({ className: t, state: r = "default", showCount: a, maxLength: o, onChange: n, ...l }, p) => {
582
+ const [d, m] = i.useState(() => {
583
+ const f = l.value ?? l.defaultValue ?? "";
584
+ return String(f).length;
585
+ });
586
+ i.useEffect(() => {
587
+ l.value !== void 0 && m(String(l.value).length);
588
+ }, [l.value]);
589
+ const u = () => o !== void 0 && d > o ? "text-destructive" : o !== void 0 && d / o >= 0.8 ? "text-ef-orange" : "text-muted-foreground";
590
+ return /* @__PURE__ */ c("div", { className: "relative", children: [
591
+ /* @__PURE__ */ e(
592
+ "textarea",
593
+ {
594
+ ref: p,
595
+ maxLength: o,
596
+ onChange: (f) => {
597
+ m(f.target.value.length), n == null || n(f);
598
+ },
599
+ className: s(
600
+ Nt({ state: r }),
601
+ a && "pb-7",
602
+ t
603
+ ),
604
+ ...l
605
+ }
606
+ ),
607
+ a && /* @__PURE__ */ e(
608
+ "span",
609
+ {
610
+ className: s(
611
+ "absolute bottom-2 right-3 font-mono text-[11px] pointer-events-none select-none",
612
+ u()
613
+ ),
614
+ children: o !== void 0 ? `${d}/${o}` : d
615
+ }
616
+ )
617
+ ] });
618
+ }
619
+ );
620
+ wt.displayName = "Textarea";
621
+ const Tt = i.forwardRef(({ className: t, label: r, helperText: a, id: o, ...n }, l) => {
622
+ const p = i.useId(), d = o ?? p;
623
+ return /* @__PURE__ */ c("div", { className: "flex flex-col gap-1.5", children: [
624
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
625
+ /* @__PURE__ */ e(
626
+ oe.Root,
627
+ {
628
+ ref: l,
629
+ id: d,
630
+ className: s(
631
+ "group peer h-[18px] w-[18px] shrink-0 border-2 border-white/25 bg-transparent",
632
+ "cursor-pointer transition-all duration-150",
633
+ "hover:border-primary/60",
634
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background",
635
+ "disabled:cursor-not-allowed disabled:opacity-40",
636
+ "data-[state=checked]:bg-primary data-[state=checked]:border-primary",
637
+ "data-[state=indeterminate]:bg-primary/50 data-[state=indeterminate]:border-primary",
638
+ t
639
+ ),
640
+ ...n,
641
+ children: /* @__PURE__ */ c(oe.Indicator, { className: "flex items-center justify-center", children: [
642
+ /* @__PURE__ */ e("span", { className: "hidden group-data-[state=checked]:inline leading-none text-primary-foreground text-[10px] font-bold select-none", children: "◆" }),
643
+ /* @__PURE__ */ e("span", { className: "hidden group-data-[state=indeterminate]:inline leading-none text-primary-foreground text-sm font-bold select-none", children: "−" })
644
+ ] })
645
+ }
646
+ ),
647
+ r && /* @__PURE__ */ e(
648
+ "label",
649
+ {
650
+ htmlFor: d,
651
+ className: "text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none",
652
+ children: r
653
+ }
654
+ )
655
+ ] }),
656
+ a && /* @__PURE__ */ e("p", { className: "text-[12px] text-muted-foreground pl-[30px]", children: a })
657
+ ] });
658
+ });
659
+ Tt.displayName = "Checkbox";
660
+ const kt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
661
+ Te.Root,
662
+ {
663
+ ref: a,
664
+ className: s("flex flex-col gap-3", t),
665
+ ...r
666
+ }
667
+ ));
668
+ kt.displayName = "RadioGroup";
669
+ const St = i.forwardRef(({ className: t, label: r, helperText: a, id: o, ...n }, l) => {
670
+ const p = i.useId(), d = o ?? p;
671
+ return /* @__PURE__ */ c("div", { className: "flex flex-col gap-1", children: [
672
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
673
+ /* @__PURE__ */ c(
674
+ Te.Item,
675
+ {
676
+ ref: l,
677
+ id: d,
678
+ className: s(
679
+ "group peer cursor-pointer shrink-0 flex items-center justify-center",
680
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background",
681
+ "disabled:cursor-not-allowed disabled:opacity-40",
682
+ t
683
+ ),
684
+ ...n,
685
+ children: [
686
+ /* @__PURE__ */ e("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: "◇" }),
687
+ /* @__PURE__ */ e("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: "◆" })
688
+ ]
689
+ }
690
+ ),
691
+ r && /* @__PURE__ */ e(
692
+ "label",
693
+ {
694
+ htmlFor: d,
695
+ className: "text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none",
696
+ children: r
697
+ }
698
+ )
699
+ ] }),
700
+ a && /* @__PURE__ */ e("p", { className: "text-[12px] text-muted-foreground pl-[30px]", children: a })
701
+ ] });
702
+ });
703
+ St.displayName = "RadioGroupItem";
704
+ const Rt = i.forwardRef(({ className: t, label: r, offLabel: a, onLabel: o, id: n, checked: l, ...p }, d) => {
705
+ const m = i.useId(), u = n ?? m;
706
+ return /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
707
+ (a || o) && /* @__PURE__ */ e("span", { className: "text-[11px] font-mono uppercase tracking-widest text-muted-foreground select-none min-w-[32px] text-right", children: l ? o : a }),
708
+ /* @__PURE__ */ e(
709
+ ne.Root,
710
+ {
711
+ ref: d,
712
+ id: u,
713
+ checked: l,
714
+ className: s(
715
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-none",
716
+ "border border-white/15 bg-white/10",
717
+ "transition-all duration-200",
718
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background",
719
+ "disabled:cursor-not-allowed disabled:opacity-40",
720
+ "data-[state=checked]:bg-primary data-[state=checked]:border-primary",
721
+ t
722
+ ),
723
+ ...p,
724
+ children: /* @__PURE__ */ e(
725
+ ne.Thumb,
726
+ {
727
+ className: s(
728
+ "pointer-events-none block h-5 w-5 bg-white shadow-sm ring-0",
729
+ "transition-transform duration-200",
730
+ "data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5"
731
+ )
732
+ }
733
+ )
734
+ }
735
+ ),
736
+ r && /* @__PURE__ */ e(
737
+ "label",
738
+ {
739
+ htmlFor: u,
740
+ className: "text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none",
741
+ children: r
742
+ }
743
+ )
744
+ ] });
745
+ });
746
+ Rt.displayName = "Switch";
747
+ const It = A.Root;
748
+ It.displayName = "Select";
749
+ const Ct = A.Group;
750
+ Ct.displayName = "SelectGroup";
751
+ const At = A.Value;
752
+ At.displayName = "SelectValue";
753
+ const Dt = i.forwardRef(({ className: t, children: r, ...a }, o) => /* @__PURE__ */ c(
754
+ A.Trigger,
755
+ {
756
+ ref: o,
757
+ className: s(
758
+ "relative flex h-11 w-full items-center justify-between",
759
+ "border border-white/[0.12] bg-surface-1 px-3",
760
+ "font-mono text-sm text-foreground",
761
+ "transition-all duration-150",
762
+ "hover:border-white/20",
763
+ "focus:outline-none focus:border-primary focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]",
764
+ "disabled:cursor-not-allowed disabled:opacity-40 disabled:pointer-events-none",
765
+ "data-[placeholder]:text-muted-foreground",
766
+ "[&>span]:line-clamp-1",
767
+ t
768
+ ),
769
+ ...a,
770
+ children: [
771
+ r,
772
+ /* @__PURE__ */ e(A.Icon, { asChild: !0, children: /* @__PURE__ */ e("span", { className: "shrink-0 text-muted-foreground text-xs ml-2 select-none", children: "▾" }) })
773
+ ]
774
+ }
775
+ ));
776
+ Dt.displayName = "SelectTrigger";
777
+ const Ae = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
778
+ A.ScrollUpButton,
779
+ {
780
+ ref: a,
781
+ className: s(
782
+ "flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs",
783
+ t
784
+ ),
785
+ ...r,
786
+ children: "▴"
787
+ }
788
+ ));
789
+ Ae.displayName = "SelectScrollUpButton";
790
+ const De = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
791
+ A.ScrollDownButton,
792
+ {
793
+ ref: a,
794
+ className: s(
795
+ "flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs",
796
+ t
797
+ ),
798
+ ...r,
799
+ children: "▾"
800
+ }
801
+ ));
802
+ De.displayName = "SelectScrollDownButton";
803
+ const Et = i.forwardRef(({ className: t, children: r, position: a = "popper", ...o }, n) => /* @__PURE__ */ e(A.Portal, { children: /* @__PURE__ */ c(
804
+ A.Content,
805
+ {
806
+ ref: n,
807
+ className: s(
808
+ "relative z-[var(--z-overlay,50)] min-w-[8rem] overflow-hidden",
809
+ "bg-surface-2 border border-white/10 shadow-lg",
810
+ "data-[state=open]:animate-fade-in-up",
811
+ "data-[state=closed]:animate-fade-in-up",
812
+ a === "popper" && "data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",
813
+ t
814
+ ),
815
+ position: a,
816
+ ...o,
817
+ children: [
818
+ /* @__PURE__ */ e(Ae, {}),
819
+ /* @__PURE__ */ e(
820
+ A.Viewport,
821
+ {
822
+ className: s(
823
+ "p-1",
824
+ a === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
825
+ ),
826
+ children: r
827
+ }
828
+ ),
829
+ /* @__PURE__ */ e(De, {})
830
+ ]
831
+ }
832
+ ) }));
833
+ Et.displayName = "SelectContent";
834
+ const _t = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
835
+ A.Label,
836
+ {
837
+ ref: a,
838
+ className: s(
839
+ "font-mono text-[10px] uppercase tracking-widest text-muted-foreground/60 px-4 py-1.5",
840
+ t
841
+ ),
842
+ ...r
843
+ }
844
+ ));
845
+ _t.displayName = "SelectLabel";
846
+ const Vt = i.forwardRef(({ className: t, children: r, danger: a, ...o }, n) => /* @__PURE__ */ e(
847
+ A.Item,
848
+ {
849
+ ref: n,
850
+ className: s(
851
+ "relative flex w-full cursor-pointer select-none items-center px-4 py-2 text-sm text-muted-foreground",
852
+ "outline-none transition-colors duration-100",
853
+ "focus:bg-primary/6 focus:text-primary",
854
+ "data-[state=checked]:text-primary data-[state=checked]:font-medium",
855
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
856
+ a ? "hover:bg-destructive/6 hover:text-destructive focus:bg-destructive/6 focus:text-destructive" : "hover:bg-primary/6 hover:text-primary",
857
+ t
858
+ ),
859
+ ...o,
860
+ children: /* @__PURE__ */ e(A.ItemText, { children: r })
861
+ }
862
+ ));
863
+ Vt.displayName = "SelectItem";
864
+ const Ot = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
865
+ A.Separator,
866
+ {
867
+ ref: a,
868
+ className: s("my-1 h-px bg-white/8", t),
869
+ ...r
870
+ }
871
+ ));
872
+ Ot.displayName = "SelectSeparator";
873
+ const Mt = T(
874
+ "relative inline-flex shrink-0 overflow-hidden clip-corner-sm",
875
+ {
876
+ variants: {
877
+ size: {
878
+ xs: "h-6 w-6",
879
+ sm: "h-8 w-8",
880
+ md: "h-10 w-10",
881
+ lg: "h-14 w-14",
882
+ xl: "h-20 w-20",
883
+ "2xl": "h-[120px] w-[120px]"
884
+ }
885
+ },
886
+ defaultVariants: { size: "md" }
887
+ }
888
+ ), Pt = {
889
+ online: "text-ef-green",
890
+ offline: "text-muted-foreground/50",
891
+ busy: "text-destructive",
892
+ away: "text-ef-orange"
893
+ }, Lt = i.forwardRef(({ className: t, size: r, status: a, ...o }, n) => /* @__PURE__ */ c("div", { className: "relative inline-flex shrink-0", children: [
894
+ /* @__PURE__ */ e(
895
+ re.Root,
896
+ {
897
+ ref: n,
898
+ className: s(Mt({ size: r }), t),
899
+ ...o
900
+ }
901
+ ),
902
+ a && /* @__PURE__ */ e(
903
+ "span",
904
+ {
905
+ className: s(
906
+ "absolute -bottom-0.5 -right-0.5 text-[10px] leading-none select-none",
907
+ Pt[a]
908
+ ),
909
+ "aria-label": a,
910
+ children: "◆"
911
+ }
912
+ )
913
+ ] }));
914
+ Lt.displayName = "Avatar";
915
+ const $t = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
916
+ re.Image,
917
+ {
918
+ ref: a,
919
+ className: s("aspect-square h-full w-full object-cover", t),
920
+ ...r
921
+ }
922
+ ));
923
+ $t.displayName = "AvatarImage";
924
+ const Ft = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
925
+ re.Fallback,
926
+ {
927
+ ref: a,
928
+ className: s(
929
+ "flex h-full w-full items-center justify-center",
930
+ "bg-surface-2 font-display text-muted-foreground uppercase text-center",
931
+ "text-[clamp(8px,35%,28px)]",
932
+ t
933
+ ),
934
+ ...r
935
+ }
936
+ ));
937
+ Ft.displayName = "AvatarFallback";
938
+ const Bt = T(
939
+ "relative w-full overflow-hidden bg-white/8",
940
+ {
941
+ variants: {
942
+ size: {
943
+ sm: "h-1",
944
+ md: "h-1.5",
945
+ lg: "h-2.5"
946
+ }
947
+ },
948
+ defaultVariants: { size: "md" }
949
+ }
950
+ ), jt = T(
951
+ "h-full w-full flex-1 transition-all duration-500 ease-smooth origin-left",
952
+ {
953
+ variants: {
954
+ variant: {
955
+ default: "bg-primary",
956
+ success: "bg-ef-green",
957
+ danger: "bg-destructive",
958
+ info: "bg-ef-blue"
959
+ }
960
+ },
961
+ defaultVariants: { variant: "default" }
962
+ }
963
+ ), zt = i.forwardRef(({ className: t, value: r, showLabel: a, size: o, variant: n, ...l }, p) => {
964
+ const d = r == null, m = d ? void 0 : Math.min(100, Math.max(0, r));
965
+ return /* @__PURE__ */ c("div", { className: "w-full space-y-1", children: [
966
+ a && !d && /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ c("span", { className: "font-mono text-[11px] text-muted-foreground", children: [
967
+ m,
968
+ "%"
969
+ ] }) }),
970
+ /* @__PURE__ */ e(
971
+ se.Root,
972
+ {
973
+ ref: p,
974
+ className: s(Bt({ size: o }), t),
975
+ value: m,
976
+ ...l,
977
+ children: /* @__PURE__ */ e(
978
+ se.Indicator,
979
+ {
980
+ className: s(
981
+ d ? "h-full animate-skeleton" : jt({ variant: n })
982
+ ),
983
+ style: d ? void 0 : { transform: `translateX(-${100 - (m ?? 0)}%)` }
984
+ }
985
+ )
986
+ }
987
+ )
988
+ ] });
989
+ });
990
+ zt.displayName = "Progress";
991
+ const Gt = B.Root;
992
+ Gt.displayName = "Accordion";
993
+ const Ut = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
994
+ B.Item,
995
+ {
996
+ ref: a,
997
+ className: s("border border-white/6", t),
998
+ ...r
999
+ }
1000
+ ));
1001
+ Ut.displayName = "AccordionItem";
1002
+ const Ht = i.forwardRef(({ className: t, children: r, ...a }, o) => /* @__PURE__ */ e(B.Header, { className: "flex", children: /* @__PURE__ */ c(
1003
+ B.Trigger,
1004
+ {
1005
+ ref: o,
1006
+ className: s(
1007
+ "group flex flex-1 items-center justify-between px-4 py-3",
1008
+ "font-display text-[13px] font-semibold uppercase tracking-wider text-foreground",
1009
+ "transition-all duration-200",
1010
+ "hover:text-primary hover:bg-white/[0.02]",
1011
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset",
1012
+ "disabled:cursor-not-allowed disabled:opacity-40",
1013
+ t
1014
+ ),
1015
+ ...a,
1016
+ children: [
1017
+ r,
1018
+ /* @__PURE__ */ e(
1019
+ "span",
1020
+ {
1021
+ className: s(
1022
+ "font-mono text-base leading-none select-none shrink-0 ml-2",
1023
+ "text-muted-foreground transition-colors duration-200",
1024
+ "group-hover:text-primary",
1025
+ "group-data-[state=open]:hidden group-data-[state=closed]:inline"
1026
+ ),
1027
+ "aria-hidden": !0,
1028
+ children: "+"
1029
+ }
1030
+ ),
1031
+ /* @__PURE__ */ e(
1032
+ "span",
1033
+ {
1034
+ className: s(
1035
+ "font-mono text-base leading-none select-none shrink-0 ml-2",
1036
+ "text-primary transition-colors duration-200",
1037
+ "group-data-[state=open]:inline group-data-[state=closed]:hidden"
1038
+ ),
1039
+ "aria-hidden": !0,
1040
+ children: "−"
1041
+ }
1042
+ )
1043
+ ]
1044
+ }
1045
+ ) }));
1046
+ Ht.displayName = "AccordionTrigger";
1047
+ const Yt = i.forwardRef(({ className: t, children: r, ...a }, o) => /* @__PURE__ */ e(
1048
+ B.Content,
1049
+ {
1050
+ ref: o,
1051
+ className: "overflow-hidden data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up",
1052
+ ...a,
1053
+ children: /* @__PURE__ */ e("div", { className: s("px-4 pb-4 pt-1 text-sm text-muted-foreground", t), children: r })
1054
+ }
1055
+ ));
1056
+ Yt.displayName = "AccordionContent";
1057
+ const Wt = q.Root;
1058
+ Wt.displayName = "Tabs";
1059
+ const qt = T("flex items-center overflow-x-auto", {
1060
+ variants: {
1061
+ variant: {
1062
+ underline: "border-b border-white/10 gap-0 w-full",
1063
+ pill: "gap-1 bg-surface-1 p-1 w-fit",
1064
+ bordered: "border border-white/10 gap-0 w-full"
1065
+ }
1066
+ },
1067
+ defaultVariants: { variant: "underline" }
1068
+ }), Kt = i.forwardRef(({ className: t, variant: r, ...a }, o) => /* @__PURE__ */ e(
1069
+ q.List,
1070
+ {
1071
+ ref: o,
1072
+ className: s(qt({ variant: r }), t),
1073
+ ...a
1074
+ }
1075
+ ));
1076
+ Kt.displayName = "TabsList";
1077
+ const Xt = T(
1078
+ [
1079
+ "font-display text-[13px] font-semibold uppercase tracking-wider",
1080
+ "transition-all duration-150 cursor-pointer",
1081
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset",
1082
+ "disabled:cursor-not-allowed disabled:opacity-40"
1083
+ ],
1084
+ {
1085
+ variants: {
1086
+ variant: {
1087
+ underline: [
1088
+ "px-4 py-2.5 text-muted-foreground border-b-2 border-transparent -mb-px",
1089
+ "hover:text-foreground",
1090
+ "data-[state=active]:text-primary data-[state=active]:border-b-primary"
1091
+ ],
1092
+ pill: [
1093
+ "px-4 py-1.5 text-muted-foreground",
1094
+ "hover:text-foreground",
1095
+ "data-[state=active]:bg-surface-3 data-[state=active]:text-primary"
1096
+ ],
1097
+ bordered: [
1098
+ "px-4 py-2.5 text-muted-foreground border-r border-white/10 last:border-r-0",
1099
+ "hover:text-foreground hover:bg-white/[0.03]",
1100
+ "data-[state=active]:text-primary data-[state=active]:bg-white/[0.05]"
1101
+ ]
1102
+ }
1103
+ },
1104
+ defaultVariants: { variant: "underline" }
1105
+ }
1106
+ ), Zt = i.forwardRef(({ className: t, variant: r, ...a }, o) => /* @__PURE__ */ e(
1107
+ q.Trigger,
1108
+ {
1109
+ ref: o,
1110
+ className: s(Xt({ variant: r }), t),
1111
+ ...a
1112
+ }
1113
+ ));
1114
+ Zt.displayName = "TabsTrigger";
1115
+ const Qt = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
1116
+ q.Content,
1117
+ {
1118
+ ref: a,
1119
+ className: s(
1120
+ "mt-4 text-sm text-muted-foreground",
1121
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background",
1122
+ t
1123
+ ),
1124
+ ...r
1125
+ }
1126
+ ));
1127
+ Qt.displayName = "TabsContent";
1128
+ const Jt = j.Root;
1129
+ Jt.displayName = "Popover";
1130
+ const er = j.Trigger;
1131
+ er.displayName = "PopoverTrigger";
1132
+ const tr = j.Anchor;
1133
+ tr.displayName = "PopoverAnchor";
1134
+ const rr = i.forwardRef(({ className: t, align: r = "center", sideOffset: a = 6, ...o }, n) => /* @__PURE__ */ e(j.Portal, { children: /* @__PURE__ */ e(
1135
+ j.Content,
1136
+ {
1137
+ ref: n,
1138
+ align: r,
1139
+ sideOffset: a,
1140
+ className: s(
1141
+ "z-50 min-w-[200px]",
1142
+ "bg-surface-2 border border-white/10 shadow-lg",
1143
+ "p-4",
1144
+ "data-[state=open]:animate-fade-in-up",
1145
+ "data-[state=closed]:animate-fade-in-up",
1146
+ "focus:outline-none",
1147
+ t
1148
+ ),
1149
+ ...o
1150
+ }
1151
+ ) }));
1152
+ rr.displayName = "PopoverContent";
1153
+ const ar = P.Root;
1154
+ ar.displayName = "Dialog";
1155
+ const or = P.Trigger;
1156
+ or.displayName = "DialogTrigger";
1157
+ const Ee = P.Portal;
1158
+ Ee.displayName = "DialogPortal";
1159
+ const nr = P.Close;
1160
+ nr.displayName = "DialogClose";
1161
+ const _e = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
1162
+ P.Overlay,
1163
+ {
1164
+ ref: a,
1165
+ className: s(
1166
+ "fixed inset-0 z-50 bg-black/75 backdrop-blur-sm",
1167
+ "data-[state=open]:animate-fade-in-up",
1168
+ t
1169
+ ),
1170
+ ...r
1171
+ }
1172
+ ));
1173
+ _e.displayName = "DialogOverlay";
1174
+ const sr = T(
1175
+ [
1176
+ "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
1177
+ "bg-surface-2 border border-white/10 shadow-xl",
1178
+ "flex flex-col max-h-[90vh]",
1179
+ "data-[state=open]:animate-dialog-in",
1180
+ "focus:outline-none"
1181
+ ],
1182
+ {
1183
+ variants: {
1184
+ size: {
1185
+ sm: "w-full max-w-sm",
1186
+ md: "w-full max-w-lg",
1187
+ lg: "w-full max-w-2xl",
1188
+ xl: "w-full max-w-4xl",
1189
+ fullscreen: "w-screen h-screen max-w-none"
1190
+ }
1191
+ },
1192
+ defaultVariants: { size: "md" }
1193
+ }
1194
+ ), ir = i.forwardRef(({ className: t, size: r, children: a, ...o }, n) => /* @__PURE__ */ c(Ee, { children: [
1195
+ /* @__PURE__ */ e(_e, {}),
1196
+ /* @__PURE__ */ e(
1197
+ P.Content,
1198
+ {
1199
+ ref: n,
1200
+ className: s(sr({ size: r }), t),
1201
+ ...o,
1202
+ children: a
1203
+ }
1204
+ )
1205
+ ] }));
1206
+ ir.displayName = "DialogContent";
1207
+ function lr({
1208
+ className: t,
1209
+ ...r
1210
+ }) {
1211
+ return /* @__PURE__ */ e(
1212
+ "div",
1213
+ {
1214
+ className: s(
1215
+ "flex shrink-0 items-center justify-between border-b border-white/8 px-6 py-4",
1216
+ t
1217
+ ),
1218
+ ...r
1219
+ }
1220
+ );
1221
+ }
1222
+ lr.displayName = "DialogHeader";
1223
+ function dr({
1224
+ className: t,
1225
+ ...r
1226
+ }) {
1227
+ return /* @__PURE__ */ e(
1228
+ "div",
1229
+ {
1230
+ className: s(
1231
+ "flex shrink-0 items-center justify-end gap-3 border-t border-white/8 px-6 py-4",
1232
+ t
1233
+ ),
1234
+ ...r
1235
+ }
1236
+ );
1237
+ }
1238
+ dr.displayName = "DialogFooter";
1239
+ const cr = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
1240
+ P.Title,
1241
+ {
1242
+ ref: a,
1243
+ className: s(
1244
+ "font-display text-base font-semibold uppercase tracking-wider text-foreground",
1245
+ t
1246
+ ),
1247
+ ...r
1248
+ }
1249
+ ));
1250
+ cr.displayName = "DialogTitle";
1251
+ const pr = i.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e(
1252
+ P.Description,
1253
+ {
1254
+ ref: a,
1255
+ className: s("flex-1 overflow-y-auto px-6 py-4 text-sm text-muted-foreground", t),
1256
+ ...r
1257
+ }
1258
+ ));
1259
+ pr.displayName = "DialogDescription";
1260
+ const mr = T("shrink-0", {
1261
+ variants: {
1262
+ variant: {
1263
+ default: "bg-white/10",
1264
+ subtle: "bg-white/5",
1265
+ strong: "bg-white/25",
1266
+ glow: "bg-gradient-to-r from-transparent via-primary/40 to-transparent",
1267
+ accent: "bg-primary/30"
1268
+ },
1269
+ orientation: {
1270
+ horizontal: "h-px w-full",
1271
+ vertical: "w-px h-full"
1272
+ }
1273
+ },
1274
+ defaultVariants: {
1275
+ variant: "default",
1276
+ orientation: "horizontal"
1277
+ }
1278
+ }), fr = i.forwardRef(({ className: t, orientation: r = "horizontal", variant: a, decorative: o = !0, ...n }, l) => {
1279
+ const p = r ?? "horizontal";
1280
+ return /* @__PURE__ */ e(
1281
+ Ye.Root,
1282
+ {
1283
+ ref: l,
1284
+ decorative: o,
1285
+ orientation: p,
1286
+ className: s(
1287
+ mr({ variant: a, orientation: p }),
1288
+ t
1289
+ ),
1290
+ ...n
1291
+ }
1292
+ );
1293
+ });
1294
+ fr.displayName = "Separator";
1295
+ const ur = T("animate-skeleton rounded-none", {
1296
+ variants: {
1297
+ width: {
1298
+ full: "w-full",
1299
+ "3/4": "w-3/4",
1300
+ "1/2": "w-1/2",
1301
+ "1/3": "w-1/3",
1302
+ "1/4": "w-1/4"
1303
+ },
1304
+ height: {
1305
+ xs: "h-2",
1306
+ sm: "h-3",
1307
+ md: "h-4",
1308
+ lg: "h-6"
1309
+ }
1310
+ },
1311
+ defaultVariants: { width: "full", height: "md" }
1312
+ }), F = i.forwardRef(
1313
+ ({ className: t, width: r, height: a, ...o }, n) => /* @__PURE__ */ e(
1314
+ "div",
1315
+ {
1316
+ ref: n,
1317
+ className: s(ur({ width: r, height: a }), t),
1318
+ "aria-hidden": "true",
1319
+ ...o
1320
+ }
1321
+ )
1322
+ );
1323
+ F.displayName = "SkeletonLine";
1324
+ const Ve = i.forwardRef(
1325
+ ({ lines: t = 3, className: r, ...a }, o) => {
1326
+ const n = ["full", "3/4", "full", "1/2", "3/4"];
1327
+ return /* @__PURE__ */ e(
1328
+ "div",
1329
+ {
1330
+ ref: o,
1331
+ className: s("space-y-2", r),
1332
+ "aria-hidden": "true",
1333
+ ...a,
1334
+ children: Array.from({ length: t }).map((l, p) => /* @__PURE__ */ e(
1335
+ F,
1336
+ {
1337
+ width: n[p % n.length],
1338
+ height: "sm"
1339
+ },
1340
+ p
1341
+ ))
1342
+ }
1343
+ );
1344
+ }
1345
+ );
1346
+ Ve.displayName = "SkeletonText";
1347
+ const xr = {
1348
+ xs: "w-6 h-6",
1349
+ sm: "w-8 h-8",
1350
+ md: "w-10 h-10",
1351
+ lg: "w-14 h-14",
1352
+ xl: "w-20 h-20"
1353
+ }, Oe = i.forwardRef(
1354
+ ({ size: t = "md", className: r, ...a }, o) => /* @__PURE__ */ e(
1355
+ "div",
1356
+ {
1357
+ ref: o,
1358
+ className: s(
1359
+ "animate-skeleton clip-corner-sm shrink-0",
1360
+ xr[t],
1361
+ r
1362
+ ),
1363
+ "aria-hidden": "true",
1364
+ ...a
1365
+ }
1366
+ )
1367
+ );
1368
+ Oe.displayName = "SkeletonAvatar";
1369
+ const gr = i.forwardRef(
1370
+ ({ showAvatar: t = !1, lines: r = 3, className: a, ...o }, n) => /* @__PURE__ */ c(
1371
+ "div",
1372
+ {
1373
+ ref: n,
1374
+ className: s(
1375
+ "border border-white/8 bg-surface-1 p-4 space-y-3",
1376
+ a
1377
+ ),
1378
+ "aria-hidden": "true",
1379
+ ...o,
1380
+ children: [
1381
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
1382
+ t && /* @__PURE__ */ e(Oe, { size: "md" }),
1383
+ /* @__PURE__ */ c("div", { className: "flex-1 space-y-2", children: [
1384
+ /* @__PURE__ */ e(F, { width: "3/4", height: "md" }),
1385
+ /* @__PURE__ */ e(F, { width: "1/2", height: "sm" })
1386
+ ] })
1387
+ ] }),
1388
+ /* @__PURE__ */ e(Ve, { lines: r }),
1389
+ /* @__PURE__ */ e(F, { width: "1/3", height: "xs" })
1390
+ ]
1391
+ }
1392
+ )
1393
+ );
1394
+ gr.displayName = "SkeletonCard";
1395
+ const de = {
1396
+ search: {
1397
+ title: "NO RESULTS FOUND",
1398
+ description: "Try adjusting your search query."
1399
+ },
1400
+ error: {
1401
+ title: "FAILED TO LOAD",
1402
+ description: "An error occurred. Please try again."
1403
+ },
1404
+ permission: {
1405
+ title: "ACCESS RESTRICTED",
1406
+ description: "You don't have permission to view this."
1407
+ },
1408
+ empty: {
1409
+ title: "NO ITEMS YET",
1410
+ description: "Add your first item to get started."
1411
+ },
1412
+ default: { title: "", description: "" }
1413
+ }, hr = T(
1414
+ "flex flex-col items-center justify-center text-center py-16 px-8",
1415
+ {
1416
+ variants: {
1417
+ size: {
1418
+ sm: "py-8 px-4",
1419
+ md: "py-16 px-8",
1420
+ lg: "py-24 px-12"
1421
+ }
1422
+ },
1423
+ defaultVariants: { size: "md" }
1424
+ }
1425
+ ), br = i.forwardRef(
1426
+ ({
1427
+ icon: t,
1428
+ title: r,
1429
+ description: a,
1430
+ action: o,
1431
+ variant: n = "default",
1432
+ size: l,
1433
+ className: p,
1434
+ ...d
1435
+ }, m) => {
1436
+ const u = de[n] ?? de.default, f = r ?? u.title, x = a ?? u.description;
1437
+ return /* @__PURE__ */ c(
1438
+ "div",
1439
+ {
1440
+ ref: m,
1441
+ className: s(hr({ size: l }), p),
1442
+ ...d,
1443
+ children: [
1444
+ t && /* @__PURE__ */ e("div", { className: "text-white/15 mb-6 [&>svg]:w-12 [&>svg]:h-12", children: t }),
1445
+ f && /* @__PURE__ */ e("h3", { className: "font-display text-[18px] font-bold uppercase tracking-wider text-foreground mb-3", children: f }),
1446
+ x && /* @__PURE__ */ e("p", { className: "text-[14px] text-muted-foreground max-w-[360px] leading-relaxed", children: x }),
1447
+ o && /* @__PURE__ */ e("div", { className: "mt-6", children: o })
1448
+ ]
1449
+ }
1450
+ );
1451
+ }
1452
+ );
1453
+ br.displayName = "EmptyState";
1454
+ const vr = T(
1455
+ "relative flex items-start gap-3 p-4 border-l-[3px] transition-all",
1456
+ {
1457
+ variants: {
1458
+ variant: {
1459
+ info: "bg-ef-blue/[0.08] border-l-ef-blue border border-ef-blue/20",
1460
+ success: "bg-ef-green/[0.08] border-l-ef-green border border-ef-green/20",
1461
+ warning: "bg-ef-orange/[0.08] border-l-ef-orange border border-ef-orange/20",
1462
+ error: "bg-destructive/[0.08] border-l-destructive border border-destructive/20"
1463
+ }
1464
+ },
1465
+ defaultVariants: { variant: "info" }
1466
+ }
1467
+ ), yr = {
1468
+ info: { icon: "◆", color: "text-ef-blue" },
1469
+ success: { icon: "✓", color: "text-ef-green" },
1470
+ warning: { icon: "⚠", color: "text-ef-orange" },
1471
+ error: { icon: "✕", color: "text-destructive" }
1472
+ }, Nr = i.forwardRef(
1473
+ ({
1474
+ variant: t = "info",
1475
+ title: r,
1476
+ dismissible: a = !1,
1477
+ onDismiss: o,
1478
+ icon: n,
1479
+ children: l,
1480
+ className: p,
1481
+ ...d
1482
+ }, m) => {
1483
+ const u = yr[t], f = n !== null, x = n ?? /* @__PURE__ */ e(
1484
+ "span",
1485
+ {
1486
+ className: s(
1487
+ "font-mono text-[14px] font-bold leading-none",
1488
+ u.color
1489
+ ),
1490
+ children: u.icon
1491
+ }
1492
+ );
1493
+ return /* @__PURE__ */ c(
1494
+ "div",
1495
+ {
1496
+ ref: m,
1497
+ role: "alert",
1498
+ "aria-live": t === "error" ? "assertive" : "polite",
1499
+ className: s(vr({ variant: t }), p),
1500
+ ...d,
1501
+ children: [
1502
+ f && /* @__PURE__ */ e("div", { className: "shrink-0 mt-0.5", children: x }),
1503
+ /* @__PURE__ */ c("div", { className: "flex-1 min-w-0", children: [
1504
+ r && /* @__PURE__ */ e("p", { className: "font-display text-[13px] font-bold uppercase tracking-wider text-foreground mb-1", children: r }),
1505
+ l && /* @__PURE__ */ e("div", { className: "text-[13px] text-muted-foreground leading-relaxed", children: l })
1506
+ ] }),
1507
+ a && /* @__PURE__ */ e(
1508
+ "button",
1509
+ {
1510
+ type: "button",
1511
+ "aria-label": "Dismiss",
1512
+ onClick: o,
1513
+ className: "shrink-0 text-muted-foreground hover:text-foreground transition-colors font-mono text-[12px] leading-none",
1514
+ children: "✕"
1515
+ }
1516
+ )
1517
+ ]
1518
+ }
1519
+ );
1520
+ }
1521
+ );
1522
+ Nr.displayName = "Alert";
1523
+ const wr = T("", {
1524
+ variants: {
1525
+ status: {
1526
+ complete: "text-primary",
1527
+ current: "text-primary",
1528
+ upcoming: "text-white/20"
1529
+ }
1530
+ },
1531
+ defaultVariants: { status: "upcoming" }
1532
+ }), Me = i.forwardRef(
1533
+ ({ date: t, title: r, description: a, status: o = "upcoming", children: n, className: l, ...p }, d) => {
1534
+ const u = o === "complete" || o === "current" ? "◆" : "◇";
1535
+ return /* @__PURE__ */ c(
1536
+ "div",
1537
+ {
1538
+ ref: d,
1539
+ className: s("relative pb-8 last:pb-0", l),
1540
+ ...p,
1541
+ children: [
1542
+ /* @__PURE__ */ e(
1543
+ "span",
1544
+ {
1545
+ className: s(
1546
+ "absolute -left-[15px] top-0.5 font-mono text-[11px] leading-none select-none",
1547
+ wr({ status: o }),
1548
+ o === "current" && "drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]"
1549
+ ),
1550
+ "aria-hidden": "true",
1551
+ children: u
1552
+ }
1553
+ ),
1554
+ t && /* @__PURE__ */ e("p", { className: "font-mono text-[11px] text-muted-foreground/60 mb-1", children: t }),
1555
+ /* @__PURE__ */ e("p", { className: "font-display text-[14px] font-semibold uppercase text-foreground", children: r }),
1556
+ a && /* @__PURE__ */ e("p", { className: "text-[13px] text-muted-foreground mt-1", children: a }),
1557
+ n
1558
+ ]
1559
+ }
1560
+ );
1561
+ }
1562
+ );
1563
+ Me.displayName = "TimelineItem";
1564
+ const Tr = i.forwardRef(
1565
+ ({ items: t, children: r, className: a, ...o }, n) => /* @__PURE__ */ e(
1566
+ "div",
1567
+ {
1568
+ ref: n,
1569
+ className: s(
1570
+ "relative pl-6 space-y-0",
1571
+ "before:absolute before:left-[9px] before:top-2 before:bottom-2 before:w-px before:bg-white/10",
1572
+ a
1573
+ ),
1574
+ ...o,
1575
+ children: t ? t.map((l, p) => {
1576
+ const { date: d, title: m, description: u, status: f, children: x, className: b, ...h } = l;
1577
+ return /* @__PURE__ */ e(
1578
+ Me,
1579
+ {
1580
+ date: d,
1581
+ title: m,
1582
+ description: u,
1583
+ status: f,
1584
+ className: b,
1585
+ ...h,
1586
+ children: x
1587
+ },
1588
+ p
1589
+ );
1590
+ }) : r
1591
+ }
1592
+ )
1593
+ );
1594
+ Tr.displayName = "Timeline";
1595
+ function ce(t, r) {
1596
+ return t < r ? "complete" : t === r ? "current" : "upcoming";
1597
+ }
1598
+ const kr = i.forwardRef(
1599
+ ({ steps: t, currentStep: r, orientation: a = "horizontal", className: o, ...n }, l) => a === "vertical" ? /* @__PURE__ */ e(
1600
+ "div",
1601
+ {
1602
+ ref: l,
1603
+ className: s("flex flex-col gap-0", o),
1604
+ ...n,
1605
+ children: t.map((p, d) => {
1606
+ const m = ce(d, r), u = m === "complete", f = m === "current", x = d === t.length - 1, b = u || f ? "◆" : "◇";
1607
+ return /* @__PURE__ */ c("div", { className: "flex items-start gap-3 relative", children: [
1608
+ /* @__PURE__ */ c("div", { className: "flex flex-col items-center flex-shrink-0", children: [
1609
+ /* @__PURE__ */ e(
1610
+ "span",
1611
+ {
1612
+ className: s(
1613
+ "font-mono text-[13px] leading-none",
1614
+ u && "text-primary",
1615
+ f && "text-primary drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]",
1616
+ !u && !f && "text-white/20"
1617
+ ),
1618
+ "aria-hidden": "true",
1619
+ children: b
1620
+ }
1621
+ ),
1622
+ !x && /* @__PURE__ */ e(
1623
+ "div",
1624
+ {
1625
+ className: s(
1626
+ "flex-1 w-px min-h-6 mt-1",
1627
+ u ? "bg-primary" : "bg-white/10"
1628
+ )
1629
+ }
1630
+ )
1631
+ ] }),
1632
+ /* @__PURE__ */ c("div", { className: "pb-6 last:pb-0", children: [
1633
+ /* @__PURE__ */ e(
1634
+ "p",
1635
+ {
1636
+ className: s(
1637
+ "font-display text-[11px] uppercase tracking-wider mt-1",
1638
+ f && "text-foreground font-semibold",
1639
+ u && "text-primary",
1640
+ !u && !f && "text-muted-foreground/60"
1641
+ ),
1642
+ children: p.label
1643
+ }
1644
+ ),
1645
+ p.description && /* @__PURE__ */ e("p", { className: "text-[12px] text-muted-foreground/60 mt-0.5", children: p.description })
1646
+ ] })
1647
+ ] }, d);
1648
+ })
1649
+ }
1650
+ ) : /* @__PURE__ */ e(
1651
+ "div",
1652
+ {
1653
+ ref: l,
1654
+ className: s("flex items-start w-full min-w-max", o),
1655
+ ...n,
1656
+ children: t.map((p, d) => {
1657
+ const m = ce(d, r), u = m === "complete", f = m === "current", x = d === t.length - 1, b = u || f ? "◆" : "◇";
1658
+ return /* @__PURE__ */ c(i.Fragment, { children: [
1659
+ /* @__PURE__ */ c("div", { className: "flex flex-col items-center flex-shrink-0", children: [
1660
+ /* @__PURE__ */ e(
1661
+ "span",
1662
+ {
1663
+ className: s(
1664
+ "font-mono text-[13px] leading-none mb-1.5",
1665
+ u && "text-primary",
1666
+ f && "text-primary drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]",
1667
+ !u && !f && "text-white/20"
1668
+ ),
1669
+ "aria-hidden": "true",
1670
+ children: b
1671
+ }
1672
+ ),
1673
+ /* @__PURE__ */ e(
1674
+ "p",
1675
+ {
1676
+ className: s(
1677
+ "font-display text-[11px] uppercase tracking-wider mt-1",
1678
+ f && "text-foreground font-semibold",
1679
+ u && "text-primary",
1680
+ !u && !f && "text-muted-foreground/60"
1681
+ ),
1682
+ children: p.label
1683
+ }
1684
+ ),
1685
+ p.description && /* @__PURE__ */ e("p", { className: "text-[12px] text-muted-foreground/60 mt-0.5 text-center", children: p.description })
1686
+ ] }),
1687
+ !x && /* @__PURE__ */ e(
1688
+ "div",
1689
+ {
1690
+ className: s(
1691
+ "flex-1 h-px self-start mt-[0.45em] mx-2",
1692
+ u ? "bg-primary" : "bg-white/10"
1693
+ )
1694
+ }
1695
+ )
1696
+ ] }, d);
1697
+ })
1698
+ }
1699
+ )
1700
+ );
1701
+ kr.displayName = "Stepper";
1702
+ const Z = T(
1703
+ "font-mono text-[12px] w-9 h-9 flex items-center justify-center transition-all border",
1704
+ {
1705
+ variants: {
1706
+ active: {
1707
+ true: "bg-primary text-primary-foreground border-primary font-bold",
1708
+ false: "text-muted-foreground border-white/10 hover:border-primary/40 hover:text-foreground"
1709
+ },
1710
+ disabled: {
1711
+ true: "opacity-40 cursor-not-allowed pointer-events-none",
1712
+ false: ""
1713
+ }
1714
+ },
1715
+ defaultVariants: { active: !1, disabled: !1 }
1716
+ }
1717
+ );
1718
+ function Sr(t, r, a) {
1719
+ if (r <= 7) return Array.from({ length: r }, (p, d) => d + 1);
1720
+ const o = Math.max(2, t - a), n = Math.min(r - 1, t + a), l = [1];
1721
+ o > 2 && l.push("...");
1722
+ for (let p = o; p <= n; p++) l.push(p);
1723
+ return n < r - 1 && l.push("..."), l.push(r), l;
1724
+ }
1725
+ const Rr = i.forwardRef(
1726
+ ({
1727
+ totalPages: t,
1728
+ currentPage: r,
1729
+ onPageChange: a,
1730
+ siblingCount: o = 1,
1731
+ className: n,
1732
+ ...l
1733
+ }, p) => {
1734
+ const d = Sr(r, t, o), m = r <= 1, u = r >= t;
1735
+ return /* @__PURE__ */ e(
1736
+ "nav",
1737
+ {
1738
+ ref: p,
1739
+ "aria-label": "Pagination",
1740
+ className: s(n),
1741
+ ...l,
1742
+ children: /* @__PURE__ */ c("div", { className: "flex items-center gap-1", children: [
1743
+ /* @__PURE__ */ e(
1744
+ "button",
1745
+ {
1746
+ type: "button",
1747
+ onClick: () => !m && a(r - 1),
1748
+ disabled: m,
1749
+ "aria-label": "Previous page",
1750
+ className: s(
1751
+ Z({
1752
+ active: !1,
1753
+ disabled: m
1754
+ }),
1755
+ "font-display uppercase text-[11px] tracking-wider px-2 w-auto"
1756
+ ),
1757
+ children: "◆ PREV"
1758
+ }
1759
+ ),
1760
+ d.map(
1761
+ (f, x) => f === "..." ? /* @__PURE__ */ e(
1762
+ "span",
1763
+ {
1764
+ className: "w-9 h-9 flex items-center justify-center font-mono text-[12px] text-muted-foreground/40 select-none",
1765
+ "aria-hidden": "true",
1766
+ children: "…"
1767
+ },
1768
+ `ellipsis-${x}`
1769
+ ) : /* @__PURE__ */ e(
1770
+ "button",
1771
+ {
1772
+ type: "button",
1773
+ onClick: () => a(f),
1774
+ "aria-label": `Page ${f}`,
1775
+ "aria-current": f === r ? "page" : void 0,
1776
+ className: s(
1777
+ Z({ active: f === r })
1778
+ ),
1779
+ children: f
1780
+ },
1781
+ f
1782
+ )
1783
+ ),
1784
+ /* @__PURE__ */ e(
1785
+ "button",
1786
+ {
1787
+ type: "button",
1788
+ onClick: () => !u && a(r + 1),
1789
+ disabled: u,
1790
+ "aria-label": "Next page",
1791
+ className: s(
1792
+ Z({
1793
+ active: !1,
1794
+ disabled: u
1795
+ }),
1796
+ "font-display uppercase text-[11px] tracking-wider px-2 w-auto"
1797
+ ),
1798
+ children: "NEXT ◆"
1799
+ }
1800
+ )
1801
+ ] })
1802
+ }
1803
+ );
1804
+ }
1805
+ );
1806
+ Rr.displayName = "Pagination";
1807
+ const Ir = i.forwardRef(
1808
+ ({ items: t, separator: r, className: a, ...o }, n) => /* @__PURE__ */ e(
1809
+ "nav",
1810
+ {
1811
+ ref: n,
1812
+ "aria-label": "Breadcrumb",
1813
+ className: s(a),
1814
+ ...o,
1815
+ children: /* @__PURE__ */ e("ol", { className: "flex items-center gap-2 flex-wrap font-display text-[12px] uppercase tracking-wider", children: t.map((l, p) => {
1816
+ const d = p === t.length - 1;
1817
+ return /* @__PURE__ */ c(i.Fragment, { children: [
1818
+ /* @__PURE__ */ e("li", { children: d || !l.href ? /* @__PURE__ */ e(
1819
+ "span",
1820
+ {
1821
+ "aria-current": d ? "page" : void 0,
1822
+ className: d ? "text-foreground font-semibold" : "text-muted-foreground",
1823
+ children: l.label
1824
+ }
1825
+ ) : /* @__PURE__ */ e(
1826
+ "a",
1827
+ {
1828
+ href: l.href,
1829
+ className: "text-muted-foreground hover:text-primary transition-colors",
1830
+ children: l.label
1831
+ }
1832
+ ) }),
1833
+ !d && /* @__PURE__ */ e(
1834
+ "li",
1835
+ {
1836
+ "aria-hidden": "true",
1837
+ className: "text-[10px] text-white/20 select-none",
1838
+ children: r ?? "›"
1839
+ }
1840
+ )
1841
+ ] }, p);
1842
+ }) })
1843
+ }
1844
+ )
1845
+ );
1846
+ Ir.displayName = "Breadcrumb";
1847
+ const Cr = T(
1848
+ "inline-flex items-center border border-white/[0.12] bg-transparent",
1849
+ {
1850
+ variants: {
1851
+ size: {
1852
+ sm: "h-8",
1853
+ md: "h-9",
1854
+ lg: "h-10"
1855
+ }
1856
+ },
1857
+ defaultVariants: { size: "md" }
1858
+ }
1859
+ ), Ar = i.forwardRef(
1860
+ ({
1861
+ value: t,
1862
+ defaultValue: r,
1863
+ onChange: a,
1864
+ min: o,
1865
+ max: n,
1866
+ step: l = 1,
1867
+ size: p = "md",
1868
+ className: d,
1869
+ disabled: m,
1870
+ ...u
1871
+ }, f) => {
1872
+ const x = t !== void 0, [b, h] = i.useState(
1873
+ r ?? 0
1874
+ ), y = x ? t : b, N = (I) => Math.min(n ?? 1 / 0, Math.max(o ?? -1 / 0, I)), g = (I) => {
1875
+ const V = N(I);
1876
+ x || h(V), a == null || a(V);
1877
+ }, v = () => g(y - l), S = () => g(y + l), E = o !== void 0 && y <= o, _ = n !== void 0 && y >= n, G = "px-2 font-mono text-[13px] text-muted-foreground transition-colors select-none";
1878
+ return /* @__PURE__ */ c("div", { className: s(Cr({ size: p }), d), children: [
1879
+ /* @__PURE__ */ e(
1880
+ "button",
1881
+ {
1882
+ type: "button",
1883
+ onClick: v,
1884
+ disabled: m || E,
1885
+ "aria-label": "Decrement",
1886
+ className: s(
1887
+ G,
1888
+ "h-full border-r border-white/[0.12]",
1889
+ (m || E) && "opacity-40 cursor-not-allowed",
1890
+ !(m || E) && "hover:text-foreground"
1891
+ ),
1892
+ children: "−"
1893
+ }
1894
+ ),
1895
+ /* @__PURE__ */ e(
1896
+ "input",
1897
+ {
1898
+ ref: f,
1899
+ type: "number",
1900
+ value: y,
1901
+ disabled: m,
1902
+ onChange: (I) => {
1903
+ const V = parseFloat(I.target.value);
1904
+ isNaN(V) || g(V);
1905
+ },
1906
+ onKeyDown: (I) => {
1907
+ I.key === "ArrowUp" ? (I.preventDefault(), S()) : I.key === "ArrowDown" && (I.preventDefault(), v());
1908
+ },
1909
+ className: s(
1910
+ "w-16 h-full text-center font-mono text-[13px] text-foreground bg-transparent",
1911
+ "border-x border-white/[0.12] outline-none",
1912
+ "[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none",
1913
+ m && "opacity-40 cursor-not-allowed"
1914
+ ),
1915
+ ...u
1916
+ }
1917
+ ),
1918
+ /* @__PURE__ */ e(
1919
+ "button",
1920
+ {
1921
+ type: "button",
1922
+ onClick: S,
1923
+ disabled: m || _,
1924
+ "aria-label": "Increment",
1925
+ className: s(
1926
+ G,
1927
+ "h-full border-l border-white/[0.12]",
1928
+ (m || _) && "opacity-40 cursor-not-allowed",
1929
+ !(m || _) && "hover:text-foreground"
1930
+ ),
1931
+ children: "+"
1932
+ }
1933
+ )
1934
+ ] });
1935
+ }
1936
+ );
1937
+ Ar.displayName = "NumberInput";
1938
+ const Dr = {
1939
+ low: {
1940
+ duration: "6s",
1941
+ clipTop: "15% 0 70% 0",
1942
+ clipBot: "65% 0 15% 0",
1943
+ offset: 1,
1944
+ defaultInterval: 4e3
1945
+ },
1946
+ medium: {
1947
+ duration: "3s",
1948
+ clipTop: "20% 0 50% 0",
1949
+ clipBot: "50% 0 20% 0",
1950
+ offset: 2,
1951
+ defaultInterval: 2500
1952
+ },
1953
+ high: {
1954
+ duration: "1.2s",
1955
+ clipTop: "10% 0 60% 0",
1956
+ clipBot: "55% 0 10% 0",
1957
+ offset: 4,
1958
+ defaultInterval: 1200
1959
+ }
1960
+ }, Er = i.forwardRef(
1961
+ ({
1962
+ children: t,
1963
+ className: r,
1964
+ intensity: a = "medium",
1965
+ continuous: o = !1,
1966
+ continuousInterval: n,
1967
+ ...l
1968
+ }, p) => {
1969
+ const d = Dr[a], m = n ?? d.defaultInterval, [u, f] = i.useState(!1);
1970
+ i.useEffect(() => {
1971
+ if (!o) return;
1972
+ const b = setInterval(() => {
1973
+ f(!0);
1974
+ const h = setTimeout(
1975
+ () => f(!1),
1976
+ parseFloat(d.duration) * 1e3
1977
+ );
1978
+ return () => clearTimeout(h);
1979
+ }, m);
1980
+ return () => clearInterval(b);
1981
+ }, [o, m, d.duration]);
1982
+ const x = u || !o ? "animate-glitch" : "";
1983
+ return /* @__PURE__ */ c(
1984
+ "span",
1985
+ {
1986
+ ref: p,
1987
+ className: s("relative inline-block", r),
1988
+ ...l,
1989
+ children: [
1990
+ /* @__PURE__ */ e("span", { className: "relative z-10", children: t }),
1991
+ /* @__PURE__ */ e(
1992
+ "span",
1993
+ {
1994
+ "aria-hidden": !0,
1995
+ className: s("absolute inset-0 text-ef-cyan opacity-70", x),
1996
+ style: {
1997
+ clipPath: `inset(${d.clipTop})`,
1998
+ transform: `translate(-${d.offset}px, 0)`,
1999
+ animationDuration: d.duration
2000
+ },
2001
+ children: t
2002
+ }
2003
+ ),
2004
+ /* @__PURE__ */ e(
2005
+ "span",
2006
+ {
2007
+ "aria-hidden": !0,
2008
+ className: s("absolute inset-0 text-ef-red opacity-70", x),
2009
+ style: {
2010
+ clipPath: `inset(${d.clipBot})`,
2011
+ transform: `translate(${d.offset}px, 0)`,
2012
+ animationDuration: d.duration,
2013
+ animationDelay: "0.1s"
2014
+ },
2015
+ children: t
2016
+ }
2017
+ )
2018
+ ]
2019
+ }
2020
+ );
2021
+ }
2022
+ );
2023
+ Er.displayName = "GlitchText";
2024
+ const _r = { sm: 16, md: 28, lg: 44 }, Vr = i.forwardRef(({ size: t = "md", label: r, className: a }, o) => {
2025
+ const n = _r[t];
2026
+ return /* @__PURE__ */ c(
2027
+ "div",
2028
+ {
2029
+ ref: o,
2030
+ className: `flex flex-col items-center gap-3${a ? ` ${a}` : ""}`,
2031
+ children: [
2032
+ /* @__PURE__ */ e("div", { className: "relative", style: { width: n * 2, height: n * 2 }, children: [0, 1, 2].map((l) => /* @__PURE__ */ e(
2033
+ "div",
2034
+ {
2035
+ className: "absolute inset-0 border-2 border-primary",
2036
+ style: {
2037
+ transform: `rotate(45deg) scale(${1 - l * 0.25})`,
2038
+ animation: `diamondSpin ${1.2 + l * 0.4}s linear infinite${l === 1 ? " reverse" : ""}`,
2039
+ opacity: 1 - l * 0.25
2040
+ }
2041
+ },
2042
+ l
2043
+ )) }),
2044
+ r && /* @__PURE__ */ e("span", { className: "font-mono text-xs text-muted-foreground tracking-[0.15em] uppercase", children: r })
2045
+ ]
2046
+ }
2047
+ );
2048
+ });
2049
+ Vr.displayName = "DiamondLoader";
2050
+ const Or = {
2051
+ online: "ONLINE",
2052
+ warning: "CAUTION",
2053
+ offline: "OFFLINE",
2054
+ scanning: "SCANNING"
2055
+ }, Mr = {
2056
+ online: "bg-ef-green",
2057
+ warning: "bg-ef-yellow",
2058
+ offline: "bg-ef-red",
2059
+ scanning: "bg-ef-cyan animate-pulse"
2060
+ }, Pr = i.forwardRef(
2061
+ ({
2062
+ title: t,
2063
+ status: r = "online",
2064
+ children: a,
2065
+ className: o,
2066
+ headerAction: n,
2067
+ collapsible: l = !1,
2068
+ defaultCollapsed: p = !1,
2069
+ collapsed: d,
2070
+ onCollapseChange: m,
2071
+ ...u
2072
+ }, f) => {
2073
+ const [x, b] = i.useState(p), h = d !== void 0, y = h ? d : x, N = () => {
2074
+ if (!l) return;
2075
+ const g = !y;
2076
+ h || b(g), m == null || m(g);
2077
+ };
2078
+ return /* @__PURE__ */ c(
2079
+ "div",
2080
+ {
2081
+ ref: f,
2082
+ className: s(
2083
+ "relative border border-border bg-surface-1 scanline-overlay",
2084
+ o
2085
+ ),
2086
+ ...u,
2087
+ children: [
2088
+ /* @__PURE__ */ c(
2089
+ "div",
2090
+ {
2091
+ className: s(
2092
+ "flex items-center justify-between px-4 py-2.5 border-b border-border bg-surface-0",
2093
+ l && "cursor-pointer select-none"
2094
+ ),
2095
+ onClick: N,
2096
+ children: [
2097
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
2098
+ /* @__PURE__ */ e(je, { className: "w-3.5 h-3.5 text-primary" }),
2099
+ /* @__PURE__ */ e("span", { className: "font-display text-[11px] font-bold tracking-[0.15em] uppercase text-foreground", children: t }),
2100
+ l && /* @__PURE__ */ e("span", { className: "font-mono text-[14px] text-primary/60 ml-1 leading-none", children: y ? "+" : "−" })
2101
+ ] }),
2102
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-3", children: [
2103
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-2", children: [
2104
+ /* @__PURE__ */ e(
2105
+ "div",
2106
+ {
2107
+ className: s("w-2 h-2", Mr[r]),
2108
+ style: {
2109
+ clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"
2110
+ }
2111
+ }
2112
+ ),
2113
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] tracking-[0.1em] text-muted-foreground", children: Or[r] })
2114
+ ] }),
2115
+ n && /* @__PURE__ */ e(
2116
+ "div",
2117
+ {
2118
+ className: "flex items-center",
2119
+ onClick: (g) => g.stopPropagation(),
2120
+ children: n
2121
+ }
2122
+ )
2123
+ ] })
2124
+ ]
2125
+ }
2126
+ ),
2127
+ /* @__PURE__ */ e("div", { className: "absolute top-0 left-0 w-6 h-6 border-t-2 border-l-2 border-primary/40 pointer-events-none" }),
2128
+ /* @__PURE__ */ e("div", { className: "absolute top-0 right-0 w-6 h-6 border-t-2 border-r-2 border-primary/40 pointer-events-none" }),
2129
+ /* @__PURE__ */ e("div", { className: "absolute bottom-0 left-0 w-6 h-6 border-b-2 border-l-2 border-primary/40 pointer-events-none" }),
2130
+ /* @__PURE__ */ e("div", { className: "absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary/40 pointer-events-none" }),
2131
+ /* @__PURE__ */ e(
2132
+ "div",
2133
+ {
2134
+ className: s(
2135
+ "overflow-hidden transition-all duration-300",
2136
+ y ? "max-h-0" : "max-h-[9999px]"
2137
+ ),
2138
+ children: /* @__PURE__ */ e("div", { className: "p-5", children: a })
2139
+ }
2140
+ )
2141
+ ]
2142
+ }
2143
+ );
2144
+ }
2145
+ );
2146
+ Pr.displayName = "TacticalPanel";
2147
+ const Lr = i.forwardRef(
2148
+ ({ title: t, subtitle: r, icon: a, value: o, className: n }, l) => {
2149
+ const [p, d] = i.useState(!1);
2150
+ return /* @__PURE__ */ c(
2151
+ "div",
2152
+ {
2153
+ ref: l,
2154
+ 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}` : ""}`,
2155
+ onMouseEnter: () => d(!0),
2156
+ onMouseLeave: () => d(!1),
2157
+ children: [
2158
+ /* @__PURE__ */ e(
2159
+ "div",
2160
+ {
2161
+ className: "absolute left-0 right-0 h-px bg-gradient-to-r from-transparent via-primary/60 to-transparent pointer-events-none transition-all",
2162
+ style: {
2163
+ top: p ? "100%" : "-10%",
2164
+ opacity: p ? 1 : 0,
2165
+ transitionDuration: "2000ms"
2166
+ }
2167
+ }
2168
+ ),
2169
+ /* @__PURE__ */ e(
2170
+ "div",
2171
+ {
2172
+ className: "absolute inset-0 pointer-events-none transition-opacity duration-500",
2173
+ style: {
2174
+ background: "linear-gradient(135deg, transparent 0%, hsl(var(--primary) / 0.03) 40%, transparent 60%)",
2175
+ opacity: p ? 1 : 0
2176
+ }
2177
+ }
2178
+ ),
2179
+ /* @__PURE__ */ c("div", { className: "relative z-10", children: [
2180
+ /* @__PURE__ */ e(a, { className: "w-5 h-5 text-primary mb-4 group-hover:drop-shadow-[0_0_8px_hsl(var(--primary)/0.5)] transition-all" }),
2181
+ o && /* @__PURE__ */ e("p", { className: "font-display text-3xl font-bold text-primary mb-1", children: o }),
2182
+ /* @__PURE__ */ e("h4", { className: "font-display text-sm font-bold tracking-[0.05em] uppercase text-foreground mb-1", children: t }),
2183
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: r })
2184
+ ] }),
2185
+ /* @__PURE__ */ e("div", { className: "absolute bottom-3 right-3 text-primary/20 group-hover:text-primary/60 transition-colors text-xs", children: "◆" })
2186
+ ]
2187
+ }
2188
+ );
2189
+ }
2190
+ );
2191
+ Lr.displayName = "HoloCard";
2192
+ const pe = {
2193
+ 1: 2e3,
2194
+ 2: 1500,
2195
+ 3: 1e3,
2196
+ 4: 600,
2197
+ 5: 300
2198
+ }, $r = {
2199
+ mono: "text-muted-foreground",
2200
+ classified: "text-primary",
2201
+ transmission: "text-ef-cyan"
2202
+ }, Fr = {
2203
+ system: "text-muted-foreground",
2204
+ data: "text-ef-cyan",
2205
+ warning: "text-ef-orange",
2206
+ classified: "text-primary"
2207
+ }, Br = [
2208
+ "[SYS] Initializing ENDFIELD protocol...",
2209
+ "[NET] Connection established — latency: 12ms",
2210
+ "[SEC] Authentication verified ◆ Level: ALPHA",
2211
+ "[DAT] Loading design tokens: 94 variables mapped",
2212
+ "[GPU] Render pipeline: Optimized (60fps locked)",
2213
+ "[SYS] Component registry: 70 modules online",
2214
+ "[NET] Sync complete — all nodes operational",
2215
+ "[DAT] Color system: HSL-based, 9 neutrals, 9 accents",
2216
+ "[SEC] Encryption: AES-256 ◆ Status: ACTIVE",
2217
+ "[SYS] ENDFIELD DESIGN SYSTEM v2.0 ◆ READY"
2218
+ ];
2219
+ function me(t) {
2220
+ return typeof t == "string" ? t : t.text;
2221
+ }
2222
+ function jr(t, r) {
2223
+ if (r) return $r[r];
2224
+ if (typeof t != "string" && t.type)
2225
+ return Fr[t.type] ?? "text-muted-foreground";
2226
+ const a = typeof t == "string" ? t : t.text;
2227
+ return a.includes("[SEC]") ? "text-ef-green" : a.includes("[NET]") ? "text-ef-blue" : a.includes("[DAT]") ? "text-ef-cyan" : a.includes("[GPU]") ? "text-ef-purple" : "text-muted-foreground";
2228
+ }
2229
+ const zr = i.forwardRef(
2230
+ ({
2231
+ messages: t = Br,
2232
+ speed: r = 3,
2233
+ messageType: a,
2234
+ className: o,
2235
+ ...n
2236
+ }, l) => {
2237
+ const p = pe[r] ?? pe[3], [d, m] = i.useState([]), u = i.useRef(null);
2238
+ return i.useEffect(() => {
2239
+ let f = 0;
2240
+ const x = setInterval(() => {
2241
+ m((b) => {
2242
+ const h = [...b, t[f % t.length]];
2243
+ return h.length > 8 ? h.slice(-8) : h;
2244
+ }), f++;
2245
+ }, p);
2246
+ return () => clearInterval(x);
2247
+ }, [t, p]), i.useEffect(() => {
2248
+ u.current && (u.current.scrollTop = u.current.scrollHeight);
2249
+ }, [d]), /* @__PURE__ */ c(
2250
+ "div",
2251
+ {
2252
+ ref: l,
2253
+ className: s(
2254
+ "border border-border bg-background clip-corner overflow-hidden",
2255
+ o
2256
+ ),
2257
+ ...n,
2258
+ children: [
2259
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-2 px-4 py-2 border-b border-border bg-surface-0", children: [
2260
+ /* @__PURE__ */ e(ze, { className: "w-3.5 h-3.5 text-primary" }),
2261
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] tracking-[0.1em] text-muted-foreground uppercase", children: "LIVE FEED" }),
2262
+ /* @__PURE__ */ c("div", { className: "ml-auto flex items-center gap-1.5", children: [
2263
+ /* @__PURE__ */ e(
2264
+ "div",
2265
+ {
2266
+ className: "w-1.5 h-1.5 bg-ef-green animate-pulse",
2267
+ style: {
2268
+ clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"
2269
+ }
2270
+ }
2271
+ ),
2272
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] text-ef-green", children: "ACTIVE" })
2273
+ ] })
2274
+ ] }),
2275
+ /* @__PURE__ */ c(
2276
+ "div",
2277
+ {
2278
+ ref: u,
2279
+ className: "p-4 h-48 overflow-y-auto font-mono text-xs space-y-1",
2280
+ children: [
2281
+ /* @__PURE__ */ e(We, { children: d.map((f, x) => /* @__PURE__ */ e(
2282
+ te.div,
2283
+ {
2284
+ initial: { opacity: 0, x: -10 },
2285
+ animate: { opacity: 1, x: 0 },
2286
+ className: jr(f, a),
2287
+ children: me(f)
2288
+ },
2289
+ `${me(f)}-${x}`
2290
+ )) }),
2291
+ /* @__PURE__ */ e("span", { className: "inline-block w-2 h-4 bg-primary animate-cursor-blink" })
2292
+ ]
2293
+ }
2294
+ )
2295
+ ]
2296
+ }
2297
+ );
2298
+ }
2299
+ );
2300
+ zr.displayName = "DataStream";
2301
+ const Gr = T(
2302
+ "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",
2303
+ {
2304
+ variants: {
2305
+ variant: {
2306
+ default: "border-primary/40 text-primary bg-primary/10",
2307
+ success: "border-ef-green/40 text-ef-green bg-ef-green/10",
2308
+ warning: "border-ef-yellow/40 text-ef-yellow bg-ef-yellow/10",
2309
+ danger: "border-ef-red/40 text-ef-red bg-ef-red/10",
2310
+ info: "border-ef-cyan/40 text-ef-cyan bg-ef-cyan/10"
2311
+ }
2312
+ },
2313
+ defaultVariants: {
2314
+ variant: "default"
2315
+ }
2316
+ }
2317
+ ), Ur = i.forwardRef(({ variant: t, className: r, children: a, ...o }, n) => /* @__PURE__ */ c(
2318
+ "span",
2319
+ {
2320
+ ref: n,
2321
+ className: s(Gr({ variant: t }), r),
2322
+ ...o,
2323
+ children: [
2324
+ /* @__PURE__ */ e("span", { style: { fontSize: "6px" }, children: "◆" }),
2325
+ a
2326
+ ]
2327
+ }
2328
+ ));
2329
+ Ur.displayName = "TacticalBadge";
2330
+ const Hr = {
2331
+ caution: {
2332
+ border: "border-ef-yellow/30",
2333
+ bg: "bg-ef-yellow/5",
2334
+ icon: "text-ef-yellow",
2335
+ label: "CAUTION"
2336
+ },
2337
+ alert: {
2338
+ border: "border-ef-orange/30",
2339
+ bg: "bg-ef-orange/5",
2340
+ icon: "text-ef-orange",
2341
+ label: "ALERT"
2342
+ },
2343
+ critical: {
2344
+ border: "border-ef-red/30",
2345
+ bg: "bg-ef-red/5",
2346
+ icon: "text-ef-red",
2347
+ label: "CRITICAL"
2348
+ }
2349
+ }, Yr = i.forwardRef(({ level: t = "caution", children: r, className: a }, o) => {
2350
+ const n = Hr[t];
2351
+ return /* @__PURE__ */ c(
2352
+ "div",
2353
+ {
2354
+ ref: o,
2355
+ className: `clip-corner border ${n.border} ${n.bg} p-4 flex items-start gap-3${a ? ` ${a}` : ""}`,
2356
+ children: [
2357
+ /* @__PURE__ */ e(Ge, { className: `w-5 h-5 ${n.icon} shrink-0 mt-0.5` }),
2358
+ /* @__PURE__ */ c("div", { children: [
2359
+ /* @__PURE__ */ e(
2360
+ "span",
2361
+ {
2362
+ className: `font-display text-[11px] font-bold tracking-[0.15em] ${n.icon}`,
2363
+ children: n.label
2364
+ }
2365
+ ),
2366
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground mt-1", children: r })
2367
+ ] })
2368
+ ]
2369
+ }
2370
+ );
2371
+ });
2372
+ Yr.displayName = "WarningBanner";
2373
+ const Wr = i.forwardRef(
2374
+ ({ label: t, className: r }, a) => /* @__PURE__ */ c(
2375
+ "div",
2376
+ {
2377
+ ref: a,
2378
+ className: `relative flex items-center gap-4 py-2${r ? ` ${r}` : ""}`,
2379
+ children: [
2380
+ /* @__PURE__ */ e("div", { className: "flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent" }),
2381
+ t && /* @__PURE__ */ c("span", { className: "font-display text-[10px] font-bold tracking-[0.2em] uppercase text-primary/60 flex items-center gap-2", children: [
2382
+ /* @__PURE__ */ e("span", { style: { fontSize: "6px" }, children: "◆" }),
2383
+ " ",
2384
+ t,
2385
+ " ",
2386
+ /* @__PURE__ */ e("span", { style: { fontSize: "6px" }, children: "◆" })
2387
+ ] }),
2388
+ /* @__PURE__ */ e("div", { className: "flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent" })
2389
+ ]
2390
+ }
2391
+ )
2392
+ );
2393
+ Wr.displayName = "ScanDivider";
2394
+ const qr = i.forwardRef(({ label: t, value: r, unit: a, className: o }, n) => /* @__PURE__ */ c(
2395
+ "div",
2396
+ {
2397
+ ref: n,
2398
+ className: `inline-flex items-center border border-border bg-surface-0 overflow-hidden${o ? ` ${o}` : ""}`,
2399
+ children: [
2400
+ /* @__PURE__ */ e("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 }),
2401
+ /* @__PURE__ */ e("span", { className: "font-mono text-xs text-primary px-2.5 py-1.5 font-bold", children: r }),
2402
+ a && /* @__PURE__ */ e("span", { className: "font-mono text-[10px] text-muted-foreground pr-2.5", children: a })
2403
+ ]
2404
+ }
2405
+ ));
2406
+ qr.displayName = "CoordinateTag";
2407
+ function L(t, r, a, o, n) {
2408
+ return {
2409
+ x: t + a * Math.sin(n * o),
2410
+ y: r - a * Math.cos(n * o)
2411
+ };
2412
+ }
2413
+ function Q(t) {
2414
+ return t.map((r) => `${r.x},${r.y}`).join(" ");
2415
+ }
2416
+ const Kr = i.forwardRef(
2417
+ ({
2418
+ data: t,
2419
+ color: r = "primary",
2420
+ axes: a,
2421
+ datasets: o,
2422
+ showLegend: n = !1,
2423
+ size: l = 260,
2424
+ className: p,
2425
+ ...d
2426
+ }, m) => {
2427
+ const u = i.useRef(null), f = qe(u, { once: !0 }), x = i.useCallback(
2428
+ (w) => {
2429
+ u.current = w, typeof m == "function" ? m(w) : m && (m.current = w);
2430
+ },
2431
+ [m]
2432
+ ), b = a ?? (t == null ? void 0 : t.map((w) => ({ label: w.label, min: 0, max: 100 }))) ?? [], h = o ?? (t ? [
2433
+ {
2434
+ label: void 0,
2435
+ values: t.map((w) => w.value),
2436
+ color: r === "cyan" ? "hsl(var(--ef-cyan))" : "hsl(var(--primary))"
2437
+ }
2438
+ ] : []), y = b.length;
2439
+ if (y < 3) return null;
2440
+ const N = l / 2, g = l / 2, v = l * 0.38, S = 4, E = Math.PI * 2 / y, _ = Array.from({ length: S }, (w, k) => {
2441
+ const R = v * ((k + 1) / S);
2442
+ return Q(
2443
+ b.map((O, C) => L(N, g, R, E, C))
2444
+ );
2445
+ }), G = b.map(
2446
+ (w, k) => L(N, g, v, E, k)
2447
+ ), I = h.map((w) => {
2448
+ const k = b.map((R, O) => {
2449
+ const C = R.min ?? 0, M = R.max ?? 100, U = M > C ? (w.values[O] - C) / (M - C) : 0;
2450
+ return L(
2451
+ N,
2452
+ g,
2453
+ Math.max(0, Math.min(1, U)) * v,
2454
+ E,
2455
+ O
2456
+ );
2457
+ });
2458
+ return {
2459
+ ds: w,
2460
+ path: Q(k),
2461
+ center: Q(b.map(() => ({ x: N, y: g })))
2462
+ };
2463
+ }), V = [
2464
+ "hsl(var(--primary))",
2465
+ "hsl(var(--ef-blue))",
2466
+ "hsl(var(--ef-green))"
2467
+ ];
2468
+ return /* @__PURE__ */ c(
2469
+ "div",
2470
+ {
2471
+ ref: x,
2472
+ className: s("flex flex-col items-center w-full", p),
2473
+ ...d,
2474
+ children: [
2475
+ /* @__PURE__ */ c(
2476
+ "svg",
2477
+ {
2478
+ viewBox: `0 0 ${l} ${l}`,
2479
+ className: "w-full max-w-[260px] h-auto overflow-visible",
2480
+ children: [
2481
+ _.map((w, k) => /* @__PURE__ */ e(
2482
+ "polygon",
2483
+ {
2484
+ points: w,
2485
+ fill: "none",
2486
+ stroke: "hsl(var(--border))",
2487
+ strokeWidth: 1,
2488
+ opacity: 0.5
2489
+ },
2490
+ k
2491
+ )),
2492
+ G.map((w, k) => /* @__PURE__ */ e(
2493
+ "line",
2494
+ {
2495
+ x1: N,
2496
+ y1: g,
2497
+ x2: w.x,
2498
+ y2: w.y,
2499
+ stroke: "hsl(var(--border))",
2500
+ strokeWidth: 1,
2501
+ opacity: 0.3
2502
+ },
2503
+ k
2504
+ )),
2505
+ I.map(({ ds: w, path: k, center: R }, O) => {
2506
+ const C = w.color ?? V[O % V.length], M = w.fillOpacity ?? 0.15;
2507
+ return /* @__PURE__ */ e(
2508
+ te.polygon,
2509
+ {
2510
+ points: f ? k : R,
2511
+ fill: C,
2512
+ fillOpacity: M,
2513
+ stroke: C,
2514
+ strokeWidth: 2,
2515
+ initial: !1,
2516
+ animate: { points: f ? k : R },
2517
+ transition: {
2518
+ duration: 0.8,
2519
+ ease: [0.25, 0.8, 0.25, 1],
2520
+ delay: O * 0.1
2521
+ },
2522
+ style: {
2523
+ filter: `drop-shadow(0 0 8px ${C.replace(")", " / 0.3)")})`
2524
+ }
2525
+ },
2526
+ O
2527
+ );
2528
+ }),
2529
+ I[0] && (() => {
2530
+ const { ds: w, path: k } = I[0], R = w.color ?? V[0];
2531
+ return b.map((O, C) => {
2532
+ const M = O.min ?? 0, U = O.max ?? 100, Pe = U > M ? (w.values[C] - M) / (U - M) : 0, ae = L(
2533
+ N,
2534
+ g,
2535
+ Math.max(0, Math.min(1, Pe)) * v,
2536
+ E,
2537
+ C
2538
+ );
2539
+ return /* @__PURE__ */ e(
2540
+ te.circle,
2541
+ {
2542
+ cx: N,
2543
+ cy: g,
2544
+ r: 4,
2545
+ fill: R,
2546
+ stroke: "hsl(var(--background))",
2547
+ strokeWidth: 2,
2548
+ initial: !1,
2549
+ animate: {
2550
+ cx: f ? ae.x : N,
2551
+ cy: f ? ae.y : g
2552
+ },
2553
+ transition: { duration: 0.8, delay: C * 0.05 },
2554
+ style: {
2555
+ filter: `drop-shadow(0 0 4px ${R.replace(")", " / 0.5)")})`
2556
+ }
2557
+ },
2558
+ C
2559
+ );
2560
+ });
2561
+ })(),
2562
+ b.map((w, k) => {
2563
+ const R = L(N, g, v + 20, E, k);
2564
+ return /* @__PURE__ */ e(
2565
+ "text",
2566
+ {
2567
+ x: R.x,
2568
+ y: R.y,
2569
+ textAnchor: "middle",
2570
+ dominantBaseline: "middle",
2571
+ className: "font-display text-[9px] font-bold tracking-[0.1em] uppercase",
2572
+ fill: "hsl(var(--muted-foreground))",
2573
+ children: w.label
2574
+ },
2575
+ k
2576
+ );
2577
+ })
2578
+ ]
2579
+ }
2580
+ ),
2581
+ n && h.some((w) => w.label) && /* @__PURE__ */ e("div", { className: "flex items-center gap-4 mt-3", children: h.map((w, k) => {
2582
+ if (!w.label) return null;
2583
+ const R = w.color ?? V[k % V.length];
2584
+ return /* @__PURE__ */ c("div", { className: "flex items-center gap-1.5", children: [
2585
+ /* @__PURE__ */ e(
2586
+ "span",
2587
+ {
2588
+ className: "inline-block w-2.5 h-2.5",
2589
+ style: { backgroundColor: R }
2590
+ }
2591
+ ),
2592
+ /* @__PURE__ */ e("span", { className: "font-mono text-[11px] text-muted-foreground uppercase tracking-wider", children: w.label })
2593
+ ] }, k);
2594
+ }) })
2595
+ ]
2596
+ }
2597
+ );
2598
+ }
2599
+ );
2600
+ Kr.displayName = "RadarChart";
2601
+ const fe = {
2602
+ sm: "w-5 h-5",
2603
+ md: "w-8 h-8",
2604
+ lg: "w-12 h-12"
2605
+ }, Xr = i.forwardRef(
2606
+ ({
2607
+ children: t,
2608
+ systemLabel: r = "SYS::ENDFIELD v2.0",
2609
+ lat: a = "LAT 37.7749°N",
2610
+ lon: o = "LON 122.4194°W",
2611
+ showCoords: n = !0,
2612
+ showCrosshair: l = !0,
2613
+ showScanlines: p = !0,
2614
+ showNoise: d = !1,
2615
+ bracketSize: m = "md",
2616
+ className: u,
2617
+ ...f
2618
+ }, x) => {
2619
+ const [b, h] = i.useState("");
2620
+ i.useEffect(() => {
2621
+ const N = () => h((/* @__PURE__ */ new Date()).toLocaleTimeString("en-GB"));
2622
+ N();
2623
+ const g = setInterval(N, 1e3);
2624
+ return () => clearInterval(g);
2625
+ }, []);
2626
+ const y = fe[m] ?? fe.md;
2627
+ return /* @__PURE__ */ c(
2628
+ "div",
2629
+ {
2630
+ ref: x,
2631
+ className: s(
2632
+ "relative border border-border bg-surface-0 aspect-video flex items-center justify-center overflow-hidden",
2633
+ u
2634
+ ),
2635
+ ...f,
2636
+ children: [
2637
+ p && /* @__PURE__ */ e("div", { className: "absolute inset-0 scanline-overlay pointer-events-none" }),
2638
+ d && /* @__PURE__ */ e(
2639
+ "div",
2640
+ {
2641
+ className: "absolute inset-0 pointer-events-none noise-overlay",
2642
+ style: {
2643
+ backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E")`,
2644
+ backgroundRepeat: "repeat",
2645
+ backgroundSize: "200px 200px",
2646
+ opacity: 0.6
2647
+ }
2648
+ }
2649
+ ),
2650
+ [
2651
+ ["top-3 left-3", "border-t-2 border-l-2"],
2652
+ ["top-3 right-3", "border-t-2 border-r-2"],
2653
+ ["bottom-3 left-3", "border-b-2 border-l-2"],
2654
+ ["bottom-3 right-3", "border-b-2 border-r-2"]
2655
+ ].map(([N, g], v) => /* @__PURE__ */ e(
2656
+ "div",
2657
+ {
2658
+ className: s(
2659
+ "absolute border-primary/40 pointer-events-none",
2660
+ y,
2661
+ N,
2662
+ g
2663
+ )
2664
+ },
2665
+ v
2666
+ )),
2667
+ l && /* @__PURE__ */ c("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none", children: [
2668
+ /* @__PURE__ */ e(
694
2669
  "div",
695
2670
  {
696
2671
  className: "w-6 h-px bg-primary/20",
697
2672
  style: { position: "absolute", top: "50%", left: "-12px" }
698
2673
  }
699
2674
  ),
700
- /* @__PURE__ */ t(
2675
+ /* @__PURE__ */ e(
701
2676
  "div",
702
2677
  {
703
2678
  className: "h-6 w-px bg-primary/20",
@@ -705,70 +2680,1010 @@ const Ee = n.forwardRef(
705
2680
  }
706
2681
  )
707
2682
  ] }),
708
- s && /* @__PURE__ */ i("div", { className: "absolute top-4 left-12 font-mono text-[9px] text-muted-foreground/60 space-y-0.5", children: [
709
- /* @__PURE__ */ t("div", { children: r }),
710
- /* @__PURE__ */ t("div", { className: "text-primary/60", children: b })
2683
+ n && /* @__PURE__ */ c("div", { className: "absolute top-4 left-12 font-mono text-[9px] text-muted-foreground/60 space-y-0.5", children: [
2684
+ /* @__PURE__ */ e("div", { children: r }),
2685
+ /* @__PURE__ */ e("div", { className: "text-primary/60", children: b })
711
2686
  ] }),
712
- s && /* @__PURE__ */ i("div", { className: "absolute top-4 right-12 font-mono text-[9px] text-muted-foreground/60 text-right space-y-0.5", children: [
713
- /* @__PURE__ */ t("div", { children: o }),
714
- /* @__PURE__ */ t("div", { children: a })
2687
+ n && /* @__PURE__ */ c("div", { className: "absolute top-4 right-12 font-mono text-[9px] text-muted-foreground/60 text-right space-y-0.5", children: [
2688
+ /* @__PURE__ */ e("div", { children: a }),
2689
+ /* @__PURE__ */ e("div", { children: o })
715
2690
  ] }),
716
- /* @__PURE__ */ i("div", { className: "absolute bottom-4 left-12 right-12 flex items-center justify-between", children: [
717
- /* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
718
- /* @__PURE__ */ t(
2691
+ /* @__PURE__ */ c("div", { className: "absolute bottom-4 left-12 right-12 flex items-center justify-between", children: [
2692
+ /* @__PURE__ */ c("div", { className: "flex items-center gap-2", children: [
2693
+ /* @__PURE__ */ e(
719
2694
  "div",
720
2695
  {
721
2696
  className: "w-1.5 h-1.5 bg-ef-green",
722
- style: { clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)" }
2697
+ style: {
2698
+ clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"
2699
+ }
723
2700
  }
724
2701
  ),
725
- /* @__PURE__ */ t("span", { className: "font-mono text-[9px] text-ef-green/80", children: "LINK ACTIVE" })
2702
+ /* @__PURE__ */ e("span", { className: "font-mono text-[9px] text-ef-green/80", children: "LINK ACTIVE" })
726
2703
  ] }),
727
- /* @__PURE__ */ t("div", { className: "flex gap-4", children: ["FPS:60", "MEM:47%", "NET:12ms"].map((f) => /* @__PURE__ */ t(
2704
+ /* @__PURE__ */ e("div", { className: "flex gap-4", children: ["FPS:60", "MEM:47%", "NET:12ms"].map((N) => /* @__PURE__ */ e(
728
2705
  "span",
729
2706
  {
730
2707
  className: "font-mono text-[9px] text-muted-foreground/50",
731
- children: f
2708
+ children: N
732
2709
  },
733
- f
2710
+ N
734
2711
  )) })
735
2712
  ] }),
736
- /* @__PURE__ */ t("div", { className: "relative z-10", children: e })
2713
+ /* @__PURE__ */ e("div", { className: "relative z-10", children: t })
2714
+ ]
2715
+ }
2716
+ );
2717
+ }
2718
+ );
2719
+ Xr.displayName = "HUDOverlay";
2720
+ const Zr = T(
2721
+ [
2722
+ "relative bg-surface-1 border overflow-hidden transition-all duration-300",
2723
+ "before:absolute before:top-0 before:left-0 before:w-5 before:h-5",
2724
+ "before:border-t-2 before:border-l-2 before:border-primary/40 before:pointer-events-none",
2725
+ "after:absolute after:bottom-0 after:right-0 after:w-5 after:h-5",
2726
+ "after:border-b-2 after:border-r-2 after:border-primary/40 after:pointer-events-none"
2727
+ ].join(" "),
2728
+ {
2729
+ variants: {
2730
+ priority: {
2731
+ low: "border-white/8",
2732
+ medium: "border-ef-blue/30",
2733
+ high: "border-ef-orange/40",
2734
+ critical: "border-ef-red/50 shadow-[0_0_12px_rgba(255,71,87,0.1)]"
2735
+ },
2736
+ status: {
2737
+ active: "",
2738
+ completed: "opacity-70",
2739
+ failed: "opacity-60",
2740
+ pending: "border-dashed",
2741
+ classified: "border-primary/20"
2742
+ },
2743
+ clickable: {
2744
+ true: "cursor-pointer hover:-translate-y-0.5 hover:shadow-lg",
2745
+ false: ""
2746
+ }
2747
+ },
2748
+ defaultVariants: { priority: "medium", status: "active", clickable: !1 }
2749
+ }
2750
+ ), Qr = {
2751
+ active: {
2752
+ label: "ACTIVE",
2753
+ cls: "text-ef-green border-ef-green/40 bg-ef-green/10"
2754
+ },
2755
+ completed: {
2756
+ label: "COMPLETED",
2757
+ cls: "text-muted-foreground border-white/20 bg-white/5"
2758
+ },
2759
+ failed: {
2760
+ label: "FAILED",
2761
+ cls: "text-destructive border-destructive/40 bg-destructive/10"
2762
+ },
2763
+ pending: {
2764
+ label: "PENDING",
2765
+ cls: "text-ef-orange border-ef-orange/40 bg-ef-orange/10"
2766
+ },
2767
+ classified: {
2768
+ label: "CLASSIFIED",
2769
+ cls: "text-primary border-primary/40 bg-primary/10"
2770
+ }
2771
+ }, Jr = {
2772
+ low: { label: "LOW", cls: "text-muted-foreground" },
2773
+ medium: { label: "MEDIUM", cls: "text-ef-blue" },
2774
+ high: { label: "HIGH", cls: "text-ef-orange" },
2775
+ critical: { label: "CRITICAL", cls: "text-destructive" }
2776
+ }, ea = i.forwardRef(
2777
+ ({
2778
+ className: t,
2779
+ title: r,
2780
+ missionId: a,
2781
+ description: o,
2782
+ status: n = "active",
2783
+ priority: l = "medium",
2784
+ date: p,
2785
+ progress: d,
2786
+ tags: m,
2787
+ onClick: u,
2788
+ ...f
2789
+ }, x) => {
2790
+ const b = Qr[n], h = Jr[l], y = !!u, N = (v) => {
2791
+ y && (v.key === "Enter" || v.key === " ") && (v.preventDefault(), u == null || u(v));
2792
+ }, g = d !== void 0 ? Math.min(100, Math.max(0, d)) : void 0;
2793
+ return /* @__PURE__ */ c(
2794
+ "div",
2795
+ {
2796
+ ref: x,
2797
+ role: y ? "button" : "article",
2798
+ "aria-label": `Mission: ${r}`,
2799
+ tabIndex: y ? 0 : void 0,
2800
+ onClick: u,
2801
+ onKeyDown: N,
2802
+ className: s(
2803
+ Zr({ priority: l, status: n, clickable: y }),
2804
+ t
2805
+ ),
2806
+ ...f,
2807
+ children: [
2808
+ /* @__PURE__ */ c("div", { className: "flex items-center justify-between px-4 py-2.5 border-b border-white/8 bg-surface-0", children: [
2809
+ /* @__PURE__ */ c(
2810
+ "span",
2811
+ {
2812
+ className: s(
2813
+ "font-mono text-[10px] font-semibold tracking-[0.1em] uppercase",
2814
+ h.cls
2815
+ ),
2816
+ children: [
2817
+ "◆ PRIORITY: ",
2818
+ h.label
2819
+ ]
2820
+ }
2821
+ ),
2822
+ /* @__PURE__ */ e(
2823
+ "span",
2824
+ {
2825
+ className: s(
2826
+ "font-mono text-[10px] font-semibold tracking-[0.1em] uppercase border px-2 py-0.5",
2827
+ b.cls
2828
+ ),
2829
+ children: b.label
2830
+ }
2831
+ )
2832
+ ] }),
2833
+ /* @__PURE__ */ c("div", { className: "px-4 pt-3 pb-2", children: [
2834
+ /* @__PURE__ */ e("h3", { className: "font-display text-[15px] font-bold uppercase tracking-wider text-foreground leading-tight", children: r }),
2835
+ a && /* @__PURE__ */ c("p", { className: "font-mono text-[11px] text-muted-foreground/60 mt-0.5", children: [
2836
+ "ID: ",
2837
+ a
2838
+ ] }),
2839
+ o && /* @__PURE__ */ e("p", { className: "text-[13px] text-muted-foreground mt-2 leading-relaxed", children: o })
2840
+ ] }),
2841
+ (p !== void 0 || g !== void 0 || m && m.length > 0) && /* @__PURE__ */ c("div", { className: "px-4 pb-3 pt-1 space-y-2", children: [
2842
+ g !== void 0 && /* @__PURE__ */ c("div", { className: "flex items-center gap-2", children: [
2843
+ /* @__PURE__ */ e("div", { className: "flex-1 h-1 bg-white/8 overflow-hidden", children: /* @__PURE__ */ e(
2844
+ "div",
2845
+ {
2846
+ className: "h-full bg-primary transition-all duration-500",
2847
+ style: { width: `${g}%` }
2848
+ }
2849
+ ) }),
2850
+ /* @__PURE__ */ c("span", { className: "font-mono text-[10px] text-muted-foreground shrink-0 w-8 text-right", children: [
2851
+ g,
2852
+ "%"
2853
+ ] })
2854
+ ] }),
2855
+ /* @__PURE__ */ c("div", { className: "flex items-center justify-between gap-2 flex-wrap", children: [
2856
+ p && /* @__PURE__ */ e("span", { className: "font-mono text-[11px] text-muted-foreground/60", children: p }),
2857
+ m && m.length > 0 && /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1 ml-auto", children: m.map((v) => /* @__PURE__ */ e(
2858
+ "span",
2859
+ {
2860
+ className: "font-mono text-[9px] uppercase tracking-wider border border-white/10 px-1.5 py-0.5 text-muted-foreground/60",
2861
+ children: v
2862
+ },
2863
+ v
2864
+ )) })
2865
+ ] })
2866
+ ] })
2867
+ ]
2868
+ }
2869
+ );
2870
+ }
2871
+ );
2872
+ ea.displayName = "MissionCard";
2873
+ const ue = {
2874
+ 1: "text-white/40",
2875
+ 2: "text-ef-green/70",
2876
+ 3: "text-ef-blue/80",
2877
+ 4: "text-ef-purple",
2878
+ 5: "text-ef-orange",
2879
+ 6: "text-primary"
2880
+ }, xe = {
2881
+ default: "bg-primary",
2882
+ success: "bg-ef-green",
2883
+ danger: "bg-destructive",
2884
+ info: "bg-ef-blue"
2885
+ }, ge = T(
2886
+ [
2887
+ "relative bg-surface-1 border border-white/8 overflow-hidden transition-all duration-300",
2888
+ "before:absolute before:top-0 before:left-0 before:w-5 before:h-5",
2889
+ "before:border-t-2 before:border-l-2 before:border-primary/40 before:pointer-events-none"
2890
+ ].join(" "),
2891
+ {
2892
+ variants: {
2893
+ size: {
2894
+ compact: "flex gap-3 p-3",
2895
+ default: "p-4"
2896
+ }
2897
+ },
2898
+ defaultVariants: { size: "default" }
2899
+ }
2900
+ );
2901
+ function he({
2902
+ src: t,
2903
+ name: r,
2904
+ initials: a,
2905
+ sizeClass: o
2906
+ }) {
2907
+ return /* @__PURE__ */ e(
2908
+ "div",
2909
+ {
2910
+ className: s(
2911
+ "shrink-0 bg-surface-2 flex items-center justify-center",
2912
+ "font-display font-bold uppercase text-primary",
2913
+ o
2914
+ ),
2915
+ style: {
2916
+ clipPath: "polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%)"
2917
+ },
2918
+ children: t ? /* @__PURE__ */ e("img", { src: t, alt: r, className: "w-full h-full object-cover" }) : /* @__PURE__ */ e("span", { children: a ?? r.slice(0, 2) })
2919
+ }
2920
+ );
2921
+ }
2922
+ function be({ rarity: t }) {
2923
+ const r = ue[t] ?? ue[3];
2924
+ return /* @__PURE__ */ c(
2925
+ "span",
2926
+ {
2927
+ className: "font-mono text-[11px]",
2928
+ "aria-label": `${t} star${t !== 1 ? "s" : ""}`,
2929
+ children: [
2930
+ Array.from({ length: t }).map((a, o) => /* @__PURE__ */ e("span", { className: r, children: "◆" }, `f-${o}`)),
2931
+ Array.from({ length: 6 - t }).map((a, o) => /* @__PURE__ */ e("span", { className: "text-white/15", children: "◇" }, `e-${o}`))
2932
+ ]
2933
+ }
2934
+ );
2935
+ }
2936
+ function ta({ label: t }) {
2937
+ return /* @__PURE__ */ c(
2938
+ "span",
2939
+ {
2940
+ className: [
2941
+ "inline-flex items-center gap-1.5 clip-corner-sm border",
2942
+ "px-2.5 py-0.5 font-display text-[10px] font-bold tracking-[0.15em] uppercase",
2943
+ "border-primary/40 text-primary bg-primary/10"
2944
+ ].join(" "),
2945
+ children: [
2946
+ /* @__PURE__ */ e("span", { style: { fontSize: "6px" }, children: "◆" }),
2947
+ t
2948
+ ]
2949
+ }
2950
+ );
2951
+ }
2952
+ const ra = i.forwardRef(
2953
+ ({
2954
+ className: t,
2955
+ name: r,
2956
+ operatorClass: a,
2957
+ rarity: o = 3,
2958
+ avatarSrc: n,
2959
+ initials: l,
2960
+ stats: p,
2961
+ faction: d,
2962
+ tags: m,
2963
+ size: u,
2964
+ ...f
2965
+ }, x) => {
2966
+ const b = Math.min(6, Math.max(1, o));
2967
+ return u === "compact" ? /* @__PURE__ */ c(
2968
+ "div",
2969
+ {
2970
+ ref: x,
2971
+ className: s(ge({ size: u }), t),
2972
+ ...f,
2973
+ children: [
2974
+ /* @__PURE__ */ e(
2975
+ he,
2976
+ {
2977
+ src: n,
2978
+ name: r,
2979
+ initials: l,
2980
+ sizeClass: "w-12 h-12 text-sm"
2981
+ }
2982
+ ),
2983
+ /* @__PURE__ */ c("div", { className: "flex-1 min-w-0 py-0.5", children: [
2984
+ /* @__PURE__ */ e("p", { className: "font-display text-[13px] font-bold uppercase tracking-wider text-foreground truncate", children: r }),
2985
+ a && /* @__PURE__ */ c("p", { className: "font-mono text-[10px] text-muted-foreground mt-0.5", children: [
2986
+ "◆ ",
2987
+ a.toUpperCase()
2988
+ ] }),
2989
+ /* @__PURE__ */ e("div", { className: "mt-1", children: /* @__PURE__ */ e(be, { rarity: b }) })
2990
+ ] })
2991
+ ]
2992
+ }
2993
+ ) : /* @__PURE__ */ c(
2994
+ "div",
2995
+ {
2996
+ ref: x,
2997
+ className: s(ge({ size: u }), t),
2998
+ ...f,
2999
+ children: [
3000
+ /* @__PURE__ */ c("div", { className: "flex items-start gap-4 mb-3", children: [
3001
+ /* @__PURE__ */ e(
3002
+ he,
3003
+ {
3004
+ src: n,
3005
+ name: r,
3006
+ initials: l,
3007
+ sizeClass: "w-20 h-20 text-xl"
3008
+ }
3009
+ ),
3010
+ /* @__PURE__ */ c("div", { className: "flex-1 min-w-0 pt-1", children: [
3011
+ /* @__PURE__ */ e("h3", { className: "font-display text-[16px] font-bold uppercase tracking-wider text-foreground leading-tight", children: r }),
3012
+ d && /* @__PURE__ */ e("p", { className: "font-mono text-[10px] text-muted-foreground/60 mt-0.5 uppercase tracking-wider", children: d }),
3013
+ a && /* @__PURE__ */ e("div", { className: "mt-1.5", children: /* @__PURE__ */ e(ta, { label: a }) }),
3014
+ /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e(be, { rarity: b }) })
3015
+ ] })
3016
+ ] }),
3017
+ m && m.length > 0 && /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1 mb-3", children: m.map((h) => /* @__PURE__ */ e(
3018
+ "span",
3019
+ {
3020
+ className: "font-mono text-[9px] uppercase tracking-wider border border-white/10 px-1.5 py-0.5 text-muted-foreground/60",
3021
+ children: h
3022
+ },
3023
+ h
3024
+ )) }),
3025
+ p && p.length > 0 && /* @__PURE__ */ e("div", { className: "space-y-2 pt-2 border-t border-white/6", children: p.map((h) => {
3026
+ const y = h.max ?? h.value, N = y > 0 ? Math.min(100, h.value / y * 100) : 0, g = xe[h.color ?? "default"] ?? xe.default;
3027
+ return /* @__PURE__ */ c("div", { className: "flex items-center gap-2", children: [
3028
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] uppercase tracking-wider text-muted-foreground w-8 shrink-0", children: h.label }),
3029
+ /* @__PURE__ */ e("div", { className: "flex-1 h-1 bg-white/8 overflow-hidden", children: /* @__PURE__ */ e(
3030
+ "div",
3031
+ {
3032
+ className: s("h-full transition-all duration-500", g),
3033
+ style: { width: `${N}%` }
3034
+ }
3035
+ ) }),
3036
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] text-muted-foreground/70 w-12 text-right shrink-0", children: h.value.toLocaleString() })
3037
+ ] }, h.label);
3038
+ }) })
3039
+ ]
3040
+ }
3041
+ );
3042
+ }
3043
+ );
3044
+ ra.displayName = "OperatorCard";
3045
+ const aa = T("flex items-center gap-1.5", {
3046
+ variants: {
3047
+ size: {
3048
+ sm: "[&>span.seg]:w-3 [&>span.seg]:h-2",
3049
+ md: "[&>span.seg]:w-4 [&>span.seg]:h-3",
3050
+ lg: "[&>span.seg]:w-6 [&>span.seg]:h-4"
3051
+ }
3052
+ },
3053
+ defaultVariants: { size: "md" }
3054
+ }), oa = T("seg transition-all duration-200", {
3055
+ variants: {
3056
+ variant: {
3057
+ health: "",
3058
+ energy: "",
3059
+ shield: "",
3060
+ experience: ""
3061
+ }
3062
+ },
3063
+ defaultVariants: { variant: "health" }
3064
+ }), ve = {
3065
+ health: "bg-ef-green",
3066
+ energy: "bg-primary",
3067
+ shield: "bg-ef-blue",
3068
+ experience: "bg-ef-purple"
3069
+ }, na = i.forwardRef(
3070
+ ({
3071
+ className: t,
3072
+ value: r,
3073
+ max: a = 100,
3074
+ segments: o = 10,
3075
+ label: n,
3076
+ showValue: l = !1,
3077
+ size: p,
3078
+ variant: d = "health",
3079
+ ...m
3080
+ }, u) => {
3081
+ const f = Math.min(a, Math.max(0, r)), x = a > 0 ? f / a : 0, b = Math.round(x * o), h = (y) => {
3082
+ if (y >= b) return "bg-white/8";
3083
+ if (d === "health") {
3084
+ if (x <= 0.15) return "bg-destructive";
3085
+ if (x <= 0.3) return "bg-ef-orange";
3086
+ }
3087
+ return ve[d ?? "health"] ?? ve.health;
3088
+ };
3089
+ return /* @__PURE__ */ c(
3090
+ "div",
3091
+ {
3092
+ ref: u,
3093
+ className: s("flex items-center gap-2", t),
3094
+ role: "meter",
3095
+ "aria-valuenow": f,
3096
+ "aria-valuemin": 0,
3097
+ "aria-valuemax": a,
3098
+ "aria-label": n ?? `${d} bar`,
3099
+ ...m,
3100
+ children: [
3101
+ n && /* @__PURE__ */ e("span", { className: "font-mono text-[10px] uppercase tracking-wider text-muted-foreground shrink-0", children: n }),
3102
+ /* @__PURE__ */ e("div", { className: s(aa({ size: p })), children: Array.from({ length: o }).map((y, N) => /* @__PURE__ */ e(
3103
+ "span",
3104
+ {
3105
+ className: s(
3106
+ oa({ variant: d }),
3107
+ h(N)
3108
+ )
3109
+ },
3110
+ N
3111
+ )) }),
3112
+ l && /* @__PURE__ */ c("span", { className: "font-mono text-[10px] text-muted-foreground shrink-0 ml-1", children: [
3113
+ f,
3114
+ "/",
3115
+ a
3116
+ ] })
3117
+ ]
3118
+ }
3119
+ );
3120
+ }
3121
+ );
3122
+ na.displayName = "StatusBar";
3123
+ const sa = {
3124
+ system: { prefix: "[SYS] ", color: "text-muted-foreground", ariaLive: "off" },
3125
+ info: { prefix: "[INFO]", color: "text-ef-blue", ariaLive: "off" },
3126
+ success: { prefix: "[OK] ", color: "text-ef-green", ariaLive: "polite" },
3127
+ warning: { prefix: "[WARN]", color: "text-ef-orange", ariaLive: "polite" },
3128
+ error: { prefix: "[ERR] ", color: "text-destructive", ariaLive: "assertive" }
3129
+ }, ia = i.forwardRef(
3130
+ ({
3131
+ className: t,
3132
+ entries: r,
3133
+ showHeader: a = !0,
3134
+ headerText: o = "TERMINAL",
3135
+ showCursor: n = !0,
3136
+ autoScroll: l = !0,
3137
+ maxHeight: p = "320px",
3138
+ showTimestamp: d = !1,
3139
+ ...m
3140
+ }, u) => {
3141
+ const f = i.useRef(null);
3142
+ return i.useEffect(() => {
3143
+ l && f.current && (f.current.scrollTop = f.current.scrollHeight);
3144
+ }, [r, l]), /* @__PURE__ */ c(
3145
+ "div",
3146
+ {
3147
+ ref: u,
3148
+ className: s(
3149
+ "bg-[#0F0F0F] border border-white/8 font-mono text-[13px]",
3150
+ t
3151
+ ),
3152
+ ...m,
3153
+ children: [
3154
+ a && /* @__PURE__ */ c("div", { className: "flex items-center gap-2 px-4 py-2 border-b border-white/8", children: [
3155
+ /* @__PURE__ */ c("div", { className: "flex gap-1", children: [
3156
+ /* @__PURE__ */ e("span", { className: "w-2.5 h-2.5 bg-white/10" }),
3157
+ /* @__PURE__ */ e("span", { className: "w-2.5 h-2.5 bg-white/10" }),
3158
+ /* @__PURE__ */ e("span", { className: "w-2.5 h-2.5 bg-white/10" })
3159
+ ] }),
3160
+ /* @__PURE__ */ e("span", { className: "font-mono text-[10px] text-muted-foreground/60 uppercase tracking-[0.15em] mx-auto", children: o })
3161
+ ] }),
3162
+ /* @__PURE__ */ c(
3163
+ "div",
3164
+ {
3165
+ ref: f,
3166
+ style: { maxHeight: p },
3167
+ className: "overflow-y-auto py-2 scrollbar-thin",
3168
+ role: "log",
3169
+ "aria-live": "polite",
3170
+ "aria-label": o,
3171
+ children: [
3172
+ r.length === 0 && /* @__PURE__ */ e("div", { className: "px-4 py-2 text-muted-foreground/40 text-[12px]", children: "No output." }),
3173
+ r.map((x, b) => {
3174
+ const h = sa[x.level], y = x.id ?? b;
3175
+ return /* @__PURE__ */ c(
3176
+ "div",
3177
+ {
3178
+ className: "flex gap-3 px-4 py-0.5 hover:bg-white/[0.02] transition-colors",
3179
+ children: [
3180
+ /* @__PURE__ */ e(
3181
+ "span",
3182
+ {
3183
+ className: s(
3184
+ "text-[11px] font-semibold shrink-0 select-none",
3185
+ "w-[54px]",
3186
+ h.color
3187
+ ),
3188
+ children: h.prefix
3189
+ }
3190
+ ),
3191
+ d && /* @__PURE__ */ e("span", { className: "text-[11px] text-muted-foreground/40 shrink-0", children: x.timestamp ?? (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace("T", "/") }),
3192
+ /* @__PURE__ */ e("span", { className: "text-[#E0E0E0] break-all", children: x.message })
3193
+ ]
3194
+ },
3195
+ y
3196
+ );
3197
+ }),
3198
+ n && /* @__PURE__ */ c("div", { className: "flex items-center gap-3 px-4 py-0.5 mt-0.5", children: [
3199
+ /* @__PURE__ */ e("span", { className: "w-[54px] shrink-0" }),
3200
+ /* @__PURE__ */ e(
3201
+ "span",
3202
+ {
3203
+ className: "inline-block w-2 h-4 bg-primary animate-pulse",
3204
+ "aria-hidden": !0
3205
+ }
3206
+ )
3207
+ ] })
3208
+ ]
3209
+ }
3210
+ )
3211
+ ]
3212
+ }
3213
+ );
3214
+ }
3215
+ );
3216
+ ia.displayName = "CommandOutput";
3217
+ const la = T(
3218
+ "font-display font-bold text-primary tabular-nums leading-none",
3219
+ {
3220
+ variants: {
3221
+ size: {
3222
+ sm: "text-2xl",
3223
+ md: "text-5xl",
3224
+ lg: "text-7xl"
3225
+ }
3226
+ },
3227
+ defaultVariants: { size: "md" }
3228
+ }
3229
+ ), da = T(
3230
+ "font-mono uppercase tracking-widest text-muted-foreground/60",
3231
+ {
3232
+ variants: {
3233
+ size: {
3234
+ sm: "text-[9px]",
3235
+ md: "text-[10px]",
3236
+ lg: "text-[11px]"
3237
+ }
3238
+ },
3239
+ defaultVariants: { size: "md" }
3240
+ }
3241
+ );
3242
+ function ye(t) {
3243
+ const r = Math.max(0, t - Date.now()), a = Math.floor(r / 1e3 % 60), o = Math.floor(r / 1e3 / 60 % 60), n = Math.floor(r / (1e3 * 60 * 60) % 24);
3244
+ return { days: Math.floor(r / (1e3 * 60 * 60 * 24)), hours: n, minutes: o, seconds: a, total: r };
3245
+ }
3246
+ function J(t) {
3247
+ return String(t).padStart(2, "0");
3248
+ }
3249
+ function H({
3250
+ value: t,
3251
+ unit: r,
3252
+ size: a
3253
+ }) {
3254
+ return /* @__PURE__ */ c("div", { className: "flex flex-col items-center gap-1", children: [
3255
+ /* @__PURE__ */ e("span", { className: la({ size: a }), children: t }),
3256
+ /* @__PURE__ */ e("span", { className: da({ size: a }), children: r })
3257
+ ] });
3258
+ }
3259
+ function ee({ size: t }) {
3260
+ return /* @__PURE__ */ e(
3261
+ "span",
3262
+ {
3263
+ className: s(
3264
+ "font-mono text-primary/30 font-bold select-none mb-4",
3265
+ t === "sm" ? "text-xl" : t === "lg" ? "text-5xl" : "text-3xl"
3266
+ ),
3267
+ children: ":"
3268
+ }
3269
+ );
3270
+ }
3271
+ const ca = i.forwardRef(
3272
+ ({
3273
+ className: t,
3274
+ targetDate: r,
3275
+ seconds: a,
3276
+ onComplete: o,
3277
+ label: n,
3278
+ autoHideZero: l = !1,
3279
+ showDays: p = !0,
3280
+ size: d,
3281
+ ...m
3282
+ }, u) => {
3283
+ const f = i.useMemo(() => r ? new Date(r).getTime() : a !== void 0 ? Date.now() + a * 1e3 : Date.now(), [r, a]), [x, b] = i.useState(
3284
+ () => ye(f)
3285
+ ), h = i.useRef(!1);
3286
+ i.useEffect(() => {
3287
+ h.current = !1;
3288
+ const g = () => {
3289
+ const S = ye(f);
3290
+ b(S), S.total === 0 && !h.current && (h.current = !0, o == null || o());
3291
+ };
3292
+ g();
3293
+ const v = setInterval(g, 1e3);
3294
+ return () => clearInterval(v);
3295
+ }, [f, o]);
3296
+ const y = i.useMemo(
3297
+ () => `Countdown: ${x.days} days ${x.hours} hours ${x.minutes} minutes ${x.seconds} seconds`,
3298
+ [x.days, x.hours, x.minutes]
3299
+ ), N = p && !(l && x.days === 0);
3300
+ return /* @__PURE__ */ c(
3301
+ "div",
3302
+ {
3303
+ ref: u,
3304
+ className: s("flex flex-col items-center gap-4", t),
3305
+ role: "timer",
3306
+ "aria-label": y,
3307
+ "aria-live": "off",
3308
+ ...m,
3309
+ children: [
3310
+ n && /* @__PURE__ */ e("p", { className: "font-mono text-[11px] uppercase tracking-widest text-muted-foreground", children: n }),
3311
+ /* @__PURE__ */ c("div", { className: "flex items-end gap-2", children: [
3312
+ N && /* @__PURE__ */ c(Le, { children: [
3313
+ /* @__PURE__ */ e(H, { value: String(x.days), unit: "DAYS", size: d }),
3314
+ /* @__PURE__ */ e(ee, { size: d })
3315
+ ] }),
3316
+ /* @__PURE__ */ e(H, { value: J(x.hours), unit: "HRS", size: d }),
3317
+ /* @__PURE__ */ e(ee, { size: d }),
3318
+ /* @__PURE__ */ e(H, { value: J(x.minutes), unit: "MIN", size: d }),
3319
+ /* @__PURE__ */ e(ee, { size: d }),
3320
+ /* @__PURE__ */ e(H, { value: J(x.seconds), unit: "SEC", size: d })
3321
+ ] })
737
3322
  ]
738
3323
  }
739
3324
  );
740
3325
  }
741
3326
  );
742
- Ee.displayName = "HUDOverlay";
3327
+ ca.displayName = "CountdownTimer";
3328
+ function pa({
3329
+ active: t,
3330
+ direction: r
3331
+ }) {
3332
+ return t ? /* @__PURE__ */ e("span", { className: "ml-1 text-primary text-[10px]", children: r === "asc" ? "▲" : "▼" }) : /* @__PURE__ */ e("span", { className: "ml-1 text-muted-foreground/20 text-[10px]", children: "↕" });
3333
+ }
3334
+ function ma({ colCount: t }) {
3335
+ return /* @__PURE__ */ e("tr", { children: Array.from({ length: t }).map((r, a) => /* @__PURE__ */ e("td", { className: "px-4 py-3 border-b border-white/[0.04]", children: /* @__PURE__ */ e(
3336
+ "div",
3337
+ {
3338
+ className: s(
3339
+ "h-3 bg-surface-2 animate-skeleton",
3340
+ a === 0 ? "w-3/4" : a % 3 === 0 ? "w-1/2" : "w-full"
3341
+ )
3342
+ }
3343
+ ) }, a)) });
3344
+ }
3345
+ const Ne = {
3346
+ left: "text-left",
3347
+ center: "text-center",
3348
+ right: "text-right"
3349
+ };
3350
+ function fa({
3351
+ className: t,
3352
+ columns: r,
3353
+ data: a,
3354
+ sortKey: o,
3355
+ sortDirection: n,
3356
+ onSort: l,
3357
+ selectable: p = !1,
3358
+ selectedIndices: d,
3359
+ onRowClick: m,
3360
+ loading: u = !1,
3361
+ skeletonRows: f = 4,
3362
+ emptyState: x,
3363
+ caption: b,
3364
+ ...h
3365
+ }, y) {
3366
+ const N = new Set(d ?? []);
3367
+ return /* @__PURE__ */ e(
3368
+ "div",
3369
+ {
3370
+ ref: y,
3371
+ className: s("w-full overflow-x-auto", t),
3372
+ ...h,
3373
+ children: /* @__PURE__ */ c("table", { className: "w-full border-collapse", role: "grid", children: [
3374
+ b && /* @__PURE__ */ e("caption", { className: "sr-only", children: b }),
3375
+ /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ e("tr", { children: r.map((g) => {
3376
+ const v = o === g.key;
3377
+ return /* @__PURE__ */ c(
3378
+ "th",
3379
+ {
3380
+ scope: "col",
3381
+ className: s(
3382
+ "px-4 py-3 border-b border-white/10 bg-surface-0 sticky top-0 z-10",
3383
+ "font-mono text-[11px] font-bold tracking-[0.12em] uppercase text-muted-foreground",
3384
+ g.width ?? "",
3385
+ Ne[g.align ?? "left"],
3386
+ g.sortable && "cursor-pointer select-none hover:text-foreground transition-colors"
3387
+ ),
3388
+ "aria-sort": g.sortable && v ? n === "asc" ? "ascending" : "descending" : void 0,
3389
+ onClick: g.sortable ? () => l == null ? void 0 : l(g.key) : void 0,
3390
+ children: [
3391
+ g.header,
3392
+ g.sortable && /* @__PURE__ */ e(
3393
+ pa,
3394
+ {
3395
+ active: v,
3396
+ direction: n
3397
+ }
3398
+ )
3399
+ ]
3400
+ },
3401
+ g.key
3402
+ );
3403
+ }) }) }),
3404
+ /* @__PURE__ */ e("tbody", { children: u ? Array.from({ length: f }).map((g, v) => /* @__PURE__ */ e(ma, { colCount: r.length }, v)) : a.length === 0 ? /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { colSpan: r.length, className: "px-4 py-12 text-center", children: x ?? /* @__PURE__ */ e("span", { className: "font-mono text-[12px] text-muted-foreground/40 uppercase tracking-wider", children: "NO DATA" }) }) }) : a.map((g, v) => {
3405
+ const S = p && N.has(v), E = v % 2 === 1;
3406
+ return /* @__PURE__ */ e(
3407
+ "tr",
3408
+ {
3409
+ "aria-selected": p ? S : void 0,
3410
+ onClick: p ? () => m == null ? void 0 : m(g, v) : void 0,
3411
+ className: s(
3412
+ "transition-colors",
3413
+ S ? "bg-primary/[0.06]" : E ? "bg-white/[0.015] hover:bg-primary/[0.03]" : "hover:bg-primary/[0.03]",
3414
+ p && "cursor-pointer"
3415
+ ),
3416
+ children: r.map((_) => /* @__PURE__ */ e(
3417
+ "td",
3418
+ {
3419
+ className: s(
3420
+ "px-4 py-3 text-[14px] text-foreground border-b border-white/[0.04]",
3421
+ Ne[_.align ?? "left"]
3422
+ ),
3423
+ children: _.cell ? _.cell(g, v) : g[_.key]
3424
+ },
3425
+ _.key
3426
+ ))
3427
+ },
3428
+ v
3429
+ );
3430
+ }) })
3431
+ ] })
3432
+ }
3433
+ );
3434
+ }
3435
+ const ua = i.forwardRef(fa);
3436
+ ua.displayName = "TacticalTable";
3437
+ const xa = i.forwardRef(
3438
+ ({
3439
+ className: t,
3440
+ cols: r = 20,
3441
+ rows: a = 10,
3442
+ dotSize: o = 4,
3443
+ gap: n = 8,
3444
+ activeColor: l = "bg-primary",
3445
+ activeProbability: p = 0.05,
3446
+ intervalMs: d = 300,
3447
+ static: m = !1,
3448
+ ...u
3449
+ }, f) => {
3450
+ const x = r * a, [b, h] = i.useState(
3451
+ () => /* @__PURE__ */ new Set()
3452
+ ), y = i.useMemo(() => typeof window > "u" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches, []);
3453
+ return i.useEffect(() => {
3454
+ if (m || y) return;
3455
+ const N = setInterval(() => {
3456
+ h((g) => {
3457
+ const v = new Set(g);
3458
+ for (let S = 0; S < x; S++)
3459
+ Math.random() < p && v.add(S);
3460
+ for (const S of v)
3461
+ Math.random() < 0.3 && v.delete(S);
3462
+ return v;
3463
+ });
3464
+ }, d);
3465
+ return () => clearInterval(N);
3466
+ }, [m, y, x, p, d]), /* @__PURE__ */ e(
3467
+ "div",
3468
+ {
3469
+ ref: f,
3470
+ className: s("overflow-hidden", t),
3471
+ "aria-hidden": "true",
3472
+ ...u,
3473
+ children: /* @__PURE__ */ e(
3474
+ "div",
3475
+ {
3476
+ style: {
3477
+ display: "grid",
3478
+ gridTemplateColumns: `repeat(${r}, ${o}px)`,
3479
+ gap: `${n}px`
3480
+ },
3481
+ children: Array.from({ length: x }).map((N, g) => /* @__PURE__ */ e(
3482
+ "div",
3483
+ {
3484
+ style: { width: o, height: o },
3485
+ className: s(
3486
+ "transition-opacity",
3487
+ m || y ? "duration-0" : "duration-500",
3488
+ b.has(g) ? s("opacity-100", l) : "opacity-10 bg-white"
3489
+ )
3490
+ },
3491
+ g
3492
+ ))
3493
+ }
3494
+ )
3495
+ }
3496
+ );
3497
+ }
3498
+ );
3499
+ xa.displayName = "MatrixGrid";
3500
+ const ga = T("flex items-end gap-px", {
3501
+ variants: {
3502
+ color: {
3503
+ primary: "[&>span]:bg-primary",
3504
+ success: "[&>span]:bg-ef-green",
3505
+ danger: "[&>span]:bg-destructive",
3506
+ info: "[&>span]:bg-ef-blue",
3507
+ muted: "[&>span]:bg-white/20"
3508
+ }
3509
+ },
3510
+ defaultVariants: { color: "primary" }
3511
+ }), we = {
3512
+ slow: "1.4s",
3513
+ medium: "0.8s",
3514
+ fast: "0.4s"
3515
+ }, ha = i.forwardRef(
3516
+ ({
3517
+ className: t,
3518
+ barCount: r = 12,
3519
+ barWidth: a = 3,
3520
+ height: o = 32,
3521
+ speed: n = "medium",
3522
+ paused: l = !1,
3523
+ color: p,
3524
+ style: d,
3525
+ ...m
3526
+ }, u) => {
3527
+ const f = we[n] ?? we.medium, x = i.useMemo(
3528
+ () => Array.from({ length: r }, (b, h) => ({
3529
+ delay: `${(h * 0.13 % 0.9).toFixed(2)}s`
3530
+ })),
3531
+ [r]
3532
+ );
3533
+ return /* @__PURE__ */ e(
3534
+ "div",
3535
+ {
3536
+ ref: u,
3537
+ className: s(ga({ color: p }), t),
3538
+ style: { height: o, ...d },
3539
+ "aria-hidden": "true",
3540
+ ...m,
3541
+ children: x.map((b, h) => /* @__PURE__ */ e(
3542
+ "span",
3543
+ {
3544
+ style: {
3545
+ display: "inline-block",
3546
+ width: a,
3547
+ height: "100%",
3548
+ transformOrigin: "center bottom",
3549
+ animation: `frequency-bar ${f} ease-in-out infinite alternate`,
3550
+ animationDelay: b.delay,
3551
+ animationPlayState: l ? "paused" : "running"
3552
+ }
3553
+ },
3554
+ h
3555
+ ))
3556
+ }
3557
+ );
3558
+ }
3559
+ );
3560
+ ha.displayName = "FrequencyBars";
743
3561
  export {
744
- we as CoordinateTag,
745
- xe as DataStream,
746
- pe as DiamondLoader,
747
- de as GlitchText,
748
- Ee as HUDOverlay,
749
- ge as HoloCard,
750
- Se as RadarChart,
751
- Te as ScanDivider,
752
- Me as SonnerToaster,
753
- ve as TacticalBadge,
754
- ue as TacticalPanel,
755
- M as Toast,
756
- re as ToastAction,
757
- V as ToastClose,
758
- U as ToastDescription,
759
- ee as ToastProvider,
760
- B as ToastTitle,
761
- _ as ToastViewport,
762
- _e as Toaster,
763
- Oe as Tooltip,
764
- J as TooltipContent,
765
- Le as TooltipProvider,
766
- Pe as TooltipTrigger,
767
- Ne as WarningBanner,
768
- x as cn,
769
- he as tacticalBadgeVariants,
770
- Ue as toast,
771
- ie as toastAction,
772
- le as useToast
3562
+ Gt as Accordion,
3563
+ Yt as AccordionContent,
3564
+ Ut as AccordionItem,
3565
+ Ht as AccordionTrigger,
3566
+ Nr as Alert,
3567
+ Lt as Avatar,
3568
+ Ft as AvatarFallback,
3569
+ $t as AvatarImage,
3570
+ it as Badge,
3571
+ Ir as Breadcrumb,
3572
+ nt as Button,
3573
+ ct as Card,
3574
+ xt as CardBody,
3575
+ ut as CardDescription,
3576
+ gt as CardFooter,
3577
+ pt as CardHeader,
3578
+ mt as CardMeta,
3579
+ ft as CardTitle,
3580
+ Tt as Checkbox,
3581
+ ia as CommandOutput,
3582
+ qr as CoordinateTag,
3583
+ ca as CountdownTimer,
3584
+ zr as DataStream,
3585
+ ar as Dialog,
3586
+ nr as DialogClose,
3587
+ ir as DialogContent,
3588
+ pr as DialogDescription,
3589
+ dr as DialogFooter,
3590
+ lr as DialogHeader,
3591
+ _e as DialogOverlay,
3592
+ Ee as DialogPortal,
3593
+ cr as DialogTitle,
3594
+ or as DialogTrigger,
3595
+ Vr as DiamondLoader,
3596
+ br as EmptyState,
3597
+ ha as FrequencyBars,
3598
+ Er as GlitchText,
3599
+ Xr as HUDOverlay,
3600
+ yt as HelperText,
3601
+ Lr as HoloCard,
3602
+ bt as Input,
3603
+ vt as Label,
3604
+ xa as MatrixGrid,
3605
+ ea as MissionCard,
3606
+ Ar as NumberInput,
3607
+ ra as OperatorCard,
3608
+ Rr as Pagination,
3609
+ Jt as Popover,
3610
+ tr as PopoverAnchor,
3611
+ rr as PopoverContent,
3612
+ er as PopoverTrigger,
3613
+ zt as Progress,
3614
+ Kr as RadarChart,
3615
+ kt as RadioGroup,
3616
+ St as RadioGroupItem,
3617
+ Wr as ScanDivider,
3618
+ It as Select,
3619
+ Et as SelectContent,
3620
+ Ct as SelectGroup,
3621
+ Vt as SelectItem,
3622
+ _t as SelectLabel,
3623
+ De as SelectScrollDownButton,
3624
+ Ae as SelectScrollUpButton,
3625
+ Ot as SelectSeparator,
3626
+ Dt as SelectTrigger,
3627
+ At as SelectValue,
3628
+ fr as Separator,
3629
+ Oe as SkeletonAvatar,
3630
+ gr as SkeletonCard,
3631
+ F as SkeletonLine,
3632
+ Ve as SkeletonText,
3633
+ Da as SonnerToaster,
3634
+ na as StatusBar,
3635
+ kr as Stepper,
3636
+ Rt as Switch,
3637
+ Wt as Tabs,
3638
+ Qt as TabsContent,
3639
+ Kt as TabsList,
3640
+ Zt as TabsTrigger,
3641
+ Ur as TacticalBadge,
3642
+ Pr as TacticalPanel,
3643
+ ua as TacticalTable,
3644
+ wt as Textarea,
3645
+ Tr as Timeline,
3646
+ Me as TimelineItem,
3647
+ Se as Toast,
3648
+ Qe as ToastAction,
3649
+ Re as ToastClose,
3650
+ Ce as ToastDescription,
3651
+ Xe as ToastProvider,
3652
+ Ie as ToastTitle,
3653
+ ke as ToastViewport,
3654
+ Aa as Toaster,
3655
+ Ia as Tooltip,
3656
+ Ke as TooltipContent,
3657
+ Ra as TooltipProvider,
3658
+ Ca as TooltipTrigger,
3659
+ Yr as WarningBanner,
3660
+ vr as alertVariants,
3661
+ Mt as avatarVariants,
3662
+ st as badgeVariants,
3663
+ le as buttonVariants,
3664
+ dt as cardVariants,
3665
+ s as cn,
3666
+ sr as dialogContentVariants,
3667
+ hr as emptyStateVariants,
3668
+ ga as frequencyBarsVariants,
3669
+ ht as inputWrapperVariants,
3670
+ Zr as missionCardVariants,
3671
+ Cr as numberInputVariants,
3672
+ ge as operatorCardVariants,
3673
+ Z as paginationItemVariants,
3674
+ jt as progressFillVariants,
3675
+ Bt as progressTrackVariants,
3676
+ mr as separatorVariants,
3677
+ ur as skeletonLineVariants,
3678
+ aa as statusBarContainerVariants,
3679
+ oa as statusBarSegmentVariants,
3680
+ qt as tabsListVariants,
3681
+ Xt as tabsTriggerVariants,
3682
+ Gr as tacticalBadgeVariants,
3683
+ Nt as textareaVariants,
3684
+ wr as timelineItemVariants,
3685
+ Va as toast,
3686
+ at as toastAction,
3687
+ ot as useToast
773
3688
  };
774
3689
  //# sourceMappingURL=index.mjs.map