astrogators-shared-ui 0.3.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.
@@ -4,14 +4,17 @@ export interface CardProps {
4
4
  children: React.ReactNode;
5
5
  variant?: 'default' | 'elevated' | 'outline';
6
6
  chamfered?: boolean;
7
- chamferSize?: 'sm' | 'md' | 'lg';
7
+ chamferSize?: 'sm' | 'md' | 'lg' | 'asymmetric';
8
8
  padding?: 'none' | 'sm' | 'md' | 'lg';
9
9
  hoverable?: boolean;
10
+ showDiagonalBorders?: boolean;
11
+ diagonalBorderColor?: string;
10
12
  className?: string;
11
13
  onClick?: () => void;
14
+ style?: React.CSSProperties;
12
15
  }
13
16
  /**
14
17
  * Card component
15
- * Container for content with optional chamfered corners
18
+ * Container for content with optional chamfered corners and diagonal borders
16
19
  */
17
20
  export declare const Card: React.FC<CardProps>;
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var me = Object.defineProperty;
2
- var he = (e, t, s) => t in e ? me(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
1
+ var ue = Object.defineProperty;
2
+ var he = (e, t, s) => t in e ? ue(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
3
3
  var R = (e, t, s) => he(e, typeof t != "symbol" ? t + "" : t, s);
4
- import { jsx as r, jsxs as m } from "react/jsx-runtime";
5
- import re, { createContext as ge, useState as $, useEffect as U, useCallback as S, useContext as pe } from "react";
6
- const fe = "_container_u3o0e_1", ye = "_padding_u3o0e_7", X = {
7
- container: fe,
8
- padding: ye,
4
+ import { jsx as r, jsxs as m, Fragment as ge } from "react/jsx-runtime";
5
+ import ne, { createContext as fe, useState as b, useEffect as U, useCallback as S, useContext as pe } from "react";
6
+ const ye = "_container_u3o0e_1", ve = "_padding_u3o0e_7", X = {
7
+ container: ye,
8
+ padding: ve,
9
9
  "maxWidth-sm": "_maxWidth-sm_u3o0e_12",
10
10
  "maxWidth-md": "_maxWidth-md_u3o0e_16",
11
11
  "maxWidth-lg": "_maxWidth-lg_u3o0e_20",
12
12
  "maxWidth-xl": "_maxWidth-xl_u3o0e_24",
13
13
  "maxWidth-full": "_maxWidth-full_u3o0e_28"
14
- }, fs = ({
14
+ }, ys = ({
15
15
  children: e,
16
16
  maxWidth: t = "xl",
17
17
  padding: s = !0,
@@ -22,138 +22,138 @@ const fe = "_container_u3o0e_1", ye = "_padding_u3o0e_7", X = {
22
22
  className: `${X.container} ${X[`maxWidth-${t}`]} ${s ? X.padding : ""} ${o}`,
23
23
  children: e
24
24
  }
25
- ), ve = "_topBar_10g3c_1", $e = "_content_10g3c_13", we = "_left_10g3c_23", be = "_right_10g3c_30", Ne = "_logo_10g3c_36", B = {
26
- topBar: ve,
27
- content: $e,
25
+ ), $e = "_topBar_10g3c_1", be = "_content_10g3c_13", we = "_left_10g3c_23", Ne = "_right_10g3c_30", Ae = "_logo_10g3c_36", P = {
26
+ topBar: $e,
27
+ content: be,
28
28
  left: we,
29
- right: be,
30
- logo: Ne
31
- }, ys = ({
29
+ right: Ne,
30
+ logo: Ae
31
+ }, vs = ({
32
32
  logo: e,
33
33
  leftContent: t,
34
34
  rightContent: s,
35
35
  className: o = ""
36
- }) => /* @__PURE__ */ r("header", { className: `${B.topBar} ${o}`, children: /* @__PURE__ */ m("div", { className: B.content, children: [
37
- /* @__PURE__ */ m("div", { className: B.left, children: [
38
- e && /* @__PURE__ */ r("div", { className: B.logo, children: e }),
36
+ }) => /* @__PURE__ */ r("header", { className: `${P.topBar} ${o}`, children: /* @__PURE__ */ m("div", { className: P.content, children: [
37
+ /* @__PURE__ */ m("div", { className: P.left, children: [
38
+ e && /* @__PURE__ */ r("div", { className: P.logo, children: e }),
39
39
  t
40
40
  ] }),
41
- /* @__PURE__ */ r("div", { className: B.right, children: s })
42
- ] }) }), Se = "_footer_zjuj8_1", Ae = "_content_zjuj8_7", xe = "_defaultContent_zjuj8_13", Te = "_copyright_zjuj8_21", Ce = "_disclaimer_zjuj8_26", P = {
41
+ /* @__PURE__ */ r("div", { className: P.right, children: s })
42
+ ] }) }), Se = "_footer_zjuj8_1", xe = "_content_zjuj8_7", Te = "_defaultContent_zjuj8_13", Ce = "_copyright_zjuj8_21", ke = "_disclaimer_zjuj8_26", B = {
43
43
  footer: Se,
44
- content: Ae,
45
- defaultContent: xe,
46
- copyright: Te,
47
- disclaimer: Ce
48
- }, vs = ({ children: e, className: t = "" }) => /* @__PURE__ */ r("footer", { className: `${P.footer} ${t}`, children: /* @__PURE__ */ r("div", { className: P.content, children: e || /* @__PURE__ */ m("div", { className: P.defaultContent, children: [
49
- /* @__PURE__ */ m("p", { className: P.copyright, children: [
44
+ content: xe,
45
+ defaultContent: Te,
46
+ copyright: Ce,
47
+ disclaimer: ke
48
+ }, $s = ({ children: e, className: t = "" }) => /* @__PURE__ */ r("footer", { className: `${B.footer} ${t}`, children: /* @__PURE__ */ r("div", { className: B.content, children: e || /* @__PURE__ */ m("div", { className: B.defaultContent, children: [
49
+ /* @__PURE__ */ m("p", { className: B.copyright, children: [
50
50
  "© ",
51
51
  (/* @__PURE__ */ new Date()).getFullYear(),
52
52
  " The Astrogator's Table. All rights reserved."
53
53
  ] }),
54
- /* @__PURE__ */ r("p", { className: P.disclaimer, children: "Star Wars: Galaxy of Heroes is a trademark of Electronic Arts Inc." })
55
- ] }) }) }), ke = "_button_159ms_1", Ee = "_sm_159ms_22", We = "_md_159ms_28", Ie = "_lg_159ms_34", Le = "_primary_159ms_41", qe = "_secondary_159ms_55", Re = "_outline_159ms_69", Be = "_ghost_159ms_80", Pe = "_danger_159ms_89", Ue = "_fullWidth_159ms_100", je = "_loading_159ms_105", De = "_loadingSpinner_159ms_110", Fe = "_spinner_159ms_116", ze = "_spin_159ms_116", Oe = "_loadingText_159ms_131", A = {
56
- button: ke,
57
- sm: Ee,
58
- md: We,
59
- lg: Ie,
60
- primary: Le,
61
- secondary: qe,
62
- outline: Re,
54
+ /* @__PURE__ */ r("p", { className: B.disclaimer, children: "Star Wars: Galaxy of Heroes is a trademark of Electronic Arts Inc." })
55
+ ] }) }) }), Ee = "_button_159ms_1", We = "_sm_159ms_22", Ie = "_md_159ms_28", Le = "_lg_159ms_34", qe = "_primary_159ms_41", Re = "_secondary_159ms_55", Pe = "_outline_159ms_69", Be = "_ghost_159ms_80", Ue = "_danger_159ms_89", je = "_fullWidth_159ms_100", Fe = "_loading_159ms_105", De = "_loadingSpinner_159ms_110", Oe = "_spinner_159ms_116", ze = "_spin_159ms_116", Me = "_loadingText_159ms_131", x = {
56
+ button: Ee,
57
+ sm: We,
58
+ md: Ie,
59
+ lg: Le,
60
+ primary: qe,
61
+ secondary: Re,
62
+ outline: Pe,
63
63
  ghost: Be,
64
- danger: Pe,
65
- fullWidth: Ue,
66
- loading: je,
64
+ danger: Ue,
65
+ fullWidth: je,
66
+ loading: Fe,
67
67
  loadingSpinner: De,
68
- spinner: Fe,
68
+ spinner: Oe,
69
69
  spin: ze,
70
- loadingText: Oe
71
- }, O = ({
70
+ loadingText: Me
71
+ }, z = ({
72
72
  children: e,
73
73
  variant: t = "primary",
74
74
  size: s = "md",
75
75
  fullWidth: o = !1,
76
76
  loading: _ = !1,
77
- disabled: h = !1,
77
+ disabled: g = !1,
78
78
  className: c = "",
79
79
  ...l
80
80
  }) => /* @__PURE__ */ r(
81
81
  "button",
82
82
  {
83
- className: `${A.button} ${A[t]} ${A[s]} ${o ? A.fullWidth : ""} ${_ ? A.loading : ""} ${c}`,
84
- disabled: h || _,
83
+ className: `${x.button} ${x[t]} ${x[s]} ${o ? x.fullWidth : ""} ${_ ? x.loading : ""} ${c}`,
84
+ disabled: g || _,
85
85
  ...l,
86
- children: _ ? /* @__PURE__ */ m("span", { className: A.loadingSpinner, children: [
87
- /* @__PURE__ */ r("span", { className: A.spinner }),
88
- /* @__PURE__ */ r("span", { className: A.loadingText, children: e })
86
+ children: _ ? /* @__PURE__ */ m("span", { className: x.loadingSpinner, children: [
87
+ /* @__PURE__ */ r("span", { className: x.spinner }),
88
+ /* @__PURE__ */ r("span", { className: x.loadingText, children: e })
89
89
  ] }) : e
90
90
  }
91
- ), Me = "_inputWrapper_15t4g_1", Je = "_fullWidth_15t4g_7", He = "_label_15t4g_11", Ye = "_required_15t4g_20", Ge = "_input_15t4g_1", Ke = "_error_15t4g_55", Ve = "_errorText_15t4g_63", Qe = "_helperText_15t4g_68", x = {
92
- inputWrapper: Me,
93
- fullWidth: Je,
94
- label: He,
95
- required: Ye,
96
- input: Ge,
97
- error: Ke,
98
- errorText: Ve,
99
- helperText: Qe
100
- }, ae = re.forwardRef(
91
+ ), Je = "_inputWrapper_15t4g_1", He = "_fullWidth_15t4g_7", Ye = "_label_15t4g_11", Ge = "_required_15t4g_20", Ke = "_input_15t4g_1", Ve = "_error_15t4g_55", Qe = "_errorText_15t4g_63", Xe = "_helperText_15t4g_68", T = {
92
+ inputWrapper: Je,
93
+ fullWidth: He,
94
+ label: Ye,
95
+ required: Ge,
96
+ input: Ke,
97
+ error: Ve,
98
+ errorText: Qe,
99
+ helperText: Xe
100
+ }, ae = ne.forwardRef(
101
101
  ({
102
102
  label: e,
103
103
  error: t,
104
104
  helperText: s,
105
105
  fullWidth: o = !1,
106
106
  className: _ = "",
107
- id: h,
107
+ id: g,
108
108
  ...c
109
109
  }, l) => {
110
- const i = h || `input-${Math.random().toString(36).substr(2, 9)}`, g = !!t;
111
- return /* @__PURE__ */ m("div", { className: `${x.inputWrapper} ${o ? x.fullWidth : ""} ${_}`, children: [
112
- e && /* @__PURE__ */ m("label", { htmlFor: i, className: x.label, children: [
110
+ const i = g || `input-${Math.random().toString(36).substr(2, 9)}`, h = !!t;
111
+ return /* @__PURE__ */ m("div", { className: `${T.inputWrapper} ${o ? T.fullWidth : ""} ${_}`, children: [
112
+ e && /* @__PURE__ */ m("label", { htmlFor: i, className: T.label, children: [
113
113
  e,
114
- c.required && /* @__PURE__ */ r("span", { className: x.required, children: "*" })
114
+ c.required && /* @__PURE__ */ r("span", { className: T.required, children: "*" })
115
115
  ] }),
116
116
  /* @__PURE__ */ r(
117
117
  "input",
118
118
  {
119
119
  ref: l,
120
120
  id: i,
121
- className: `${x.input} ${g ? x.error : ""}`,
121
+ className: `${T.input} ${h ? T.error : ""}`,
122
122
  ...c
123
123
  }
124
124
  ),
125
- t && /* @__PURE__ */ r("span", { className: x.errorText, children: t }),
126
- s && !t && /* @__PURE__ */ r("span", { className: x.helperText, children: s })
125
+ t && /* @__PURE__ */ r("span", { className: T.errorText, children: t }),
126
+ s && !t && /* @__PURE__ */ r("span", { className: T.helperText, children: s })
127
127
  ] });
128
128
  }
129
129
  );
130
130
  ae.displayName = "Input";
131
- const Xe = "_selectWrapper_ir4bq_1", Ze = "_fullWidth_ir4bq_7", et = "_label_ir4bq_11", tt = "_required_ir4bq_20", st = "_selectContainer_ir4bq_24", ot = "_select_ir4bq_1", nt = "_error_ir4bq_63", rt = "_arrow_ir4bq_71", at = "_errorText_ir4bq_81", lt = "_helperText_ir4bq_86", w = {
132
- selectWrapper: Xe,
133
- fullWidth: Ze,
134
- label: et,
135
- required: tt,
136
- selectContainer: st,
137
- select: ot,
131
+ const Ze = "_selectWrapper_ir4bq_1", et = "_fullWidth_ir4bq_7", tt = "_label_ir4bq_11", st = "_required_ir4bq_20", ot = "_selectContainer_ir4bq_24", rt = "_select_ir4bq_1", nt = "_error_ir4bq_63", at = "_arrow_ir4bq_71", lt = "_errorText_ir4bq_81", ct = "_helperText_ir4bq_86", w = {
132
+ selectWrapper: Ze,
133
+ fullWidth: et,
134
+ label: tt,
135
+ required: st,
136
+ selectContainer: ot,
137
+ select: rt,
138
138
  error: nt,
139
- arrow: rt,
140
- errorText: at,
141
- helperText: lt
142
- }, le = re.forwardRef(
139
+ arrow: at,
140
+ errorText: lt,
141
+ helperText: ct
142
+ }, le = ne.forwardRef(
143
143
  ({
144
144
  label: e,
145
145
  error: t,
146
146
  helperText: s,
147
147
  options: o,
148
148
  placeholder: _,
149
- fullWidth: h = !1,
149
+ fullWidth: g = !1,
150
150
  className: c = "",
151
151
  id: l,
152
152
  ...i
153
- }, g) => {
154
- const f = l || `select-${Math.random().toString(36).substr(2, 9)}`, C = !!t;
155
- return /* @__PURE__ */ m("div", { className: `${w.selectWrapper} ${h ? w.fullWidth : ""} ${c}`, children: [
156
- e && /* @__PURE__ */ m("label", { htmlFor: f, className: w.label, children: [
153
+ }, h) => {
154
+ const p = l || `select-${Math.random().toString(36).substr(2, 9)}`, N = !!t;
155
+ return /* @__PURE__ */ m("div", { className: `${w.selectWrapper} ${g ? w.fullWidth : ""} ${c}`, children: [
156
+ e && /* @__PURE__ */ m("label", { htmlFor: p, className: w.label, children: [
157
157
  e,
158
158
  i.required && /* @__PURE__ */ r("span", { className: w.required, children: "*" })
159
159
  ] }),
@@ -161,20 +161,20 @@ const Xe = "_selectWrapper_ir4bq_1", Ze = "_fullWidth_ir4bq_7", et = "_label_ir4
161
161
  /* @__PURE__ */ m(
162
162
  "select",
163
163
  {
164
- ref: g,
165
- id: f,
166
- className: `${w.select} ${C ? w.error : ""}`,
164
+ ref: h,
165
+ id: p,
166
+ className: `${w.select} ${N ? w.error : ""}`,
167
167
  ...i,
168
168
  children: [
169
169
  _ && /* @__PURE__ */ r("option", { value: "", disabled: !0, children: _ }),
170
- o && o.map((b) => /* @__PURE__ */ r(
170
+ o && o.map((f) => /* @__PURE__ */ r(
171
171
  "option",
172
172
  {
173
- value: b.value,
174
- disabled: b.disabled,
175
- children: b.label
173
+ value: f.value,
174
+ disabled: f.disabled,
175
+ children: f.label
176
176
  },
177
- b.value
177
+ f.value
178
178
  )),
179
179
  !o && i.children
180
180
  ]
@@ -188,20 +188,20 @@ const Xe = "_selectWrapper_ir4bq_1", Ze = "_fullWidth_ir4bq_7", et = "_label_ir4
188
188
  }
189
189
  );
190
190
  le.displayName = "Select";
191
- const te = "astrogators_access_token", se = "astrogators_refresh_token", ce = () => localStorage.getItem(te), ct = (e) => {
191
+ const te = "astrogators_access_token", se = "astrogators_refresh_token", ce = () => localStorage.getItem(te), it = (e) => {
192
192
  localStorage.setItem(te, e);
193
- }, it = () => {
193
+ }, dt = () => {
194
194
  localStorage.removeItem(te);
195
- }, dt = () => localStorage.getItem(se), _t = (e) => {
195
+ }, _t = () => localStorage.getItem(se), mt = (e) => {
196
196
  localStorage.setItem(se, e);
197
197
  }, ut = () => {
198
198
  localStorage.removeItem(se);
199
199
  }, ie = (e, t) => {
200
- ct(e), _t(t);
200
+ it(e), mt(t);
201
201
  }, ee = () => {
202
- it(), ut();
203
- }, mt = () => !!ce();
204
- class ht {
202
+ dt(), ut();
203
+ }, ht = () => !!ce();
204
+ class gt {
205
205
  constructor(t) {
206
206
  R(this, "baseURL");
207
207
  R(this, "onUnauthorized");
@@ -211,7 +211,7 @@ class ht {
211
211
  }
212
212
  async refreshAccessToken() {
213
213
  var _;
214
- const t = dt();
214
+ const t = _t();
215
215
  if (!t)
216
216
  throw new Error("No refresh token available");
217
217
  const s = await fetch(`${this.baseURL}/api/v1/auth/refresh-token`, {
@@ -232,8 +232,8 @@ class ht {
232
232
  ...s.headers
233
233
  };
234
234
  o && (_.Authorization = `Bearer ${o}`);
235
- const h = `${this.baseURL}${t}`;
236
- let c = await fetch(h, {
235
+ const g = `${this.baseURL}${t}`;
236
+ let c = await fetch(g, {
237
237
  ...s,
238
238
  headers: _
239
239
  });
@@ -243,7 +243,7 @@ class ht {
243
243
  }));
244
244
  try {
245
245
  const l = await this.refreshPromise;
246
- _.Authorization = `Bearer ${l}`, c = await fetch(h, {
246
+ _.Authorization = `Bearer ${l}`, c = await fetch(g, {
247
247
  ...s,
248
248
  headers: _
249
249
  });
@@ -259,8 +259,8 @@ class ht {
259
259
  try {
260
260
  const i = await c.json();
261
261
  if (c.status === 422 && Array.isArray(i.detail)) {
262
- const g = i.detail.map((f) => f.msg || "Validation error").join(", ");
263
- l.message = g;
262
+ const h = i.detail.map((p) => p.msg || "Validation error").join(", ");
263
+ l.message = h;
264
264
  } else typeof i.detail == "string" ? l.message = i.detail : i.message && (l.message = i.message);
265
265
  l.detail = i.detail;
266
266
  } catch {
@@ -297,10 +297,10 @@ class ht {
297
297
  return this.request(t, { ...s, method: "DELETE" });
298
298
  }
299
299
  }
300
- let p;
301
- const gt = (e) => {
302
- p = new ht(e);
303
- }, j = "astrogators_ally_codes", H = "astrogators_selected_ally_code", N = () => {
300
+ let y;
301
+ const ft = (e) => {
302
+ y = new gt(e);
303
+ }, j = "astrogators_ally_codes", H = "astrogators_selected_ally_code", A = () => {
304
304
  try {
305
305
  const e = localStorage.getItem(j);
306
306
  return e ? JSON.parse(e) : [];
@@ -309,55 +309,55 @@ const gt = (e) => {
309
309
  }
310
310
  }, pt = (e) => {
311
311
  try {
312
- const t = N();
312
+ const t = A();
313
313
  if (t.some((o) => o.ally_code === e.ally_code))
314
314
  return;
315
315
  t.push(e), localStorage.setItem(j, JSON.stringify(t));
316
316
  } catch (t) {
317
317
  console.error("Failed to save ally code to localStorage:", t);
318
318
  }
319
- }, ft = (e) => {
319
+ }, yt = (e) => {
320
320
  try {
321
- const s = N().filter((o) => o.ally_code !== e);
321
+ const s = A().filter((o) => o.ally_code !== e);
322
322
  localStorage.setItem(j, JSON.stringify(s));
323
323
  } catch (t) {
324
324
  console.error("Failed to remove ally code from localStorage:", t);
325
325
  }
326
- }, ne = (e) => {
326
+ }, re = (e) => {
327
327
  try {
328
- const s = N().map(
328
+ const s = A().map(
329
329
  (o) => o.ally_code === e ? { ...o, last_used_at: (/* @__PURE__ */ new Date()).toISOString() } : o
330
330
  );
331
331
  localStorage.setItem(j, JSON.stringify(s));
332
332
  } catch (t) {
333
333
  console.error("Failed to update ally code last used:", t);
334
334
  }
335
- }, yt = () => localStorage.getItem(H), vt = (e) => {
335
+ }, vt = () => localStorage.getItem(H), $t = (e) => {
336
336
  e ? localStorage.setItem(H, e) : localStorage.removeItem(H);
337
- }, $t = () => {
337
+ }, bt = () => {
338
338
  localStorage.removeItem(j), localStorage.removeItem(H);
339
- }, de = ge(void 0), $s = ({ children: e, apiBaseUrl: t }) => {
340
- const [s, o] = $(null), [_, h] = $(!0), [c, l] = $([]), [i, g] = $(null), [f, C] = $(!1), [b, k] = $({
339
+ }, de = fe(void 0), bs = ({ children: e, apiBaseUrl: t }) => {
340
+ const [s, o] = b(null), [_, g] = b(!0), [c, l] = b([]), [i, h] = b(null), [p, N] = b(!1), [f, k] = b({
341
341
  show: !1,
342
342
  localStorageCodes: []
343
343
  });
344
344
  U(() => {
345
- gt({
345
+ ft({
346
346
  baseURL: t
347
347
  });
348
348
  }, [t]);
349
349
  const W = S(async () => {
350
- if (!mt()) {
351
- o(null), h(!1);
350
+ if (!ht()) {
351
+ o(null), g(!1);
352
352
  return;
353
353
  }
354
354
  try {
355
- const n = await p.get("/api/v1/users/me");
355
+ const n = await y.get("/api/v1/users/me");
356
356
  o(n);
357
357
  } catch (n) {
358
358
  console.error("Failed to fetch user:", n), o(null), ee();
359
359
  } finally {
360
- h(!1);
360
+ g(!1);
361
361
  }
362
362
  }, []);
363
363
  U(() => {
@@ -365,26 +365,26 @@ const gt = (e) => {
365
365
  }, [W]);
366
366
  const I = async (n) => {
367
367
  try {
368
- const a = await p.post("/api/v1/auth/login", n);
368
+ const a = await y.post("/api/v1/auth/login", n);
369
369
  ie(a.access_token, a.refresh_token);
370
- const u = await p.get("/api/v1/users/me");
370
+ const u = await y.get("/api/v1/users/me");
371
371
  o(u);
372
372
  } catch (a) {
373
373
  throw console.error("Login failed:", a), a;
374
374
  }
375
- }, D = async (n) => {
375
+ }, F = async (n) => {
376
376
  try {
377
- await p.post("/api/v1/auth/register", n);
377
+ await y.post("/api/v1/auth/register", n);
378
378
  } catch (a) {
379
379
  throw console.error("Registration failed:", a), a;
380
380
  }
381
- }, F = () => {
382
- ee(), o(null), l([]), g(null), k({ show: !1, localStorageCodes: [] });
381
+ }, D = () => {
382
+ ee(), o(null), l([]), h(null), k({ show: !1, localStorageCodes: [] });
383
383
  }, Y = async () => {
384
384
  await W();
385
385
  }, G = async (n) => {
386
386
  try {
387
- return (await p.post(
387
+ return (await y.post(
388
388
  "/api/v1/auth/forgot-password",
389
389
  n
390
390
  )).message;
@@ -393,7 +393,7 @@ const gt = (e) => {
393
393
  }
394
394
  }, K = async (n) => {
395
395
  try {
396
- return (await p.post(
396
+ return (await y.post(
397
397
  "/api/v1/auth/reset-password",
398
398
  n
399
399
  )).message;
@@ -402,7 +402,7 @@ const gt = (e) => {
402
402
  }
403
403
  }, V = async (n) => {
404
404
  try {
405
- return (await p.post(
405
+ return (await y.post(
406
406
  "/api/v1/auth/resend-verification",
407
407
  n
408
408
  )).message;
@@ -410,39 +410,39 @@ const gt = (e) => {
410
410
  throw console.error("Resend verification failed:", a), a;
411
411
  }
412
412
  }, d = S(async () => {
413
- C(!0);
413
+ N(!0);
414
414
  try {
415
415
  if (s) {
416
- const a = await p.get("/api/v1/users/me/ally-codes");
416
+ const a = await y.get("/api/v1/users/me/ally-codes");
417
417
  l(a.ally_codes);
418
- const u = N();
418
+ const u = A();
419
419
  u.length > 0 && k({
420
420
  show: !0,
421
421
  localStorageCodes: u.map((q) => q.ally_code)
422
422
  });
423
423
  } else {
424
- const a = N();
424
+ const a = A();
425
425
  l(a);
426
426
  }
427
- const n = yt();
428
- g(n);
427
+ const n = vt();
428
+ h(n);
429
429
  } catch (n) {
430
430
  console.error("Failed to fetch ally codes:", n), l([]);
431
431
  } finally {
432
- C(!1);
432
+ N(!1);
433
433
  }
434
- }, [s]), y = S(async (n) => {
434
+ }, [s]), v = S(async (n) => {
435
435
  var a;
436
436
  if (!/^\d{9}$/.test(n))
437
437
  throw new Error("Ally code must be exactly 9 digits");
438
438
  if (s) {
439
- const u = await p.post(
439
+ const u = await y.post(
440
440
  "/api/v1/users/me/ally-codes",
441
441
  { ally_code: n }
442
442
  );
443
- l((q) => [u, ...q]), c.length === 0 && z(n);
443
+ l((q) => [u, ...q]), c.length === 0 && O(n);
444
444
  } else {
445
- const u = await p.get(`/api/v1/player-data/player/${n}`);
445
+ const u = await y.get(`/api/v1/player-data/player/${n}`);
446
446
  if (!u)
447
447
  throw new Error("Invalid ally code - player not found");
448
448
  const q = {
@@ -450,40 +450,40 @@ const gt = (e) => {
450
450
  player_name: ((a = u == null ? void 0 : u.data) == null ? void 0 : a.name) || null,
451
451
  last_used_at: (/* @__PURE__ */ new Date()).toISOString()
452
452
  };
453
- pt(q), l(N()), c.length === 0 && z(n);
453
+ pt(q), l(A()), c.length === 0 && O(n);
454
454
  }
455
455
  }, [s, c.length]), L = S(async (n) => {
456
- s && typeof n == "number" ? (await p.delete(`/api/v1/users/me/ally-codes/${n}`), l((a) => a.filter((u) => "id" in u && u.id !== n))) : !s && typeof n == "string" && (ft(n), l(N()), i === n && z(null));
457
- }, [s, i]), z = S((n) => {
458
- if (g(n), vt(n), n && s) {
456
+ s && typeof n == "number" ? (await y.delete(`/api/v1/users/me/ally-codes/${n}`), l((a) => a.filter((u) => "id" in u && u.id !== n))) : !s && typeof n == "string" && (yt(n), l(A()), i === n && O(null));
457
+ }, [s, i]), O = S((n) => {
458
+ if (h(n), $t(n), n && s) {
459
459
  const a = c.find((u) => "ally_code" in u && u.ally_code === n);
460
460
  a && "id" in a && oe(a.id);
461
- } else n && !s && ne(n);
461
+ } else n && !s && re(n);
462
462
  }, [s, c]), oe = S(async (n) => {
463
- s && typeof n == "number" ? (await p.put(`/api/v1/users/me/ally-codes/${n}/use`, {}), await d()) : !s && typeof n == "string" && (ne(n), l(N()));
463
+ s && typeof n == "number" ? (await y.put(`/api/v1/users/me/ally-codes/${n}/use`, {}), await d()) : !s && typeof n == "string" && (re(n), l(A()));
464
464
  }, [s, d]), Q = S(() => {
465
465
  k({ show: !1, localStorageCodes: [] });
466
466
  }, []), _e = S(async () => {
467
467
  if (!s) return;
468
- const n = N();
468
+ const n = A();
469
469
  for (const a of n)
470
470
  try {
471
- await y(a.ally_code);
471
+ await v(a.ally_code);
472
472
  } catch (u) {
473
473
  console.error(`Failed to migrate ally code ${a.ally_code}:`, u);
474
474
  }
475
- $t(), Q();
476
- }, [s, y, Q]);
475
+ bt(), Q();
476
+ }, [s, v, Q]);
477
477
  U(() => {
478
478
  d();
479
479
  }, [d]);
480
- const ue = {
480
+ const me = {
481
481
  user: s,
482
482
  isAuthenticated: !!s,
483
483
  isLoading: _,
484
484
  login: I,
485
- register: D,
486
- logout: F,
485
+ register: F,
486
+ logout: D,
487
487
  refreshUser: Y,
488
488
  forgotPassword: G,
489
489
  resetPassword: K,
@@ -491,35 +491,35 @@ const gt = (e) => {
491
491
  // Ally code values
492
492
  allyCodes: c,
493
493
  selectedAllyCode: i,
494
- isLoadingAllyCodes: f,
494
+ isLoadingAllyCodes: p,
495
495
  fetchAllyCodes: d,
496
- addAllyCode: y,
496
+ addAllyCode: v,
497
497
  removeAllyCode: L,
498
- selectAllyCode: z,
498
+ selectAllyCode: O,
499
499
  updateAllyCodeLastUsed: oe,
500
- migrationPrompt: b,
500
+ migrationPrompt: f,
501
501
  dismissMigrationPrompt: Q,
502
502
  migrateLocalStorageCodes: _e
503
503
  };
504
- return /* @__PURE__ */ r(de.Provider, { value: ue, children: e });
504
+ return /* @__PURE__ */ r(de.Provider, { value: me, children: e });
505
505
  }, wt = () => {
506
506
  const e = pe(de);
507
507
  if (e === void 0)
508
508
  throw new Error("useAuth must be used within an AuthProvider");
509
509
  return e;
510
- }, M = (e) => !e || e.length !== 9 ? e : `${e.slice(0, 3)}-${e.slice(3, 6)}-${e.slice(6, 9)}`, ws = (e) => e.replace(/-/g, ""), bt = "_allyCodeDropdown_1m0tw_1", Nt = "_select_1m0tw_8", St = "_manageButton_1m0tw_12", At = "_managePanel_1m0tw_16", xt = "_addSection_1m0tw_37", Tt = "_addInputGroup_1m0tw_43", Ct = "_error_1m0tw_55", kt = "_success_1m0tw_61", Et = "_codesList_1m0tw_67", Wt = "_codeItem_1m0tw_71", It = "_doneButton_1m0tw_88", v = {
511
- allyCodeDropdown: bt,
512
- select: Nt,
510
+ }, M = (e) => !e || e.length !== 9 ? e : `${e.slice(0, 3)}-${e.slice(3, 6)}-${e.slice(6, 9)}`, ws = (e) => e.replace(/-/g, ""), Nt = "_allyCodeDropdown_1m0tw_1", At = "_select_1m0tw_8", St = "_manageButton_1m0tw_12", xt = "_managePanel_1m0tw_16", Tt = "_addSection_1m0tw_37", Ct = "_addInputGroup_1m0tw_43", kt = "_error_1m0tw_55", Et = "_success_1m0tw_61", Wt = "_codesList_1m0tw_67", It = "_codeItem_1m0tw_71", Lt = "_doneButton_1m0tw_88", $ = {
511
+ allyCodeDropdown: Nt,
512
+ select: At,
513
513
  manageButton: St,
514
- managePanel: At,
515
- addSection: xt,
516
- addInputGroup: Tt,
517
- error: Ct,
518
- success: kt,
519
- codesList: Et,
520
- codeItem: Wt,
521
- doneButton: It
522
- }, bs = ({
514
+ managePanel: xt,
515
+ addSection: Tt,
516
+ addInputGroup: Ct,
517
+ error: kt,
518
+ success: Et,
519
+ codesList: Wt,
520
+ codeItem: It,
521
+ doneButton: Lt
522
+ }, Ns = ({
523
523
  onAllyCodeSelected: e,
524
524
  className: t = ""
525
525
  }) => {
@@ -527,36 +527,36 @@ const gt = (e) => {
527
527
  allyCodes: s,
528
528
  selectedAllyCode: o,
529
529
  selectAllyCode: _,
530
- removeAllyCode: h,
530
+ removeAllyCode: g,
531
531
  addAllyCode: c,
532
532
  isLoadingAllyCodes: l
533
- } = wt(), [i, g] = $(!1), [f, C] = $(""), [b, k] = $(""), [W, I] = $(""), [D, F] = $(!1), Y = s.map((d) => ({
533
+ } = wt(), [i, h] = b(!1), [p, N] = b(""), [f, k] = b(""), [W, I] = b(""), [F, D] = b(!1), Y = s.map((d) => ({
534
534
  value: d.ally_code,
535
535
  label: d.player_name ? `${d.player_name} (${M(d.ally_code)})` : M(d.ally_code)
536
536
  })), G = (d) => {
537
- const y = d.target.value || null;
538
- _(y), e == null || e(y);
537
+ const v = d.target.value || null;
538
+ _(v), e == null || e(v);
539
539
  }, K = async (d) => {
540
- const y = s.find((L) => L.ally_code === d);
541
- if (y) {
542
- const L = "id" in y ? y.id : y.ally_code;
543
- await h(L);
540
+ const v = s.find((L) => L.ally_code === d);
541
+ if (v) {
542
+ const L = "id" in v ? v.id : v.ally_code;
543
+ await g(L);
544
544
  }
545
545
  }, V = async () => {
546
- if (k(""), I(""), !/^\d{9}$/.test(f)) {
546
+ if (k(""), I(""), !/^\d{9}$/.test(p)) {
547
547
  k("Ally code must be exactly 9 digits");
548
548
  return;
549
549
  }
550
- F(!0);
550
+ D(!0);
551
551
  try {
552
- await c(f), I("Added successfully!"), C(""), setTimeout(() => I(""), 2e3);
552
+ await c(p), I("Added successfully!"), N(""), setTimeout(() => I(""), 2e3);
553
553
  } catch (d) {
554
554
  k(d.message || "Failed to add ally code");
555
555
  } finally {
556
- F(!1);
556
+ D(!1);
557
557
  }
558
558
  };
559
- return s.length === 0 ? null : /* @__PURE__ */ m("div", { className: `${v.allyCodeDropdown} ${t}`, children: [
559
+ return s.length === 0 ? null : /* @__PURE__ */ m("div", { className: `${$.allyCodeDropdown} ${t}`, children: [
560
560
  /* @__PURE__ */ r(
561
561
  le,
562
562
  {
@@ -565,42 +565,42 @@ const gt = (e) => {
565
565
  onChange: G,
566
566
  placeholder: "Select ally code",
567
567
  disabled: l,
568
- className: v.select
568
+ className: $.select
569
569
  }
570
570
  ),
571
- i && /* @__PURE__ */ m("div", { className: v.managePanel, children: [
571
+ i && /* @__PURE__ */ m("div", { className: $.managePanel, children: [
572
572
  /* @__PURE__ */ r("h4", { children: "Manage Ally Codes" }),
573
- /* @__PURE__ */ m("div", { className: v.addSection, children: [
574
- /* @__PURE__ */ m("div", { className: v.addInputGroup, children: [
573
+ /* @__PURE__ */ m("div", { className: $.addSection, children: [
574
+ /* @__PURE__ */ m("div", { className: $.addInputGroup, children: [
575
575
  /* @__PURE__ */ r(
576
576
  ae,
577
577
  {
578
578
  type: "text",
579
579
  placeholder: "9-digit ally code",
580
- value: f,
581
- onChange: (d) => C(d.target.value.replace(/\D/g, "").slice(0, 9)),
582
- disabled: D
580
+ value: p,
581
+ onChange: (d) => N(d.target.value.replace(/\D/g, "").slice(0, 9)),
582
+ disabled: F
583
583
  }
584
584
  ),
585
585
  /* @__PURE__ */ r(
586
- O,
586
+ z,
587
587
  {
588
588
  variant: "primary",
589
589
  size: "sm",
590
590
  onClick: V,
591
- loading: D,
592
- disabled: f.length !== 9,
591
+ loading: F,
592
+ disabled: p.length !== 9,
593
593
  children: "Add"
594
594
  }
595
595
  )
596
596
  ] }),
597
- b && /* @__PURE__ */ r("div", { className: v.error, children: b }),
598
- W && /* @__PURE__ */ r("div", { className: v.success, children: W })
597
+ f && /* @__PURE__ */ r("div", { className: $.error, children: f }),
598
+ W && /* @__PURE__ */ r("div", { className: $.success, children: W })
599
599
  ] }),
600
- /* @__PURE__ */ r("div", { className: v.codesList, children: s.map((d) => /* @__PURE__ */ m("div", { className: v.codeItem, children: [
600
+ /* @__PURE__ */ r("div", { className: $.codesList, children: s.map((d) => /* @__PURE__ */ m("div", { className: $.codeItem, children: [
601
601
  /* @__PURE__ */ r("span", { children: d.player_name ? `${d.player_name} (${M(d.ally_code)})` : M(d.ally_code) }),
602
602
  /* @__PURE__ */ r(
603
- O,
603
+ z,
604
604
  {
605
605
  variant: "ghost",
606
606
  size: "sm",
@@ -610,107 +610,119 @@ const gt = (e) => {
610
610
  )
611
611
  ] }, d.ally_code)) }),
612
612
  /* @__PURE__ */ r(
613
- O,
613
+ z,
614
614
  {
615
615
  variant: "secondary",
616
616
  size: "sm",
617
- onClick: () => g(!1),
618
- className: v.doneButton,
617
+ onClick: () => h(!1),
618
+ className: $.doneButton,
619
619
  children: "Done"
620
620
  }
621
621
  )
622
622
  ] }),
623
623
  /* @__PURE__ */ r(
624
- O,
624
+ z,
625
625
  {
626
626
  variant: "ghost",
627
627
  size: "sm",
628
- onClick: () => g(!i),
629
- className: v.manageButton,
628
+ onClick: () => h(!i),
629
+ className: $.manageButton,
630
630
  children: "Manage"
631
631
  }
632
632
  )
633
633
  ] });
634
- }, Lt = "_card_1n0ll_1", qt = "_elevated_1n0ll_12", Rt = "_outline_1n0ll_17", Bt = "_hoverable_1n0ll_40", J = {
635
- card: Lt,
634
+ }, qt = "_card_1n0ll_1", Rt = "_elevated_1n0ll_12", Pt = "_outline_1n0ll_17", Bt = "_hoverable_1n0ll_40", J = {
635
+ card: qt,
636
636
  default: "_default_1n0ll_8",
637
- elevated: qt,
638
- outline: Rt,
637
+ elevated: Rt,
638
+ outline: Pt,
639
639
  "padding-none": "_padding-none_1n0ll_23",
640
640
  "padding-sm": "_padding-sm_1n0ll_27",
641
641
  "padding-md": "_padding-md_1n0ll_31",
642
642
  "padding-lg": "_padding-lg_1n0ll_35",
643
643
  hoverable: Bt
644
- }, Ns = ({
644
+ }, As = ({
645
645
  children: e,
646
646
  variant: t = "default",
647
647
  chamfered: s = !1,
648
648
  chamferSize: o = "md",
649
649
  padding: _ = "md",
650
- hoverable: h = !1,
651
- className: c = "",
652
- onClick: l
650
+ hoverable: g = !1,
651
+ showDiagonalBorders: c = !1,
652
+ diagonalBorderColor: l,
653
+ className: i = "",
654
+ onClick: h,
655
+ style: p
653
656
  }) => {
654
- const i = s ? o === "sm" ? "chamfered-box-sm" : o === "lg" ? "chamfered-box-lg" : "chamfered-box" : "";
655
- return /* @__PURE__ */ r(
657
+ const N = s ? o === "asymmetric" ? "chamfered-box-asymmetric" : o === "sm" ? "chamfered-box-sm" : o === "lg" ? "chamfered-box-lg" : "chamfered-box" : "", f = l ? { color: l } : void 0;
658
+ return /* @__PURE__ */ m(
656
659
  "div",
657
660
  {
658
- className: `${J.card} ${J[t]} ${J[`padding-${_}`]} ${i} ${h ? J.hoverable : ""} ${c}`,
659
- onClick: l,
660
- role: l ? "button" : void 0,
661
- tabIndex: l ? 0 : void 0,
662
- children: e
661
+ className: `${J.card} ${J[t]} ${J[`padding-${_}`]} ${N} ${g ? J.hoverable : ""} ${i}`,
662
+ onClick: h,
663
+ role: h ? "button" : void 0,
664
+ tabIndex: h ? 0 : void 0,
665
+ style: p,
666
+ children: [
667
+ c && /* @__PURE__ */ m(ge, { children: [
668
+ /* @__PURE__ */ r("div", { className: "chamfered-diagonal-border chamfered-diagonal-tl", style: f }),
669
+ /* @__PURE__ */ r("div", { className: "chamfered-diagonal-border chamfered-diagonal-tr", style: f }),
670
+ /* @__PURE__ */ r("div", { className: "chamfered-diagonal-border chamfered-diagonal-bl", style: f }),
671
+ /* @__PURE__ */ r("div", { className: `chamfered-diagonal-border ${o === "asymmetric" ? "chamfered-diagonal-br-large" : "chamfered-diagonal-br"}`, style: f })
672
+ ] }),
673
+ e
674
+ ]
663
675
  }
664
676
  );
665
- }, Pt = "_badge_rk7t5_1", Ut = "_sm_rk7t5_11", jt = "_md_rk7t5_16", Dt = "_lg_rk7t5_21", Ft = "_primary_rk7t5_32", zt = "_secondary_rk7t5_37", Ot = "_success_rk7t5_42", Mt = "_warning_rk7t5_47", Jt = "_error_rk7t5_52", Ht = "_info_rk7t5_57", Z = {
666
- badge: Pt,
667
- sm: Ut,
668
- md: jt,
677
+ }, Ut = "_badge_rk7t5_1", jt = "_sm_rk7t5_11", Ft = "_md_rk7t5_16", Dt = "_lg_rk7t5_21", Ot = "_primary_rk7t5_32", zt = "_secondary_rk7t5_37", Mt = "_success_rk7t5_42", Jt = "_warning_rk7t5_47", Ht = "_error_rk7t5_52", Yt = "_info_rk7t5_57", Z = {
678
+ badge: Ut,
679
+ sm: jt,
680
+ md: Ft,
669
681
  lg: Dt,
670
682
  default: "_default_rk7t5_27",
671
- primary: Ft,
683
+ primary: Ot,
672
684
  secondary: zt,
673
- success: Ot,
674
- warning: Mt,
675
- error: Jt,
676
- info: Ht
685
+ success: Mt,
686
+ warning: Jt,
687
+ error: Ht,
688
+ info: Yt
677
689
  }, Ss = ({
678
690
  children: e,
679
691
  variant: t = "default",
680
692
  size: s = "md",
681
693
  className: o = ""
682
- }) => /* @__PURE__ */ r("span", { className: `${Z.badge} ${Z[t]} ${Z[s]} ${o}`, children: e }), Yt = "_overlay_1b3yt_1", Gt = "_fadeIn_1b3yt_1", Kt = "_modal_1b3yt_13", Vt = "_slideUp_1b3yt_1", Qt = "_sm_1b3yt_25", Xt = "_md_1b3yt_30", Zt = "_lg_1b3yt_35", es = "_xl_1b3yt_40", ts = "_header_1b3yt_45", ss = "_title_1b3yt_53", os = "_closeButton_1b3yt_60", ns = "_content_1b3yt_78", E = {
683
- overlay: Yt,
684
- fadeIn: Gt,
685
- modal: Kt,
686
- slideUp: Vt,
687
- sm: Qt,
688
- md: Xt,
689
- lg: Zt,
690
- xl: es,
691
- header: ts,
692
- title: ss,
693
- closeButton: os,
694
+ }) => /* @__PURE__ */ r("span", { className: `${Z.badge} ${Z[t]} ${Z[s]} ${o}`, children: e }), Gt = "_overlay_1b3yt_1", Kt = "_fadeIn_1b3yt_1", Vt = "_modal_1b3yt_13", Qt = "_slideUp_1b3yt_1", Xt = "_sm_1b3yt_25", Zt = "_md_1b3yt_30", es = "_lg_1b3yt_35", ts = "_xl_1b3yt_40", ss = "_header_1b3yt_45", os = "_title_1b3yt_53", rs = "_closeButton_1b3yt_60", ns = "_content_1b3yt_78", E = {
695
+ overlay: Gt,
696
+ fadeIn: Kt,
697
+ modal: Vt,
698
+ slideUp: Qt,
699
+ sm: Xt,
700
+ md: Zt,
701
+ lg: es,
702
+ xl: ts,
703
+ header: ss,
704
+ title: os,
705
+ closeButton: rs,
694
706
  content: ns
695
- }, As = ({
707
+ }, xs = ({
696
708
  isOpen: e,
697
709
  onClose: t,
698
710
  title: s,
699
711
  children: o,
700
712
  size: _ = "md",
701
- closeOnOverlayClick: h = !0,
713
+ closeOnOverlayClick: g = !0,
702
714
  className: c = ""
703
715
  }) => {
704
716
  if (U(() => (e ? document.body.style.overflow = "hidden" : document.body.style.overflow = "unset", () => {
705
717
  document.body.style.overflow = "unset";
706
718
  }), [e]), U(() => {
707
- const i = (g) => {
708
- g.key === "Escape" && e && t();
719
+ const i = (h) => {
720
+ h.key === "Escape" && e && t();
709
721
  };
710
722
  return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
711
723
  }, [e, t]), !e) return null;
712
724
  const l = (i) => {
713
- h && i.target === i.currentTarget && t();
725
+ g && i.target === i.currentTarget && t();
714
726
  };
715
727
  return /* @__PURE__ */ r("div", { className: E.overlay, onClick: l, children: /* @__PURE__ */ m("div", { className: `${E.modal} ${E[_]} ${c}`, role: "dialog", "aria-modal": "true", children: [
716
728
  s && /* @__PURE__ */ m("div", { className: E.header, children: [
@@ -719,58 +731,58 @@ const gt = (e) => {
719
731
  ] }),
720
732
  /* @__PURE__ */ r("div", { className: E.content, children: o })
721
733
  ] }) });
722
- }, rs = "_spinner_1uhnh_2", as = "_spin_1uhnh_2", ls = "_sm_1uhnh_9", cs = "_md_1uhnh_15", is = "_lg_1uhnh_21", ds = "_dots_1uhnh_34", _s = "_dot_1uhnh_34", us = "_bounce_1uhnh_1", ms = "_visuallyHidden_1uhnh_91", T = {
723
- spinner: rs,
724
- spin: as,
725
- sm: ls,
726
- md: cs,
727
- lg: is,
728
- dots: ds,
729
- dot: _s,
734
+ }, as = "_spinner_1uhnh_2", ls = "_spin_1uhnh_2", cs = "_sm_1uhnh_9", is = "_md_1uhnh_15", ds = "_lg_1uhnh_21", _s = "_dots_1uhnh_34", ms = "_dot_1uhnh_34", us = "_bounce_1uhnh_1", hs = "_visuallyHidden_1uhnh_91", C = {
735
+ spinner: as,
736
+ spin: ls,
737
+ sm: cs,
738
+ md: is,
739
+ lg: ds,
740
+ dots: _s,
741
+ dot: ms,
730
742
  bounce: us,
731
- visuallyHidden: ms
732
- }, xs = ({
743
+ visuallyHidden: hs
744
+ }, Ts = ({
733
745
  size: e = "md",
734
746
  variant: t = "spinner",
735
747
  className: s = ""
736
- }) => t === "dots" ? /* @__PURE__ */ m("div", { className: `${T.dots} ${T[e]} ${s}`, children: [
737
- /* @__PURE__ */ r("span", { className: T.dot }),
738
- /* @__PURE__ */ r("span", { className: T.dot }),
739
- /* @__PURE__ */ r("span", { className: T.dot })
740
- ] }) : /* @__PURE__ */ r("div", { className: `${T.spinner} ${T[e]} ${s}`, role: "status", children: /* @__PURE__ */ r("span", { className: T.visuallyHidden, children: "Loading..." }) });
748
+ }) => t === "dots" ? /* @__PURE__ */ m("div", { className: `${C.dots} ${C[e]} ${s}`, children: [
749
+ /* @__PURE__ */ r("span", { className: C.dot }),
750
+ /* @__PURE__ */ r("span", { className: C.dot }),
751
+ /* @__PURE__ */ r("span", { className: C.dot })
752
+ ] }) : /* @__PURE__ */ r("div", { className: `${C.spinner} ${C[e]} ${s}`, role: "status", children: /* @__PURE__ */ r("span", { className: C.visuallyHidden, children: "Loading..." }) });
741
753
  export {
742
- bs as AllyCodeDropdown,
743
- ht as ApiClient,
744
- $s as AuthProvider,
754
+ Ns as AllyCodeDropdown,
755
+ gt as ApiClient,
756
+ bs as AuthProvider,
745
757
  Ss as Badge,
746
- O as Button,
747
- Ns as Card,
748
- fs as Container,
749
- vs as Footer,
758
+ z as Button,
759
+ As as Card,
760
+ ys as Container,
761
+ $s as Footer,
750
762
  ae as Input,
751
- xs as Loader,
752
- As as Modal,
763
+ Ts as Loader,
764
+ xs as Modal,
753
765
  le as Select,
754
- ys as TopBar,
755
- p as apiClient,
756
- $t as clearAllyCodes,
766
+ vs as TopBar,
767
+ y as apiClient,
768
+ bt as clearAllyCodes,
757
769
  ee as clearTokens,
758
770
  M as formatAllyCode,
759
771
  ce as getAccessToken,
760
- N as getAllyCodesFromStorage,
761
- dt as getRefreshToken,
762
- yt as getSelectedAllyCode,
763
- gt as initializeApiClient,
764
- mt as isAuthenticated,
765
- it as removeAccessToken,
766
- ft as removeAllyCodeFromStorage,
772
+ A as getAllyCodesFromStorage,
773
+ _t as getRefreshToken,
774
+ vt as getSelectedAllyCode,
775
+ ft as initializeApiClient,
776
+ ht as isAuthenticated,
777
+ dt as removeAccessToken,
778
+ yt as removeAllyCodeFromStorage,
767
779
  ut as removeRefreshToken,
768
780
  pt as saveAllyCodeToStorage,
769
- ct as setAccessToken,
770
- _t as setRefreshToken,
771
- vt as setSelectedAllyCode,
781
+ it as setAccessToken,
782
+ mt as setRefreshToken,
783
+ $t as setSelectedAllyCode,
772
784
  ie as setTokens,
773
785
  ws as unformatAllyCode,
774
- ne as updateAllyCodeLastUsed,
786
+ re as updateAllyCodeLastUsed,
775
787
  wt as useAuth
776
788
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- :root{--color-primary: #1a73e8;--color-primary-hover: #1557b0;--color-primary-active: #0d3c78;--color-secondary: #34a853;--color-secondary-hover: #2d8e47;--color-secondary-active: #1f6631;--color-background: #0a0e27;--color-background-elevated: #131729;--color-background-hover: #1a1f3a;--color-surface: #1e2139;--color-border: #2a2f4a;--color-text-primary: #ffffff;--color-text-secondary: #a0a5c0;--color-text-disabled: #5a5f7a;--color-success: #34a853;--color-warning: #fbbc04;--color-error: #ea4335;--color-info: #4285f4;--font-primary: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-heading: "Orbitron", var(--font-primary);--font-mono: "Fira Code", "Courier New", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -2px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 10px 10px -5px rgba(0, 0, 0, .5);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-toast: 400;--z-tooltip: 500;--chamfer-size: 8px;--chamfer-size-lg: 12px;--chamfer-size-sm: 4px;--transition-fast: .15s ease-in-out;--transition-base: .2s ease-in-out;--transition-slow: .3s ease-in-out;--topbar-height: 64px;--topbar-background: var(--color-background-elevated);--topbar-border: var(--color-border);--container-max-width: 1280px;--container-padding: var(--spacing-md);--button-height: 40px;--button-padding-x: var(--spacing-lg);--button-padding-y: var(--spacing-sm);--input-height: 40px;--input-padding-x: var(--spacing-md);--input-padding-y: var(--spacing-sm);--input-border: var(--color-border);--input-background: var(--color-surface);--card-padding: var(--spacing-lg);--card-background: var(--color-surface);--card-border: var(--color-border)}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body{height:100%}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{line-height:var(--line-height-normal);font-family:var(--font-primary);font-size:var(--font-size-base);color:var(--color-text-primary);background-color:var(--color-background)}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}ul,ol{list-style:none}a{color:inherit;text-decoration:none}#root{isolation:isolate;min-height:100%}.chamfered-box{position:relative;clip-path:polygon(var(--chamfer-size) 0,calc(100% - var(--chamfer-size)) 0,100% var(--chamfer-size),100% calc(100% - var(--chamfer-size)),calc(100% - var(--chamfer-size)) 100%,var(--chamfer-size) 100%,0 calc(100% - var(--chamfer-size)),0 var(--chamfer-size))}.chamfered-box-lg{position:relative;clip-path:polygon(var(--chamfer-size-lg) 0,calc(100% - var(--chamfer-size-lg)) 0,100% var(--chamfer-size-lg),100% calc(100% - var(--chamfer-size-lg)),calc(100% - var(--chamfer-size-lg)) 100%,var(--chamfer-size-lg) 100%,0 calc(100% - var(--chamfer-size-lg)),0 var(--chamfer-size-lg))}.chamfered-box-sm{position:relative;clip-path:polygon(var(--chamfer-size-sm) 0,calc(100% - var(--chamfer-size-sm)) 0,100% var(--chamfer-size-sm),100% calc(100% - var(--chamfer-size-sm)),calc(100% - var(--chamfer-size-sm)) 100%,var(--chamfer-size-sm) 100%,0 calc(100% - var(--chamfer-size-sm)),0 var(--chamfer-size-sm))}.chamfered-border{position:relative;background:var(--color-surface)}.chamfered-border:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;padding:2px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;clip-path:polygon(var(--chamfer-size) 0,calc(100% - var(--chamfer-size)) 0,100% var(--chamfer-size),100% calc(100% - var(--chamfer-size)),calc(100% - var(--chamfer-size)) 100%,var(--chamfer-size) 100%,0 calc(100% - var(--chamfer-size)),0 var(--chamfer-size))}.gradient-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-active))}.gradient-secondary{background:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-active))}.gradient-surface{background:linear-gradient(135deg,var(--color-surface),var(--color-background-elevated))}.glow-primary{box-shadow:0 0 20px #1a73e880}.glow-secondary{box-shadow:0 0 20px #34a85380}.glow-error{box-shadow:0 0 20px #ea433580}.hover-lift{transition:transform var(--transition-base)}.hover-lift:hover{transform:translateY(-2px)}.hover-glow{transition:box-shadow var(--transition-base)}.hover-glow:hover{box-shadow:0 0 20px #1a73e866}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn var(--transition-base)}.animate-slide-up{animation:slideUp var(--transition-base)}.animate-slide-down{animation:slideDown var(--transition-base)}.animate-spin{animation:spin 1s linear infinite}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.gap-xl{gap:var(--spacing-xl)}.m-0{margin:0}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.p-xl{padding:var(--spacing-xl)}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.text-3xl{font-size:var(--font-size-3xl)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-disabled{color:var(--color-text-disabled)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.bg-surface{background-color:var(--color-surface)}.bg-elevated{background-color:var(--color-background-elevated)}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.w-full{width:100%}.w-auto{width:auto}.h-full{height:100%}.h-auto{height:auto}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-scroll{overflow:scroll}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-disabled)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._container_u3o0e_1{width:100%;margin-left:auto;margin-right:auto}._padding_u3o0e_7{padding-left:var(--container-padding);padding-right:var(--container-padding)}._maxWidth-sm_u3o0e_12{max-width:640px}._maxWidth-md_u3o0e_16{max-width:768px}._maxWidth-lg_u3o0e_20{max-width:1024px}._maxWidth-xl_u3o0e_24{max-width:var(--container-max-width)}._maxWidth-full_u3o0e_28{max-width:100%}@media (max-width: 768px){._padding_u3o0e_7{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}}._topBar_10g3c_1{position:sticky;top:0;left:0;right:0;height:var(--topbar-height);background-color:var(--topbar-background);border-bottom:1px solid var(--topbar-border);z-index:var(--z-sticky);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._content_10g3c_13{height:100%;max-width:var(--container-max-width);margin:0 auto;padding:0 var(--container-padding);display:flex;align-items:center;justify-content:space-between}._left_10g3c_23{display:flex;align-items:center;gap:var(--spacing-xl);flex:1}._right_10g3c_30{display:flex;align-items:center;gap:var(--spacing-md)}._logo_10g3c_36{display:flex;align-items:center;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-primary);font-family:var(--font-heading)}@media (max-width: 768px){._content_10g3c_13{padding:0 var(--spacing-md)}._left_10g3c_23{gap:var(--spacing-md)}._right_10g3c_30{gap:var(--spacing-sm)}}._footer_zjuj8_1{background-color:var(--color-background-elevated);border-top:1px solid var(--color-border);margin-top:auto}._content_zjuj8_7{max-width:var(--container-max-width);margin:0 auto;padding:var(--spacing-xl) var(--container-padding)}._defaultContent_zjuj8_13{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);text-align:center}._copyright_zjuj8_21{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._disclaimer_zjuj8_26{font-size:var(--font-size-xs);color:var(--color-text-disabled)}@media (max-width: 768px){._content_zjuj8_7{padding:var(--spacing-lg) var(--spacing-md)}}._button_159ms_1{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-family:var(--font-primary);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);border:2px solid transparent;text-align:center;-webkit-user-select:none;user-select:none}._button_159ms_1:disabled{opacity:.5;cursor:not-allowed}._sm_159ms_22{height:32px;padding:0 var(--spacing-md);font-size:var(--font-size-sm)}._md_159ms_28{height:var(--button-height);padding:0 var(--button-padding-x);font-size:var(--font-size-base)}._lg_159ms_34{height:48px;padding:0 var(--spacing-xl);font-size:var(--font-size-lg)}._primary_159ms_41{background-color:var(--color-primary);color:var(--color-text-primary)}._primary_159ms_41:hover:not(:disabled){background-color:var(--color-primary-hover);box-shadow:var(--shadow-md)}._primary_159ms_41:active:not(:disabled){background-color:var(--color-primary-active)}._secondary_159ms_55{background-color:var(--color-secondary);color:var(--color-text-primary)}._secondary_159ms_55:hover:not(:disabled){background-color:var(--color-secondary-hover);box-shadow:var(--shadow-md)}._secondary_159ms_55:active:not(:disabled){background-color:var(--color-secondary-active)}._outline_159ms_69{background-color:transparent;border-color:var(--color-border);color:var(--color-text-primary)}._outline_159ms_69:hover:not(:disabled){background-color:var(--color-background-hover);border-color:var(--color-primary)}._ghost_159ms_80{background-color:transparent;color:var(--color-text-primary)}._ghost_159ms_80:hover:not(:disabled){background-color:var(--color-background-hover)}._danger_159ms_89{background-color:var(--color-error);color:var(--color-text-primary)}._danger_159ms_89:hover:not(:disabled){background-color:#c33a2e;box-shadow:var(--shadow-md)}._fullWidth_159ms_100{width:100%}._loading_159ms_105{position:relative;pointer-events:none}._loadingSpinner_159ms_110{display:flex;align-items:center;gap:var(--spacing-sm)}._spinner_159ms_116{width:16px;height:16px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:_spin_159ms_116 .6s linear infinite}@keyframes _spin_159ms_116{to{transform:rotate(360deg)}}._loadingText_159ms_131{opacity:.7}._inputWrapper_15t4g_1{display:flex;flex-direction:column;gap:var(--spacing-xs)}._fullWidth_15t4g_7{width:100%}._label_15t4g_11{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}._required_15t4g_20{color:var(--color-error)}._input_15t4g_1{height:var(--input-height);padding:var(--input-padding-y) var(--input-padding-x);font-size:var(--font-size-base);font-family:var(--font-primary);color:var(--color-text-primary);background-color:var(--input-background);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:all var(--transition-base);outline:none}._input_15t4g_1:hover{border-color:var(--color-text-disabled)}._input_15t4g_1:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1a73e81a}._input_15t4g_1:disabled{opacity:.5;cursor:not-allowed}._input_15t4g_1::placeholder{color:var(--color-text-disabled)}._input_15t4g_1._error_15t4g_55{border-color:var(--color-error)}._input_15t4g_1._error_15t4g_55:focus{box-shadow:0 0 0 3px #ea43351a}._errorText_15t4g_63{font-size:var(--font-size-sm);color:var(--color-error)}._helperText_15t4g_68{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._selectWrapper_ir4bq_1{display:flex;flex-direction:column;gap:var(--spacing-xs)}._fullWidth_ir4bq_7{width:100%}._label_ir4bq_11{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}._required_ir4bq_20{color:var(--color-error)}._selectContainer_ir4bq_24{position:relative;display:inline-block;width:100%}._select_ir4bq_1{width:100%;height:var(--input-height);padding:var(--input-padding-y) var(--input-padding-x);padding-right:calc(var(--input-padding-x) + 24px);font-size:var(--font-size-base);font-family:var(--font-primary);color:var(--color-text-primary);background-color:var(--input-background);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:all var(--transition-base);outline:none;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}._select_ir4bq_1:hover{border-color:var(--color-text-disabled)}._select_ir4bq_1:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1a73e81a}._select_ir4bq_1:disabled{opacity:.5;cursor:not-allowed}._select_ir4bq_1._error_ir4bq_63{border-color:var(--color-error)}._select_ir4bq_1._error_ir4bq_63:focus{box-shadow:0 0 0 3px #ea43351a}._arrow_ir4bq_71{position:absolute;right:var(--input-padding-x);top:50%;transform:translateY(-50%);pointer-events:none;font-size:var(--font-size-xs);color:var(--color-text-secondary)}._errorText_ir4bq_81{font-size:var(--font-size-sm);color:var(--color-error)}._helperText_ir4bq_86{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._select_ir4bq_1 option{background-color:var(--color-surface);color:var(--color-text-primary)}._allyCodeDropdown_1m0tw_1{position:relative;display:flex;align-items:center;gap:.5rem}._select_1m0tw_8{min-width:200px}._manageButton_1m0tw_12{white-space:nowrap}._managePanel_1m0tw_16{position:absolute;top:100%;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem;margin-top:.5rem;min-width:300px;box-shadow:0 4px 6px #0000001a;z-index:1000}._managePanel_1m0tw_16 h4{margin:0 0 1rem;font-size:.875rem;font-weight:600;color:var(--color-text-primary)}._addSection_1m0tw_37{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}._addInputGroup_1m0tw_43{display:flex;gap:.5rem;margin-bottom:.5rem}._addInputGroup_1m0tw_43 input{flex:1;font-family:monospace;letter-spacing:.05em}._error_1m0tw_55{font-size:.75rem;color:var(--color-error);margin-top:.25rem}._success_1m0tw_61{font-size:.75rem;color:var(--color-success);margin-top:.25rem}._codesList_1m0tw_67{margin-bottom:1rem}._codeItem_1m0tw_71{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--color-border)}._codeItem_1m0tw_71:last-of-type{border-bottom:none}._codeItem_1m0tw_71 span{font-size:.875rem;color:var(--color-text-secondary)}._doneButton_1m0tw_88{width:100%}@media (max-width: 768px){._select_1m0tw_8{min-width:150px}._managePanel_1m0tw_16{right:auto;left:0}}._card_1n0ll_1{background-color:var(--card-background);border-radius:var(--radius-lg);transition:transform var(--transition-base),box-shadow var(--transition-base)}._default_1n0ll_8{background-color:var(--card-background)}._elevated_1n0ll_12{background-color:var(--card-background);box-shadow:var(--shadow-md)}._outline_1n0ll_17{background-color:transparent;border:1px solid var(--card-border)}._padding-none_1n0ll_23{padding:0}._padding-sm_1n0ll_27{padding:var(--spacing-sm)}._padding-md_1n0ll_31{padding:var(--card-padding)}._padding-lg_1n0ll_35{padding:var(--spacing-xl)}._hoverable_1n0ll_40{cursor:pointer;will-change:transform;backface-visibility:hidden;transform:translateZ(0)}._hoverable_1n0ll_40:hover{transform:translateY(-4px) translateZ(0);box-shadow:var(--shadow-lg)}._hoverable_1n0ll_40:active{transform:translateY(-1px) translateZ(0);box-shadow:var(--shadow-md)}._card_1n0ll_1[role=button]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._badge_rk7t5_1{display:inline-flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium);border-radius:var(--radius-full);white-space:nowrap}._sm_rk7t5_11{padding:2px 8px;font-size:var(--font-size-xs)}._md_rk7t5_16{padding:4px 12px;font-size:var(--font-size-sm)}._lg_rk7t5_21{padding:6px 16px;font-size:var(--font-size-base)}._default_rk7t5_27{background-color:var(--color-surface);color:var(--color-text-secondary)}._primary_rk7t5_32{background-color:var(--color-primary);color:var(--color-text-primary)}._secondary_rk7t5_37{background-color:var(--color-secondary);color:var(--color-text-primary)}._success_rk7t5_42{background-color:var(--color-success);color:var(--color-text-primary)}._warning_rk7t5_47{background-color:var(--color-warning);color:var(--color-background)}._error_rk7t5_52{background-color:var(--color-error);color:var(--color-text-primary)}._info_rk7t5_57{background-color:var(--color-info);color:var(--color-text-primary)}._overlay_1b3yt_1{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000bf;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--spacing-md);animation:_fadeIn_1b3yt_1 var(--transition-base)}._modal_1b3yt_13{background-color:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:_slideUp_1b3yt_1 var(--transition-base)}._sm_1b3yt_25{width:100%;max-width:400px}._md_1b3yt_30{width:100%;max-width:600px}._lg_1b3yt_35{width:100%;max-width:800px}._xl_1b3yt_40{width:100%;max-width:1200px}._header_1b3yt_45{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}._title_1b3yt_53{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}._closeButton_1b3yt_60{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--color-text-secondary);transition:all var(--transition-fast);font-size:var(--font-size-xl);line-height:1}._closeButton_1b3yt_60:hover{background-color:var(--color-background-hover);color:var(--color-text-primary)}._content_1b3yt_78{padding:var(--spacing-lg);overflow-y:auto;flex:1}@keyframes _fadeIn_1b3yt_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUp_1b3yt_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){._modal_1b3yt_13{max-height:95vh}._header_1b3yt_45,._content_1b3yt_78{padding:var(--spacing-md)}}._spinner_1uhnh_2{border:3px solid rgba(255,255,255,.1);border-top-color:var(--color-primary);border-radius:50%;animation:_spin_1uhnh_2 .8s linear infinite}._spinner_1uhnh_2._sm_1uhnh_9{width:16px;height:16px;border-width:2px}._spinner_1uhnh_2._md_1uhnh_15{width:32px;height:32px;border-width:3px}._spinner_1uhnh_2._lg_1uhnh_21{width:48px;height:48px;border-width:4px}@keyframes _spin_1uhnh_2{to{transform:rotate(360deg)}}._dots_1uhnh_34{display:inline-flex;gap:8px}._dots_1uhnh_34._sm_1uhnh_9{gap:4px}._dots_1uhnh_34._lg_1uhnh_21{gap:12px}._dot_1uhnh_34{display:inline-block;background-color:var(--color-primary);border-radius:50%;animation:_bounce_1uhnh_1 1.4s infinite ease-in-out both}._dots_1uhnh_34._sm_1uhnh_9 ._dot_1uhnh_34{width:6px;height:6px}._dots_1uhnh_34._md_1uhnh_15 ._dot_1uhnh_34{width:10px;height:10px}._dots_1uhnh_34._lg_1uhnh_21 ._dot_1uhnh_34{width:14px;height:14px}._dot_1uhnh_34:nth-child(1){animation-delay:-.32s}._dot_1uhnh_34:nth-child(2){animation-delay:-.16s}@keyframes _bounce_1uhnh_1{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}._visuallyHidden_1uhnh_91{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
1
+ :root{--color-primary: #1a73e8;--color-primary-hover: #1557b0;--color-primary-active: #0d3c78;--color-secondary: #34a853;--color-secondary-hover: #2d8e47;--color-secondary-active: #1f6631;--color-background: #0a0e27;--color-background-elevated: #131729;--color-background-hover: #1a1f3a;--color-surface: #1e2139;--color-border: #2a2f4a;--color-text-primary: #ffffff;--color-text-secondary: #a0a5c0;--color-text-disabled: #5a5f7a;--color-success: #34a853;--color-warning: #fbbc04;--color-error: #ea4335;--color-info: #4285f4;--tier-grey: #C0EEEE;--tier-green: #47c43c;--tier-blue: #1D99FF;--tier-purple: #8b5cf6;--tier-gold: #ffcc33;--tier-gold-glow: rgba(255, 204, 51, .6);--tier-purple-glow: rgba(139, 92, 246, .5);--tier-blue-glow: rgba(29, 153, 255, .5);--sixdot-gradient-start: #60a5fa;--sixdot-gradient-mid: #a855f7;--sixdot-gradient-end: #f59e0b;--sixdot-border-opacity: .3;--font-primary: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-heading: "Orbitron", var(--font-primary);--font-mono: "Fira Code", "Courier New", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -2px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 10px 10px -5px rgba(0, 0, 0, .5);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-toast: 400;--z-tooltip: 500;--chamfer-size: 8px;--chamfer-size-lg: 12px;--chamfer-size-sm: 4px;--transition-fast: .15s ease-in-out;--transition-base: .2s ease-in-out;--transition-slow: .3s ease-in-out;--topbar-height: 64px;--topbar-background: var(--color-background-elevated);--topbar-border: var(--color-border);--container-max-width: 1280px;--container-padding: var(--spacing-md);--button-height: 40px;--button-padding-x: var(--spacing-lg);--button-padding-y: var(--spacing-sm);--input-height: 40px;--input-padding-x: var(--spacing-md);--input-padding-y: var(--spacing-sm);--input-border: var(--color-border);--input-background: var(--color-surface);--card-padding: var(--spacing-lg);--card-background: var(--color-surface);--card-border: var(--color-border)}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body{height:100%}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{line-height:var(--line-height-normal);font-family:var(--font-primary);font-size:var(--font-size-base);color:var(--color-text-primary);background-color:var(--color-background)}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}ul,ol{list-style:none}a{color:inherit;text-decoration:none}#root{isolation:isolate;min-height:100%}.chamfered-box{position:relative;clip-path:polygon(var(--chamfer-size) 0,calc(100% - var(--chamfer-size)) 0,100% var(--chamfer-size),100% calc(100% - var(--chamfer-size)),calc(100% - var(--chamfer-size)) 100%,var(--chamfer-size) 100%,0 calc(100% - var(--chamfer-size)),0 var(--chamfer-size))}.chamfered-box-lg{position:relative;clip-path:polygon(var(--chamfer-size-lg) 0,calc(100% - var(--chamfer-size-lg)) 0,100% var(--chamfer-size-lg),100% calc(100% - var(--chamfer-size-lg)),calc(100% - var(--chamfer-size-lg)) 100%,var(--chamfer-size-lg) 100%,0 calc(100% - var(--chamfer-size-lg)),0 var(--chamfer-size-lg))}.chamfered-box-sm{position:relative;clip-path:polygon(var(--chamfer-size-sm) 0,calc(100% - var(--chamfer-size-sm)) 0,100% var(--chamfer-size-sm),100% calc(100% - var(--chamfer-size-sm)),calc(100% - var(--chamfer-size-sm)) 100%,var(--chamfer-size-sm) 100%,0 calc(100% - var(--chamfer-size-sm)),0 var(--chamfer-size-sm))}.chamfered-box-asymmetric{position:relative;clip-path:polygon(12px 0%,calc(100% - 12px) 0%,100% 12px,100% calc(100% - 24px),calc(100% - 24px) 100%,12px 100%,0% calc(100% - 12px),0% 12px)}.chamfered-border{position:relative;background:var(--color-surface)}.chamfered-border:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;padding:2px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;clip-path:polygon(var(--chamfer-size) 0,calc(100% - var(--chamfer-size)) 0,100% var(--chamfer-size),100% calc(100% - var(--chamfer-size)),calc(100% - var(--chamfer-size)) 100%,var(--chamfer-size) 100%,0 calc(100% - var(--chamfer-size)),0 var(--chamfer-size))}.chamfered-diagonal-border{position:absolute;background-color:currentColor;transition:background-color .3s ease;z-index:5;pointer-events:none}.chamfered-diagonal-tl{top:-1px;left:11px;width:16px;height:2px;transform:rotate(135deg);transform-origin:left center}.chamfered-diagonal-tr{top:10px;right:0;width:18px;height:2px;transform:rotate(45deg);transform-origin:right center}.chamfered-diagonal-bl{bottom:-2px;left:12px;width:20px;height:2px;transform:rotate(-135deg);transform-origin:left center}.chamfered-diagonal-br{bottom:11px;right:-1px;width:18px;height:2px;transform:rotate(-45deg);transform-origin:right center}.chamfered-diagonal-br-large{bottom:23px;right:-1px;width:35px;height:2px;transform:rotate(-45deg);transform-origin:right center}.gradient-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-active))}.gradient-secondary{background:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-active))}.gradient-surface{background:linear-gradient(135deg,var(--color-surface),var(--color-background-elevated))}.glow-primary{box-shadow:0 0 20px #1a73e880}.glow-secondary{box-shadow:0 0 20px #34a85380}.glow-error{box-shadow:0 0 20px #ea433580}.glow-tier-gold{box-shadow:0 0 20px var(--tier-gold-glow)}.glow-tier-purple{box-shadow:0 0 20px var(--tier-purple-glow)}.glow-tier-blue{box-shadow:0 0 20px var(--tier-blue-glow)}.sixdot-border{position:relative}.sixdot-border:before{content:"";position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;background:linear-gradient(45deg,var(--sixdot-gradient-start),var(--sixdot-gradient-mid),var(--sixdot-gradient-end));border-radius:inherit;opacity:var(--sixdot-border-opacity);z-index:-1}.sixdot-glow{background:linear-gradient(135deg,#4338ca33,#7c3aed33)}.hover-scale{transition:transform var(--transition-base)}.hover-scale:hover{transform:scale(1.02)}.hover-brighten{transition:filter var(--transition-base)}.hover-brighten:hover{filter:brightness(1.1)}.hover-lift{transition:transform var(--transition-base)}.hover-lift:hover{transform:translateY(-2px)}.hover-glow{transition:box-shadow var(--transition-base)}.hover-glow:hover{box-shadow:0 0 20px #1a73e866}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn var(--transition-base)}.animate-slide-up{animation:slideUp var(--transition-base)}.animate-slide-down{animation:slideDown var(--transition-base)}.animate-spin{animation:spin 1s linear infinite}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.gap-xl{gap:var(--spacing-xl)}.m-0{margin:0}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.p-xl{padding:var(--spacing-xl)}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.text-3xl{font-size:var(--font-size-3xl)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-disabled{color:var(--color-text-disabled)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.bg-surface{background-color:var(--color-surface)}.bg-elevated{background-color:var(--color-background-elevated)}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.w-full{width:100%}.w-auto{width:auto}.h-full{height:100%}.h-auto{height:auto}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-scroll{overflow:scroll}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-disabled)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.bg-overlay{position:relative}.bg-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-gradient, linear-gradient(135deg, rgba(15, 23, 42, .7), rgba(15, 23, 42, .5)));z-index:0}.bg-overlay>*{position:relative;z-index:1}.backdrop-image{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;background-repeat:no-repeat}._container_u3o0e_1{width:100%;margin-left:auto;margin-right:auto}._padding_u3o0e_7{padding-left:var(--container-padding);padding-right:var(--container-padding)}._maxWidth-sm_u3o0e_12{max-width:640px}._maxWidth-md_u3o0e_16{max-width:768px}._maxWidth-lg_u3o0e_20{max-width:1024px}._maxWidth-xl_u3o0e_24{max-width:var(--container-max-width)}._maxWidth-full_u3o0e_28{max-width:100%}@media (max-width: 768px){._padding_u3o0e_7{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}}._topBar_10g3c_1{position:sticky;top:0;left:0;right:0;height:var(--topbar-height);background-color:var(--topbar-background);border-bottom:1px solid var(--topbar-border);z-index:var(--z-sticky);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._content_10g3c_13{height:100%;max-width:var(--container-max-width);margin:0 auto;padding:0 var(--container-padding);display:flex;align-items:center;justify-content:space-between}._left_10g3c_23{display:flex;align-items:center;gap:var(--spacing-xl);flex:1}._right_10g3c_30{display:flex;align-items:center;gap:var(--spacing-md)}._logo_10g3c_36{display:flex;align-items:center;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-primary);font-family:var(--font-heading)}@media (max-width: 768px){._content_10g3c_13{padding:0 var(--spacing-md)}._left_10g3c_23{gap:var(--spacing-md)}._right_10g3c_30{gap:var(--spacing-sm)}}._footer_zjuj8_1{background-color:var(--color-background-elevated);border-top:1px solid var(--color-border);margin-top:auto}._content_zjuj8_7{max-width:var(--container-max-width);margin:0 auto;padding:var(--spacing-xl) var(--container-padding)}._defaultContent_zjuj8_13{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);text-align:center}._copyright_zjuj8_21{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._disclaimer_zjuj8_26{font-size:var(--font-size-xs);color:var(--color-text-disabled)}@media (max-width: 768px){._content_zjuj8_7{padding:var(--spacing-lg) var(--spacing-md)}}._button_159ms_1{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-family:var(--font-primary);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);border:2px solid transparent;text-align:center;-webkit-user-select:none;user-select:none}._button_159ms_1:disabled{opacity:.5;cursor:not-allowed}._sm_159ms_22{height:32px;padding:0 var(--spacing-md);font-size:var(--font-size-sm)}._md_159ms_28{height:var(--button-height);padding:0 var(--button-padding-x);font-size:var(--font-size-base)}._lg_159ms_34{height:48px;padding:0 var(--spacing-xl);font-size:var(--font-size-lg)}._primary_159ms_41{background-color:var(--color-primary);color:var(--color-text-primary)}._primary_159ms_41:hover:not(:disabled){background-color:var(--color-primary-hover);box-shadow:var(--shadow-md)}._primary_159ms_41:active:not(:disabled){background-color:var(--color-primary-active)}._secondary_159ms_55{background-color:var(--color-secondary);color:var(--color-text-primary)}._secondary_159ms_55:hover:not(:disabled){background-color:var(--color-secondary-hover);box-shadow:var(--shadow-md)}._secondary_159ms_55:active:not(:disabled){background-color:var(--color-secondary-active)}._outline_159ms_69{background-color:transparent;border-color:var(--color-border);color:var(--color-text-primary)}._outline_159ms_69:hover:not(:disabled){background-color:var(--color-background-hover);border-color:var(--color-primary)}._ghost_159ms_80{background-color:transparent;color:var(--color-text-primary)}._ghost_159ms_80:hover:not(:disabled){background-color:var(--color-background-hover)}._danger_159ms_89{background-color:var(--color-error);color:var(--color-text-primary)}._danger_159ms_89:hover:not(:disabled){background-color:#c33a2e;box-shadow:var(--shadow-md)}._fullWidth_159ms_100{width:100%}._loading_159ms_105{position:relative;pointer-events:none}._loadingSpinner_159ms_110{display:flex;align-items:center;gap:var(--spacing-sm)}._spinner_159ms_116{width:16px;height:16px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:_spin_159ms_116 .6s linear infinite}@keyframes _spin_159ms_116{to{transform:rotate(360deg)}}._loadingText_159ms_131{opacity:.7}._inputWrapper_15t4g_1{display:flex;flex-direction:column;gap:var(--spacing-xs)}._fullWidth_15t4g_7{width:100%}._label_15t4g_11{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}._required_15t4g_20{color:var(--color-error)}._input_15t4g_1{height:var(--input-height);padding:var(--input-padding-y) var(--input-padding-x);font-size:var(--font-size-base);font-family:var(--font-primary);color:var(--color-text-primary);background-color:var(--input-background);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:all var(--transition-base);outline:none}._input_15t4g_1:hover{border-color:var(--color-text-disabled)}._input_15t4g_1:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1a73e81a}._input_15t4g_1:disabled{opacity:.5;cursor:not-allowed}._input_15t4g_1::placeholder{color:var(--color-text-disabled)}._input_15t4g_1._error_15t4g_55{border-color:var(--color-error)}._input_15t4g_1._error_15t4g_55:focus{box-shadow:0 0 0 3px #ea43351a}._errorText_15t4g_63{font-size:var(--font-size-sm);color:var(--color-error)}._helperText_15t4g_68{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._selectWrapper_ir4bq_1{display:flex;flex-direction:column;gap:var(--spacing-xs)}._fullWidth_ir4bq_7{width:100%}._label_ir4bq_11{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}._required_ir4bq_20{color:var(--color-error)}._selectContainer_ir4bq_24{position:relative;display:inline-block;width:100%}._select_ir4bq_1{width:100%;height:var(--input-height);padding:var(--input-padding-y) var(--input-padding-x);padding-right:calc(var(--input-padding-x) + 24px);font-size:var(--font-size-base);font-family:var(--font-primary);color:var(--color-text-primary);background-color:var(--input-background);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:all var(--transition-base);outline:none;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}._select_ir4bq_1:hover{border-color:var(--color-text-disabled)}._select_ir4bq_1:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1a73e81a}._select_ir4bq_1:disabled{opacity:.5;cursor:not-allowed}._select_ir4bq_1._error_ir4bq_63{border-color:var(--color-error)}._select_ir4bq_1._error_ir4bq_63:focus{box-shadow:0 0 0 3px #ea43351a}._arrow_ir4bq_71{position:absolute;right:var(--input-padding-x);top:50%;transform:translateY(-50%);pointer-events:none;font-size:var(--font-size-xs);color:var(--color-text-secondary)}._errorText_ir4bq_81{font-size:var(--font-size-sm);color:var(--color-error)}._helperText_ir4bq_86{font-size:var(--font-size-sm);color:var(--color-text-secondary)}._select_ir4bq_1 option{background-color:var(--color-surface);color:var(--color-text-primary)}._allyCodeDropdown_1m0tw_1{position:relative;display:flex;align-items:center;gap:.5rem}._select_1m0tw_8{min-width:200px}._manageButton_1m0tw_12{white-space:nowrap}._managePanel_1m0tw_16{position:absolute;top:100%;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem;margin-top:.5rem;min-width:300px;box-shadow:0 4px 6px #0000001a;z-index:1000}._managePanel_1m0tw_16 h4{margin:0 0 1rem;font-size:.875rem;font-weight:600;color:var(--color-text-primary)}._addSection_1m0tw_37{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}._addInputGroup_1m0tw_43{display:flex;gap:.5rem;margin-bottom:.5rem}._addInputGroup_1m0tw_43 input{flex:1;font-family:monospace;letter-spacing:.05em}._error_1m0tw_55{font-size:.75rem;color:var(--color-error);margin-top:.25rem}._success_1m0tw_61{font-size:.75rem;color:var(--color-success);margin-top:.25rem}._codesList_1m0tw_67{margin-bottom:1rem}._codeItem_1m0tw_71{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--color-border)}._codeItem_1m0tw_71:last-of-type{border-bottom:none}._codeItem_1m0tw_71 span{font-size:.875rem;color:var(--color-text-secondary)}._doneButton_1m0tw_88{width:100%}@media (max-width: 768px){._select_1m0tw_8{min-width:150px}._managePanel_1m0tw_16{right:auto;left:0}}._card_1n0ll_1{background-color:var(--card-background);border-radius:var(--radius-lg);transition:transform var(--transition-base),box-shadow var(--transition-base)}._default_1n0ll_8{background-color:var(--card-background)}._elevated_1n0ll_12{background-color:var(--card-background);box-shadow:var(--shadow-md)}._outline_1n0ll_17{background-color:transparent;border:1px solid var(--card-border)}._padding-none_1n0ll_23{padding:0}._padding-sm_1n0ll_27{padding:var(--spacing-sm)}._padding-md_1n0ll_31{padding:var(--card-padding)}._padding-lg_1n0ll_35{padding:var(--spacing-xl)}._hoverable_1n0ll_40{cursor:pointer;will-change:transform;backface-visibility:hidden;transform:translateZ(0)}._hoverable_1n0ll_40:hover{transform:translateY(-4px) translateZ(0);box-shadow:var(--shadow-lg)}._hoverable_1n0ll_40:active{transform:translateY(-1px) translateZ(0);box-shadow:var(--shadow-md)}._card_1n0ll_1[role=button]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._badge_rk7t5_1{display:inline-flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium);border-radius:var(--radius-full);white-space:nowrap}._sm_rk7t5_11{padding:2px 8px;font-size:var(--font-size-xs)}._md_rk7t5_16{padding:4px 12px;font-size:var(--font-size-sm)}._lg_rk7t5_21{padding:6px 16px;font-size:var(--font-size-base)}._default_rk7t5_27{background-color:var(--color-surface);color:var(--color-text-secondary)}._primary_rk7t5_32{background-color:var(--color-primary);color:var(--color-text-primary)}._secondary_rk7t5_37{background-color:var(--color-secondary);color:var(--color-text-primary)}._success_rk7t5_42{background-color:var(--color-success);color:var(--color-text-primary)}._warning_rk7t5_47{background-color:var(--color-warning);color:var(--color-background)}._error_rk7t5_52{background-color:var(--color-error);color:var(--color-text-primary)}._info_rk7t5_57{background-color:var(--color-info);color:var(--color-text-primary)}._overlay_1b3yt_1{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000bf;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--spacing-md);animation:_fadeIn_1b3yt_1 var(--transition-base)}._modal_1b3yt_13{background-color:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:_slideUp_1b3yt_1 var(--transition-base)}._sm_1b3yt_25{width:100%;max-width:400px}._md_1b3yt_30{width:100%;max-width:600px}._lg_1b3yt_35{width:100%;max-width:800px}._xl_1b3yt_40{width:100%;max-width:1200px}._header_1b3yt_45{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}._title_1b3yt_53{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}._closeButton_1b3yt_60{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--color-text-secondary);transition:all var(--transition-fast);font-size:var(--font-size-xl);line-height:1}._closeButton_1b3yt_60:hover{background-color:var(--color-background-hover);color:var(--color-text-primary)}._content_1b3yt_78{padding:var(--spacing-lg);overflow-y:auto;flex:1}@keyframes _fadeIn_1b3yt_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUp_1b3yt_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){._modal_1b3yt_13{max-height:95vh}._header_1b3yt_45,._content_1b3yt_78{padding:var(--spacing-md)}}._spinner_1uhnh_2{border:3px solid rgba(255,255,255,.1);border-top-color:var(--color-primary);border-radius:50%;animation:_spin_1uhnh_2 .8s linear infinite}._spinner_1uhnh_2._sm_1uhnh_9{width:16px;height:16px;border-width:2px}._spinner_1uhnh_2._md_1uhnh_15{width:32px;height:32px;border-width:3px}._spinner_1uhnh_2._lg_1uhnh_21{width:48px;height:48px;border-width:4px}@keyframes _spin_1uhnh_2{to{transform:rotate(360deg)}}._dots_1uhnh_34{display:inline-flex;gap:8px}._dots_1uhnh_34._sm_1uhnh_9{gap:4px}._dots_1uhnh_34._lg_1uhnh_21{gap:12px}._dot_1uhnh_34{display:inline-block;background-color:var(--color-primary);border-radius:50%;animation:_bounce_1uhnh_1 1.4s infinite ease-in-out both}._dots_1uhnh_34._sm_1uhnh_9 ._dot_1uhnh_34{width:6px;height:6px}._dots_1uhnh_34._md_1uhnh_15 ._dot_1uhnh_34{width:10px;height:10px}._dots_1uhnh_34._lg_1uhnh_21 ._dot_1uhnh_34{width:14px;height:14px}._dot_1uhnh_34:nth-child(1){animation-delay:-.32s}._dot_1uhnh_34:nth-child(2){animation-delay:-.16s}@keyframes _bounce_1uhnh_1{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}._visuallyHidden_1uhnh_91{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astrogators-shared-ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Shared UI components and utilities for Astrogator's Table applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "repository": {
26
26
  "type": "git",
27
- "url": "https://github.com/psytor/astrogators-shared-ui.git"
27
+ "url": "git+https://github.com/psytor/astrogators-shared-ui.git"
28
28
  },
29
29
  "keywords": [
30
30
  "swgoh",