@timebraid/vue 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1628 @@
1
+ import { defineComponent as b, useSlots as Q, openBlock as a, createElementBlock as n, unref as D, normalizeStyle as d, renderSlot as w, createElementVNode as r, toDisplayString as f, createCommentVNode as v, createTextVNode as $, inject as K, computed as y, normalizeClass as j, createVNode as k, createBlock as F, Fragment as T, renderList as B, withKeys as H, ref as M, watch as W, nextTick as q, onBeforeUnmount as L, Teleport as Y, withModifiers as P, onMounted as U } from "vue";
2
+ const X = { style: { "min-width": "0" } }, Z = { style: { flex: "1", "min-width": "0", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap" } }, J = {
3
+ key: 1,
4
+ style: { "font-size": "var(--text-caption)", color: "var(--label-3)", padding: "7px 14px 0", "line-height": "1.4" }
5
+ }, qt = /* @__PURE__ */ b({
6
+ __name: "TGroup",
7
+ props: {
8
+ title: {},
9
+ footer: {},
10
+ flat: { type: Boolean, default: !1 },
11
+ plainTitle: { type: Boolean, default: !1 }
12
+ },
13
+ setup(e) {
14
+ const o = Q();
15
+ return (t, l) => (a(), n("section", X, [
16
+ e.title || D(o).title ? (a(), n("header", {
17
+ key: 0,
18
+ style: d({
19
+ display: "flex",
20
+ alignItems: "center",
21
+ gap: "8px",
22
+ minHeight: "26px",
23
+ padding: "0 14px 7px",
24
+ minWidth: 0,
25
+ fontWeight: e.plainTitle ? 600 : 500,
26
+ color: e.plainTitle ? "var(--label)" : "var(--label-2)",
27
+ textTransform: e.plainTitle ? "none" : "uppercase",
28
+ letterSpacing: e.plainTitle ? "0" : "var(--tracking-section)",
29
+ fontSize: e.plainTitle ? "13px" : "var(--text-section)"
30
+ })
31
+ }, [
32
+ w(t.$slots, "title", {}, () => [
33
+ r("span", Z, f(e.title), 1)
34
+ ])
35
+ ], 4)) : v("", !0),
36
+ r("div", {
37
+ "data-card": "",
38
+ style: d({ background: "var(--bg-elev)", borderRadius: "var(--r-cell)", boxShadow: e.flat ? "none" : "var(--sh-card)", overflow: "hidden" })
39
+ }, [
40
+ w(t.$slots, "default")
41
+ ], 4),
42
+ e.footer || D(o).footer ? (a(), n("div", J, [
43
+ w(t.$slots, "footer", {}, () => [
44
+ $(f(e.footer), 1)
45
+ ])
46
+ ])) : v("", !0)
47
+ ]));
48
+ }
49
+ }), _ = "https://unpkg.com/lucide-static@latest/icons/", ee = Symbol("timebraid-icon-base"), te = ["data-icon"], C = /* @__PURE__ */ b({
50
+ __name: "TIcon",
51
+ props: {
52
+ name: {},
53
+ size: { default: 16 },
54
+ color: { default: "currentColor" },
55
+ base: {}
56
+ },
57
+ setup(e) {
58
+ const o = e, t = K(ee, _), l = y(() => `url("${o.base ?? t}${o.name}.svg")`);
59
+ return (s, i) => (a(), n("span", {
60
+ role: "img",
61
+ "aria-hidden": "true",
62
+ "data-icon": e.name,
63
+ style: d({
64
+ display: "inline-block",
65
+ flex: "none",
66
+ width: e.size + "px",
67
+ height: e.size + "px",
68
+ background: e.color,
69
+ WebkitMaskImage: l.value,
70
+ maskImage: l.value,
71
+ WebkitMaskRepeat: "no-repeat",
72
+ maskRepeat: "no-repeat",
73
+ WebkitMaskSize: "contain",
74
+ maskSize: "contain",
75
+ WebkitMaskPosition: "center",
76
+ maskPosition: "center"
77
+ })
78
+ }, null, 12, te));
79
+ }
80
+ }), ae = ["role", "tabindex"], ne = { style: { flex: "1", "min-width": "0", padding: "10px 0" } }, oe = {
81
+ key: 0,
82
+ style: { "font-size": "var(--text-subtitle)", color: "var(--label-2)", "margin-top": "1px", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" }
83
+ }, le = {
84
+ key: 1,
85
+ style: { "font-size": "var(--text-row)", color: "var(--label-2)", flex: "none" }
86
+ }, ie = {
87
+ key: 2,
88
+ style: { display: "flex", "align-items": "center", gap: "8px", flex: "none" }
89
+ }, Yt = /* @__PURE__ */ b({
90
+ __name: "TRow",
91
+ props: {
92
+ icon: {},
93
+ iconBg: { default: "var(--accent)" },
94
+ title: {},
95
+ subtitle: {},
96
+ value: {},
97
+ chevron: { type: Boolean, default: !1 },
98
+ danger: { type: Boolean, default: !1 },
99
+ dense: { type: Boolean, default: !1 },
100
+ last: { type: Boolean, default: !1 },
101
+ clickable: { type: Boolean, default: !1 }
102
+ },
103
+ emits: ["click"],
104
+ setup(e, { emit: o }) {
105
+ const t = e, l = o, s = Q(), i = y(() => !!t.subtitle || !!s.subtitle), u = y(() => t.dense ? "var(--row-h-dense)" : i.value ? "var(--row-h-sub)" : "var(--row-h)"), h = (c) => {
106
+ c.key !== "Enter" && c.key !== " " || (c.preventDefault(), l("click", c));
107
+ };
108
+ return (c, x) => (a(), n("div", {
109
+ class: j(e.clickable ? "row-press" : ""),
110
+ role: e.clickable ? "button" : void 0,
111
+ tabindex: e.clickable ? 0 : void 0,
112
+ style: d({
113
+ display: "flex",
114
+ alignItems: "center",
115
+ gap: "12px",
116
+ minHeight: u.value,
117
+ padding: "0 14px 0 16px",
118
+ cursor: e.clickable ? "pointer" : "default",
119
+ position: "relative",
120
+ transition: "background var(--t-fast) var(--ease)",
121
+ minWidth: 0
122
+ }),
123
+ onClick: x[0] || (x[0] = (p) => e.clickable && l("click", p)),
124
+ onKeydown: x[1] || (x[1] = (p) => e.clickable && h(p))
125
+ }, [
126
+ e.icon ? (a(), n("span", {
127
+ key: 0,
128
+ style: d({ width: "var(--icon-square)", height: "var(--icon-square)", borderRadius: "calc(var(--r-btn) - 3px)", background: e.iconBg, color: "var(--on-accent)", display: "grid", placeItems: "center", flex: "none" })
129
+ }, [
130
+ k(C, {
131
+ name: e.icon,
132
+ size: 15
133
+ }, null, 8, ["name"])
134
+ ], 4)) : v("", !0),
135
+ w(c.$slots, "leading"),
136
+ r("div", ne, [
137
+ r("div", {
138
+ style: d({ fontSize: "var(--text-row)", color: e.danger ? "var(--red)" : "var(--label)", overflow: "hidden", textOverflow: "ellipsis", display: "flex", alignItems: "center", gap: "8px", flexWrap: "wrap", rowGap: "2px", minWidth: 0 })
139
+ }, [
140
+ w(c.$slots, "title", {}, () => [
141
+ $(f(e.title), 1)
142
+ ])
143
+ ], 4),
144
+ i.value ? (a(), n("div", oe, [
145
+ w(c.$slots, "subtitle", {}, () => [
146
+ $(f(e.subtitle), 1)
147
+ ])
148
+ ])) : v("", !0)
149
+ ]),
150
+ e.value ? (a(), n("span", le, f(e.value), 1)) : v("", !0),
151
+ D(s).trailing ? (a(), n("span", ie, [
152
+ w(c.$slots, "trailing")
153
+ ])) : v("", !0),
154
+ e.chevron ? (a(), F(C, {
155
+ key: 3,
156
+ name: "chevron-right",
157
+ size: 16,
158
+ color: "var(--label-4)"
159
+ })) : v("", !0),
160
+ e.last ? v("", !0) : (a(), n("span", {
161
+ key: 4,
162
+ "data-sep": "",
163
+ style: d({ position: "absolute", left: e.icon ? "54px" : "14px", right: 0, bottom: 0, height: "1px", background: "var(--sep)" })
164
+ }, null, 4))
165
+ ], 46, ae));
166
+ }
167
+ }), se = ["data-index"], re = ["aria-selected", "onClick"], Ut = /* @__PURE__ */ b({
168
+ __name: "TSeg",
169
+ props: {
170
+ modelValue: {},
171
+ options: {},
172
+ size: { default: "md" }
173
+ },
174
+ emits: ["update:modelValue"],
175
+ setup(e, { emit: o }) {
176
+ const t = e, l = o, s = y(() => Math.max(0, t.options.findIndex((u) => u.value === t.modelValue))), i = y(() => t.options.length);
177
+ return (u, h) => (a(), n("div", {
178
+ role: "tablist",
179
+ style: d({
180
+ position: "relative",
181
+ display: "grid",
182
+ gridTemplateColumns: `repeat(${i.value}, 1fr)`,
183
+ padding: "2px",
184
+ background: "var(--fill)",
185
+ borderRadius: "var(--r-btn)",
186
+ height: e.size === "sm" ? "var(--control-h-sm)" : "var(--seg-h)"
187
+ })
188
+ }, [
189
+ r("span", {
190
+ "data-thumb": "",
191
+ "data-index": s.value,
192
+ style: d({
193
+ position: "absolute",
194
+ top: "2px",
195
+ bottom: "2px",
196
+ left: `calc(2px + ${s.value} * (100% - 4px) / ${i.value})`,
197
+ width: `calc((100% - 4px) / ${i.value})`,
198
+ background: "var(--bg-elev)",
199
+ borderRadius: "calc(var(--r-btn) - 3px)",
200
+ boxShadow: "var(--sh-seg)",
201
+ transition: "left var(--t-base) var(--ease-sheet)"
202
+ })
203
+ }, null, 12, se),
204
+ (a(!0), n(T, null, B(e.options, (c) => (a(), n("button", {
205
+ key: c.value,
206
+ type: "button",
207
+ role: "tab",
208
+ "aria-selected": c.value === e.modelValue,
209
+ style: d({
210
+ position: "relative",
211
+ fontSize: e.size === "sm" ? "var(--text-caption)" : "13px",
212
+ fontWeight: c.value === e.modelValue ? 600 : 500,
213
+ color: c.value === e.modelValue ? "var(--label)" : "var(--label-2)",
214
+ padding: "0 10px",
215
+ transition: "color var(--t-fast)",
216
+ whiteSpace: "nowrap"
217
+ }),
218
+ onClick: (x) => l("update:modelValue", c.value)
219
+ }, f(c.label), 13, re))), 128))
220
+ ], 4));
221
+ }
222
+ }), de = ["type", "disabled"], Xt = /* @__PURE__ */ b({
223
+ __name: "TBtn",
224
+ props: {
225
+ kind: { default: "primary" },
226
+ size: { default: "md" },
227
+ icon: {},
228
+ full: { type: Boolean, default: !1 },
229
+ disabled: { type: Boolean, default: !1 },
230
+ type: { default: "button" }
231
+ },
232
+ emits: ["click"],
233
+ setup(e, { emit: o }) {
234
+ const t = {
235
+ primary: { background: "var(--accent)", color: "var(--on-accent)" },
236
+ tinted: { background: "var(--accent-soft)", color: "var(--accent)" },
237
+ gray: { background: "var(--fill)", color: "var(--label)" },
238
+ plain: { background: "transparent", color: "var(--accent)" },
239
+ danger: { background: "var(--red-soft)", color: "var(--red)" },
240
+ white: { background: "var(--bg-elev)", color: "var(--label)", boxShadow: "var(--sh-card)" }
241
+ }, l = {
242
+ sm: { height: "var(--control-h-sm)", fontSize: "var(--text-subtitle)", padding: "0 10px", icon: 13 },
243
+ md: { height: "var(--control-h-md)", fontSize: "13.5px", padding: "0 14px", icon: 15 },
244
+ lg: { height: "var(--control-h-lg)", fontSize: "var(--text-row)", padding: "0 14px", icon: 15 },
245
+ xl: { height: "var(--control-h-xl)", fontSize: "16px", padding: "0 14px", icon: 15 }
246
+ }, s = e, i = o, u = y(() => ({
247
+ display: s.full ? "flex" : "inline-flex",
248
+ width: s.full ? "100%" : void 0,
249
+ alignItems: "center",
250
+ justifyContent: "center",
251
+ gap: "7px",
252
+ height: l[s.size].height,
253
+ padding: l[s.size].padding,
254
+ borderRadius: s.size === "xl" ? "var(--r-card)" : "var(--r-btn)",
255
+ fontSize: l[s.size].fontSize,
256
+ fontWeight: 600,
257
+ letterSpacing: "-.005em",
258
+ whiteSpace: "nowrap",
259
+ opacity: s.disabled ? 0.4 : 1,
260
+ cursor: s.disabled ? "not-allowed" : "pointer",
261
+ ...t[s.kind]
262
+ })), h = (c) => {
263
+ s.disabled || i("click", c);
264
+ };
265
+ return (c, x) => (a(), n("button", {
266
+ type: e.type,
267
+ class: j(e.disabled ? "" : "press"),
268
+ disabled: e.disabled,
269
+ style: d(u.value),
270
+ onClick: h
271
+ }, [
272
+ e.icon ? (a(), F(C, {
273
+ key: 0,
274
+ name: e.icon,
275
+ size: l[e.size].icon
276
+ }, null, 8, ["name", "size"])) : v("", !0),
277
+ w(c.$slots, "default")
278
+ ], 14, de));
279
+ }
280
+ }), ce = ["title", "aria-label", "disabled"], R = /* @__PURE__ */ b({
281
+ __name: "TIconBtn",
282
+ props: {
283
+ icon: {},
284
+ label: {},
285
+ size: { default: 30 },
286
+ tone: { default: "default" },
287
+ disabled: { type: Boolean, default: !1 }
288
+ },
289
+ emits: ["click"],
290
+ setup(e, { emit: o }) {
291
+ const t = {
292
+ default: { background: "var(--fill)", color: "var(--label)" },
293
+ soft: { background: "var(--accent-soft)", color: "var(--accent)" },
294
+ accent: { background: "var(--accent)", color: "var(--on-accent)" }
295
+ }, l = e, s = o, i = y(() => ({
296
+ width: l.size + "px",
297
+ height: l.size + "px",
298
+ borderRadius: "50%",
299
+ display: "inline-grid",
300
+ placeItems: "center",
301
+ flex: "none",
302
+ opacity: l.disabled ? 0.4 : 1,
303
+ cursor: l.disabled ? "not-allowed" : "pointer",
304
+ ...t[l.tone]
305
+ }));
306
+ return (u, h) => (a(), n("button", {
307
+ type: "button",
308
+ class: j(e.disabled ? "" : "press"),
309
+ title: e.label,
310
+ "aria-label": e.label,
311
+ disabled: e.disabled,
312
+ style: d(i.value),
313
+ onClick: h[0] || (h[0] = (c) => !e.disabled && s("click", c))
314
+ }, [
315
+ k(C, {
316
+ name: e.icon,
317
+ size: Math.round(e.size * 0.5)
318
+ }, null, 8, ["name", "size"])
319
+ ], 14, ce));
320
+ }
321
+ }), ue = ["aria-checked", "disabled"], Zt = /* @__PURE__ */ b({
322
+ __name: "TToggle",
323
+ props: {
324
+ modelValue: { type: Boolean },
325
+ disabled: { type: Boolean, default: !1 }
326
+ },
327
+ emits: ["update:modelValue"],
328
+ setup(e, { emit: o }) {
329
+ const t = e, l = o;
330
+ return (s, i) => (a(), n("button", {
331
+ type: "button",
332
+ role: "switch",
333
+ "aria-checked": e.modelValue,
334
+ disabled: e.disabled,
335
+ style: d({
336
+ width: "var(--toggle-w)",
337
+ height: "var(--toggle-h)",
338
+ borderRadius: "var(--r-pill)",
339
+ position: "relative",
340
+ flex: "none",
341
+ background: e.modelValue ? "var(--accent)" : "var(--fill-3)",
342
+ transition: "background var(--t-base) var(--ease)",
343
+ opacity: e.disabled ? 0.4 : 1
344
+ }),
345
+ onClick: i[0] || (i[0] = (u) => !t.disabled && l("update:modelValue", !e.modelValue))
346
+ }, [
347
+ r("span", {
348
+ style: d({
349
+ position: "absolute",
350
+ top: "2px",
351
+ left: e.modelValue ? "20px" : "2px",
352
+ width: "24px",
353
+ height: "24px",
354
+ borderRadius: "50%",
355
+ background: "var(--on-accent)",
356
+ boxShadow: "var(--sh-thumb)",
357
+ transition: "left var(--t-base) var(--ease-sheet)"
358
+ })
359
+ }, null, 4)
360
+ ], 12, ue));
361
+ }
362
+ }), pe = { style: { display: "grid", gap: "5px", "min-width": "0" } }, fe = {
363
+ key: 0,
364
+ style: { "font-size": "var(--text-subtitle)", color: "var(--label-2)", "font-weight": "500" }
365
+ }, ve = ["value", "placeholder", "type", "autofocus", "disabled", "name"], he = {
366
+ key: 0,
367
+ style: { "font-size": "var(--text-caption)", color: "var(--label-3)" }
368
+ }, Jt = /* @__PURE__ */ b({
369
+ __name: "TField",
370
+ props: {
371
+ modelValue: { default: "" },
372
+ label: {},
373
+ placeholder: {},
374
+ mono: { type: Boolean, default: !1 },
375
+ right: {},
376
+ type: { default: "text" },
377
+ autofocus: { type: Boolean, default: !1 },
378
+ disabled: { type: Boolean, default: !1 },
379
+ name: {}
380
+ },
381
+ emits: ["update:modelValue", "submit"],
382
+ setup(e, { emit: o }) {
383
+ const t = o;
384
+ return (l, s) => (a(), n("label", pe, [
385
+ e.label ? (a(), n("span", fe, f(e.label), 1)) : v("", !0),
386
+ r("span", {
387
+ style: d({ display: "flex", alignItems: "center", height: "var(--field-h)", padding: "0 12px", borderRadius: "var(--r-btn)", background: "var(--fill)", gap: "8px", opacity: e.disabled ? 0.5 : 1 })
388
+ }, [
389
+ r("input", {
390
+ value: e.modelValue,
391
+ placeholder: e.placeholder,
392
+ type: e.type,
393
+ autofocus: e.autofocus,
394
+ disabled: e.disabled,
395
+ name: e.name,
396
+ style: d({ flex: 1, minWidth: 0, border: 0, background: "transparent", outline: "none", fontSize: "var(--text-row)", fontFamily: e.mono ? "var(--font-mono)" : "inherit", color: "var(--label)" }),
397
+ onInput: s[0] || (s[0] = (i) => t("update:modelValue", i.target.value)),
398
+ onKeydown: s[1] || (s[1] = H((i) => t("submit"), ["enter"]))
399
+ }, null, 44, ve),
400
+ e.right ? (a(), n("span", he, f(e.right), 1)) : v("", !0)
401
+ ], 4)
402
+ ]));
403
+ }
404
+ }), ge = { style: { position: "relative", display: "inline-flex", "align-items": "center", gap: "6px", color: "var(--label-2)", "font-size": "var(--text-row)", "max-width": "100%" } }, be = ["id", "value", "disabled", "aria-label"], me = ["value"];
405
+ let xe = 0;
406
+ const _t = /* @__PURE__ */ b({
407
+ __name: "TSelect",
408
+ props: {
409
+ modelValue: {},
410
+ options: {},
411
+ disabled: { type: Boolean, default: !1 },
412
+ label: {},
413
+ ariaLabel: {}
414
+ },
415
+ emits: ["update:modelValue"],
416
+ setup(e, { emit: o }) {
417
+ const t = o, l = `t-select-${xe += 1}`;
418
+ return (s, i) => (a(), n("span", ge, [
419
+ e.label ? (a(), n("label", {
420
+ key: 0,
421
+ for: l,
422
+ style: { position: "absolute", width: "1px", height: "1px", overflow: "hidden", "clip-path": "inset(50%)", "white-space": "nowrap" }
423
+ }, f(e.label), 1)) : v("", !0),
424
+ r("select", {
425
+ id: e.label ? l : void 0,
426
+ value: e.modelValue,
427
+ disabled: e.disabled,
428
+ "aria-label": e.ariaLabel,
429
+ style: { appearance: "none", "-webkit-appearance": "none", border: "0", background: "transparent", outline: "none", "font-size": "var(--text-row)", color: "var(--label-2)", "padding-right": "18px", "text-align": "right", direction: "rtl", cursor: "pointer", "max-width": "200px" },
430
+ onChange: i[0] || (i[0] = (u) => t("update:modelValue", u.target.value))
431
+ }, [
432
+ (a(!0), n(T, null, B(e.options, (u) => (a(), n("option", {
433
+ key: u.value,
434
+ value: u.value
435
+ }, f(u.label), 9, me))), 128))
436
+ ], 40, be),
437
+ k(C, {
438
+ name: "chevrons-up-down",
439
+ size: 13,
440
+ color: "var(--label-3)",
441
+ style: { position: "absolute", right: "0", "pointer-events": "none" }
442
+ })
443
+ ]));
444
+ }
445
+ }), ye = {
446
+ key: 0,
447
+ style: { width: "6px", height: "6px", "border-radius": "50%", background: "currentColor", animation: "t-pulse 2s infinite" }
448
+ }, ea = /* @__PURE__ */ b({
449
+ __name: "TBadge",
450
+ props: {
451
+ tone: { default: "neutral" }
452
+ },
453
+ setup(e) {
454
+ const o = {
455
+ neutral: ["var(--fill)", "var(--label-2)"],
456
+ running: ["var(--running-soft)", "var(--running)"],
457
+ green: ["var(--green-soft)", "var(--green)"],
458
+ red: ["var(--red-soft)", "var(--red)"],
459
+ soon: ["transparent", "var(--label-3)"]
460
+ };
461
+ return (t, l) => (a(), n("span", {
462
+ style: d({
463
+ display: "inline-flex",
464
+ alignItems: "center",
465
+ gap: "5px",
466
+ height: "22px",
467
+ padding: "0 9px",
468
+ borderRadius: "var(--r-pill)",
469
+ background: o[e.tone][0],
470
+ color: o[e.tone][1],
471
+ fontSize: "var(--text-caption)",
472
+ fontWeight: 600,
473
+ whiteSpace: "nowrap",
474
+ boxShadow: e.tone === "soon" ? "inset 0 0 0 1px var(--sep-strong)" : "none"
475
+ })
476
+ }, [
477
+ e.tone === "running" ? (a(), n("span", ye)) : v("", !0),
478
+ w(t.$slots, "default")
479
+ ], 4));
480
+ }
481
+ }), ta = /* @__PURE__ */ b({
482
+ __name: "TBar",
483
+ props: {
484
+ value: {},
485
+ color: { default: "var(--accent)" },
486
+ h: { default: 6 }
487
+ },
488
+ setup(e) {
489
+ const o = e, t = y(() => `${Math.min(100, Math.max(0, o.value))}%`);
490
+ return (l, s) => (a(), n("div", {
491
+ style: d({ height: e.h + "px", borderRadius: e.h + "px", background: "var(--fill-2)", overflow: "hidden" })
492
+ }, [
493
+ r("div", {
494
+ "data-fill": "",
495
+ style: d({ width: t.value, height: "100%", background: e.color, borderRadius: e.h + "px", transition: "width var(--t-sheet) var(--ease-out)" })
496
+ }, null, 4)
497
+ ], 4));
498
+ }
499
+ }), aa = /* @__PURE__ */ b({
500
+ __name: "TAvatar",
501
+ props: {
502
+ name: {},
503
+ size: { default: 28 },
504
+ color: {}
505
+ },
506
+ setup(e) {
507
+ const o = e, t = y(() => o.name.trim().split(/\s+/).filter(Boolean).map((l) => l[0]).slice(0, 2).join(""));
508
+ return (l, s) => (a(), n("span", {
509
+ style: d({
510
+ width: e.size + "px",
511
+ height: e.size + "px",
512
+ borderRadius: "50%",
513
+ background: e.color ?? "var(--accent-soft-2)",
514
+ color: e.color ? "var(--on-accent)" : "var(--accent)",
515
+ display: "inline-grid",
516
+ placeItems: "center",
517
+ fontSize: e.size * 0.38 + "px",
518
+ fontWeight: 600,
519
+ flex: "none",
520
+ lineHeight: 1
521
+ })
522
+ }, f(t.value), 5));
523
+ }
524
+ }), we = { style: { display: "flex", "align-items": "flex-end", gap: "16px", padding: "6px 0 14px", "flex-wrap": "wrap" } }, ke = { style: { flex: "1", "min-width": "0" } }, Ae = { style: { margin: "0", "font-size": "var(--text-large-title)", "font-weight": "700", "letter-spacing": "var(--tracking-large-title)", "line-height": "var(--leading-large-title)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap" } }, ze = {
525
+ key: 0,
526
+ style: { "font-size": "var(--text-body)", color: "var(--label-2)", "margin-top": "4px" }
527
+ }, Se = {
528
+ key: 0,
529
+ style: { display: "flex", gap: "8px", "align-items": "center", "flex-wrap": "wrap" }
530
+ }, na = /* @__PURE__ */ b({
531
+ __name: "TLargeTitle",
532
+ props: {
533
+ title: {},
534
+ sub: {}
535
+ },
536
+ setup(e) {
537
+ return (o, t) => (a(), n("div", we, [
538
+ r("div", ke, [
539
+ r("h1", Ae, f(e.title), 1),
540
+ e.sub ? (a(), n("div", ze, f(e.sub), 1)) : v("", !0)
541
+ ]),
542
+ o.$slots.right ? (a(), n("div", Se, [
543
+ w(o.$slots, "right")
544
+ ])) : v("", !0)
545
+ ]));
546
+ }
547
+ }), Te = ["aria-label"], Ce = {
548
+ key: 0,
549
+ "data-handle": "",
550
+ style: { width: "36px", height: "5px", "border-radius": "var(--r-pill)", background: "var(--fill-3)", margin: "8px auto 0" }
551
+ }, Be = {
552
+ key: 1,
553
+ style: { display: "flex", "justify-content": "flex-end", gap: "8px", padding: "0 18px 18px" }
554
+ }, Ie = ["aria-label"], $e = { style: { display: "flex", "align-items": "center", padding: "14px 18px 6px" } }, Ve = { style: { flex: "1", "font-size": "var(--text-title)", "font-weight": "600" } }, Fe = { style: { padding: "8px 18px 18px", display: "grid", gap: "14px" } }, Re = {
555
+ key: 0,
556
+ style: { display: "flex", "justify-content": "flex-end", gap: "8px", padding: "0 18px 18px" }
557
+ }, oa = /* @__PURE__ */ b({
558
+ __name: "TSheet",
559
+ props: {
560
+ open: { type: Boolean },
561
+ title: {},
562
+ mobile: { type: Boolean, default: !1 },
563
+ width: { default: 460 },
564
+ inline: { type: Boolean, default: !1 },
565
+ teleport: { type: Boolean, default: !0 }
566
+ },
567
+ emits: ["close"],
568
+ setup(e, { emit: o }) {
569
+ const t = e, l = o, s = M(null);
570
+ let i = null;
571
+ const u = (h) => {
572
+ h.key === "Escape" && l("close");
573
+ };
574
+ return W(() => t.open, (h) => {
575
+ if (!(typeof window > "u")) {
576
+ if (h) {
577
+ window.addEventListener("keydown", u), i = document.activeElement instanceof HTMLElement ? document.activeElement : null, q(() => {
578
+ var c;
579
+ return (c = s.value) == null ? void 0 : c.focus();
580
+ });
581
+ return;
582
+ }
583
+ window.removeEventListener("keydown", u), i == null || i.focus(), i = null;
584
+ }
585
+ }, { immediate: !0 }), L(() => {
586
+ typeof window < "u" && window.removeEventListener("keydown", u);
587
+ }), (h, c) => (a(), F(Y, {
588
+ to: "body",
589
+ disabled: !e.teleport || e.inline
590
+ }, [
591
+ e.open ? (a(), n(T, { key: 0 }, [
592
+ e.inline ? (a(), n("div", {
593
+ key: 1,
594
+ ref_key: "dialog",
595
+ ref: s,
596
+ role: "dialog",
597
+ tabindex: "-1",
598
+ "aria-label": e.title,
599
+ style: { width: "100%", background: "var(--bg)", borderRadius: "var(--r-card)", boxShadow: "var(--sh-float)", animation: "t-pop var(--t-base) var(--ease-out) both" }
600
+ }, [
601
+ r("div", $e, [
602
+ r("div", Ve, f(e.title), 1),
603
+ k(R, {
604
+ icon: "x",
605
+ label: "Close",
606
+ size: 26,
607
+ onClick: c[4] || (c[4] = (x) => l("close"))
608
+ })
609
+ ]),
610
+ r("div", Fe, [
611
+ w(h.$slots, "default")
612
+ ]),
613
+ h.$slots.footer ? (a(), n("div", Re, [
614
+ w(h.$slots, "footer")
615
+ ])) : v("", !0)
616
+ ], 8, Ie)) : (a(), n("div", {
617
+ key: 0,
618
+ "data-scrim": "",
619
+ style: d({
620
+ position: e.teleport ? "fixed" : "absolute",
621
+ inset: 0,
622
+ zIndex: 80,
623
+ background: "var(--scrim)",
624
+ backdropFilter: "blur(4px)",
625
+ WebkitBackdropFilter: "blur(4px)",
626
+ display: "flex",
627
+ alignItems: e.mobile ? "flex-end" : "center",
628
+ justifyContent: "center",
629
+ animation: "t-scrim var(--t-base) both"
630
+ }),
631
+ onClick: c[3] || (c[3] = (x) => l("close"))
632
+ }, [
633
+ r("div", {
634
+ ref_key: "dialog",
635
+ ref: s,
636
+ role: "dialog",
637
+ "aria-modal": "true",
638
+ tabindex: "-1",
639
+ "aria-label": e.title,
640
+ style: d({
641
+ width: e.mobile ? "100%" : e.width + "px",
642
+ maxWidth: "100%",
643
+ background: "var(--bg)",
644
+ borderRadius: e.mobile ? "var(--r-sheet) var(--r-sheet) 0 0" : "var(--r-card)",
645
+ boxShadow: e.mobile ? "var(--sh-sheet)" : "var(--sh-float)",
646
+ animation: `${e.mobile ? "t-sheet" : "t-pop"} var(--t-sheet) var(--ease-sheet) both`,
647
+ paddingBottom: e.mobile ? "calc(28px + env(safe-area-inset-bottom))" : 0,
648
+ maxHeight: "100%",
649
+ overflow: "auto"
650
+ }),
651
+ onClick: c[2] || (c[2] = P(() => {
652
+ }, ["stop"]))
653
+ }, [
654
+ e.mobile ? (a(), n("div", Ce)) : v("", !0),
655
+ r("div", {
656
+ style: d({ display: "flex", alignItems: "center", padding: e.mobile ? "10px 16px 6px" : "14px 18px 6px" })
657
+ }, [
658
+ e.mobile ? (a(), n("button", {
659
+ key: 0,
660
+ type: "button",
661
+ style: { "font-size": "16px", color: "var(--accent)" },
662
+ onClick: c[0] || (c[0] = (x) => l("close"))
663
+ }, "Cancel")) : v("", !0),
664
+ r("div", {
665
+ style: d({ flex: 1, textAlign: e.mobile ? "center" : "left", fontSize: e.mobile ? "16px" : "var(--text-title)", fontWeight: 600 })
666
+ }, f(e.title), 5),
667
+ e.mobile ? w(h.$slots, "primary", {}, void 0, void 0, 1) : (a(), F(R, {
668
+ key: 2,
669
+ icon: "x",
670
+ label: "Close",
671
+ size: 26,
672
+ onClick: c[1] || (c[1] = (x) => l("close"))
673
+ }))
674
+ ], 4),
675
+ r("div", {
676
+ style: d({ padding: e.mobile ? "6px 16px 0" : "8px 18px 18px", display: "grid", gap: "14px" })
677
+ }, [
678
+ w(h.$slots, "default")
679
+ ], 4),
680
+ !e.mobile && h.$slots.footer ? (a(), n("div", Be, [
681
+ w(h.$slots, "footer")
682
+ ])) : v("", !0)
683
+ ], 12, Te)
684
+ ], 4))
685
+ ], 64)) : v("", !0)
686
+ ], 8, ["disabled"]));
687
+ }
688
+ }), Ee = {
689
+ key: 0,
690
+ style: { position: "absolute", inset: "-3px", borderRadius: "50%", border: "1.5px solid var(--running)", animation: "t-pulse 2s var(--ease) infinite" }
691
+ }, N = /* @__PURE__ */ b({
692
+ __name: "TDot",
693
+ props: {
694
+ color: {},
695
+ size: { default: 9 },
696
+ running: { type: Boolean, default: !1 }
697
+ },
698
+ setup(e) {
699
+ return (o, t) => (a(), n("span", {
700
+ style: d({
701
+ position: "relative",
702
+ display: "inline-block",
703
+ width: e.size + "px",
704
+ height: e.size + "px",
705
+ flex: "none",
706
+ borderRadius: "50%",
707
+ background: e.color,
708
+ boxShadow: e.running ? "0 0 0 3px var(--running-soft)" : "none"
709
+ })
710
+ }, [
711
+ e.running ? (a(), n("span", Ee)) : v("", !0)
712
+ ], 4));
713
+ }
714
+ }), E = (e) => String(e).padStart(2, "0");
715
+ function Me(e, o = "clock") {
716
+ const t = Math.max(0, Math.round(e)), l = Math.floor(t / 3600), s = Math.floor(t % 3600 / 60), i = t % 60;
717
+ return o === "compact" ? l > 0 ? `${l}h ${E(s)}m` : `${s}m ${E(i)}s` : o === "short" ? `${l}:${E(s)}` : `${l}:${E(s)}:${E(i)}`;
718
+ }
719
+ const la = [1, 2, 3, 4, 5, 6, 7, 8].map((e) => `var(--chart-${e})`), O = /* @__PURE__ */ b({
720
+ __name: "TDur",
721
+ props: {
722
+ seconds: {},
723
+ mode: { default: "clock" },
724
+ size: { default: 15 },
725
+ weight: { default: 500 },
726
+ tone: { default: "default" }
727
+ },
728
+ setup(e) {
729
+ const o = { default: "var(--label)", running: "var(--running)", muted: "var(--label-2)", faint: "var(--label-3)" }, t = e, l = y(() => Me(t.seconds, t.mode));
730
+ return (s, i) => (a(), n("span", {
731
+ class: "num",
732
+ style: d({ fontSize: e.size + "px", fontWeight: e.weight, color: o[e.tone], letterSpacing: e.size > 28 ? "-.02em" : "0" })
733
+ }, f(l.value), 5));
734
+ }
735
+ }), Ne = { style: { display: "grid", gap: "6px", "min-width": "0" } }, Oe = { style: { position: "relative", flex: "1", height: "14px" } }, De = { style: { "font-size": "var(--text-subtitle)", color: "var(--label)", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, je = ["data-shared"], ia = /* @__PURE__ */ b({
736
+ __name: "TWaterfall",
737
+ props: {
738
+ rows: {},
739
+ start: { default: 6 },
740
+ end: { default: 19 },
741
+ labelW: { default: 128 },
742
+ rowH: { default: 24 },
743
+ compact: { type: Boolean, default: !1 }
744
+ },
745
+ setup(e) {
746
+ const o = e, t = y(() => Math.max(1e-9, o.end - o.start)), l = y(() => {
747
+ if (o.end <= o.start) return [];
748
+ const c = [];
749
+ for (let x = o.start; x <= o.end; x += o.compact ? 3 : 1) c.push(x);
750
+ return c;
751
+ }), s = (c) => (c - o.start) / t.value * 100, i = (c) => Math.max(0.6, (c.end - c.start) / t.value * 100), u = (c) => c.segments.reduce((x, p) => x + (p.end - p.start), 0) * 3600, h = (c) => String(c).padStart(2, "0");
752
+ return (c, x) => (a(), n("div", Ne, [
753
+ r("div", {
754
+ style: d({ display: "flex", paddingLeft: e.labelW + "px" })
755
+ }, [
756
+ r("div", Oe, [
757
+ (a(!0), n(T, null, B(l.value, (p) => (a(), n("span", {
758
+ key: p,
759
+ class: "num",
760
+ style: d({ position: "absolute", left: s(p) + "%", transform: "translateX(-50%)", fontSize: "10px", color: "var(--label-3)" })
761
+ }, f(h(p)), 5))), 128))
762
+ ])
763
+ ], 4),
764
+ (a(!0), n(T, null, B(e.rows, (p, m) => (a(), n("div", {
765
+ key: m,
766
+ style: { display: "flex", "align-items": "center", gap: "10px" }
767
+ }, [
768
+ r("span", {
769
+ style: d({ width: e.labelW + "px", display: "flex", alignItems: "center", gap: "7px", minWidth: 0, flex: "none" })
770
+ }, [
771
+ k(N, {
772
+ color: p.color,
773
+ size: 8
774
+ }, null, 8, ["color"]),
775
+ r("span", De, f(p.label), 1)
776
+ ], 4),
777
+ r("span", {
778
+ style: d({ position: "relative", flex: 1, height: e.rowH + "px", background: "var(--fill)", borderRadius: "calc(var(--r-btn) - 4px)", overflow: "hidden" })
779
+ }, [
780
+ (a(!0), n(T, null, B(l.value, (g) => (a(), n("span", {
781
+ key: g,
782
+ "data-tick": "",
783
+ style: d({ position: "absolute", left: s(g) + "%", top: 0, bottom: 0, width: "1px", background: "var(--sep)" })
784
+ }, null, 4))), 128)),
785
+ (a(!0), n(T, null, B(p.segments, (g, S) => (a(), n("span", {
786
+ key: S,
787
+ "data-segment": "",
788
+ "data-shared": g.shared ? "" : void 0,
789
+ style: d({
790
+ position: "absolute",
791
+ left: s(g.start) + "%",
792
+ width: i(g) + "%",
793
+ top: "4px",
794
+ bottom: "4px",
795
+ borderRadius: "calc(var(--r-btn) - 6px)",
796
+ background: p.color,
797
+ opacity: g.shared ? 0.55 : 1,
798
+ outline: g.shared ? "1.5px dashed var(--dash)" : "none",
799
+ outlineOffset: "-2px"
800
+ })
801
+ }, null, 12, je))), 128))
802
+ ], 4),
803
+ k(O, {
804
+ seconds: u(p),
805
+ mode: "compact",
806
+ size: 12,
807
+ tone: "muted",
808
+ style: { width: "54px", "text-align": "right", flex: "none" }
809
+ }, null, 8, ["seconds"])
810
+ ]))), 128))
811
+ ]));
812
+ }
813
+ }), Le = { style: { position: "relative", display: "inline-block" } }, Ge = { style: { display: "flex", "align-items": "center", padding: "8px 10px 6px" } }, Qe = { style: { "font-size": "var(--text-section)", "font-weight": "600", color: "var(--label-3)", "text-transform": "uppercase", "letter-spacing": ".05em", flex: "1" } }, We = { style: { flex: "1", "min-width": "0", "line-height": "1.15" } }, Pe = { style: { "font-size": "var(--text-footnote)", color: "var(--label-2)" } }, Ke = ["role", "tabindex", "aria-expanded"], He = {
814
+ key: 0,
815
+ style: { display: "grid", "line-height": "1.15", "min-width": "0", "max-width": "170px" }
816
+ }, qe = { style: { "font-size": "13px", "font-weight": "600", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, Ye = { style: { "font-size": "var(--text-footnote)", color: "var(--label-2)", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, Ue = {
817
+ key: 1,
818
+ style: { "font-size": "11px", "font-weight": "600", color: "var(--label-2)", background: "var(--fill)", "border-radius": "var(--r-pill)", padding: "1px 6px" }
819
+ }, sa = /* @__PURE__ */ b({
820
+ __name: "TPill",
821
+ props: {
822
+ running: {},
823
+ compact: { type: Boolean, default: !1 },
824
+ paused: { type: Boolean, default: !1 },
825
+ open: { type: Boolean, default: !1 }
826
+ },
827
+ emits: ["update:open", "stop", "stopAll", "start", "openApp"],
828
+ setup(e, { emit: o }) {
829
+ const t = e, l = o, s = y(() => t.running[0] ?? null), i = y(() => t.running.length), u = y(() => i.value > 1), h = y(() => {
830
+ var A;
831
+ return u.value && !t.open ? `${i.value} timers running` : ((A = s.value) == null ? void 0 : A.task) ?? "";
832
+ }), c = y(() => {
833
+ var A;
834
+ return u.value && !t.open ? `${t.running[0].task} · ${t.running[1].task}` : ((A = s.value) == null ? void 0 : A.project) ?? "";
835
+ }), x = y(() => ({
836
+ display: "inline-flex",
837
+ alignItems: "center",
838
+ gap: t.compact ? "8px" : "12px",
839
+ height: t.compact ? "var(--pill-h-compact)" : "var(--pill-h)",
840
+ padding: t.compact ? "0 8px 0 10px" : "0 8px 0 14px",
841
+ borderRadius: "var(--r-pill)",
842
+ background: "var(--bg-elev)",
843
+ color: "var(--label)",
844
+ boxShadow: s.value && !t.paused ? "var(--sh-float), 0 0 0 1.5px var(--running)" : "var(--sh-float)",
845
+ transition: "box-shadow var(--t-base)",
846
+ cursor: "pointer",
847
+ maxWidth: "100%"
848
+ })), p = (A) => {
849
+ if (!(A.target instanceof Element && A.target.closest("button") !== null)) {
850
+ if (s.value === null) return l("start");
851
+ t.compact || l("update:open", !t.open);
852
+ }
853
+ }, m = (A) => {
854
+ A.key !== "Enter" && A.key !== " " || (A.preventDefault(), p(A));
855
+ }, g = (A) => {
856
+ A.key === "Escape" && l("update:open", !1);
857
+ };
858
+ W(() => t.open, (A) => {
859
+ typeof window > "u" || (A ? window.addEventListener("keydown", g) : window.removeEventListener("keydown", g));
860
+ }, { immediate: !0 }), L(() => {
861
+ typeof window < "u" && window.removeEventListener("keydown", g);
862
+ });
863
+ const S = () => {
864
+ if (t.paused) return l("start");
865
+ if (u.value) return l("stopAll");
866
+ s.value && l("stop", s.value.id);
867
+ }, V = { display: "block", fontSize: "13.5px", fontWeight: 600, whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, G = { display: "flex", alignItems: "center", gap: "10px", width: "100%", padding: "9px 10px", borderRadius: "var(--r-btn)", fontSize: "13.5px", textAlign: "left" };
868
+ return (A, z) => (a(), n("div", Le, [
869
+ e.open && !e.compact ? (a(), n("div", {
870
+ key: 0,
871
+ "data-popover": "",
872
+ style: { position: "absolute", right: 0, bottom: "calc(100% + 10px)", width: "320px", background: "var(--bg-elev)", borderRadius: "var(--r-card)", boxShadow: "var(--sh-float)", padding: "6px", animation: "t-pop var(--t-base) var(--ease-out) both", zIndex: 5, color: "var(--label)" },
873
+ onClick: z[3] || (z[3] = P(() => {
874
+ }, ["stop"]))
875
+ }, [
876
+ w(A.$slots, "popover", { running: e.running }, () => [
877
+ r("div", Ge, [
878
+ r("span", Qe, f(i.value ? `${i.value} running` : "Nothing running"), 1),
879
+ u.value ? (a(), n("button", {
880
+ key: 0,
881
+ type: "button",
882
+ "data-stop-all": "",
883
+ style: { "font-size": "12.5px", color: "var(--accent)", "font-weight": "600" },
884
+ onClick: z[0] || (z[0] = (I) => l("stopAll"))
885
+ }, "Stop all")) : v("", !0)
886
+ ]),
887
+ (a(!0), n(T, null, B(e.running, (I) => (a(), n("div", {
888
+ key: I.id,
889
+ class: "row-press",
890
+ style: { display: "flex", "align-items": "center", gap: "10px", padding: "8px 10px", "border-radius": "var(--r-btn)" }
891
+ }, [
892
+ k(N, {
893
+ color: I.color,
894
+ size: 8,
895
+ running: ""
896
+ }, null, 8, ["color"]),
897
+ r("span", We, [
898
+ r("span", { style: V }, f(I.task), 1),
899
+ r("span", Pe, f(I.project) + " · since " + f(I.since), 1)
900
+ ]),
901
+ k(O, {
902
+ seconds: I.seconds,
903
+ size: 14,
904
+ tone: "running",
905
+ weight: 600
906
+ }, null, 8, ["seconds"]),
907
+ k(R, {
908
+ icon: "square",
909
+ label: "Stop",
910
+ size: 26,
911
+ tone: "soft",
912
+ onClick: (Kt) => l("stop", I.id)
913
+ }, null, 8, ["onClick"])
914
+ ]))), 128)),
915
+ z[8] || (z[8] = r("div", { style: { height: "1px", background: "var(--sep)", margin: "4px 8px" } }, null, -1)),
916
+ r("button", {
917
+ type: "button",
918
+ "data-start": "",
919
+ class: "row-press",
920
+ style: d({ ...G, color: "var(--accent)", fontWeight: 600 }),
921
+ onClick: z[1] || (z[1] = (I) => l("start"))
922
+ }, [
923
+ k(C, {
924
+ name: "plus",
925
+ size: 15
926
+ }),
927
+ z[5] || (z[5] = $("Start another timer", -1)),
928
+ z[6] || (z[6] = r("span", {
929
+ class: "num",
930
+ style: { "margin-left": "auto", "font-size": "11px", color: "var(--label-3)", "font-weight": "500" }
931
+ }, "⌘N", -1))
932
+ ], 4),
933
+ r("button", {
934
+ type: "button",
935
+ "data-open-app": "",
936
+ class: "row-press",
937
+ style: d({ ...G, color: "var(--label-2)" }),
938
+ onClick: z[2] || (z[2] = (I) => l("openApp"))
939
+ }, [
940
+ k(C, {
941
+ name: "app-window",
942
+ size: 15
943
+ }),
944
+ z[7] || (z[7] = $("Open Timebraid ", -1))
945
+ ], 4)
946
+ ])
947
+ ])) : v("", !0),
948
+ r("div", {
949
+ "data-shell": "",
950
+ role: s.value && e.compact ? void 0 : "button",
951
+ tabindex: s.value && e.compact ? -1 : 0,
952
+ "aria-expanded": s.value && !e.compact ? e.open : void 0,
953
+ style: d(x.value),
954
+ title: "Click to expand",
955
+ onClick: p,
956
+ onKeydown: m
957
+ }, [
958
+ s.value ? (a(), n(T, { key: 0 }, [
959
+ k(N, {
960
+ color: s.value.color,
961
+ size: e.compact ? 7 : 9,
962
+ running: !e.paused
963
+ }, null, 8, ["color", "size", "running"]),
964
+ e.compact ? v("", !0) : (a(), n("span", He, [
965
+ r("span", qe, f(h.value), 1),
966
+ r("span", Ye, f(c.value), 1)
967
+ ])),
968
+ k(O, {
969
+ seconds: s.value.seconds,
970
+ mode: e.compact ? "short" : "clock",
971
+ size: e.compact ? 13 : 16,
972
+ tone: e.paused ? "muted" : "running",
973
+ weight: 600
974
+ }, null, 8, ["seconds", "mode", "size", "tone"]),
975
+ e.compact && u.value ? (a(), n("span", Ue, "+" + f(i.value - 1), 1)) : v("", !0),
976
+ e.compact ? (a(), F(R, {
977
+ key: 3,
978
+ icon: "square",
979
+ label: "Stop",
980
+ size: 22,
981
+ tone: "accent",
982
+ onClick: z[4] || (z[4] = (I) => l("stop", s.value.id))
983
+ })) : (a(), F(R, {
984
+ key: 2,
985
+ icon: e.paused ? "play" : "square",
986
+ label: e.paused ? "Resume" : u.value ? "Stop all" : "Stop",
987
+ size: 30,
988
+ tone: "accent",
989
+ onClick: S
990
+ }, null, 8, ["icon", "label"]))
991
+ ], 64)) : (a(), n(T, { key: 1 }, [
992
+ r("span", {
993
+ style: d({ width: e.compact ? "18px" : "30px", height: e.compact ? "18px" : "30px", borderRadius: "50%", background: "var(--accent-soft)", display: "grid", placeItems: "center" })
994
+ }, [
995
+ k(C, {
996
+ name: "play",
997
+ size: e.compact ? 10 : 14,
998
+ color: "var(--accent)"
999
+ }, null, 8, ["size"])
1000
+ ], 4),
1001
+ r("span", {
1002
+ style: d({ fontSize: e.compact ? "var(--text-section)" : "13.5px", fontWeight: 500, color: "var(--label-2)", paddingRight: "6px" })
1003
+ }, "Start a timer", 4)
1004
+ ], 64))
1005
+ ], 44, Ke)
1006
+ ]));
1007
+ }
1008
+ }), Xe = ["aria-expanded"], Ze = { style: { flex: "1", "min-width": "0" } }, Je = { style: { display: "block", "font-size": "13.5px", "font-weight": "600", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, _e = { style: { "font-size": "var(--text-footnote)", color: "var(--label-3)" } }, et = {
1009
+ key: 1,
1010
+ "data-list": "",
1011
+ style: { position: "absolute", left: "8px", right: "8px", top: "100%", "z-index": "20", background: "var(--bg-elev)", "border-radius": "var(--r-cell)", "box-shadow": "var(--sh-float)", padding: "4px", animation: "t-pop var(--t-base) var(--ease-out) both" }
1012
+ }, tt = ["onClick"], at = { style: { flex: "1", "font-size": "13px", "min-width": "0", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap" } }, nt = {
1013
+ key: 0,
1014
+ style: { "font-size": "10.5px", color: "var(--label-3)" }
1015
+ }, ra = /* @__PURE__ */ b({
1016
+ __name: "TWorkspaceSwitcher",
1017
+ props: {
1018
+ workspaces: {},
1019
+ modelValue: {}
1020
+ },
1021
+ emits: ["update:modelValue", "create"],
1022
+ setup(e, { emit: o }) {
1023
+ const t = e, l = o, s = M(null), i = M(!1), u = y(() => t.workspaces.find((p) => p.id === t.modelValue) ?? t.workspaces[0] ?? null), h = (p) => p.memberCount <= 1 ? "Just you" : `${p.memberCount} members`, c = (p) => {
1024
+ l("update:modelValue", p), i.value = !1;
1025
+ }, x = (p) => {
1026
+ s.value !== null && p.target instanceof Node && s.value.contains(p.target) || (i.value = !1);
1027
+ };
1028
+ return U(() => document.addEventListener("pointerdown", x)), L(() => document.removeEventListener("pointerdown", x)), (p, m) => (a(), n("div", {
1029
+ ref_key: "root",
1030
+ ref: s,
1031
+ style: { position: "relative", padding: "0 8px 10px" }
1032
+ }, [
1033
+ u.value ? (a(), n("button", {
1034
+ key: 0,
1035
+ type: "button",
1036
+ "data-current": "",
1037
+ class: "press row-press",
1038
+ "aria-haspopup": "listbox",
1039
+ "aria-expanded": i.value,
1040
+ style: { display: "flex", "align-items": "center", gap: "9px", width: "100%", padding: "6px 8px", "border-radius": "var(--r-btn)", "text-align": "left" },
1041
+ onClick: m[0] || (m[0] = (g) => i.value = !i.value)
1042
+ }, [
1043
+ r("span", {
1044
+ style: d({ width: "24px", height: "24px", borderRadius: "calc(var(--r-btn) - 3px)", background: u.value.color, display: "grid", placeItems: "center", color: "var(--on-accent)", fontSize: "var(--text-section)", fontWeight: 700, flex: "none" })
1045
+ }, f(u.value.name[0]), 5),
1046
+ r("span", Ze, [
1047
+ r("span", Je, f(u.value.name) + " workspace", 1),
1048
+ r("span", _e, f(h(u.value)), 1)
1049
+ ]),
1050
+ k(C, {
1051
+ name: "chevrons-up-down",
1052
+ size: 14,
1053
+ color: "var(--label-3)"
1054
+ })
1055
+ ], 8, Xe)) : v("", !0),
1056
+ i.value ? (a(), n("div", et, [
1057
+ (a(!0), n(T, null, B(e.workspaces, (g) => (a(), n("button", {
1058
+ key: g.id,
1059
+ type: "button",
1060
+ "data-workspace": "",
1061
+ class: "row-press",
1062
+ style: d({ display: "flex", alignItems: "center", gap: "9px", width: "100%", padding: "7px 8px", borderRadius: "calc(var(--r-btn) - 2px)", textAlign: "left", background: g.id === e.modelValue ? "var(--accent-soft)" : "transparent" }),
1063
+ onClick: (S) => c(g.id)
1064
+ }, [
1065
+ r("span", {
1066
+ style: d({ width: "20px", height: "20px", borderRadius: "calc(var(--r-btn) - 4px)", background: g.color, color: "var(--on-accent)", display: "grid", placeItems: "center", fontSize: "10px", fontWeight: 700, flex: "none" })
1067
+ }, f(g.name[0]), 5),
1068
+ r("span", at, f(g.name), 1),
1069
+ g.isDefault ? (a(), n("span", nt, "Default")) : v("", !0),
1070
+ g.id === e.modelValue ? (a(), F(C, {
1071
+ key: 1,
1072
+ name: "check",
1073
+ size: 14,
1074
+ color: "var(--accent)"
1075
+ })) : v("", !0)
1076
+ ], 12, tt))), 128)),
1077
+ m[3] || (m[3] = r("div", { style: { height: "1px", background: "var(--sep)", margin: "4px 6px" } }, null, -1)),
1078
+ r("button", {
1079
+ type: "button",
1080
+ "data-create": "",
1081
+ class: "row-press",
1082
+ style: { display: "flex", "align-items": "center", gap: "9px", width: "100%", padding: "7px 8px", "border-radius": "calc(var(--r-btn) - 2px)", "font-size": "13px", color: "var(--accent)" },
1083
+ onClick: m[1] || (m[1] = (g) => {
1084
+ i.value = !1, l("create");
1085
+ })
1086
+ }, [
1087
+ k(C, {
1088
+ name: "plus",
1089
+ size: 14
1090
+ }),
1091
+ m[2] || (m[2] = $("New workspace ", -1))
1092
+ ])
1093
+ ])) : v("", !0)
1094
+ ], 512));
1095
+ }
1096
+ }), ot = { style: { flex: "1", "min-width": "0", "line-height": "1.15" } }, lt = { style: { display: "block", "font-size": "var(--text-body)", "font-weight": "600", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, it = { style: { "font-size": "var(--text-caption)", color: "var(--label-2)", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis", display: "block" } }, da = /* @__PURE__ */ b({
1097
+ __name: "TTimerBar",
1098
+ props: {
1099
+ task: {},
1100
+ project: {},
1101
+ color: { default: "var(--chart-1)" },
1102
+ seconds: {},
1103
+ more: { default: 0 },
1104
+ android: { type: Boolean, default: !1 },
1105
+ bottom: { default: 94 }
1106
+ },
1107
+ emits: ["stop", "open"],
1108
+ setup(e, { emit: o }) {
1109
+ const t = e, l = o, s = y(() => t.more > 0 ? `${t.project} · +${t.more} more` : t.project), i = (h) => {
1110
+ h.target instanceof Element && h.target.closest("button") !== null || l("open");
1111
+ }, u = (h) => {
1112
+ h.key !== "Enter" && h.key !== " " || h.target instanceof Element && h.target.closest("button") !== null || (h.preventDefault(), l("open"));
1113
+ };
1114
+ return (h, c) => (a(), n("div", {
1115
+ class: "press",
1116
+ role: "button",
1117
+ tabindex: "0",
1118
+ "aria-label": "Open the running timer",
1119
+ style: d({
1120
+ position: "absolute",
1121
+ left: "12px",
1122
+ right: "12px",
1123
+ bottom: e.bottom + "px",
1124
+ height: "var(--timer-bar-h)",
1125
+ borderRadius: e.android ? "var(--r-card)" : "var(--r-sheet)",
1126
+ background: "var(--bg-elev)",
1127
+ boxShadow: "var(--sh-float), 0 0 0 1.5px var(--running)",
1128
+ display: "flex",
1129
+ alignItems: "center",
1130
+ gap: "10px",
1131
+ padding: "0 8px 0 14px",
1132
+ animation: "t-pop var(--t-sheet) var(--ease-sheet) both",
1133
+ zIndex: 5,
1134
+ cursor: "pointer"
1135
+ }),
1136
+ onClick: i,
1137
+ onKeydown: u
1138
+ }, [
1139
+ k(N, {
1140
+ color: e.color,
1141
+ size: 9,
1142
+ running: ""
1143
+ }, null, 8, ["color"]),
1144
+ r("span", ot, [
1145
+ r("span", lt, f(e.task), 1),
1146
+ r("span", it, f(s.value), 1)
1147
+ ]),
1148
+ k(O, {
1149
+ seconds: e.seconds,
1150
+ size: 17,
1151
+ tone: "running",
1152
+ weight: 600
1153
+ }, null, 8, ["seconds"]),
1154
+ k(R, {
1155
+ icon: "square",
1156
+ label: "Stop",
1157
+ size: 36,
1158
+ tone: "accent",
1159
+ onClick: c[0] || (c[0] = (x) => l("stop"))
1160
+ })
1161
+ ], 36));
1162
+ }
1163
+ }), st = {
1164
+ "aria-hidden": "true",
1165
+ style: { position: "absolute", inset: "0", overflow: "hidden", "pointer-events": "none" }
1166
+ }, ca = /* @__PURE__ */ b({
1167
+ __name: "TStrokes",
1168
+ props: {
1169
+ opacity: { default: 0.06 }
1170
+ },
1171
+ setup(e) {
1172
+ return (o, t) => (a(), n("div", st, [
1173
+ (a(), n(T, null, B(4, (l) => r("span", {
1174
+ key: l,
1175
+ style: d({ position: "absolute", left: 16 + (l - 1) * 12 + "%", top: "-20%", width: "clamp(28px, 5.5%, 80px)", height: "140%", borderRadius: "var(--r-pill)", background: "var(--label)", opacity: e.opacity, transform: "rotate(-8deg)" })
1176
+ }, null, 4)), 64)),
1177
+ r("span", {
1178
+ style: d({ position: "absolute", left: "4%", top: "38%", width: "68%", height: "5.5%", borderRadius: "var(--r-pill)", background: "var(--orange)", opacity: e.opacity * 2.6, transform: "rotate(-32deg)", transformOrigin: "left center" })
1179
+ }, null, 4)
1180
+ ]));
1181
+ }
1182
+ }), rt = { style: { height: "44px", display: "flex", "align-items": "center", "justify-content": "center", position: "relative", padding: "0 16px" } }, dt = { style: { position: "absolute", right: "12px", display: "flex", gap: "4px" } }, ct = { style: { "font-size": "var(--text-large-title-phone)", "font-weight": "700", "letter-spacing": "var(--tracking-large-title)", "line-height": "1.1", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, ut = {
1183
+ key: 0,
1184
+ style: { "font-size": "13px", color: "var(--label-2)" }
1185
+ }, ua = /* @__PURE__ */ b({
1186
+ __name: "TIOSNav",
1187
+ props: {
1188
+ title: {},
1189
+ sub: {},
1190
+ scrolled: { type: Boolean }
1191
+ },
1192
+ setup(e) {
1193
+ return (o, t) => (a(), n("div", {
1194
+ style: d({
1195
+ position: "sticky",
1196
+ top: 0,
1197
+ zIndex: 10,
1198
+ background: e.scrolled ? "var(--bg-bar)" : "transparent",
1199
+ backdropFilter: e.scrolled ? "var(--blur)" : "none",
1200
+ WebkitBackdropFilter: e.scrolled ? "var(--blur)" : "none",
1201
+ borderBottom: `1px solid ${e.scrolled ? "var(--sep)" : "transparent"}`,
1202
+ transition: "background var(--t-base), border-color var(--t-base)"
1203
+ })
1204
+ }, [
1205
+ r("div", rt, [
1206
+ r("span", {
1207
+ "data-inline": "",
1208
+ style: d({ fontSize: "var(--text-title)", fontWeight: 600, opacity: e.scrolled ? 1 : 0, transform: e.scrolled ? "none" : "translateY(6px)", transition: "all var(--t-base) var(--ease)" })
1209
+ }, f(e.title), 5),
1210
+ r("span", dt, [
1211
+ w(o.$slots, "right")
1212
+ ])
1213
+ ]),
1214
+ r("div", {
1215
+ "data-large": "",
1216
+ style: d({ padding: "0 16px", height: e.scrolled ? "0px" : "50px", overflow: "hidden", transition: "height var(--t-base) var(--ease)" })
1217
+ }, [
1218
+ r("div", ct, f(e.title), 1),
1219
+ e.sub ? (a(), n("div", ut, f(e.sub), 1)) : v("", !0)
1220
+ ], 4)
1221
+ ], 4));
1222
+ }
1223
+ }), pt = ["aria-current", "onClick"], ft = { style: { "font-size": "10px", "font-weight": "500" } }, vt = {
1224
+ key: 0,
1225
+ "data-indicator": "",
1226
+ style: { position: "absolute", bottom: "8px", left: "50%", width: "134px", height: "5px", "border-radius": "var(--r-pill)", background: "var(--label)", transform: "translateX(-50%)", opacity: ".9" }
1227
+ }, pa = /* @__PURE__ */ b({
1228
+ __name: "TIOSTabBar",
1229
+ props: {
1230
+ items: {},
1231
+ modelValue: {},
1232
+ indicator: { type: Boolean, default: !1 }
1233
+ },
1234
+ emits: ["update:modelValue"],
1235
+ setup(e, { emit: o }) {
1236
+ const t = o;
1237
+ return (l, s) => (a(), n("nav", {
1238
+ "aria-label": "Sections",
1239
+ style: d({
1240
+ position: "absolute",
1241
+ left: 0,
1242
+ right: 0,
1243
+ bottom: 0,
1244
+ height: "var(--tab-bar-h-ios)",
1245
+ background: "var(--bg-bar)",
1246
+ backdropFilter: "var(--blur)",
1247
+ WebkitBackdropFilter: "var(--blur)",
1248
+ borderTop: "1px solid var(--sep)",
1249
+ display: "grid",
1250
+ gridTemplateColumns: `repeat(${e.items.length}, 1fr)`,
1251
+ paddingTop: "6px",
1252
+ paddingBottom: "22px",
1253
+ zIndex: 6
1254
+ })
1255
+ }, [
1256
+ (a(!0), n(T, null, B(e.items, (i) => (a(), n("button", {
1257
+ key: i.id,
1258
+ type: "button",
1259
+ "aria-current": i.id === e.modelValue ? "page" : void 0,
1260
+ style: d({ display: "grid", justifyItems: "center", gap: "3px", color: i.id === e.modelValue ? "var(--accent)" : "var(--label-3)", transition: "color var(--t-fast)" }),
1261
+ onClick: (u) => t("update:modelValue", i.id)
1262
+ }, [
1263
+ r("span", {
1264
+ style: d({ transform: i.id === e.modelValue ? "scale(1.08)" : "none", transition: "transform var(--t-base) var(--ease-sheet)" })
1265
+ }, [
1266
+ k(C, {
1267
+ name: i.icon,
1268
+ size: 24
1269
+ }, null, 8, ["name"])
1270
+ ], 4),
1271
+ r("span", ft, f(i.label), 1)
1272
+ ], 12, pt))), 128)),
1273
+ e.indicator ? (a(), n("span", vt)) : v("", !0)
1274
+ ], 4));
1275
+ }
1276
+ }), ht = { style: { height: "64px", display: "flex", "align-items": "center", padding: "0 16px", gap: "12px" } }, gt = { style: { "font-size": "22px", "font-weight": "500", flex: "1", "min-width": "0", "white-space": "nowrap", overflow: "hidden", "text-overflow": "ellipsis" } }, fa = /* @__PURE__ */ b({
1277
+ __name: "TAndroidTop",
1278
+ props: {
1279
+ title: {}
1280
+ },
1281
+ setup(e) {
1282
+ return (o, t) => (a(), n("div", ht, [
1283
+ r("span", gt, f(e.title), 1),
1284
+ w(o.$slots, "right")
1285
+ ]));
1286
+ }
1287
+ }), bt = ["aria-current", "onClick"], mt = {
1288
+ key: 0,
1289
+ "data-indicator": "",
1290
+ style: { position: "absolute", bottom: "6px", left: "50%", width: "108px", height: "4px", "border-radius": "var(--r-pill)", background: "var(--label)", transform: "translateX(-50%)", opacity: ".8" }
1291
+ }, va = /* @__PURE__ */ b({
1292
+ __name: "TAndroidNavBar",
1293
+ props: {
1294
+ items: {},
1295
+ modelValue: {},
1296
+ indicator: { type: Boolean, default: !1 }
1297
+ },
1298
+ emits: ["update:modelValue"],
1299
+ setup(e, { emit: o }) {
1300
+ const t = o;
1301
+ return (l, s) => (a(), n("nav", {
1302
+ "aria-label": "Sections",
1303
+ style: d({ position: "absolute", left: 0, right: 0, bottom: 0, height: "var(--nav-bar-h-android)", background: "var(--bg-elev)", display: "grid", gridTemplateColumns: `repeat(${e.items.length}, 1fr)`, paddingTop: "12px", zIndex: 6 })
1304
+ }, [
1305
+ (a(!0), n(T, null, B(e.items, (i) => (a(), n("button", {
1306
+ key: i.id,
1307
+ type: "button",
1308
+ "aria-current": i.id === e.modelValue ? "page" : void 0,
1309
+ style: d({ display: "grid", justifyItems: "center", gap: "4px", color: i.id === e.modelValue ? "var(--label)" : "var(--label-2)" }),
1310
+ onClick: (u) => t("update:modelValue", i.id)
1311
+ }, [
1312
+ r("span", {
1313
+ "data-pill": "",
1314
+ style: d({ width: i.id === e.modelValue ? "64px" : "32px", height: "32px", borderRadius: "var(--r-pill)", background: i.id === e.modelValue ? "var(--accent-soft-2)" : "transparent", display: "grid", placeItems: "center", transition: "width var(--t-base) var(--ease-sheet), background var(--t-base)" })
1315
+ }, [
1316
+ k(C, {
1317
+ name: i.icon,
1318
+ size: 22,
1319
+ color: i.id === e.modelValue ? "var(--accent)" : "var(--label-2)"
1320
+ }, null, 8, ["name", "color"])
1321
+ ], 4),
1322
+ r("span", {
1323
+ style: d({ fontSize: "var(--text-footnote)", fontWeight: i.id === e.modelValue ? 600 : 500 })
1324
+ }, f(i.label), 5)
1325
+ ], 12, bt))), 128)),
1326
+ e.indicator ? (a(), n("span", mt)) : v("", !0)
1327
+ ], 4));
1328
+ }
1329
+ }), xt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1024'%20height='1024'%20viewBox='0%200%201024%201024'%3e%3cdefs%3e%3clinearGradient%20id='bg'%20x1='0'%20y1='0'%20x2='0.35'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%234A57D2'%3e%3c/stop%3e%3cstop%20offset='0.55'%20stop-color='%232C3391'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23151A54'%3e%3c/stop%3e%3c/linearGradient%3e%3cradialGradient%20id='lift'%20cx='0.5'%20cy='0.06'%20r='0.85'%3e%3cstop%20offset='0'%20stop-color='%23FFFFFF'%20stop-opacity='0.16'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23FFFFFF'%20stop-opacity='0'%3e%3c/stop%3e%3c/radialGradient%3e%3cclipPath%20id='mask'%3e%3crect%20x='100.0'%20y='100.0'%20width='824'%20height='824'%20rx='181.3'%20ry='181.3'%3e%3c/rect%3e%3c/clipPath%3e%3c/defs%3e%3crect%20id='icon-shape'%20x='100.0'%20y='100.0'%20width='824'%20height='824'%20rx='181.3'%20ry='181.3'%20fill='url(%23bg)'%3e%3c/rect%3e%3crect%20x='100.0'%20y='100.0'%20width='824'%20height='824'%20rx='181.3'%20ry='181.3'%20fill='url(%23lift)'%3e%3c/rect%3e%3cg%20clip-path='url(%23mask)'%3e%3cline%20x1='308'%20y1='296'%20x2='308'%20y2='728'%20stroke='%23FFFFFF'%20stroke-width='68'%20stroke-linecap='round'%3e%3c/line%3e%3cline%20x1='444'%20y1='296'%20x2='444'%20y2='728'%20stroke='%23FFFFFF'%20stroke-width='68'%20stroke-linecap='round'%3e%3c/line%3e%3cline%20x1='580'%20y1='296'%20x2='580'%20y2='728'%20stroke='%23FFFFFF'%20stroke-width='68'%20stroke-linecap='round'%3e%3c/line%3e%3cline%20x1='716'%20y1='296'%20x2='716'%20y2='728'%20stroke='%23FFFFFF'%20stroke-width='68'%20stroke-linecap='round'%3e%3c/line%3e%3cpath%20d='M%20248%20716%20C%20478.0%20619.0,%20626.4%20504.2,%20778%20306'%20fill='none'%20stroke='%23F5A524'%20stroke-width='80'%20stroke-linecap='round'%3e%3c/path%3e%3c/g%3e%3c/svg%3e", yt = "data:image/png;base64,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", wt = "data:image/png;base64,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", kt = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAACcElEQVQ4jaWTP2hdZRjGf9/Jzb0xTSoV6qBEaRWRIkTQKGLF4iI6SKiDipKCFgRRBKuriKCDQ0Vw6FIXK4Jgl4IigsVKpzoYtHQT1JLKjRGSe+4553v/fK9D5BrMps/28sKPh4fngf+ptPN45vjqIyliKaoymEpaQUUpRimGqpfini3s0rlPH/1mF+Dose/P9FJ5tkoBVaFKhSoFEY6pY26YOaaGiHz89bknVyaA5ee+O0Kk84mg1wtmZyraThj0IcJpW6XfT2gzYqtNuBkl9Mj5L1e+rQCktUXTDrOWp48u8MF7S4h0vPbyXZx4ZRGRjlNv3sBHT7zF47ddQC3TjeVugB6AaturfNvy/PwU1+/to7lj7/w0ALNpg+kfTuIUfry2H5UGK9bbAchUyUlVIYoDkKUhIkil4fUHPiGa3/l5z4tcvtbHrcXMAKgATNoQ7ZDcUXz7IbkjrGbflVc5dONVerc/xa/9x9DcINoiUscEIFajuUWkxX3bwcL8L+z/6RiD0SpfXLmD/tLbFDeyNGiuURn/4yC3OUQatGvAR+jqST5c/ozpvMbmzS/wzlf3QKooRVEZk6VBtItJBmYtEc59t/7Gg6Mz6OVNhqM5+ve/Sze3SJffB8DdybmhFMV9RwaaG1UZc3DfkCiO3nmC5VMPc7U7wPofW3RdzcbGiOH6n4jW5DxGpJZJkQ4ceuOhML8Q4UxNBbPX9djcqpmZmSKK0zQNc3sGjOoaM/+7wuXwcO3sxUmVFw6+dLqEPh/hRHEijAinFAfiXxOK0+trnx/fNaabblk57K73luQDStm1vAhylcql4drZi7ue/1V/AR59iRuE60sRAAAAAElFTkSuQmCC", At = ["src", "width", "height", "alt"], zt = /* @__PURE__ */ b({
1330
+ __name: "TLogo",
1331
+ props: {
1332
+ size: { default: 40 },
1333
+ wordmark: { type: Boolean, default: !1 }
1334
+ },
1335
+ setup(e) {
1336
+ const o = e, t = y(() => o.size >= 64 ? xt : o.size >= 48 ? yt : o.size >= 24 ? wt : kt);
1337
+ return (l, s) => (a(), n("span", {
1338
+ style: d({ display: "inline-flex", alignItems: "center", gap: Math.round(e.size * 0.3) + "px" })
1339
+ }, [
1340
+ r("img", {
1341
+ src: t.value,
1342
+ width: e.size,
1343
+ height: e.size,
1344
+ alt: e.wordmark ? "" : "Timebraid",
1345
+ style: d({ display: "block", borderRadius: e.size >= 64 ? 0 : e.size * 0.22 + "px" })
1346
+ }, null, 12, At),
1347
+ e.wordmark ? (a(), n("span", {
1348
+ key: 0,
1349
+ style: d({ fontFamily: "var(--font-sans)", fontWeight: 600, fontSize: Math.round(e.size * 0.62) + "px", letterSpacing: "-0.02em", color: "var(--label)" })
1350
+ }, "Timebraid", 4)) : v("", !0)
1351
+ ], 4));
1352
+ }
1353
+ }), St = { style: { display: "grid", gap: "8px" } }, Tt = ["value", "autofocus", "aria-label", "onInput", "onKeydown"], Ct = {
1354
+ key: 0,
1355
+ style: { "font-size": "var(--text-caption)", color: "var(--red)" }
1356
+ }, ha = /* @__PURE__ */ b({
1357
+ __name: "TCodeInput",
1358
+ props: {
1359
+ modelValue: { default: "" },
1360
+ length: { default: 6 },
1361
+ error: {},
1362
+ autofocus: { type: Boolean, default: !0 }
1363
+ },
1364
+ emits: ["update:modelValue"],
1365
+ setup(e, { emit: o }) {
1366
+ const t = e, l = o, s = M([]), i = y(() => Array.from({ length: t.length }, (p, m) => t.modelValue[m] || ""));
1367
+ function u(p, m) {
1368
+ var S;
1369
+ const g = i.value.slice();
1370
+ g[p] = m, l("update:modelValue", g.join("").slice(0, t.length)), m && p < t.length - 1 && ((S = s.value[p + 1]) == null || S.focus());
1371
+ }
1372
+ function h(p, m) {
1373
+ u(p, m.target.value.replace(/\D/g, "").slice(-1));
1374
+ }
1375
+ function c(p, m) {
1376
+ var g;
1377
+ m.key === "Backspace" && !i.value[p] && p > 0 && ((g = s.value[p - 1]) == null || g.focus(), u(p - 1, ""));
1378
+ }
1379
+ function x(p) {
1380
+ var g, S;
1381
+ const m = (((g = p.clipboardData) == null ? void 0 : g.getData("text")) || "").replace(/\D/g, "").slice(0, t.length);
1382
+ m && (p.preventDefault(), l("update:modelValue", m), (S = s.value[Math.min(m.length, t.length) - 1]) == null || S.focus());
1383
+ }
1384
+ return (p, m) => (a(), n("div", St, [
1385
+ r("div", {
1386
+ style: { display: "flex", gap: "8px" },
1387
+ onPaste: x
1388
+ }, [
1389
+ (a(!0), n(T, null, B(i.value, (g, S) => (a(), n("input", {
1390
+ key: S,
1391
+ ref_for: !0,
1392
+ ref: (V) => {
1393
+ V && (s.value[S] = V);
1394
+ },
1395
+ inputmode: "numeric",
1396
+ pattern: "[0-9]*",
1397
+ maxlength: "1",
1398
+ value: g,
1399
+ autofocus: e.autofocus && S === 0,
1400
+ "aria-label": "Digit " + (S + 1),
1401
+ style: d({
1402
+ width: "44px",
1403
+ height: "52px",
1404
+ textAlign: "center",
1405
+ fontFamily: "var(--font-mono)",
1406
+ fontSize: "22px",
1407
+ color: "var(--label)",
1408
+ background: "var(--fill)",
1409
+ outline: "none",
1410
+ border: 0,
1411
+ borderRadius: "var(--r-btn)",
1412
+ transition: "box-shadow var(--t-fast) var(--ease)",
1413
+ boxShadow: e.error ? "inset 0 0 0 1px var(--red)" : g ? "inset 0 0 0 1px var(--sep-strong)" : "none"
1414
+ }),
1415
+ onInput: (V) => h(S, V),
1416
+ onKeydown: (V) => c(S, V)
1417
+ }, null, 44, Tt))), 128))
1418
+ ], 32),
1419
+ e.error ? (a(), n("span", Ct, f(e.error), 1)) : v("", !0)
1420
+ ]));
1421
+ }
1422
+ }), Bt = { style: { display: "flex", "align-items": "center", gap: "12px" } }, It = { style: { "min-width": "0" } }, $t = { style: { "font-size": "13.5px", color: "var(--label-2)" } }, Vt = {
1423
+ key: 0,
1424
+ style: { "font-size": "var(--text-body)", color: "var(--label-2)", margin: "0", "line-height": "1.5" }
1425
+ }, Ft = { style: { display: "grid", gap: "14px" } }, Rt = {
1426
+ key: 1,
1427
+ style: { "text-align": "center", "font-size": "13.5px", color: "var(--label-2)" }
1428
+ }, ga = /* @__PURE__ */ b({
1429
+ __name: "TAuthCard",
1430
+ props: {
1431
+ title: {},
1432
+ description: {},
1433
+ width: { default: 400 }
1434
+ },
1435
+ setup(e) {
1436
+ return (o, t) => (a(), n("div", {
1437
+ class: "view-in",
1438
+ style: d({ position: "relative", width: "100%", maxWidth: e.width + "px", background: "var(--bg-elev)", borderRadius: "var(--r-sheet)", boxShadow: "var(--sh-float)", padding: "clamp(20px, 4vw, 32px)", display: "grid", gap: "18px" })
1439
+ }, [
1440
+ r("div", Bt, [
1441
+ k(zt, { size: 44 }),
1442
+ r("div", It, [
1443
+ t[0] || (t[0] = r("div", { style: { "font-size": "20px", "font-weight": "700", "letter-spacing": "-.02em" } }, "Timebraid", -1)),
1444
+ r("div", $t, [
1445
+ w(o.$slots, "title", {}, () => [
1446
+ $(f(e.title), 1)
1447
+ ])
1448
+ ])
1449
+ ])
1450
+ ]),
1451
+ e.description || o.$slots.description ? (a(), n("p", Vt, [
1452
+ w(o.$slots, "description", {}, () => [
1453
+ $(f(e.description), 1)
1454
+ ])
1455
+ ])) : v("", !0),
1456
+ r("div", Ft, [
1457
+ w(o.$slots, "default")
1458
+ ]),
1459
+ o.$slots.footer ? (a(), n("div", Rt, [
1460
+ w(o.$slots, "footer")
1461
+ ])) : v("", !0)
1462
+ ], 4));
1463
+ }
1464
+ }), Et = ["checked", "disabled"], Mt = { style: { display: "grid", gap: "2px" } }, Nt = { style: { "font-size": "var(--text-body)", color: "var(--label)" } }, Ot = {
1465
+ key: 0,
1466
+ style: { "font-size": "var(--text-caption)", color: "var(--label-3)" }
1467
+ }, Dt = /* @__PURE__ */ b({
1468
+ __name: "TCheckbox",
1469
+ props: {
1470
+ modelValue: { type: Boolean, default: !1 },
1471
+ label: {},
1472
+ description: {},
1473
+ indeterminate: { type: Boolean, default: !1 },
1474
+ disabled: { type: Boolean, default: !1 }
1475
+ },
1476
+ emits: ["update:modelValue"],
1477
+ setup(e, { emit: o }) {
1478
+ const t = e, l = o, s = (u) => l("update:modelValue", u.target.checked), i = y(() => t.modelValue || t.indeterminate);
1479
+ return (u, h) => (a(), n("label", {
1480
+ class: "check",
1481
+ style: d({ display: "inline-flex", alignItems: e.description ? "flex-start" : "center", gap: "9px", cursor: e.disabled ? "not-allowed" : "pointer", opacity: e.disabled ? 0.4 : 1 })
1482
+ }, [
1483
+ r("input", {
1484
+ type: "checkbox",
1485
+ checked: e.modelValue,
1486
+ disabled: e.disabled,
1487
+ style: { position: "absolute", width: "1px", height: "1px", "clip-path": "inset(50%)", overflow: "hidden" },
1488
+ onChange: s
1489
+ }, null, 40, Et),
1490
+ r("span", {
1491
+ class: "box",
1492
+ "aria-hidden": "true",
1493
+ style: d({
1494
+ width: "16px",
1495
+ height: "16px",
1496
+ flex: "none",
1497
+ marginTop: e.description ? "2px" : 0,
1498
+ borderRadius: "calc(var(--r-btn) - 6px)",
1499
+ boxShadow: i.value ? "none" : "inset 0 0 0 1px var(--sep-strong)",
1500
+ background: i.value ? "var(--accent)" : "var(--fill)",
1501
+ color: "var(--on-accent)",
1502
+ display: "flex",
1503
+ alignItems: "center",
1504
+ justifyContent: "center",
1505
+ fontSize: "11px",
1506
+ lineHeight: 1,
1507
+ transition: "background var(--t-fast) var(--ease)"
1508
+ })
1509
+ }, f(e.indeterminate ? "–" : e.modelValue ? "✓" : ""), 5),
1510
+ r("span", Mt, [
1511
+ r("span", Nt, f(e.label), 1),
1512
+ e.description ? (a(), n("span", Ot, f(e.description), 1)) : v("", !0)
1513
+ ])
1514
+ ], 4));
1515
+ }
1516
+ }), jt = (e, o) => {
1517
+ const t = e.__vccOpts || e;
1518
+ for (const [l, s] of o)
1519
+ t[l] = s;
1520
+ return t;
1521
+ }, ba = /* @__PURE__ */ jt(Dt, [["__scopeId", "data-v-8c783040"]]), Lt = {
1522
+ key: 0,
1523
+ style: { color: "var(--label-3)", "font-family": "var(--font-mono)", "font-size": "11px" }
1524
+ }, ma = /* @__PURE__ */ b({
1525
+ __name: "TTooltip",
1526
+ props: {
1527
+ content: {},
1528
+ shortcut: {},
1529
+ side: { default: "top" }
1530
+ },
1531
+ setup(e) {
1532
+ const o = e, t = M(!1), l = y(() => ({
1533
+ top: { bottom: "100%", left: "50%", transform: "translate(-50%, -6px)" },
1534
+ bottom: { top: "100%", left: "50%", transform: "translate(-50%, 6px)" },
1535
+ left: { right: "100%", top: "50%", transform: "translate(-6px, -50%)" },
1536
+ right: { left: "100%", top: "50%", transform: "translate(6px, -50%)" }
1537
+ })[o.side]);
1538
+ return (s, i) => (a(), n("span", {
1539
+ style: { position: "relative", display: "inline-flex" },
1540
+ onMouseenter: i[0] || (i[0] = (u) => t.value = !0),
1541
+ onMouseleave: i[1] || (i[1] = (u) => t.value = !1),
1542
+ onFocusin: i[2] || (i[2] = (u) => t.value = !0),
1543
+ onFocusout: i[3] || (i[3] = (u) => t.value = !1)
1544
+ }, [
1545
+ w(s.$slots, "default"),
1546
+ t.value ? (a(), n("span", {
1547
+ key: 0,
1548
+ role: "tooltip",
1549
+ style: d({
1550
+ position: "absolute",
1551
+ ...l.value,
1552
+ zIndex: 40,
1553
+ display: "inline-flex",
1554
+ alignItems: "center",
1555
+ gap: "8px",
1556
+ padding: "5px 8px",
1557
+ background: "var(--label)",
1558
+ color: "var(--bg)",
1559
+ borderRadius: "var(--r-btn)",
1560
+ boxShadow: "var(--sh-float)",
1561
+ fontFamily: "var(--font-sans)",
1562
+ fontSize: "var(--text-caption)",
1563
+ whiteSpace: "nowrap",
1564
+ pointerEvents: "none"
1565
+ })
1566
+ }, [
1567
+ $(f(e.content), 1),
1568
+ e.shortcut ? (a(), n("span", Lt, f(e.shortcut), 1)) : v("", !0)
1569
+ ], 4)) : v("", !0)
1570
+ ], 32));
1571
+ }
1572
+ }), xa = ["system", "light", "dark"], Gt = "(prefers-color-scheme: dark)";
1573
+ function Qt(e, o) {
1574
+ return e === "system" ? o ? "dark" : "light" : e;
1575
+ }
1576
+ function Wt(e, o) {
1577
+ e.setAttribute("data-theme", o), e.style.colorScheme = o;
1578
+ }
1579
+ function Pt() {
1580
+ return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia(Gt) ?? null;
1581
+ }
1582
+ function ya(e, o, t = Pt()) {
1583
+ const l = () => Wt(o, Qt(e(), (t == null ? void 0 : t.matches) ?? !1)), s = () => l();
1584
+ return t == null || t.addEventListener("change", s), l(), {
1585
+ refresh: l,
1586
+ stop: () => t == null ? void 0 : t.removeEventListener("change", s)
1587
+ };
1588
+ }
1589
+ export {
1590
+ _ as DEFAULT_ICON_BASE,
1591
+ la as PROJECT_COLORS,
1592
+ va as TAndroidNavBar,
1593
+ fa as TAndroidTop,
1594
+ ga as TAuthCard,
1595
+ aa as TAvatar,
1596
+ ea as TBadge,
1597
+ ta as TBar,
1598
+ Xt as TBtn,
1599
+ ba as TCheckbox,
1600
+ ha as TCodeInput,
1601
+ N as TDot,
1602
+ O as TDur,
1603
+ Jt as TField,
1604
+ qt as TGroup,
1605
+ xa as THEME_PREFERENCES,
1606
+ ee as TIMEBRAID_ICON_BASE,
1607
+ ua as TIOSNav,
1608
+ pa as TIOSTabBar,
1609
+ C as TIcon,
1610
+ R as TIconBtn,
1611
+ na as TLargeTitle,
1612
+ zt as TLogo,
1613
+ sa as TPill,
1614
+ Yt as TRow,
1615
+ Ut as TSeg,
1616
+ _t as TSelect,
1617
+ oa as TSheet,
1618
+ ca as TStrokes,
1619
+ da as TTimerBar,
1620
+ Zt as TToggle,
1621
+ ma as TTooltip,
1622
+ ia as TWaterfall,
1623
+ ra as TWorkspaceSwitcher,
1624
+ Wt as applyTheme,
1625
+ Me as formatDuration,
1626
+ Qt as resolveTheme,
1627
+ ya as watchTheme
1628
+ };