@xenide-io/the-old-ui-theme 0.9.18 → 0.10.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/{Chip-BzuNgJIa.d.mts → Chip-DKT-82Lf.d.mts} +5 -3
- package/dist/{Chip-BzuNgJIa.d.ts → Chip-DKT-82Lf.d.ts} +5 -3
- package/dist/{chunk-6SVJAU5K.mjs → chunk-LHE4ROON.mjs} +977 -521
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +138 -99
- package/dist/index.mjs +1 -1
- package/dist/suite.d.mts +23 -1
- package/dist/suite.d.ts +23 -1
- package/dist/suite.js +4248 -4039
- package/dist/suite.mjs +1006 -793
- package/dist/tailwind-preset.js +10 -1
- package/dist/tailwind-preset.mjs +10 -1
- package/dist/ui.d.mts +33 -4
- package/dist/ui.d.ts +33 -4
- package/dist/ui.js +1024 -566
- package/dist/ui.mjs +13 -1
- package/docs/macos-identity-audit.md +279 -0
- package/package.json +1 -1
- package/src/app/globals.css +334 -44
- package/src/components/ui/Accordion.tsx +4 -7
- package/src/components/ui/Avatar.tsx +5 -5
- package/src/components/ui/Calendar.tsx +7 -7
- package/src/components/ui/CodeBlock.tsx +3 -10
- package/src/components/ui/CollapsibleSection.tsx +4 -4
- package/src/components/ui/CommandPalette.tsx +7 -10
- package/src/components/ui/EmptyState.tsx +2 -2
- package/src/components/ui/Input.tsx +1 -1
- package/src/components/ui/Marketing.tsx +128 -0
- package/src/components/ui/MarketingIllustrations.tsx +287 -0
- package/src/components/ui/Panel.tsx +1 -1
- package/src/components/ui/SegmentedControl.tsx +59 -13
- package/src/components/ui/ShowcaseWrapper.tsx +3 -3
- package/src/components/ui/Table.tsx +18 -6
- package/src/components/ui/Typography.tsx +4 -4
- package/src/components/ui/avatar-stat.test.tsx +14 -1
- package/src/components/ui/index.ts +13 -12
- package/src/components/ui/interaction-primitives.test.tsx +12 -6
- package/src/components/ui/marketing.test.tsx +39 -0
- package/src/components/ui/table.test.tsx +20 -0
- package/src/styles/suite-skin.css +405 -40
- package/src/styles/themes.css +45 -45
- package/src/styles/typography.css +25 -1
- package/src/suite/components/ai-panel.tsx +17 -17
- package/src/suite/components/app-switcher.tsx +9 -9
- package/src/suite/components/suite-app-layout.tsx +7 -4
- package/src/suite/components/suite-bottom-nav.tsx +1 -1
- package/src/suite/components/suite-clients-projects-directory.tsx +6 -6
- package/src/suite/components/suite-integration-picker.tsx +7 -7
- package/src/suite/components/suite-integration-rules.tsx +5 -5
- package/src/suite/components/suite-layout.test.tsx +32 -3
- package/src/suite/components/suite-layout.tsx +4 -4
- package/src/suite/components/suite-mobile-drawer.tsx +2 -2
- package/src/suite/components/suite-mobile-header.tsx +1 -1
- package/src/suite/components/suite-notification-bell.tsx +4 -4
- package/src/suite/components/suite-notification-settings.tsx +171 -0
- package/src/suite/components/suite-palette-library.test.tsx +46 -0
- package/src/suite/components/suite-palette-library.tsx +82 -15
- package/src/suite/components/suite-settings-layout.tsx +2 -2
- package/src/suite/components/suite-settings-mobile-nav.tsx +5 -9
- package/src/suite/components/suite-sidebar.test.tsx +39 -0
- package/src/suite/components/suite-sidebar.tsx +41 -19
- package/src/suite/components/suite-skeleton.tsx +6 -6
- package/src/suite/components/suite-user-menu.tsx +2 -2
- package/src/suite/components/today-calibrating.tsx +3 -3
- package/src/suite/components/today-ui.tsx +12 -12
- package/src/suite/components/workspace-switcher.tsx +3 -3
- package/src/suite/index.ts +6 -0
- package/tailwind-preset.ts +9 -0
|
@@ -41,11 +41,11 @@ html {
|
|
|
41
41
|
--suite-reading-max: 48rem; /* ~max-w-3xl / 65ch */
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
/* Phones/tablets
|
|
44
|
+
/* Phones/tablets retain native pan and pinch zoom. */
|
|
45
45
|
@media (hover: none) and (pointer: coarse) {
|
|
46
46
|
html,
|
|
47
47
|
body {
|
|
48
|
-
touch-action: pan-x pan-y;
|
|
48
|
+
touch-action: pan-x pan-y pinch-zoom;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -62,6 +62,292 @@ body {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/* Shared app canvas. Dense workspaces do not paint a decorative background. */
|
|
65
|
+
/* One centred marketing header and one button face across the product family. */
|
|
66
|
+
.marketing-header {
|
|
67
|
+
position: sticky;
|
|
68
|
+
top: 0;
|
|
69
|
+
z-index: 50;
|
|
70
|
+
border-bottom: 1px solid var(--ph-border-subtle);
|
|
71
|
+
background: color-mix(in oklab, var(--ph-canvas) 88%, transparent);
|
|
72
|
+
-webkit-backdrop-filter: blur(16px) saturate(1.15);
|
|
73
|
+
backdrop-filter: blur(16px) saturate(1.15);
|
|
74
|
+
}
|
|
75
|
+
@supports not (backdrop-filter: blur(1px)) {
|
|
76
|
+
.marketing-header {
|
|
77
|
+
background: var(--ph-canvas);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
.marketing-header__inner {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
justify-content: space-between;
|
|
84
|
+
gap: 1rem;
|
|
85
|
+
max-width: 80rem;
|
|
86
|
+
min-height: 4.5rem;
|
|
87
|
+
margin-inline: auto;
|
|
88
|
+
padding-inline: 1.25rem;
|
|
89
|
+
}
|
|
90
|
+
.marketing-header__brand {
|
|
91
|
+
min-width: 0;
|
|
92
|
+
}
|
|
93
|
+
.marketing-header__brand > a {
|
|
94
|
+
display: inline-flex;
|
|
95
|
+
min-height: 2.75rem;
|
|
96
|
+
align-items: center;
|
|
97
|
+
gap: 0.625rem;
|
|
98
|
+
font-size: 1.125rem;
|
|
99
|
+
font-weight: 700;
|
|
100
|
+
color: var(--ph-text-primary);
|
|
101
|
+
border-radius: var(--ph-radius-control);
|
|
102
|
+
}
|
|
103
|
+
.marketing-header__navigation {
|
|
104
|
+
display: none;
|
|
105
|
+
align-items: center;
|
|
106
|
+
gap: 0.25rem;
|
|
107
|
+
}
|
|
108
|
+
.marketing-header__navigation > a {
|
|
109
|
+
display: inline-flex;
|
|
110
|
+
min-height: 2.75rem;
|
|
111
|
+
align-items: center;
|
|
112
|
+
gap: 0.375rem;
|
|
113
|
+
padding-inline: 0.5rem;
|
|
114
|
+
font-size: 0.875rem;
|
|
115
|
+
font-weight: 500;
|
|
116
|
+
color: var(--ph-text-secondary);
|
|
117
|
+
border-radius: var(--ph-radius-control);
|
|
118
|
+
transition:
|
|
119
|
+
color var(--ph-motion-fast) ease,
|
|
120
|
+
background-color var(--ph-motion-fast) ease;
|
|
121
|
+
}
|
|
122
|
+
.marketing-header__navigation > a:hover {
|
|
123
|
+
color: var(--ph-text-primary);
|
|
124
|
+
background: var(--ph-surface-hover);
|
|
125
|
+
}
|
|
126
|
+
.marketing-header__brand > a:focus-visible,
|
|
127
|
+
.marketing-header__navigation > a:focus-visible {
|
|
128
|
+
outline: none;
|
|
129
|
+
box-shadow: var(--ph-focus-halo);
|
|
130
|
+
}
|
|
131
|
+
.marketing-header__navigation svg {
|
|
132
|
+
width: 0.875rem;
|
|
133
|
+
height: 0.875rem;
|
|
134
|
+
flex-shrink: 0;
|
|
135
|
+
}
|
|
136
|
+
.marketing-header__actions {
|
|
137
|
+
display: flex;
|
|
138
|
+
align-items: center;
|
|
139
|
+
justify-content: flex-end;
|
|
140
|
+
gap: 0.625rem;
|
|
141
|
+
}
|
|
142
|
+
.marketing-button.ph-btn {
|
|
143
|
+
--ph-btn-control-size: 2.75rem;
|
|
144
|
+
min-height: 2.75rem;
|
|
145
|
+
padding: 0;
|
|
146
|
+
border: 0;
|
|
147
|
+
background: transparent;
|
|
148
|
+
font-size: 0.875rem;
|
|
149
|
+
}
|
|
150
|
+
.marketing-button.ph-btn .ph-btn-chrome {
|
|
151
|
+
min-height: var(--ph-btn-control-size);
|
|
152
|
+
padding: 0.5rem 0.875rem;
|
|
153
|
+
font-size: inherit;
|
|
154
|
+
}
|
|
155
|
+
.marketing-button.ph-btn-lg {
|
|
156
|
+
--ph-btn-control-size: 3.0625rem;
|
|
157
|
+
font-size: 1rem;
|
|
158
|
+
}
|
|
159
|
+
.marketing-button.ph-btn-lg .ph-btn-chrome {
|
|
160
|
+
padding-inline: 1.25rem;
|
|
161
|
+
}
|
|
162
|
+
.marketing-motion-control {
|
|
163
|
+
display: inline-flex;
|
|
164
|
+
min-height: 2.75rem;
|
|
165
|
+
align-items: center;
|
|
166
|
+
gap: 0.5rem;
|
|
167
|
+
border: 1px solid var(--ph-border-control);
|
|
168
|
+
border-radius: 999px;
|
|
169
|
+
padding: 0.5rem 0.875rem;
|
|
170
|
+
color: var(--ph-text-secondary);
|
|
171
|
+
background: var(--ph-surface-raised);
|
|
172
|
+
box-shadow: var(--ph-chrome-inset-solid-top);
|
|
173
|
+
font-size: 0.75rem;
|
|
174
|
+
cursor: pointer;
|
|
175
|
+
transition:
|
|
176
|
+
color var(--ph-motion-fast) ease,
|
|
177
|
+
background-color var(--ph-motion-fast) ease,
|
|
178
|
+
border-color var(--ph-motion-fast) ease,
|
|
179
|
+
box-shadow var(--ph-motion-fast) ease;
|
|
180
|
+
}
|
|
181
|
+
.marketing-motion-control:hover {
|
|
182
|
+
color: var(--ph-text-primary);
|
|
183
|
+
background: var(--ph-surface-hover);
|
|
184
|
+
}
|
|
185
|
+
.marketing-motion-control[aria-pressed="true"] {
|
|
186
|
+
color: var(--ph-selected-text);
|
|
187
|
+
border-color: var(--ph-selected-border);
|
|
188
|
+
background: var(--ph-selected-bg);
|
|
189
|
+
}
|
|
190
|
+
.marketing-motion-control:focus-visible {
|
|
191
|
+
outline: none;
|
|
192
|
+
box-shadow: var(--ph-focus-halo);
|
|
193
|
+
}
|
|
194
|
+
.marketing-reveal--entered {
|
|
195
|
+
animation: marketing-enter 650ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
196
|
+
}
|
|
197
|
+
@keyframes marketing-enter {
|
|
198
|
+
from {
|
|
199
|
+
opacity: 0.35;
|
|
200
|
+
transform: translateY(20px);
|
|
201
|
+
}
|
|
202
|
+
to {
|
|
203
|
+
opacity: 1;
|
|
204
|
+
transform: none;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
.marketing-svg-float {
|
|
208
|
+
animation: marketing-art-float 7s ease-in-out infinite;
|
|
209
|
+
}
|
|
210
|
+
.marketing-svg-thread {
|
|
211
|
+
animation: marketing-art-thread 5s linear infinite;
|
|
212
|
+
}
|
|
213
|
+
.marketing-svg-polished {
|
|
214
|
+
animation: marketing-art-polish 7s ease-in-out infinite;
|
|
215
|
+
transform-box: fill-box;
|
|
216
|
+
transform-origin: center;
|
|
217
|
+
}
|
|
218
|
+
.marketing-svg-spark {
|
|
219
|
+
animation: marketing-art-spark 3.5s ease-in-out infinite;
|
|
220
|
+
transform-box: fill-box;
|
|
221
|
+
transform-origin: center;
|
|
222
|
+
}
|
|
223
|
+
@keyframes marketing-art-float {
|
|
224
|
+
0%,
|
|
225
|
+
100% {
|
|
226
|
+
transform: translateY(0);
|
|
227
|
+
}
|
|
228
|
+
50% {
|
|
229
|
+
transform: translateY(-7px);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
@keyframes marketing-art-thread {
|
|
233
|
+
to {
|
|
234
|
+
stroke-dashoffset: -65;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
@keyframes marketing-art-polish {
|
|
238
|
+
0%,
|
|
239
|
+
100% {
|
|
240
|
+
opacity: 1;
|
|
241
|
+
transform: translateY(0);
|
|
242
|
+
}
|
|
243
|
+
20% {
|
|
244
|
+
opacity: 0.25;
|
|
245
|
+
transform: translateY(6px);
|
|
246
|
+
}
|
|
247
|
+
45%,
|
|
248
|
+
80% {
|
|
249
|
+
opacity: 1;
|
|
250
|
+
transform: translateY(0);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
@keyframes marketing-art-spark {
|
|
254
|
+
0%,
|
|
255
|
+
100% {
|
|
256
|
+
opacity: 0.45;
|
|
257
|
+
transform: scale(0.85);
|
|
258
|
+
}
|
|
259
|
+
50% {
|
|
260
|
+
opacity: 1;
|
|
261
|
+
transform: scale(1.1);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
.marketing-landing {
|
|
265
|
+
position: relative;
|
|
266
|
+
isolation: isolate;
|
|
267
|
+
overflow-x: clip;
|
|
268
|
+
}
|
|
269
|
+
.marketing-landing::before {
|
|
270
|
+
content: "";
|
|
271
|
+
position: absolute;
|
|
272
|
+
inset: 5rem 0 auto;
|
|
273
|
+
height: 70rem;
|
|
274
|
+
z-index: -1;
|
|
275
|
+
pointer-events: none;
|
|
276
|
+
background:
|
|
277
|
+
radial-gradient(
|
|
278
|
+
ellipse at 18% 12%,
|
|
279
|
+
color-mix(in oklab, var(--ph-accent) 13%, transparent),
|
|
280
|
+
transparent 48%
|
|
281
|
+
),
|
|
282
|
+
radial-gradient(
|
|
283
|
+
ellipse at 88% 34%,
|
|
284
|
+
color-mix(in oklab, var(--ph-blue) 11%, transparent),
|
|
285
|
+
transparent 50%
|
|
286
|
+
);
|
|
287
|
+
animation: marketing-atmosphere 18s ease-in-out infinite alternate;
|
|
288
|
+
}
|
|
289
|
+
.landing-art-section {
|
|
290
|
+
background:
|
|
291
|
+
radial-gradient(
|
|
292
|
+
ellipse at 85% 40%,
|
|
293
|
+
color-mix(in oklab, var(--ph-accent) 8%, transparent),
|
|
294
|
+
transparent 65%
|
|
295
|
+
),
|
|
296
|
+
var(--ph-canvas);
|
|
297
|
+
}
|
|
298
|
+
@keyframes marketing-atmosphere {
|
|
299
|
+
from {
|
|
300
|
+
transform: translateY(-8px) scale(0.98);
|
|
301
|
+
}
|
|
302
|
+
to {
|
|
303
|
+
transform: translateY(12px) scale(1.04);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
html[data-marketing-paused] .marketing-landing svg *,
|
|
307
|
+
html[data-marketing-paused] .marketing-landing::before {
|
|
308
|
+
animation-play-state: paused !important;
|
|
309
|
+
}
|
|
310
|
+
@media (min-width: 640px) {
|
|
311
|
+
.marketing-header__inner {
|
|
312
|
+
padding-inline: 2rem;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
@media (min-width: 1100px) {
|
|
316
|
+
.marketing-header__inner {
|
|
317
|
+
display: grid;
|
|
318
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
319
|
+
}
|
|
320
|
+
.marketing-header__navigation {
|
|
321
|
+
display: flex;
|
|
322
|
+
justify-content: center;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
@media (max-width: 639px) {
|
|
326
|
+
.marketing-header__brand .marketing-brand-name {
|
|
327
|
+
display: none;
|
|
328
|
+
}
|
|
329
|
+
.marketing-header__actions {
|
|
330
|
+
gap: 0.5rem;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
@media (prefers-reduced-motion: reduce) {
|
|
334
|
+
.marketing-reveal--entered {
|
|
335
|
+
animation: none;
|
|
336
|
+
}
|
|
337
|
+
[data-marketing-art] * {
|
|
338
|
+
animation: none !important;
|
|
339
|
+
}
|
|
340
|
+
.marketing-landing svg * {
|
|
341
|
+
animation: none !important;
|
|
342
|
+
}
|
|
343
|
+
.marketing-landing::before {
|
|
344
|
+
animation: none;
|
|
345
|
+
}
|
|
346
|
+
.marketing-motion-control {
|
|
347
|
+
display: none;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
65
351
|
.suite-app-layout {
|
|
66
352
|
background: var(--ph-canvas);
|
|
67
353
|
}
|
|
@@ -81,6 +367,31 @@ body {
|
|
|
81
367
|
z-index: 2;
|
|
82
368
|
}
|
|
83
369
|
|
|
370
|
+
.suite-app-layout__sidebar {
|
|
371
|
+
border-color: var(--ph-border-subtle);
|
|
372
|
+
background: var(--ph-surface-inset);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.suite-sidebar {
|
|
376
|
+
background: color-mix(in oklab, var(--ph-surface-inset) 94%, transparent);
|
|
377
|
+
-webkit-backdrop-filter: blur(18px) saturate(1.15);
|
|
378
|
+
backdrop-filter: blur(18px) saturate(1.15);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.suite-sidebar[data-surface="true"] {
|
|
382
|
+
background: color-mix(in oklab, var(--ph-surface-overlay) 94%, transparent);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
@supports not (backdrop-filter: blur(1px)) {
|
|
386
|
+
.suite-sidebar {
|
|
387
|
+
background: var(--ph-surface-inset);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.suite-sidebar[data-surface="true"] {
|
|
391
|
+
background: var(--ph-surface-overlay);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
84
395
|
.suite-app-layout > div {
|
|
85
396
|
position: relative;
|
|
86
397
|
z-index: 1;
|
|
@@ -91,6 +402,21 @@ body {
|
|
|
91
402
|
scrollbar-gutter: stable;
|
|
92
403
|
}
|
|
93
404
|
|
|
405
|
+
.suite-app-layout__main:focus-visible {
|
|
406
|
+
box-shadow: inset 0 0 0 3px
|
|
407
|
+
color-mix(in oklab, var(--ph-focus-ring) 30%, transparent);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.suite-sidebar-resize-handle {
|
|
411
|
+
transition: background-color var(--ph-motion-fast) ease;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.suite-sidebar-resize-handle:hover,
|
|
415
|
+
.suite-sidebar-resize-handle:focus-visible {
|
|
416
|
+
outline: none;
|
|
417
|
+
background: color-mix(in oklab, var(--ph-focus-ring) 30%, transparent);
|
|
418
|
+
}
|
|
419
|
+
|
|
94
420
|
@supports not (background: color-mix(in oklab, white, transparent)) {
|
|
95
421
|
.suite-app-layout__main {
|
|
96
422
|
background: var(--ph-canvas);
|
|
@@ -124,6 +450,25 @@ body {
|
|
|
124
450
|
margin-inline: calc(-1 * var(--suite-page-pad-x));
|
|
125
451
|
padding-inline: var(--suite-page-pad-x);
|
|
126
452
|
}
|
|
453
|
+
|
|
454
|
+
.suite-settings-mobile-bar {
|
|
455
|
+
background: color-mix(in oklab, var(--ph-canvas) 88%, transparent);
|
|
456
|
+
-webkit-backdrop-filter: blur(12px) saturate(1.2);
|
|
457
|
+
backdrop-filter: blur(12px) saturate(1.2);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.suite-settings-sidebar {
|
|
461
|
+
padding: 0.375rem;
|
|
462
|
+
border: 1px solid var(--ph-border-subtle);
|
|
463
|
+
border-radius: var(--ph-radius-surface);
|
|
464
|
+
background: var(--ph-surface-inset);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
@supports not (backdrop-filter: blur(1px)) {
|
|
468
|
+
.suite-settings-mobile-bar {
|
|
469
|
+
background: var(--ph-canvas);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
127
472
|
@media (min-width: 640px) {
|
|
128
473
|
.suite-settings-mobile-nav {
|
|
129
474
|
margin-inline: calc(-1 * var(--suite-page-pad-x-sm));
|
|
@@ -453,29 +798,12 @@ html.dark .today-page-frame__cloud--2 {
|
|
|
453
798
|
}
|
|
454
799
|
|
|
455
800
|
/* ── Cards ──────────────────────────────────────────────────────────────
|
|
456
|
-
|
|
457
|
-
visible press state. Shadows are mixed from the theme's text colour
|
|
458
|
-
so they adapt to light AND dark themes instead of going muddy. */
|
|
459
|
-
.ph-card {
|
|
460
|
-
border-radius: var(--suite-radius-card, 12px);
|
|
461
|
-
border-color: var(--ph-border-subtle);
|
|
462
|
-
background: var(--ph-surface-raised);
|
|
463
|
-
box-shadow:
|
|
464
|
-
0 1px 2px color-mix(in oklab, var(--ph-text-primary) 6%, transparent),
|
|
465
|
-
0 1px 1px color-mix(in oklab, var(--ph-text-primary) 4%, transparent);
|
|
466
|
-
transition:
|
|
467
|
-
border-color 160ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
468
|
-
box-shadow 160ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
469
|
-
transform 160ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
470
|
-
}
|
|
471
|
-
|
|
801
|
+
Static cards stay flat. Only explicit interactive cards lift. */
|
|
472
802
|
.ph-card-interactive:hover,
|
|
473
803
|
a:hover > .ph-card,
|
|
474
804
|
button:hover > .ph-card {
|
|
475
805
|
border-color: var(--ph-border-control);
|
|
476
|
-
box-shadow:
|
|
477
|
-
0 2px 4px color-mix(in oklab, var(--ph-text-primary) 7%, transparent),
|
|
478
|
-
0 8px 20px color-mix(in oklab, var(--ph-text-primary) 8%, transparent);
|
|
806
|
+
box-shadow: var(--ph-shadow-raised);
|
|
479
807
|
transform: translateY(-1px);
|
|
480
808
|
}
|
|
481
809
|
|
|
@@ -492,12 +820,6 @@ button:hover > .ph-card {
|
|
|
492
820
|
transition-duration: 80ms;
|
|
493
821
|
}
|
|
494
822
|
|
|
495
|
-
/* Radix focuses the first menu item on open. The menu's highlighted state is
|
|
496
|
-
sufficient feedback, so do not retain an app-wide focus ring on that row. */
|
|
497
|
-
#app-switcher-menu .ph-dropdown-item:focus-visible {
|
|
498
|
-
box-shadow: none;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
823
|
/* ── App bar (mobile) / top bar (desktop) ───────────────────────────────
|
|
502
824
|
Translucent, blurred, content scrolls beneath — like every native
|
|
503
825
|
shell. Colour-mix keeps it on-theme in both modes. */
|
|
@@ -563,8 +885,9 @@ button:hover > .ph-card {
|
|
|
563
885
|
content: "";
|
|
564
886
|
position: absolute;
|
|
565
887
|
inset: 0 5px;
|
|
566
|
-
border
|
|
567
|
-
|
|
888
|
+
border: 1px solid var(--ph-selected-border);
|
|
889
|
+
border-radius: var(--ph-radius-surface);
|
|
890
|
+
background: var(--ph-selected-bg);
|
|
568
891
|
}
|
|
569
892
|
.suite-bottom-nav__icon {
|
|
570
893
|
transition: color 160ms ease-out;
|
|
@@ -604,11 +927,16 @@ button:hover > .ph-card {
|
|
|
604
927
|
padding: 0 !important;
|
|
605
928
|
}
|
|
606
929
|
.ph-modal-panel {
|
|
930
|
+
left: 0 !important;
|
|
931
|
+
right: 0 !important;
|
|
932
|
+
top: auto !important;
|
|
933
|
+
bottom: 0 !important;
|
|
607
934
|
width: 100% !important;
|
|
608
935
|
max-width: 100% !important;
|
|
609
936
|
margin: 0 !important;
|
|
610
937
|
max-height: calc(100svh - 3rem) !important;
|
|
611
938
|
border-radius: 16px 16px 0 0 !important;
|
|
939
|
+
transform: none !important;
|
|
612
940
|
padding-bottom: env(safe-area-inset-bottom);
|
|
613
941
|
}
|
|
614
942
|
/* Grabber — first in-flow child, so it sits above flush header rows. */
|
|
@@ -650,6 +978,25 @@ button:hover > .ph-card {
|
|
|
650
978
|
-webkit-overflow-scrolling: touch;
|
|
651
979
|
}
|
|
652
980
|
|
|
981
|
+
.suite-ai-composer {
|
|
982
|
+
border-color: var(--ph-border-control);
|
|
983
|
+
border-radius: var(--ph-radius-surface);
|
|
984
|
+
box-shadow:
|
|
985
|
+
var(--ph-chrome-inset-face-top),
|
|
986
|
+
var(--ph-chrome-inset-face-bottom);
|
|
987
|
+
transition:
|
|
988
|
+
border-color var(--ph-motion-fast) ease,
|
|
989
|
+
box-shadow var(--ph-motion-fast) ease;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.suite-ai-composer:focus-within {
|
|
993
|
+
border-color: color-mix(in oklab, var(--ph-focus-ring) 58%, var(--ph-border));
|
|
994
|
+
box-shadow:
|
|
995
|
+
var(--ph-focus-halo),
|
|
996
|
+
var(--ph-chrome-inset-face-top),
|
|
997
|
+
var(--ph-chrome-inset-face-bottom);
|
|
998
|
+
}
|
|
999
|
+
|
|
653
1000
|
/* Compact desktop controls keep their density; coarse pointers get a reliable
|
|
654
1001
|
44px hit area without app-specific overrides. */
|
|
655
1002
|
@media (pointer: coarse) {
|
|
@@ -670,7 +1017,7 @@ button:hover > .ph-card {
|
|
|
670
1017
|
padding: 0;
|
|
671
1018
|
color: var(--ph-text-primary);
|
|
672
1019
|
font-family: inherit;
|
|
673
|
-
font-size:
|
|
1020
|
+
font-size: var(--ph-type-small);
|
|
674
1021
|
line-height: 1.6;
|
|
675
1022
|
overflow-wrap: anywhere;
|
|
676
1023
|
}
|
|
@@ -690,10 +1037,16 @@ button:hover > .ph-card {
|
|
|
690
1037
|
letter-spacing: -0.012em;
|
|
691
1038
|
line-height: 1.2;
|
|
692
1039
|
}
|
|
693
|
-
.suite-ai-markdown h1 {
|
|
694
|
-
|
|
1040
|
+
.suite-ai-markdown h1 {
|
|
1041
|
+
font-size: 1.2rem;
|
|
1042
|
+
}
|
|
1043
|
+
.suite-ai-markdown h2 {
|
|
1044
|
+
font-size: 1.05rem;
|
|
1045
|
+
}
|
|
695
1046
|
.suite-ai-markdown h3,
|
|
696
|
-
.suite-ai-markdown h4 {
|
|
1047
|
+
.suite-ai-markdown h4 {
|
|
1048
|
+
font-size: 0.9375rem;
|
|
1049
|
+
}
|
|
697
1050
|
.suite-ai-markdown p,
|
|
698
1051
|
.suite-ai-markdown ul,
|
|
699
1052
|
.suite-ai-markdown ol,
|
|
@@ -713,18 +1066,29 @@ button:hover > .ph-card {
|
|
|
713
1066
|
.suite-ai-markdown ol {
|
|
714
1067
|
padding-left: 1.375rem;
|
|
715
1068
|
}
|
|
716
|
-
.suite-ai-markdown ul {
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
.suite-ai-markdown
|
|
720
|
-
|
|
1069
|
+
.suite-ai-markdown ul {
|
|
1070
|
+
list-style: disc;
|
|
1071
|
+
}
|
|
1072
|
+
.suite-ai-markdown ol {
|
|
1073
|
+
list-style: decimal;
|
|
1074
|
+
}
|
|
1075
|
+
.suite-ai-markdown li {
|
|
1076
|
+
padding-left: 0.125rem;
|
|
1077
|
+
}
|
|
1078
|
+
.suite-ai-markdown li + li {
|
|
1079
|
+
margin-top: 0.25rem;
|
|
1080
|
+
}
|
|
1081
|
+
.suite-ai-markdown li::marker {
|
|
1082
|
+
color: var(--ph-brand);
|
|
1083
|
+
}
|
|
721
1084
|
.suite-ai-markdown pre {
|
|
722
1085
|
padding: 0.75rem;
|
|
723
1086
|
overflow-x: auto;
|
|
724
1087
|
border: 1px solid var(--ph-border-subtle);
|
|
725
1088
|
border-radius: 0.625rem;
|
|
726
1089
|
background: color-mix(in oklab, var(--ph-surface) 80%, var(--ph-canvas));
|
|
727
|
-
box-shadow: inset 0 1px 0
|
|
1090
|
+
box-shadow: inset 0 1px 0
|
|
1091
|
+
color-mix(in oklab, var(--ph-text-primary) 4%, transparent);
|
|
728
1092
|
}
|
|
729
1093
|
.suite-ai-markdown code {
|
|
730
1094
|
font-family: var(--ph-font-monospace-stack, ui-monospace, monospace);
|
|
@@ -785,7 +1149,8 @@ button:hover > .ph-card {
|
|
|
785
1149
|
.suite-ai-markdown a {
|
|
786
1150
|
color: var(--ph-brand);
|
|
787
1151
|
font-weight: 600;
|
|
788
|
-
text-decoration: underline solid
|
|
1152
|
+
text-decoration: underline solid
|
|
1153
|
+
color-mix(in oklab, currentColor 45%, transparent);
|
|
789
1154
|
text-underline-offset: 0.16em;
|
|
790
1155
|
}
|
|
791
1156
|
.suite-ai-markdown a:hover {
|
package/src/styles/themes.css
CHANGED
|
@@ -87,55 +87,55 @@
|
|
|
87
87
|
[data-theme="hedgehog-dark"] {
|
|
88
88
|
color-scheme: dark;
|
|
89
89
|
|
|
90
|
-
/*
|
|
91
|
-
--ph-canvas: hsl(
|
|
92
|
-
--ph-surface: hsl(
|
|
93
|
-
--ph-muted: hsl(
|
|
94
|
-
--ph-toolbar: hsl(
|
|
95
|
-
--ph-surface-inset: hsl(
|
|
96
|
-
--ph-surface-raised: hsl(
|
|
97
|
-
--ph-surface-overlay: hsl(
|
|
98
|
-
--ph-border: hsl(
|
|
99
|
-
--ph-border-subtle: hsl(
|
|
100
|
-
--ph-border-strong: hsl(
|
|
101
|
-
|
|
102
|
-
--ph-text-primary: hsl(
|
|
103
|
-
--ph-text-secondary: hsl(
|
|
104
|
-
--ph-text-tertiary: hsl(
|
|
105
|
-
|
|
106
|
-
--ph-accent: #
|
|
107
|
-
--ph-accent-hover: #
|
|
108
|
-
--ph-blue: #
|
|
109
|
-
--ph-violet: #
|
|
110
|
-
--ph-purple: #
|
|
111
|
-
|
|
112
|
-
--ph-success: #
|
|
113
|
-
--ph-warning: #
|
|
114
|
-
--ph-danger: #
|
|
115
|
-
--ph-info: #
|
|
116
|
-
--ph-on-accent: #
|
|
90
|
+
/* Warm graphite keeps the Hedgehog pair recognisable after dark. */
|
|
91
|
+
--ph-canvas: hsl(36 8% 7%);
|
|
92
|
+
--ph-surface: hsl(34 7% 10%);
|
|
93
|
+
--ph-muted: hsl(32 7% 13%);
|
|
94
|
+
--ph-toolbar: hsl(30 7% 16%);
|
|
95
|
+
--ph-surface-inset: hsl(36 8% 6%);
|
|
96
|
+
--ph-surface-raised: hsl(32 7% 14%);
|
|
97
|
+
--ph-surface-overlay: hsl(30 7% 16%);
|
|
98
|
+
--ph-border: hsl(31 6% 22%);
|
|
99
|
+
--ph-border-subtle: hsl(32 6% 17%);
|
|
100
|
+
--ph-border-strong: hsl(30 5% 38%);
|
|
101
|
+
|
|
102
|
+
--ph-text-primary: hsl(40 18% 94%);
|
|
103
|
+
--ph-text-secondary: hsl(36 10% 76%);
|
|
104
|
+
--ph-text-tertiary: hsl(34 7% 59%);
|
|
105
|
+
|
|
106
|
+
--ph-accent: #e8682a;
|
|
107
|
+
--ph-accent-hover: #f27b3d;
|
|
108
|
+
--ph-blue: #5b9cff;
|
|
109
|
+
--ph-violet: #b66ce0;
|
|
110
|
+
--ph-purple: #b66ce0;
|
|
111
|
+
|
|
112
|
+
--ph-success: #63b77b;
|
|
113
|
+
--ph-warning: #e6ad48;
|
|
114
|
+
--ph-danger: #df625c;
|
|
115
|
+
--ph-info: #5b9cff;
|
|
116
|
+
--ph-on-accent: #1a0e08;
|
|
117
117
|
--ph-on-violet: #ffffff;
|
|
118
118
|
--ph-on-success: #111114;
|
|
119
119
|
--ph-on-warning: #111114;
|
|
120
120
|
--ph-on-danger: #ffffff;
|
|
121
|
-
--ph-on-info: #
|
|
122
|
-
--ph-focus-ring: #
|
|
123
|
-
--ph-selected-bg:
|
|
124
|
-
--ph-selected-text:
|
|
125
|
-
--ph-selected-border:
|
|
126
|
-
|
|
127
|
-
--ph-text-3000:
|
|
128
|
-
--ph-primary-button-face: #
|
|
129
|
-
--ph-primary-button-border: #
|
|
130
|
-
--ph-primary-button-border-hover: #
|
|
131
|
-
--ph-primary-frame-bg: #
|
|
132
|
-
--ph-secondary-button-bg: hsl(
|
|
133
|
-
--ph-secondary-frame-bg: hsl(
|
|
134
|
-
--ph-secondary-button-border: hsl(
|
|
135
|
-
--ph-secondary-button-border-hover: hsl(
|
|
136
|
-
|
|
137
|
-
--ph-border-3000: hsl(
|
|
138
|
-
--ph-accent-highlight-secondary:
|
|
121
|
+
--ph-on-info: #101725;
|
|
122
|
+
--ph-focus-ring: #66a5ff;
|
|
123
|
+
--ph-selected-bg: hsl(19 72% 17%);
|
|
124
|
+
--ph-selected-text: hsl(22 92% 76%);
|
|
125
|
+
--ph-selected-border: hsl(19 66% 48%);
|
|
126
|
+
|
|
127
|
+
--ph-text-3000: #1a0e08;
|
|
128
|
+
--ph-primary-button-face: #ef8a4c;
|
|
129
|
+
--ph-primary-button-border: #c75a24;
|
|
130
|
+
--ph-primary-button-border-hover: #e8682a;
|
|
131
|
+
--ph-primary-frame-bg: #883714;
|
|
132
|
+
--ph-secondary-button-bg: hsl(30 7% 16%);
|
|
133
|
+
--ph-secondary-frame-bg: hsl(30 7% 20%);
|
|
134
|
+
--ph-secondary-button-border: hsl(30 5% 31%);
|
|
135
|
+
--ph-secondary-button-border-hover: hsl(30 5% 44%);
|
|
136
|
+
|
|
137
|
+
--ph-border-3000: hsl(30 7% 18%);
|
|
138
|
+
--ph-accent-highlight-secondary: hsl(19 82% 56% / 16%);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
/* OneNote — brand purple #7719aa on lavender paper. */
|
|
@@ -6,10 +6,25 @@
|
|
|
6
6
|
* 2. Monospace stack — code, CSV, token chips, shortcuts. Functional only.
|
|
7
7
|
*
|
|
8
8
|
* Marketing type uses `clamp()` so a hero has ONE definition instead of three
|
|
9
|
-
* breakpoint variants per app. Product
|
|
9
|
+
* breakpoint variants per app. Product roles and Tailwind text utilities share
|
|
10
|
+
* the tokens below, including every suite component and consuming app.
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
13
|
:root {
|
|
14
|
+
--ph-font-sans-stack: var(--font-open-runde, "Open Runde"), ui-sans-serif, system-ui, sans-serif;
|
|
15
|
+
/* Product scale: comfortable body/control text, compact readable metadata. */
|
|
16
|
+
--ph-type-page: 1.5rem;
|
|
17
|
+
--ph-type-product-section: clamp(1.375rem, 1.25rem + 0.5vw, 1.5rem);
|
|
18
|
+
--ph-type-subsection: 1.25rem;
|
|
19
|
+
--ph-type-card: 1.125rem;
|
|
20
|
+
--ph-type-body: 1rem;
|
|
21
|
+
--ph-type-ui: 0.9375rem;
|
|
22
|
+
--ph-type-small: 0.9375rem;
|
|
23
|
+
--ph-type-meta: 0.8125rem;
|
|
24
|
+
--ph-type-overline: 0.75rem;
|
|
25
|
+
--ph-leading-body: 1.6;
|
|
26
|
+
--ph-leading-ui: 1.5;
|
|
27
|
+
--ph-leading-title: 1.2;
|
|
13
28
|
/* Code / CSV / token chips — monospace with clear ASCII */
|
|
14
29
|
--ph-font-monospace-stack:
|
|
15
30
|
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
|
|
@@ -30,6 +45,15 @@
|
|
|
30
45
|
--ph-type-lead: clamp(1.0625rem, 1rem + 0.35vw, 1.25rem);
|
|
31
46
|
}
|
|
32
47
|
|
|
48
|
+
@media (max-width: 639px) {
|
|
49
|
+
:root {
|
|
50
|
+
--ph-type-page: 1.375rem;
|
|
51
|
+
--ph-type-ui: 1rem;
|
|
52
|
+
--ph-type-small: 1rem;
|
|
53
|
+
--ph-type-meta: 0.875rem;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
33
57
|
/* ── Marketing / landing type ─────────────────────────────────────────────
|
|
34
58
|
Use these on public pages so all five apps share one hero rhythm.
|
|
35
59
|
In-app chrome keeps the Tailwind step scale; do not use hero classes
|