@usetheo/ui 0.1.0-next.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.
Files changed (133) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/LICENSE +201 -0
  3. package/README.md +347 -0
  4. package/dist/fonts/LICENSE-GEIST.txt +92 -0
  5. package/dist/fonts/geist-400.woff2 +0 -0
  6. package/dist/fonts/geist-500.woff2 +0 -0
  7. package/dist/fonts/geist-600.woff2 +0 -0
  8. package/dist/fonts/geist-mono-400.woff2 +0 -0
  9. package/dist/fonts/geist-mono-500.woff2 +0 -0
  10. package/dist/fonts/geist-mono-600.woff2 +0 -0
  11. package/dist/fonts-cdn.css +28 -0
  12. package/dist/fonts.css +75 -0
  13. package/dist/index.d.ts +3063 -0
  14. package/dist/index.js +7746 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/styles.css +88 -0
  17. package/dist/tokens.css +230 -0
  18. package/package.json +520 -0
  19. package/registry/index.json +700 -0
  20. package/registry/r/agent-composer.json +22 -0
  21. package/registry/r/agent-editor.json +27 -0
  22. package/registry/r/agent-error-card.json +22 -0
  23. package/registry/r/agent-event.json +24 -0
  24. package/registry/r/agent-handoff.json +22 -0
  25. package/registry/r/agent-profile.json +23 -0
  26. package/registry/r/agent-starting-state.json +22 -0
  27. package/registry/r/agent-stream.json +27 -0
  28. package/registry/r/agent-streaming.json +22 -0
  29. package/registry/r/agent-timeline.json +22 -0
  30. package/registry/r/agent-types.json +15 -0
  31. package/registry/r/approval-card.json +25 -0
  32. package/registry/r/artifact-preview.json +22 -0
  33. package/registry/r/attachment-chip.json +24 -0
  34. package/registry/r/audit-log-entry.json +23 -0
  35. package/registry/r/auto-compact-notice.json +22 -0
  36. package/registry/r/avatar.json +23 -0
  37. package/registry/r/badge.json +22 -0
  38. package/registry/r/browser-controls.json +22 -0
  39. package/registry/r/build-log-stream.json +19 -0
  40. package/registry/r/button.json +23 -0
  41. package/registry/r/capability-indicator.json +23 -0
  42. package/registry/r/card.json +22 -0
  43. package/registry/r/chat-composer.json +23 -0
  44. package/registry/r/chat-message.json +21 -0
  45. package/registry/r/chat-thread.json +20 -0
  46. package/registry/r/chat-types.json +15 -0
  47. package/registry/r/checkbox.json +23 -0
  48. package/registry/r/cn.json +19 -0
  49. package/registry/r/command-palette.json +25 -0
  50. package/registry/r/context-card.json +23 -0
  51. package/registry/r/context-window-bar.json +20 -0
  52. package/registry/r/cost-meter.json +22 -0
  53. package/registry/r/created-files-card.json +23 -0
  54. package/registry/r/cron-job-card.json +22 -0
  55. package/registry/r/cron-jobs-list.json +23 -0
  56. package/registry/r/deployment-row.json +23 -0
  57. package/registry/r/dialog.json +23 -0
  58. package/registry/r/diff-viewer.json +20 -0
  59. package/registry/r/domain-config.json +25 -0
  60. package/registry/r/empty-state.json +20 -0
  61. package/registry/r/env-var-editor.json +25 -0
  62. package/registry/r/folder-context-card.json +23 -0
  63. package/registry/r/folder-selector.json +22 -0
  64. package/registry/r/form-field.json +23 -0
  65. package/registry/r/hook-config.json +22 -0
  66. package/registry/r/hook-event-log.json +22 -0
  67. package/registry/r/input.json +19 -0
  68. package/registry/r/intent-selector.json +24 -0
  69. package/registry/r/label.json +22 -0
  70. package/registry/r/lane-board.json +20 -0
  71. package/registry/r/live-region-context.json +16 -0
  72. package/registry/r/login-split.json +20 -0
  73. package/registry/r/mcp-server-card.json +22 -0
  74. package/registry/r/mcp-server-list.json +23 -0
  75. package/registry/r/memory-editor.json +23 -0
  76. package/registry/r/mention-menu.json +23 -0
  77. package/registry/r/metrics-panel.json +22 -0
  78. package/registry/r/mode-types.json +15 -0
  79. package/registry/r/model-card.json +23 -0
  80. package/registry/r/model-selector.json +23 -0
  81. package/registry/r/permission-matrix.json +22 -0
  82. package/registry/r/permission-modal.json +24 -0
  83. package/registry/r/permission-types.json +15 -0
  84. package/registry/r/preview-env-card.json +25 -0
  85. package/registry/r/preview-panel.json +21 -0
  86. package/registry/r/progress-checklist.json +23 -0
  87. package/registry/r/project-card.json +25 -0
  88. package/registry/r/project-switcher.json +22 -0
  89. package/registry/r/quick-action-chips.json +21 -0
  90. package/registry/r/radio-group.json +23 -0
  91. package/registry/r/recent-folders-list.json +22 -0
  92. package/registry/r/rollback-ui.json +24 -0
  93. package/registry/r/rule-card.json +23 -0
  94. package/registry/r/rule-editor.json +28 -0
  95. package/registry/r/rule-types.json +18 -0
  96. package/registry/r/run-stats.json +22 -0
  97. package/registry/r/running-tasks-panel.json +22 -0
  98. package/registry/r/safe-href.json +16 -0
  99. package/registry/r/scroll-area.json +22 -0
  100. package/registry/r/select.json +23 -0
  101. package/registry/r/session-list-item.json +20 -0
  102. package/registry/r/session-timeline.json +22 -0
  103. package/registry/r/sheet.json +24 -0
  104. package/registry/r/sidebar.json +19 -0
  105. package/registry/r/skeleton.json +19 -0
  106. package/registry/r/skill-card.json +24 -0
  107. package/registry/r/skill-editor.json +28 -0
  108. package/registry/r/skills-list.json +23 -0
  109. package/registry/r/social-auth-row.json +21 -0
  110. package/registry/r/steps-rail.json +20 -0
  111. package/registry/r/sub-agent-dispatch.json +22 -0
  112. package/registry/r/switch.json +22 -0
  113. package/registry/r/system-prompt-editor.json +22 -0
  114. package/registry/r/tabs.json +22 -0
  115. package/registry/r/tailwind-preset.json +19 -0
  116. package/registry/r/task-header.json +24 -0
  117. package/registry/r/task-plan.json +22 -0
  118. package/registry/r/task-types.json +15 -0
  119. package/registry/r/terminal-panel.json +22 -0
  120. package/registry/r/textarea.json +19 -0
  121. package/registry/r/theme-provider.json +59 -0
  122. package/registry/r/theme-script.json +18 -0
  123. package/registry/r/theo-ui-provider.json +20 -0
  124. package/registry/r/toast.json +30 -0
  125. package/registry/r/token-usage-chart.json +20 -0
  126. package/registry/r/tokens.json +21 -0
  127. package/registry/r/tool-call-card.json +23 -0
  128. package/registry/r/tool-call.json +22 -0
  129. package/registry/r/tool-result.json +20 -0
  130. package/registry/r/tools-list.json +23 -0
  131. package/registry/r/tooltip.json +22 -0
  132. package/registry/r/topnav.json +22 -0
  133. package/registry/r/types.json +15 -0
