@keyfunc/keybricks-ds 2.4.13 → 2.5.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 (145) hide show
  1. package/DEPLOY.md +4 -4
  2. package/INTEGRATION.md +28 -6
  3. package/_adherence.oxlintrc.json +10 -4
  4. package/_ds_bundle.js +20559 -0
  5. package/_src/icon-index.js +1 -0
  6. package/_src/unicons-index.js +1 -0
  7. package/_src/usage-code.js +737 -0
  8. package/changelog.js +17 -0
  9. package/components/_cards/accordion.card.html +1 -1
  10. package/components/_cards/action-chip.card.html +1 -1
  11. package/components/_cards/activity.card.html +1 -1
  12. package/components/_cards/alert.card.html +1 -1
  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 +1 -1
  16. package/components/_cards/button-1-base.card.html +1 -1
  17. package/components/_cards/button-2-states.card.html +1 -1
  18. package/components/_cards/button-3-sizes-icons.card.html +1 -1
  19. package/components/_cards/button-4-group.card.html +1 -1
  20. package/components/_cards/cards-indicators.card.html +1 -1
  21. package/components/_cards/charts-1-sparkline.card.html +1 -1
  22. package/components/_cards/charts-10-gauge.card.html +1 -1
  23. package/components/_cards/charts-11-funnel.card.html +1 -1
  24. package/components/_cards/charts-12-treemap.card.html +1 -1
  25. package/components/_cards/charts-14-radar.card.html +1 -1
  26. package/components/_cards/charts-15-distribution.card.html +1 -1
  27. package/components/_cards/charts-16-pareto.card.html +1 -1
  28. package/components/_cards/charts-17-candlestick.card.html +1 -1
  29. package/components/_cards/charts-18-sankey.card.html +1 -1
  30. package/components/_cards/charts-19-chord.card.html +1 -1
  31. package/components/_cards/charts-2-line.card.html +1 -1
  32. package/components/_cards/charts-20-sunburst.card.html +1 -1
  33. package/components/_cards/charts-21-worldmap.card.html +1 -1
  34. package/components/_cards/charts-22-gantt.card.html +1 -1
  35. package/components/_cards/charts-23-bar3d.card.html +1 -1
  36. package/components/_cards/charts-24-pie3d.card.html +1 -1
  37. package/components/_cards/charts-25-surface3d.card.html +1 -1
  38. package/components/_cards/charts-26-scatter3d.card.html +1 -1
  39. package/components/_cards/charts-27-ribbon3d.card.html +1 -1
  40. package/components/_cards/charts-3-bar.card.html +1 -1
  41. package/components/_cards/charts-4-barlist.card.html +1 -1
  42. package/components/_cards/charts-5-donut.card.html +1 -1
  43. package/components/_cards/charts-6-scatter.card.html +1 -1
  44. package/components/_cards/charts-7-heatmap.card.html +1 -1
  45. package/components/_cards/charts-8-waterfall.card.html +1 -1
  46. package/components/_cards/charts-9-bullet.card.html +1 -1
  47. package/components/_cards/checkbox.card.html +1 -1
  48. package/components/_cards/codeblock.card.html +1 -1
  49. package/components/_cards/combobox.card.html +1 -1
  50. package/components/_cards/context-menu.card.html +1 -1
  51. package/components/_cards/date-picker.card.html +1 -1
  52. package/components/_cards/diffvalue.card.html +1 -1
  53. package/components/_cards/divider.card.html +1 -1
  54. package/components/_cards/drawer.card.html +1 -1
  55. package/components/_cards/dropdown-menu.card.html +1 -1
  56. package/components/_cards/dropzone.card.html +1 -1
  57. package/components/_cards/empty-state.card.html +1 -1
  58. package/components/_cards/icon-button.card.html +1 -1
  59. package/components/_cards/input.card.html +1 -1
  60. package/components/_cards/kbd.card.html +1 -1
  61. package/components/_cards/keyvalue.card.html +1 -1
  62. package/components/_cards/listrow.card.html +1 -1
  63. package/components/_cards/loading.card.html +1 -1
  64. package/components/_cards/log-viewer.card.html +1 -1
  65. package/components/_cards/multi-select.card.html +1 -1
  66. package/components/_cards/number-stepper.card.html +1 -1
  67. package/components/_cards/pagination.card.html +1 -1
  68. package/components/_cards/people.card.html +1 -1
  69. package/components/_cards/pipeline-node.card.html +1 -1
  70. package/components/_cards/pipeline-palette.card.html +1 -1
  71. package/components/_cards/radio.card.html +1 -1
  72. package/components/_cards/relative-time-picker.card.html +1 -1
  73. package/components/_cards/search.card.html +1 -1
  74. package/components/_cards/segmented-control.card.html +1 -1
  75. package/components/_cards/select.card.html +1 -1
  76. package/components/_cards/smart-table.card.html +1 -1
  77. package/components/_cards/spreadsheet.card.html +1 -1
  78. package/components/_cards/stepper.card.html +1 -1
  79. package/components/_cards/table.card.html +7 -2
  80. package/components/_cards/tabs.card.html +1 -1
  81. package/components/_cards/tag.card.html +1 -1
  82. package/components/_cards/textarea.card.html +1 -1
  83. package/components/_cards/timeline.card.html +1 -1
  84. package/components/_cards/toast.card.html +1 -1
  85. package/components/_cards/toggles.card.html +1 -1
  86. package/components/_cards/tooltip.card.html +1 -1
  87. package/components/_cards/tree.card.html +1 -1
  88. package/components/_shared/view-source.js +15 -185
  89. package/components/charts/BarList.jsx +1 -1
  90. package/components/charts/BarList.vue +8 -3
  91. package/components/charts/Ribbon3D.d.ts +2 -0
  92. package/components/charts/Scatter3D.d.ts +4 -0
  93. package/components/charts/SunburstChart.jsx +6 -1
  94. package/components/charts/SunburstChart.vue +7 -1
  95. package/components/charts/Surface3D.d.ts +2 -0
  96. package/components/charts/WorldMap.jsx +6 -1
  97. package/components/charts/WorldMap.vue +7 -1
  98. package/components/data/ListRow.d.ts +6 -3
  99. package/components/data/ListRow.jsx +21 -13
  100. package/components/data/ListRow.vue +25 -15
  101. package/components/data/Table.jsx +1 -1
  102. package/components/data/Table.vue +6 -2
  103. package/components/display/ProgressBar.jsx +1 -1
  104. package/components/display/ProgressBar.vue +1 -1
  105. package/components/feedback/Accordion.jsx +1 -1
  106. package/components/feedback/Accordion.vue +1 -1
  107. package/components/feedback/ContextMenu.jsx +3 -3
  108. package/components/feedback/ContextMenu.vue +4 -4
  109. package/components/feedback/Drawer.jsx +3 -3
  110. package/components/feedback/Drawer.vue +3 -3
  111. package/components/feedback/Timeline.vue +4 -1
  112. package/components/forms/Checkbox.d.ts +2 -0
  113. package/components/forms/Checkbox.jsx +9 -4
  114. package/components/forms/Checkbox.vue +6 -2
  115. package/components/forms/DatePicker.jsx +3 -1
  116. package/components/forms/DatePicker.vue +2 -1
  117. package/components/forms/Dropzone.jsx +1 -1
  118. package/components/forms/Dropzone.vue +1 -1
  119. package/components/forms/MultiSelect.jsx +5 -3
  120. package/components/forms/MultiSelect.vue +4 -3
  121. package/components/forms/Slider.jsx +1 -1
  122. package/components/forms/Slider.vue +1 -1
  123. package/components/forms/Switch.jsx +4 -4
  124. package/components/forms/Switch.vue +4 -4
  125. package/components/navigation/Sidebar.jsx +2 -2
  126. package/components/navigation/Sidebar.vue +2 -2
  127. package/components/navigation/TopBar.jsx +1 -1
  128. package/components/navigation/TopBar.vue +1 -1
  129. package/components/navigation/Tree.jsx +2 -2
  130. package/components/navigation/Tree.vue +14 -5
  131. package/components/pipeline/DataPreview.jsx +1 -1
  132. package/components/pipeline/DataPreview.vue +1 -1
  133. package/components/pipeline/NodeCard.jsx +1 -1
  134. package/components/pipeline/NodeCard.vue +1 -1
  135. package/components/pipeline/PaletteItem.vue +1 -1
  136. package/components/pipeline/PalettePanel.jsx +3 -3
  137. package/components/pipeline/PalettePanel.vue +2 -2
  138. package/components/tabs/SegmentedControl.jsx +2 -2
  139. package/components/tabs/SegmentedControl.vue +2 -2
  140. package/index.html +6 -56
  141. package/package.json +4 -2
  142. package/tokens/dark.css +1 -1
  143. package/tokens/interaction.css +4 -0
  144. package/tokens/layout.css +3 -0
  145. package/tokens/typography.css +2 -1
