@cosxai/ui 0.25.0 → 1.0.0-alpha.1
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/CHANGELOG.md +597 -0
- package/NOTICE +11 -0
- package/README.md +52 -0
- package/package.json +57 -7
- package/src/brand.css +13 -0
- package/src/components/Badge.tsx +68 -0
- package/src/components/Button.tsx +178 -0
- package/src/components/Card.tsx +42 -0
- package/src/components/Checkbox.tsx +67 -0
- package/src/components/Dialog.tsx +111 -0
- package/src/components/Field.tsx +66 -0
- package/src/components/Figure.tsx +30 -0
- package/src/components/Icon.tsx +32 -0
- package/src/components/IconButton.tsx +55 -0
- package/src/components/Input.tsx +74 -0
- package/src/components/Logo.tsx +62 -0
- package/src/components/Marker.tsx +26 -0
- package/src/components/MetaLabel.tsx +38 -0
- package/src/components/Radio.tsx +72 -0
- package/src/components/Select.tsx +351 -0
- package/src/components/Spinner.tsx +20 -0
- package/src/components/Switch.tsx +67 -0
- package/src/components/Table.tsx +196 -0
- package/src/components/Tabs.tsx +124 -0
- package/src/components/Tag.tsx +35 -0
- package/src/components/Textarea.tsx +46 -0
- package/src/components/ThemeProvider.tsx +80 -0
- package/src/components/Toast.tsx +159 -0
- package/src/components/Tooltip.tsx +57 -0
- package/src/components/core.test.tsx +242 -0
- package/src/components/forms-control.ts +36 -0
- package/src/components/forms.test.tsx +280 -0
- package/src/components/logo-art.ts +4 -0
- package/src/components/overlays.test.tsx +245 -0
- package/src/components/useButtonAction.ts +57 -0
- package/src/fonts.css +20 -0
- package/src/index.ts +34 -24
- package/src/lib/cn.ts +23 -6
- package/src/modes.css +10 -0
- package/src/styles.css +19 -0
- package/src/theme.css +143 -0
- package/src/tokens/colors.css +112 -0
- package/src/tokens/compat.css +36 -0
- package/src/tokens/elevation.css +14 -0
- package/src/tokens/motion.css +42 -0
- package/src/tokens/spacing.css +55 -0
- package/src/tokens/typography-cjk.css +42 -0
- package/src/tokens/typography.css +81 -0
- package/src/actionbar/ActionBar.tsx +0 -837
- package/src/actionbar/ActionBarButton.tsx +0 -111
- package/src/actionbar/ActionBarMenuGroup.tsx +0 -116
- package/src/actionbar/ActionBarModeHandle.tsx +0 -171
- package/src/actionbar/ActionBarProvider.tsx +0 -91
- package/src/actionbar/actionbar-context.ts +0 -45
- package/src/actionbar/index.ts +0 -28
- package/src/actionbar/types.ts +0 -147
- package/src/actionbar/useActionBarItems.ts +0 -60
- package/src/actionbar/useActionBarMode.ts +0 -144
- package/src/actionbar/useActionBarPanel.ts +0 -56
- package/src/actionbar/useActionBarStatusDot.ts +0 -49
- package/src/actionbar/useActionBarToast.ts +0 -33
- package/src/ambient/AmbientBackdrop.tsx +0 -74
- package/src/ambient/CommandInput.tsx +0 -107
- package/src/ambient/SuperbarStrip.tsx +0 -36
- package/src/ambient/index.ts +0 -6
- package/src/bento/BentoCell.tsx +0 -66
- package/src/bento/BentoGrid.tsx +0 -42
- package/src/bento/index.ts +0 -2
- package/src/command/CommandPalette.tsx +0 -329
- package/src/command/CommandProvider.tsx +0 -57
- package/src/command/command-context.ts +0 -12
- package/src/command/index.ts +0 -6
- package/src/command/rank.ts +0 -50
- package/src/command/types.ts +0 -37
- package/src/command/useCommandSource.ts +0 -37
- package/src/dialogs/DialogsProvider.tsx +0 -216
- package/src/dialogs/Modal.tsx +0 -260
- package/src/dialogs/Toast.tsx +0 -85
- package/src/dialogs/dialogs-context.ts +0 -6
- package/src/dialogs/index.ts +0 -10
- package/src/dialogs/types.ts +0 -37
- package/src/dialogs/useDialogs.ts +0 -8
- package/src/editorial/EditorialSpotlight.tsx +0 -63
- package/src/editorial/Folio.tsx +0 -52
- package/src/editorial/PlateMarker.tsx +0 -33
- package/src/editorial/RomanSection.tsx +0 -65
- package/src/editorial/RunningMarginalia.tsx +0 -65
- package/src/editorial/index.ts +0 -10
- package/src/hooks/index.ts +0 -5
- package/src/hooks/useKeyboardHotkey.ts +0 -93
- package/src/hooks/useReducedMotion.ts +0 -20
- package/src/hooks/useViewport.ts +0 -61
- package/src/layout/Breadcrumb.tsx +0 -74
- package/src/layout/LeftNavRail.tsx +0 -139
- package/src/layout/MobileTabBar.tsx +0 -101
- package/src/layout/NavItem.tsx +0 -128
- package/src/layout/NavSearchTrigger.tsx +0 -88
- package/src/layout/NavSection.tsx +0 -40
- package/src/layout/RightSidebarPanel.tsx +0 -111
- package/src/layout/Shell.tsx +0 -91
- package/src/layout/SidePanel.tsx +0 -316
- package/src/layout/StickyBanner.tsx +0 -83
- package/src/layout/Topbar.tsx +0 -68
- package/src/layout/index.ts +0 -24
- package/src/layout/useNavRailState.ts +0 -69
- package/src/lib/time-utils.ts +0 -44
- package/src/neobrutalism/Marquee.tsx +0 -81
- package/src/neobrutalism/Sticker.tsx +0 -71
- package/src/neobrutalism/index.ts +0 -4
- package/src/primitives/Avatar.tsx +0 -53
- package/src/primitives/Button.tsx +0 -67
- package/src/primitives/Card.tsx +0 -41
- package/src/primitives/Checkbox.tsx +0 -87
- package/src/primitives/Chip.tsx +0 -191
- package/src/primitives/Combobox.tsx +0 -507
- package/src/primitives/CopyField.tsx +0 -139
- package/src/primitives/CountBadge.tsx +0 -50
- package/src/primitives/Input.tsx +0 -204
- package/src/primitives/Kbd.tsx +0 -45
- package/src/primitives/MentionCombobox.tsx +0 -612
- package/src/primitives/MultiCombobox.tsx +0 -327
- package/src/primitives/PageHeader.tsx +0 -77
- package/src/primitives/Radio.tsx +0 -131
- package/src/primitives/SegmentedControl.tsx +0 -135
- package/src/primitives/Select.tsx +0 -779
- package/src/primitives/SignaturePad.tsx +0 -461
- package/src/primitives/Tag.tsx +0 -56
- package/src/primitives/Textarea.tsx +0 -62
- package/src/primitives/ToggleSwitch.tsx +0 -79
- package/src/primitives/Tooltip.tsx +0 -213
- package/src/primitives/index.ts +0 -53
- package/src/pwa/InstallPromptBanner.tsx +0 -132
- package/src/pwa/index.ts +0 -4
- package/src/pwa/manifest.template.json +0 -20
- package/src/pwa/registerSW.ts +0 -55
- package/src/riso/Halftone.tsx +0 -85
- package/src/riso/Misregister.tsx +0 -63
- package/src/riso/RisoStamp.tsx +0 -76
- package/src/riso/index.ts +0 -3
- package/src/sketch/HandUnderline.tsx +0 -53
- package/src/sketch/RoughArrow.tsx +0 -91
- package/src/sketch/RoughBox.tsx +0 -73
- package/src/sketch/StickyNote.tsx +0 -56
- package/src/sketch/index.ts +0 -4
- package/src/styles/base.css +0 -186
- package/src/styles/chrome-ambient.css +0 -235
- package/src/styles/chrome-bento.css +0 -192
- package/src/styles/chrome-editorial.css +0 -168
- package/src/styles/chrome-neobrutalism.css +0 -326
- package/src/styles/chrome-riso.css +0 -339
- package/src/styles/chrome-sketch.css +0 -362
- package/src/styles/chrome-swiss.css +0 -265
- package/src/styles/chrome-terminal.css +0 -272
- package/src/styles/fonts.css +0 -1034
- package/src/styles/index.css +0 -343
- package/src/styles/tokens.css +0 -941
- package/src/terminal/AsciiBox.tsx +0 -65
- package/src/terminal/BrailleSpinner.tsx +0 -46
- package/src/terminal/index.ts +0 -4
- package/src/theme/ThemeProvider.tsx +0 -99
- package/src/theme/index.ts +0 -6
- package/src/theme/inline-script.ts +0 -40
- package/src/theme/theme-context.ts +0 -7
- package/src/theme/types.ts +0 -39
- package/src/theme/useTheme.ts +0 -8
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
/* Ambient Glass chrome — component overrides.
|
|
2
|
-
Tokens.css supplies the gradient backdrop + glass surface
|
|
3
|
-
tokens + Superbar gradient. This file makes every chrome
|
|
4
|
-
surface translucent with backdrop-filter blur so the ambient
|
|
5
|
-
mesh shows through, and threads the Superbar accent into the
|
|
6
|
-
places it belongs (active list items, AI input divider). */
|
|
7
|
-
|
|
8
|
-
html[data-ck-chrome="ambient"] body {
|
|
9
|
-
/* Pin the ambient mesh to the viewport so it doesn't scroll
|
|
10
|
-
with content — feels like a real desktop wallpaper. */
|
|
11
|
-
background-attachment: fixed;
|
|
12
|
-
font-weight: 400;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/* ===== Layout chrome: glass surfaces over the mesh ============ */
|
|
16
|
-
|
|
17
|
-
html[data-ck-chrome="ambient"] [data-ck-leftnav] {
|
|
18
|
-
background: var(--ck-bg-sidebar) !important;
|
|
19
|
-
backdrop-filter: var(--ck-blur-window);
|
|
20
|
-
-webkit-backdrop-filter: var(--ck-blur-window);
|
|
21
|
-
border-right: 1px solid var(--ck-border-subtle);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
html[data-ck-chrome="ambient"] [data-ck-topbar] {
|
|
25
|
-
background: var(--ck-bg-sidebar) !important;
|
|
26
|
-
backdrop-filter: var(--ck-blur-window);
|
|
27
|
-
-webkit-backdrop-filter: var(--ck-blur-window);
|
|
28
|
-
border-bottom: 1px solid var(--ck-border-subtle);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* ===== Cards ================================================= */
|
|
32
|
-
|
|
33
|
-
html[data-ck-chrome="ambient"] .ck-card {
|
|
34
|
-
background: var(--ck-bg-surface);
|
|
35
|
-
border: 1px solid var(--ck-border-subtle);
|
|
36
|
-
border-radius: 16px;
|
|
37
|
-
box-shadow: var(--ck-shadow-1);
|
|
38
|
-
backdrop-filter: var(--ck-blur-window);
|
|
39
|
-
-webkit-backdrop-filter: var(--ck-blur-window);
|
|
40
|
-
}
|
|
41
|
-
html[data-ck-chrome="ambient"] .ck-card__head {
|
|
42
|
-
border-bottom: 1px solid var(--ck-border-subtle);
|
|
43
|
-
}
|
|
44
|
-
html[data-ck-chrome="ambient"] .ck-card__foot {
|
|
45
|
-
border-top: 1px solid var(--ck-border-subtle);
|
|
46
|
-
background: transparent;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/* ===== Buttons — soft pills, no chunky shadow ================ */
|
|
50
|
-
|
|
51
|
-
html[data-ck-chrome="ambient"] .ck-btn,
|
|
52
|
-
html[data-ck-chrome="ambient"] .ck-actionbar-btn {
|
|
53
|
-
border-radius: 10px;
|
|
54
|
-
font-weight: 600;
|
|
55
|
-
letter-spacing: 0;
|
|
56
|
-
text-transform: none;
|
|
57
|
-
transition: background var(--ck-dur-fast) var(--ck-ease),
|
|
58
|
-
border-color var(--ck-dur-fast) var(--ck-ease),
|
|
59
|
-
filter var(--ck-dur-fast) var(--ck-ease);
|
|
60
|
-
}
|
|
61
|
-
html[data-ck-chrome="ambient"] .ck-btn--primary {
|
|
62
|
-
background: var(--ck-accent);
|
|
63
|
-
/* Defaults to white to pair with ambient's deep saturated accents;
|
|
64
|
-
consumer apps may stamp --ck-accent-fg when overriding
|
|
65
|
-
--ck-accent-light-override (e.g. light brand → dark text). */
|
|
66
|
-
color: var(--ck-accent-fg, #FFFFFF);
|
|
67
|
-
border: none;
|
|
68
|
-
box-shadow: var(--ck-shadow-1);
|
|
69
|
-
}
|
|
70
|
-
html[data-ck-chrome="ambient"] .ck-btn--primary:hover:not(:disabled) {
|
|
71
|
-
filter: brightness(1.08);
|
|
72
|
-
}
|
|
73
|
-
html[data-ck-chrome="ambient"] .ck-btn--secondary {
|
|
74
|
-
background: var(--ck-bg-surface);
|
|
75
|
-
border-color: var(--ck-border-subtle);
|
|
76
|
-
color: var(--ck-text-primary);
|
|
77
|
-
backdrop-filter: var(--ck-blur-window);
|
|
78
|
-
}
|
|
79
|
-
html[data-ck-chrome="ambient"] .ck-btn--ghost {
|
|
80
|
-
background: transparent;
|
|
81
|
-
border: none;
|
|
82
|
-
}
|
|
83
|
-
html[data-ck-chrome="ambient"] .ck-btn--ghost:hover:not(:disabled) {
|
|
84
|
-
background: var(--ck-bg-surface);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/* ===== Inputs / Textareas =================================== */
|
|
88
|
-
|
|
89
|
-
html[data-ck-chrome="ambient"] .ck-input,
|
|
90
|
-
html[data-ck-chrome="ambient"] .ck-textarea {
|
|
91
|
-
background: var(--ck-bg-muted);
|
|
92
|
-
border: 1px solid var(--ck-border-subtle);
|
|
93
|
-
border-radius: 10px;
|
|
94
|
-
color: var(--ck-text-primary);
|
|
95
|
-
backdrop-filter: blur(12px);
|
|
96
|
-
-webkit-backdrop-filter: blur(12px);
|
|
97
|
-
}
|
|
98
|
-
html[data-ck-chrome="ambient"] .ck-input:focus-visible,
|
|
99
|
-
html[data-ck-chrome="ambient"] .ck-textarea:focus-visible {
|
|
100
|
-
outline: none;
|
|
101
|
-
border-color: var(--ck-accent-border) !important;
|
|
102
|
-
box-shadow: 0 0 0 3px var(--ck-accent-muted) !important;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/* ===== Typography =========================================== */
|
|
106
|
-
|
|
107
|
-
html[data-ck-chrome="ambient"] h1,
|
|
108
|
-
html[data-ck-chrome="ambient"] .ck-h1 {
|
|
109
|
-
font-weight: 700;
|
|
110
|
-
letter-spacing: -0.02em;
|
|
111
|
-
line-height: 1.05;
|
|
112
|
-
}
|
|
113
|
-
html[data-ck-chrome="ambient"] h2,
|
|
114
|
-
html[data-ck-chrome="ambient"] .ck-h2 {
|
|
115
|
-
font-weight: 700;
|
|
116
|
-
letter-spacing: -0.01em;
|
|
117
|
-
}
|
|
118
|
-
html[data-ck-chrome="ambient"] h3,
|
|
119
|
-
html[data-ck-chrome="ambient"] .ck-h3 {
|
|
120
|
-
font-weight: 600;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/* ===== NavItem — active gets right-edge Superbar strip ======= */
|
|
124
|
-
|
|
125
|
-
html[data-ck-chrome="ambient"] [data-ck-navitem] {
|
|
126
|
-
position: relative;
|
|
127
|
-
font-weight: 500 !important;
|
|
128
|
-
color: var(--ck-text-secondary) !important;
|
|
129
|
-
transition: background var(--ck-dur-fast) var(--ck-ease),
|
|
130
|
-
color var(--ck-dur-fast) var(--ck-ease);
|
|
131
|
-
}
|
|
132
|
-
html[data-ck-chrome="ambient"] [data-ck-navitem]:not([data-active="true"]) {
|
|
133
|
-
background: transparent !important;
|
|
134
|
-
}
|
|
135
|
-
html[data-ck-chrome="ambient"] [data-ck-navitem]:not([data-active="true"]):hover {
|
|
136
|
-
background: var(--ck-bg-surface) !important;
|
|
137
|
-
color: var(--ck-text-primary) !important;
|
|
138
|
-
}
|
|
139
|
-
html[data-ck-chrome="ambient"] [data-ck-navitem][data-active="true"] {
|
|
140
|
-
background: var(--ck-bg-surface) !important;
|
|
141
|
-
color: var(--ck-text-primary) !important;
|
|
142
|
-
font-weight: 600 !important;
|
|
143
|
-
}
|
|
144
|
-
/* The Superbar right-edge strip — signature accent. 3 px wide,
|
|
145
|
-
inset 6 px top/bottom so it doesn't kiss the border-radius. */
|
|
146
|
-
html[data-ck-chrome="ambient"] [data-ck-navitem][data-active="true"]::after {
|
|
147
|
-
content: "";
|
|
148
|
-
position: absolute;
|
|
149
|
-
right: 0;
|
|
150
|
-
top: 6px;
|
|
151
|
-
bottom: 6px;
|
|
152
|
-
width: 3px;
|
|
153
|
-
background: var(--ck-superbar);
|
|
154
|
-
border-radius: 2px;
|
|
155
|
-
pointer-events: none;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/* ===== Search trigger ====================================== */
|
|
159
|
-
|
|
160
|
-
html[data-ck-chrome="ambient"] [data-ck-search-trigger] {
|
|
161
|
-
background: var(--ck-bg-muted) !important;
|
|
162
|
-
border: 1px solid var(--ck-border-subtle) !important;
|
|
163
|
-
border-radius: 10px !important;
|
|
164
|
-
backdrop-filter: var(--ck-blur-window);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/* ===== Tags / badges — soft tinted pills ===================== */
|
|
168
|
-
|
|
169
|
-
html[data-ck-chrome="ambient"] [data-ck-tag] {
|
|
170
|
-
border-radius: 8px !important;
|
|
171
|
-
padding: 3px 10px !important;
|
|
172
|
-
font-weight: 600 !important;
|
|
173
|
-
border: 1px solid transparent !important;
|
|
174
|
-
box-shadow: none !important;
|
|
175
|
-
}
|
|
176
|
-
html[data-ck-chrome="ambient"] [data-ck-tag][data-tone="accent"] {
|
|
177
|
-
background: color-mix(in oklab, var(--ck-accent) 14%, transparent) !important;
|
|
178
|
-
color: var(--ck-accent) !important;
|
|
179
|
-
}
|
|
180
|
-
html[data-ck-chrome="ambient"] [data-ck-tag][data-tone="success"] {
|
|
181
|
-
background: color-mix(in oklab, var(--ck-success) 14%, transparent) !important;
|
|
182
|
-
color: var(--ck-success) !important;
|
|
183
|
-
}
|
|
184
|
-
html[data-ck-chrome="ambient"] [data-ck-tag][data-tone="warning"] {
|
|
185
|
-
background: color-mix(in oklab, var(--ck-warning) 14%, transparent) !important;
|
|
186
|
-
color: var(--ck-warning) !important;
|
|
187
|
-
}
|
|
188
|
-
html[data-ck-chrome="ambient"] [data-ck-tag][data-tone="critical"] {
|
|
189
|
-
background: color-mix(in oklab, var(--ck-critical) 14%, transparent) !important;
|
|
190
|
-
color: var(--ck-critical) !important;
|
|
191
|
-
}
|
|
192
|
-
html[data-ck-chrome="ambient"] [data-ck-tag][data-tone="neutral"] {
|
|
193
|
-
background: var(--ck-bg-muted) !important;
|
|
194
|
-
color: var(--ck-text-secondary) !important;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/* ===== Action bar — floating glass pill ===================== */
|
|
198
|
-
|
|
199
|
-
html[data-ck-chrome="ambient"] [data-ck-actionbar] {
|
|
200
|
-
background: var(--ck-bg-sidebar) !important;
|
|
201
|
-
backdrop-filter: var(--ck-blur-overlay);
|
|
202
|
-
-webkit-backdrop-filter: var(--ck-blur-overlay);
|
|
203
|
-
border: 1px solid var(--ck-border-subtle);
|
|
204
|
-
border-radius: 24px;
|
|
205
|
-
box-shadow: var(--ck-shadow-2);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/* ===== Modal — heavy backdrop blur ========================== */
|
|
209
|
-
|
|
210
|
-
html[data-ck-chrome="ambient"] [role="dialog"] > div:first-child {
|
|
211
|
-
background: rgba(0, 0, 0, 0.4) !important;
|
|
212
|
-
backdrop-filter: var(--ck-blur-overlay);
|
|
213
|
-
-webkit-backdrop-filter: var(--ck-blur-overlay);
|
|
214
|
-
}
|
|
215
|
-
html[data-ck-chrome="ambient"] [role="dialog"] > div > div {
|
|
216
|
-
border-radius: 20px;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/* ===== Reduced motion ====================================== */
|
|
220
|
-
|
|
221
|
-
@media (prefers-reduced-motion: reduce) {
|
|
222
|
-
html[data-ck-chrome="ambient"] * {
|
|
223
|
-
transition: none !important;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
html[data-ck-chrome="ambient"] .ck-actionbar-panel,
|
|
228
|
-
html[data-ck-chrome="ambient"] .ck-actionbar-toast {
|
|
229
|
-
background: var(--ck-bg-sidebar);
|
|
230
|
-
backdrop-filter: var(--ck-blur-overlay);
|
|
231
|
-
-webkit-backdrop-filter: var(--ck-blur-overlay);
|
|
232
|
-
border: 1px solid var(--ck-border-subtle);
|
|
233
|
-
border-radius: 20px;
|
|
234
|
-
box-shadow: var(--ck-shadow-2);
|
|
235
|
-
}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/* Bento chrome — component overrides.
|
|
2
|
-
Tokens.css supplies the neutral palette + generous radii + soft
|
|
3
|
-
multi-layer shadows. This file polishes existing primitives to
|
|
4
|
-
match: Apple-style large radius cards, soft pill buttons, no
|
|
5
|
-
chunky borders, hover-lift on cells. The layout primitives
|
|
6
|
-
(<BentoGrid> + <BentoCell>) do the heavy lifting elsewhere. */
|
|
7
|
-
|
|
8
|
-
html[data-ck-chrome="bento"] body {
|
|
9
|
-
font-weight: 400;
|
|
10
|
-
font-feature-settings: "ss01", "cv11";
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
html[data-ck-chrome="bento"] h1,
|
|
14
|
-
html[data-ck-chrome="bento"] .ck-h1 {
|
|
15
|
-
font-weight: 600;
|
|
16
|
-
letter-spacing: -0.025em;
|
|
17
|
-
line-height: 1.05;
|
|
18
|
-
}
|
|
19
|
-
html[data-ck-chrome="bento"] h2,
|
|
20
|
-
html[data-ck-chrome="bento"] .ck-h2 {
|
|
21
|
-
font-weight: 600;
|
|
22
|
-
letter-spacing: -0.015em;
|
|
23
|
-
}
|
|
24
|
-
html[data-ck-chrome="bento"] h3,
|
|
25
|
-
html[data-ck-chrome="bento"] .ck-h3 {
|
|
26
|
-
font-weight: 600;
|
|
27
|
-
letter-spacing: -0.005em;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/* Buttons */
|
|
31
|
-
html[data-ck-chrome="bento"] .ck-btn,
|
|
32
|
-
html[data-ck-chrome="bento"] .ck-actionbar-btn {
|
|
33
|
-
border-radius: 12px;
|
|
34
|
-
font-weight: 500;
|
|
35
|
-
letter-spacing: -0.005em;
|
|
36
|
-
text-transform: none;
|
|
37
|
-
box-shadow: var(--ck-shadow-1);
|
|
38
|
-
transition: background 160ms ease, transform 160ms ease;
|
|
39
|
-
}
|
|
40
|
-
html[data-ck-chrome="bento"] .ck-btn--primary {
|
|
41
|
-
background: var(--ck-text-primary);
|
|
42
|
-
color: var(--ck-bg-canvas);
|
|
43
|
-
border: none;
|
|
44
|
-
}
|
|
45
|
-
html[data-ck-chrome="bento"] .ck-btn--primary:hover:not(:disabled) {
|
|
46
|
-
background: color-mix(in oklab, var(--ck-text-primary), white 12%);
|
|
47
|
-
}
|
|
48
|
-
html[data-ck-chrome="bento"] .ck-btn--secondary {
|
|
49
|
-
background: var(--ck-bg-surface);
|
|
50
|
-
color: var(--ck-text-primary);
|
|
51
|
-
border: 1px solid var(--ck-border-subtle);
|
|
52
|
-
}
|
|
53
|
-
html[data-ck-chrome="bento"] .ck-btn--ghost {
|
|
54
|
-
background: transparent;
|
|
55
|
-
border: none;
|
|
56
|
-
box-shadow: none;
|
|
57
|
-
}
|
|
58
|
-
html[data-ck-chrome="bento"] .ck-btn--ghost:hover:not(:disabled) {
|
|
59
|
-
background: var(--ck-bg-muted);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/* Inputs */
|
|
63
|
-
html[data-ck-chrome="bento"] .ck-input,
|
|
64
|
-
html[data-ck-chrome="bento"] .ck-textarea {
|
|
65
|
-
background: var(--ck-bg-surface);
|
|
66
|
-
border: 1px solid var(--ck-border-subtle);
|
|
67
|
-
border-radius: 12px;
|
|
68
|
-
}
|
|
69
|
-
html[data-ck-chrome="bento"] .ck-input:focus-visible,
|
|
70
|
-
html[data-ck-chrome="bento"] .ck-textarea:focus-visible {
|
|
71
|
-
outline: none;
|
|
72
|
-
border-color: var(--ck-accent) !important;
|
|
73
|
-
box-shadow: 0 0 0 3px var(--ck-accent-muted) !important;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/* Cards — bento baseline */
|
|
77
|
-
html[data-ck-chrome="bento"] .ck-card {
|
|
78
|
-
background: var(--ck-bg-surface);
|
|
79
|
-
border: 1px solid var(--ck-border-subtle);
|
|
80
|
-
border-radius: 22px;
|
|
81
|
-
box-shadow: var(--ck-shadow-2);
|
|
82
|
-
}
|
|
83
|
-
html[data-ck-chrome="bento"] .ck-card__head {
|
|
84
|
-
border-bottom: 1px solid var(--ck-border-subtle);
|
|
85
|
-
padding: 18px 24px;
|
|
86
|
-
}
|
|
87
|
-
html[data-ck-chrome="bento"] .ck-card__body {
|
|
88
|
-
padding: 24px;
|
|
89
|
-
}
|
|
90
|
-
html[data-ck-chrome="bento"] .ck-card__foot {
|
|
91
|
-
border-top: 1px solid var(--ck-border-subtle);
|
|
92
|
-
background: transparent;
|
|
93
|
-
padding: 16px 24px;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/* Tags — soft tinted pills */
|
|
97
|
-
html[data-ck-chrome="bento"] [data-ck-tag] {
|
|
98
|
-
background: var(--ck-bg-muted) !important;
|
|
99
|
-
border-radius: 999px !important;
|
|
100
|
-
padding: 4px 10px !important;
|
|
101
|
-
font-weight: 500 !important;
|
|
102
|
-
letter-spacing: 0 !important;
|
|
103
|
-
text-transform: none !important;
|
|
104
|
-
box-shadow: none !important;
|
|
105
|
-
border: none !important;
|
|
106
|
-
font-size: 12px !important;
|
|
107
|
-
}
|
|
108
|
-
html[data-ck-chrome="bento"] [data-ck-tag][data-tone="accent"] {
|
|
109
|
-
background: var(--ck-accent-muted) !important;
|
|
110
|
-
color: var(--ck-accent) !important;
|
|
111
|
-
}
|
|
112
|
-
html[data-ck-chrome="bento"] [data-ck-tag][data-tone="success"] {
|
|
113
|
-
background: color-mix(in oklab, var(--ck-success) 12%, transparent) !important;
|
|
114
|
-
color: var(--ck-success) !important;
|
|
115
|
-
}
|
|
116
|
-
html[data-ck-chrome="bento"] [data-ck-tag][data-tone="warning"] {
|
|
117
|
-
background: color-mix(in oklab, var(--ck-warning) 14%, transparent) !important;
|
|
118
|
-
color: var(--ck-warning) !important;
|
|
119
|
-
}
|
|
120
|
-
html[data-ck-chrome="bento"] [data-ck-tag][data-tone="critical"] {
|
|
121
|
-
background: color-mix(in oklab, var(--ck-critical) 12%, transparent) !important;
|
|
122
|
-
color: var(--ck-critical) !important;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/* Layout chrome */
|
|
126
|
-
html[data-ck-chrome="bento"] [data-ck-leftnav] {
|
|
127
|
-
background: var(--ck-bg-sidebar) !important;
|
|
128
|
-
border-right: 1px solid var(--ck-border-subtle);
|
|
129
|
-
}
|
|
130
|
-
html[data-ck-chrome="bento"] [data-ck-topbar] {
|
|
131
|
-
background: var(--ck-bg-canvas) !important;
|
|
132
|
-
border-bottom: 1px solid var(--ck-border-subtle);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/* NavItem — soft pill */
|
|
136
|
-
html[data-ck-chrome="bento"] [data-ck-navitem] {
|
|
137
|
-
background: transparent !important;
|
|
138
|
-
border-radius: 10px !important;
|
|
139
|
-
font-weight: 500 !important;
|
|
140
|
-
}
|
|
141
|
-
html[data-ck-chrome="bento"] [data-ck-navitem]:not([data-active="true"]):hover {
|
|
142
|
-
background: var(--ck-bg-muted) !important;
|
|
143
|
-
}
|
|
144
|
-
html[data-ck-chrome="bento"] [data-ck-navitem][data-active="true"] {
|
|
145
|
-
background: var(--ck-bg-muted) !important;
|
|
146
|
-
color: var(--ck-text-primary) !important;
|
|
147
|
-
font-weight: 600 !important;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* Search trigger */
|
|
151
|
-
html[data-ck-chrome="bento"] [data-ck-search-trigger] {
|
|
152
|
-
background: var(--ck-bg-surface) !important;
|
|
153
|
-
border: 1px solid var(--ck-border-subtle) !important;
|
|
154
|
-
border-radius: 12px !important;
|
|
155
|
-
box-shadow: var(--ck-shadow-1);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/* Action bar */
|
|
159
|
-
html[data-ck-chrome="bento"] [data-ck-actionbar] {
|
|
160
|
-
background: var(--ck-bg-surface) !important;
|
|
161
|
-
border: 1px solid var(--ck-border-subtle);
|
|
162
|
-
border-radius: 16px;
|
|
163
|
-
box-shadow: var(--ck-shadow-2);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/* Modal */
|
|
167
|
-
html[data-ck-chrome="bento"] [role="dialog"] > div:first-child {
|
|
168
|
-
background: rgba(0, 0, 0, 0.4);
|
|
169
|
-
backdrop-filter: blur(8px);
|
|
170
|
-
}
|
|
171
|
-
html[data-ck-chrome="bento"] [role="dialog"] > div > div {
|
|
172
|
-
border-radius: 22px;
|
|
173
|
-
box-shadow: var(--ck-shadow-3);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/* BentoCell — hover lift signature */
|
|
177
|
-
html[data-ck-chrome="bento"] [data-ck-bento-cell] {
|
|
178
|
-
transition: transform 240ms cubic-bezier(0.2, 0, 0, 1),
|
|
179
|
-
box-shadow 240ms cubic-bezier(0.2, 0, 0, 1);
|
|
180
|
-
}
|
|
181
|
-
html[data-ck-chrome="bento"] [data-ck-bento-cell][data-interactive="true"]:hover {
|
|
182
|
-
transform: translateY(-3px);
|
|
183
|
-
box-shadow: var(--ck-shadow-3);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
html[data-ck-chrome="bento"] .ck-actionbar-panel,
|
|
187
|
-
html[data-ck-chrome="bento"] .ck-actionbar-toast {
|
|
188
|
-
background: var(--ck-bg-surface);
|
|
189
|
-
border: 1px solid var(--ck-border-subtle);
|
|
190
|
-
border-radius: 16px;
|
|
191
|
-
box-shadow: var(--ck-shadow-2);
|
|
192
|
-
}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/* Editorial chrome — component overrides.
|
|
2
|
-
Token overrides live in tokens.css; this file restyles the
|
|
3
|
-
primitives' shape / feel to match the print-magazine brief.
|
|
4
|
-
Loads alongside index.css; takes effect only when
|
|
5
|
-
html[data-ck-chrome="editorial"] is set on the root. */
|
|
6
|
-
|
|
7
|
-
html[data-ck-chrome="editorial"] body {
|
|
8
|
-
/* Optical kerning + ligatures for the editorial body type. */
|
|
9
|
-
font-feature-settings: "kern", "liga", "ss01";
|
|
10
|
-
-webkit-font-smoothing: antialiased;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/* Buttons — fully rounded pills, no shadow ever. Primary is
|
|
14
|
-
coral fill with near-black text (the brief specifies dark text
|
|
15
|
-
on coral, not white). */
|
|
16
|
-
html[data-ck-chrome="editorial"] .ck-btn,
|
|
17
|
-
html[data-ck-chrome="editorial"] .ck-actionbar-btn {
|
|
18
|
-
height: 36px;
|
|
19
|
-
padding: 0 18px;
|
|
20
|
-
border-radius: 9999px;
|
|
21
|
-
font-family: var(--ck-font-sans);
|
|
22
|
-
font-size: 12px;
|
|
23
|
-
font-weight: 500;
|
|
24
|
-
letter-spacing: 0.04em;
|
|
25
|
-
text-transform: uppercase;
|
|
26
|
-
box-shadow: none !important;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
html[data-ck-chrome="editorial"] .ck-btn--primary,
|
|
30
|
-
html[data-ck-chrome="editorial"] .ck-actionbar-btn--primary {
|
|
31
|
-
background: var(--ck-accent);
|
|
32
|
-
/* Defaults to near-black to pair with coral; consumer apps may
|
|
33
|
-
stamp --ck-accent-fg to a different colour when overriding
|
|
34
|
-
--ck-accent-light-override (e.g. dark brand → white text). */
|
|
35
|
-
color: var(--ck-accent-fg, #0F0F0F);
|
|
36
|
-
}
|
|
37
|
-
html[data-ck-chrome="editorial"] .ck-btn--primary:hover,
|
|
38
|
-
html[data-ck-chrome="editorial"] .ck-actionbar-btn--primary:hover {
|
|
39
|
-
background: var(--ck-accent-hover);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
html[data-ck-chrome="editorial"] .ck-btn--secondary {
|
|
43
|
-
background: transparent;
|
|
44
|
-
border: 1px solid var(--ck-text-primary);
|
|
45
|
-
color: var(--ck-text-primary);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* Cards — 1 px hairline, no shadow, slightly tighter radius.
|
|
49
|
-
Index-card feel, not glassmorphism. */
|
|
50
|
-
html[data-ck-chrome="editorial"] .ck-card {
|
|
51
|
-
background: var(--ck-bg-surface);
|
|
52
|
-
border: 1px solid var(--ck-border-subtle);
|
|
53
|
-
border-radius: 16px;
|
|
54
|
-
box-shadow: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/* Eyebrow / tag — editorial uses a longer track + leading
|
|
58
|
-
em-dash. Reads as a magazine section label. */
|
|
59
|
-
html[data-ck-chrome="editorial"] .ck-eyebrow,
|
|
60
|
-
html[data-ck-chrome="editorial"] .ck-tag {
|
|
61
|
-
letter-spacing: 0.18em;
|
|
62
|
-
font-family: var(--ck-font-sans);
|
|
63
|
-
color: var(--ck-text-secondary);
|
|
64
|
-
}
|
|
65
|
-
html[data-ck-chrome="editorial"] .ck-eyebrow::before {
|
|
66
|
-
content: "— ";
|
|
67
|
-
color: var(--ck-text-tertiary);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* Headings switch to serif via --ck-font-display. ck-h1/h2/h3
|
|
71
|
-
already read from --ck-font-sans by default; under editorial
|
|
72
|
-
we override at this scope so the typography stack rotates
|
|
73
|
-
without touching component code. */
|
|
74
|
-
html[data-ck-chrome="editorial"] h1,
|
|
75
|
-
html[data-ck-chrome="editorial"] h2,
|
|
76
|
-
html[data-ck-chrome="editorial"] h3,
|
|
77
|
-
html[data-ck-chrome="editorial"] .ck-h1,
|
|
78
|
-
html[data-ck-chrome="editorial"] .ck-h2,
|
|
79
|
-
html[data-ck-chrome="editorial"] .ck-h3 {
|
|
80
|
-
font-family: var(--ck-font-display);
|
|
81
|
-
letter-spacing: -0.012em;
|
|
82
|
-
line-height: 1.08;
|
|
83
|
-
font-weight: 500;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/* Italic-in-the-middle treatment for the docs h1. Wrapping
|
|
87
|
-
the italicised word in <em> is enough — the serif's italic
|
|
88
|
-
variant carries the editorial signature move. */
|
|
89
|
-
html[data-ck-chrome="editorial"] h1 em,
|
|
90
|
-
html[data-ck-chrome="editorial"] h2 em,
|
|
91
|
-
html[data-ck-chrome="editorial"] .ck-h1 em,
|
|
92
|
-
html[data-ck-chrome="editorial"] .ck-h2 em {
|
|
93
|
-
font-style: italic;
|
|
94
|
-
color: var(--ck-text-primary);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/* Inputs — paper feel, no inner shadow, ink-coloured borders. */
|
|
98
|
-
html[data-ck-chrome="editorial"] .ck-input,
|
|
99
|
-
html[data-ck-chrome="editorial"] .ck-textarea {
|
|
100
|
-
background: var(--ck-bg-surface);
|
|
101
|
-
border-color: var(--ck-border-subtle);
|
|
102
|
-
font-family: var(--ck-font-sans);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/* Action bar — keep the pill profile but drop the shadow. The
|
|
106
|
-
bar is just a hairline-bounded paper strip floating on cream. */
|
|
107
|
-
html[data-ck-chrome="editorial"] [data-ck-actionbar] {
|
|
108
|
-
background: var(--ck-bg-surface);
|
|
109
|
-
border-color: var(--ck-border-subtle);
|
|
110
|
-
box-shadow: none;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/* Left rail — same cream paper, hairline divider. */
|
|
114
|
-
html[data-ck-chrome="editorial"] [data-ck-leftnav] {
|
|
115
|
-
background: var(--ck-bg-canvas);
|
|
116
|
-
border-right-color: var(--ck-border-subtle);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* Nav-item hover — match the actionbar / button hover token so
|
|
120
|
-
every interactive surface in the editorial chrome reads as
|
|
121
|
-
actionable on pointer enter. The sketch / ambient / riso / etc.
|
|
122
|
-
chromes have always carried this rule; editorial was the only
|
|
123
|
-
gap (consumers saw rail items as static even though they're
|
|
124
|
-
navigable). Active rows keep their accent-muted background from
|
|
125
|
-
the base NavItem inline style, so the `:not([data-active="true"])`
|
|
126
|
-
guard is the same shape the other chromes use. */
|
|
127
|
-
html[data-ck-chrome="editorial"] [data-ck-navitem]:not([data-active="true"]):hover {
|
|
128
|
-
background: var(--ck-bg-muted);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/* Topbar — flatten to the paper, lose the bottom border (the
|
|
132
|
-
folio rule under it is the visual divider in editorial). */
|
|
133
|
-
html[data-ck-chrome="editorial"] [data-ck-topbar] {
|
|
134
|
-
background: var(--ck-bg-canvas);
|
|
135
|
-
border-bottom: none;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/* Modal backdrop — printerly, not glassy. Cream-tinted
|
|
139
|
-
translucent overlay instead of blue-tinted blur. */
|
|
140
|
-
html[data-ck-chrome="editorial"] [role="dialog"] > div:first-child {
|
|
141
|
-
background: rgba(15, 15, 15, 0.4);
|
|
142
|
-
backdrop-filter: none;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/* <EditorialSpotlight>: dark canvas with cream cards floating on
|
|
146
|
-
top. The wrapper sets --ck-text-primary to cream so paragraphs
|
|
147
|
-
on the dark surround read correctly — but cards inside it stay
|
|
148
|
-
cream paper, so their text needs to flip BACK to dark ink. Rebind
|
|
149
|
-
the text variables on the .ck-card scope and everything nested
|
|
150
|
-
inside (h1/h2, body copy, eyebrows, captions) reads dark again. */
|
|
151
|
-
[data-ck-spotlight] .ck-card {
|
|
152
|
-
--ck-text-primary: #0F0F0F;
|
|
153
|
-
--ck-text-secondary: #6B6557;
|
|
154
|
-
--ck-text-tertiary: #A8A294;
|
|
155
|
-
color: #0F0F0F;
|
|
156
|
-
}
|
|
157
|
-
[data-ck-spotlight] .ck-card .ck-eyebrow,
|
|
158
|
-
[data-ck-spotlight] .ck-card .ck-tag {
|
|
159
|
-
color: var(--ck-text-secondary);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/* ActionBar panel/toast — flat paper, hairline, no drop glow. */
|
|
163
|
-
html[data-ck-chrome="editorial"] .ck-actionbar-panel,
|
|
164
|
-
html[data-ck-chrome="editorial"] .ck-actionbar-toast {
|
|
165
|
-
background: var(--ck-bg-surface);
|
|
166
|
-
border-color: var(--ck-border-subtle);
|
|
167
|
-
box-shadow: var(--ck-shadow-1, 0 2px 8px rgba(0, 0, 0, 0.06));
|
|
168
|
-
}
|