@timebraid/vue 1.20.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -59,9 +59,23 @@ multiple: boolean;
59
59
  addLabel: string;
60
60
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
61
61
 
62
- declare const __VLS_component_16: DefineComponent<__VLS_Props_67, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
62
+ declare const __VLS_component_16: DefineComponent<__VLS_Props_63, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
63
+ toggle: () => any;
64
+ }, string, PublicProps, Readonly<__VLS_Props_63> & Readonly<{
65
+ onToggle?: (() => any) | undefined;
66
+ }>, {
67
+ last: boolean;
68
+ placeholder: string;
69
+ mobile: boolean;
70
+ plate: string;
71
+ valueKind: PickValueKind;
72
+ valueColor: string;
73
+ valueIconUrl: string;
74
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
75
+
76
+ declare const __VLS_component_17: DefineComponent<__VLS_Props_70, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
63
77
  action: () => any;
64
- }, string, PublicProps, Readonly<__VLS_Props_67> & Readonly<{
78
+ }, string, PublicProps, Readonly<__VLS_Props_70> & Readonly<{
65
79
  onAction?: (() => any) | undefined;
66
80
  }>, {
67
81
  text: string;
@@ -641,11 +655,43 @@ declare type __VLS_Props_62 = {
641
655
  };
642
656
 
643
657
  declare type __VLS_Props_63 = {
658
+ label: string;
659
+ icon: string;
660
+ plate?: string;
661
+ value: string;
662
+ open: boolean;
663
+ last?: boolean;
664
+ valueKind?: PickValueKind;
665
+ valueColor?: string;
666
+ valueIconUrl?: string;
667
+ placeholder?: string;
668
+ mobile?: boolean;
669
+ };
670
+
671
+ declare type __VLS_Props_64 = {
672
+ modelValue: PaletteId;
673
+ palettes?: readonly Palette[];
674
+ dark?: boolean;
675
+ size?: number;
676
+ };
677
+
678
+ declare type __VLS_Props_65 = {
679
+ options: ChoiceOption[];
680
+ modelValue: string;
681
+ searchAfter?: number;
682
+ searchPlaceholder?: string;
683
+ visibleRows?: number;
684
+ addLabel?: string;
685
+ empty?: string;
686
+ compact?: boolean;
687
+ };
688
+
689
+ declare type __VLS_Props_66 = {
644
690
  text: string;
645
691
  query?: string;
646
692
  };
647
693
 
648
- declare type __VLS_Props_64 = {
694
+ declare type __VLS_Props_67 = {
649
695
  page: number;
650
696
  pageSize: number;
651
697
  total: number;
@@ -656,20 +702,30 @@ declare type __VLS_Props_64 = {
656
702
  last?: boolean;
657
703
  };
658
704
 
659
- declare type __VLS_Props_65 = {
705
+ declare type __VLS_Props_68 = {
660
706
  width?: string;
661
707
  height?: number;
662
708
  shape?: keyof typeof RADIUS;
663
709
  };
664
710
 
665
- declare type __VLS_Props_66 = {
711
+ declare type __VLS_Props_69 = {
666
712
  rows?: number;
667
713
  leading?: keyof typeof LEADING;
668
714
  trailing?: boolean;
669
715
  subtitle?: boolean;
670
716
  };
671
717
 
672
- declare type __VLS_Props_67 = {
718
+ declare type __VLS_Props_7 = {
719
+ modelValue: string;
720
+ options: {
721
+ value: string;
722
+ label: string;
723
+ count?: number;
724
+ }[];
725
+ size?: 'sm' | 'md';
726
+ };
727
+
728
+ declare type __VLS_Props_70 = {
673
729
  title: string;
674
730
  text?: string;
675
731
  icon?: string;
@@ -678,21 +734,11 @@ declare type __VLS_Props_67 = {
678
734
  compact?: boolean;
679
735
  };
680
736
 
681
- declare type __VLS_Props_68 = {
737
+ declare type __VLS_Props_71 = {
682
738
  keys: string;
683
739
  size?: keyof typeof SIZES_3;
684
740
  };
685
741
 
686
- declare type __VLS_Props_7 = {
687
- modelValue: string;
688
- options: {
689
- value: string;
690
- label: string;
691
- count?: number;
692
- }[];
693
- size?: 'sm' | 'md';
694
- };
695
-
696
742
  declare type __VLS_Props_8 = {
697
743
  kind?: keyof typeof KINDS;
698
744
  size?: keyof typeof SIZES;
@@ -793,6 +839,15 @@ declare function __VLS_template_15(): {
793
839
  };
794
840
 
795
841
  declare function __VLS_template_16(): {
842
+ attrs: Partial<{}>;
843
+ slots: {
844
+ default?(_: {}): any;
845
+ };
846
+ refs: {};
847
+ rootEl: any;
848
+ };
849
+
850
+ declare function __VLS_template_17(): {
796
851
  attrs: Partial<{}>;
797
852
  slots: {
798
853
  default?(_: {}): any;
@@ -901,6 +956,8 @@ declare type __VLS_TemplateResult_15 = ReturnType<typeof __VLS_template_15>;
901
956
 
902
957
  declare type __VLS_TemplateResult_16 = ReturnType<typeof __VLS_template_16>;
903
958
 
959
+ declare type __VLS_TemplateResult_17 = ReturnType<typeof __VLS_template_17>;
960
+
904
961
  declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;
905
962
 
906
963
  declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;
@@ -965,6 +1022,12 @@ declare type __VLS_WithTemplateSlots_16<T, S> = T & {
965
1022
  };
966
1023
  };
967
1024
 
1025
+ declare type __VLS_WithTemplateSlots_17<T, S> = T & {
1026
+ new (): {
1027
+ $slots: S;
1028
+ };
1029
+ };
1030
+
968
1031
  declare type __VLS_WithTemplateSlots_2<T, S> = T & {
969
1032
  new (): {
970
1033
  $slots: S;
@@ -1017,8 +1080,12 @@ export declare function addDaysIso(iso: string, days: number): string;
1017
1080
 
1018
1081
  export declare const ALL_WORKSPACES = "all";
1019
1082
 
1083
+ export declare function applyPalette(root: HTMLElement, id: PaletteId): void;
1084
+
1020
1085
  export declare function applyTheme(root: HTMLElement, theme: ResolvedTheme): void;
1021
1086
 
1087
+ export declare const asPalette: (value: unknown) => PaletteId;
1088
+
1022
1089
  export declare function blobFromDataUrl(dataUrl: string): Blob;
1023
1090
 
1024
1091
  export declare interface ChipOption {
@@ -1028,6 +1095,15 @@ export declare interface ChipOption {
1028
1095
  icon?: string;
1029
1096
  }
1030
1097
 
1098
+ export declare interface ChoiceOption {
1099
+ id: string;
1100
+ label: string;
1101
+ sub?: string;
1102
+ color?: string;
1103
+ iconUrl?: string;
1104
+ kind?: 'dot' | 'workspace';
1105
+ }
1106
+
1031
1107
  /** Keeps the mask fully covered: the image, scaled by z over a stage of `stage` px, may only slide until its edge meets the mask's edge. */
1032
1108
  export declare function clampOffset(x: number, y: number, z: number, stage: number, inset?: number): {
1033
1109
  x: number;
@@ -1062,6 +1138,8 @@ export declare const DEFAULT_ICON_BASE = "https://unpkg.com/lucide-static@0.545.
1062
1138
 
1063
1139
  export declare const DEFAULT_PAGE_SIZE = 10;
1064
1140
 
1141
+ export declare const DEFAULT_PALETTE: PaletteId;
1142
+
1065
1143
  export declare const DIMENSION_KEYS: Readonly<Record<FilterDimension, 'workspaces' | 'projects' | 'tasks' | 'people'>>;
1066
1144
 
1067
1145
  export declare interface DrawerUser {
@@ -1119,6 +1197,8 @@ export declare interface GridDay {
1119
1197
  inMonth: boolean;
1120
1198
  }
1121
1199
 
1200
+ export declare const groupTimerRows: (group: TimerGroup) => PillTimer[];
1201
+
1122
1202
  export declare function groupTimers(timers: PillTimer[]): TimerGroup[];
1123
1203
 
1124
1204
  export declare const hasIcon: (name: string) => boolean;
@@ -1263,12 +1343,23 @@ export declare interface PageSlice<T> extends PageBounds {
1263
1343
 
1264
1344
  export declare function pageSlice<T>(items: readonly T[], page: number, size: number): PageSlice<T>;
1265
1345
 
1346
+ export declare interface Palette {
1347
+ id: PaletteId;
1348
+ name: string;
1349
+ accent: string;
1350
+ dark: string;
1351
+ }
1352
+
1353
+ export declare const PALETTE_IDS: readonly PaletteId[];
1354
+
1266
1355
  export declare interface PaletteGroup {
1267
1356
  id: string;
1268
1357
  title: string;
1269
1358
  items: readonly PaletteItem[];
1270
1359
  }
1271
1360
 
1361
+ export declare type PaletteId = 'timebraid' | 'forest' | 'ember' | 'ocean' | 'plum';
1362
+
1272
1363
  export declare const paletteIds: (groups: readonly PaletteGroup[]) => string[];
1273
1364
 
1274
1365
  export declare interface PaletteItem {
@@ -1285,6 +1376,10 @@ export declare interface PaletteItem {
1285
1376
  kbd?: string;
1286
1377
  }
1287
1378
 
1379
+ export declare const paletteOf: (id: PaletteId) => Palette;
1380
+
1381
+ export declare const PALETTES: readonly Palette[];
1382
+
1288
1383
  export declare function parallelMinutes(spans: readonly TimelineSpan[]): number;
1289
1384
 
1290
1385
  export declare function parallelPartners(spans: readonly TimelineSpan[]): Map<string, string[]>;
@@ -1337,6 +1432,8 @@ export declare interface PickPage {
1337
1432
  nextCursor: string | null;
1338
1433
  }
1339
1434
 
1435
+ export declare type PickValueKind = 'none' | 'dot' | 'workspace';
1436
+
1340
1437
  export declare interface PillTimer {
1341
1438
  id: string;
1342
1439
  task: string;
@@ -1349,6 +1446,7 @@ export declare interface PillTimer {
1349
1446
  id: string;
1350
1447
  name: string;
1351
1448
  color: string;
1449
+ iconUrl?: string;
1352
1450
  };
1353
1451
  }
1354
1452
 
@@ -1528,7 +1626,7 @@ max: number;
1528
1626
 
1529
1627
  export declare const TBadge: __VLS_WithTemplateSlots_7<typeof __VLS_component_7, __VLS_TemplateResult_7["slots"]>;
1530
1628
 
1531
- export declare const TBanner: __VLS_WithTemplateSlots_16<typeof __VLS_component_16, __VLS_TemplateResult_16["slots"]>;
1629
+ export declare const TBanner: __VLS_WithTemplateSlots_17<typeof __VLS_component_17, __VLS_TemplateResult_17["slots"]>;
1532
1630
 
1533
1631
  export declare const TBar: DefineComponent<__VLS_Props_20, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_20> & Readonly<{}>, {
1534
1632
  color: string;
@@ -1567,6 +1665,21 @@ indeterminate: boolean;
1567
1665
 
1568
1666
  export declare const TChipRow: __VLS_WithTemplateSlots_15<typeof __VLS_component_15, __VLS_TemplateResult_15["slots"]>;
1569
1667
 
1668
+ export declare const TChoiceList: DefineComponent<__VLS_Props_65, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
1669
+ "update:modelValue": (id: string) => any;
1670
+ add: () => any;
1671
+ }, string, PublicProps, Readonly<__VLS_Props_65> & Readonly<{
1672
+ "onUpdate:modelValue"?: ((id: string) => any) | undefined;
1673
+ onAdd?: (() => any) | undefined;
1674
+ }>, {
1675
+ compact: boolean;
1676
+ empty: string;
1677
+ addLabel: string;
1678
+ visibleRows: number;
1679
+ searchPlaceholder: string;
1680
+ searchAfter: number;
1681
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
1682
+
1570
1683
  export declare const TCodeInput: DefineComponent<__VLS_Props_47, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
1571
1684
  "update:modelValue": (v: string) => any;
1572
1685
  }, string, PublicProps, Readonly<__VLS_Props_47> & Readonly<{
@@ -1778,7 +1891,7 @@ export declare const THEME_PREFERENCES: ThemePreference[];
1778
1891
 
1779
1892
  export declare type ThemePreference = 'system' | 'light' | 'dark';
1780
1893
 
1781
- export declare const THighlight: DefineComponent<__VLS_Props_63, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_63> & Readonly<{}>, {
1894
+ export declare const THighlight: DefineComponent<__VLS_Props_66, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_66> & Readonly<{}>, {
1782
1895
  query: string;
1783
1896
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
1784
1897
 
@@ -1846,6 +1959,7 @@ export declare interface TimerWorkspace {
1846
1959
  id: string;
1847
1960
  name: string;
1848
1961
  color: string;
1962
+ iconUrl?: string;
1849
1963
  }
1850
1964
 
1851
1965
  export declare const TIOSNav: __VLS_WithTemplateSlots_11<typeof __VLS_component_11, __VLS_TemplateResult_11["slots"]>;
@@ -1866,7 +1980,7 @@ indicator?: boolean;
1866
1980
  indicator: boolean;
1867
1981
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
1868
1982
 
1869
- export declare const TKbd: DefineComponent<__VLS_Props_68, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_68> & Readonly<{}>, {
1983
+ export declare const TKbd: DefineComponent<__VLS_Props_71, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_71> & Readonly<{}>, {
1870
1984
  size: keyof typeof SIZES_3;
1871
1985
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
1872
1986
 
@@ -1971,10 +2085,10 @@ onClick?: ((e: MouseEvent) => any) | undefined;
1971
2085
  compact: boolean;
1972
2086
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
1973
2087
 
1974
- export declare const TPager: DefineComponent<__VLS_Props_64, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
2088
+ export declare const TPager: DefineComponent<__VLS_Props_67, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
1975
2089
  "update:page": (page: number) => any;
1976
2090
  "update:pageSize": (size: number) => any;
1977
- }, string, PublicProps, Readonly<__VLS_Props_64> & Readonly<{
2091
+ }, string, PublicProps, Readonly<__VLS_Props_67> & Readonly<{
1978
2092
  "onUpdate:page"?: ((page: number) => any) | undefined;
1979
2093
  "onUpdate:pageSize"?: ((size: number) => any) | undefined;
1980
2094
  }>, {
@@ -1987,6 +2101,16 @@ sizes: readonly number[];
1987
2101
  anchor: HTMLButtonElement;
1988
2102
  }, HTMLDivElement>;
1989
2103
 
2104
+ export declare const TPalettePicker: DefineComponent<__VLS_Props_64, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
2105
+ "update:modelValue": (id: PaletteId) => any;
2106
+ }, string, PublicProps, Readonly<__VLS_Props_64> & Readonly<{
2107
+ "onUpdate:modelValue"?: ((id: PaletteId) => any) | undefined;
2108
+ }>, {
2109
+ size: number;
2110
+ dark: boolean;
2111
+ palettes: readonly Palette[];
2112
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
2113
+
1990
2114
  export declare const TParallelMark: DefineComponent<__VLS_Props_57, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_57> & Readonly<{}>, {
1991
2115
  others: string[];
1992
2116
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
@@ -2042,6 +2166,8 @@ emptyTime: string;
2042
2166
  list: HTMLDivElement;
2043
2167
  }, HTMLDivElement>;
2044
2168
 
2169
+ export declare const TPickRow: __VLS_WithTemplateSlots_16<typeof __VLS_component_16, __VLS_TemplateResult_16["slots"]>;
2170
+
2045
2171
  export declare const TPill: __VLS_WithTemplateSlots_10<typeof __VLS_component_10, __VLS_TemplateResult_10["slots"]>;
2046
2172
 
2047
2173
  export declare const TPopover: __VLS_WithTemplateSlots_6<typeof __VLS_component_6, __VLS_TemplateResult_6["slots"]>;
@@ -2096,13 +2222,13 @@ disabled: boolean;
2096
2222
 
2097
2223
  export declare const TSheet: __VLS_WithTemplateSlots_9<typeof __VLS_component_9, __VLS_TemplateResult_9["slots"]>;
2098
2224
 
2099
- export declare const TSkeleton: DefineComponent<__VLS_Props_65, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_65> & Readonly<{}>, {
2225
+ export declare const TSkeleton: DefineComponent<__VLS_Props_68, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_68> & Readonly<{}>, {
2100
2226
  width: string;
2101
2227
  height: number;
2102
2228
  shape: keyof typeof RADIUS;
2103
2229
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
2104
2230
 
2105
- export declare const TSkeletonList: DefineComponent<__VLS_Props_66, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_66> & Readonly<{}>, {
2231
+ export declare const TSkeletonList: DefineComponent<__VLS_Props_69, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_69> & Readonly<{}>, {
2106
2232
  subtitle: boolean;
2107
2233
  leading: keyof typeof LEADING;
2108
2234
  trailing: boolean;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400..700&display=swap";:root{--font-display:var(--font-sans);--font-ui:var(--font-sans);--font-numeric:var(--font-mono)}:root{--font-sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--indigo-400:#6C77DE;--indigo-500:#4A57D2;--indigo-600:#3A44AF;--indigo-700:#2C3391;--chart-1:#0072B2;--chart-2:#E69F00;--chart-3:#009E73;--chart-4:#CC79A7;--chart-5:#56B4E9;--chart-6:#D55E00;--chart-7:#F0E442;--chart-8:#6B7085;--bg:#F2F3F8;--bg-elev:#FFFFFF;--bg-elev-2:#F7F8FC;--bg-sidebar:rgba(244,245,250,.86);--bg-bar:rgba(242,243,248,.82);--fill:rgba(20,22,40,.06);--fill-2:rgba(20,22,40,.1);--fill-3:rgba(20,22,40,.16);--sep:rgba(20,22,40,.1);--sep-strong:rgba(20,22,40,.18);--label:#0E1024;--label-2:#5C6178;--label-3:#8B90A5;--label-4:#B7BBCB;--on-accent:#FFFFFF;--accent:#4A57D2;--accent-hover:#3F4BC0;--accent-soft:rgba(74,87,210,.12);--accent-soft-2:rgba(74,87,210,.2);--running:#4A57D2;--running-soft:rgba(74,87,210,.1);--green:#1E9E6A;--green-soft:rgba(30,158,106,.12);--red:#D6453D;--red-soft:rgba(214,69,61,.1);--orange:#D97B0F;--orange-soft:rgba(217,123,15,.12);--brand-field:#5D68CF;--brand-field-deep:#191E5E;--brand-ink:#141846;--r-cell:12px;--r-card:14px;--r-btn:10px;--r-pill:999px;--r-sheet:20px;--r-window:12px;--sh-card:0 1px 2px rgba(14,16,36,.04),0 0 0 1px rgba(14,16,36,.04);--sh-float:0 12px 32px -8px rgba(14,16,36,.22),0 2px 6px rgba(14,16,36,.08),0 0 0 1px rgba(14,16,36,.05);--sh-sheet:0 -8px 40px -8px rgba(14,16,36,.24);--sh-thumb:0 2px 6px rgba(0,0,0,.25);--sh-seg:0 1px 2px rgba(0,0,0,.14),0 3px 8px -2px rgba(0,0,0,.12),0 0 0 .5px var(--sep);--blur:saturate(180%) blur(22px);--scrim:rgba(10,11,20,.42);--dash:rgba(255,255,255,.7);--ease:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-sheet:cubic-bezier(.32,.72,0,1);--t-fast:.14s;--t-base:.22s;--t-sheet:.42s}[data-theme=dark]{--bg:#15161F;--bg-elev:#1F2030;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78);--fill:rgba(255,255,255,.07);--fill-2:rgba(255,255,255,.11);--fill-3:rgba(255,255,255,.17);--sep:rgba(255,255,255,.09);--sep-strong:rgba(255,255,255,.16);--label:#F3F4FA;--label-2:#A7ABC0;--label-3:#7D8199;--label-4:#575B70;--accent:#7A84E6;--accent-hover:#8C95EC;--accent-soft:rgba(122,132,230,.16);--accent-soft-2:rgba(122,132,230,.26);--running:#8A93EC;--running-soft:rgba(122,132,230,.14);--green:#3CC08A;--green-soft:rgba(60,192,138,.14);--red:#F06B62;--red-soft:rgba(240,107,98,.14);--orange:#F0A24B;--orange-soft:rgba(240,162,75,.16);--chart-8:#9A9FB4;--sh-card:0 1px 2px rgba(0,0,0,.2),0 0 0 1px rgba(255,255,255,.04);--sh-float:0 16px 40px -8px rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.08);--sh-sheet:0 -8px 40px -8px rgba(0,0,0,.6);--scrim:rgba(0,0,0,.55)}:root{--text-display-1:64px;--leading-display-1:1.02;--tracking-display-1:-.03em;--text-display-2:48px;--leading-display-2:1.06;--tracking-display-2:-.025em;--text-large-title:30px;--text-large-title-phone:34px;--tracking-large-title:-.025em;--leading-large-title:1.1;--text-title:17px;--text-row:15px;--text-subtitle:12.5px;--text-section:12px;--tracking-section:.04em;--text-body:14px;--text-body-lg:18px;--leading-body-lg:1.6;--text-caption:12px;--text-footnote:11.5px;--text-timer-xl:44px;--text-timer-lg:28px;--text-timer-md:22px;--text-timer-sm:15px;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700}:root{--space-0:0px;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-11:64px;--space-12:80px;--space-13:112px;--space-14:160px;--section-y:112px;--section-y-tight:72px;--container-max:1160px;--container-prose:660px;--gutter:24px;--sidebar-w:232px;--content-max:1040px;--content-max-narrow:760px;--gutter-phone:16px;--row-h:46px;--row-h-sub:56px;--row-h-dense:40px;--control-h-sm:30px;--control-h-md:36px;--control-h-lg:44px;--control-h-xl:50px;--pill-h:46px;--pill-h-compact:30px;--timer-bar-h:56px;--timer-bar-pad:78px;--inset-top:env(safe-area-inset-top,0px);--inset-bottom:env(safe-area-inset-bottom,0px);--tab-bar-inset-ios:max(10px,calc(var(--inset-bottom) - 12px));--tab-bar-h-ios:calc(42px + var(--tab-bar-inset-ios));--timer-bar-bottom-ios:calc(58px + var(--tab-bar-inset-ios));--tab-bar-pad-ios:calc(var(--tab-bar-h-ios) + 16px);--nav-bar-h-android:80px;--nav-bar-pad-android:96px;--toggle-w:46px;--toggle-h:28px;--field-h:38px;--seg-h:36px;--seg-h-sm:30px;--icon-square:28px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--label);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:var(--text-body);line-height:1.45}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere;line-height:1.3;min-width:0}.ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::selection{background:var(--accent-soft-2)}@keyframes t-pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes t-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.t-skeleton{background:linear-gradient(90deg,var(--fill) 25%,var(--fill-2) 50%,var(--fill) 75%);background-size:400% 100%;animation:t-shimmer 1.6s linear infinite}@media (prefers-reduced-motion:reduce){.t-skeleton{animation:none;background:var(--fill)}}@keyframes t-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes t-sheet{0%{transform:translateY(100%)}to{transform:none}}@keyframes t-drawer{0%{transform:translate(-100%)}to{transform:none}}@keyframes t-scrim{0%{opacity:0}to{opacity:1}}@keyframes t-pop{0%{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}@keyframes t-island{0%{transform:scaleX(.6);opacity:.4}to{transform:none;opacity:1}}@keyframes t-sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes t-float{0%,to{translate:0 0}50%{translate:0 -6px}}@keyframes t-flash{0%,30%{background-color:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}to{background-color:transparent;box-shadow:none}}@keyframes t-attention{0%,to{background-color:transparent}50%{background-color:var(--orange-soft)}}.view-in{animation:t-in var(--t-base) var(--ease-out) both}.t-flash{animation:t-flash 2s var(--ease) 1 both}.t-attention{animation:t-attention 1.4s var(--ease) 3}.press{transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}.press:active{transform:scale(.98)}.row-press:active{background:var(--fill-2)!important}@media (prefers-reduced-motion:reduce){*{animation-duration:0ms!important;transition-duration:0ms!important}}.t-wheel-list[data-v-f89240c7]{scrollbar-width:none}.t-wheel-list[data-v-f89240c7]::-webkit-scrollbar{display:none}.t-wheel-list[data-v-f89240c7]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--r-btn)}.check:focus-within .box[data-v-8c783040]{outline:2px solid var(--accent);outline-offset:2px}.t-spinner[data-v-a41169e8]{animation:t-spinner-turn-a41169e8 .7s linear infinite}@keyframes t-spinner-turn-a41169e8{to{transform:rotate(360deg)}}[data-palette-item][data-v-088bc492]:hover:not([aria-selected=true]){background:var(--fill)}
1
+ @import"https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400..700&display=swap";:root{--font-display:var(--font-sans);--font-ui:var(--font-sans);--font-numeric:var(--font-mono)}:root{--font-sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--indigo-400:#6C77DE;--indigo-500:#4A57D2;--indigo-600:#3A44AF;--indigo-700:#2C3391;--chart-1:#0072B2;--chart-2:#E69F00;--chart-3:#009E73;--chart-4:#CC79A7;--chart-5:#56B4E9;--chart-6:#D55E00;--chart-7:#F0E442;--chart-8:#6B7085;--bg:#F2F3F8;--bg-elev:#FFFFFF;--bg-elev-2:#F7F8FC;--bg-sidebar:rgba(244,245,250,.86);--bg-bar:rgba(242,243,248,.82);--fill:rgba(20,22,40,.06);--fill-2:rgba(20,22,40,.1);--fill-3:rgba(20,22,40,.16);--sep:rgba(20,22,40,.1);--sep-strong:rgba(20,22,40,.18);--label:#0E1024;--label-2:#5C6178;--label-3:#8B90A5;--label-4:#B7BBCB;--on-accent:#FFFFFF;--accent:#4A57D2;--accent-hover:#3F4BC0;--accent-soft:rgba(74,87,210,.12);--accent-soft-2:rgba(74,87,210,.2);--running:#4A57D2;--running-soft:rgba(74,87,210,.1);--green:#1E9E6A;--green-soft:rgba(30,158,106,.12);--red:#D6453D;--red-soft:rgba(214,69,61,.1);--orange:#D97B0F;--orange-soft:rgba(217,123,15,.12);--brand-field:#5D68CF;--brand-field-deep:#191E5E;--brand-ink:#141846;--r-cell:12px;--r-card:14px;--r-btn:10px;--r-pill:999px;--r-sheet:20px;--r-window:12px;--sh-card:0 1px 2px rgba(14,16,36,.04),0 0 0 1px rgba(14,16,36,.04);--sh-float:0 12px 32px -8px rgba(14,16,36,.22),0 2px 6px rgba(14,16,36,.08),0 0 0 1px rgba(14,16,36,.05);--sh-sheet:0 -8px 40px -8px rgba(14,16,36,.24);--sh-thumb:0 2px 6px rgba(0,0,0,.25);--sh-seg:0 1px 2px rgba(0,0,0,.14),0 3px 8px -2px rgba(0,0,0,.12),0 0 0 .5px var(--sep);--blur:saturate(180%) blur(22px);--scrim:rgba(10,11,20,.42);--dash:rgba(255,255,255,.7);--ease:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-sheet:cubic-bezier(.32,.72,0,1);--t-fast:.14s;--t-base:.22s;--t-sheet:.42s}[data-theme=dark]{--bg:#15161F;--bg-elev:#1F2030;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78);--fill:rgba(255,255,255,.07);--fill-2:rgba(255,255,255,.11);--fill-3:rgba(255,255,255,.17);--sep:rgba(255,255,255,.09);--sep-strong:rgba(255,255,255,.16);--label:#F3F4FA;--label-2:#A7ABC0;--label-3:#7D8199;--label-4:#575B70;--accent:#7A84E6;--accent-hover:#8C95EC;--accent-soft:rgba(122,132,230,.16);--accent-soft-2:rgba(122,132,230,.26);--running:#8A93EC;--running-soft:rgba(122,132,230,.14);--green:#3CC08A;--green-soft:rgba(60,192,138,.14);--red:#F06B62;--red-soft:rgba(240,107,98,.14);--orange:#F0A24B;--orange-soft:rgba(240,162,75,.16);--chart-8:#9A9FB4;--sh-card:0 1px 2px rgba(0,0,0,.2),0 0 0 1px rgba(255,255,255,.04);--sh-float:0 16px 40px -8px rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.08);--sh-sheet:0 -8px 40px -8px rgba(0,0,0,.6);--scrim:rgba(0,0,0,.55)}[data-palette=forest]{--accent:#1E7F5C;--accent-hover:#196E4F;--accent-soft:rgba(30,127,92,.12);--accent-soft-2:rgba(30,127,92,.2);--running:#1E7F5C;--running-soft:rgba(30,127,92,.1);--bg:#F1F5F2;--bg-elev-2:#F6F9F7;--bg-sidebar:rgba(243,247,244,.86);--bg-bar:rgba(241,245,242,.82)}[data-theme=dark][data-palette=forest]{--accent:#4FBF8F;--accent-hover:#63CB9D;--accent-soft:rgba(79,191,143,.16);--accent-soft-2:rgba(79,191,143,.26);--running:#5FC99B;--running-soft:rgba(79,191,143,.14);--bg:#15161F;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78)}[data-palette=ember]{--accent:#C84A22;--accent-hover:#B3411D;--accent-soft:rgba(200,74,34,.12);--accent-soft-2:rgba(200,74,34,.2);--running:#C84A22;--running-soft:rgba(200,74,34,.1);--bg:#F7F3F0;--bg-elev-2:#FAF7F5;--bg-sidebar:rgba(248,244,241,.86);--bg-bar:rgba(247,243,240,.82)}[data-theme=dark][data-palette=ember]{--accent:#F0825C;--accent-hover:#F39474;--accent-soft:rgba(240,130,92,.16);--accent-soft-2:rgba(240,130,92,.26);--running:#F5906C;--running-soft:rgba(240,130,92,.14);--bg:#15161F;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78)}[data-palette=ocean]{--accent:#0E7C9B;--accent-hover:#0C6B86;--accent-soft:rgba(14,124,155,.12);--accent-soft-2:rgba(14,124,155,.2);--running:#0E7C9B;--running-soft:rgba(14,124,155,.1);--bg:#EFF5F7;--bg-elev-2:#F5F9FA;--bg-sidebar:rgba(241,246,248,.86);--bg-bar:rgba(239,245,247,.82)}[data-theme=dark][data-palette=ocean]{--accent:#4FC1E0;--accent-hover:#66CBE6;--accent-soft:rgba(79,193,224,.16);--accent-soft-2:rgba(79,193,224,.26);--running:#62C9E4;--running-soft:rgba(79,193,224,.14);--bg:#15161F;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78)}[data-palette=plum]{--accent:#8A3FC7;--accent-hover:#7A37B1;--accent-soft:rgba(138,63,199,.12);--accent-soft-2:rgba(138,63,199,.2);--running:#8A3FC7;--running-soft:rgba(138,63,199,.1);--bg:#F5F2F8;--bg-elev-2:#F9F7FB;--bg-sidebar:rgba(246,243,249,.86);--bg-bar:rgba(245,242,248,.82)}[data-theme=dark][data-palette=plum]{--accent:#B98AF0;--accent-hover:#C59CF3;--accent-soft:rgba(185,138,240,.16);--accent-soft-2:rgba(185,138,240,.26);--running:#C197F2;--running-soft:rgba(185,138,240,.14);--bg:#15161F;--bg-elev-2:#282A3C;--bg-sidebar:rgba(24,25,36,.86);--bg-bar:rgba(21,22,31,.78)}:root{--text-display-1:64px;--leading-display-1:1.02;--tracking-display-1:-.03em;--text-display-2:48px;--leading-display-2:1.06;--tracking-display-2:-.025em;--text-large-title:30px;--text-large-title-phone:34px;--tracking-large-title:-.025em;--leading-large-title:1.1;--text-title:17px;--text-row:15px;--text-subtitle:12.5px;--text-section:12px;--tracking-section:.04em;--text-body:14px;--text-body-lg:18px;--leading-body-lg:1.6;--text-caption:12px;--text-footnote:11.5px;--text-timer-xl:44px;--text-timer-lg:28px;--text-timer-md:22px;--text-timer-sm:15px;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700}:root{--space-0:0px;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-11:64px;--space-12:80px;--space-13:112px;--space-14:160px;--section-y:112px;--section-y-tight:72px;--container-max:1160px;--container-prose:660px;--gutter:24px;--sidebar-w:232px;--content-max:1040px;--content-max-narrow:760px;--gutter-phone:16px;--row-h:46px;--row-h-sub:56px;--row-h-dense:40px;--control-h-sm:30px;--control-h-md:36px;--control-h-lg:44px;--control-h-xl:50px;--pill-h:46px;--pill-h-compact:30px;--timer-bar-h:52px;--timer-bar-pad:74px;--inset-top:env(safe-area-inset-top,0px);--inset-bottom:env(safe-area-inset-bottom,0px);--tab-bar-inset-ios:max(10px,calc(var(--inset-bottom) - 12px));--tab-bar-h-ios:calc(42px + var(--tab-bar-inset-ios));--timer-bar-bottom-ios:calc(58px + var(--tab-bar-inset-ios));--tab-bar-pad-ios:calc(var(--tab-bar-h-ios) + 16px);--nav-bar-h-android:80px;--nav-bar-pad-android:96px;--toggle-w:46px;--toggle-h:28px;--field-h:38px;--seg-h:36px;--seg-h-sm:30px;--icon-square:28px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--label);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:var(--text-body);line-height:1.45}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere;line-height:1.3;min-width:0}.ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::selection{background:var(--accent-soft-2)}@keyframes t-pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes t-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.t-skeleton{background:linear-gradient(90deg,var(--fill) 25%,var(--fill-2) 50%,var(--fill) 75%);background-size:400% 100%;animation:t-shimmer 1.6s linear infinite}@media (prefers-reduced-motion:reduce){.t-skeleton{animation:none;background:var(--fill)}}@keyframes t-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes t-sheet{0%{transform:translateY(100%)}to{transform:none}}@keyframes t-drawer{0%{transform:translate(-100%)}to{transform:none}}@keyframes t-scrim{0%{opacity:0}to{opacity:1}}@keyframes t-pop{0%{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}@keyframes t-island{0%{transform:scaleX(.6);opacity:.4}to{transform:none;opacity:1}}@keyframes t-sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes t-float{0%,to{translate:0 0}50%{translate:0 -6px}}@keyframes t-flash{0%,30%{background-color:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}to{background-color:transparent;box-shadow:none}}@keyframes t-attention{0%,to{background-color:transparent}50%{background-color:var(--orange-soft)}}.view-in{animation:t-in var(--t-base) var(--ease-out) both}.t-flash{animation:t-flash 2s var(--ease) 1 both}.t-attention{animation:t-attention 1.4s var(--ease) 3}.press{transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}.press:active{transform:scale(.98)}.row-press:active{background:var(--fill-2)!important}@media (prefers-reduced-motion:reduce){*{animation-duration:0ms!important;transition-duration:0ms!important}}.t-wheel-list[data-v-f89240c7]{scrollbar-width:none}.t-wheel-list[data-v-f89240c7]::-webkit-scrollbar{display:none}.t-wheel-list[data-v-f89240c7]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--r-btn)}.check:focus-within .box[data-v-8c783040]{outline:2px solid var(--accent);outline-offset:2px}.t-spinner[data-v-a41169e8]{animation:t-spinner-turn-a41169e8 .7s linear infinite}@keyframes t-spinner-turn-a41169e8{to{transform:rotate(360deg)}}[data-palette-item][data-v-088bc492]:hover:not([aria-selected=true]){background:var(--fill)}