@proyecto-viviana/ui 0.4.0 → 0.5.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/styles.css +0 -3
- package/dist/vite.d.ts +1 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +9 -1
- package/dist/vite.js.map +1 -1
- package/dist/vite.jsx +9 -1
- package/dist/vite.jsx.map +1 -1
- package/dist/viviana-tokens.css +240 -171
- package/package.json +3 -57
- package/src/vite.ts +13 -1
- package/src/viviana-tokens.css +240 -171
- package/dist/CalendarCard.d.ts +0 -2
- package/dist/CalendarCard.d.ts.map +0 -1
- package/dist/CalendarCard.js +0 -97
- package/dist/CalendarCard.js.map +0 -1
- package/dist/CalendarCard.jsx +0 -51
- package/dist/CalendarCard.jsx.map +0 -1
- package/dist/Chip.d.ts +0 -2
- package/dist/Chip.d.ts.map +0 -1
- package/dist/Chip.js +0 -2
- package/dist/Chip.jsx +0 -2
- package/dist/Conversation.d.ts +0 -2
- package/dist/Conversation.d.ts.map +0 -1
- package/dist/Conversation.js +0 -177
- package/dist/Conversation.js.map +0 -1
- package/dist/Conversation.jsx +0 -107
- package/dist/Conversation.jsx.map +0 -1
- package/dist/EventCard.d.ts +0 -2
- package/dist/EventCard.d.ts.map +0 -1
- package/dist/EventCard.js +0 -173
- package/dist/EventCard.js.map +0 -1
- package/dist/EventCard.jsx +0 -96
- package/dist/EventCard.jsx.map +0 -1
- package/dist/Logo.d.ts +0 -2
- package/dist/Logo.d.ts.map +0 -1
- package/dist/Logo.js +0 -116
- package/dist/Logo.js.map +0 -1
- package/dist/Logo.jsx +0 -101
- package/dist/Logo.jsx.map +0 -1
- package/dist/PageLayout.d.ts +0 -2
- package/dist/PageLayout.d.ts.map +0 -1
- package/dist/PageLayout.js +0 -31
- package/dist/PageLayout.js.map +0 -1
- package/dist/PageLayout.jsx +0 -23
- package/dist/PageLayout.jsx.map +0 -1
- package/dist/ProfileCard.d.ts +0 -2
- package/dist/ProfileCard.d.ts.map +0 -1
- package/dist/ProfileCard.js +0 -78
- package/dist/ProfileCard.js.map +0 -1
- package/dist/ProfileCard.jsx +0 -53
- package/dist/ProfileCard.jsx.map +0 -1
- package/dist/ProjectCard.d.ts +0 -2
- package/dist/ProjectCard.d.ts.map +0 -1
- package/dist/ProjectCard.js +0 -164
- package/dist/ProjectCard.js.map +0 -1
- package/dist/ProjectCard.jsx +0 -133
- package/dist/ProjectCard.jsx.map +0 -1
- package/dist/TimelineItem.d.ts +0 -2
- package/dist/TimelineItem.d.ts.map +0 -1
- package/dist/TimelineItem.js +0 -137
- package/dist/TimelineItem.js.map +0 -1
- package/dist/TimelineItem.jsx +0 -70
- package/dist/TimelineItem.jsx.map +0 -1
- package/dist/chip2.js +0 -82
- package/dist/chip2.js.map +0 -1
- package/dist/chip2.jsx +0 -68
- package/dist/chip2.jsx.map +0 -1
- package/dist/custom/calendar-card/index.d.ts +0 -12
- package/dist/custom/calendar-card/index.d.ts.map +0 -1
- package/dist/custom/chip/index.d.ts +0 -16
- package/dist/custom/chip/index.d.ts.map +0 -1
- package/dist/custom/conversation/index.d.ts +0 -32
- package/dist/custom/conversation/index.d.ts.map +0 -1
- package/dist/custom/event-card/index.d.ts +0 -30
- package/dist/custom/event-card/index.d.ts.map +0 -1
- package/dist/custom/header/index.d.ts +0 -12
- package/dist/custom/header/index.d.ts.map +0 -1
- package/dist/custom/lateral-nav/index.d.ts +0 -32
- package/dist/custom/lateral-nav/index.d.ts.map +0 -1
- package/dist/custom/logo/index.d.ts +0 -11
- package/dist/custom/logo/index.d.ts.map +0 -1
- package/dist/custom/nav-header/index.d.ts +0 -13
- package/dist/custom/nav-header/index.d.ts.map +0 -1
- package/dist/custom/page-layout/index.d.ts +0 -7
- package/dist/custom/page-layout/index.d.ts.map +0 -1
- package/dist/custom/profile-card/index.d.ts +0 -16
- package/dist/custom/profile-card/index.d.ts.map +0 -1
- package/dist/custom/project-card/index.d.ts +0 -13
- package/dist/custom/project-card/index.d.ts.map +0 -1
- package/dist/custom/timeline-item/index.d.ts +0 -28
- package/dist/custom/timeline-item/index.d.ts.map +0 -1
- package/src/CalendarCard.ts +0 -1
- package/src/Chip.ts +0 -1
- package/src/Conversation.ts +0 -1
- package/src/EventCard.ts +0 -1
- package/src/Logo.ts +0 -1
- package/src/PageLayout.ts +0 -1
- package/src/ProfileCard.ts +0 -1
- package/src/ProjectCard.ts +0 -1
- package/src/TimelineItem.ts +0 -1
- package/src/custom/calendar-card/index.tsx +0 -115
- package/src/custom/chip/index.tsx +0 -78
- package/src/custom/conversation/index.tsx +0 -199
- package/src/custom/event-card/index.tsx +0 -232
- package/src/custom/header/index.tsx +0 -64
- package/src/custom/lateral-nav/index.tsx +0 -134
- package/src/custom/logo/index.tsx +0 -53
- package/src/custom/nav-header/index.tsx +0 -98
- package/src/custom/page-layout/index.tsx +0 -33
- package/src/custom/profile-card/index.tsx +0 -114
- package/src/custom/project-card/index.tsx +0 -76
- package/src/custom/timeline-item/index.tsx +0 -140
package/src/viviana-tokens.css
CHANGED
|
@@ -1,88 +1,99 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Viviana
|
|
2
|
+
* Viviana UI design tokens — blue + amber frosted glass.
|
|
3
3
|
*
|
|
4
4
|
* The brand's color palette + typography, owned by the design system itself so
|
|
5
5
|
* the product components are self-contained. The S2 style() macro carries the
|
|
6
6
|
* *shape* (spacing, radius, sizing, type ramp) via its named tokens; these vars
|
|
7
|
-
* supply the *
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* supply the *color* + the *frosted-glass effect* families, referenced from
|
|
8
|
+
* components as arbitrary `[var(--color-*)]` / `[var(--surface-*)]` values.
|
|
9
|
+
*
|
|
10
|
+
* This is the retuned Viviana UI token layer authored on the
|
|
11
|
+
* `design/visual-system-claude-v1` lane (see `.claude/current/visual-system-lane.md`).
|
|
12
|
+
* It supersedes the earlier blue + pink "Silapse" palette: the accent family is
|
|
13
|
+
* now amber (the single warm, one-per-screen action color), blue carries
|
|
14
|
+
* wayfinding/selection, and new **surface / blur / edge-glass / glow / shadow**
|
|
15
|
+
* families express the frosted-glass surface ladder. Semantic
|
|
16
|
+
* success/warning/danger are unchanged. The values are the canonical spec
|
|
17
|
+
* transcribed from the paired design handoff; the Education reference route keeps
|
|
18
|
+
* the same semantic names under its `.vui` scope.
|
|
11
19
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
20
|
+
* Dark is the default (`:root`); light overrides bind to the same
|
|
21
|
+
* `data-color-scheme` attribute solid-spectrum's theme uses, so a single scheme
|
|
22
|
+
* switch flips both layers together. `apps/web` still ships its own copy of the
|
|
23
|
+
* legacy palette until the Tailwind-removal Phase 4 restyle consumes this file
|
|
24
|
+
* directly (`.claude/current/tailwind-removal.md`).
|
|
14
25
|
*/
|
|
15
26
|
|
|
16
27
|
:root {
|
|
17
|
-
/* Grey scale */
|
|
18
|
-
--color-grey-50: #
|
|
19
|
-
--color-grey-100: #
|
|
20
|
-
--color-grey-200: #
|
|
21
|
-
--color-grey-300: #
|
|
22
|
-
--color-grey-400: #
|
|
23
|
-
--color-grey-500: #
|
|
24
|
-
--color-grey-600: #
|
|
25
|
-
--color-grey-700: #
|
|
26
|
-
--color-grey-800: #
|
|
27
|
-
--color-grey-900: #
|
|
28
|
-
|
|
29
|
-
/* Blue scale */
|
|
30
|
-
--color-blue-50: #
|
|
31
|
-
--color-blue-100: #
|
|
32
|
-
--color-blue-200: #
|
|
33
|
-
--color-blue-300: #
|
|
34
|
-
--color-blue-400: #
|
|
35
|
-
--color-blue-500: #
|
|
36
|
-
--color-blue-600: #
|
|
37
|
-
--color-blue-700: #
|
|
38
|
-
--color-blue-800: #
|
|
39
|
-
--color-blue-900: #
|
|
40
|
-
|
|
41
|
-
/*
|
|
42
|
-
--color-
|
|
43
|
-
--color-
|
|
44
|
-
--color-
|
|
45
|
-
--color-
|
|
46
|
-
--color-
|
|
47
|
-
--color-
|
|
48
|
-
--color-
|
|
49
|
-
--color-
|
|
50
|
-
--color-
|
|
51
|
-
--color-
|
|
52
|
-
|
|
53
|
-
/* Background —
|
|
54
|
-
--color-bg-100: #
|
|
55
|
-
--color-bg-200: #
|
|
56
|
-
--color-bg-300: #
|
|
57
|
-
--color-bg-400: #
|
|
58
|
-
--color-bg-light: #
|
|
59
|
-
|
|
60
|
-
/* Primary — blue
|
|
61
|
-
--color-primary: #
|
|
62
|
-
--color-primary-50: #
|
|
63
|
-
--color-primary-100: #
|
|
64
|
-
--color-primary-200: #
|
|
65
|
-
--color-primary-300: #
|
|
66
|
-
--color-primary-400: #
|
|
67
|
-
--color-primary-500: #
|
|
68
|
-
--color-primary-600: #
|
|
69
|
-
--color-primary-700: #
|
|
70
|
-
--color-primary-800: #
|
|
71
|
-
--color-primary-900: #
|
|
72
|
-
|
|
73
|
-
/* Accent —
|
|
74
|
-
--color-accent: #
|
|
75
|
-
--color-accent-50: #
|
|
76
|
-
--color-accent-100: #
|
|
77
|
-
--color-accent-200: #
|
|
78
|
-
--color-accent-300: #
|
|
79
|
-
--color-accent-400: #
|
|
80
|
-
--color-accent-500: #
|
|
81
|
-
--color-accent-600: #
|
|
82
|
-
--color-accent-700: #
|
|
83
|
-
--color-accent-800: #
|
|
84
|
-
--color-accent-900: #
|
|
85
|
-
--color-accent-highlight: #
|
|
28
|
+
/* Grey scale — charcoal-slate neutral ramp */
|
|
29
|
+
--color-grey-50: #f3f4f6;
|
|
30
|
+
--color-grey-100: #d7dce2;
|
|
31
|
+
--color-grey-200: #b9c0c9;
|
|
32
|
+
--color-grey-300: #97a1ab;
|
|
33
|
+
--color-grey-400: #626d78;
|
|
34
|
+
--color-grey-500: #4a545e;
|
|
35
|
+
--color-grey-600: #333c45;
|
|
36
|
+
--color-grey-700: #232d37;
|
|
37
|
+
--color-grey-800: #1a222a;
|
|
38
|
+
--color-grey-900: #10161c;
|
|
39
|
+
|
|
40
|
+
/* Blue scale — wayfinding / selection */
|
|
41
|
+
--color-blue-50: #eaf4fe;
|
|
42
|
+
--color-blue-100: #d4e9fd;
|
|
43
|
+
--color-blue-200: #a8d2fb;
|
|
44
|
+
--color-blue-300: #7cbaf8;
|
|
45
|
+
--color-blue-400: #55a6f6;
|
|
46
|
+
--color-blue-500: #2e90fa;
|
|
47
|
+
--color-blue-600: #1877e8;
|
|
48
|
+
--color-blue-700: #135fc0;
|
|
49
|
+
--color-blue-800: #0e4a99;
|
|
50
|
+
--color-blue-900: #0a2f63;
|
|
51
|
+
|
|
52
|
+
/* Amber scale — the single warm action accent */
|
|
53
|
+
--color-amber-50: #fef4e6;
|
|
54
|
+
--color-amber-100: #fde7c8;
|
|
55
|
+
--color-amber-200: #fcd9a0;
|
|
56
|
+
--color-amber-300: #f9c270;
|
|
57
|
+
--color-amber-400: #f9a838;
|
|
58
|
+
--color-amber-500: #f79009;
|
|
59
|
+
--color-amber-600: #e07b00;
|
|
60
|
+
--color-amber-700: #b86200;
|
|
61
|
+
--color-amber-800: #8f4c00;
|
|
62
|
+
--color-amber-900: #3b2200;
|
|
63
|
+
|
|
64
|
+
/* Background — frosted charcoal ladder (near-opaque worst-case surfaces) */
|
|
65
|
+
--color-bg-100: #2a333c;
|
|
66
|
+
--color-bg-200: #232d37;
|
|
67
|
+
--color-bg-300: #1b242c;
|
|
68
|
+
--color-bg-400: #141a1f;
|
|
69
|
+
--color-bg-light: #33424e;
|
|
70
|
+
|
|
71
|
+
/* Primary — blue */
|
|
72
|
+
--color-primary: #55a6f6;
|
|
73
|
+
--color-primary-50: #0a1826;
|
|
74
|
+
--color-primary-100: #d4e9fd;
|
|
75
|
+
--color-primary-200: #a8d2fb;
|
|
76
|
+
--color-primary-300: #7cbaf8;
|
|
77
|
+
--color-primary-400: #55a6f6;
|
|
78
|
+
--color-primary-500: #2e90fa;
|
|
79
|
+
--color-primary-600: #1877e8;
|
|
80
|
+
--color-primary-700: #135fc0;
|
|
81
|
+
--color-primary-800: #0e4a99;
|
|
82
|
+
--color-primary-900: #0a2f63;
|
|
83
|
+
|
|
84
|
+
/* Accent — amber (high indices lighten for text/marks on dark) */
|
|
85
|
+
--color-accent: #f79009;
|
|
86
|
+
--color-accent-50: #1f1405;
|
|
87
|
+
--color-accent-100: #fde7c8;
|
|
88
|
+
--color-accent-200: #fcd9a0;
|
|
89
|
+
--color-accent-300: #f9c270;
|
|
90
|
+
--color-accent-400: #f9a838;
|
|
91
|
+
--color-accent-500: #f79009;
|
|
92
|
+
--color-accent-600: #f9a838;
|
|
93
|
+
--color-accent-700: #f9c270;
|
|
94
|
+
--color-accent-800: #fde7c8;
|
|
95
|
+
--color-accent-900: #3b2200;
|
|
96
|
+
--color-accent-highlight: #f9c270;
|
|
86
97
|
|
|
87
98
|
/* Semantic colors */
|
|
88
99
|
--color-success-100: #e5fff3;
|
|
@@ -114,36 +125,36 @@
|
|
|
114
125
|
--color-danger-900: #ffe5e5;
|
|
115
126
|
|
|
116
127
|
/* Cards */
|
|
117
|
-
--color-cards-bg: #
|
|
118
|
-
--color-cards-bg-load: #
|
|
128
|
+
--color-cards-bg: #232d37;
|
|
129
|
+
--color-cards-bg-load: #2f3a44;
|
|
119
130
|
--color-correct: #83f1a7;
|
|
120
131
|
--color-incorrect: #e74c3c;
|
|
121
132
|
|
|
122
133
|
/* Canvas */
|
|
123
|
-
--color-canvas-bg: #
|
|
134
|
+
--color-canvas-bg: #10161c;
|
|
124
135
|
|
|
125
|
-
/* Surfaces */
|
|
126
|
-
--color-background: #
|
|
127
|
-
--color-surface: #
|
|
128
|
-
--color-surface-elevated: #
|
|
136
|
+
/* Surfaces (opaque) */
|
|
137
|
+
--color-background: #141a1f;
|
|
138
|
+
--color-surface: #1b242c;
|
|
139
|
+
--color-surface-elevated: #232d37;
|
|
129
140
|
|
|
130
141
|
/* Blue depth backgrounds */
|
|
131
|
-
--color-bg-blue-deep: #
|
|
132
|
-
--color-bg-blue-dark: #
|
|
133
|
-
--color-bg-blue-mid: #
|
|
134
|
-
--color-bg-blue-light: #
|
|
142
|
+
--color-bg-blue-deep: #071726;
|
|
143
|
+
--color-bg-blue-dark: #0a1f33;
|
|
144
|
+
--color-bg-blue-mid: #0e2a44;
|
|
145
|
+
--color-bg-blue-light: #123a5e;
|
|
135
146
|
|
|
136
147
|
/* Text */
|
|
137
|
-
--color-text: #
|
|
138
|
-
--color-text-secondary: #
|
|
139
|
-
--color-text-muted: #
|
|
140
|
-
--color-text-dim: #
|
|
141
|
-
--color-text-disabled: #
|
|
148
|
+
--color-text: #f3f4f6;
|
|
149
|
+
--color-text-secondary: #97a1ab;
|
|
150
|
+
--color-text-muted: #626d78;
|
|
151
|
+
--color-text-dim: #55708a;
|
|
152
|
+
--color-text-disabled: #3a444e;
|
|
142
153
|
|
|
143
154
|
/* Borders */
|
|
144
|
-
--color-border: #
|
|
145
|
-
--color-border-muted: #
|
|
146
|
-
--color-divider: #
|
|
155
|
+
--color-border: #232d37;
|
|
156
|
+
--color-border-muted: #1a222a;
|
|
157
|
+
--color-divider: #1a222a;
|
|
147
158
|
|
|
148
159
|
/* Semantic base + dim */
|
|
149
160
|
--color-success: #3fb950;
|
|
@@ -154,22 +165,51 @@
|
|
|
154
165
|
--color-danger-dim: #da3633;
|
|
155
166
|
|
|
156
167
|
/* Dim versions (wire base / inactive elements) */
|
|
157
|
-
--color-primary-dim: #
|
|
158
|
-
--color-accent-dim: #
|
|
168
|
+
--color-primary-dim: #123a5e;
|
|
169
|
+
--color-accent-dim: #3b2a12;
|
|
159
170
|
|
|
160
171
|
/* Header background */
|
|
161
|
-
--color-header-bg: #
|
|
172
|
+
--color-header-bg: #1b242c;
|
|
162
173
|
|
|
163
|
-
/* Glow effects (for drop-shadow filters) */
|
|
164
|
-
--color-primary-glow: rgba(
|
|
165
|
-
--color-accent-glow: rgba(
|
|
166
|
-
--color-fusion-glow: rgba(
|
|
174
|
+
/* Glow effects (for drop-shadow filters) — blue + amber */
|
|
175
|
+
--color-primary-glow: rgba(46, 144, 250, 0.55);
|
|
176
|
+
--color-accent-glow: rgba(247, 144, 9, 0.5);
|
|
177
|
+
--color-fusion-glow: rgba(139, 92, 246, 0.5);
|
|
167
178
|
|
|
168
179
|
/* Semantic background tints */
|
|
169
180
|
--color-success-bg: rgba(63, 185, 80, 0.1);
|
|
170
181
|
--color-warning-bg: rgba(210, 153, 34, 0.1);
|
|
171
182
|
--color-danger-bg: rgba(248, 81, 73, 0.1);
|
|
172
183
|
|
|
184
|
+
/* ── Frosted-glass surface family (translucent ladder over a lit scene) ── */
|
|
185
|
+
--surface-app: #1e2227;
|
|
186
|
+
--surface-panel: rgba(20, 26, 31, 0.94);
|
|
187
|
+
--surface-card: rgba(27, 36, 44, 0.9);
|
|
188
|
+
--surface-raised: rgba(35, 45, 55, 0.95);
|
|
189
|
+
--surface-inset: rgba(13, 17, 21, 0.72);
|
|
190
|
+
--surface-hover: rgba(42, 53, 64, 0.95);
|
|
191
|
+
--surface-ghost: rgba(30, 36, 41, 0.28);
|
|
192
|
+
|
|
193
|
+
/* Accent surface tints (soft fills for selected/warm states) */
|
|
194
|
+
--accent-primary: var(--color-primary);
|
|
195
|
+
--accent-primary-soft: rgba(46, 144, 250, 0.15);
|
|
196
|
+
--accent-warm: var(--color-accent);
|
|
197
|
+
--accent-warm-soft: rgba(247, 144, 9, 0.15);
|
|
198
|
+
|
|
199
|
+
/* ── Blur family ── */
|
|
200
|
+
--blur-panel: blur(18px);
|
|
201
|
+
--blur-card: blur(10px);
|
|
202
|
+
|
|
203
|
+
/* ── Edge-glass (inner highlight that catches the light) ── */
|
|
204
|
+
--edge-glass: inset 0 1px 0 rgba(255, 255, 255, 0.09), inset 0 0 0 1px rgba(255, 255, 255, 0.04);
|
|
205
|
+
|
|
206
|
+
/* ── Shadow + glow family (glow follows the accent, never the chrome) ── */
|
|
207
|
+
--shadow-card: 0 2px 8px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
208
|
+
--shadow-panel: 0 12px 40px rgba(0, 0, 0, 0.5);
|
|
209
|
+
--shadow-float: 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
210
|
+
--shadow-glow-blue: 0 0 24px rgba(46, 144, 250, 0.35);
|
|
211
|
+
--shadow-glow-warm: 0 0 24px rgba(247, 144, 9, 0.3);
|
|
212
|
+
|
|
173
213
|
/* Typography */
|
|
174
214
|
--font-sen: "Sen", sans-serif;
|
|
175
215
|
--font-jost: "Jost", sans-serif;
|
|
@@ -177,6 +217,8 @@
|
|
|
177
217
|
--font-mono: "JetBrains Mono", monospace;
|
|
178
218
|
--font-title: "Jost", system-ui, sans-serif;
|
|
179
219
|
--font-body: "Sen", system-ui, sans-serif;
|
|
220
|
+
--font-display: var(--font-jost);
|
|
221
|
+
--font-ui: var(--font-sen);
|
|
180
222
|
}
|
|
181
223
|
|
|
182
224
|
[data-color-scheme="light"] {
|
|
@@ -191,55 +233,56 @@
|
|
|
191
233
|
--color-grey-800: #262626;
|
|
192
234
|
--color-grey-900: #171717;
|
|
193
235
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
--color-
|
|
205
|
-
--color-
|
|
206
|
-
--color-
|
|
207
|
-
--color-
|
|
208
|
-
--color-
|
|
209
|
-
--color-
|
|
210
|
-
--color-
|
|
211
|
-
--color-
|
|
212
|
-
--color-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
--color-
|
|
216
|
-
--color-
|
|
217
|
-
--color-
|
|
218
|
-
--color-
|
|
236
|
+
/* Blue + primary FLIP for daylight: the :root (dark) ramp runs light→dark as
|
|
237
|
+
the index climbs, so the low indices (100/200/300 — used as *text*: wordmarks,
|
|
238
|
+
card titles, nav section titles, active links) must invert to dark navy here,
|
|
239
|
+
or they render near-invisible on the light surfaces. Mid index 500 stays a
|
|
240
|
+
readable medium blue (its only text use sits on the light bg-400 bar); 700
|
|
241
|
+
lightens because it is a *fill* (the primary Chip) that carries dark text.
|
|
242
|
+
Same hue as dark — only lightness/saturation shift for AA (WCAG verified
|
|
243
|
+
against the bg-* ladder below). Blue mirrors primary (no direct consumers,
|
|
244
|
+
kept in lockstep for future use). */
|
|
245
|
+
--color-blue-50: #eef5ff;
|
|
246
|
+
--color-blue-100: #08203c;
|
|
247
|
+
--color-blue-200: #0b2a4a;
|
|
248
|
+
--color-blue-300: #103c67;
|
|
249
|
+
--color-blue-400: #15508a;
|
|
250
|
+
--color-blue-500: #1a5fa3;
|
|
251
|
+
--color-blue-600: #2270b0;
|
|
252
|
+
--color-blue-700: #6fa8d6;
|
|
253
|
+
--color-blue-800: #a8cfec;
|
|
254
|
+
--color-blue-900: #0b2545;
|
|
255
|
+
--color-primary: #1a5fa3;
|
|
256
|
+
--color-primary-50: #eef5ff;
|
|
257
|
+
--color-primary-100: #08203c;
|
|
258
|
+
--color-primary-200: #0b2a4a;
|
|
259
|
+
--color-primary-300: #103c67;
|
|
260
|
+
--color-primary-400: #15508a;
|
|
261
|
+
--color-primary-500: #1a5fa3;
|
|
262
|
+
--color-primary-600: #2270b0;
|
|
263
|
+
--color-primary-700: #6fa8d6;
|
|
264
|
+
--color-primary-800: #a8cfec;
|
|
265
|
+
--color-primary-900: #0b2545;
|
|
266
|
+
|
|
267
|
+
/* Amber accent — high indices darken for text/marks on light */
|
|
268
|
+
--color-accent: #f79009;
|
|
269
|
+
--color-accent-100: #fef4e6;
|
|
270
|
+
--color-accent-200: #7a4a00;
|
|
271
|
+
--color-accent-300: #f9c270;
|
|
272
|
+
--color-accent-400: #f79009;
|
|
273
|
+
--color-accent-500: #8a5200;
|
|
274
|
+
--color-accent-highlight: #e07b00;
|
|
275
|
+
|
|
276
|
+
/* Backgrounds — daylight slate ladder, AA-verified against primary text.
|
|
277
|
+
bg-100 (the darkest rung, e.g. the secondary Chip fill) is lightened enough
|
|
278
|
+
that dark primary-200 text clears 4.5:1 on it — a mid-slate cannot host any
|
|
279
|
+
AA text. */
|
|
280
|
+
--color-bg-100: #7ba0b3;
|
|
281
|
+
--color-bg-200: #aebccb;
|
|
282
|
+
--color-bg-300: #cdd8e4;
|
|
283
|
+
--color-bg-400: #e2e9f1;
|
|
219
284
|
--color-bg-light: #ffffff;
|
|
220
285
|
|
|
221
|
-
/* Primary — blue */
|
|
222
|
-
--color-primary: #75abc7;
|
|
223
|
-
--color-primary-50: #f0f7ff;
|
|
224
|
-
--color-primary-100: #06131d;
|
|
225
|
-
--color-primary-200: #0c2436;
|
|
226
|
-
--color-primary-300: #133a54;
|
|
227
|
-
--color-primary-400: #195073;
|
|
228
|
-
--color-primary-500: #1e6090;
|
|
229
|
-
--color-primary-600: #2470a5;
|
|
230
|
-
--color-primary-700: #5ea8d0;
|
|
231
|
-
--color-primary-800: #9dcce4;
|
|
232
|
-
--color-primary-900: #0d2a3d;
|
|
233
|
-
|
|
234
|
-
/* Accent — pink */
|
|
235
|
-
--color-accent: #df5c9a;
|
|
236
|
-
--color-accent-100: #fef2f7;
|
|
237
|
-
--color-accent-200: #7d1c48;
|
|
238
|
-
--color-accent-300: #f78fb9;
|
|
239
|
-
--color-accent-400: #df5c9a;
|
|
240
|
-
--color-accent-500: #8a1e4a;
|
|
241
|
-
--color-accent-highlight: #d4508a;
|
|
242
|
-
|
|
243
286
|
/* Semantic — darker for readability on light bgs */
|
|
244
287
|
--color-success-100: #e5fff3;
|
|
245
288
|
--color-success-200: #c2ffc8;
|
|
@@ -269,33 +312,39 @@
|
|
|
269
312
|
--color-danger-800: #572f2f;
|
|
270
313
|
--color-danger-900: #351c1c;
|
|
271
314
|
|
|
272
|
-
--color-cards-bg: #
|
|
273
|
-
--color-cards-bg-load: #
|
|
315
|
+
--color-cards-bg: #ffffff;
|
|
316
|
+
--color-cards-bg-load: #eef3f9;
|
|
274
317
|
--color-correct: #1a7f37;
|
|
275
318
|
--color-incorrect: #cf222e;
|
|
276
319
|
|
|
277
|
-
--color-canvas-bg: #
|
|
320
|
+
--color-canvas-bg: #dbe8ef;
|
|
278
321
|
|
|
279
|
-
/* Surfaces */
|
|
280
|
-
--color-background: #
|
|
322
|
+
/* Surfaces (opaque) */
|
|
323
|
+
--color-background: #eef3f9;
|
|
281
324
|
--color-surface: #ffffff;
|
|
282
|
-
--color-surface-elevated: #
|
|
325
|
+
--color-surface-elevated: #e7edf5;
|
|
283
326
|
|
|
284
|
-
--color-bg-blue-deep: #
|
|
285
|
-
--color-bg-blue-dark: #
|
|
286
|
-
--color-bg-blue-mid: #
|
|
287
|
-
--color-bg-blue-light: #
|
|
327
|
+
--color-bg-blue-deep: #eaf4fe;
|
|
328
|
+
--color-bg-blue-dark: #d4e9fd;
|
|
329
|
+
--color-bg-blue-mid: #a8d2fb;
|
|
330
|
+
--color-bg-blue-light: #7cbaf8;
|
|
288
331
|
|
|
289
332
|
/* Text */
|
|
290
|
-
--color-text: #
|
|
333
|
+
--color-text: #17212e;
|
|
334
|
+
/* WCAG AA: secondary text lands as normal-size runs on the light
|
|
335
|
+
--color-bg-300 card (EventListItem subtitle, CalendarCard "seguida por"
|
|
336
|
+
connector). A mid-slate (#64748b) read only 3.29:1 there; this darker
|
|
337
|
+
slate-blue clears 4.82:1 on bg-300 while staying the same hue and reading
|
|
338
|
+
as muted secondary against the near-black --color-text. */
|
|
291
339
|
--color-text-secondary: #405d70;
|
|
292
|
-
--color-text-muted: #
|
|
293
|
-
--color-text-
|
|
340
|
+
--color-text-muted: #94a3b8;
|
|
341
|
+
--color-text-dim: #64748b;
|
|
342
|
+
--color-text-disabled: #c4d0de;
|
|
294
343
|
|
|
295
344
|
/* Borders */
|
|
296
|
-
--color-border: #
|
|
297
|
-
--color-border-muted: #
|
|
298
|
-
--color-divider: #
|
|
345
|
+
--color-border: #dce4ee;
|
|
346
|
+
--color-border-muted: #eaeff6;
|
|
347
|
+
--color-divider: #eaeff6;
|
|
299
348
|
|
|
300
349
|
/* Semantic base + dim */
|
|
301
350
|
--color-success: #5bc96e;
|
|
@@ -306,13 +355,33 @@
|
|
|
306
355
|
--color-danger-dim: #9d5555;
|
|
307
356
|
|
|
308
357
|
/* Dim, glow, bg tints */
|
|
309
|
-
--color-primary-dim: #
|
|
310
|
-
--color-accent-dim: #
|
|
311
|
-
--color-header-bg: #
|
|
312
|
-
--color-primary-glow: rgba(
|
|
313
|
-
--color-accent-glow: rgba(
|
|
314
|
-
--color-fusion-glow: rgba(
|
|
358
|
+
--color-primary-dim: #d4e9fd;
|
|
359
|
+
--color-accent-dim: #fde7c8;
|
|
360
|
+
--color-header-bg: #e7edf5;
|
|
361
|
+
--color-primary-glow: rgba(46, 144, 250, 0.4);
|
|
362
|
+
--color-accent-glow: rgba(247, 144, 9, 0.35);
|
|
363
|
+
--color-fusion-glow: rgba(139, 92, 246, 0.4);
|
|
315
364
|
--color-success-bg: rgba(63, 185, 80, 0.1);
|
|
316
365
|
--color-warning-bg: rgba(210, 153, 34, 0.15);
|
|
317
366
|
--color-danger-bg: rgba(248, 81, 73, 0.1);
|
|
367
|
+
|
|
368
|
+
/* ── Frosted-glass surface family (daylight) ── */
|
|
369
|
+
--surface-app: #e9eff6;
|
|
370
|
+
--surface-panel: rgba(255, 255, 255, 0.42);
|
|
371
|
+
--surface-card: rgba(255, 255, 255, 0.55);
|
|
372
|
+
--surface-raised: rgba(255, 255, 255, 0.88);
|
|
373
|
+
--surface-inset: rgba(238, 243, 249, 0.55);
|
|
374
|
+
--surface-hover: rgba(255, 255, 255, 0.75);
|
|
375
|
+
--surface-ghost: rgba(255, 255, 255, 0.18);
|
|
376
|
+
|
|
377
|
+
--accent-primary-soft: rgba(46, 144, 250, 0.1);
|
|
378
|
+
--accent-warm-soft: rgba(247, 144, 9, 0.1);
|
|
379
|
+
|
|
380
|
+
/* Edge-glass + shadow/glow — daylight (soft, cool-tinted; glow carries accent) */
|
|
381
|
+
--edge-glass: inset 0 1px 0 rgba(255, 255, 255, 0.9), inset 0 0 0 1px rgba(255, 255, 255, 0.35);
|
|
382
|
+
--shadow-card: 0 2px 8px rgba(99, 115, 139, 0.08), 0 8px 24px rgba(99, 115, 139, 0.1);
|
|
383
|
+
--shadow-panel: 0 12px 40px rgba(99, 115, 139, 0.14);
|
|
384
|
+
--shadow-float: 0 16px 48px rgba(99, 115, 139, 0.22);
|
|
385
|
+
--shadow-glow-blue: 0 4px 20px rgba(46, 144, 250, 0.28);
|
|
386
|
+
--shadow-glow-warm: 0 4px 20px rgba(247, 144, 9, 0.24);
|
|
318
387
|
}
|
package/dist/CalendarCard.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarCard.d.ts","sourceRoot":"","sources":["../src/CalendarCard.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
package/dist/CalendarCard.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { t as Chip } from "./chip2.js";
|
|
2
|
-
/* empty css */
|
|
3
|
-
/* empty css */
|
|
4
|
-
/* empty css */
|
|
5
|
-
import { className, createComponent, effect, getNextElement, getNextMarker, insert, memo, setAttribute, template } from "solid-js/web";
|
|
6
|
-
import { For, Show } from "solid-js";
|
|
7
|
-
//#region src/custom/calendar-card/index.tsx
|
|
8
|
-
var _tmpl$ = /*#__PURE__*/ template(`<img class=" ZKniM13 FKniM13 _va13 _Hb13 oc13 nc13 kc13 jc13 _kc13 hc13 mc13 lc13 _jf13 ij1j4Pd13">`), _tmpl$2 = /*#__PURE__*/ template(`<span class=" xd13 _xa13 xX0cczbc13 _xX0cczba13 pj1j4Pd13"><!$><!/> más`), _tmpl$3 = /*#__PURE__*/ template(`<span class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13">seguida por <!$><!/><!$><!/>`), _tmpl$4 = /*#__PURE__*/ template(`<div class=" sd13 _wb13 Ub13 qb13">`), _tmpl$5 = /*#__PURE__*/ template(`<div><!$><!/><div class=" sd13 _ta13 Ue13 qe13 _ub13 Na13"><span class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-f13 vx13 xe13 _xa13 xX0cczbd13 _xX0cczba13 xfe13 _xfa13 xfX0cczbd13 _xfX0cczba13 _Fd13 _FnuYUweb13 pXDQpyb13 _Nc13 Pc13 _Yb13 _7c13"></span><!$><!/><!$><!/>`), _tmpl$6 = /*#__PURE__*/ template(`<span class=" xd13 _xa13 xX0cczbc13 _xX0cczba13 pj1j4Pd13">`);
|
|
9
|
-
const card = " sd13 eb13 Ug13 qg13 Za13 LQAax0d13 Te13 Qe13 Se13 Re13 oe13 ne13 ke13 je13 _kc13 hc13 mc13 lc13 _jf13 i6nBqyb13 gg0eWE13 _nLeasBb13";
|
|
10
|
-
function CalendarCard(props) {
|
|
11
|
-
const displayedFollowers = () => props.followers?.slice(0, 2) ?? [];
|
|
12
|
-
const remainingCount = () => {
|
|
13
|
-
return (props.followerCount ?? props.followers?.length ?? 0) - displayedFollowers().length;
|
|
14
|
-
};
|
|
15
|
-
return (() => {
|
|
16
|
-
var _el$ = getNextElement(_tmpl$5), _el$19 = _el$.firstChild, [_el$20, _co$6] = getNextMarker(_el$19.nextSibling), _el$3 = _el$20.nextSibling, _el$4 = _el$3.firstChild, _el$15 = _el$4.nextSibling, [_el$16, _co$4] = getNextMarker(_el$15.nextSibling), _el$17 = _el$16.nextSibling, [_el$18, _co$5] = getNextMarker(_el$17.nextSibling);
|
|
17
|
-
insert(_el$, createComponent(Show, {
|
|
18
|
-
get when() {
|
|
19
|
-
return props.image;
|
|
20
|
-
},
|
|
21
|
-
get children() {
|
|
22
|
-
var _el$2 = getNextElement(_tmpl$);
|
|
23
|
-
effect((_p$) => {
|
|
24
|
-
var _v$ = props.image, _v$2 = props.title;
|
|
25
|
-
_v$ !== _p$.e && setAttribute(_el$2, "src", _p$.e = _v$);
|
|
26
|
-
_v$2 !== _p$.t && setAttribute(_el$2, "alt", _p$.t = _v$2);
|
|
27
|
-
return _p$;
|
|
28
|
-
}, {
|
|
29
|
-
e: void 0,
|
|
30
|
-
t: void 0
|
|
31
|
-
});
|
|
32
|
-
return _el$2;
|
|
33
|
-
}
|
|
34
|
-
}), _el$20, _co$6);
|
|
35
|
-
insert(_el$4, () => props.title);
|
|
36
|
-
insert(_el$3, createComponent(Show, {
|
|
37
|
-
get when() {
|
|
38
|
-
return displayedFollowers().length > 0;
|
|
39
|
-
},
|
|
40
|
-
get children() {
|
|
41
|
-
var _el$5 = getNextElement(_tmpl$3), _el$10 = _el$5.firstChild.nextSibling, [_el$11, _co$2] = getNextMarker(_el$10.nextSibling), _el$12 = _el$11.nextSibling, [_el$13, _co$3] = getNextMarker(_el$12.nextSibling);
|
|
42
|
-
insert(_el$5, createComponent(For, {
|
|
43
|
-
get each() {
|
|
44
|
-
return displayedFollowers();
|
|
45
|
-
},
|
|
46
|
-
children: (follower, index) => [(() => {
|
|
47
|
-
var _el$21 = getNextElement(_tmpl$6);
|
|
48
|
-
insert(_el$21, () => follower.name);
|
|
49
|
-
return _el$21;
|
|
50
|
-
})(), memo(() => index() < displayedFollowers().length - 1 && ", ")]
|
|
51
|
-
}), _el$11, _co$2);
|
|
52
|
-
insert(_el$5, createComponent(Show, {
|
|
53
|
-
get when() {
|
|
54
|
-
return remainingCount() > 0;
|
|
55
|
-
},
|
|
56
|
-
get children() {
|
|
57
|
-
return [
|
|
58
|
-
" ",
|
|
59
|
-
"y ",
|
|
60
|
-
(() => {
|
|
61
|
-
var _el$8 = getNextElement(_tmpl$2), _el$0 = _el$8.firstChild, [_el$1, _co$] = getNextMarker(_el$0.nextSibling);
|
|
62
|
-
_el$1.nextSibling;
|
|
63
|
-
insert(_el$8, remainingCount, _el$1, _co$);
|
|
64
|
-
return _el$8;
|
|
65
|
-
})()
|
|
66
|
-
];
|
|
67
|
-
}
|
|
68
|
-
}), _el$13, _co$3);
|
|
69
|
-
return _el$5;
|
|
70
|
-
}
|
|
71
|
-
}), _el$16, _co$4);
|
|
72
|
-
insert(_el$3, createComponent(Show, {
|
|
73
|
-
get when() {
|
|
74
|
-
return memo(() => !!props.tags)() && props.tags.length > 0;
|
|
75
|
-
},
|
|
76
|
-
get children() {
|
|
77
|
-
var _el$14 = getNextElement(_tmpl$4);
|
|
78
|
-
insert(_el$14, createComponent(For, {
|
|
79
|
-
get each() {
|
|
80
|
-
return props.tags;
|
|
81
|
-
},
|
|
82
|
-
children: (tag) => createComponent(Chip, {
|
|
83
|
-
text: tag,
|
|
84
|
-
variant: "primary"
|
|
85
|
-
})
|
|
86
|
-
}));
|
|
87
|
-
return _el$14;
|
|
88
|
-
}
|
|
89
|
-
}), _el$18, _co$5);
|
|
90
|
-
effect(() => className(_el$, `${card} ${props.class ?? ""}`));
|
|
91
|
-
return _el$;
|
|
92
|
-
})();
|
|
93
|
-
}
|
|
94
|
-
//#endregion
|
|
95
|
-
export { CalendarCard };
|
|
96
|
-
|
|
97
|
-
//# sourceMappingURL=CalendarCard.js.map
|
package/dist/CalendarCard.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarCard.js","names":[],"sources":["../src/custom/calendar-card/index.tsx"],"sourcesContent":["import { Show, For } from \"solid-js\";\nimport { Chip } from \"../chip\";\n// Styled via the S2 style() macro through viviana's own seam (../../style →\n// src/style.ts). A horizontal \"followed calendar\" card: square thumbnail +\n// title + followers line + tag chips, on the S2 ramps in Silapse colors.\nimport { style } from \"../../style\" with { type: \"macro\" };\n\nexport interface CalendarCardProps {\n title: string;\n image?: string;\n tags?: string[];\n followers?: { name: string }[];\n followerCount?: number;\n class?: string;\n}\n\nconst card = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"full\",\n maxWidth: 500,\n padding: 12,\n borderRadius: \"xl\",\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"[var(--color-primary-600)]\",\n backgroundColor: \"[var(--color-bg-300)]\",\n boxShadow: \"elevated\",\n});\n\nconst thumb = style({\n width: 80,\n height: 80,\n flexShrink: 0,\n objectFit: \"cover\",\n borderRadius: \"lg\",\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"[var(--color-accent)]\",\n});\n\nconst body = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n flexGrow: 1,\n minWidth: 0,\n});\n\nconst title = style({\n font: \"heading-sm\",\n color: \"[var(--color-primary-100)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst followers = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n});\n\nconst followerName = style({\n fontWeight: \"bold\",\n color: \"[var(--color-accent)]\",\n});\n\nconst tags = style({\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n});\n\nexport function CalendarCard(props: CalendarCardProps) {\n const displayedFollowers = () => props.followers?.slice(0, 2) ?? [];\n const remainingCount = () => {\n const total = props.followerCount ?? props.followers?.length ?? 0;\n const displayed = displayedFollowers().length;\n return total - displayed;\n };\n\n return (\n <div class={`${card} ${props.class ?? \"\"}`}>\n <Show when={props.image}>\n <img class={thumb} src={props.image} alt={props.title} />\n </Show>\n <div class={body}>\n <span class={title}>{props.title}</span>\n <Show when={displayedFollowers().length > 0}>\n <span class={followers}>\n seguida por{\" \"}\n <For each={displayedFollowers()}>\n {(follower, index) => (\n <>\n <span class={followerName}>{follower.name}</span>\n {index() < displayedFollowers().length - 1 && \", \"}\n </>\n )}\n </For>\n <Show when={remainingCount() > 0}>\n {\" \"}\n y <span class={followerName}>{remainingCount()} más</span>\n </Show>\n </span>\n </Show>\n <Show when={props.tags && props.tags.length > 0}>\n <div class={tags}>\n <For each={props.tags}>{(tag) => <Chip text={tag} variant=\"primary\" />}</For>\n </div>\n </Show>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAgBA,MAAM,OAAA;AA0DN,SAAgB,aAAa,OAAwB;CACnD,MAAM,2BAA2B,MAAM,WAAW,MAAM,GAAG,CAAA,KAAM,CAAA;CACjE,MAAM,uBAAiB;EAGrB,QAFc,MAAM,iBAAiB,MAAM,WAAW,UAAU,KAC9C,mBAAA,EAAqB;CAEzC;CAEA,cAAA;EAAA,IAAA,OAAA,eAAA,OAAA,GAAA,SAAA,KAAA,YAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA,GAAA,QAAA,OAAA,aAAA,QAAA,MAAA,YAAA,SAAA,MAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA,GAAA,SAAA,OAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA;EAAA,OAAA,MAAA,gBAEK,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,MAAM;GAAK;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,MAAA;IAAA,QAAA,QAAA;KAAA,IAAA,MACG,MAAM,OAAK,OAAO,MAAM;KAAK,QAAA,IAAA,KAAA,aAAA,OAAA,OAAA,IAAA,IAAA,GAAA;KAAA,SAAA,IAAA,KAAA,aAAA,OAAA,OAAA,IAAA,IAAA,IAAA;KAAA,OAAA;IAAA,GAAA;KAAA,GAAA,KAAA;KAAA,GAAA,KAAA;IAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,OAAA,aAGhC,MAAM,KAAK;EAAA,OAAA,OAAA,gBAC/B,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,mBAAA,EAAqB,SAAS;GAAA;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,OAAA,GAAA,SAAA,MAAA,WAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA,GAAA,SAAA,OAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA;IAAA,OAAA,OAAA,gBAGrC,KAAA;KAAA,IAAI,OAAA;MAAA,OAAM,mBAAA;KAAA;KAAA,WACP,UAAU,UAAA,QAAA;MAAA,IAAA,SAAA,eAAA,OAAA;MAAA,OAAA,cAEoB,SAAS,IAAI;MAAA,OAAA;KAAA,GAAA,GAAA,WACxC,MAAA,IAAU,mBAAA,EAAqB,SAAS,KAAK,IAAA,CAAA;IAElD,CAAA,GAAA,QAAA,KAAA;IAAA,OAAA,OAAA,gBAED,MAAA;KAAA,IAAK,OAAA;MAAA,OAAM,eAAA,IAAmB;KAAA;KAAA,IAAA,WAAA;MAAA,OAAA;OAC5B;OAAA;cAAA;QAAA,IAAA,QAAA,eAAA,OAAA,GAAA,QAAA,MAAA,YAAA,CAAA,OAAA,QAAA,cAAA,MAAA,WAAA;QAAA,MAAA;QAAA,OAAA,OAC6B,gBAAA,OAAA,IAAA;QAAA,OAAA;OAAA,GAAA;MAAA;KAAA;IAAA,CAAA,GAAA,QAAA,KAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,OAAA,OAAA,gBAInC,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,WAAA,CAAA,CAAA,MAAM,IAAI,EAAA,KAAI,MAAM,KAAK,SAAS;GAAA;GAAA,IAAA,WAAA;IAAA,IAAA,SAAA,eAAA,OAAA;IAAA,OAAA,QAAA,gBAEzC,KAAA;KAAA,IAAI,OAAA;MAAA,OAAM,MAAM;KAAI;KAAA,WAAI,QAAA,gBAAS,MAAA;MAAK,MAAM;MAAK,SAAA;KAAA,CAAA;IAAQ,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,aAAA,UAAA,MAzBtD,GAAG,KAAA,GAAQ,MAAM,SAAS,IAAI,CAAA;EAAA,OAAA;CAAA,GAAA;AA+B9C"}
|