@@ -0,0 +1,88 @@
1
+ @import "./fonts.css";
2
+ @import "./tokens.css";
3
+
4
+ @tailwind base;
5
+ @tailwind components;
6
+ @tailwind utilities;
7
+
8
+ @layer base {
9
+ * {
10
+ border-color: hsl(var(--border));
11
+ }
12
+
13
+ html {
14
+ font-family: var(--font-body);
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ text-rendering: optimizeLegibility;
18
+ }
19
+
20
+ body {
21
+ background-color: hsl(var(--background));
22
+ color: hsl(var(--foreground));
23
+ /* OpenType ligatures globally — Geist's "liga" feature is structural
24
+ * and gives the Vercel-tight glyph combinations. */
25
+ font-feature-settings: "liga" 1, "ss01" 1;
26
+ }
27
+
28
+ /* Display headings inherit theme display font (Geist by default).
29
+ * Per-size tracking is set in tailwind.config.ts; this is the safety net. */
30
+ h1,
31
+ h2,
32
+ h3,
33
+ h4 {
34
+ font-family: var(--font-display);
35
+ font-weight: 600;
36
+ }
37
+
38
+ /* Code surfaces: use the mono token + tabular numerals so columns of
39
+ * numbers line up in tables/logs/metrics. */
40
+ code,
41
+ pre,
42
+ kbd,
43
+ samp {
44
+ font-family: var(--font-mono);
45
+ font-feature-settings: "tnum" 1, "liga" 1;
46
+ }
47
+
48
+ /* Focus ring — violet (signature) */
49
+ :focus-visible {
50
+ outline: 2px solid hsl(var(--ring));
51
+ outline-offset: 2px;
52
+ }
53
+
54
+ /* Selection — soft violet */
55
+ ::selection {
56
+ background-color: hsl(var(--primary) / 0.25);
57
+ color: hsl(var(--foreground));
58
+ }
59
+
60
+ /* Native scrollbar fallback (Violet Forge).
61
+ * Used for native browser scroll on elements that don't wrap in <ScrollArea>.
62
+ * Components that DO use <ScrollArea> hide the native scrollbar via Radix.
63
+ */
64
+ *::-webkit-scrollbar {
65
+ width: 10px;
66
+ height: 10px;
67
+ }
68
+ *::-webkit-scrollbar-track {
69
+ background: transparent;
70
+ }
71
+ *::-webkit-scrollbar-thumb {
72
+ background-color: hsl(var(--primary) / 0.25);
73
+ border: 2px solid transparent;
74
+ background-clip: content-box;
75
+ border-radius: 9999px;
76
+ transition: background-color var(--duration-fast) var(--ease-out-soft);
77
+ }
78
+ *::-webkit-scrollbar-thumb:hover {
79
+ background-color: hsl(var(--primary) / 0.5);
80
+ }
81
+ *::-webkit-scrollbar-thumb:active {
82
+ background-color: hsl(var(--primary) / 0.75);
83
+ }
84
+ * {
85
+ scrollbar-width: thin;
86
+ scrollbar-color: hsl(var(--primary) / 0.3) transparent;
87
+ }
88
+ }
@@ -0,0 +1,230 @@
1
+ /* Theo UI — Design System "Violet Forge" tokens.
2
+ *
3
+ * Tokens normativos. Não edite valores aqui sem revisão do design system.
4
+ * Referência: docs/design-system.md
5
+ *
6
+ * Estratégia:
7
+ * - CSS custom properties para todas as cores, scales e durations.
8
+ * - Default é light. Dark é ativado via [data-theme="dark"] ou .dark.
9
+ * - HSL split (h s l) em vez de hex permite alpha via color-mix() ou hsl(var(--x) / .5).
10
+ *
11
+ * Roxo Theo: #7C3AED → hsl(262 83% 58%)
12
+ * Burnt sienna: #C96442 → hsl(15 54% 53%)
13
+ */
14
+
15
+ /* `:root` and `[data-theme="dark"]` declarations are intentionally NOT wrapped
16
+ * in `@layer base` so they apply at the document level regardless of whether
17
+ * the consumer's CSS pipeline runs Tailwind's preflight. The texture utilities
18
+ * below remain in `@layer utilities` because that layer affects ordering only,
19
+ * not the cascade root.
20
+ */
21
+ :root {
22
+ /* Base palette ------------------------------------------------------- *
23
+ * Neutrals are 100% desaturated (Vercel-style). Color comes from the
24
+ * primary (violet) + accent (burnt sienna) tokens below — never from
25
+ * surface tints.
26
+ */
27
+ --background: 0 0% 100%; /* #FFFFFF */
28
+ --foreground: 0 0% 4%; /* #0A0A0A */
29
+
30
+ --card: 0 0% 100%; /* #FFFFFF */
31
+ --card-foreground: 0 0% 4%;
32
+
33
+ --popover: 0 0% 100%;
34
+ --popover-foreground: 0 0% 4%;
35
+
36
+ /* Primary — Theo violet (equity) ------------------------------------- */
37
+ --primary: 262 83% 58%; /* #7C3AED */
38
+ --primary-deep: 263 70% 42%; /* #5B21B6 — pressed */
39
+ --primary-glow: 263 90% 76%; /* #A78BFA — hover halo */
40
+ --primary-foreground: 0 0% 100%;
41
+
42
+ /* Secondary — neutral muted ----------------------------------------- */
43
+ --secondary: 0 0% 96%; /* #F5F5F5 */
44
+ --secondary-foreground: 0 0% 4%;
45
+
46
+ /* Accent — burnt sienna --------------------------------------------- */
47
+ --accent: 15 54% 53%; /* #C96442 */
48
+ --accent-deep: 15 55% 40%; /* #9C4A2E */
49
+ --accent-foreground: 0 0% 100%;
50
+
51
+ /* Muted ------------------------------------------------------------- */
52
+ --muted: 0 0% 96%;
53
+ --muted-foreground: 0 0% 45%; /* #737373 */
54
+
55
+ /* Surfaces, borders, inputs ----------------------------------------- */
56
+ --border: 0 0% 91%; /* #E8E8E8 — Vercel-style hairline */
57
+ --input: 0 0% 91%;
58
+ --ring: 262 83% 58%; /* matches primary */
59
+
60
+ /* Semantics --------------------------------------------------------- */
61
+ --success: 142 71% 36%; /* #16A34A */
62
+ --success-foreground: 0 0% 100%;
63
+ --warning: 33 92% 44%; /* #D97706 */
64
+ --warning-foreground: 0 0% 100%;
65
+ --destructive: 0 72% 51%; /* #DC2626 */
66
+ --destructive-foreground: 0 0% 100%;
67
+ --info: 217 91% 60%; /* #3B82F6 */
68
+ --info-foreground: 0 0% 100%;
69
+
70
+ /* Radii ------------------------------------------------------------- */
71
+ --radius-none: 0px;
72
+ --radius-sm: 4px;
73
+ --radius-md: 6px;
74
+ --radius-lg: 10px;
75
+ --radius-xl: 14px;
76
+ --radius-2xl: 20px;
77
+ --radius-full: 9999px;
78
+ /* shadcn compat */
79
+ --radius: 14px;
80
+
81
+ /* Spacing scale (4px base) ------------------------------------------ */
82
+ --space-1: 4px;
83
+ --space-2: 8px;
84
+ --space-3: 12px;
85
+ --space-4: 16px;
86
+ --space-5: 20px;
87
+ --space-6: 24px;
88
+ --space-8: 32px;
89
+ --space-10: 40px;
90
+ --space-12: 48px;
91
+ --space-16: 64px;
92
+ --space-20: 80px;
93
+ --space-24: 96px;
94
+ --space-32: 128px;
95
+
96
+ /* Elevation — theme-aware (uses --foreground for shadow ink,
97
+ * --primary for the signature glow, so swapping themes recolors them).
98
+ */
99
+ --shadow-sm: 0 1px 2px 0 hsl(var(--foreground) / 0.06);
100
+ --shadow-md: 0 2px 8px -2px hsl(var(--foreground) / 0.08), 0 1px 3px hsl(var(--foreground) / 0.06);
101
+ --shadow-lg: 0 12px 32px -8px hsl(var(--foreground) / 0.12), 0 4px 12px
102
+ hsl(var(--foreground) / 0.08);
103
+ --shadow-glow: 0 0 24px hsl(var(--primary) / 0.25);
104
+ --shadow-glow-strong: 0 0 32px hsl(var(--primary) / 0.4);
105
+
106
+ /* Motion ------------------------------------------------------------ */
107
+ --ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
108
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
109
+ --ease-snap: cubic-bezier(0.85, 0, 0.15, 1);
110
+ --duration-fast: 120ms;
111
+ --duration-base: 200ms;
112
+ --duration-slow: 360ms;
113
+ --stagger: 60ms;
114
+
115
+ /* Typography (Geist family — Vercel-inspired Violet Forge) ---------- */
116
+ --font-display: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
117
+ --font-body: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
118
+ --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
119
+ }
120
+
121
+ /* Dark mode — dominante --------------------------------------------- *
122
+ * Vercel-aligned grayscale: pure neutrals (0% saturation) for every
123
+ * surface and text layer. Color only in primary (violet), accent (burnt
124
+ * sienna), and semantic tokens (success/warning/destructive/info).
125
+ *
126
+ * Activated exclusively via the `.dark` class on `<html>` (set by
127
+ * `ThemeProvider`, `ThemeScript`, or consumers manually). The previous
128
+ * `[data-theme="dark"]` companion selector was dead — `data-theme` holds
129
+ * the theme NAME, never the literal `"dark"`.
130
+ */
131
+ .dark {
132
+ --background: 0 0% 4%; /* #0A0A0A */
133
+ --foreground: 0 0% 96%; /* #F5F5F5 */
134
+
135
+ --card: 0 0% 7%; /* #121212 */
136
+ --card-foreground: 0 0% 96%;
137
+
138
+ --popover: 0 0% 9%; /* #171717 */
139
+ --popover-foreground: 0 0% 96%;
140
+
141
+ --primary: 262 83% 58%;
142
+ --primary-deep: 263 70% 42%;
143
+ --primary-glow: 263 90% 76%;
144
+ --primary-foreground: 0 0% 100%;
145
+
146
+ --secondary: 0 0% 11%; /* #1C1C1C */
147
+ --secondary-foreground: 0 0% 96%;
148
+
149
+ --accent: 15 54% 53%;
150
+ --accent-deep: 15 55% 40%;
151
+ --accent-foreground: 0 0% 100%;
152
+
153
+ --muted: 0 0% 11%;
154
+ --muted-foreground: 0 0% 60%; /* #999 — Vercel gray-500 */
155
+
156
+ --border: 0 0% 16%; /* #292929 */
157
+ --input: 0 0% 11%;
158
+ --ring: 262 83% 58%;
159
+
160
+ --success: 152 79% 52%; /* #22E58C */
161
+ --success-foreground: 0 0% 4%;
162
+ --warning: 38 92% 50%; /* #F59E0B */
163
+ --warning-foreground: 0 0% 4%;
164
+ --destructive: 350 100% 65%; /* #FF4F6D */
165
+ --destructive-foreground: 0 0% 4%;
166
+ --info: 213 100% 70%; /* #5FB3FF */
167
+ --info-foreground: 0 0% 4%;
168
+
169
+ /* In dark mode, shadows are heavier ink (against the dark surface) and
170
+ * the glow brightens. Both still derive from theme tokens.
171
+ */
172
+ --shadow-sm: 0 1px 2px 0 hsl(0 0% 0% / 0.4);
173
+ --shadow-md: 0 2px 8px -2px hsl(0 0% 0% / 0.5), 0 1px 3px hsl(0 0% 0% / 0.4);
174
+ --shadow-lg: 0 12px 32px -8px hsl(0 0% 0% / 0.6), 0 4px 12px hsl(0 0% 0% / 0.4);
175
+ --shadow-glow: 0 0 24px hsl(var(--primary-glow) / 0.4);
176
+ --shadow-glow-strong: 0 0 36px hsl(var(--primary-glow) / 0.6);
177
+ }
178
+
179
+ /* Reduced motion — neutralizes durations and transitions for users who
180
+ * request prefers-reduced-motion: reduce. Components that use animation as
181
+ * semantic state (e.g. a spinner on a running step) can opt back in with
182
+ * Tailwind's `motion-safe:` prefix.
183
+ *
184
+ * Reference: WCAG 2.3.3 Animation from Interactions (Level AAA).
185
+ */
186
+ @media (prefers-reduced-motion: reduce) {
187
+ :root {
188
+ --duration-fast: 0ms;
189
+ --duration-base: 0ms;
190
+ --duration-slow: 0ms;
191
+ --stagger: 0ms;
192
+ }
193
+ *,
194
+ *::before,
195
+ *::after {
196
+ animation-duration: 0.001ms !important;
197
+ animation-iteration-count: 1 !important;
198
+ transition-duration: 0.001ms !important;
199
+ scroll-behavior: auto !important;
200
+ }
201
+ }
202
+
203
+ /* Texture utilities (signature) ---------------------------------------- */
204
+ @layer utilities {
205
+ .bg-dotted-violet {
206
+ background-image: radial-gradient(hsl(var(--primary) / 0.08) 1px, transparent 1px);
207
+ background-size: 20px 20px;
208
+ }
209
+
210
+ .bg-dotted-violet-strong {
211
+ background-image: radial-gradient(hsl(var(--primary) / 0.16) 1px, transparent 1px);
212
+ background-size: 20px 20px;
213
+ }
214
+
215
+ .bg-hero-glow {
216
+ background-image: radial-gradient(
217
+ ellipse 60% 50% at 70% 0%,
218
+ hsl(var(--primary) / 0.18) 0%,
219
+ transparent 60%
220
+ );
221
+ }
222
+
223
+ .bg-paper-grain {
224
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.06 0 0 0 0 0.04 0 0 0 0 0.08 0 0 0 0.18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
225
+ }
226
+
227
+ .text-balance {
228
+ text-wrap: balance;
229
+ }
230
+ }