@owodesign/owoui 0.1.4 → 0.1.5

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 (43) hide show
  1. package/README.md +19 -9
  2. package/dist/preset-default.css +143 -0
  3. package/dist/preset-elevated.css +164 -0
  4. package/dist/preset-flat.css +144 -0
  5. package/dist/preset-glass.css +173 -0
  6. package/dist/storybook-static/app.css +609 -829
  7. package/dist/storybook-static/assets/main.css +2 -2
  8. package/dist/storybook-static/assets/main.js +12 -12
  9. package/dist/style.css +2988 -0
  10. package/dist/theme-dark.css +230 -0
  11. package/{src/styles/tokens.css → dist/theme-light.css} +109 -149
  12. package/dist/tokens.css +118 -0
  13. package/dist/tokens.d.ts +4 -1
  14. package/dist/tokens.min.js +1 -1
  15. package/package.json +25 -30
  16. package/src/preset-default.css +0 -27
  17. package/src/preset-elevated.css +0 -27
  18. package/src/preset-flat.css +0 -27
  19. package/src/preset-glass.css +0 -27
  20. package/src/style.css +0 -22
  21. package/src/styles/ui/avatar.css +0 -13
  22. package/src/styles/ui/badge.css +0 -52
  23. package/src/styles/ui/button.css +0 -49
  24. package/src/styles/ui/collapsible.css +0 -13
  25. package/src/styles/ui/dialog.css +0 -37
  26. package/src/styles/ui/drawer.css +0 -15
  27. package/src/styles/ui/dropdown-menu.css +0 -132
  28. package/src/styles/ui/field.css +0 -12
  29. package/src/styles/ui/icon-button.css +0 -29
  30. package/src/styles/ui/input.css +0 -16
  31. package/src/styles/ui/panel.css +0 -23
  32. package/src/styles/ui/segmented-control.css +0 -28
  33. package/src/styles/ui/select.css +0 -52
  34. package/src/styles/ui/skeleton.css +0 -99
  35. package/src/styles/ui/status-notice.css +0 -49
  36. package/src/styles/ui/switch.css +0 -17
  37. package/src/styles/ui/tabs.css +0 -33
  38. package/src/styles/ui/textarea.css +0 -8
  39. package/src/styles/ui/toast.css +0 -57
  40. package/src/styles/ui/tooltip.css +0 -31
  41. package/src/theme-dark.css +0 -87
  42. package/src/theme-light.css +0 -103
  43. package/src/tokens.css +0 -1
