@keyfunc/keybricks-ds 2.1.1 → 2.3.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 (240) hide show
  1. package/DEPLOY.md +13 -4
  2. package/DESIGN.md +104 -19
  3. package/INTEGRATION.md +75 -20
  4. package/SKILL.md +11 -11
  5. package/_adherence.oxlintrc.json +28 -11
  6. package/_scripts/build-index.mjs +15 -4
  7. package/assets/icons/icon-index.js +1 -1
  8. package/assets/icons/icon-index.json +1 -1
  9. package/components/_cards/accordion.card.html +1 -1
  10. package/components/_cards/action-chip.card.html +11 -14
  11. package/components/_cards/activity.card.html +2 -2
  12. package/components/_cards/alert.card.html +2 -2
  13. package/components/_cards/app-chrome.card.html +1 -1
  14. package/components/_cards/banner.card.html +1 -1
  15. package/components/_cards/breadcrumb.card.html +4 -4
  16. package/components/_cards/button-1-base.card.html +23 -26
  17. package/components/_cards/button-2-states.card.html +14 -12
  18. package/components/_cards/button-3-sizes-icons.card.html +20 -19
  19. package/components/_cards/button-4-group.card.html +14 -31
  20. package/components/_cards/canvas-zoom-controls.card.html +1 -1
  21. package/components/_cards/cards-indicators.card.html +1 -1
  22. package/components/_cards/charts-1-sparkline.card.html +4 -4
  23. package/components/_cards/charts-10-gauge.card.html +2 -2
  24. package/components/_cards/charts-11-funnel.card.html +2 -2
  25. package/components/_cards/charts-12-treemap.card.html +2 -2
  26. package/components/_cards/charts-14-radar.card.html +3 -3
  27. package/components/_cards/charts-15-distribution.card.html +2 -2
  28. package/components/_cards/charts-16-pareto.card.html +2 -2
  29. package/components/_cards/charts-17-candlestick.card.html +2 -2
  30. package/components/_cards/charts-18-sankey.card.html +2 -2
  31. package/components/_cards/charts-19-chord.card.html +2 -2
  32. package/components/_cards/charts-2-line.card.html +3 -3
  33. package/components/_cards/charts-20-sunburst.card.html +2 -2
  34. package/components/_cards/charts-21-worldmap.card.html +3 -3
  35. package/components/_cards/charts-22-gantt.card.html +2 -2
  36. package/components/_cards/charts-23-bar3d.card.html +2 -2
  37. package/components/_cards/charts-24-pie3d.card.html +2 -2
  38. package/components/_cards/charts-25-surface3d.card.html +2 -2
  39. package/components/_cards/charts-26-scatter3d.card.html +2 -2
  40. package/components/_cards/charts-27-ribbon3d.card.html +2 -2
  41. package/components/_cards/charts-3-bar.card.html +6 -6
  42. package/components/_cards/charts-4-barlist.card.html +2 -2
  43. package/components/_cards/charts-5-donut.card.html +2 -2
  44. package/components/_cards/charts-6-scatter.card.html +2 -2
  45. package/components/_cards/charts-7-heatmap.card.html +2 -2
  46. package/components/_cards/charts-8-waterfall.card.html +2 -2
  47. package/components/_cards/charts-9-bullet.card.html +3 -3
  48. package/components/_cards/charts-99-fullpage.card.html +1 -1
  49. package/components/_cards/checkbox.card.html +6 -3
  50. package/components/_cards/codeblock.card.html +2 -2
  51. package/components/_cards/combobox.card.html +6 -4
  52. package/components/_cards/context-menu.card.html +6 -4
  53. package/components/_cards/date-picker.card.html +8 -5
  54. package/components/_cards/diffvalue.card.html +2 -2
  55. package/components/_cards/divider.card.html +2 -2
  56. package/components/_cards/drawer.card.html +3 -3
  57. package/components/_cards/dropdown-menu.card.html +2 -2
  58. package/components/_cards/dropzone.card.html +5 -3
  59. package/components/_cards/empty-state.card.html +2 -2
  60. package/components/_cards/filter-bar.card.html +1 -1
  61. package/components/_cards/icon-button.card.html +14 -14
  62. package/components/_cards/icons-1-core.card.html +4 -4
  63. package/components/_cards/icons-2-feather.card.html +4 -4
  64. package/components/_cards/icons-3-unicons.card.html +3 -3
  65. package/components/_cards/input.card.html +5 -5
  66. package/components/_cards/kbd.card.html +1 -1
  67. package/components/_cards/keyvalue.card.html +1 -1
  68. package/components/_cards/listrow.card.html +1 -1
  69. package/components/_cards/loading.card.html +2 -2
  70. package/components/_cards/log-viewer.card.html +2 -2
  71. package/components/_cards/modal.card.html +1 -1
  72. package/components/_cards/multi-select.card.html +6 -4
  73. package/components/_cards/number-stepper.card.html +9 -6
  74. package/components/_cards/pagination.card.html +6 -4
  75. package/components/_cards/people.card.html +2 -2
  76. package/components/_cards/pipeline-node.card.html +8 -8
  77. package/components/_cards/pipeline-palette.card.html +2 -2
  78. package/components/_cards/radio.card.html +12 -7
  79. package/components/_cards/search.card.html +6 -6
  80. package/components/_cards/segmented-control.card.html +11 -10
  81. package/components/_cards/select.card.html +7 -3
  82. package/components/_cards/slider.card.html +2 -2
  83. package/components/_cards/smart-table.card.html +3 -3
  84. package/components/_cards/spreadsheet.card.html +2 -2
  85. package/components/_cards/stepper.card.html +2 -2
  86. package/components/_cards/table.card.html +79 -17
  87. package/components/_cards/tabs.card.html +6 -4
  88. package/components/_cards/tag.card.html +6 -6
  89. package/components/_cards/textarea.card.html +1 -1
  90. package/components/_cards/timeline.card.html +3 -3
  91. package/components/_cards/toast.card.html +7 -5
  92. package/components/_cards/toggles.card.html +14 -9
  93. package/components/_cards/tooltip.card.html +3 -3
  94. package/components/_cards/tree.card.html +2 -2
  95. package/components/_shared/card-kit.css +25 -0
  96. package/components/_shared/card-kit.js +50 -0
  97. package/components/_shared/src-buttons.js +1 -1
  98. package/components/_shared/src-charts.js +1 -1
  99. package/components/_shared/src-data.js +1 -1
  100. package/components/_shared/src-display.js +1 -1
  101. package/components/_shared/src-feedback.js +1 -1
  102. package/components/_shared/src-forms.js +1 -1
  103. package/components/_shared/src-icons.js +1 -1
  104. package/components/_shared/src-navigation.js +1 -1
  105. package/components/_shared/src-tabs.js +1 -1
  106. package/components/_shared/view-source.js +3 -3
  107. package/components/_vue/index.mjs +7 -0
  108. package/components/buttons/ActionChip.d.ts +1 -1
  109. package/components/buttons/Button.d.ts +1 -1
  110. package/components/buttons/Button.jsx +1 -1
  111. package/components/buttons/Button.vue +1 -1
  112. package/components/buttons/IconButton.d.ts +1 -1
  113. package/components/buttons/IconButton.jsx +5 -3
  114. package/components/buttons/IconButton.vue +3 -2
  115. package/components/charts/Bar3D.jsx +1 -1
  116. package/components/charts/Bar3D.vue +2 -2
  117. package/components/charts/BarChart.jsx +3 -3
  118. package/components/charts/BarChart.vue +6 -6
  119. package/components/charts/BarList.jsx +3 -3
  120. package/components/charts/BarList.vue +3 -3
  121. package/components/charts/BoxPlot.vue +2 -2
  122. package/components/charts/BulletChart.jsx +5 -5
  123. package/components/charts/BulletChart.vue +5 -5
  124. package/components/charts/CandlestickChart.vue +3 -3
  125. package/components/charts/ChartKit.jsx +4 -3
  126. package/components/charts/ChartTooltip.vue +1 -1
  127. package/components/charts/ChordChart.jsx +1 -1
  128. package/components/charts/ChordChart.vue +2 -2
  129. package/components/charts/DonutChart.jsx +1 -1
  130. package/components/charts/DonutChart.vue +2 -2
  131. package/components/charts/FunnelChart.jsx +3 -3
  132. package/components/charts/FunnelChart.vue +4 -4
  133. package/components/charts/GanttChart.vue +1 -1
  134. package/components/charts/GaugeChart.jsx +2 -2
  135. package/components/charts/GaugeChart.vue +2 -2
  136. package/components/charts/HeatmapChart.jsx +1 -1
  137. package/components/charts/HeatmapChart.vue +1 -1
  138. package/components/charts/Histogram.jsx +2 -2
  139. package/components/charts/Histogram.vue +4 -4
  140. package/components/charts/LineChart.vue +2 -2
  141. package/components/charts/ParetoChart.jsx +1 -1
  142. package/components/charts/ParetoChart.vue +3 -3
  143. package/components/charts/Pie3D.jsx +1 -1
  144. package/components/charts/Pie3D.vue +2 -2
  145. package/components/charts/PlotGrid.vue +1 -1
  146. package/components/charts/RadarChart.vue +1 -1
  147. package/components/charts/Ribbon3D.jsx +1 -1
  148. package/components/charts/Ribbon3D.vue +2 -2
  149. package/components/charts/SankeyChart.jsx +1 -1
  150. package/components/charts/SankeyChart.vue +2 -2
  151. package/components/charts/Scatter3D.vue +1 -1
  152. package/components/charts/ScatterChart.jsx +1 -1
  153. package/components/charts/ScatterChart.vue +3 -3
  154. package/components/charts/Sparkline.jsx +1 -1
  155. package/components/charts/Sparkline.vue +1 -1
  156. package/components/charts/SunburstChart.vue +1 -1
  157. package/components/charts/Surface3D.jsx +1 -1
  158. package/components/charts/Surface3D.vue +2 -2
  159. package/components/charts/TreemapChart.jsx +1 -1
  160. package/components/charts/TreemapChart.vue +2 -2
  161. package/components/charts/WaterfallChart.jsx +1 -1
  162. package/components/charts/WaterfallChart.vue +5 -4
  163. package/components/charts/WorldMap.jsx +4 -4
  164. package/components/charts/WorldMap.vue +5 -5
  165. package/components/data/DiffValue.d.ts +1 -0
  166. package/components/data/DiffValue.jsx +1 -1
  167. package/components/data/DiffValue.vue +1 -1
  168. package/components/data/KeyValue.d.ts +1 -1
  169. package/components/data/KeyValue.jsx +2 -2
  170. package/components/data/KeyValue.vue +2 -2
  171. package/components/data/Pagination.jsx +2 -2
  172. package/components/data/Pagination.vue +1 -1
  173. package/components/data/SmartTable.jsx +5 -5
  174. package/components/data/SmartTable.vue +6 -6
  175. package/components/data/Spreadsheet.jsx +5 -5
  176. package/components/data/Spreadsheet.vue +6 -6
  177. package/components/data/Table.d.ts +58 -4
  178. package/components/data/Table.jsx +153 -15
  179. package/components/data/Table.vue +105 -15
  180. package/components/data/data.prompt.md +1 -1
  181. package/components/display/Avatar.jsx +2 -2
  182. package/components/display/Avatar.vue +1 -1
  183. package/components/display/AvatarGroup.vue +1 -1
  184. package/components/display/Badge.d.ts +4 -1
  185. package/components/display/Badge.jsx +10 -5
  186. package/components/display/IconTile.vue +9 -4
  187. package/components/display/Kbd.d.ts +1 -1
  188. package/components/display/Kbd.jsx +1 -1
  189. package/components/display/Kbd.vue +1 -1
  190. package/components/feedback/ActivityItem.jsx +1 -1
  191. package/components/feedback/Modal.jsx +1 -1
  192. package/components/feedback/Modal.vue +1 -1
  193. package/components/feedback/Timeline.vue +2 -2
  194. package/components/forms/Combobox.d.ts +1 -1
  195. package/components/forms/DatePicker.d.ts +1 -1
  196. package/components/forms/Input.d.ts +1 -1
  197. package/components/forms/Input.jsx +2 -2
  198. package/components/forms/Input.vue +1 -1
  199. package/components/forms/MultiSelect.d.ts +1 -1
  200. package/components/forms/NumberStepper.d.ts +1 -1
  201. package/components/forms/SearchInput.d.ts +1 -1
  202. package/components/forms/Select.d.ts +1 -1
  203. package/components/forms/Select.jsx +1 -1
  204. package/components/forms/Select.vue +1 -1
  205. package/components/forms/Slider.jsx +1 -1
  206. package/components/forms/Slider.vue +1 -1
  207. package/components/forms/Switch.jsx +3 -3
  208. package/components/forms/Switch.vue +11 -8
  209. package/components/forms/Textarea.vue +1 -1
  210. package/components/forms/input-base.js +1 -1
  211. package/components/icons/Icon.jsx +17 -1
  212. package/components/icons/Icon.prompt.md +2 -0
  213. package/components/icons/Icon.vue +1 -1
  214. package/components/icons/icon-paths.js +15 -0
  215. package/components/index.js +1 -1
  216. package/components/navigation/Breadcrumb.jsx +3 -7
  217. package/components/navigation/Breadcrumb.vue +2 -8
  218. package/components/navigation/Sidebar.jsx +3 -22
  219. package/components/navigation/Sidebar.vue +2 -7
  220. package/components/navigation/Tree.jsx +1 -1
  221. package/components/navigation/Tree.vue +9 -4
  222. package/components/navigation/nav-model.js +23 -0
  223. package/components/navigation/theme-store.js +9 -0
  224. package/components/tabs/PillTabs.vue +1 -1
  225. package/components/tabs/SegmentedControl.d.ts +1 -1
  226. package/components/tabs/SegmentedControl.jsx +1 -1
  227. package/components/tabs/SegmentedControl.vue +1 -1
  228. package/components/tabs/Tabs.jsx +1 -1
  229. package/components/tabs/ViewToggle.d.ts +1 -1
  230. package/package.json +2 -2
  231. package/readme.md +6 -5
  232. package/readme.zh-CN.md +6 -5
  233. package/tokens/alpha.css +3 -1
  234. package/tokens/colors.css +1 -1
  235. package/tokens/dark.css +1 -1
  236. package/tokens/layout.css +7 -5
  237. package/tokens/tokens.d.ts +22 -0
  238. package/tokens/tokens.js +39 -6
  239. package/tokens/tokens.json +90 -11
  240. package/tokens/typography.css +26 -9
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- /** list/grid icon toggle — two IconButtons at the region's tier (sm 24 · md 32 · lg 36), active gets the tinted wash. */
2
+ /** list/grid icon toggle — two IconButtons at the region's tier (sm 28 · md 32 · lg 40), active gets the tinted wash. */
3
3
  export interface ViewToggleProps {
4
4
  value?: "list" | "grid";
5
5
  /** Size tier. Omit to inherit the enclosing region's tier (the default). */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@keyfunc/keybricks-ds",
3
- "version": "2.1.1",
4
- "description": "Keybricks design system — 352 design tokens, three size tiers and 117 UI components in React and Vue 3, source-only.",
3
+ "version": "2.3.1",
4
+ "description": "Keybricks design system — design tokens, three size tiers and 117 UI components in React and Vue 3, source-only.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
7
  "sideEffects": [
package/readme.md CHANGED
@@ -11,7 +11,7 @@ One product: the Keybricks web app (desktop, 1512×~860 design size). Key surfac
11
11
  - **Voice**: terse, technical, verb-first. Buttons are imperative: "Run Test", "Submit", "Save Settings", "Continue to Confirmation", "Mark as New", "Skip Selected".
12
12
  - **Casing**: Title Case for nav, headings, buttons, table headers ("Import History", "Custom Parameters"); sentence case for helper copy ("Import and manage configuration migrations across systems", "Click to upload or drag and drop", "JSON files only").
13
13
  - **Person**: no "I/we/you" — labels are objective and system-centric. Personal touch is limited to the dashboard greeting "Good evening, Felix" + full date "Monday, April 21, 2026".
14
- - **Terminology**: domain-precise EPM/ETL vocabulary — Detail Sheet, Dimension, Model, Association Match, Multi-Condition Judge, Group Calculation, Concat Merge, Reconciliation, Consolidation. Config codes render in mono ALL_CAPS_SNAKE ("FIN_CURRENCY_DEFAULT").
14
+ - **Terminology**: domain-precise EPM/ETL vocabulary — Detail Sheet, Dimension, Model, Association Match, Multi-Condition Judge, Group Calculation, Concat Merge, Reconciliation, Consolidation. Config codes are ALL_CAPS_SNAKE ("FIN_CURRENCY_DEFAULT") and render as code chips — Menlo 12px on a light inset fill.
15
15
  - **Numbers & meta**: counts as "1 document", "2 items", relative time "2 hours ago", log lines "[14:30] Task started: Import".
16
16
  - **Status language**: "• Editing" dot-prefixed state chip; steps named as nouns ("Upload & Parse", "Comparison", "Confirmation", "Execution", "Results").
17
17
  - **Emoji**: never. Icons carry all decoration.
@@ -25,9 +25,9 @@ One product: the Keybricks web app (desktop, 1512×~860 design size). Key surfac
25
25
  3. **Component** — `--cat-*`, `--tooltip-bg`, `--dropzone-border-hover`: one part of one component, added only when no tier-2 role fits.
26
26
 
27
27
  Rules that don't bend: step 400 and lighter never carry body text on white (they are surfaces, borders, disabled glyphs); `--on-accent` (#FFFFFF) is the only foreground allowed on a saturated fill, in **both** themes; label hues are mechanical (light = 100-step bg + 700-step text, dark = 950-step bg + 300-step text) so a new category needs no judgement; hue means *category*, the four feedback roles mean *severity*. Contrast targets: 4.5:1 body text, 3:1 for 18px+/bold and for UI boundaries. Three Colors cards carry the values: Palette (every ramp), Schemes (sets that work together), Transparency (the alpha scale).
28
- - **Type**: Inter only (300 stat numerals, 400 body, 500 UI-medium, 600 titles and table headers) on the 14px scale — 12 captions · 14 body and controls · 16 section titles · 20 page titles; 24px only for the greeting + stat numbers (weight 300); 11px for chart ticks and nothing else. Negative tracking from 14px up (-.15 to -.54px), 0 at 12px. Menlo for data/code/logs at the row's own size with tabular figures. Chinese, Japanese and Korean (`lang="zh|ja|ko"`): same sizes, weight 500 → 600, tracking 0, never caps.
28
+ - **Type**: Inter only (300 stat numerals, 400 body, 500 UI-medium, 600 titles and table headers) on the 14px scale — 12 captions · 14 body and controls · 16 section titles · 20 page titles; 24px only for the greeting + stat numbers (weight 300); 11px for chart text and nothing else. Negative tracking from 14px up (-.15 to -.54px), 0 at 12px. Menlo for data/code/logs at the row's own size with tabular figures. Chinese (Simplified and Traditional), Japanese and Korean (`lang="zh|ja|ko"`) follow one rule: below 14px they are one step larger than Latin (12 → 13, 11 → 12, so no CJK text is under 12px), weights 500 and 600 both → 500 (CJK glyphs read heavier at the same number; medium 400 in sm regions, where bold strokes merge), tracking 0, never caps.
29
29
  - **Spacing**: 4-px family in practice (2/4/6/8/10/12/16/24/32); page padding 24×32; card padding 21 (dense 17); section gap 24. Inside a bar the gaps come from the size tier: 8 inside a group, 12/16/24 between groups, 12/16 from a card edge to the first control.
30
- - **Size tiers**: one tier per region — `data-size="sm" | "md" | "lg"` gives 24 / 32 / 36px controls, 12 / 14 / 14px control text and 32 / 40 / 44px rows; every control inside inherits, nothing interactive is below 24px, and heights or text sizes are never mixed in one row. md is the app default; dialogs are lg; dense grids are sm.
30
+ - **Size tiers**: one tier per region — `data-size="sm" | "md" | "lg"` gives 28 / 32 / 40px controls, 12 / 14 / 14px control text (13 / 14 / 14 in CJK) and 36 / 40 / 48px rows; every control inside inherits, nothing interactive is below 24px, and heights or text sizes are never mixed in one row. md is the app default; dialogs are lg; dense grids are sm.
31
31
  - **Radii**: 4 small controls · 8 buttons/inputs/nav/chips · 10 cards/search/dropzone · 14 palette tiles · 16 canvas nodes · full circles for ports/steps/pills.
32
32
  - **Borders**: hairline everywhere — cards rgba(229,229,229,.6); controls #e5e5e5; row separators #f5f5f5; checkbox #d1d5db 1.5px; ports #d4d4d4 2px; dropzone dashed #d4d4d4 2px.
33
33
  - **Shadows**: nearly flat. Canvas nodes only: `0 1px 3px rgba(0,0,0,.1), 0 1px 2px -1px rgba(0,0,0,.1)`; selection = blue-400 border + 2px blue-100 ring; badges get a 2px white ring. Everything else relies on borders.
@@ -36,10 +36,12 @@ One product: the Keybricks web app (desktop, 1512×~860 design size). Key surfac
36
36
  - **Motion**: kept minimal by design (see Motion below) — 120–160ms ease-out on hover/selection, nothing bouncy or far-traveling.
37
37
  - **Layout chrome**: left sidebar 240px (collapsible to a 64px icon rail), 56px top bar (search left, bell + black "AI Assistant" pill right), optional 240px secondary panel (Documents tree, pipeline palette), 400px right config panel, 250px bottom data-preview drawer.
38
38
  - **Cards**: white, radius 10, hairline border, 21px padding, 14px/500 title — never elevated.
39
- - **Density**: high; table rows 32 (sm) · 40 (md) · 44 (lg); header cells the same size as body cells in weight 600, sentence case; mono cells at the row's size.
39
+ - **Density**: high; table rows 32 (sm) · 40 (md) · 44 (lg); header cells the same size as body cells in weight 600, sentence case; amount cells at the row's size with tabular figures; config codes as 12px code chips.
40
40
 
41
41
  ## Iconography
42
42
  - The product's icons are the **Lucide** stroke set (16/14px at 1.33px effective stroke, `currentColor`). We ship `components/icons/Icon.jsx`, embedding the exact Lucide path data for every glyph the product uses. Usage: `<Icon name="search" size={16}/>`.
43
+ - **Keybricks glyphs**: thirteen icons drawn for Keybricks itself sit in the core set beside the Lucide glyphs — AI (`ai`, `ai-sparkles`), modules (`reconciliation`, `consolidation`, `journal`, `event`, `view-tree`) and actions (`drilldown`, `add-below`, `copy-data`, `task-execution`, `time-future`, `time-restatement`). Search the Icon Gallery before drawing a new one: *hierarchy* turned out to be `layers`, and *change* is `repeat`.
44
+ - **Drawing rules** (every core glyph, and any glyph added later): 24×24 grid; paths stay inside 2–22, which leaves 1px of padding once the stroke is drawn; stroke 2, round caps and joins, no fill, `currentColor`; integer coordinates; at least 2px of clear space between separate elements; rect corners rx 2, or rx 1 at 8px and smaller. Check a new glyph at 14 and 16px before adding it.
43
45
  - Icon color follows text color (#525252 default chrome, #a1a1a1 muted, category hue inside tinted tiles).
44
46
  - Tinted icon tiles are a signature motif: 40×40 r14 (palette), 48×48 r16 (nodes), 32×32 r8 hairline-bordered (list rows) — 100-tint bg + 600-hue glyph.
45
47
  - Emoji or unicode-as-icon: never.
@@ -76,7 +78,6 @@ One product: the Keybricks web app (desktop, 1512×~860 design size). Key surfac
76
78
  - `styles.css` — global CSS entry (imports all token files); `keybricks.css` — the package's stylesheet entry (tokens + hover hooks).
77
79
  - `assets/` — keybricks-logo.png and the icon keyword indexes.
78
80
  - `guidelines/` — foundation showcase cards (Design System tab).
79
- - `ui_kits/keybricks-app/` — interactive product recreation: Home, Documents, Pipeline editor, System Migration.
80
81
  - `SKILL.md` — agent skill entry file.
81
82
 
82
83
  ## Components
package/readme.zh-CN.md CHANGED
@@ -13,7 +13,7 @@ Keybricks 是面向财务团队的企业绩效管理(EPM)平台:文档与
13
13
  - **语气**:简洁、技术化、动词开头。按钮用祈使句:"Run Test"、"Submit"、"Save Settings"、"Continue to Confirmation"、"Mark as New"、"Skip Selected"。
14
14
  - **大小写**:导航、标题、按钮、表头用词首大写(Title Case),如 "Import History"、"Custom Parameters";辅助说明文字用句首大写(sentence case),如 "Import and manage configuration migrations across systems"、"Click to upload or drag and drop"、"JSON files only"。
15
15
  - **人称**:不使用"我 / 我们 / 你"——文案客观、以系统为中心。唯一的人性化表达是仪表盘问候语 "Good evening, Felix" 加完整日期 "Monday, April 21, 2026"。
16
- - **术语**:精确的 EPM/ETL 领域词汇——Detail Sheet、Dimension、Model、Association Match、Multi-Condition Judge、Group Calculation、Concat Merge、Reconciliation、Consolidation。配置代码用等宽字体、全大写下划线格式("FIN_CURRENCY_DEFAULT")。
16
+ - **术语**:精确的 EPM/ETL 领域词汇——Detail Sheet、Dimension、Model、Association Match、Multi-Condition Judge、Group Calculation、Concat Merge、Reconciliation、Consolidation。配置代码写作全大写下划线("FIN_CURRENCY_DEFAULT"),显示为代码标签:Menlo 12px、浅灰底。配置代码用等宽字体、全大写下划线格式("FIN_CURRENCY_DEFAULT")。
17
17
  - **数字与元信息**:计数写作 "1 document"、"2 items";相对时间写作 "2 hours ago";日志行写作 "[14:30] Task started: Import"。
18
18
  - **状态文案**:状态标签带圆点前缀,如 "• Editing";步骤用名词命名("Upload & Parse"、"Comparison"、"Confirmation"、"Execution"、"Results")。
19
19
  - **Emoji**:从不使用。所有装饰性表达交给图标。
@@ -27,9 +27,9 @@ Keybricks 是面向财务团队的企业绩效管理(EPM)平台:文档与
27
27
  3. **组件层** —— `--cat-*`、`--tooltip-bg`、`--dropzone-border-hover`:只属于某个组件的某个部位,仅在第二层确实没有合适角色时才新增。
28
28
 
29
29
  不可打破的规则:400 及更浅的档位不得在白底上承载正文(它们是表面色、边框色、禁用态图标色);饱和填充之上的前景色只能用 `--on-accent`(#FFFFFF),**两套主题都是**;标签色相按机械规则取值(浅色 = 100 档底 + 700 档字,深色 = 950 档底 + 300 档字),新增分类无需主观判断;色相表达*分类*,四组反馈色表达*严重程度*。对比度目标:正文 4.5:1,18px 以上或加粗文字及界面边界 3:1。Colors 分组下三张卡片给出全部色值:Palette(完整色阶)、Schemes(可搭配使用的配色组合)、Transparency(透明度阶)。
30
- - **字体**:只用 Inter(300 用于统计数字,400 正文,500 界面中等字重,600 标题与表头),采用 14px 字号阶梯——12 说明文字 · 14 正文与控件 · 16 区块标题 · 20 页面标题;24px 只用于问候语和统计数字(字重 300);11px 只用于图表刻度。14px 起使用负字距(-.15 到 -.54px),12px 字距为 0。数据 / 代码 / 日志用 Menlo,与所在行同字号,使用等宽数字。中文、日文、韩文(`lang="zh|ja|ko"`):字号不变,500 字重改为 600,字距为 0,不做大写转换。
30
+ - **字体**:只用 Inter(300 用于统计数字,400 正文,500 界面中等字重,600 标题与表头),采用 14px 字号阶梯——12 说明文字 · 14 正文与控件 · 16 区块标题 · 20 页面标题;24px 只用于问候语和统计数字(字重 300);11px 只用于图表文字。14px 起使用负字距(-.15 到 -.54px),12px 字距为 0。数据 / 代码 / 日志用 Menlo,与所在行同字号,使用等宽数字。中文(简体与繁体)、日文、韩文(`lang="zh|ja|ko"`)统一一条规则:14px 以下比西文大一号(12 → 13,11 → 12,任何 CJK 文字都不小于 12px);500 和 600 字重都改为 500(同样的数字,中日韩文字看起来比字母粗;sm 区域内中等字重改为 400,因为小字号加粗会让笔画粘连);字距为 0,不做大写转换。
31
31
  - **间距**:实际采用 4px 体系(2/4/6/8/10/12/16/24/32);页面内边距 24×32;卡片内边距 21(紧凑型 17);区块间距 24。工具栏内的间距由尺寸层级决定:组内 8,组间 12/16/24,卡片边缘到第一个控件 12/16。
32
- - **尺寸层级**:每个区域只用一档——`data-size="sm" | "md" | "lg"` 对应 24 / 32 / 36px 控件、12 / 14 / 14px 控件文字、32 / 40 / 44px 行高;区域内所有控件自动继承,可交互元素不小于 24px,同一行内绝不混用高度或字号。md 是应用默认,对话框为 lg,密集表格为 sm。
32
+ - **尺寸层级**:每个区域只用一档——`data-size="sm" | "md" | "lg"` 对应 28 / 32 / 40px 控件、12 / 14 / 14px 控件文字(CJK 为 13 / 14 / 14)、36 / 40 / 48px 行高;区域内所有控件自动继承,可交互元素不小于 24px,同一行内绝不混用高度或字号。md 是应用默认,对话框为 lg,密集表格为 sm。
33
33
  - **圆角**:4 小型控件 · 8 按钮 / 输入框 / 导航 / 标签 · 10 卡片 / 搜索框 / 上传区 · 14 组件面板图标块 · 16 画布节点 · 端口 / 步骤圆点 / 胶囊用全圆角。
34
34
  - **边框**:全局使用发丝级细边框——卡片 rgba(229,229,229,.6);控件 #e5e5e5;行分隔线 #f5f5f5;复选框 #d1d5db 1.5px;端口 #d4d4d4 2px;上传区虚线 #d4d4d4 2px。
35
35
  - **阴影**:几乎全平面。只有画布节点有阴影:`0 1px 3px rgba(0,0,0,.1), 0 1px 2px -1px rgba(0,0,0,.1)`;选中态 = blue-400 边框 + 2px blue-100 光环;徽标带 2px 白色描边。其余一律靠边框区分层次。
@@ -38,10 +38,12 @@ Keybricks 是面向财务团队的企业绩效管理(EPM)平台:文档与
38
38
  - **动效**:刻意克制(见下方"动效"一节)——悬停 / 选中 120–160ms 缓出,不弹跳,不大幅位移。
39
39
  - **布局框架**:左侧边栏 240px(可收起为 64px 图标栏);顶栏 56px(左侧搜索,右侧铃铛 + 黑色 "AI Assistant" 胶囊);可选的 240px 二级面板(文档树、管道组件面板);右侧配置面板 400px;底部数据预览抽屉 250px。
40
40
  - **卡片**:白底、10px 圆角、细边框、21px 内边距、14px / 500 字重标题——从不使用投影抬高。
41
- - **密度**:高密度;表格行高 32(sm)· 40(md)· 44(lg);表头与单元格同字号、字重 600、句首大写;等宽单元格与所在行同字号。
41
+ - **密度**:高密度;表格行高 32(sm)· 40(md)· 44(lg);表头与单元格同字号、字重 600、句首大写;金额单元格与所在行同字号、同字体,只加等宽数字(tabular figures);配置代码用 12px 代码标签。等宽字体只用于代码。
42
42
 
43
43
  ## 图标系统
44
44
  - 产品图标是 **Lucide** 线性图标集(16/14px,实际描边约 1.33px,颜色为 `currentColor`)。我们提供 `components/icons/Icon.jsx`,内嵌产品用到的每个图形的 Lucide 原始路径数据。用法:`<Icon name="search" size={16}/>`。
45
+ - **Keybricks 自绘图标**:为 Keybricks 自行绘制的 13 个图标与 Lucide 图标一起放在核心集中——AI 类(`ai`、`ai-sparkles`)、模块类(`reconciliation`、`consolidation`、`journal`、`event`、`view-tree`)和操作类(`drilldown`、`add-below`、`copy-data`、`task-execution`、`time-future`、`time-restatement`)。新画图标之前,先在图标库里搜索:*hierarchy* 其实就是 `layers`,*change* 就是 `repeat`。
46
+ - **绘制规范**(所有核心图标,以及今后新增的图标):24×24 网格;路径限制在 2–22 范围内,描边后四周留 1px 边距;描边 2,圆头圆角,无填充,`currentColor`;坐标取整数;相互独立的元素之间至少留 2px 空隙;矩形圆角 rx 2,8px 及以下的小矩形用 rx 1。新增图标前,先在 14px 和 16px 下检查。
45
47
  - 图标颜色跟随文字颜色(默认框架色 #525252,弱化态 #a1a1a1,彩色图标块内为对应分类色)。
46
48
  - 彩色图标块是标志性元素:40×40 圆角 14(组件面板)、48×48 圆角 16(节点)、32×32 圆角 8 带细边框(列表行)——100 档浅色底 + 600 档分类色图标。
47
49
  - 从不用 emoji 或 unicode 字符充当图标。
@@ -78,7 +80,6 @@ Keybricks 是面向财务团队的企业绩效管理(EPM)平台:文档与
78
80
  - `styles.css` —— 全局 CSS 入口(引入所有 token 文件);`keybricks.css` —— 包的样式入口(token + 悬停钩子)。
79
81
  - `assets/` —— keybricks-logo.png 与图标关键词索引。
80
82
  - `guidelines/` —— 基础规范展示卡片(Design System 标签页)。
81
- - `ui_kits/keybricks-app/` —— 可交互的产品复刻:首页、文档、管道编辑器、系统迁移。
82
83
  - `SKILL.md` —— Agent 技能入口文件。
83
84
 
84
85
  ## 组件清单
package/tokens/alpha.css CHANGED
@@ -15,9 +15,11 @@
15
15
  --neutral-alpha-2:rgba(10,10,10,.02);--neutral-alpha-4:rgba(10,10,10,.04);--neutral-alpha-8:rgba(10,10,10,.08);--neutral-alpha-12:rgba(10,10,10,.12);--neutral-alpha-16:rgba(10,10,10,.16);--neutral-alpha-24:rgba(10,10,10,.24);--neutral-alpha-32:rgba(10,10,10,.32);--neutral-alpha-48:rgba(10,10,10,.48);--neutral-alpha-64:rgba(10,10,10,.64);--neutral-alpha-80:rgba(10,10,10,.8);
16
16
  --brand-alpha-8:rgba(21,93,252,.08);--brand-alpha-12:rgba(21,93,252,.12);--brand-alpha-16:rgba(21,93,252,.16);--brand-alpha-24:rgba(21,93,252,.24);--brand-alpha-32:rgba(21,93,252,.32);
17
17
  /* Semantic overlays built from the ramps above */
18
- --overlay-hover:var(--neutral-alpha-4);--overlay-press:var(--neutral-alpha-8);--overlay-selected:var(--brand-alpha-8);--overlay-drag:var(--brand-alpha-12);
18
+ --overlay-hover:var(--neutral-alpha-4);--overlay-press:var(--neutral-alpha-12); /* on white these equal --bg-hover / --bg-press; on any other surface they darken it by the same step */
19
+ --overlay-selected:var(--brand-alpha-8);--overlay-drag:var(--brand-alpha-12);
19
20
  }
20
21
  [data-theme="dark"]{
21
22
  --neutral-alpha-2:rgba(255,255,255,.02);--neutral-alpha-4:rgba(255,255,255,.04);--neutral-alpha-8:rgba(255,255,255,.08);--neutral-alpha-12:rgba(255,255,255,.12);--neutral-alpha-16:rgba(255,255,255,.16);--neutral-alpha-24:rgba(255,255,255,.24);--neutral-alpha-32:rgba(255,255,255,.32);--neutral-alpha-48:rgba(255,255,255,.48);--neutral-alpha-64:rgba(255,255,255,.64);--neutral-alpha-80:rgba(255,255,255,.8);
22
23
  --brand-alpha-8:rgba(43,127,255,.1);--brand-alpha-12:rgba(43,127,255,.14);--brand-alpha-16:rgba(43,127,255,.2);--brand-alpha-24:rgba(43,127,255,.28);--brand-alpha-32:rgba(43,127,255,.36);
24
+ --overlay-hover:var(--neutral-alpha-8);--overlay-press:var(--neutral-alpha-16); /* dark: matches the --bg-hover / --bg-press steps on --bg-surface */
23
25
  }
package/tokens/colors.css CHANGED
@@ -25,7 +25,7 @@
25
25
  --on-accent:#ffffff;
26
26
  /* Foreground on the neutral "dark pill" (AI Assistant), which inverts in dark */
27
27
  --action-dark-fg:#ffffff;
28
- --border-card:rgba(229,229,229,.6);--border-control:var(--neutral-200);--border-subtle:var(--neutral-100);--border-strong:var(--neutral-300);
28
+ --border-card:rgba(229,229,229,.6);--border-control:var(--neutral-200);--border-split:var(--neutral-300);--border-subtle:var(--neutral-100);--border-strong:var(--neutral-300);
29
29
  --action-primary:var(--blue-600);--action-primary-hover:var(--blue-700);--action-primary-active:#1039c4;--action-dark:var(--neutral-900);--action-dark-hover:var(--neutral-800);--action-dark-active:var(--neutral-950);
30
30
  /* Press (active) fills — one step past the hover value in each family */
31
31
  --bg-press:var(--neutral-200);--soft-active:var(--blue-200);--danger-active:var(--red-800);--danger-soft-hover:var(--red-100);--danger-soft-active:var(--red-200);
package/tokens/dark.css CHANGED
@@ -20,7 +20,7 @@ color-scheme:dark;
20
20
  --text-primary:#fafafa;--text-heading:#f5f5f5;--text-strong:#e5e5e5;--text-body:#d4d4d4;--text-secondary:#a1a1a1;--text-muted:#737373;--text-inverse:#0a0a0a;
21
21
  --on-accent:#ffffff;--action-dark-fg:#0a0a0a;
22
22
  /* Borders */
23
- --border-card:rgba(255,255,255,.09);--border-control:#333333;--border-subtle:#242424;--border-strong:#454545;
23
+ --border-card:rgba(255,255,255,.09);--border-control:#333333;--border-split:#404040;--border-subtle:#242424;--border-strong:#454545;
24
24
  /* Actions */
25
25
  --action-primary:#1f6feb;--action-primary-hover:#2b7fff;--action-primary-active:#1a5ec9;--action-dark:#fafafa;--action-dark-hover:#e5e5e5;--action-dark-active:#d4d4d4;
26
26
  /* Press (active) fills — one step past the hover value in each family */
package/tokens/layout.css CHANGED
@@ -20,7 +20,7 @@
20
20
  /* Size tiers — one scale that every control reads. A region (app root, toolbar, filter bar, form, table,
21
21
  dialog, drawer) declares data-size="sm" | "md" | "lg"; everything inside inherits these values, so controls
22
22
  that share a row can never disagree. md is the default; the rules below the :root block switch the tier.
23
- sm 24 · md 32 · lg 36 for controls; bars and rows are 8px taller; a bar inside a bordered card 16px taller. */
23
+ sm 28 · md 32 · lg 40 for controls (2.3.0: was 24 / 32 / 36); bars and rows are 8px taller; a bar inside a bordered card 16px taller. */
24
24
  --control-h:32px; /* buttons, inputs, selects, search, steppers, segmented controls, chips, pagination items */
25
25
  --control-text:var(--text-base);--control-leading:var(--leading-base);--control-tracking:var(--tracking-base); /* text inside controls and their labels */
26
26
  --control-icon:16px; /* icon inside a control */
@@ -34,8 +34,10 @@
34
34
  --check-size:16px; /* checkbox and radio box */
35
35
  --tag-h:24px; /* Tag */
36
36
  --switch-w:36px;--switch-h:20px; /* Switch track */
37
+ /* Two-line title cell (Table column `twoLine`): row padding, title → description gap, icon tile, tile → text gap. md row = 10 + 20 + 2 + 16 + 10 = 58px */
38
+ --title-cell-py:10px;--title-cell-gap:2px;--title-cell-tile:32px;--title-cell-icon:16px;--title-cell-tile-r:8px;--title-cell-tile-gap:12px;
37
39
  /* Compatibility aliases — superseded by the tier tokens above */
38
- --h-button:var(--control-h);--h-input:var(--control-h);--h-button-sm:24px;
40
+ --h-button:var(--control-h);--h-input:var(--control-h);--h-button-sm:28px;
39
41
  /* Page rhythm */
40
42
  --page-pad-y:24px;--page-pad-x:32px;--section-gap:24px;--card-pad:21px;--card-pad-sm:17px;
41
43
  /* Stacking */
@@ -47,6 +49,6 @@
47
49
  --z-tooltip:100; /* @kind other */
48
50
  }
49
51
  /* The three tiers. Declared after :root so a tier set on <html> itself also wins. */
50
- [data-size="sm"]{--control-h:24px;--control-text:var(--text-xs);--control-leading:var(--leading-xs);--control-tracking:var(--tracking-xs);--control-icon:14px;--control-px:8px;--control-gap:8px;--group-gap:12px;--bar-h:32px;--bar-card-h:40px;--edge-pad:12px;--cell-px:8px;--check-size:14px;--tag-h:20px;--switch-w:28px;--switch-h:16px}
51
- [data-size="md"]{--control-h:32px;--control-text:var(--text-base);--control-leading:var(--leading-base);--control-tracking:var(--tracking-base);--control-icon:16px;--control-px:12px;--control-gap:8px;--group-gap:16px;--bar-h:40px;--bar-card-h:48px;--edge-pad:16px;--cell-px:12px;--check-size:16px;--tag-h:24px;--switch-w:36px;--switch-h:20px}
52
- [data-size="lg"]{--control-h:36px;--control-text:var(--text-base);--control-leading:var(--leading-base);--control-tracking:var(--tracking-base);--control-icon:16px;--control-px:16px;--control-gap:8px;--group-gap:24px;--bar-h:44px;--bar-card-h:52px;--edge-pad:16px;--cell-px:16px;--check-size:16px;--tag-h:28px;--switch-w:44px;--switch-h:24px}
52
+ [data-size="sm"]{--control-h:28px;--control-text:var(--text-xs);--control-leading:var(--leading-xs);--control-tracking:var(--tracking-xs);--control-icon:14px;--control-px:8px;--control-gap:8px;--group-gap:12px;--bar-h:36px;--bar-card-h:44px;--edge-pad:12px;--cell-px:8px;--check-size:14px;--tag-h:20px;--switch-w:28px;--switch-h:16px;--text-code:11px;--leading-code:16px;--title-cell-py:8px;--title-cell-gap:2px;--title-cell-tile:28px;--title-cell-icon:14px;--title-cell-tile-r:8px;--title-cell-tile-gap:8px}
53
+ [data-size="md"]{--control-h:32px;--control-text:var(--text-base);--control-leading:var(--leading-base);--control-tracking:var(--tracking-base);--control-icon:16px;--control-px:12px;--control-gap:8px;--group-gap:16px;--bar-h:40px;--bar-card-h:48px;--edge-pad:16px;--cell-px:12px;--check-size:16px;--tag-h:24px;--switch-w:36px;--switch-h:20px;--text-code:12px;--leading-code:18px;--title-cell-py:10px;--title-cell-gap:2px;--title-cell-tile:32px;--title-cell-icon:16px;--title-cell-tile-r:8px;--title-cell-tile-gap:12px}
54
+ [data-size="lg"]{--control-h:40px;--control-text:var(--text-base);--control-leading:var(--leading-base);--control-tracking:var(--tracking-base);--control-icon:16px;--control-px:16px;--control-gap:8px;--group-gap:24px;--bar-h:48px;--bar-card-h:56px;--edge-pad:16px;--cell-px:16px;--check-size:16px;--tag-h:28px;--switch-w:44px;--switch-h:24px;--text-code:12px;--leading-code:18px;--title-cell-py:14px;--title-cell-gap:4px;--title-cell-tile:40px;--title-cell-icon:20px;--title-cell-tile-r:10px;--title-cell-tile-gap:12px}
@@ -42,6 +42,7 @@ export type TokenName =
42
42
  | "--blue-950"
43
43
  | "--border-card"
44
44
  | "--border-control"
45
+ | "--border-split"
45
46
  | "--border-strong"
46
47
  | "--border-subtle"
47
48
  | "--brand-alpha-12"
@@ -167,6 +168,7 @@ export type TokenName =
167
168
  | "--leading-3xl"
168
169
  | "--leading-4xl"
169
170
  | "--leading-base"
171
+ | "--leading-code"
170
172
  | "--leading-display"
171
173
  | "--leading-lg"
172
174
  | "--leading-md"
@@ -306,11 +308,14 @@ export type TokenName =
306
308
  | "--teal-950"
307
309
  | "--text-2xl"
308
310
  | "--text-2xs"
311
+ | "--text-2xs-mono"
309
312
  | "--text-3xl"
310
313
  | "--text-4xl"
311
314
  | "--text-base"
312
315
  | "--text-body"
316
+ | "--text-code"
313
317
  | "--text-display"
318
+ | "--text-glyph-min"
314
319
  | "--text-heading"
315
320
  | "--text-inverse"
316
321
  | "--text-lg"
@@ -323,6 +328,12 @@ export type TokenName =
323
328
  | "--text-strong"
324
329
  | "--text-xl"
325
330
  | "--text-xs"
331
+ | "--title-cell-gap"
332
+ | "--title-cell-icon"
333
+ | "--title-cell-py"
334
+ | "--title-cell-tile"
335
+ | "--title-cell-tile-gap"
336
+ | "--title-cell-tile-r"
326
337
  | "--tooltip-bg"
327
338
  | "--tooltip-fg"
328
339
  | "--topbar-h"
@@ -395,6 +406,7 @@ export type TokenKey =
395
406
  | "blue950"
396
407
  | "borderCard"
397
408
  | "borderControl"
409
+ | "borderSplit"
398
410
  | "borderStrong"
399
411
  | "borderSubtle"
400
412
  | "brandAlpha12"
@@ -520,6 +532,7 @@ export type TokenKey =
520
532
  | "leading3xl"
521
533
  | "leading4xl"
522
534
  | "leadingBase"
535
+ | "leadingCode"
523
536
  | "leadingDisplay"
524
537
  | "leadingLg"
525
538
  | "leadingMd"
@@ -659,11 +672,14 @@ export type TokenKey =
659
672
  | "teal950"
660
673
  | "text2xl"
661
674
  | "text2xs"
675
+ | "text2xsMono"
662
676
  | "text3xl"
663
677
  | "text4xl"
664
678
  | "textBase"
665
679
  | "textBody"
680
+ | "textCode"
666
681
  | "textDisplay"
682
+ | "textGlyphMin"
667
683
  | "textHeading"
668
684
  | "textInverse"
669
685
  | "textLg"
@@ -676,6 +692,12 @@ export type TokenKey =
676
692
  | "textStrong"
677
693
  | "textXl"
678
694
  | "textXs"
695
+ | "titleCellGap"
696
+ | "titleCellIcon"
697
+ | "titleCellPy"
698
+ | "titleCellTile"
699
+ | "titleCellTileGap"
700
+ | "titleCellTileR"
679
701
  | "tooltipBg"
680
702
  | "tooltipFg"
681
703
  | "topbarH"
package/tokens/tokens.js CHANGED
@@ -45,6 +45,7 @@ export const cssVar = {
45
45
  blue950: "var(--blue-950)",
46
46
  borderCard: "var(--border-card)",
47
47
  borderControl: "var(--border-control)",
48
+ borderSplit: "var(--border-split)",
48
49
  borderStrong: "var(--border-strong)",
49
50
  borderSubtle: "var(--border-subtle)",
50
51
  brandAlpha12: "var(--brand-alpha-12)",
@@ -170,6 +171,7 @@ export const cssVar = {
170
171
  leading3xl: "var(--leading-3xl)",
171
172
  leading4xl: "var(--leading-4xl)",
172
173
  leadingBase: "var(--leading-base)",
174
+ leadingCode: "var(--leading-code)",
173
175
  leadingDisplay: "var(--leading-display)",
174
176
  leadingLg: "var(--leading-lg)",
175
177
  leadingMd: "var(--leading-md)",
@@ -309,11 +311,14 @@ export const cssVar = {
309
311
  teal950: "var(--teal-950)",
310
312
  text2xl: "var(--text-2xl)",
311
313
  text2xs: "var(--text-2xs)",
314
+ text2xsMono: "var(--text-2xs-mono)",
312
315
  text3xl: "var(--text-3xl)",
313
316
  text4xl: "var(--text-4xl)",
314
317
  textBase: "var(--text-base)",
315
318
  textBody: "var(--text-body)",
319
+ textCode: "var(--text-code)",
316
320
  textDisplay: "var(--text-display)",
321
+ textGlyphMin: "var(--text-glyph-min)",
317
322
  textHeading: "var(--text-heading)",
318
323
  textInverse: "var(--text-inverse)",
319
324
  textLg: "var(--text-lg)",
@@ -326,6 +331,12 @@ export const cssVar = {
326
331
  textStrong: "var(--text-strong)",
327
332
  textXl: "var(--text-xl)",
328
333
  textXs: "var(--text-xs)",
334
+ titleCellGap: "var(--title-cell-gap)",
335
+ titleCellIcon: "var(--title-cell-icon)",
336
+ titleCellPy: "var(--title-cell-py)",
337
+ titleCellTile: "var(--title-cell-tile)",
338
+ titleCellTileGap: "var(--title-cell-tile-gap)",
339
+ titleCellTileR: "var(--title-cell-tile-r)",
329
340
  tooltipBg: "var(--tooltip-bg)",
330
341
  tooltipFg: "var(--tooltip-fg)",
331
342
  topbarH: "var(--topbar-h)",
@@ -400,6 +411,7 @@ export const light = {
400
411
  blue950: "#162456",
401
412
  borderCard: "rgba(229,229,229,.6)",
402
413
  borderControl: "#e5e5e5",
414
+ borderSplit: "#d4d4d4",
403
415
  borderStrong: "#d4d4d4",
404
416
  borderSubtle: "#f5f5f5",
405
417
  brandAlpha12: "rgba(21,93,252,.12)",
@@ -493,7 +505,7 @@ export const light = {
493
505
  fontSans: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif",
494
506
  groupGap: "16px",
495
507
  hButton: "32px",
496
- hButtonSm: "24px",
508
+ hButtonSm: "28px",
497
509
  hInput: "32px",
498
510
  hNavItem: "36px",
499
511
  hSubnavItem: "32px",
@@ -525,6 +537,7 @@ export const light = {
525
537
  leading3xl: "46px",
526
538
  leading4xl: "56px",
527
539
  leadingBase: "20px",
540
+ leadingCode: "18px",
528
541
  leadingDisplay: "68px",
529
542
  leadingLg: "28px",
530
543
  leadingMd: "24px",
@@ -570,7 +583,7 @@ export const light = {
570
583
  orange950: "#461700",
571
584
  overlayDrag: "rgba(21,93,252,.12)",
572
585
  overlayHover: "rgba(10,10,10,.04)",
573
- overlayPress: "rgba(10,10,10,.08)",
586
+ overlayPress: "rgba(10,10,10,.12)",
574
587
  overlaySelected: "rgba(21,93,252,.08)",
575
588
  pagePadX: "32px",
576
589
  pagePadY: "24px",
@@ -664,11 +677,14 @@ export const light = {
664
677
  teal950: "#002f2a",
665
678
  text2xl: "30px",
666
679
  text2xs: "11px",
680
+ text2xsMono: "11px",
667
681
  text3xl: "38px",
668
682
  text4xl: "48px",
669
683
  textBase: "14px",
670
684
  textBody: "#525252",
685
+ textCode: "12px",
671
686
  textDisplay: "60px",
687
+ textGlyphMin: "11px",
672
688
  textHeading: "#171717",
673
689
  textInverse: "#ffffff",
674
690
  textLg: "20px",
@@ -681,6 +697,12 @@ export const light = {
681
697
  textStrong: "#404040",
682
698
  textXl: "24px",
683
699
  textXs: "12px",
700
+ titleCellGap: "2px",
701
+ titleCellIcon: "16px",
702
+ titleCellPy: "10px",
703
+ titleCellTile: "32px",
704
+ titleCellTileGap: "12px",
705
+ titleCellTileR: "8px",
684
706
  tooltipBg: "#171717",
685
707
  tooltipFg: "#ffffff",
686
708
  topbarH: "56px",
@@ -755,6 +777,7 @@ export const dark = {
755
777
  blue950: "#162456",
756
778
  borderCard: "rgba(255,255,255,.09)",
757
779
  borderControl: "#333333",
780
+ borderSplit: "#404040",
758
781
  borderStrong: "#454545",
759
782
  borderSubtle: "#242424",
760
783
  brandAlpha12: "rgba(43,127,255,.14)",
@@ -848,7 +871,7 @@ export const dark = {
848
871
  fontSans: "'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif",
849
872
  groupGap: "16px",
850
873
  hButton: "32px",
851
- hButtonSm: "24px",
874
+ hButtonSm: "28px",
852
875
  hInput: "32px",
853
876
  hNavItem: "36px",
854
877
  hSubnavItem: "32px",
@@ -880,6 +903,7 @@ export const dark = {
880
903
  leading3xl: "46px",
881
904
  leading4xl: "56px",
882
905
  leadingBase: "20px",
906
+ leadingCode: "18px",
883
907
  leadingDisplay: "68px",
884
908
  leadingLg: "28px",
885
909
  leadingMd: "24px",
@@ -924,8 +948,8 @@ export const dark = {
924
948
  orange900: "#612300",
925
949
  orange950: "#461700",
926
950
  overlayDrag: "rgba(43,127,255,.14)",
927
- overlayHover: "rgba(255,255,255,.04)",
928
- overlayPress: "rgba(255,255,255,.08)",
951
+ overlayHover: "rgba(255,255,255,.08)",
952
+ overlayPress: "rgba(255,255,255,.16)",
929
953
  overlaySelected: "rgba(43,127,255,.1)",
930
954
  pagePadX: "32px",
931
955
  pagePadY: "24px",
@@ -1019,11 +1043,14 @@ export const dark = {
1019
1043
  teal950: "#002f2a",
1020
1044
  text2xl: "30px",
1021
1045
  text2xs: "11px",
1046
+ text2xsMono: "11px",
1022
1047
  text3xl: "38px",
1023
1048
  text4xl: "48px",
1024
1049
  textBase: "14px",
1025
1050
  textBody: "#d4d4d4",
1051
+ textCode: "12px",
1026
1052
  textDisplay: "60px",
1053
+ textGlyphMin: "11px",
1027
1054
  textHeading: "#f5f5f5",
1028
1055
  textInverse: "#0a0a0a",
1029
1056
  textLg: "20px",
@@ -1036,6 +1063,12 @@ export const dark = {
1036
1063
  textStrong: "#e5e5e5",
1037
1064
  textXl: "24px",
1038
1065
  textXs: "12px",
1066
+ titleCellGap: "2px",
1067
+ titleCellIcon: "16px",
1068
+ titleCellPy: "10px",
1069
+ titleCellTile: "32px",
1070
+ titleCellTileGap: "12px",
1071
+ titleCellTileR: "8px",
1039
1072
  tooltipBg: "#f5f5f5",
1040
1073
  tooltipFg: "#0a0a0a",
1041
1074
  topbarH: "56px",
@@ -1067,6 +1100,6 @@ export const dark = {
1067
1100
  zTooltip: "100",
1068
1101
  };
1069
1102
 
1070
- export const tokenNames = ["--action-dark","--action-dark-active","--action-dark-fg","--action-dark-hover","--action-primary","--action-primary-active","--action-primary-hover","--amber-100","--amber-200","--amber-300","--amber-400","--amber-50","--amber-500","--amber-600","--amber-700","--amber-800","--amber-900","--amber-950","--bar-card-h","--bar-h","--bg-active","--bg-app","--bg-hover","--bg-inset","--bg-press","--bg-raised","--bg-scrim","--bg-surface","--bg-table-header","--blue-100","--blue-200","--blue-300","--blue-400","--blue-50","--blue-500","--blue-600","--blue-700","--blue-800","--blue-900","--blue-950","--border-card","--border-control","--border-strong","--border-subtle","--brand-alpha-12","--brand-alpha-16","--brand-alpha-24","--brand-alpha-32","--brand-alpha-8","--card-pad","--card-pad-sm","--cat-join","--cat-join-bg","--cat-merge","--cat-merge-bg","--cat-output","--cat-output-bg","--cat-source","--cat-source-bg","--cat-transform","--cat-transform-bg","--cell-px","--chart-area-alpha","--chart-axis","--chart-blue","--chart-grid","--chart-guide","--chart-heat-1","--chart-heat-2","--chart-heat-3","--chart-heat-4","--chart-heat-5","--chart-heat-ink","--chart-label","--chart-neg","--chart-pos","--chart-total","--chart-track","--check-size","--checkbox-border","--control-gap","--control-h","--control-icon","--control-leading","--control-px","--control-text","--control-tracking","--cyan-100","--cyan-200","--cyan-300","--cyan-400","--cyan-50","--cyan-500","--cyan-600","--cyan-700","--cyan-800","--cyan-900","--cyan-950","--danger","--danger-active","--danger-bg","--danger-soft-active","--danger-soft-hover","--danger-text","--dot-neutral","--drawer-h","--dropzone-border","--dropzone-border-hover","--dur","--dur-fast","--dur-instant","--dur-slow","--dur-slower","--ease-in","--ease-in-out","--ease-out","--edge","--edge-pad","--emerald-100","--emerald-200","--emerald-300","--emerald-400","--emerald-50","--emerald-500","--emerald-600","--emerald-700","--emerald-800","--emerald-900","--emerald-950","--focus-border","--focus-ring","--font-mono","--font-sans","--group-gap","--h-button","--h-button-sm","--h-input","--h-nav-item","--h-subnav-item","--h-tree-item","--hue-amber-bg","--hue-amber-fg","--hue-blue-bg","--hue-blue-fg","--hue-cyan-bg","--hue-cyan-fg","--hue-gray-bg","--hue-gray-fg","--hue-green-bg","--hue-green-fg","--hue-orange-bg","--hue-orange-fg","--hue-pink-bg","--hue-pink-fg","--hue-purple-bg","--hue-purple-fg","--hue-red-bg","--hue-red-fg","--hue-teal-bg","--hue-teal-fg","--info-bg","--info-fg","--leading-2xl","--leading-2xs","--leading-3xl","--leading-4xl","--leading-base","--leading-display","--leading-lg","--leading-md","--leading-num","--leading-sm","--leading-xl","--leading-xs","--link","--link-hover","--neutral-0","--neutral-100","--neutral-200","--neutral-300","--neutral-400","--neutral-50","--neutral-500","--neutral-600","--neutral-700","--neutral-800","--neutral-900","--neutral-950","--neutral-alpha-12","--neutral-alpha-16","--neutral-alpha-2","--neutral-alpha-24","--neutral-alpha-32","--neutral-alpha-4","--neutral-alpha-48","--neutral-alpha-64","--neutral-alpha-8","--neutral-alpha-80","--on-accent","--orange-100","--orange-200","--orange-300","--orange-400","--orange-50","--orange-500","--orange-600","--orange-700","--orange-800","--orange-900","--orange-950","--overlay-drag","--overlay-hover","--overlay-press","--overlay-selected","--page-pad-x","--page-pad-y","--panel-w","--pink-100","--pink-200","--pink-300","--pink-400","--pink-50","--pink-500","--pink-600","--pink-700","--pink-800","--pink-900","--pink-950","--port-border","--press-filter","--press-filter-strong","--purple-100","--purple-200","--purple-300","--purple-400","--purple-50","--purple-500","--purple-600","--purple-700","--purple-800","--purple-900","--purple-950","--radius-full","--radius-lg","--radius-md","--radius-node","--radius-sm","--radius-tile","--rail-w","--red-100","--red-200","--red-300","--red-400","--red-50","--red-500","--red-600","--red-700","--red-800","--red-900","--red-950","--ring-focus","--ring-surface","--section-gap","--selected-border","--series-1","--series-10","--series-2","--series-3","--series-4","--series-5","--series-6","--series-7","--series-8","--series-9","--shadow-menu","--shadow-modal","--shadow-node","--shadow-selected","--sidebar-w","--skeleton","--soft-active","--soft-bg","--soft-border","--soft-hover","--success","--success-bg","--success-strong","--success-text","--switch-h","--switch-w","--t-hover","--t-theme","--tag-h","--teal-100","--teal-200","--teal-300","--teal-400","--teal-50","--teal-500","--teal-600","--teal-700","--teal-800","--teal-900","--teal-950","--text-2xl","--text-2xs","--text-3xl","--text-4xl","--text-base","--text-body","--text-display","--text-heading","--text-inverse","--text-lg","--text-md","--text-muted","--text-num","--text-primary","--text-secondary","--text-sm","--text-strong","--text-xl","--text-xs","--tooltip-bg","--tooltip-fg","--topbar-h","--track","--tracking-2xl","--tracking-2xs","--tracking-3xl","--tracking-4xl","--tracking-base","--tracking-display","--tracking-lg","--tracking-md","--tracking-num","--tracking-sm","--tracking-xl","--tracking-xs","--warning","--warning-bg","--warning-text","--weight-light","--weight-medium","--weight-regular","--weight-semibold","--z-drawer","--z-menu","--z-modal","--z-sticky","--z-toast","--z-tooltip"];
1103
+ export const tokenNames = ["--action-dark","--action-dark-active","--action-dark-fg","--action-dark-hover","--action-primary","--action-primary-active","--action-primary-hover","--amber-100","--amber-200","--amber-300","--amber-400","--amber-50","--amber-500","--amber-600","--amber-700","--amber-800","--amber-900","--amber-950","--bar-card-h","--bar-h","--bg-active","--bg-app","--bg-hover","--bg-inset","--bg-press","--bg-raised","--bg-scrim","--bg-surface","--bg-table-header","--blue-100","--blue-200","--blue-300","--blue-400","--blue-50","--blue-500","--blue-600","--blue-700","--blue-800","--blue-900","--blue-950","--border-card","--border-control","--border-split","--border-strong","--border-subtle","--brand-alpha-12","--brand-alpha-16","--brand-alpha-24","--brand-alpha-32","--brand-alpha-8","--card-pad","--card-pad-sm","--cat-join","--cat-join-bg","--cat-merge","--cat-merge-bg","--cat-output","--cat-output-bg","--cat-source","--cat-source-bg","--cat-transform","--cat-transform-bg","--cell-px","--chart-area-alpha","--chart-axis","--chart-blue","--chart-grid","--chart-guide","--chart-heat-1","--chart-heat-2","--chart-heat-3","--chart-heat-4","--chart-heat-5","--chart-heat-ink","--chart-label","--chart-neg","--chart-pos","--chart-total","--chart-track","--check-size","--checkbox-border","--control-gap","--control-h","--control-icon","--control-leading","--control-px","--control-text","--control-tracking","--cyan-100","--cyan-200","--cyan-300","--cyan-400","--cyan-50","--cyan-500","--cyan-600","--cyan-700","--cyan-800","--cyan-900","--cyan-950","--danger","--danger-active","--danger-bg","--danger-soft-active","--danger-soft-hover","--danger-text","--dot-neutral","--drawer-h","--dropzone-border","--dropzone-border-hover","--dur","--dur-fast","--dur-instant","--dur-slow","--dur-slower","--ease-in","--ease-in-out","--ease-out","--edge","--edge-pad","--emerald-100","--emerald-200","--emerald-300","--emerald-400","--emerald-50","--emerald-500","--emerald-600","--emerald-700","--emerald-800","--emerald-900","--emerald-950","--focus-border","--focus-ring","--font-mono","--font-sans","--group-gap","--h-button","--h-button-sm","--h-input","--h-nav-item","--h-subnav-item","--h-tree-item","--hue-amber-bg","--hue-amber-fg","--hue-blue-bg","--hue-blue-fg","--hue-cyan-bg","--hue-cyan-fg","--hue-gray-bg","--hue-gray-fg","--hue-green-bg","--hue-green-fg","--hue-orange-bg","--hue-orange-fg","--hue-pink-bg","--hue-pink-fg","--hue-purple-bg","--hue-purple-fg","--hue-red-bg","--hue-red-fg","--hue-teal-bg","--hue-teal-fg","--info-bg","--info-fg","--leading-2xl","--leading-2xs","--leading-3xl","--leading-4xl","--leading-base","--leading-code","--leading-display","--leading-lg","--leading-md","--leading-num","--leading-sm","--leading-xl","--leading-xs","--link","--link-hover","--neutral-0","--neutral-100","--neutral-200","--neutral-300","--neutral-400","--neutral-50","--neutral-500","--neutral-600","--neutral-700","--neutral-800","--neutral-900","--neutral-950","--neutral-alpha-12","--neutral-alpha-16","--neutral-alpha-2","--neutral-alpha-24","--neutral-alpha-32","--neutral-alpha-4","--neutral-alpha-48","--neutral-alpha-64","--neutral-alpha-8","--neutral-alpha-80","--on-accent","--orange-100","--orange-200","--orange-300","--orange-400","--orange-50","--orange-500","--orange-600","--orange-700","--orange-800","--orange-900","--orange-950","--overlay-drag","--overlay-hover","--overlay-press","--overlay-selected","--page-pad-x","--page-pad-y","--panel-w","--pink-100","--pink-200","--pink-300","--pink-400","--pink-50","--pink-500","--pink-600","--pink-700","--pink-800","--pink-900","--pink-950","--port-border","--press-filter","--press-filter-strong","--purple-100","--purple-200","--purple-300","--purple-400","--purple-50","--purple-500","--purple-600","--purple-700","--purple-800","--purple-900","--purple-950","--radius-full","--radius-lg","--radius-md","--radius-node","--radius-sm","--radius-tile","--rail-w","--red-100","--red-200","--red-300","--red-400","--red-50","--red-500","--red-600","--red-700","--red-800","--red-900","--red-950","--ring-focus","--ring-surface","--section-gap","--selected-border","--series-1","--series-10","--series-2","--series-3","--series-4","--series-5","--series-6","--series-7","--series-8","--series-9","--shadow-menu","--shadow-modal","--shadow-node","--shadow-selected","--sidebar-w","--skeleton","--soft-active","--soft-bg","--soft-border","--soft-hover","--success","--success-bg","--success-strong","--success-text","--switch-h","--switch-w","--t-hover","--t-theme","--tag-h","--teal-100","--teal-200","--teal-300","--teal-400","--teal-50","--teal-500","--teal-600","--teal-700","--teal-800","--teal-900","--teal-950","--text-2xl","--text-2xs","--text-2xs-mono","--text-3xl","--text-4xl","--text-base","--text-body","--text-code","--text-display","--text-glyph-min","--text-heading","--text-inverse","--text-lg","--text-md","--text-muted","--text-num","--text-primary","--text-secondary","--text-sm","--text-strong","--text-xl","--text-xs","--title-cell-gap","--title-cell-icon","--title-cell-py","--title-cell-tile","--title-cell-tile-gap","--title-cell-tile-r","--tooltip-bg","--tooltip-fg","--topbar-h","--track","--tracking-2xl","--tracking-2xs","--tracking-3xl","--tracking-4xl","--tracking-base","--tracking-display","--tracking-lg","--tracking-md","--tracking-num","--tracking-sm","--tracking-xl","--tracking-xs","--warning","--warning-bg","--warning-text","--weight-light","--weight-medium","--weight-regular","--weight-semibold","--z-drawer","--z-menu","--z-modal","--z-sticky","--z-toast","--z-tooltip"];
1071
1104
 
1072
1105
  export default { cssVar, light, dark, tokenNames };