@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.
Files changed (165) hide show
  1. package/CHANGELOG.md +597 -0
  2. package/NOTICE +11 -0
  3. package/README.md +52 -0
  4. package/package.json +57 -7
  5. package/src/brand.css +13 -0
  6. package/src/components/Badge.tsx +68 -0
  7. package/src/components/Button.tsx +178 -0
  8. package/src/components/Card.tsx +42 -0
  9. package/src/components/Checkbox.tsx +67 -0
  10. package/src/components/Dialog.tsx +111 -0
  11. package/src/components/Field.tsx +66 -0
  12. package/src/components/Figure.tsx +30 -0
  13. package/src/components/Icon.tsx +32 -0
  14. package/src/components/IconButton.tsx +55 -0
  15. package/src/components/Input.tsx +74 -0
  16. package/src/components/Logo.tsx +62 -0
  17. package/src/components/Marker.tsx +26 -0
  18. package/src/components/MetaLabel.tsx +38 -0
  19. package/src/components/Radio.tsx +72 -0
  20. package/src/components/Select.tsx +351 -0
  21. package/src/components/Spinner.tsx +20 -0
  22. package/src/components/Switch.tsx +67 -0
  23. package/src/components/Table.tsx +196 -0
  24. package/src/components/Tabs.tsx +124 -0
  25. package/src/components/Tag.tsx +35 -0
  26. package/src/components/Textarea.tsx +46 -0
  27. package/src/components/ThemeProvider.tsx +80 -0
  28. package/src/components/Toast.tsx +159 -0
  29. package/src/components/Tooltip.tsx +57 -0
  30. package/src/components/core.test.tsx +242 -0
  31. package/src/components/forms-control.ts +36 -0
  32. package/src/components/forms.test.tsx +280 -0
  33. package/src/components/logo-art.ts +4 -0
  34. package/src/components/overlays.test.tsx +245 -0
  35. package/src/components/useButtonAction.ts +57 -0
  36. package/src/fonts.css +20 -0
  37. package/src/index.ts +34 -24
  38. package/src/lib/cn.ts +23 -6
  39. package/src/modes.css +10 -0
  40. package/src/styles.css +19 -0
  41. package/src/theme.css +143 -0
  42. package/src/tokens/colors.css +112 -0
  43. package/src/tokens/compat.css +36 -0
  44. package/src/tokens/elevation.css +14 -0
  45. package/src/tokens/motion.css +42 -0
  46. package/src/tokens/spacing.css +55 -0
  47. package/src/tokens/typography-cjk.css +42 -0
  48. package/src/tokens/typography.css +81 -0
  49. package/src/actionbar/ActionBar.tsx +0 -837
  50. package/src/actionbar/ActionBarButton.tsx +0 -111
  51. package/src/actionbar/ActionBarMenuGroup.tsx +0 -116
  52. package/src/actionbar/ActionBarModeHandle.tsx +0 -171
  53. package/src/actionbar/ActionBarProvider.tsx +0 -91
  54. package/src/actionbar/actionbar-context.ts +0 -45
  55. package/src/actionbar/index.ts +0 -28
  56. package/src/actionbar/types.ts +0 -147
  57. package/src/actionbar/useActionBarItems.ts +0 -60
  58. package/src/actionbar/useActionBarMode.ts +0 -144
  59. package/src/actionbar/useActionBarPanel.ts +0 -56
  60. package/src/actionbar/useActionBarStatusDot.ts +0 -49
  61. package/src/actionbar/useActionBarToast.ts +0 -33
  62. package/src/ambient/AmbientBackdrop.tsx +0 -74
  63. package/src/ambient/CommandInput.tsx +0 -107
  64. package/src/ambient/SuperbarStrip.tsx +0 -36
  65. package/src/ambient/index.ts +0 -6
  66. package/src/bento/BentoCell.tsx +0 -66
  67. package/src/bento/BentoGrid.tsx +0 -42
  68. package/src/bento/index.ts +0 -2
  69. package/src/command/CommandPalette.tsx +0 -329
  70. package/src/command/CommandProvider.tsx +0 -57
  71. package/src/command/command-context.ts +0 -12
  72. package/src/command/index.ts +0 -6
  73. package/src/command/rank.ts +0 -50
  74. package/src/command/types.ts +0 -37
  75. package/src/command/useCommandSource.ts +0 -37
  76. package/src/dialogs/DialogsProvider.tsx +0 -216
  77. package/src/dialogs/Modal.tsx +0 -260
  78. package/src/dialogs/Toast.tsx +0 -85
  79. package/src/dialogs/dialogs-context.ts +0 -6
  80. package/src/dialogs/index.ts +0 -10
  81. package/src/dialogs/types.ts +0 -37
  82. package/src/dialogs/useDialogs.ts +0 -8
  83. package/src/editorial/EditorialSpotlight.tsx +0 -63
  84. package/src/editorial/Folio.tsx +0 -52
  85. package/src/editorial/PlateMarker.tsx +0 -33
  86. package/src/editorial/RomanSection.tsx +0 -65
  87. package/src/editorial/RunningMarginalia.tsx +0 -65
  88. package/src/editorial/index.ts +0 -10
  89. package/src/hooks/index.ts +0 -5
  90. package/src/hooks/useKeyboardHotkey.ts +0 -93
  91. package/src/hooks/useReducedMotion.ts +0 -20
  92. package/src/hooks/useViewport.ts +0 -61
  93. package/src/layout/Breadcrumb.tsx +0 -74
  94. package/src/layout/LeftNavRail.tsx +0 -139
  95. package/src/layout/MobileTabBar.tsx +0 -101
  96. package/src/layout/NavItem.tsx +0 -128
  97. package/src/layout/NavSearchTrigger.tsx +0 -88
  98. package/src/layout/NavSection.tsx +0 -40
  99. package/src/layout/RightSidebarPanel.tsx +0 -111
  100. package/src/layout/Shell.tsx +0 -91
  101. package/src/layout/SidePanel.tsx +0 -316
  102. package/src/layout/StickyBanner.tsx +0 -83
  103. package/src/layout/Topbar.tsx +0 -68
  104. package/src/layout/index.ts +0 -24
  105. package/src/layout/useNavRailState.ts +0 -69
  106. package/src/lib/time-utils.ts +0 -44
  107. package/src/neobrutalism/Marquee.tsx +0 -81
  108. package/src/neobrutalism/Sticker.tsx +0 -71
  109. package/src/neobrutalism/index.ts +0 -4
  110. package/src/primitives/Avatar.tsx +0 -53
  111. package/src/primitives/Button.tsx +0 -67
  112. package/src/primitives/Card.tsx +0 -41
  113. package/src/primitives/Checkbox.tsx +0 -87
  114. package/src/primitives/Chip.tsx +0 -191
  115. package/src/primitives/Combobox.tsx +0 -507
  116. package/src/primitives/CopyField.tsx +0 -139
  117. package/src/primitives/CountBadge.tsx +0 -50
  118. package/src/primitives/Input.tsx +0 -204
  119. package/src/primitives/Kbd.tsx +0 -45
  120. package/src/primitives/MentionCombobox.tsx +0 -612
  121. package/src/primitives/MultiCombobox.tsx +0 -327
  122. package/src/primitives/PageHeader.tsx +0 -77
  123. package/src/primitives/Radio.tsx +0 -131
  124. package/src/primitives/SegmentedControl.tsx +0 -135
  125. package/src/primitives/Select.tsx +0 -779
  126. package/src/primitives/SignaturePad.tsx +0 -461
  127. package/src/primitives/Tag.tsx +0 -56
  128. package/src/primitives/Textarea.tsx +0 -62
  129. package/src/primitives/ToggleSwitch.tsx +0 -79
  130. package/src/primitives/Tooltip.tsx +0 -213
  131. package/src/primitives/index.ts +0 -53
  132. package/src/pwa/InstallPromptBanner.tsx +0 -132
  133. package/src/pwa/index.ts +0 -4
  134. package/src/pwa/manifest.template.json +0 -20
  135. package/src/pwa/registerSW.ts +0 -55
  136. package/src/riso/Halftone.tsx +0 -85
  137. package/src/riso/Misregister.tsx +0 -63
  138. package/src/riso/RisoStamp.tsx +0 -76
  139. package/src/riso/index.ts +0 -3
  140. package/src/sketch/HandUnderline.tsx +0 -53
  141. package/src/sketch/RoughArrow.tsx +0 -91
  142. package/src/sketch/RoughBox.tsx +0 -73
  143. package/src/sketch/StickyNote.tsx +0 -56
  144. package/src/sketch/index.ts +0 -4
  145. package/src/styles/base.css +0 -186
  146. package/src/styles/chrome-ambient.css +0 -235
  147. package/src/styles/chrome-bento.css +0 -192
  148. package/src/styles/chrome-editorial.css +0 -168
  149. package/src/styles/chrome-neobrutalism.css +0 -326
  150. package/src/styles/chrome-riso.css +0 -339
  151. package/src/styles/chrome-sketch.css +0 -362
  152. package/src/styles/chrome-swiss.css +0 -265
  153. package/src/styles/chrome-terminal.css +0 -272
  154. package/src/styles/fonts.css +0 -1034
  155. package/src/styles/index.css +0 -343
  156. package/src/styles/tokens.css +0 -941
  157. package/src/terminal/AsciiBox.tsx +0 -65
  158. package/src/terminal/BrailleSpinner.tsx +0 -46
  159. package/src/terminal/index.ts +0 -4
  160. package/src/theme/ThemeProvider.tsx +0 -99
  161. package/src/theme/index.ts +0 -6
  162. package/src/theme/inline-script.ts +0 -40
  163. package/src/theme/theme-context.ts +0 -7
  164. package/src/theme/types.ts +0 -39
  165. package/src/theme/useTheme.ts +0 -8