@@ -0,0 +1,230 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ :root, :host {
3
+ --owo-ref-color-neutral-900: #1a1a1a;
4
+ --owo-ref-color-neutral-700: #4a4a4a;
5
+ --owo-ref-color-neutral-600: #71717a;
6
+ --owo-ref-color-brand-primary: #1a1a1a;
7
+ --owo-ref-color-brand-primary-hover: #000000;
8
+ --owo-ref-color-surface-canvas: #ffffff;
9
+ --owo-ref-color-surface-base: #ffffff;
10
+ --owo-ref-color-surface-subtle: #fafaf9;
11
+ --owo-ref-color-surface-raised: #ffffff;
12
+ --owo-ref-color-surface-inset: #f5f5f4;
13
+ --owo-ref-color-surface-border: #e5e7eb;
14
+ --owo-ref-color-surface-ring: #d6d3d1;
15
+ --owo-ref-color-overlay-strong: rgba(15, 23, 42, 0.18);
16
+ --owo-ref-color-text-on-brand: #ffffff;
17
+ --owo-ref-shadow-raised: 0 10px 20px rgba(15, 23, 42, 0.08);
18
+ --owo-ref-shadow-popover: 0 18px 40px rgba(15, 23, 42, 0.10);
19
+ --owo-ref-color-status-success-bg: rgba(16, 185, 129, 0.10);
20
+ --owo-ref-color-status-success-border: rgba(16, 185, 129, 0.20);
21
+ --owo-ref-color-status-success-text: #047857;
22
+ --owo-ref-color-status-warning-bg: rgba(245, 158, 11, 0.10);
23
+ --owo-ref-color-status-warning-border: rgba(245, 158, 11, 0.20);
24
+ --owo-ref-color-status-warning-text: #b45309;
25
+ --owo-ref-color-status-danger-bg: rgba(239, 68, 68, 0.10);
26
+ --owo-ref-color-status-danger-border: rgba(239, 68, 68, 0.20);
27
+ --owo-ref-color-status-danger-text: #b91c1c;
28
+ --owo-ref-color-status-info-bg: rgba(14, 165, 233, 0.10);
29
+ --owo-ref-color-status-info-border: rgba(14, 165, 233, 0.20);
30
+ --owo-ref-color-status-info-text: #0369a1;
31
+ --owo-ref-font-heading: var(--font-source-serif-pro), var(--font-noto-serif-sc), "Source Serif 4", Georgia, "Times New Roman", serif;
32
+ --owo-ref-radius-sm: 0.5rem;
33
+ --owo-ref-radius-md: 0.75rem;
34
+ --owo-ref-radius-lg: 1rem;
35
+ --owo-ref-radius-xl: 1.5rem;
36
+ --owo-ref-radius-2xl: 2rem;
37
+ --owo-ref-radius-full: 9999px;
38
+ --owo-ref-motion-ease-standard: cubic-bezier(0.2, 0, 0, 1);
39
+ --owo-ref-motion-ease-decelerate: cubic-bezier(0, 0, 0, 1);
40
+ --owo-ref-motion-ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
41
+ }
42
+ :root {
43
+ --owo-sys-preset-surface-bg: var(--owo-sys-theme-surface-base);
44
+ --owo-sys-preset-surface-bg-subtle: var(--owo-sys-theme-surface-subtle);
45
+ --owo-sys-preset-surface-bg-raised: var(--owo-sys-theme-surface-raised);
46
+ --owo-sys-preset-surface-bg-inset: var(--owo-sys-theme-surface-inset);
47
+ --owo-sys-preset-surface-border: var(--owo-sys-theme-surface-border);
48
+ --owo-sys-preset-surface-border-muted: var(--owo-sys-theme-surface-border-muted);
49
+ --owo-sys-preset-surface-border-strong: var(--owo-sys-theme-surface-border-strong);
50
+ --owo-sys-preset-surface-shadow: var(--owo-ref-shadow-raised);
51
+ --owo-sys-preset-surface-shadow-strong: var(--owo-ref-shadow-popover);
52
+ --owo-sys-preset-surface-blur: 0px;
53
+ --owo-sys-preset-canvas-bg: var(--owo-sys-theme-surface-canvas);
54
+ --owo-sys-preset-canvas-bg-subtle: var(--owo-sys-theme-canvas-bg-subtle);
55
+ --owo-sys-preset-surface-container: var(--owo-sys-theme-surface-container);
56
+ --owo-sys-preset-surface-container-high: var(--owo-sys-theme-surface-container-high);
57
+ --owo-sys-preset-surface-container-highest: var(--owo-sys-theme-surface-container-highest);
58
+ --owo-sys-preset-control-radius-sm: var(--owo-ref-radius-sm);
59
+ --owo-sys-preset-control-radius-md: var(--owo-ref-radius-md);
60
+ --owo-sys-preset-control-radius-lg: var(--owo-ref-radius-lg);
61
+ --owo-sys-preset-control-radius-xl: var(--owo-ref-radius-xl);
62
+ --owo-sys-preset-control-radius-2xl: var(--owo-ref-radius-2xl);
63
+ --owo-sys-preset-control-radius-full: var(--owo-ref-radius-full);
64
+ --owo-sys-preset-control-border-width: 1px;
65
+ --owo-cmp-surface-bg: var(--owo-sys-preset-surface-bg);
66
+ --owo-cmp-surface-bg-subtle: var(--owo-sys-preset-surface-bg-subtle);
67
+ --owo-cmp-surface-bg-raised: var(--owo-sys-preset-surface-bg-raised);
68
+ --owo-cmp-surface-bg-inset: var(--owo-sys-preset-surface-bg-inset);
69
+ --owo-cmp-surface-border: var(--owo-sys-preset-surface-border);
70
+ --owo-cmp-surface-border-muted: var(--owo-sys-preset-surface-border-muted);
71
+ --owo-cmp-surface-border-strong: var(--owo-sys-preset-surface-border-strong);
72
+ --owo-cmp-surface-shadow: var(--owo-sys-preset-surface-shadow);
73
+ --owo-cmp-surface-shadow-strong: var(--owo-sys-preset-surface-shadow-strong);
74
+ --owo-cmp-surface-blur: var(--owo-sys-preset-surface-blur);
75
+ --owo-cmp-canvas-bg: var(--owo-sys-preset-canvas-bg);
76
+ --owo-cmp-canvas-bg-subtle: var(--owo-sys-preset-canvas-bg-subtle);
77
+ --owo-cmp-surface-container: var(--owo-sys-preset-surface-container);
78
+ --owo-cmp-surface-container-high: var(--owo-sys-preset-surface-container-high);
79
+ --owo-cmp-surface-container-highest: var(--owo-sys-preset-surface-container-highest);
80
+ --owo-cmp-text-primary: var(--owo-sys-theme-text-primary);
81
+ --owo-cmp-text-secondary: var(--owo-sys-theme-text-secondary);
82
+ --owo-cmp-text-muted: var(--owo-sys-theme-text-muted);
83
+ --owo-cmp-text-on-accent: var(--owo-sys-theme-text-on-accent);
84
+ --owo-cmp-accent-bg: var(--owo-sys-theme-accent-bg);
85
+ --owo-cmp-accent-bg-hover: var(--owo-sys-theme-accent-bg-hover);
86
+ --owo-cmp-accent-bg-muted: var(--owo-sys-theme-accent-bg-muted);
87
+ --owo-cmp-accent-text: var(--owo-sys-theme-text-on-accent);
88
+ --owo-cmp-accent-border: var(--owo-sys-theme-accent-border);
89
+ --owo-cmp-success-bg: var(--owo-sys-theme-success-bg);
90
+ --owo-cmp-success-border: var(--owo-sys-theme-success-border);
91
+ --owo-cmp-success-text: var(--owo-sys-theme-success-text);
92
+ --owo-cmp-warning-bg: var(--owo-sys-theme-warning-bg);
93
+ --owo-cmp-warning-border: var(--owo-sys-theme-warning-border);
94
+ --owo-cmp-warning-text: var(--owo-sys-theme-warning-text);
95
+ --owo-cmp-danger-bg: var(--owo-sys-theme-danger-bg);
96
+ --owo-cmp-danger-bg-emphasis: var(--owo-sys-theme-danger-bg-emphasis);
97
+ --owo-cmp-danger-border: var(--owo-sys-theme-danger-border);
98
+ --owo-cmp-danger-text: var(--owo-sys-theme-danger-text);
99
+ --owo-cmp-info-bg: var(--owo-sys-theme-info-bg);
100
+ --owo-cmp-info-border: var(--owo-sys-theme-info-border);
101
+ --owo-cmp-info-text: var(--owo-sys-theme-info-text);
102
+ --owo-cmp-control-radius-sm: var(--owo-sys-preset-control-radius-sm);
103
+ --owo-cmp-control-radius-md: var(--owo-sys-preset-control-radius-md);
104
+ --owo-cmp-control-radius-lg: var(--owo-sys-preset-control-radius-lg);
105
+ --owo-cmp-control-radius-xl: var(--owo-sys-preset-control-radius-xl);
106
+ --owo-cmp-control-radius-2xl: var(--owo-sys-preset-control-radius-2xl);
107
+ --owo-cmp-control-radius-full: var(--owo-sys-preset-control-radius-full);
108
+ --owo-cmp-control-border-width: var(--owo-sys-preset-control-border-width);
109
+ --owo-cmp-control-focus-ring: var(--owo-sys-theme-control-focus-ring);
110
+ --owo-cmp-control-focus-ring-offset: var(--owo-sys-theme-control-focus-ring-offset);
111
+ --owo-cmp-font-heading: var(--owo-ref-font-heading);
112
+ --owo-cmp-motion-duration-fast: 0.15s;
113
+ --owo-cmp-motion-duration-default: 0.2s;
114
+ --owo-cmp-motion-ease-standard: var(--owo-ref-motion-ease-standard);
115
+ --owo-cmp-motion-ease-decelerate: var(--owo-ref-motion-ease-decelerate);
116
+ --owo-cmp-motion-ease-accelerate: var(--owo-ref-motion-ease-accelerate);
117
+ --owo-cmp-density-compact: 0.875;
118
+ --owo-cmp-density-default: 1;
119
+ --owo-cmp-density-comfortable: 1.125;
120
+ --owo-cmp-overlay-bg: var(--owo-sys-theme-overlay-bg);
121
+ --owo-cmp-z-dropdown: 1000;
122
+ --owo-cmp-z-modal: 1100;
123
+ --owo-cmp-z-toast: 1200;
124
+ --owo-feedback-neutral-bg: var(--owo-cmp-surface-bg-raised);
125
+ --owo-feedback-neutral-border: var(--owo-cmp-surface-border);
126
+ --owo-feedback-neutral-text: var(--owo-cmp-text-primary);
127
+ --owo-feedback-neutral-icon: var(--owo-cmp-text-secondary);
128
+ --owo-feedback-info-bg: var(--owo-cmp-info-bg);
129
+ --owo-feedback-info-border: var(--owo-cmp-info-border);
130
+ --owo-feedback-info-text: var(--owo-cmp-info-text);
131
+ --owo-feedback-info-icon: var(--owo-cmp-info-text);
132
+ --owo-feedback-success-bg: var(--owo-cmp-success-bg);
133
+ --owo-feedback-success-border: var(--owo-cmp-success-border);
134
+ --owo-feedback-success-text: var(--owo-cmp-success-text);
135
+ --owo-feedback-success-icon: var(--owo-cmp-success-text);
136
+ --owo-feedback-warning-bg: var(--owo-cmp-warning-bg);
137
+ --owo-feedback-warning-border: var(--owo-cmp-warning-border);
138
+ --owo-feedback-warning-text: var(--owo-cmp-warning-text);
139
+ --owo-feedback-warning-icon: var(--owo-cmp-warning-text);
140
+ --owo-feedback-danger-bg: var(--owo-cmp-danger-bg);
141
+ --owo-feedback-danger-border: var(--owo-cmp-danger-border);
142
+ --owo-feedback-danger-text: var(--owo-cmp-danger-text);
143
+ --owo-feedback-danger-icon: var(--owo-cmp-danger-text);
144
+ }
145
+ :root[data-theme="dark"],
146
+ .owoui-theme-dark {
147
+ --owo-ref-color-neutral-900: #fafafa;
148
+ --owo-ref-color-neutral-800: #e4e4e7;
149
+ --owo-ref-color-neutral-700: #d4d4d8;
150
+ --owo-ref-color-neutral-600: #a1a1aa;
151
+ --owo-ref-color-neutral-500: #71717a;
152
+ --owo-ref-color-neutral-400: #3f3f46;
153
+ --owo-ref-color-neutral-300: #27272a;
154
+ --owo-ref-color-neutral-200: #1f1f22;
155
+ --owo-ref-color-neutral-100: #18181a;
156
+ --owo-ref-color-brand-primary: #c6c6c7;
157
+ --owo-ref-color-brand-primary-hover: #d4d4d8;
158
+ --owo-ref-color-brand-accent: #a1a1aa;
159
+ --owo-ref-color-surface-canvas: #0e0e0e;
160
+ --owo-ref-color-surface-base: #18181b;
161
+ --owo-ref-color-surface-subtle: #1c1c1f;
162
+ --owo-ref-color-surface-raised: #27272a;
163
+ --owo-ref-color-surface-inset: #111113;
164
+ --owo-ref-color-surface-border: rgba(255, 255, 255, 0.12);
165
+ --owo-ref-color-surface-ring: rgba(255, 255, 255, 0.24);
166
+ --owo-ref-color-surface-overlay: rgba(0, 0, 0, 0.6);
167
+ --owo-ref-color-overlay-soft: rgba(0, 0, 0, 0.32);
168
+ --owo-ref-color-overlay-strong: rgba(0, 0, 0, 0.56);
169
+ --owo-ref-color-highlight-soft: rgba(255, 255, 255, 0.06);
170
+ --owo-ref-color-highlight-sheen: rgba(255, 255, 255, 0.08);
171
+ --owo-ref-color-text-on-brand: #1a1a1a;
172
+ --owo-ref-color-code-block-bg: #1e1e22;
173
+ --owo-ref-color-code-block-border: #2d2d32;
174
+ --owo-ref-color-code-block-divider: #27272c;
175
+ --owo-ref-color-code-inline-bg: #27272a;
176
+ --owo-ref-color-status-success-bg: rgba(16, 185, 129, 0.15);
177
+ --owo-ref-color-status-success-border: rgba(16, 185, 129, 0.3);
178
+ --owo-ref-color-status-success-text: #6ee7b7;
179
+ --owo-ref-color-status-warning-bg: rgba(245, 158, 11, 0.15);
180
+ --owo-ref-color-status-warning-border: rgba(245, 158, 11, 0.3);
181
+ --owo-ref-color-status-warning-text: #fbbf24;
182
+ --owo-ref-color-status-danger-bg: rgba(239, 68, 68, 0.15);
183
+ --owo-ref-color-status-danger-border: rgba(239, 68, 68, 0.3);
184
+ --owo-ref-color-status-danger-text: #fca5a5;
185
+ --owo-ref-color-status-info-bg: rgba(14, 165, 233, 0.15);
186
+ --owo-ref-color-status-info-border: rgba(14, 165, 233, 0.3);
187
+ --owo-ref-color-status-info-text: #7dd3fc;
188
+ --owo-sys-theme-surface-canvas: var(--owo-ref-color-surface-canvas);
189
+ --owo-sys-theme-surface-base: var(--owo-ref-color-surface-base);
190
+ --owo-sys-theme-surface-subtle: var(--owo-ref-color-surface-subtle);
191
+ --owo-sys-theme-surface-raised: var(--owo-ref-color-surface-raised);
192
+ --owo-sys-theme-surface-inset: var(--owo-ref-color-surface-inset);
193
+ --owo-sys-theme-surface-border: var(--owo-ref-color-surface-border);
194
+ --owo-sys-theme-surface-border-muted: rgba(255, 255, 255, 0.06);
195
+ --owo-sys-theme-surface-border-strong: var(--owo-ref-color-surface-ring);
196
+ --owo-sys-theme-canvas-bg-subtle: #0f0f11;
197
+ --owo-sys-theme-surface-container: #1e1e22;
198
+ --owo-sys-theme-surface-container-high: #252529;
199
+ --owo-sys-theme-surface-container-highest: #2d2d32;
200
+ --owo-sys-theme-text-primary: var(--owo-ref-color-neutral-900);
201
+ --owo-sys-theme-text-secondary: var(--owo-ref-color-neutral-700);
202
+ --owo-sys-theme-text-muted: var(--owo-ref-color-neutral-600);
203
+ --owo-sys-theme-text-on-accent: var(--owo-ref-color-text-on-brand);
204
+ --owo-sys-theme-accent-bg: var(--owo-ref-color-brand-primary);
205
+ --owo-sys-theme-accent-bg-hover: var(--owo-ref-color-brand-primary-hover);
206
+ --owo-sys-theme-accent-bg-muted: color-mix(in srgb, #1a1a1a 14%, #ffffff);
207
+ @supports (color: color-mix(in lab, red, red)) {
208
+ --owo-sys-theme-accent-bg-muted: color-mix(in srgb, var(--owo-ref-color-brand-primary) 14%, var(--owo-ref-color-surface-base));
209
+ }
210
+ --owo-sys-theme-accent-border: color-mix(in srgb, #1a1a1a 50%, transparent);
211
+ @supports (color: color-mix(in lab, red, red)) {
212
+ --owo-sys-theme-accent-border: color-mix(in srgb, var(--owo-ref-color-brand-primary) 50%, transparent);
213
+ }
214
+ --owo-sys-theme-success-bg: var(--owo-ref-color-status-success-bg);
215
+ --owo-sys-theme-success-border: var(--owo-ref-color-status-success-border);
216
+ --owo-sys-theme-success-text: var(--owo-ref-color-status-success-text);
217
+ --owo-sys-theme-warning-bg: var(--owo-ref-color-status-warning-bg);
218
+ --owo-sys-theme-warning-border: var(--owo-ref-color-status-warning-border);
219
+ --owo-sys-theme-warning-text: var(--owo-ref-color-status-warning-text);
220
+ --owo-sys-theme-danger-bg: var(--owo-ref-color-status-danger-bg);
221
+ --owo-sys-theme-danger-bg-emphasis: rgba(239, 68, 68, 0.24);
222
+ --owo-sys-theme-danger-border: var(--owo-ref-color-status-danger-border);
223
+ --owo-sys-theme-danger-text: var(--owo-ref-color-status-danger-text);
224
+ --owo-sys-theme-info-bg: var(--owo-ref-color-status-info-bg);
225
+ --owo-sys-theme-info-border: var(--owo-ref-color-status-info-border);
226
+ --owo-sys-theme-info-text: var(--owo-ref-color-status-info-text);
227
+ --owo-sys-theme-control-focus-ring: var(--owo-ref-color-surface-ring);
228
+ --owo-sys-theme-control-focus-ring-offset: var(--owo-ref-color-surface-base);
229
+ --owo-sys-theme-overlay-bg: var(--owo-ref-color-overlay-strong);
230
+ }
@@ -1,30 +1,10 @@
1
- /* ================================================================== */
2
- /* tokens.css Tailwind v4 theme registration + shared mapping */
3
- /* */
4
- /* This file has TWO responsibilities: */
5
- /* 1. @theme: Register raw/ref CSS variables for Tailwind */
6
- /* 2. :root: Shared ref -> sys -> cmp mapping chains */
7
- /* */
8
- /* Theme-specific values live in theme-light.css / theme-dark.css. */
9
- /* Do NOT add theme-specific colors here. */
10
- /* ================================================================== */
11
-
12
- @theme {
13
- /* Neutral scale — initial values (light); overridden per-theme */
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ :root, :host {
14
3
  --owo-ref-color-neutral-900: #1a1a1a;
15
- --owo-ref-color-neutral-800: #2d2d2d;
16
4
  --owo-ref-color-neutral-700: #4a4a4a;
17
5
  --owo-ref-color-neutral-600: #71717a;
18
- --owo-ref-color-neutral-500: #a1a1aa;
19
- --owo-ref-color-neutral-400: #d4d4d8;
20
- --owo-ref-color-neutral-300: #e4e4e7;
21
-
22
- /* Brand — initial values (light); overridden per-theme */
23
6
  --owo-ref-color-brand-primary: #1a1a1a;
24
7
  --owo-ref-color-brand-primary-hover: #000000;
25
- --owo-ref-color-brand-accent: #4a4a4a;
26
-
27
- /* Surface — initial values (light); overridden per-theme */
28
8
  --owo-ref-color-surface-canvas: #ffffff;
29
9
  --owo-ref-color-surface-base: #ffffff;
30
10
  --owo-ref-color-surface-subtle: #fafaf9;
@@ -32,20 +12,10 @@
32
12
  --owo-ref-color-surface-inset: #f5f5f4;
33
13
  --owo-ref-color-surface-border: #e5e7eb;
34
14
  --owo-ref-color-surface-ring: #d6d3d1;
35
- --owo-ref-color-surface-overlay: rgba(0, 0, 0, 0.4);
36
- --owo-ref-color-overlay-soft: rgba(244, 238, 230, 0.56);
37
15
  --owo-ref-color-overlay-strong: rgba(15, 23, 42, 0.18);
38
- --owo-ref-color-highlight-soft: rgba(255, 255, 255, 0.56);
39
- --owo-ref-color-highlight-sheen: rgba(255, 255, 255, 0.34);
40
16
  --owo-ref-color-text-on-brand: #ffffff;
41
- --owo-ref-color-code-block-bg: #f4f4f5;
42
- --owo-ref-color-code-block-border: #e4e4e7;
43
- --owo-ref-color-code-block-divider: #ececed;
44
- --owo-ref-color-code-inline-bg: #f4f4f5;
45
17
  --owo-ref-shadow-raised: 0 10px 20px rgba(15, 23, 42, 0.08);
46
18
  --owo-ref-shadow-popover: 0 18px 40px rgba(15, 23, 42, 0.10);
47
-
48
- /* Status — initial values (light); overridden per-theme */
49
19
  --owo-ref-color-status-success-bg: rgba(16, 185, 129, 0.10);
50
20
  --owo-ref-color-status-success-border: rgba(16, 185, 129, 0.20);
51
21
  --owo-ref-color-status-success-text: #047857;
@@ -58,37 +28,18 @@
58
28
  --owo-ref-color-status-info-bg: rgba(14, 165, 233, 0.10);
59
29
  --owo-ref-color-status-info-border: rgba(14, 165, 233, 0.20);
60
30
  --owo-ref-color-status-info-text: #0369a1;
61
-
62
- /* Typography — shared across all themes */
63
- --owo-ref-font-sans: var(--font-inter), var(--font-noto-sans-sc), system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", Roboto, sans-serif;
64
31
  --owo-ref-font-heading: var(--font-source-serif-pro), var(--font-noto-serif-sc), "Source Serif 4", Georgia, "Times New Roman", serif;
65
- --owo-ref-font-mono: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
66
-
67
- /* Radius — shared across all themes */
68
- --owo-ref-radius-0: 0px;
69
- --owo-ref-radius-xs: 0.375rem;
70
32
  --owo-ref-radius-sm: 0.5rem;
71
33
  --owo-ref-radius-md: 0.75rem;
72
34
  --owo-ref-radius-lg: 1rem;
73
35
  --owo-ref-radius-xl: 1.5rem;
74
36
  --owo-ref-radius-2xl: 2rem;
75
37
  --owo-ref-radius-full: 9999px;
76
-
77
- /* Motion — shared across all themes */
78
38
  --owo-ref-motion-ease-standard: cubic-bezier(0.2, 0, 0, 1);
79
39
  --owo-ref-motion-ease-decelerate: cubic-bezier(0, 0, 0, 1);
80
40
  --owo-ref-motion-ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
81
- --owo-ref-motion-ease-exit: cubic-bezier(0.4, 0, 1, 1);
82
41
  }
83
-
84
- /* ================================================================== */
85
- /* Shared mapping chains: ref -> sys -> cmp */
86
- /* Theme files set --owo-sys-theme-*, presets set --owo-sys-preset-* */
87
- /* and this layer exposes the final --owo-cmp-* component contracts. */
88
- /* ================================================================== */
89
-
90
42
  :root {
91
- /* Preset defaults — theme -> preset (overridden by preset-*.css) */
92
43
  --owo-sys-preset-surface-bg: var(--owo-sys-theme-surface-base);
93
44
  --owo-sys-preset-surface-bg-subtle: var(--owo-sys-theme-surface-subtle);
94
45
  --owo-sys-preset-surface-bg-raised: var(--owo-sys-theme-surface-raised);
@@ -111,8 +62,6 @@
111
62
  --owo-sys-preset-control-radius-2xl: var(--owo-ref-radius-2xl);
112
63
  --owo-sys-preset-control-radius-full: var(--owo-ref-radius-full);
113
64
  --owo-sys-preset-control-border-width: 1px;
114
-
115
- /* Final component contract layer — preset/theme -> cmp */
116
65
  --owo-cmp-surface-bg: var(--owo-sys-preset-surface-bg);
117
66
  --owo-cmp-surface-bg-subtle: var(--owo-sys-preset-surface-bg-subtle);
118
67
  --owo-cmp-surface-bg-raised: var(--owo-sys-preset-surface-bg-raised);
@@ -123,25 +72,20 @@
123
72
  --owo-cmp-surface-shadow: var(--owo-sys-preset-surface-shadow);
124
73
  --owo-cmp-surface-shadow-strong: var(--owo-sys-preset-surface-shadow-strong);
125
74
  --owo-cmp-surface-blur: var(--owo-sys-preset-surface-blur);
126
-
127
75
  --owo-cmp-canvas-bg: var(--owo-sys-preset-canvas-bg);
128
76
  --owo-cmp-canvas-bg-subtle: var(--owo-sys-preset-canvas-bg-subtle);
129
-
130
77
  --owo-cmp-surface-container: var(--owo-sys-preset-surface-container);
131
78
  --owo-cmp-surface-container-high: var(--owo-sys-preset-surface-container-high);
132
79
  --owo-cmp-surface-container-highest: var(--owo-sys-preset-surface-container-highest);
133
-
134
80
  --owo-cmp-text-primary: var(--owo-sys-theme-text-primary);
135
81
  --owo-cmp-text-secondary: var(--owo-sys-theme-text-secondary);
136
82
  --owo-cmp-text-muted: var(--owo-sys-theme-text-muted);
137
83
  --owo-cmp-text-on-accent: var(--owo-sys-theme-text-on-accent);
138
-
139
84
  --owo-cmp-accent-bg: var(--owo-sys-theme-accent-bg);
140
85
  --owo-cmp-accent-bg-hover: var(--owo-sys-theme-accent-bg-hover);
141
86
  --owo-cmp-accent-bg-muted: var(--owo-sys-theme-accent-bg-muted);
142
87
  --owo-cmp-accent-text: var(--owo-sys-theme-text-on-accent);
143
88
  --owo-cmp-accent-border: var(--owo-sys-theme-accent-border);
144
-
145
89
  --owo-cmp-success-bg: var(--owo-sys-theme-success-bg);
146
90
  --owo-cmp-success-border: var(--owo-sys-theme-success-border);
147
91
  --owo-cmp-success-text: var(--owo-sys-theme-success-text);
@@ -155,7 +99,6 @@
155
99
  --owo-cmp-info-bg: var(--owo-sys-theme-info-bg);
156
100
  --owo-cmp-info-border: var(--owo-sys-theme-info-border);
157
101
  --owo-cmp-info-text: var(--owo-sys-theme-info-text);
158
-
159
102
  --owo-cmp-control-radius-sm: var(--owo-sys-preset-control-radius-sm);
160
103
  --owo-cmp-control-radius-md: var(--owo-sys-preset-control-radius-md);
161
104
  --owo-cmp-control-radius-lg: var(--owo-sys-preset-control-radius-lg);
@@ -165,10 +108,7 @@
165
108
  --owo-cmp-control-border-width: var(--owo-sys-preset-control-border-width);
166
109
  --owo-cmp-control-focus-ring: var(--owo-sys-theme-control-focus-ring);
167
110
  --owo-cmp-control-focus-ring-offset: var(--owo-sys-theme-control-focus-ring-offset);
168
-
169
111
  --owo-cmp-font-heading: var(--owo-ref-font-heading);
170
-
171
- /* Motion & density */
172
112
  --owo-cmp-motion-duration-fast: 0.15s;
173
113
  --owo-cmp-motion-duration-default: 0.2s;
174
114
  --owo-cmp-motion-ease-standard: var(--owo-ref-motion-ease-standard);
@@ -177,95 +117,115 @@
177
117
  --owo-cmp-density-compact: 0.875;
178
118
  --owo-cmp-density-default: 1;
179
119
  --owo-cmp-density-comfortable: 1.125;
180
-
181
- /* Overlay & layering */
182
120
  --owo-cmp-overlay-bg: var(--owo-sys-theme-overlay-bg);
183
121
  --owo-cmp-z-dropdown: 1000;
184
122
  --owo-cmp-z-modal: 1100;
185
123
  --owo-cmp-z-toast: 1200;
186
-
187
- /* Content layout — shared */
188
- --content-min-width: 320px;
189
- --content-preferred-width: 70vw;
190
- --content-max-width: 960px;
191
- --content-width: clamp(600px, 70vw, 960px);
192
- --content-padding: 24px;
193
- --header-top-margin: 64px;
194
-
195
- /* App-specific derived variables — shared (reference --owo-cmp-* only) */
196
- --publish-trigger-bg: var(--owo-cmp-surface-bg-subtle);
197
- --publish-trigger-border: var(--owo-cmp-surface-border);
198
- --publish-trigger-text: var(--owo-cmp-text-primary);
199
- --publish-trigger-active-bg: var(--owo-cmp-accent-bg-muted);
200
- --publish-popover-bg: var(--owo-cmp-surface-bg);
201
- --publish-popover-border: var(--owo-cmp-surface-border);
202
- --publish-popover-shadow: var(--owo-cmp-surface-shadow-strong);
203
- --publish-section-bg: var(--owo-cmp-surface-bg-subtle);
204
- --publish-section-border: var(--owo-cmp-surface-border);
205
- --publish-fact-title: var(--owo-cmp-text-secondary);
206
- --publish-fact-value: var(--owo-ref-color-neutral-900);
207
- --publish-muted-text: var(--owo-cmp-text-secondary);
208
- --publish-warning-bg: var(--owo-cmp-warning-bg);
209
- --publish-warning-border: var(--owo-cmp-warning-border);
210
- --publish-warning-text: var(--owo-cmp-warning-text);
211
- --publish-danger-bg: var(--owo-cmp-danger-bg);
212
- --publish-danger-border: var(--owo-cmp-danger-border);
213
- --publish-danger-text: var(--owo-cmp-danger-text);
214
- --publish-success-bg: var(--owo-cmp-success-bg);
215
- --publish-success-border: var(--owo-cmp-success-border);
216
- --publish-success-text: var(--owo-cmp-success-text);
217
- --publish-progress-track: var(--owo-cmp-surface-bg-inset);
218
- --publish-progress-fill: var(--owo-cmp-accent-bg);
219
-
220
- --feedback-neutral-bg: var(--owo-cmp-surface-bg-raised);
221
- --feedback-neutral-border: var(--owo-cmp-surface-border);
222
- --feedback-neutral-text: var(--owo-cmp-text-primary);
223
- --feedback-neutral-icon: var(--owo-cmp-text-secondary);
224
- --feedback-info-bg: var(--owo-cmp-info-bg);
225
- --feedback-info-border: var(--owo-cmp-info-border);
226
- --feedback-info-text: var(--owo-cmp-info-text);
227
- --feedback-info-icon: var(--owo-cmp-info-text);
228
- --feedback-success-bg: var(--owo-cmp-success-bg);
229
- --feedback-success-border: var(--owo-cmp-success-border);
230
- --feedback-success-text: var(--owo-cmp-success-text);
231
- --feedback-success-icon: var(--owo-cmp-success-text);
232
- --feedback-warning-bg: var(--owo-cmp-warning-bg);
233
- --feedback-warning-border: var(--owo-cmp-warning-border);
234
- --feedback-warning-text: var(--owo-cmp-warning-text);
235
- --feedback-warning-icon: var(--owo-cmp-warning-text);
236
- --feedback-danger-bg: var(--owo-cmp-danger-bg);
237
- --feedback-danger-border: var(--owo-cmp-danger-border);
238
- --feedback-danger-text: var(--owo-cmp-danger-text);
239
- --feedback-danger-icon: var(--owo-cmp-danger-text);
240
-
241
- --toast-shadow: var(--owo-cmp-surface-shadow-strong);
242
-
243
- --skeleton-bg: linear-gradient(
244
- 180deg,
245
- color-mix(in srgb, var(--owo-cmp-surface-bg-inset) 94%, white) 0%,
246
- color-mix(in srgb, var(--owo-cmp-surface-bg-inset) 100%, var(--owo-cmp-surface-border)) 100%
247
- );
248
- --skeleton-bg-emphasis: linear-gradient(
249
- 180deg,
250
- color-mix(in srgb, var(--owo-cmp-surface-bg-subtle) 78%, var(--owo-ref-color-highlight-soft)) 0%,
251
- color-mix(in srgb, var(--owo-cmp-surface-bg-inset) 86%, var(--owo-cmp-surface-border)) 100%
252
- );
253
- --skeleton-sheen: linear-gradient(
254
- 100deg,
255
- transparent 0%,
256
- color-mix(in srgb, var(--owo-ref-color-highlight-sheen) 10%, transparent) 28%,
257
- color-mix(in srgb, var(--owo-ref-color-highlight-sheen) 35%, transparent) 40%,
258
- var(--owo-ref-color-highlight-sheen) 50%,
259
- color-mix(in srgb, var(--owo-ref-color-highlight-sheen) 35%, transparent) 60%,
260
- color-mix(in srgb, var(--owo-ref-color-highlight-sheen) 10%, transparent) 72%,
261
- transparent 100%
262
- );
263
- --skeleton-top-highlight: var(--owo-ref-color-highlight-soft);
264
-
265
- --workspace-transition-veil-bg: var(--owo-ref-color-overlay-soft);
266
- --workspace-transition-stale-bg: color-mix(in srgb, var(--owo-ref-color-overlay-soft) 72%, transparent);
267
-
268
- --tooltip-shadow: var(--owo-cmp-surface-shadow-strong);
269
- --select-dropdown-shadow: var(--owo-cmp-surface-shadow-strong);
270
- --drawer-panel-shadow: var(--owo-cmp-surface-shadow-strong);
124
+ --owo-feedback-neutral-bg: var(--owo-cmp-surface-bg-raised);
125
+ --owo-feedback-neutral-border: var(--owo-cmp-surface-border);
126
+ --owo-feedback-neutral-text: var(--owo-cmp-text-primary);
127
+ --owo-feedback-neutral-icon: var(--owo-cmp-text-secondary);
128
+ --owo-feedback-info-bg: var(--owo-cmp-info-bg);
129
+ --owo-feedback-info-border: var(--owo-cmp-info-border);
130
+ --owo-feedback-info-text: var(--owo-cmp-info-text);
131
+ --owo-feedback-info-icon: var(--owo-cmp-info-text);
132
+ --owo-feedback-success-bg: var(--owo-cmp-success-bg);
133
+ --owo-feedback-success-border: var(--owo-cmp-success-border);
134
+ --owo-feedback-success-text: var(--owo-cmp-success-text);
135
+ --owo-feedback-success-icon: var(--owo-cmp-success-text);
136
+ --owo-feedback-warning-bg: var(--owo-cmp-warning-bg);
137
+ --owo-feedback-warning-border: var(--owo-cmp-warning-border);
138
+ --owo-feedback-warning-text: var(--owo-cmp-warning-text);
139
+ --owo-feedback-warning-icon: var(--owo-cmp-warning-text);
140
+ --owo-feedback-danger-bg: var(--owo-cmp-danger-bg);
141
+ --owo-feedback-danger-border: var(--owo-cmp-danger-border);
142
+ --owo-feedback-danger-text: var(--owo-cmp-danger-text);
143
+ --owo-feedback-danger-icon: var(--owo-cmp-danger-text);
144
+ }
145
+ :root,
146
+ :root[data-theme="light"],
147
+ .owoui-theme-light {
148
+ --owo-ref-color-neutral-900: #1a1a1a;
149
+ --owo-ref-color-neutral-800: #2d2d2d;
150
+ --owo-ref-color-neutral-700: #4a4a4a;
151
+ --owo-ref-color-neutral-600: #71717a;
152
+ --owo-ref-color-neutral-500: #a1a1aa;
153
+ --owo-ref-color-neutral-400: #d4d4d8;
154
+ --owo-ref-color-neutral-300: #e4e4e7;
155
+ --owo-ref-color-neutral-200: #f0f0f2;
156
+ --owo-ref-color-neutral-100: #f8f8f9;
157
+ --owo-ref-color-brand-primary: #1a1a1a;
158
+ --owo-ref-color-brand-primary-hover: #000000;
159
+ --owo-ref-color-brand-accent: #4a4a4a;
160
+ --owo-ref-color-surface-canvas: #ffffff;
161
+ --owo-ref-color-surface-base: #ffffff;
162
+ --owo-ref-color-surface-subtle: #fafaf9;
163
+ --owo-ref-color-surface-raised: #ffffff;
164
+ --owo-ref-color-surface-inset: #f5f5f4;
165
+ --owo-ref-color-surface-border: #e5e7eb;
166
+ --owo-ref-color-surface-ring: #d6d3d1;
167
+ --owo-ref-color-surface-overlay: rgba(0, 0, 0, 0.4);
168
+ --owo-ref-color-overlay-soft: rgba(244, 238, 230, 0.56);
169
+ --owo-ref-color-overlay-strong: rgba(15, 23, 42, 0.18);
170
+ --owo-ref-color-highlight-soft: rgba(255, 255, 255, 0.56);
171
+ --owo-ref-color-highlight-sheen: rgba(255, 255, 255, 0.34);
172
+ --owo-ref-color-text-on-brand: #ffffff;
173
+ --owo-ref-color-code-block-bg: #f4f4f5;
174
+ --owo-ref-color-code-block-border: #e4e4e7;
175
+ --owo-ref-color-code-block-divider: #ececed;
176
+ --owo-ref-color-code-inline-bg: #f4f4f5;
177
+ --owo-ref-color-status-success-bg: rgba(16, 185, 129, 0.10);
178
+ --owo-ref-color-status-success-border: rgba(16, 185, 129, 0.20);
179
+ --owo-ref-color-status-success-text: #047857;
180
+ --owo-ref-color-status-warning-bg: rgba(245, 158, 11, 0.10);
181
+ --owo-ref-color-status-warning-border: rgba(245, 158, 11, 0.20);
182
+ --owo-ref-color-status-warning-text: #b45309;
183
+ --owo-ref-color-status-danger-bg: rgba(239, 68, 68, 0.10);
184
+ --owo-ref-color-status-danger-border: rgba(239, 68, 68, 0.20);
185
+ --owo-ref-color-status-danger-text: #b91c1c;
186
+ --owo-ref-color-status-info-bg: rgba(14, 165, 233, 0.10);
187
+ --owo-ref-color-status-info-border: rgba(14, 165, 233, 0.20);
188
+ --owo-ref-color-status-info-text: #0369a1;
189
+ --owo-sys-theme-surface-canvas: var(--owo-ref-color-surface-canvas);
190
+ --owo-sys-theme-surface-base: var(--owo-ref-color-surface-base);
191
+ --owo-sys-theme-surface-subtle: var(--owo-ref-color-surface-subtle);
192
+ --owo-sys-theme-surface-raised: var(--owo-ref-color-surface-raised);
193
+ --owo-sys-theme-surface-inset: var(--owo-ref-color-surface-inset);
194
+ --owo-sys-theme-surface-border: var(--owo-ref-color-surface-border);
195
+ --owo-sys-theme-surface-border-muted: rgba(0, 0, 0, 0.06);
196
+ --owo-sys-theme-surface-border-strong: var(--owo-ref-color-surface-ring);
197
+ --owo-sys-theme-canvas-bg-subtle: #f5f5f4;
198
+ --owo-sys-theme-surface-container: #f4f4f5;
199
+ --owo-sys-theme-surface-container-high: #ececed;
200
+ --owo-sys-theme-surface-container-highest: #e4e4e7;
201
+ --owo-sys-theme-text-primary: var(--owo-ref-color-neutral-900);
202
+ --owo-sys-theme-text-secondary: var(--owo-ref-color-neutral-700);
203
+ --owo-sys-theme-text-muted: var(--owo-ref-color-neutral-600);
204
+ --owo-sys-theme-text-on-accent: var(--owo-ref-color-text-on-brand);
205
+ --owo-sys-theme-accent-bg: var(--owo-ref-color-brand-primary);
206
+ --owo-sys-theme-accent-bg-hover: var(--owo-ref-color-brand-primary-hover);
207
+ --owo-sys-theme-accent-bg-muted: color-mix(in srgb, #1a1a1a 10%, #ffffff);
208
+ @supports (color: color-mix(in lab, red, red)) {
209
+ --owo-sys-theme-accent-bg-muted: color-mix(in srgb, var(--owo-ref-color-brand-primary) 10%, var(--owo-ref-color-surface-base));
210
+ }
211
+ --owo-sys-theme-accent-border: color-mix(in srgb, #1a1a1a 40%, transparent);
212
+ @supports (color: color-mix(in lab, red, red)) {
213
+ --owo-sys-theme-accent-border: color-mix(in srgb, var(--owo-ref-color-brand-primary) 40%, transparent);
214
+ }
215
+ --owo-sys-theme-success-bg: var(--owo-ref-color-status-success-bg);
216
+ --owo-sys-theme-success-border: var(--owo-ref-color-status-success-border);
217
+ --owo-sys-theme-success-text: var(--owo-ref-color-status-success-text);
218
+ --owo-sys-theme-warning-bg: var(--owo-ref-color-status-warning-bg);
219
+ --owo-sys-theme-warning-border: var(--owo-ref-color-status-warning-border);
220
+ --owo-sys-theme-warning-text: var(--owo-ref-color-status-warning-text);
221
+ --owo-sys-theme-danger-bg: var(--owo-ref-color-status-danger-bg);
222
+ --owo-sys-theme-danger-bg-emphasis: rgba(239, 68, 68, 0.18);
223
+ --owo-sys-theme-danger-border: var(--owo-ref-color-status-danger-border);
224
+ --owo-sys-theme-danger-text: var(--owo-ref-color-status-danger-text);
225
+ --owo-sys-theme-info-bg: var(--owo-ref-color-status-info-bg);
226
+ --owo-sys-theme-info-border: var(--owo-ref-color-status-info-border);
227
+ --owo-sys-theme-info-text: var(--owo-ref-color-status-info-text);
228
+ --owo-sys-theme-control-focus-ring: var(--owo-ref-color-surface-ring);
229
+ --owo-sys-theme-control-focus-ring-offset: var(--owo-ref-color-surface-base);
230
+ --owo-sys-theme-overlay-bg: var(--owo-ref-color-overlay-strong);
271
231
  }