package/DEPLOY.md CHANGED
@@ -55,7 +55,7 @@ deploys the documentation site. Watch it under *Build → Pipelines*.
55
55
  **5. Cut the first release.**
56
56
 
57
57
  ```bash
58
- git tag v2.4.13 && git push --tags
58
+ git tag v2.5.1 && git push --tags
59
59
  ```
60
60
 
61
61
  That tag runs `generated:check` → `version:check` → `npm publish`. Confirm under *Deploy →
@@ -187,7 +187,7 @@ GitLab injects `CI_JOB_TOKEN` — use that instead and no secret is stored anywh
187
187
  **Install — straight from git** (no registry, no publish; works today)
188
188
 
189
189
  ```json
190
- "@keyfunc/keybricks-ds": "git+ssh://git@gitlab.epm2demo.cn/Felix/keybricks-ds.git#v2.4.13"
190
+ "@keyfunc/keybricks-ds": "git+ssh://git@gitlab.epm2demo.cn/Felix/keybricks-ds.git#v2.5.1"
191
191
  ```
192
192
 
193
193
  Because the package has no build step, a git dependency needs no `prepare` script — npm
@@ -216,7 +216,7 @@ The `pages` job copies the static tree into `public/` on every default-branch co
216
216
  Your Pages URL (shown under *Deploy → Pages* after the first run) then serves:
217
217
 
218
218
  - `index.html` — the browsable system: every card live in an iframe, EN / 中文 / 日本語,
219
- light and dark, View Code on each component.
219
+ light and dark, a "Show code" bar (React / Vue 3 usage) under each example.
220
220
  - `gallery.html` — filterable thumbnail grid.
221
221
  - `DESIGN.md` — the rules file to hand to an AI coding agent or a new hire.
222
222
 
@@ -237,7 +237,7 @@ semantic layer. That is what makes dark mode cost nothing.
237
237
  ## Runtime checks
238
238
 
239
239
  `_tests/` holds browser pages that exercise the real components: `react-runtime.html` (the compiled
240
- bundle), `table-selection.html` (Table loaded from source: checkbox spacing at every width, code chips, two-line rows, sorting), `menu-react.html` / `menu-vue.html` (Menu / ContextMenu coloured icons, item descriptions, side by alignment and flip), `addrow-react.html` / `addrow-vue.html` (the SmartTable add row in both frameworks, from source: colour, weight, hover hooks, keyboard, `stickyAddRow`), `smart-table-density.html` (SmartTable from source: default / compact rows, the Row height menu, controlled density), `relative-time-picker.html` (RelativeTimePicker from source: helpers, tiers, dialog, keyboard), `tree-reorder.html` (Tree from source: insert-between on leaves and folder edges, self/subtree rejection), `vue-runtime.html` (the `.vue` files, loaded with vue3-sfc-loader), `cards-interaction*.html`
240
+ bundle), `table-selection.html` (Table loaded from source: checkbox spacing at every width, code chips, two-line rows, sorting), `keyboard.html` (keyboard reach: Checkbox, MultiSelect, DatePicker, Accordion, Tree checkboxes, Dropzone, NodeCard, PalettePanel, BarList — React and Vue), `listrow.html` (ListRow static vs clickable rows, keyboard, alignment — React and Vue), `vue-table-cells.html` (Vue Table #cell-<key> slots and VNode renders), `menu-react.html` / `menu-vue.html` (Menu / ContextMenu coloured icons, item descriptions, side by alignment and flip), `addrow-react.html` / `addrow-vue.html` (the SmartTable add row in both frameworks, from source: colour, weight, hover hooks, keyboard, `stickyAddRow`), `smart-table-density.html` (SmartTable from source: default / compact rows, the Row height menu, controlled density), `relative-time-picker.html` (RelativeTimePicker from source: helpers, tiers, dialog, keyboard), `tree-reorder.html` (Tree from source: insert-between on leaves and folder edges, self/subtree rejection), `vue-runtime.html` (the `.vue` files, loaded with vue3-sfc-loader), `cards-interaction*.html`
241
241
  (clicks through the documentation demos) and `icon-rules.html` (the Keybricks glyphs against the drawing rules). Serve the repo root (`npx serve .`), open a page and read the
242
242
  console — every line starts with PASS or FAIL. Run them after changing a component in either framework.
243
243
  `measure-cards.html` is a tool, not a test: it measures each documentation page at its card width so the
package/INTEGRATION.md CHANGED
@@ -31,7 +31,7 @@ Not using a registry yet? A git dependency works with no publishing at all — t
31
31
  has no build step, so npm can use the checkout as-is:
32
32
 
33
33
  ```json
34
- "@keyfunc/keybricks-ds": "git+ssh://git@gitlab.epm2demo.cn/Felix/keybricks-ds.git#v2.4.13"
34
+ "@keyfunc/keybricks-ds": "git+ssh://git@gitlab.epm2demo.cn/Felix/keybricks-ds.git#v2.5.1"
35
35
  ```
36
36
 
37
37
  **Source-only package.** `.jsx` and `.vue` files are published as authored, so your
@@ -81,10 +81,7 @@ export function LoginForm() {
81
81
 
82
82
  ```vue
83
83
  <script setup>
84
- import Button from '@keyfunc/keybricks-ds/components/buttons/Button.vue'
85
- import Field from '@keyfunc/keybricks-ds/components/forms/Field.vue'
86
- import Input from '@keyfunc/keybricks-ds/components/forms/Input.vue'
87
- import Textarea from '@keyfunc/keybricks-ds/components/forms/Textarea.vue'
84
+ import { Button, Field, Input, Textarea } from '@keyfunc/keybricks-ds/vue'
88
85
  </script>
89
86
 
90
87
  <template>
@@ -97,6 +94,10 @@ import Textarea from '@keyfunc/keybricks-ds/components/forms/Textarea.vue'
97
94
  </template>
98
95
  ```
99
96
 
97
+ Vue components come from `@keyfunc/keybricks-ds/vue` — the same names as React, one import line. (React and Vue each have a `Button`, so the two frameworks use two entry points.) Deep paths such as `@keyfunc/keybricks-ds/components/buttons/Button.vue` still work.
98
+
99
+ Every example on the documentation site has a **Show code** bar: the React and Vue code that builds that example, ready to paste.
100
+
100
101
  That is the whole integration. The `data-size="lg"` on the form is the size tier — every control
101
102
  inside it is 40px tall; leave it off and they are the app default, 32px (see *Size tiers* below).
102
103
  Everything below is reference material.
@@ -521,6 +522,27 @@ Pin a minor range and update deliberately:
521
522
  - **Tokens outside CSS.** `tokens.json` / `tokens.js` / `tokens.d.ts` gained the tier tokens
522
523
  (`--control-*`, `--bar-h`, `--group-gap`, …) — 352 light tokens in all (2.0.2 adds `--danger-soft-hover`).
523
524
 
525
+ ### 2.5.1
526
+
527
+ Fixes only — no API removed.
528
+
529
+ - **Keyboard:** `Checkbox` (Space; `role="checkbox"`, `aria-checked` incl. "mixed"; new `tabIndex` — pass -1 inside a row that owns focus), `DatePicker` / `MultiSelect` (field is a combobox: Enter / Space / ArrowDown open, Escape closes; options toggle with Enter / Space), `Accordion`, `Dropzone`, `NodeCard`, `PalettePanel`, `BarList` rows with `onSelect`. `SunburstChart` and `WorldMap` are one Tab stop: arrow keys walk segments / regions, Enter acts, Escape clears.
530
+ - **Vue parity:** `Tree` emits `context-menu(key, event)`; `BarList` emits `select(row)`.
531
+ - **Long text:** field boxes (Select, Combobox, DatePicker, MultiSelect) keep one line and truncate; menus cap at 320px and truncate items; `SegmentedControl` truncates a squeezed segment; `Tree`, Sidebar brand and TopBar user name truncate; `Drawer` titles wrap.
532
+ - **Tokens:** motion uses `--dur-*` / `--ease-out` everywhere; new shadows `--shadow-raised`, `--shadow-thumb`, `--shadow-drawer` (deeper in dark mode).
533
+ - Docs: `Ribbon3D`, `Scatter3D`, `Surface3D` props completed.
534
+ - **The documentation pages now open from the package.** `_ds_bundle.js` (the compiled copy the pages run on) and `_src/` (the Show code generator, icon search indexes) ship too, so `node_modules/@keyfunc/keybricks-ds/index.html` works offline. Apps still import from `@keyfunc/keybricks-ds` / `/vue` — nothing imports the bundle.
535
+
536
+ ### 2.5.0
537
+
538
+ - **Show code under every example.** Each example on the documentation site has a Show code bar with the React and Vue 3 code that builds it — imports from `@keyfunc/keybricks-ds` / `@keyfunc/keybricks-ds/vue`, ready to paste. The label follows the site language. The site no longer shows components' own source (it ships in the package).
539
+ - **Vue imports in one line:** `import { Button, Table } from '@keyfunc/keybricks-ds/vue'` (the entry already existed; the docs now use it).
540
+ - **Vue `Table` custom cells** — `<template #cell-<key>="{ value, row, index }">` slots, or `render` returning a VNode (`h()`). Before, a render result was printed as text.
541
+ - **Vue `Tree` row actions** — `#row-actions="{ node }"` slot or `rowActions(node)` returning a VNode, shown on hover / focus. Before, `rowActions` was accepted but never drawn.
542
+ - **Vue `Timeline`** — an item's `body` may be a VNode; `#body="{ item, index }"` slot.
543
+ - **`ListRow`** — the chevron shows only when the row has content to expand; the row is a button only with `onClick` (Vue: `@click`): focusable, Enter / Space, `aria-expanded`. Static rows get no pointer or hover. Expanded content aligns under the title, title and meta truncate, a trailing `0` shows, side padding is `--edge-pad`.
544
+ - Includes 2.4.14 (CJK font set only at declared-language boundaries, so icon and code fonts inside keep their family).
545
+
524
546
  ### 2.4.13
525
547
 
526
548
  - **`Menu` / `ContextMenu` items take `iconColor` and `description`.** `iconColor` is any CSS colour for that item's icon (e.g. `var(--cat-join)`); omit it and the icon keeps the row's text colour. `description` shows a 300px panel beside the menu while the item is hovered or focused — its icon and label, then the text — linked with `aria-describedby`.
@@ -726,7 +748,7 @@ Release mechanics, the CI pipeline and the Pages site are documented in `DEPLOY.
726
748
  ## Getting help
727
749
 
728
750
  - **Documentation site** — the GitLab Pages build: `index.html` for the browsable system
729
- (every card live, EN / 中文 / 日本語, light and dark, View Code per component) and
751
+ (every card live, EN / 中文 / 日本語, light and dark, a "Show code" bar with React / Vue 3 usage under each example) and
730
752
  `gallery.html` for the filterable thumbnail grid.
731
753
  - **Props contract** — the `.d.ts` next to each component.
732
754
  - **Usage notes** — the `.prompt.md` in each component group.
@@ -153,8 +153,8 @@
153
153
  "message": "<LegendItem> doesn't accept that prop. Declared props: label, color."
154
154
  },
155
155
  {
156
- "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|indeterminate|onChange|label|size|disabled|style|key|ref|className|style|children)$/]",
157
- "message": "<Checkbox> doesn't accept that prop. Declared props: checked, indeterminate, onChange, label, size, disabled, style."
156
+ "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|indeterminate|onChange|label|size|disabled|tabIndex|style|key|ref|className|style|children)$/]",
157
+ "message": "<Checkbox> doesn't accept that prop. Declared props: checked, indeterminate, onChange, label, size, disabled, tabIndex, style."
158
158
  },
159
159
  {
160
160
  "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
@@ -521,8 +521,8 @@
521
521
  "message": "<SunburstNode> doesn't accept that prop. Declared props: label, value, children."
522
522
  },
523
523
  {
524
- "selector": "JSXOpeningElement[name.name='Surface3D'] > JSXAttribute > JSXIdentifier[name!=/^(?:values|width|height|yaw|pitch|zScale|wire|interactive|valueFormat|style|key|ref|className|style|children)$/]",
525
- "message": "<Surface3D> doesn't accept that prop. Declared props: values, width, height, yaw, pitch, zScale, wire, interactive, valueFormat, style."
524
+ "selector": "JSXOpeningElement[name.name='Surface3D'] > JSXAttribute > JSXIdentifier[name!=/^(?:values|width|height|yaw|pitch|zScale|wire|interactive|valueFormat|xLabel|yLabel|style|key|ref|className|style|children)$/]",
525
+ "message": "<Surface3D> doesn't accept that prop. Declared props: values, width, height, yaw, pitch, zScale, wire, interactive, valueFormat, xLabel, yLabel, style."
526
526
  },
527
527
  {
528
528
  "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|onChange|disabled|size|tone|onColor|offColor|knobIcon|knobText|insideOn|insideOff|inlinePrompt|label|labelOn|labelOff|loading|beforeChange|style|key|ref|className|style|children)$/]",
@@ -1172,10 +1172,13 @@
1172
1172
  "--series-7",
1173
1173
  "--series-8",
1174
1174
  "--series-9",
1175
+ "--shadow-drawer",
1175
1176
  "--shadow-menu",
1176
1177
  "--shadow-modal",
1177
1178
  "--shadow-node",
1179
+ "--shadow-raised",
1178
1180
  "--shadow-selected",
1181
+ "--shadow-thumb",
1179
1182
  "--sidebar-w",
1180
1183
  "--skeleton",
1181
1184
  "--soft-active",
@@ -1543,6 +1546,9 @@
1543
1546
  "--shadow-selected": "shadow",
1544
1547
  "--shadow-menu": "shadow",
1545
1548
  "--shadow-modal": "shadow",
1549
+ "--shadow-raised": "shadow",
1550
+ "--shadow-thumb": "shadow",
1551
+ "--shadow-drawer": "shadow",
1546
1552
  "--ring-surface": "color",
1547
1553
  "--ring-focus": "color",
1548
1554
  "--sidebar-w": "spacing",