@@ -1,362 +0,0 @@
1
- /* Hand-drawn / Sketchy chrome — Excalidraw / tldraw / Whimsical
2
- pen-on-paper aesthetic. Implementation strategy is "rough.js by
3
- CSS":
4
- - Asymmetric border-radius gives corners natural variance
5
- - Offset second box-shadow gives the "drawn twice" line feel
6
- - filter: var(--ck-sketch-wobble) applies SVG turbulence to
7
- drawn surfaces (Chrome / Safari; Firefox falls back gracefully)
8
- - Hatch-fill backgrounds use repeating-linear-gradient for
9
- emphasized buttons / tags
10
- - Each .ck-* primitive gets a tiny pre-set tilt via :nth-child
11
- selectors so cards don't all stand perfectly upright
12
-
13
- Body uses handwriting-leaning fonts. Headings push fully to
14
- handwritten display via the Caveat / Patrick Hand stack. */
15
-
16
- html[data-ck-chrome="sketch"] body {
17
- font-family: var(--ck-font-sketch-body, "Comic Neue", "Comic Sans MS", system-ui, sans-serif);
18
- font-weight: 400;
19
- line-height: 1.55;
20
- background-image:
21
- radial-gradient(circle, rgba(26, 26, 26, 0.06) 1px, transparent 1.4px);
22
- background-size: 22px 22px;
23
- background-attachment: fixed;
24
- }
25
- html[data-ck-theme="dark"][data-ck-chrome="sketch"] body {
26
- background-image:
27
- radial-gradient(circle, rgba(240, 240, 232, 0.08) 1px, transparent 1.4px);
28
- }
29
-
30
- /* Headings — handwritten font, slight negative letter-spacing */
31
- html[data-ck-chrome="sketch"] h1,
32
- html[data-ck-chrome="sketch"] .ck-h1 {
33
- font-family: var(--ck-font-sketch-display);
34
- font-weight: 700;
35
- line-height: 1.08;
36
- letter-spacing: -0.01em;
37
- transform: rotate(-0.6deg);
38
- transform-origin: left;
39
- }
40
- html[data-ck-chrome="sketch"] h2,
41
- html[data-ck-chrome="sketch"] .ck-h2 {
42
- font-family: var(--ck-font-sketch-display);
43
- font-weight: 700;
44
- line-height: 1.1;
45
- transform: rotate(-0.3deg);
46
- transform-origin: left;
47
- }
48
- html[data-ck-chrome="sketch"] h3,
49
- html[data-ck-chrome="sketch"] .ck-h3 {
50
- font-family: var(--ck-font-sketch-display);
51
- font-weight: 600;
52
- }
53
-
54
- /* ---------- Buttons — drawn rectangles ---------- */
55
- html[data-ck-chrome="sketch"] .ck-btn,
56
- html[data-ck-chrome="sketch"] .ck-actionbar-btn {
57
- border-radius: 7px 9px 8px 10px / 9px 7px 10px 8px;
58
- font-family: var(--ck-font-sketch-display);
59
- font-size: 17px;
60
- font-weight: 600;
61
- letter-spacing: 0;
62
- text-transform: none;
63
- height: 40px;
64
- padding: 0 18px;
65
- border: 2px solid var(--ck-text-primary);
66
- background: var(--ck-bg-surface);
67
- color: var(--ck-text-primary);
68
- box-shadow: 2px 3px 0 var(--ck-text-primary);
69
- transition: transform 120ms ease, box-shadow 120ms ease, background 120ms ease;
70
- }
71
- html[data-ck-chrome="sketch"] .ck-btn:hover:not(:disabled),
72
- html[data-ck-chrome="sketch"] .ck-actionbar-btn:hover:not(:disabled) {
73
- background: var(--ck-bg-muted);
74
- transform: translate(0px, 1px) rotate(-0.4deg);
75
- }
76
- html[data-ck-chrome="sketch"] .ck-btn:active:not(:disabled),
77
- html[data-ck-chrome="sketch"] .ck-actionbar-btn:active:not(:disabled) {
78
- transform: translate(1px, 2px) rotate(0.6deg);
79
- box-shadow: 0 1px 0 var(--ck-text-primary);
80
- }
81
-
82
- html[data-ck-chrome="sketch"] .ck-btn--primary,
83
- html[data-ck-chrome="sketch"] .ck-actionbar-btn--primary {
84
- background: var(--ck-accent);
85
- /* Defaults to paper-white to pair with sketch's blue ink accent;
86
- consumer apps may stamp --ck-accent-fg when overriding
87
- --ck-accent-light-override. */
88
- color: var(--ck-accent-fg, #FFFEF9);
89
- box-shadow: 2px 3px 0 var(--ck-text-primary);
90
- }
91
- html[data-ck-chrome="sketch"] .ck-btn--primary:hover:not(:disabled) {
92
- background: var(--ck-accent-hover);
93
- }
94
-
95
- html[data-ck-chrome="sketch"] .ck-btn--ghost {
96
- background: transparent;
97
- border-color: transparent;
98
- box-shadow: none;
99
- text-decoration: underline;
100
- text-decoration-style: wavy;
101
- text-decoration-thickness: 1.5px;
102
- text-underline-offset: 5px;
103
- text-decoration-color: var(--ck-text-primary);
104
- }
105
- html[data-ck-chrome="sketch"] .ck-btn--ghost:hover:not(:disabled) {
106
- background: transparent;
107
- transform: rotate(-0.4deg);
108
- color: var(--ck-accent);
109
- text-decoration-color: var(--ck-accent);
110
- }
111
-
112
- /* ---------- Inputs — wavy underline ---------- */
113
- html[data-ck-chrome="sketch"] .ck-input,
114
- html[data-ck-chrome="sketch"] .ck-textarea {
115
- background: transparent;
116
- border: none;
117
- border-bottom: 2px solid var(--ck-text-primary);
118
- border-radius: 0;
119
- padding-left: 2px;
120
- padding-right: 2px;
121
- box-shadow: none;
122
- font-family: var(--ck-font-sketch-display);
123
- font-size: 17px;
124
- color: var(--ck-text-primary);
125
- }
126
- html[data-ck-chrome="sketch"] .ck-input::placeholder,
127
- html[data-ck-chrome="sketch"] .ck-textarea::placeholder {
128
- color: var(--ck-text-tertiary);
129
- font-style: italic;
130
- }
131
- html[data-ck-chrome="sketch"] .ck-input:focus-visible,
132
- html[data-ck-chrome="sketch"] .ck-textarea:focus-visible {
133
- outline: none;
134
- border-bottom-color: var(--ck-accent) !important;
135
- border-bottom-width: 3px;
136
- box-shadow: none !important;
137
- }
138
-
139
- /* ---------- Cards — drawn rectangles with second-stroke shadow */
140
- html[data-ck-chrome="sketch"] .ck-card {
141
- background: var(--ck-bg-surface);
142
- border: 2px solid var(--ck-text-primary);
143
- border-radius: 10px 14px 12px 16px / 14px 10px 16px 12px;
144
- box-shadow: 3px 4px 0 var(--ck-text-primary);
145
- overflow: visible;
146
- }
147
- html[data-ck-chrome="sketch"] .ck-card__head {
148
- background: transparent;
149
- border-bottom: none;
150
- padding: 16px 20px 8px;
151
- font-family: var(--ck-font-sketch-display);
152
- font-weight: 600;
153
- font-size: 18px;
154
- position: relative;
155
- }
156
- /* Hand-drawn underline beneath card head — single wobbly stroke */
157
- html[data-ck-chrome="sketch"] .ck-card__head::after {
158
- content: "";
159
- position: absolute;
160
- left: 20px;
161
- right: 20px;
162
- bottom: 4px;
163
- height: 2px;
164
- background: var(--ck-text-primary);
165
- border-radius: 2px;
166
- filter: var(--ck-sketch-wobble);
167
- opacity: 0.65;
168
- }
169
- html[data-ck-chrome="sketch"] .ck-card__foot {
170
- background: transparent;
171
- border-top: none;
172
- padding: 8px 20px 16px;
173
- position: relative;
174
- }
175
- html[data-ck-chrome="sketch"] .ck-card__foot::before {
176
- content: "";
177
- position: absolute;
178
- left: 20px;
179
- right: 20px;
180
- top: 0;
181
- height: 2px;
182
- background: var(--ck-text-primary);
183
- border-radius: 2px;
184
- filter: var(--ck-sketch-wobble);
185
- opacity: 0.5;
186
- }
187
-
188
- /* ---------- Tags — drawn ovals with hatch-fill bg ---------- */
189
- html[data-ck-chrome="sketch"] [data-ck-tag] {
190
- background: transparent !important;
191
- border: 2px solid var(--ck-text-primary) !important;
192
- border-radius: 999px !important;
193
- padding: 4px 12px !important;
194
- font-family: var(--ck-font-sketch-display) !important;
195
- font-weight: 700 !important;
196
- font-size: 14px !important;
197
- letter-spacing: 0 !important;
198
- text-transform: none !important;
199
- box-shadow: 1px 2px 0 var(--ck-text-primary) !important;
200
- color: var(--ck-text-primary) !important;
201
- display: inline-block !important;
202
- transform: rotate(-1.5deg);
203
- }
204
- html[data-ck-chrome="sketch"] [data-ck-tag][data-tone="accent"] {
205
- background:
206
- repeating-linear-gradient(45deg,
207
- var(--ck-sketch-blue) 0 3px,
208
- transparent 3px 7px) !important;
209
- background-color: rgba(74, 144, 226, 0.22) !important;
210
- }
211
- html[data-ck-chrome="sketch"] [data-ck-tag][data-tone="success"] {
212
- background:
213
- repeating-linear-gradient(45deg,
214
- var(--ck-sketch-green) 0 3px,
215
- transparent 3px 7px) !important;
216
- background-color: rgba(111, 207, 151, 0.25) !important;
217
- }
218
- html[data-ck-chrome="sketch"] [data-ck-tag][data-tone="warning"] {
219
- background:
220
- repeating-linear-gradient(45deg,
221
- var(--ck-sketch-orange) 0 3px,
222
- transparent 3px 7px) !important;
223
- background-color: rgba(242, 153, 74, 0.25) !important;
224
- }
225
- html[data-ck-chrome="sketch"] [data-ck-tag][data-tone="critical"] {
226
- background:
227
- repeating-linear-gradient(45deg,
228
- var(--ck-sketch-red) 0 3px,
229
- transparent 3px 7px) !important;
230
- background-color: rgba(229, 75, 75, 0.25) !important;
231
- }
232
-
233
- /* ---------- Layout chrome ---------- */
234
- html[data-ck-chrome="sketch"] [data-ck-leftnav] {
235
- background: var(--ck-bg-sidebar) !important;
236
- border-right: 2px solid var(--ck-text-primary);
237
- }
238
- html[data-ck-chrome="sketch"] [data-ck-topbar] {
239
- background: var(--ck-bg-canvas) !important;
240
- border-bottom: 2px solid var(--ck-text-primary);
241
- }
242
-
243
- /* NavItem — highlighter underline on active */
244
- html[data-ck-chrome="sketch"] [data-ck-navitem] {
245
- background: transparent !important;
246
- border-radius: 8px 10px 9px 11px !important;
247
- font-family: var(--ck-font-sketch-display) !important;
248
- font-weight: 600 !important;
249
- font-size: 17px !important;
250
- color: var(--ck-text-primary) !important;
251
- }
252
- html[data-ck-chrome="sketch"] [data-ck-navitem]:not([data-active="true"]):hover {
253
- background: var(--ck-bg-muted) !important;
254
- }
255
- /* Active state: translucent yellow highlighter slash through the
256
- item. Combined with a hand-drawn second-stroke shadow. */
257
- html[data-ck-chrome="sketch"] [data-ck-navitem][data-active="true"] {
258
- background:
259
- linear-gradient(180deg, transparent 0%, transparent 30%,
260
- var(--ck-sketch-hi-yellow) 30%, var(--ck-sketch-hi-yellow) 78%,
261
- transparent 78%, transparent 100%) !important;
262
- color: var(--ck-text-primary) !important;
263
- font-weight: 700 !important;
264
- box-shadow: 2px 2px 0 var(--ck-text-primary) !important;
265
- border: 2px solid var(--ck-text-primary) !important;
266
- }
267
-
268
- /* Search trigger */
269
- html[data-ck-chrome="sketch"] [data-ck-search-trigger] {
270
- background: var(--ck-bg-surface) !important;
271
- border: 2px solid var(--ck-text-primary) !important;
272
- border-radius: 8px 10px 9px 11px !important;
273
- box-shadow: 2px 3px 0 var(--ck-text-primary) !important;
274
- color: var(--ck-text-secondary) !important;
275
- font-family: var(--ck-font-sketch-display) !important;
276
- font-size: 15px;
277
- }
278
-
279
- /* Action bar */
280
- html[data-ck-chrome="sketch"] [data-ck-actionbar] {
281
- background: var(--ck-bg-surface) !important;
282
- border: 2px solid var(--ck-text-primary);
283
- border-radius: 14px 18px 16px 20px / 18px 14px 20px 16px;
284
- box-shadow: 4px 5px 0 var(--ck-text-primary);
285
- }
286
-
287
- /* Modal — drawn plate, no glass blur */
288
- html[data-ck-chrome="sketch"] [role="dialog"] > div:first-child {
289
- background: rgba(26, 26, 26, 0.45);
290
- backdrop-filter: none;
291
- }
292
- html[data-ck-chrome="sketch"] [role="dialog"] > div > div {
293
- background: var(--ck-bg-surface) !important;
294
- border: 2px solid var(--ck-text-primary);
295
- border-radius: 14px 18px 16px 20px;
296
- box-shadow: 5px 6px 0 var(--ck-text-primary);
297
- font-family: var(--ck-font-sketch-body);
298
- }
299
-
300
- /* Code blocks — drawn plate */
301
- html[data-ck-chrome="sketch"] pre {
302
- background: var(--ck-bg-surface) !important;
303
- border: 2px solid var(--ck-text-primary);
304
- border-radius: 8px 12px 10px 14px;
305
- box-shadow: 3px 4px 0 var(--ck-text-primary);
306
- font-family: "Comic Mono", "Cascadia Code", var(--ck-font-mono);
307
- }
308
- html[data-ck-chrome="sketch"] code {
309
- background: var(--ck-sketch-hi-yellow) !important;
310
- color: var(--ck-text-primary) !important;
311
- padding: 1px 6px;
312
- border-radius: 3px 5px 4px 6px;
313
- font-family: "Comic Mono", "Cascadia Code", var(--ck-font-mono);
314
- }
315
-
316
- /* HR — wobbly hand-drawn divider, not a CSS line */
317
- html[data-ck-chrome="sketch"] hr {
318
- border: none;
319
- height: 3px;
320
- background: var(--ck-text-primary);
321
- border-radius: 3px;
322
- filter: var(--ck-sketch-wobble-strong);
323
- margin: 28px 0;
324
- opacity: 0.65;
325
- }
326
-
327
- /* Highlighter helper — apply .ck-sketch-hl to mark important text
328
- with a translucent yellow swipe behind it. */
329
- .ck-sketch-hl {
330
- background:
331
- linear-gradient(180deg, transparent 0%, transparent 30%,
332
- var(--ck-sketch-hi-yellow, rgba(242, 201, 76, 0.42)) 30%,
333
- var(--ck-sketch-hi-yellow, rgba(242, 201, 76, 0.42)) 80%,
334
- transparent 80%, transparent 100%);
335
- padding: 0 4px;
336
- }
337
-
338
- /* Animated stroke-on for SVG paths — opt-in via .ck-sketch-drawon
339
- on a path. The stroke "draws on" from start to end in ~500ms. */
340
- @keyframes ck-sketch-drawon {
341
- from { stroke-dashoffset: var(--ck-sketch-len, 800); }
342
- to { stroke-dashoffset: 0; }
343
- }
344
- .ck-sketch-drawon {
345
- stroke-dasharray: var(--ck-sketch-len, 800);
346
- animation: ck-sketch-drawon 600ms ease-out forwards;
347
- }
348
-
349
- @media (prefers-reduced-motion: reduce) {
350
- .ck-sketch-drawon {
351
- animation: none;
352
- stroke-dasharray: none;
353
- }
354
- }
355
-
356
- html[data-ck-chrome="sketch"] .ck-actionbar-panel,
357
- html[data-ck-chrome="sketch"] .ck-actionbar-toast {
358
- background: var(--ck-bg-surface);
359
- border: 2px solid var(--ck-text-primary);
360
- border-radius: 14px 18px 16px 20px / 18px 14px 20px 16px;
361
- box-shadow: 4px 5px 0 var(--ck-text-primary);
362
- }
@@ -1,265 +0,0 @@
1
- /* Swiss chrome — component overrides.
2
- Tokens.css supplies the achromatic palette + red accent. This
3
- file strips every primitive of decoration: cards lose fill and
4
- shadows, becoming rules-only; inputs lose all borders except
5
- the bottom; tags lose pill backgrounds and become dot + text;
6
- headings tighten letter-spacing. */
7
-
8
- html[data-ck-chrome="swiss"] body {
9
- font-weight: 400;
10
- font-feature-settings: "ss01", "cv11", "tnum";
11
- }
12
-
13
- /* ===== Typography =========================================== */
14
-
15
- html[data-ck-chrome="swiss"] h1,
16
- html[data-ck-chrome="swiss"] .ck-h1 {
17
- font-family: var(--ck-font-sans);
18
- font-weight: 700;
19
- letter-spacing: -0.03em;
20
- line-height: 0.98;
21
- }
22
- html[data-ck-chrome="swiss"] h2,
23
- html[data-ck-chrome="swiss"] .ck-h2 {
24
- font-family: var(--ck-font-sans);
25
- font-weight: 600;
26
- letter-spacing: -0.015em;
27
- line-height: 1.1;
28
- }
29
- html[data-ck-chrome="swiss"] h3,
30
- html[data-ck-chrome="swiss"] .ck-h3 {
31
- font-weight: 600;
32
- letter-spacing: -0.005em;
33
- }
34
-
35
- html[data-ck-chrome="swiss"] .ck-eyebrow {
36
- letter-spacing: 0.06em;
37
- font-weight: 500;
38
- }
39
-
40
- /* ===== Buttons — small radius, no shadow ==================== */
41
-
42
- html[data-ck-chrome="swiss"] .ck-btn,
43
- html[data-ck-chrome="swiss"] .ck-actionbar-btn {
44
- border-radius: 3px;
45
- font-weight: 500;
46
- letter-spacing: 0;
47
- text-transform: none;
48
- box-shadow: none !important;
49
- }
50
- html[data-ck-chrome="swiss"] .ck-btn--primary {
51
- background: var(--ck-text-primary);
52
- color: var(--ck-bg-canvas);
53
- border: none;
54
- }
55
- html[data-ck-chrome="swiss"] .ck-btn--primary:hover:not(:disabled) {
56
- background: var(--ck-text-secondary);
57
- }
58
- html[data-ck-chrome="swiss"] .ck-btn--secondary {
59
- background: transparent;
60
- border: 1px solid var(--ck-text-primary);
61
- color: var(--ck-text-primary);
62
- }
63
- html[data-ck-chrome="swiss"] .ck-btn--secondary:hover:not(:disabled) {
64
- background: var(--ck-text-primary);
65
- color: var(--ck-bg-canvas);
66
- }
67
- html[data-ck-chrome="swiss"] .ck-btn--ghost {
68
- background: transparent;
69
- color: var(--ck-text-primary);
70
- border: none;
71
- }
72
- html[data-ck-chrome="swiss"] .ck-btn--ghost:hover:not(:disabled) {
73
- background: var(--ck-bg-muted);
74
- }
75
-
76
- /* ===== Inputs — bottom-border-only (canonical Swiss form) === */
77
-
78
- /* :not(.ck-input--with-addon) — when the input is inside a
79
- prefix/suffix wrapper the wrapper carries the border + padding,
80
- and stripping the input's own padding makes the placeholder
81
- collide with the addon. The addon variant gets the swiss
82
- underline only at the OUTER wrap level (rule further down). */
83
- html[data-ck-chrome="swiss"] .ck-input:not(.ck-input--with-addon),
84
- html[data-ck-chrome="swiss"] .ck-textarea {
85
- background: transparent !important;
86
- border: none !important;
87
- border-bottom: 1px solid var(--ck-border-subtle) !important;
88
- border-radius: 0 !important;
89
- padding-left: 0 !important;
90
- padding-right: 0 !important;
91
- color: var(--ck-text-primary);
92
- transition: border-bottom-color 120ms ease, border-bottom-width 120ms ease;
93
- }
94
- html[data-ck-chrome="swiss"] .ck-input:not(.ck-input--with-addon):focus-visible,
95
- html[data-ck-chrome="swiss"] .ck-textarea:focus-visible {
96
- outline: none;
97
- border-bottom-color: var(--ck-text-primary) !important;
98
- border-bottom-width: 2px !important;
99
- box-shadow: none !important;
100
- }
101
-
102
- /* Addon variant — flatten the wrapper to the swiss underline-only
103
- form so the whole field (input + addons) reads as one bar. The
104
- inner .ck-input keeps its default padding; the wrap loses its
105
- side / top borders and its corner radius. */
106
- html[data-ck-chrome="swiss"] .ck-input-addon-wrap {
107
- border: none !important;
108
- border-bottom: 1px solid var(--ck-border-subtle) !important;
109
- border-radius: 0 !important;
110
- background: transparent !important;
111
- }
112
- html[data-ck-chrome="swiss"] .ck-input-addon-wrap:focus-within {
113
- border-bottom-color: var(--ck-text-primary) !important;
114
- border-bottom-width: 2px !important;
115
- }
116
- /* Recess the addon further so the slab still reads against the
117
- underlined input column. */
118
- html[data-ck-chrome="swiss"] .ck-input-addon {
119
- background: var(--ck-bg-muted) !important;
120
- }
121
-
122
- /* ===== Cards — rules-only sectioning ======================== */
123
-
124
- html[data-ck-chrome="swiss"] .ck-card {
125
- background: transparent !important;
126
- border: none !important;
127
- border-top: 1px solid var(--ck-border-subtle) !important;
128
- border-bottom: 1px solid var(--ck-border-subtle) !important;
129
- border-radius: 0 !important;
130
- box-shadow: none !important;
131
- }
132
- html[data-ck-chrome="swiss"] .ck-card__head {
133
- border-bottom: 1px solid var(--ck-border-subtle);
134
- padding: 16px 0;
135
- }
136
- html[data-ck-chrome="swiss"] .ck-card__body {
137
- padding: 16px 0;
138
- }
139
- html[data-ck-chrome="swiss"] .ck-card__foot {
140
- border-top: 1px solid var(--ck-border-subtle);
141
- background: transparent;
142
- padding: 12px 0;
143
- }
144
-
145
- /* ===== Tags — dot + text only, no pill ====================== */
146
-
147
- html[data-ck-chrome="swiss"] [data-ck-tag] {
148
- background: transparent !important;
149
- border: none !important;
150
- padding: 0 !important;
151
- box-shadow: none !important;
152
- letter-spacing: 0.02em !important;
153
- text-transform: none !important;
154
- font-weight: 500 !important;
155
- font-size: 12px !important;
156
- display: inline-flex !important;
157
- align-items: center !important;
158
- gap: 6px !important;
159
- }
160
- html[data-ck-chrome="swiss"] [data-ck-tag]::before {
161
- content: "";
162
- width: 6px;
163
- height: 6px;
164
- border-radius: 50%;
165
- background: currentColor;
166
- flex-shrink: 0;
167
- }
168
- html[data-ck-chrome="swiss"] [data-ck-tag][data-tone="accent"] {
169
- color: var(--ck-accent) !important;
170
- }
171
- html[data-ck-chrome="swiss"] [data-ck-tag][data-tone="success"] {
172
- color: #15803D !important;
173
- }
174
- html[data-ck-chrome="swiss"] [data-ck-tag][data-tone="warning"] {
175
- color: var(--ck-text-primary) !important;
176
- }
177
- html[data-ck-chrome="swiss"] [data-ck-tag][data-tone="critical"] {
178
- color: var(--ck-accent) !important;
179
- }
180
- html[data-ck-chrome="swiss"] [data-ck-tag][data-tone="neutral"] {
181
- color: var(--ck-text-secondary) !important;
182
- }
183
-
184
- /* ===== Layout chrome ======================================== */
185
-
186
- html[data-ck-chrome="swiss"] [data-ck-leftnav] {
187
- background: var(--ck-bg-canvas) !important;
188
- border-right: 1px solid var(--ck-border-subtle);
189
- }
190
- html[data-ck-chrome="swiss"] [data-ck-topbar] {
191
- background: var(--ck-bg-canvas) !important;
192
- border-bottom: 1px solid var(--ck-border-subtle);
193
- }
194
-
195
- /* ===== NavItem — text-only, weight change on active =========
196
- Swiss nav is just a list of words; emphasis comes from weight,
197
- not from background pills. Active gets weight 600. Leading
198
- icons hidden. */
199
- html[data-ck-chrome="swiss"] [data-ck-navitem] {
200
- background: transparent !important;
201
- border: none !important;
202
- border-radius: 0 !important;
203
- font-weight: 400 !important;
204
- color: var(--ck-text-secondary) !important;
205
- padding: 6px 8px !important;
206
- }
207
- html[data-ck-chrome="swiss"] [data-ck-navitem]:hover {
208
- color: var(--ck-text-primary) !important;
209
- }
210
- html[data-ck-chrome="swiss"] [data-ck-navitem][data-active="true"] {
211
- font-weight: 600 !important;
212
- color: var(--ck-text-primary) !important;
213
- background: transparent !important;
214
- }
215
- /* Hide leading icons — "no icons before nav items" per the brief. */
216
- html[data-ck-chrome="swiss"] [data-ck-navitem] svg,
217
- html[data-ck-chrome="swiss"] [data-ck-navitem] span > span:first-child {
218
- display: none;
219
- }
220
-
221
- /* ===== Search trigger ======================================= */
222
-
223
- html[data-ck-chrome="swiss"] [data-ck-search-trigger] {
224
- background: transparent !important;
225
- border: 1px solid var(--ck-border-subtle) !important;
226
- border-radius: 3px !important;
227
- box-shadow: none !important;
228
- }
229
-
230
- /* ===== Action bar ========================================== */
231
-
232
- html[data-ck-chrome="swiss"] [data-ck-actionbar] {
233
- background: var(--ck-bg-canvas) !important;
234
- border: 1px solid var(--ck-border-subtle);
235
- border-radius: 3px;
236
- box-shadow: none !important;
237
- }
238
-
239
- /* ===== Modal =============================================== */
240
-
241
- html[data-ck-chrome="swiss"] [role="dialog"] > div:first-child {
242
- background: rgba(0, 0, 0, 0.5);
243
- backdrop-filter: none;
244
- }
245
- html[data-ck-chrome="swiss"] [role="dialog"] > div > div {
246
- border-radius: 3px;
247
- border: 1px solid var(--ck-text-primary);
248
- box-shadow: none;
249
- }
250
-
251
- /* ===== Links — accent underline ============================ */
252
-
253
- html[data-ck-chrome="swiss"] a {
254
- color: var(--ck-accent);
255
- text-underline-offset: 3px;
256
- text-decoration-thickness: 1px;
257
- }
258
-
259
- html[data-ck-chrome="swiss"] .ck-actionbar-panel,
260
- html[data-ck-chrome="swiss"] .ck-actionbar-toast {
261
- background: var(--ck-bg-canvas);
262
- border: 1px solid var(--ck-border-subtle);
263
- border-radius: 0;
264
- box-shadow: var(--ck-shadow-1, 0 2px 8px rgba(0, 0, 0, 0.08));
265
- }