@tolle_/tolle-ui 21.1.1 → 21.2.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/fesm2022/tolle-ui.mjs +30099 -5285
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/package.json +17 -5
- package/preset.js +35 -1
- package/registry/docs-content.json +11486 -0
- package/registry/llms-full.txt +4067 -0
- package/registry/llms.txt +127 -0
- package/registry/manifest.json +12656 -0
- package/registry/r/accordion-item.json +21 -0
- package/registry/r/accordion.json +23 -0
- package/registry/r/alert-dialog-dynamic.json +31 -0
- package/registry/r/alert-dialog.json +26 -0
- package/registry/r/alert.json +23 -0
- package/registry/r/aspect-ratio.json +21 -0
- package/registry/r/attachment.json +23 -0
- package/registry/r/avatar-fallback.json +16 -0
- package/registry/r/avatar.json +23 -0
- package/registry/r/badge.json +23 -0
- package/registry/r/bar-list.json +21 -0
- package/registry/r/breadcrumb-item.json +16 -0
- package/registry/r/breadcrumb-link.json +16 -0
- package/registry/r/breadcrumb-separator.json +16 -0
- package/registry/r/breadcrumb.json +21 -0
- package/registry/r/bubble.json +23 -0
- package/registry/r/button-group.json +21 -0
- package/registry/r/button.json +23 -0
- package/registry/r/calendar.json +23 -0
- package/registry/r/card.json +21 -0
- package/registry/r/carousel.json +18 -0
- package/registry/r/category-bar.json +21 -0
- package/registry/r/chain-of-thought.json +23 -0
- package/registry/r/chart-pie.json +30 -0
- package/registry/r/chart-spark.json +30 -0
- package/registry/r/chart.json +28 -0
- package/registry/r/checkbox.json +23 -0
- package/registry/r/checkpoint.json +23 -0
- package/registry/r/collapsible.json +21 -0
- package/registry/r/combobox.json +31 -0
- package/registry/r/command-dialog.json +21 -0
- package/registry/r/command.json +26 -0
- package/registry/r/confirmation.json +23 -0
- package/registry/r/context-menu-trigger.json +23 -0
- package/registry/r/context-menu.json +28 -0
- package/registry/r/context.json +26 -0
- package/registry/r/conversation.json +23 -0
- package/registry/r/country-selector.json +31 -0
- package/registry/r/data-table.json +38 -0
- package/registry/r/date-picker.json +27 -0
- package/registry/r/date-range-picker.json +32 -0
- package/registry/r/date-time-picker.json +28 -0
- package/registry/r/direction.json +16 -0
- package/registry/r/dropdown-item.json +21 -0
- package/registry/r/dropdown-label.json +16 -0
- package/registry/r/dropdown-menu.json +16 -0
- package/registry/r/dropdown-separator.json +16 -0
- package/registry/r/dropdown-trigger.json +20 -0
- package/registry/r/empty-state.json +23 -0
- package/registry/r/field.json +23 -0
- package/registry/r/hover-card.json +23 -0
- package/registry/r/inline-citation.json +26 -0
- package/registry/r/input-group.json +23 -0
- package/registry/r/input.json +21 -0
- package/registry/r/item.json +23 -0
- package/registry/r/kbd.json +23 -0
- package/registry/r/label.json +21 -0
- package/registry/r/marker.json +23 -0
- package/registry/r/masked-input.json +21 -0
- package/registry/r/menubar.json +24 -0
- package/registry/r/message-scroller.json +26 -0
- package/registry/r/message.json +23 -0
- package/registry/r/modal.json +36 -0
- package/registry/r/model-selector.json +32 -0
- package/registry/r/multi-select.json +33 -0
- package/registry/r/native-select.json +23 -0
- package/registry/r/navigation-menu.json +24 -0
- package/registry/r/otp-group.json +16 -0
- package/registry/r/otp-slot.json +21 -0
- package/registry/r/otp.json +21 -0
- package/registry/r/pagination.json +33 -0
- package/registry/r/phone-number-input.json +34 -0
- package/registry/r/plan.json +23 -0
- package/registry/r/popover-content.json +21 -0
- package/registry/r/popover.json +18 -0
- package/registry/r/progress-circle.json +21 -0
- package/registry/r/progress.json +21 -0
- package/registry/r/prompt-input.json +23 -0
- package/registry/r/queue.json +23 -0
- package/registry/r/radio-group.json +26 -0
- package/registry/r/radio-item.json +26 -0
- package/registry/r/range-calendar.json +28 -0
- package/registry/r/reasoning.json +23 -0
- package/registry/r/resizable-panel-item.json +23 -0
- package/registry/r/resizable-panel.json +23 -0
- package/registry/r/resizable.json +21 -0
- package/registry/r/scroll-area.json +21 -0
- package/registry/r/segment.json +21 -0
- package/registry/r/select-group.json +21 -0
- package/registry/r/select-item.json +26 -0
- package/registry/r/select-separator.json +21 -0
- package/registry/r/select.json +32 -0
- package/registry/r/separator.json +21 -0
- package/registry/r/sheet-wrapper.json +31 -0
- package/registry/r/sheet.json +21 -0
- package/registry/r/shimmer.json +23 -0
- package/registry/r/sidebar.json +21 -0
- package/registry/r/skeleton.json +23 -0
- package/registry/r/slider.json +21 -0
- package/registry/r/sources.json +23 -0
- package/registry/r/spinner.json +23 -0
- package/registry/r/suggestion.json +23 -0
- package/registry/r/switch.json +23 -0
- package/registry/r/table.json +21 -0
- package/registry/r/tabs.json +23 -0
- package/registry/r/tag-input.json +25 -0
- package/registry/r/task.json +23 -0
- package/registry/r/textarea.json +21 -0
- package/registry/r/time-picker.json +24 -0
- package/registry/r/toaster.json +26 -0
- package/registry/r/toggle-group.json +25 -0
- package/registry/r/toggle.json +23 -0
- package/registry/r/tolle-cell.json +16 -0
- package/registry/r/tool.json +23 -0
- package/registry/r/tooltip.json +23 -0
- package/registry/r/tracker.json +25 -0
- package/registry/r/typography.json +23 -0
- package/registry/registry.json +2545 -0
- package/theme.css +230 -10
- package/types/tolle-ui.d.ts +7433 -823
package/theme.css
CHANGED
|
@@ -34,14 +34,37 @@
|
|
|
34
34
|
/* #ef4444 in RGB */
|
|
35
35
|
--destructive-foreground: 250 250 250;
|
|
36
36
|
|
|
37
|
+
/* --- Status colors (success / warning / info) --- */
|
|
38
|
+
--success: 22 163 74;
|
|
39
|
+
/* green-600 */
|
|
40
|
+
--success-foreground: 255 255 255;
|
|
41
|
+
--warning: 217 119 6;
|
|
42
|
+
/* amber-600 */
|
|
43
|
+
--warning-foreground: 255 255 255;
|
|
44
|
+
--info: 37 99 235;
|
|
45
|
+
/* blue-600 */
|
|
46
|
+
--info-foreground: 255 255 255;
|
|
47
|
+
|
|
37
48
|
/* --- UI Elements --- */
|
|
38
49
|
--border: 228 228 231;
|
|
39
50
|
/* #e4e4e7 in RGB */
|
|
40
51
|
--input: 228 228 231;
|
|
41
|
-
--ring:
|
|
42
|
-
/*
|
|
52
|
+
--ring: var(--primary);
|
|
53
|
+
/* derives from primary color */
|
|
43
54
|
--radius: 0.5rem;
|
|
44
55
|
|
|
56
|
+
/* --- Typography (themeable via the theme generator / ThemeService) --- */
|
|
57
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
58
|
+
--font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
|
59
|
+
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
60
|
+
|
|
61
|
+
/* --- Charts (themeable via the theme generator / ThemeService) --- */
|
|
62
|
+
--chart-1: 37 99 235;
|
|
63
|
+
--chart-2: 20 184 166;
|
|
64
|
+
--chart-3: 234 88 12;
|
|
65
|
+
--chart-4: 139 92 246;
|
|
66
|
+
--chart-5: 236 72 153;
|
|
67
|
+
|
|
45
68
|
/* --- Shadows --- */
|
|
46
69
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
47
70
|
--shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
|
|
@@ -75,10 +98,33 @@
|
|
|
75
98
|
/* #7f1d1d in RGB */
|
|
76
99
|
--destructive-foreground: 254 242 242;
|
|
77
100
|
|
|
101
|
+
/* --- Status colors (brighter for dark surfaces) --- */
|
|
102
|
+
--success: 74 222 128;
|
|
103
|
+
/* green-400 */
|
|
104
|
+
--success-foreground: 5 46 22;
|
|
105
|
+
--warning: 251 191 36;
|
|
106
|
+
/* amber-400 */
|
|
107
|
+
--warning-foreground: 66 32 6;
|
|
108
|
+
--info: 96 165 250;
|
|
109
|
+
/* blue-400 */
|
|
110
|
+
--info-foreground: 23 37 84;
|
|
111
|
+
|
|
78
112
|
--border: 39 39 42;
|
|
79
113
|
--input: 39 39 42;
|
|
80
|
-
--ring:
|
|
81
|
-
/*
|
|
114
|
+
--ring: var(--primary);
|
|
115
|
+
/* derives from primary color */
|
|
116
|
+
|
|
117
|
+
/* Dark chart steps are SELECTED, not a lightened flip of the light ones: the
|
|
118
|
+
Tailwind-400 steps previously used here sat at OKLCH L 0.71–0.79, too bright
|
|
119
|
+
to read as distinct marks on a dark surface. These keep each series' hue
|
|
120
|
+
(blue, teal, orange, violet, pink) so a series holds its identity across
|
|
121
|
+
themes, re-stepped into the dark lightness band. Validated for lightness,
|
|
122
|
+
chroma, CVD separation and contrast. */
|
|
123
|
+
--chart-1: 85 140 255;
|
|
124
|
+
--chart-2: 14 169 152;
|
|
125
|
+
--chart-3: 235 97 36;
|
|
126
|
+
--chart-4: 153 115 254;
|
|
127
|
+
--chart-5: 234 79 154;
|
|
82
128
|
|
|
83
129
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
84
130
|
--shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3);
|
|
@@ -96,7 +142,41 @@
|
|
|
96
142
|
|
|
97
143
|
/* Base text color inheritance - THIS IS KEY */
|
|
98
144
|
* {
|
|
99
|
-
|
|
145
|
+
scrollbar-width: thin;
|
|
146
|
+
scrollbar-color: rgba(156, 163, 175, 0.3) transparent;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/*
|
|
150
|
+
* Default border color for every element that uses a bare `border` utility.
|
|
151
|
+
* Two bugs made bare borders render as a near-white `currentColor` line on dark
|
|
152
|
+
* overlays (calendars, popovers, dropdowns…):
|
|
153
|
+
* 1. `--border` is an RGB triplet ("39 39 42"), so it must be wrapped in rgb();
|
|
154
|
+
* used raw the declaration is invalid and silently dropped.
|
|
155
|
+
* 2. The docs pipeline emits `@tailwind base` a second time AFTER this file, so
|
|
156
|
+
* a plain `*` selector loses to preflight's gray-200 default by source order.
|
|
157
|
+
* The `html *` selector (specificity 0,0,1) beats preflight's `*` (0,0,0)
|
|
158
|
+
* regardless of order, while still yielding to any `border-<color>` utility (0,1,0).
|
|
159
|
+
*/
|
|
160
|
+
html * {
|
|
161
|
+
border-color: rgb(var(--border, 228 228 231));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
*::-webkit-scrollbar {
|
|
165
|
+
width: 5px;
|
|
166
|
+
height: 5px;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
*::-webkit-scrollbar-track {
|
|
170
|
+
background: transparent;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
*::-webkit-scrollbar-thumb {
|
|
174
|
+
background-color: rgba(156, 163, 175, 0.3);
|
|
175
|
+
border-radius: 20px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
*::-webkit-scrollbar-thumb:hover {
|
|
179
|
+
background-color: rgba(156, 163, 175, 0.5);
|
|
100
180
|
}
|
|
101
181
|
|
|
102
182
|
html {
|
|
@@ -104,8 +184,9 @@ html {
|
|
|
104
184
|
}
|
|
105
185
|
|
|
106
186
|
body {
|
|
107
|
-
background-color: var(--background
|
|
108
|
-
color: var(--foreground
|
|
187
|
+
background-color: rgb(var(--background));
|
|
188
|
+
color: rgb(var(--foreground));
|
|
189
|
+
font-family: var(--font-sans, ui-sans-serif, system-ui, sans-serif);
|
|
109
190
|
-webkit-font-smoothing: antialiased;
|
|
110
191
|
-moz-osx-font-smoothing: grayscale;
|
|
111
192
|
font-feature-settings: "rlig" 1, "calt" 1;
|
|
@@ -113,7 +194,7 @@ body {
|
|
|
113
194
|
|
|
114
195
|
/* Links */
|
|
115
196
|
a {
|
|
116
|
-
color: var(--primary
|
|
197
|
+
color: rgb(var(--primary));
|
|
117
198
|
text-underline-offset: 4px;
|
|
118
199
|
}
|
|
119
200
|
|
|
@@ -122,8 +203,7 @@ a:hover {
|
|
|
122
203
|
}
|
|
123
204
|
|
|
124
205
|
/* Remix Icons */
|
|
125
|
-
i[class^="ri-"],
|
|
126
|
-
i[class*=" ri-"] {
|
|
206
|
+
:where(i[class^="ri-"], i[class*=" ri-"]) {
|
|
127
207
|
display: inline-flex;
|
|
128
208
|
align-items: center;
|
|
129
209
|
justify-content: center;
|
|
@@ -310,6 +390,113 @@ i[class*=" ri-"] {
|
|
|
310
390
|
}
|
|
311
391
|
}
|
|
312
392
|
|
|
393
|
+
/* -------------------------------------------------------------------------- */
|
|
394
|
+
/* 5b. CHAT / TRANSCRIPT UTILITIES */
|
|
395
|
+
/* -------------------------------------------------------------------------- */
|
|
396
|
+
/*
|
|
397
|
+
* Deliberately OUTSIDE `@layer utilities`. Anything inside that layer is subject
|
|
398
|
+
* to Tailwind's content scan, and these classes are applied from library source
|
|
399
|
+
* (or by consumers in their own markup) that a consuming app's `content` globs
|
|
400
|
+
* may not cover — inside the layer they would be silently purged.
|
|
401
|
+
*/
|
|
402
|
+
|
|
403
|
+
/*
|
|
404
|
+
* Scroll-aware edge fades.
|
|
405
|
+
*
|
|
406
|
+
* The fade is a `mask-image` on the scroll container itself, so the container's
|
|
407
|
+
* own pixels dissolve as they approach its padding-box edge. Long transcripts
|
|
408
|
+
* and chip rows therefore hint at more content with no overlay elements, no
|
|
409
|
+
* gradient pseudo-elements sitting on top of the background, and no scroll
|
|
410
|
+
* listeners to keep in sync. Because the mask travels with the scroller, it
|
|
411
|
+
* works the same in light and dark, and over any backdrop.
|
|
412
|
+
*
|
|
413
|
+
* Tune the fade depth per-element with `--scroll-fade-size`.
|
|
414
|
+
*/
|
|
415
|
+
.scroll-fade,
|
|
416
|
+
.scroll-fade-y {
|
|
417
|
+
--scroll-fade-size: 1.5rem;
|
|
418
|
+
-webkit-mask-image: linear-gradient(to bottom,
|
|
419
|
+
transparent 0,
|
|
420
|
+
#000 var(--scroll-fade-size),
|
|
421
|
+
#000 calc(100% - var(--scroll-fade-size)),
|
|
422
|
+
transparent 100%);
|
|
423
|
+
mask-image: linear-gradient(to bottom,
|
|
424
|
+
transparent 0,
|
|
425
|
+
#000 var(--scroll-fade-size),
|
|
426
|
+
#000 calc(100% - var(--scroll-fade-size)),
|
|
427
|
+
transparent 100%);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.scroll-fade-x {
|
|
431
|
+
--scroll-fade-size: 1.5rem;
|
|
432
|
+
-webkit-mask-image: linear-gradient(to right,
|
|
433
|
+
transparent 0,
|
|
434
|
+
#000 var(--scroll-fade-size),
|
|
435
|
+
#000 calc(100% - var(--scroll-fade-size)),
|
|
436
|
+
transparent 100%);
|
|
437
|
+
mask-image: linear-gradient(to right,
|
|
438
|
+
transparent 0,
|
|
439
|
+
#000 var(--scroll-fade-size),
|
|
440
|
+
#000 calc(100% - var(--scroll-fade-size)),
|
|
441
|
+
transparent 100%);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/*
|
|
445
|
+
* Text shimmer for live status — "Thinking…", "Searching…".
|
|
446
|
+
*
|
|
447
|
+
* A gradient sweeps across the text itself via `background-clip: text`, rather
|
|
448
|
+
* than animating opacity, so the wording stays legible throughout. The gradient
|
|
449
|
+
* is built from the theme's own foreground tokens, so it tracks light and dark.
|
|
450
|
+
*/
|
|
451
|
+
.shimmer {
|
|
452
|
+
background-image: linear-gradient(90deg,
|
|
453
|
+
rgb(var(--muted-foreground)) 0%,
|
|
454
|
+
rgb(var(--muted-foreground)) 40%,
|
|
455
|
+
rgb(var(--foreground)) 50%,
|
|
456
|
+
rgb(var(--muted-foreground)) 60%,
|
|
457
|
+
rgb(var(--muted-foreground)) 100%);
|
|
458
|
+
background-size: 200% 100%;
|
|
459
|
+
/*
|
|
460
|
+
* `no-repeat` was the actual bug: the gradient image is only 200% wide, so
|
|
461
|
+
* as `background-position` swept it across the text, whatever fraction of
|
|
462
|
+
* the text the (finite) image no longer reached had nothing behind the
|
|
463
|
+
* transparent fill — not dimmed, genuinely invisible. That showed up two
|
|
464
|
+
* ways: fully blank for a stretch once the image swept completely past
|
|
465
|
+
* the text, and, on every sweep, part of the text (whichever side the
|
|
466
|
+
* image had already vacated) rendering as if cut off. The gradient's
|
|
467
|
+
* first and last stops both resolve to the same muted-foreground colour,
|
|
468
|
+
* so tiling it seamlessly loops — repeating keeps the text fully covered,
|
|
469
|
+
* always at least muted, for the entire animation.
|
|
470
|
+
*/
|
|
471
|
+
background-repeat: repeat;
|
|
472
|
+
-webkit-background-clip: text;
|
|
473
|
+
background-clip: text;
|
|
474
|
+
color: transparent;
|
|
475
|
+
-webkit-text-fill-color: transparent;
|
|
476
|
+
animation: tolle-shimmer 2.4s linear infinite;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
@keyframes tolle-shimmer {
|
|
480
|
+
from {
|
|
481
|
+
background-position: 100% 0;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
to {
|
|
485
|
+
background-position: -100% 0;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/* A sweeping highlight is exactly the motion this query exists to suppress: fall
|
|
490
|
+
back to flat muted text rather than a paused, half-transparent gradient. */
|
|
491
|
+
@media (prefers-reduced-motion: reduce) {
|
|
492
|
+
.shimmer {
|
|
493
|
+
animation: none;
|
|
494
|
+
background-image: none;
|
|
495
|
+
color: rgb(var(--muted-foreground));
|
|
496
|
+
-webkit-text-fill-color: currentColor;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
|
|
313
500
|
/* Remove default browser focus styles */
|
|
314
501
|
tolle-textarea textarea:focus {
|
|
315
502
|
outline: none !important;
|
|
@@ -411,4 +598,37 @@ tolle-input:focus-within {
|
|
|
411
598
|
/* Error state ring color */
|
|
412
599
|
.ring-destructive {
|
|
413
600
|
--tw-ring-color: var(--destructive) !important;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/* In your global styles.css or tailwind.config.js if using Tailwind */
|
|
604
|
+
.rounded-sm {
|
|
605
|
+
border-radius: var(--radius-sm, 0.125rem);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.rounded {
|
|
609
|
+
border-radius: var(--radius, 0.25rem);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.rounded-md {
|
|
613
|
+
border-radius: var(--radius-md, 0.375rem);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.rounded-lg {
|
|
617
|
+
border-radius: var(--radius-lg, 0.5rem);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.rounded-xl {
|
|
621
|
+
border-radius: var(--radius-xl, 0.75rem);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.rounded-2xl {
|
|
625
|
+
border-radius: var(--radius-2xl, 1rem);
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
.rounded-3xl {
|
|
629
|
+
border-radius: var(--radius-3xl, 1.5rem);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.rounded-full {
|
|
633
|
+
border-radius: var(--radius-full, 9999px);
|
|
414
634
|
}
|