@keyfunc/keybricks-ds 1.0.4 → 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 (381) hide show
  1. package/DEPLOY.md +14 -5
  2. package/DESIGN.md +245 -59
  3. package/INTEGRATION.md +243 -49
  4. package/SKILL.md +13 -11
  5. package/_adherence.oxlintrc.json +183 -70
  6. package/_scripts/build-index.mjs +24 -4
  7. package/_scripts/build-tokens.mjs +5 -2
  8. package/assets/icons/icon-index.js +1 -1
  9. package/assets/icons/icon-index.json +1 -1
  10. package/components/_cards/accordion.card.html +2 -2
  11. package/components/_cards/action-chip.card.html +11 -9
  12. package/components/_cards/activity.card.html +3 -3
  13. package/components/_cards/alert.card.html +3 -3
  14. package/components/_cards/app-chrome.card.html +4 -4
  15. package/components/_cards/banner.card.html +1 -1
  16. package/components/_cards/breadcrumb.card.html +5 -5
  17. package/components/_cards/button-1-base.card.html +23 -26
  18. package/components/_cards/button-2-states.card.html +27 -25
  19. package/components/_cards/button-3-sizes-icons.card.html +20 -19
  20. package/components/_cards/button-4-group.card.html +14 -31
  21. package/components/_cards/canvas-zoom-controls.card.html +1 -1
  22. package/components/_cards/cards-indicators.card.html +2 -2
  23. package/components/_cards/charts-1-sparkline.card.html +5 -5
  24. package/components/_cards/charts-10-gauge.card.html +5 -5
  25. package/components/_cards/charts-11-funnel.card.html +3 -3
  26. package/components/_cards/charts-12-treemap.card.html +3 -3
  27. package/components/_cards/charts-14-radar.card.html +3 -3
  28. package/components/_cards/charts-15-distribution.card.html +2 -2
  29. package/components/_cards/charts-16-pareto.card.html +3 -3
  30. package/components/_cards/charts-17-candlestick.card.html +3 -3
  31. package/components/_cards/charts-18-sankey.card.html +3 -3
  32. package/components/_cards/charts-19-chord.card.html +3 -3
  33. package/components/_cards/charts-2-line.card.html +4 -4
  34. package/components/_cards/charts-20-sunburst.card.html +3 -3
  35. package/components/_cards/charts-21-worldmap.card.html +4 -4
  36. package/components/_cards/charts-22-gantt.card.html +3 -3
  37. package/components/_cards/charts-23-bar3d.card.html +3 -3
  38. package/components/_cards/charts-24-pie3d.card.html +3 -3
  39. package/components/_cards/charts-25-surface3d.card.html +3 -3
  40. package/components/_cards/charts-26-scatter3d.card.html +3 -3
  41. package/components/_cards/charts-27-ribbon3d.card.html +3 -3
  42. package/components/_cards/charts-3-bar.card.html +7 -7
  43. package/components/_cards/charts-4-barlist.card.html +3 -3
  44. package/components/_cards/charts-5-donut.card.html +4 -4
  45. package/components/_cards/charts-6-scatter.card.html +3 -3
  46. package/components/_cards/charts-7-heatmap.card.html +3 -3
  47. package/components/_cards/charts-8-waterfall.card.html +3 -3
  48. package/components/_cards/charts-9-bullet.card.html +3 -3
  49. package/components/_cards/charts-99-fullpage.card.html +5 -5
  50. package/components/_cards/checkbox.card.html +9 -6
  51. package/components/_cards/codeblock.card.html +2 -2
  52. package/components/_cards/combobox.card.html +6 -3
  53. package/components/_cards/context-menu.card.html +6 -3
  54. package/components/_cards/date-picker.card.html +10 -4
  55. package/components/_cards/diffvalue.card.html +3 -3
  56. package/components/_cards/divider.card.html +4 -4
  57. package/components/_cards/drawer.card.html +4 -4
  58. package/components/_cards/dropdown-menu.card.html +7 -7
  59. package/components/_cards/dropzone.card.html +5 -3
  60. package/components/_cards/empty-state.card.html +6 -6
  61. package/components/_cards/filter-bar.card.html +5 -5
  62. package/components/_cards/icon-button.card.html +14 -14
  63. package/components/_cards/icons-1-core.card.html +4 -4
  64. package/components/_cards/icons-2-feather.card.html +4 -4
  65. package/components/_cards/icons-3-unicons.card.html +4 -4
  66. package/components/_cards/input.card.html +5 -2
  67. package/components/_cards/kbd.card.html +2 -2
  68. package/components/_cards/keyvalue.card.html +2 -2
  69. package/components/_cards/listrow.card.html +2 -2
  70. package/components/_cards/loading.card.html +3 -3
  71. package/components/_cards/log-viewer.card.html +3 -3
  72. package/components/_cards/modal.card.html +9 -9
  73. package/components/_cards/multi-select.card.html +6 -3
  74. package/components/_cards/number-stepper.card.html +9 -5
  75. package/components/_cards/pagination.card.html +6 -3
  76. package/components/_cards/people.card.html +4 -4
  77. package/components/_cards/pipeline-node.card.html +8 -8
  78. package/components/_cards/pipeline-palette.card.html +5 -5
  79. package/components/_cards/radio.card.html +12 -7
  80. package/components/_cards/search.card.html +6 -3
  81. package/components/_cards/segmented-control.card.html +11 -10
  82. package/components/_cards/select.card.html +8 -4
  83. package/components/_cards/slider.card.html +2 -2
  84. package/components/_cards/smart-table.card.html +3 -3
  85. package/components/_cards/spreadsheet.card.html +3 -3
  86. package/components/_cards/stepper.card.html +3 -3
  87. package/components/_cards/table.card.html +165 -0
  88. package/components/_cards/tabs.card.html +6 -3
  89. package/components/_cards/tag.card.html +6 -3
  90. package/components/_cards/textarea.card.html +2 -2
  91. package/components/_cards/timeline.card.html +3 -3
  92. package/components/_cards/toast.card.html +10 -8
  93. package/components/_cards/toggles.card.html +15 -10
  94. package/components/_cards/tooltip.card.html +7 -7
  95. package/components/_cards/tree.card.html +3 -3
  96. package/components/_shared/card-kit.css +25 -0
  97. package/components/_shared/card-kit.js +50 -0
  98. package/components/_shared/src-buttons.js +1 -1
  99. package/components/_shared/src-charts.js +1 -1
  100. package/components/_shared/src-data.js +1 -1
  101. package/components/_shared/src-display.js +1 -1
  102. package/components/_shared/src-feedback.js +1 -1
  103. package/components/_shared/src-forms.js +1 -1
  104. package/components/_shared/src-icons.js +1 -1
  105. package/components/_shared/src-navigation.js +1 -1
  106. package/components/_shared/src-pipeline.js +1 -1
  107. package/components/_shared/src-tabs.js +1 -1
  108. package/components/_shared/view-source.js +3 -3
  109. package/components/_vue/index.mjs +16 -5
  110. package/components/buttons/ActionChip.d.ts +3 -1
  111. package/components/buttons/ActionChip.jsx +4 -4
  112. package/components/buttons/ActionChip.vue +4 -4
  113. package/components/buttons/Button.d.ts +5 -2
  114. package/components/buttons/Button.jsx +15 -18
  115. package/components/buttons/Button.vue +17 -18
  116. package/components/buttons/ButtonGroup.vue +1 -1
  117. package/components/buttons/IconButton.d.ts +2 -1
  118. package/components/buttons/IconButton.jsx +13 -9
  119. package/components/buttons/IconButton.vue +12 -9
  120. package/components/buttons/buttons.prompt.md +6 -5
  121. package/components/charts/Bar3D.jsx +2 -2
  122. package/components/charts/Bar3D.vue +3 -3
  123. package/components/charts/BarChart.jsx +4 -4
  124. package/components/charts/BarChart.vue +6 -6
  125. package/components/charts/BarList.jsx +4 -4
  126. package/components/charts/BarList.vue +4 -4
  127. package/components/charts/BoxPlot.jsx +1 -1
  128. package/components/charts/BoxPlot.vue +3 -3
  129. package/components/charts/BulletChart.jsx +6 -6
  130. package/components/charts/BulletChart.vue +6 -6
  131. package/components/charts/CandlestickChart.jsx +2 -2
  132. package/components/charts/CandlestickChart.vue +5 -5
  133. package/components/charts/ChartKit.jsx +8 -7
  134. package/components/charts/ChartLegend.vue +16 -0
  135. package/components/charts/ChartTooltip.vue +16 -0
  136. package/components/charts/ChordChart.jsx +2 -2
  137. package/components/charts/ChordChart.vue +3 -3
  138. package/components/charts/DonutChart.jsx +1 -1
  139. package/components/charts/DonutChart.vue +2 -2
  140. package/components/charts/FunnelChart.jsx +3 -3
  141. package/components/charts/FunnelChart.vue +4 -4
  142. package/components/charts/GanttChart.jsx +2 -2
  143. package/components/charts/GanttChart.vue +3 -3
  144. package/components/charts/GaugeChart.jsx +2 -2
  145. package/components/charts/GaugeChart.vue +2 -2
  146. package/components/charts/HeatmapChart.jsx +2 -2
  147. package/components/charts/HeatmapChart.vue +2 -2
  148. package/components/charts/Histogram.jsx +2 -2
  149. package/components/charts/Histogram.vue +4 -4
  150. package/components/charts/LineChart.jsx +1 -1
  151. package/components/charts/LineChart.vue +4 -4
  152. package/components/charts/ParetoChart.jsx +3 -3
  153. package/components/charts/ParetoChart.vue +5 -5
  154. package/components/charts/Pie3D.jsx +1 -1
  155. package/components/charts/Pie3D.vue +2 -2
  156. package/components/charts/PlotGrid.vue +18 -0
  157. package/components/charts/RadarChart.jsx +1 -1
  158. package/components/charts/RadarChart.vue +2 -2
  159. package/components/charts/Ribbon3D.jsx +2 -2
  160. package/components/charts/Ribbon3D.vue +3 -3
  161. package/components/charts/SankeyChart.jsx +2 -2
  162. package/components/charts/SankeyChart.vue +3 -3
  163. package/components/charts/Scatter3D.jsx +1 -1
  164. package/components/charts/Scatter3D.vue +2 -2
  165. package/components/charts/ScatterChart.jsx +3 -3
  166. package/components/charts/ScatterChart.vue +5 -5
  167. package/components/charts/Sparkline.jsx +1 -1
  168. package/components/charts/Sparkline.vue +1 -1
  169. package/components/charts/SunburstChart.jsx +1 -1
  170. package/components/charts/SunburstChart.vue +2 -2
  171. package/components/charts/Surface3D.jsx +2 -2
  172. package/components/charts/Surface3D.vue +3 -3
  173. package/components/charts/TreemapChart.jsx +2 -2
  174. package/components/charts/TreemapChart.vue +3 -3
  175. package/components/charts/WaterfallChart.jsx +2 -2
  176. package/components/charts/WaterfallChart.vue +6 -5
  177. package/components/charts/WorldMap.jsx +4 -4
  178. package/components/charts/WorldMap.vue +5 -5
  179. package/components/charts/XLabels.vue +11 -0
  180. package/components/data/CodeBlock.jsx +1 -1
  181. package/components/data/CodeBlock.vue +1 -1
  182. package/components/data/DiffValue.d.ts +1 -0
  183. package/components/data/DiffValue.jsx +1 -1
  184. package/components/data/DiffValue.vue +1 -1
  185. package/components/data/FilterBar.d.ts +2 -0
  186. package/components/data/FilterBar.jsx +10 -9
  187. package/components/data/FilterBar.vue +9 -8
  188. package/components/data/KeyValue.d.ts +1 -1
  189. package/components/data/KeyValue.jsx +4 -4
  190. package/components/data/KeyValue.vue +4 -4
  191. package/components/data/ListRow.jsx +2 -2
  192. package/components/data/ListRow.vue +2 -2
  193. package/components/data/Pagination.d.ts +5 -1
  194. package/components/data/Pagination.jsx +16 -12
  195. package/components/data/Pagination.vue +14 -9
  196. package/components/data/SmartTable.d.ts +4 -1
  197. package/components/data/SmartTable.jsx +16 -14
  198. package/components/data/SmartTable.vue +26 -23
  199. package/components/data/Spreadsheet.d.ts +2 -0
  200. package/components/data/Spreadsheet.jsx +16 -15
  201. package/components/data/Spreadsheet.vue +19 -18
  202. package/components/data/Table.d.ts +101 -0
  203. package/components/data/Table.jsx +223 -0
  204. package/components/data/Table.vue +153 -0
  205. package/components/data/data.prompt.md +3 -3
  206. package/components/display/Avatar.jsx +2 -2
  207. package/components/display/Avatar.vue +3 -2
  208. package/components/display/AvatarGroup.vue +3 -2
  209. package/components/display/Badge.d.ts +4 -1
  210. package/components/display/Badge.jsx +10 -5
  211. package/components/display/Badge.vue +1 -1
  212. package/components/display/Divider.vue +3 -3
  213. package/components/display/Donut.vue +3 -2
  214. package/components/display/IconTile.vue +10 -4
  215. package/components/display/Kbd.d.ts +1 -1
  216. package/components/display/Kbd.jsx +1 -1
  217. package/components/display/Kbd.vue +2 -2
  218. package/components/display/ProgressBar.jsx +1 -1
  219. package/components/display/ProgressBar.vue +1 -1
  220. package/components/display/StatCard.vue +1 -1
  221. package/components/display/Tag.d.ts +3 -1
  222. package/components/display/Tag.jsx +4 -4
  223. package/components/display/Tag.vue +4 -4
  224. package/components/feedback/Accordion.jsx +2 -2
  225. package/components/feedback/Accordion.vue +2 -2
  226. package/components/feedback/ActivityItem.d.ts +3 -1
  227. package/components/feedback/ActivityItem.jsx +6 -6
  228. package/components/feedback/ActivityItem.vue +5 -4
  229. package/components/feedback/Alert.jsx +4 -4
  230. package/components/feedback/Alert.vue +3 -3
  231. package/components/feedback/Banner.jsx +5 -5
  232. package/components/feedback/Banner.vue +5 -5
  233. package/components/feedback/ContextMenu.d.ts +3 -1
  234. package/components/feedback/ContextMenu.jsx +5 -5
  235. package/components/feedback/ContextMenu.vue +5 -5
  236. package/components/feedback/DotActivity.vue +3 -3
  237. package/components/feedback/Drawer.d.ts +2 -0
  238. package/components/feedback/Drawer.jsx +6 -6
  239. package/components/feedback/Drawer.vue +22 -15
  240. package/components/feedback/EmptyState.vue +2 -2
  241. package/components/feedback/LogViewer.vue +1 -1
  242. package/components/feedback/Modal.d.ts +2 -0
  243. package/components/feedback/Modal.jsx +12 -11
  244. package/components/feedback/Modal.vue +10 -8
  245. package/components/feedback/Skeleton.vue +2 -1
  246. package/components/feedback/Spinner.vue +2 -1
  247. package/components/feedback/Stepper.vue +1 -1
  248. package/components/feedback/Timeline.jsx +1 -1
  249. package/components/feedback/Timeline.vue +3 -3
  250. package/components/feedback/Toast.vue +4 -4
  251. package/components/feedback/ToastStack.vue +11 -0
  252. package/components/feedback/Tooltip.vue +19 -0
  253. package/components/feedback/feedback.prompt.md +4 -4
  254. package/components/forms/Checkbox.d.ts +3 -2
  255. package/components/forms/Checkbox.jsx +7 -7
  256. package/components/forms/Checkbox.vue +8 -8
  257. package/components/forms/Combobox.d.ts +2 -0
  258. package/components/forms/Combobox.jsx +12 -10
  259. package/components/forms/Combobox.vue +11 -10
  260. package/components/forms/DatePicker.d.ts +4 -0
  261. package/components/forms/DatePicker.jsx +16 -12
  262. package/components/forms/DatePicker.vue +15 -11
  263. package/components/forms/Dropzone.jsx +2 -2
  264. package/components/forms/Dropzone.vue +5 -5
  265. package/components/forms/Field.d.ts +5 -1
  266. package/components/forms/Field.jsx +4 -4
  267. package/components/forms/Field.vue +4 -4
  268. package/components/forms/Input.d.ts +5 -1
  269. package/components/forms/Input.jsx +8 -8
  270. package/components/forms/Input.vue +3 -3
  271. package/components/forms/MultiSelect.d.ts +2 -0
  272. package/components/forms/MultiSelect.jsx +13 -11
  273. package/components/forms/MultiSelect.vue +12 -11
  274. package/components/forms/NumberStepper.d.ts +3 -1
  275. package/components/forms/NumberStepper.jsx +7 -7
  276. package/components/forms/NumberStepper.vue +8 -7
  277. package/components/forms/Radio.d.ts +5 -3
  278. package/components/forms/Radio.jsx +13 -15
  279. package/components/forms/Radio.vue +9 -10
  280. package/components/forms/RadioGroup.vue +5 -5
  281. package/components/forms/SearchInput.d.ts +3 -1
  282. package/components/forms/SearchInput.jsx +6 -6
  283. package/components/forms/SearchInput.vue +7 -6
  284. package/components/forms/Select.d.ts +3 -2
  285. package/components/forms/Select.jsx +6 -7
  286. package/components/forms/Select.vue +6 -6
  287. package/components/forms/Slider.jsx +3 -3
  288. package/components/forms/Slider.vue +3 -3
  289. package/components/forms/Switch.d.ts +2 -2
  290. package/components/forms/Switch.jsx +20 -22
  291. package/components/forms/Switch.vue +22 -18
  292. package/components/forms/Textarea.vue +5 -5
  293. package/components/forms/forms.prompt.md +1 -1
  294. package/components/forms/input-base.js +2 -1
  295. package/components/icons/Icon.jsx +17 -1
  296. package/components/icons/Icon.prompt.md +2 -0
  297. package/components/icons/Icon.vue +1 -1
  298. package/components/icons/icon-paths.js +15 -0
  299. package/components/index.d.ts +1 -2
  300. package/components/index.js +4 -5
  301. package/components/navigation/Breadcrumb.jsx +6 -10
  302. package/components/navigation/Breadcrumb.vue +6 -12
  303. package/components/navigation/DocTree.jsx +3 -3
  304. package/components/navigation/DocTree.vue +3 -3
  305. package/components/navigation/PageHeading.vue +1 -1
  306. package/components/navigation/PageToolbar.vue +7 -6
  307. package/components/navigation/Sidebar.jsx +4 -23
  308. package/components/navigation/Sidebar.vue +5 -10
  309. package/components/navigation/ThemeToggle.vue +2 -1
  310. package/components/navigation/TopBar.d.ts +3 -1
  311. package/components/navigation/TopBar.jsx +6 -6
  312. package/components/navigation/Tree.jsx +5 -5
  313. package/components/navigation/Tree.vue +13 -8
  314. package/components/navigation/nav-model.js +23 -0
  315. package/components/navigation/theme-store.js +9 -0
  316. package/components/pipeline/ConfigPanel.d.ts +2 -0
  317. package/components/pipeline/ConfigPanel.jsx +9 -9
  318. package/components/pipeline/ConfigPanel.vue +9 -9
  319. package/components/pipeline/DataPreview.d.ts +3 -1
  320. package/components/pipeline/DataPreview.jsx +7 -7
  321. package/components/pipeline/DataPreview.vue +7 -7
  322. package/components/pipeline/NodeCard.jsx +3 -3
  323. package/components/pipeline/NodeCard.vue +3 -3
  324. package/components/pipeline/PaletteItem.vue +2 -2
  325. package/components/pipeline/PaletteListItem.vue +1 -1
  326. package/components/pipeline/PalettePanel.jsx +2 -2
  327. package/components/pipeline/PalettePanel.vue +1 -1
  328. package/components/pipeline/Port.vue +15 -0
  329. package/components/pipeline/PortLabel.vue +15 -0
  330. package/components/pipeline/ZoomControls.vue +1 -1
  331. package/components/pipeline/port-skin.js +13 -0
  332. package/components/px.js +4 -0
  333. package/components/tabs/PanelTabs.vue +5 -4
  334. package/components/tabs/PillTabs.vue +5 -4
  335. package/components/tabs/SegmentedControl.d.ts +2 -2
  336. package/components/tabs/SegmentedControl.jsx +7 -7
  337. package/components/tabs/SegmentedControl.vue +7 -7
  338. package/components/tabs/Tabs.d.ts +5 -3
  339. package/components/tabs/Tabs.jsx +15 -15
  340. package/components/tabs/Tabs.vue +5 -5
  341. package/components/tabs/ViewToggle.d.ts +3 -1
  342. package/components/tabs/ViewToggle.jsx +5 -5
  343. package/components/tabs/ViewToggle.vue +5 -5
  344. package/components/tabs/tabs.prompt.md +1 -1
  345. package/keybricks.css +4 -0
  346. package/package.json +6 -3
  347. package/readme.md +91 -122
  348. package/readme.zh-CN.md +121 -0
  349. package/tokens/alpha.css +3 -1
  350. package/tokens/charts.css +20 -17
  351. package/tokens/colors.css +3 -3
  352. package/tokens/dark.css +3 -3
  353. package/tokens/hover.css +32 -0
  354. package/tokens/interaction.css +3 -1
  355. package/tokens/layout.css +31 -7
  356. package/tokens/tokens.d.ts +58 -0
  357. package/tokens/tokens.js +179 -92
  358. package/tokens/tokens.json +327 -114
  359. package/tokens/typography.css +45 -15
  360. package/components/_cards/brand-visual.card.html +0 -43
  361. package/components/_cards/datatable.card.html +0 -48
  362. package/components/_shared/src-brand.js +0 -1
  363. package/components/brand/BrandVisual.d.ts +0 -17
  364. package/components/brand/BrandVisual.jsx +0 -29
  365. package/components/brand/BrandVisual.vue +0 -34
  366. package/components/brand/_dir.card.html +0 -13
  367. package/components/brand/brandMotifs.js +0 -210
  368. package/components/buttons/_dir.card.html +0 -13
  369. package/components/charts/ChartKit.vue +0 -47
  370. package/components/charts/_dir.card.html +0 -7
  371. package/components/data/DataTable.d.ts +0 -28
  372. package/components/data/DataTable.jsx +0 -32
  373. package/components/data/DataTable.vue +0 -25
  374. package/components/data/_dir.card.html +0 -13
  375. package/components/display/_dir.card.html +0 -13
  376. package/components/feedback/_dir.card.html +0 -13
  377. package/components/forms/_dir.card.html +0 -13
  378. package/components/icons/_dir.card.html +0 -13
  379. package/components/navigation/_dir.card.html +0 -13
  380. package/components/pipeline/_dir.card.html +0 -13
  381. package/components/tabs/_dir.card.html +0 -13
@@ -19,7 +19,6 @@
19
19
  "assets/icons/**",
20
20
  "components/**",
21
21
  "components/_shared/**",
22
- "components/brand/**",
23
22
  "components/buttons/**",
24
23
  "components/charts/**",
25
24
  "components/data/**",
@@ -31,8 +30,7 @@
31
30
  "components/pipeline/**",
32
31
  "components/tabs/**",
33
32
  "site-nav.js",
34
- "tokens/**",
35
- "ui_kits/keybricks-app/**"
33
+ "tokens/**"
36
34
  ],
37
35
  "message": "Import design-system components from 'index.js', not component internals."
38
36
  }
@@ -58,16 +56,20 @@
58
56
  "message": "<Accordion> doesn't accept that prop. Declared props: title, subtitle, defaultOpen, open, onToggle, children, style."
59
57
  },
60
58
  {
61
- "selector": "JSXOpeningElement[name.name='ActionChip'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|onClick|children|style|key|ref|className|style|children)$/]",
62
- "message": "<ActionChip> doesn't accept that prop. Declared props: tone, onClick, children, style."
59
+ "selector": "JSXOpeningElement[name.name='ActionChip'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|tone|onClick|children|style|key|ref|className|style|children)$/]",
60
+ "message": "<ActionChip> doesn't accept that prop. Declared props: size, tone, onClick, children, style."
61
+ },
62
+ {
63
+ "selector": "JSXOpeningElement[name.name='ActionChip'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
64
+ "message": "<ActionChip> size must be one of 'sm' | 'md' | 'lg'."
63
65
  },
64
66
  {
65
67
  "selector": "JSXOpeningElement[name.name='ActionChip'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:success|warning|neutral|info|danger)$/]",
66
68
  "message": "<ActionChip> tone must be one of 'success' | 'warning' | 'neutral' | 'info' | 'danger'."
67
69
  },
68
70
  {
69
- "selector": "JSXOpeningElement[name.name='ActivityItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|title|meta|action|style|key|ref|className|style|children)$/]",
70
- "message": "<ActivityItem> doesn't accept that prop. Declared props: icon, title, meta, action, style."
71
+ "selector": "JSXOpeningElement[name.name='ActivityItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|title|meta|action|onAction|style|key|ref|className|style|children)$/]",
72
+ "message": "<ActivityItem> doesn't accept that prop. Declared props: icon, title, meta, action, onAction, style."
71
73
  },
72
74
  {
73
75
  "selector": "JSXOpeningElement[name.name='Alert'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|title|children|action|style|key|ref|className|style|children)$/]",
@@ -113,14 +115,6 @@
113
115
  "selector": "JSXOpeningElement[name.name='BoxGroup'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|values|q1|med|q3|lo|hi|outliers|color|key|ref|className|style|children)$/]",
114
116
  "message": "<BoxGroup> doesn't accept that prop. Declared props: label, values, q1, med, q3, lo, hi, outliers, color."
115
117
  },
116
- {
117
- "selector": "JSXOpeningElement[name.name='BrandVisual'] > JSXAttribute > JSXIdentifier[name!=/^(?:motif|width|height|radius|fit|children|style|key|ref|className|style|children)$/]",
118
- "message": "<BrandVisual> doesn't accept that prop. Declared props: motif, width, height, radius, fit, children, style."
119
- },
120
- {
121
- "selector": "JSXOpeningElement[name.name='BrandVisual'] > JSXAttribute[name.name='fit'] > Literal[value!=/^(?:slice|meet)$/]",
122
- "message": "<BrandVisual> fit must be one of 'slice' | 'meet'."
123
- },
124
118
  {
125
119
  "selector": "JSXOpeningElement[name.name='Breadcrumb'] > JSXAttribute > JSXIdentifier[name!=/^(?:items|onSelect|maxItems|hoveredIndex|style|key|ref|className|style|children)$/]",
126
120
  "message": "<Breadcrumb> doesn't accept that prop. Declared props: items, onSelect, maxItems, hoveredIndex, style."
@@ -162,8 +156,8 @@
162
156
  "message": "<Checkbox> doesn't accept that prop. Declared props: checked, indeterminate, onChange, label, size, disabled, style."
163
157
  },
164
158
  {
165
- "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:md|sm)$/]",
166
- "message": "<Checkbox> size must be one of 'md' | 'sm'."
159
+ "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
160
+ "message": "<Checkbox> size must be one of 'sm' | 'md' | 'lg'."
167
161
  },
168
162
  {
169
163
  "selector": "JSXOpeningElement[name.name='ChordChart'] > JSXAttribute > JSXIdentifier[name!=/^(?:labels|matrix|size|thickness|gap|valueFormat|interactive|style|key|ref|className|style|children)$/]",
@@ -174,32 +168,44 @@
174
168
  "message": "<CodeBlock> doesn't accept that prop. Declared props: code, language, height, style."
175
169
  },
176
170
  {
177
- "selector": "JSXOpeningElement[name.name='Combobox'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|placeholder|disabled|error|width|onChange|style|key|ref|className|style|children)$/]",
178
- "message": "<Combobox> doesn't accept that prop. Declared props: options, value, placeholder, disabled, error, width, onChange, style."
171
+ "selector": "JSXOpeningElement[name.name='Combobox'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|placeholder|disabled|error|width|size|onChange|style|key|ref|className|style|children)$/]",
172
+ "message": "<Combobox> doesn't accept that prop. Declared props: options, value, placeholder, disabled, error, width, size, onChange, style."
173
+ },
174
+ {
175
+ "selector": "JSXOpeningElement[name.name='Combobox'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
176
+ "message": "<Combobox> size must be one of 'sm' | 'md' | 'lg'."
177
+ },
178
+ {
179
+ "selector": "JSXOpeningElement[name.name='ConfigPanel'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|subtitle|tabs|activeTab|onTab|previewRows|onPreviewRows|onSave|onPreview|children|height|size|style|key|ref|className|style|children)$/]",
180
+ "message": "<ConfigPanel> doesn't accept that prop. Declared props: title, subtitle, tabs, activeTab, onTab, previewRows, onPreviewRows, onSave, onPreview, children, height, size, style."
181
+ },
182
+ {
183
+ "selector": "JSXOpeningElement[name.name='ConfigPanel'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
184
+ "message": "<ConfigPanel> size must be one of 'sm' | 'md' | 'lg'."
179
185
  },
180
186
  {
181
- "selector": "JSXOpeningElement[name.name='ConfigPanel'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|subtitle|tabs|activeTab|onTab|previewRows|onPreviewRows|onSave|onPreview|children|height|style|key|ref|className|style|children)$/]",
182
- "message": "<ConfigPanel> doesn't accept that prop. Declared props: title, subtitle, tabs, activeTab, onTab, previewRows, onPreviewRows, onSave, onPreview, children, height, style."
187
+ "selector": "JSXOpeningElement[name.name='ContextMenu'] > JSXAttribute > JSXIdentifier[name!=/^(?:items|onSelect|size|style|key|ref|className|style|children)$/]",
188
+ "message": "<ContextMenu> doesn't accept that prop. Declared props: items, onSelect, size, style."
183
189
  },
184
190
  {
185
- "selector": "JSXOpeningElement[name.name='ContextMenu'] > JSXAttribute > JSXIdentifier[name!=/^(?:items|onSelect|style|key|ref|className|style|children)$/]",
186
- "message": "<ContextMenu> doesn't accept that prop. Declared props: items, onSelect, style."
191
+ "selector": "JSXOpeningElement[name.name='ContextMenu'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
192
+ "message": "<ContextMenu> size must be one of 'sm' | 'md' | 'lg'."
187
193
  },
188
194
  {
189
- "selector": "JSXOpeningElement[name.name='DataPreview'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|columns|rows|debug|onDebug|collapsed|onCollapse|style|key|ref|className|style|children)$/]",
190
- "message": "<DataPreview> doesn't accept that prop. Declared props: title, columns, rows, debug, onDebug, collapsed, onCollapse, style."
195
+ "selector": "JSXOpeningElement[name.name='DataPreview'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|columns|rows|debug|onDebug|collapsed|onCollapse|size|style|key|ref|className|style|children)$/]",
196
+ "message": "<DataPreview> doesn't accept that prop. Declared props: title, columns, rows, debug, onDebug, collapsed, onCollapse, size, style."
191
197
  },
192
198
  {
193
- "selector": "JSXOpeningElement[name.name='DataTableColumn'] > JSXAttribute > JSXIdentifier[name!=/^(?:key|label|width|mono|align|render|key|ref|className|style|children)$/]",
194
- "message": "<DataTableColumn> doesn't accept that prop. Declared props: key, label, width, mono, align, render."
199
+ "selector": "JSXOpeningElement[name.name='DataPreview'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
200
+ "message": "<DataPreview> size must be one of 'sm' | 'md' | 'lg'."
195
201
  },
196
202
  {
197
- "selector": "JSXOpeningElement[name.name='DataTableColumn'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|right|center)$/]",
198
- "message": "<DataTableColumn> align must be one of 'left' | 'right' | 'center'."
203
+ "selector": "JSXOpeningElement[name.name='DatePicker'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|placeholder|disabled|error|width|size|locale|onChange|style|key|ref|className|style|children)$/]",
204
+ "message": "<DatePicker> doesn't accept that prop. Declared props: value, placeholder, disabled, error, width, size, locale, onChange, style."
199
205
  },
200
206
  {
201
- "selector": "JSXOpeningElement[name.name='DatePicker'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|placeholder|disabled|error|width|onChange|style|key|ref|className|style|children)$/]",
202
- "message": "<DatePicker> doesn't accept that prop. Declared props: value, placeholder, disabled, error, width, onChange, style."
207
+ "selector": "JSXOpeningElement[name.name='DatePicker'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
208
+ "message": "<DatePicker> size must be one of 'sm' | 'md' | 'lg'."
203
209
  },
204
210
  {
205
211
  "selector": "JSXOpeningElement[name.name='DiffValue'] > JSXAttribute > JSXIdentifier[name!=/^(?:from|to|tone|mono|style|key|ref|className|style|children)$/]",
@@ -226,20 +232,32 @@
226
232
  "message": "<DonutSegment> doesn't accept that prop. Declared props: label, value, color."
227
233
  },
228
234
  {
229
- "selector": "JSXOpeningElement[name.name='Drawer'] > JSXAttribute > JSXIdentifier[name!=/^(?:open|title|subtitle|width|inline|height|footer|onClose|children|style|key|ref|className|style|children)$/]",
230
- "message": "<Drawer> doesn't accept that prop. Declared props: open, title, subtitle, width, inline, height, footer, onClose, children, style."
235
+ "selector": "JSXOpeningElement[name.name='Drawer'] > JSXAttribute > JSXIdentifier[name!=/^(?:open|title|subtitle|width|inline|height|size|footer|onClose|children|style|key|ref|className|style|children)$/]",
236
+ "message": "<Drawer> doesn't accept that prop. Declared props: open, title, subtitle, width, inline, height, size, footer, onClose, children, style."
237
+ },
238
+ {
239
+ "selector": "JSXOpeningElement[name.name='Drawer'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
240
+ "message": "<Drawer> size must be one of 'sm' | 'md' | 'lg'."
231
241
  },
232
242
  {
233
243
  "selector": "JSXOpeningElement[name.name='Dropzone'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|hint|height|error|disabled|dragOver|file|onRemove|onClick|onDropFiles|style|key|ref|className|style|children)$/]",
234
244
  "message": "<Dropzone> doesn't accept that prop. Declared props: title, hint, height, error, disabled, dragOver, file, onRemove, onClick, onDropFiles, style."
235
245
  },
236
246
  {
237
- "selector": "JSXOpeningElement[name.name='Field'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|required|hint|error|children|style|key|ref|className|style|children)$/]",
238
- "message": "<Field> doesn't accept that prop. Declared props: label, required, hint, error, children, style."
247
+ "selector": "JSXOpeningElement[name.name='Field'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|required|size|inline|hint|error|children|style|key|ref|className|style|children)$/]",
248
+ "message": "<Field> doesn't accept that prop. Declared props: label, required, size, inline, hint, error, children, style."
249
+ },
250
+ {
251
+ "selector": "JSXOpeningElement[name.name='Field'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
252
+ "message": "<Field> size must be one of 'sm' | 'md' | 'lg'."
253
+ },
254
+ {
255
+ "selector": "JSXOpeningElement[name.name='FilterBar'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|modified|adaptCount|defaultExpanded|size|onGo|onAdapt|children|style|key|ref|className|style|children)$/]",
256
+ "message": "<FilterBar> doesn't accept that prop. Declared props: variant, modified, adaptCount, defaultExpanded, size, onGo, onAdapt, children, style."
239
257
  },
240
258
  {
241
- "selector": "JSXOpeningElement[name.name='FilterBar'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|modified|adaptCount|defaultExpanded|onGo|onAdapt|children|style|key|ref|className|style|children)$/]",
242
- "message": "<FilterBar> doesn't accept that prop. Declared props: variant, modified, adaptCount, defaultExpanded, onGo, onAdapt, children, style."
259
+ "selector": "JSXOpeningElement[name.name='FilterBar'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
260
+ "message": "<FilterBar> size must be one of 'sm' | 'md' | 'lg'."
243
261
  },
244
262
  {
245
263
  "selector": "JSXOpeningElement[name.name='FunnelStage'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|value|key|ref|className|style|children)$/]",
@@ -278,8 +296,12 @@
278
296
  "message": "<IconButton> size must be one of 'xs' | 'sm' | 'md' | 'lg'."
279
297
  },
280
298
  {
281
- "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:readOnly|disabled|error|style|key|ref|className|style|children)$/]",
282
- "message": "<Input> doesn't accept that prop. Declared props: readOnly, disabled, error, style."
299
+ "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|readOnly|disabled|error|style|key|ref|className|style|children)$/]",
300
+ "message": "<Input> doesn't accept that prop. Declared props: size, readOnly, disabled, error, style."
301
+ },
302
+ {
303
+ "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
304
+ "message": "<Input> size must be one of 'sm' | 'md' | 'lg'."
283
305
  },
284
306
  {
285
307
  "selector": "JSXOpeningElement[name.name='Kbd'] > JSXAttribute > JSXIdentifier[name!=/^(?:keys|style|key|ref|className|style|children)$/]",
@@ -314,8 +336,12 @@
314
336
  "message": "<Tooltip> placement must be one of 'top' | 'bottom' | 'left' | 'right'."
315
337
  },
316
338
  {
317
- "selector": "JSXOpeningElement[name.name='MultiSelect'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|placeholder|maxTags|disabled|width|onChange|style|key|ref|className|style|children)$/]",
318
- "message": "<MultiSelect> doesn't accept that prop. Declared props: options, value, placeholder, maxTags, disabled, width, onChange, style."
339
+ "selector": "JSXOpeningElement[name.name='MultiSelect'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|placeholder|maxTags|disabled|width|size|onChange|style|key|ref|className|style|children)$/]",
340
+ "message": "<MultiSelect> doesn't accept that prop. Declared props: options, value, placeholder, maxTags, disabled, width, size, onChange, style."
341
+ },
342
+ {
343
+ "selector": "JSXOpeningElement[name.name='MultiSelect'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
344
+ "message": "<MultiSelect> size must be one of 'sm' | 'md' | 'lg'."
319
345
  },
320
346
  {
321
347
  "selector": "JSXOpeningElement[name.name='NodeCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|subtitle|icon|subtitleIcon|hue|selected|badge|inputs|output|showMenu|onClick|onMenu|onOutputDown|onInputUp|onInputEnter|onInputLeave|outputTone|inputTones|style|key|ref|className|style|children)$/]",
@@ -330,12 +356,20 @@
330
356
  "message": "<NodeCard> badge must be one of 'error' | 'warning' | 'clock'."
331
357
  },
332
358
  {
333
- "selector": "JSXOpeningElement[name.name='NumberStepper'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|onChange|step|min|max|disabled|style|key|ref|className|style|children)$/]",
334
- "message": "<NumberStepper> doesn't accept that prop. Declared props: value, onChange, step, min, max, disabled, style."
359
+ "selector": "JSXOpeningElement[name.name='NumberStepper'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|value|onChange|step|min|max|disabled|style|key|ref|className|style|children)$/]",
360
+ "message": "<NumberStepper> doesn't accept that prop. Declared props: size, value, onChange, step, min, max, disabled, style."
361
+ },
362
+ {
363
+ "selector": "JSXOpeningElement[name.name='NumberStepper'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
364
+ "message": "<NumberStepper> size must be one of 'sm' | 'md' | 'lg'."
365
+ },
366
+ {
367
+ "selector": "JSXOpeningElement[name.name='Pagination'] > JSXAttribute > JSXIdentifier[name!=/^(?:page|pageCount|total|pageSize|size|format|onChange|style|key|ref|className|style|children)$/]",
368
+ "message": "<Pagination> doesn't accept that prop. Declared props: page, pageCount, total, pageSize, size, format, onChange, style."
335
369
  },
336
370
  {
337
- "selector": "JSXOpeningElement[name.name='Pagination'] > JSXAttribute > JSXIdentifier[name!=/^(?:page|pageCount|total|pageSize|onChange|style|key|ref|className|style|children)$/]",
338
- "message": "<Pagination> doesn't accept that prop. Declared props: page, pageCount, total, pageSize, onChange, style."
371
+ "selector": "JSXOpeningElement[name.name='Pagination'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
372
+ "message": "<Pagination> size must be one of 'sm' | 'md' | 'lg'."
339
373
  },
340
374
  {
341
375
  "selector": "JSXOpeningElement[name.name='PaletteEntry'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|icon|key|ref|className|style|children)$/]",
@@ -366,8 +400,8 @@
366
400
  "message": "<Radio> doesn't accept that prop. Declared props: checked, onChange, label, description, size, disabled, style."
367
401
  },
368
402
  {
369
- "selector": "JSXOpeningElement[name.name='Radio'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md)$/]",
370
- "message": "<Radio> size must be one of 'sm' | 'md'."
403
+ "selector": "JSXOpeningElement[name.name='Radio'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
404
+ "message": "<Radio> size must be one of 'sm' | 'md' | 'lg'."
371
405
  },
372
406
  {
373
407
  "selector": "JSXOpeningElement[name.name='Ribbon3DSeries'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|values|color|key|ref|className|style|children)$/]",
@@ -386,24 +420,28 @@
386
420
  "message": "<ScatterPoint> doesn't accept that prop. Declared props: x, y, r, label, series, color."
387
421
  },
388
422
  {
389
- "selector": "JSXOpeningElement[name.name='SearchInput'] > JSXAttribute > JSXIdentifier[name!=/^(?:placeholder|bare|value|onChange|disabled|style|key|ref|className|style|children)$/]",
390
- "message": "<SearchInput> doesn't accept that prop. Declared props: placeholder, bare, value, onChange, disabled, style."
423
+ "selector": "JSXOpeningElement[name.name='SearchInput'] > JSXAttribute > JSXIdentifier[name!=/^(?:placeholder|bare|size|value|onChange|disabled|style|key|ref|className|style|children)$/]",
424
+ "message": "<SearchInput> doesn't accept that prop. Declared props: placeholder, bare, size, value, onChange, disabled, style."
425
+ },
426
+ {
427
+ "selector": "JSXOpeningElement[name.name='SearchInput'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
428
+ "message": "<SearchInput> size must be one of 'sm' | 'md' | 'lg'."
391
429
  },
392
430
  {
393
431
  "selector": "JSXOpeningElement[name.name='SegmentedControl'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|onChange|size|iconOnly|disabled|fullWidth|style|key|ref|className|style|children)$/]",
394
432
  "message": "<SegmentedControl> doesn't accept that prop. Declared props: options, value, onChange, size, iconOnly, disabled, fullWidth, style."
395
433
  },
396
434
  {
397
- "selector": "JSXOpeningElement[name.name='SegmentedControl'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md)$/]",
398
- "message": "<SegmentedControl> size must be one of 'sm' | 'md'."
435
+ "selector": "JSXOpeningElement[name.name='SegmentedControl'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
436
+ "message": "<SegmentedControl> size must be one of 'sm' | 'md' | 'lg'."
399
437
  },
400
438
  {
401
439
  "selector": "JSXOpeningElement[name.name='Select'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|size|value|onChange|placeholder|disabled|error|style|key|ref|className|style|children)$/]",
402
440
  "message": "<Select> doesn't accept that prop. Declared props: options, size, value, onChange, placeholder, disabled, error, style."
403
441
  },
404
442
  {
405
- "selector": "JSXOpeningElement[name.name='Select'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:md|sm)$/]",
406
- "message": "<Select> size must be one of 'md' | 'sm'."
443
+ "selector": "JSXOpeningElement[name.name='Select'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
444
+ "message": "<Select> size must be one of 'sm' | 'md' | 'lg'."
407
445
  },
408
446
  {
409
447
  "selector": "JSXOpeningElement[name.name='SidebarItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|label|children|open|key|ref|className|style|children)$/]",
@@ -438,8 +476,12 @@
438
476
  "message": "<Sparkline> tone must be one of 'default' | 'auto' | 'pos' | 'neg' | 'muted'."
439
477
  },
440
478
  {
441
- "selector": "JSXOpeningElement[name.name='Spreadsheet'] > JSXAttribute > JSXIdentifier[name!=/^(?:data|rows|cols|colWidths|defaultColWidth|currency|defaultActive|sheets|activeSheet|toolbar|formulaBar|statusBar|height|onChange|style|key|ref|className|style|children)$/]",
442
- "message": "<Spreadsheet> doesn't accept that prop. Declared props: data, rows, cols, colWidths, defaultColWidth, currency, defaultActive, sheets, activeSheet, toolbar, formulaBar, statusBar, height, onChange, style."
479
+ "selector": "JSXOpeningElement[name.name='Spreadsheet'] > JSXAttribute > JSXIdentifier[name!=/^(?:data|rows|cols|colWidths|defaultColWidth|currency|defaultActive|sheets|activeSheet|toolbar|formulaBar|statusBar|height|size|onChange|style|key|ref|className|style|children)$/]",
480
+ "message": "<Spreadsheet> doesn't accept that prop. Declared props: data, rows, cols, colWidths, defaultColWidth, currency, defaultActive, sheets, activeSheet, toolbar, formulaBar, statusBar, height, size, onChange, style."
481
+ },
482
+ {
483
+ "selector": "JSXOpeningElement[name.name='Spreadsheet'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
484
+ "message": "<Spreadsheet> size must be one of 'sm' | 'md' | 'lg'."
443
485
  },
444
486
  {
445
487
  "selector": "JSXOpeningElement[name.name='Stepper'] > JSXAttribute > JSXIdentifier[name!=/^(?:steps|current|style|key|ref|className|style|children)$/]",
@@ -466,12 +508,24 @@
466
508
  "message": "<Switch> tone must be one of 'primary' | 'semantic'."
467
509
  },
468
510
  {
469
- "selector": "JSXOpeningElement[name.name='Tabs'] > JSXAttribute > JSXIdentifier[name!=/^(?:tabs|active|onChange|style|key|ref|className|style|children)$/]",
470
- "message": "<Tabs> doesn't accept that prop. Declared props: tabs, active, onChange, style."
511
+ "selector": "JSXOpeningElement[name.name='DataTableTwoLine'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|hue|description|mark|more|key|ref|className|style|children)$/]",
512
+ "message": "<DataTableTwoLine> doesn't accept that prop. Declared props: icon, hue, description, mark, more."
513
+ },
514
+ {
515
+ "selector": "JSXOpeningElement[name.name='Tabs'] > JSXAttribute > JSXIdentifier[name!=/^(?:tabs|active|onChange|size|style|key|ref|className|style|children)$/]",
516
+ "message": "<Tabs> doesn't accept that prop. Declared props: tabs, active, onChange, size, style."
471
517
  },
472
518
  {
473
- "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|onRemove|tone|style|key|ref|className|style|children)$/]",
474
- "message": "<Tag> doesn't accept that prop. Declared props: children, onRemove, tone, style."
519
+ "selector": "JSXOpeningElement[name.name='Tabs'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
520
+ "message": "<Tabs> size must be one of 'sm' | 'md' | 'lg'."
521
+ },
522
+ {
523
+ "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|size|onRemove|tone|style|key|ref|className|style|children)$/]",
524
+ "message": "<Tag> doesn't accept that prop. Declared props: children, size, onRemove, tone, style."
525
+ },
526
+ {
527
+ "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
528
+ "message": "<Tag> size must be one of 'sm' | 'md' | 'lg'."
475
529
  },
476
530
  {
477
531
  "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:neutral|info)$/]",
@@ -502,13 +556,17 @@
502
556
  "message": "<Unicon> doesn't accept that prop. Declared props: name, size, color, className, style."
503
557
  },
504
558
  {
505
- "selector": "JSXOpeningElement[name.name='ViewToggle'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|onChange|style|key|ref|className|style|children)$/]",
506
- "message": "<ViewToggle> doesn't accept that prop. Declared props: value, onChange, style."
559
+ "selector": "JSXOpeningElement[name.name='ViewToggle'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|size|onChange|style|key|ref|className|style|children)$/]",
560
+ "message": "<ViewToggle> doesn't accept that prop. Declared props: value, size, onChange, style."
507
561
  },
508
562
  {
509
563
  "selector": "JSXOpeningElement[name.name='ViewToggle'] > JSXAttribute[name.name='value'] > Literal[value!=/^(?:list|grid)$/]",
510
564
  "message": "<ViewToggle> value must be one of 'list' | 'grid'."
511
565
  },
566
+ {
567
+ "selector": "JSXOpeningElement[name.name='ViewToggle'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
568
+ "message": "<ViewToggle> size must be one of 'sm' | 'md' | 'lg'."
569
+ },
512
570
  {
513
571
  "selector": "JSXOpeningElement[name.name='WaterfallStep'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|value|total|key|ref|className|style|children)$/]",
514
572
  "message": "<WaterfallStep> doesn't accept that prop. Declared props: label, value, total."
@@ -576,9 +634,6 @@
576
634
  "BoxGroup": {
577
635
  "replaces": []
578
636
  },
579
- "BrandVisual": {
580
- "replaces": []
581
- },
582
637
  "Breadcrumb": {
583
638
  "replaces": []
584
639
  },
@@ -618,9 +673,6 @@
618
673
  "DataPreview": {
619
674
  "replaces": []
620
675
  },
621
- "DataTableColumn": {
622
- "replaces": []
623
- },
624
676
  "DatePicker": {
625
677
  "replaces": []
626
678
  },
@@ -771,6 +823,9 @@
771
823
  "Switch": {
772
824
  "replaces": []
773
825
  },
826
+ "DataTableTwoLine": {
827
+ "replaces": []
828
+ },
774
829
  "Tabs": {
775
830
  "replaces": []
776
831
  },
@@ -824,6 +879,8 @@
824
879
  "--amber-800",
825
880
  "--amber-900",
826
881
  "--amber-950",
882
+ "--bar-card-h",
883
+ "--bar-h",
827
884
  "--bg-active",
828
885
  "--bg-app",
829
886
  "--bg-hover",
@@ -832,6 +889,7 @@
832
889
  "--bg-raised",
833
890
  "--bg-scrim",
834
891
  "--bg-surface",
892
+ "--bg-table-header",
835
893
  "--blue-100",
836
894
  "--blue-200",
837
895
  "--blue-300",
@@ -845,6 +903,7 @@
845
903
  "--blue-950",
846
904
  "--border-card",
847
905
  "--border-control",
906
+ "--border-split",
848
907
  "--border-strong",
849
908
  "--border-subtle",
850
909
  "--brand-alpha-12",
@@ -864,6 +923,7 @@
864
923
  "--cat-source-bg",
865
924
  "--cat-transform",
866
925
  "--cat-transform-bg",
926
+ "--cell-px",
867
927
  "--chart-area-alpha",
868
928
  "--chart-axis",
869
929
  "--chart-blue",
@@ -880,7 +940,15 @@
880
940
  "--chart-pos",
881
941
  "--chart-total",
882
942
  "--chart-track",
943
+ "--check-size",
883
944
  "--checkbox-border",
945
+ "--control-gap",
946
+ "--control-h",
947
+ "--control-icon",
948
+ "--control-leading",
949
+ "--control-px",
950
+ "--control-text",
951
+ "--control-tracking",
884
952
  "--cyan-100",
885
953
  "--cyan-200",
886
954
  "--cyan-300",
@@ -896,6 +964,7 @@
896
964
  "--danger-active",
897
965
  "--danger-bg",
898
966
  "--danger-soft-active",
967
+ "--danger-soft-hover",
899
968
  "--danger-text",
900
969
  "--dot-neutral",
901
970
  "--drawer-h",
@@ -910,6 +979,7 @@
910
979
  "--ease-in-out",
911
980
  "--ease-out",
912
981
  "--edge",
982
+ "--edge-pad",
913
983
  "--emerald-100",
914
984
  "--emerald-200",
915
985
  "--emerald-300",
@@ -925,6 +995,7 @@
925
995
  "--focus-ring",
926
996
  "--font-mono",
927
997
  "--font-sans",
998
+ "--group-gap",
928
999
  "--h-button",
929
1000
  "--h-button-sm",
930
1001
  "--h-input",
@@ -958,6 +1029,7 @@
958
1029
  "--leading-3xl",
959
1030
  "--leading-4xl",
960
1031
  "--leading-base",
1032
+ "--leading-code",
961
1033
  "--leading-display",
962
1034
  "--leading-lg",
963
1035
  "--leading-md",
@@ -1079,8 +1151,11 @@
1079
1151
  "--success-bg",
1080
1152
  "--success-strong",
1081
1153
  "--success-text",
1154
+ "--switch-h",
1155
+ "--switch-w",
1082
1156
  "--t-hover",
1083
1157
  "--t-theme",
1158
+ "--tag-h",
1084
1159
  "--teal-100",
1085
1160
  "--teal-200",
1086
1161
  "--teal-300",
@@ -1094,11 +1169,14 @@
1094
1169
  "--teal-950",
1095
1170
  "--text-2xl",
1096
1171
  "--text-2xs",
1172
+ "--text-2xs-mono",
1097
1173
  "--text-3xl",
1098
1174
  "--text-4xl",
1099
1175
  "--text-base",
1100
1176
  "--text-body",
1177
+ "--text-code",
1101
1178
  "--text-display",
1179
+ "--text-glyph-min",
1102
1180
  "--text-heading",
1103
1181
  "--text-inverse",
1104
1182
  "--text-lg",
@@ -1111,6 +1189,12 @@
1111
1189
  "--text-strong",
1112
1190
  "--text-xl",
1113
1191
  "--text-xs",
1192
+ "--title-cell-gap",
1193
+ "--title-cell-icon",
1194
+ "--title-cell-py",
1195
+ "--title-cell-tile",
1196
+ "--title-cell-tile-gap",
1197
+ "--title-cell-tile-r",
1114
1198
  "--tooltip-bg",
1115
1199
  "--tooltip-fg",
1116
1200
  "--topbar-h",
@@ -1188,6 +1272,7 @@
1188
1272
  "--bg-surface": "color",
1189
1273
  "--bg-raised": "color",
1190
1274
  "--bg-inset": "color",
1275
+ "--bg-table-header": "color",
1191
1276
  "--bg-hover": "color",
1192
1277
  "--bg-active": "color",
1193
1278
  "--bg-scrim": "color",
@@ -1202,6 +1287,7 @@
1202
1287
  "--action-dark-fg": "color",
1203
1288
  "--border-card": "color",
1204
1289
  "--border-control": "color",
1290
+ "--border-split": "color",
1205
1291
  "--border-subtle": "color",
1206
1292
  "--border-strong": "color",
1207
1293
  "--action-primary": "color",
@@ -1213,6 +1299,7 @@
1213
1299
  "--bg-press": "color",
1214
1300
  "--soft-active": "color",
1215
1301
  "--danger-active": "color",
1302
+ "--danger-soft-hover": "color",
1216
1303
  "--danger-soft-active": "color",
1217
1304
  "--focus-ring": "color",
1218
1305
  "--focus-border": "color",
@@ -1368,6 +1455,10 @@
1368
1455
  "--text-2xs": "font",
1369
1456
  "--leading-2xs": "font",
1370
1457
  "--tracking-2xs": "font",
1458
+ "--text-2xs-mono": "font",
1459
+ "--text-code": "font",
1460
+ "--leading-code": "font",
1461
+ "--text-glyph-min": "font",
1371
1462
  "--text-xs": "font",
1372
1463
  "--leading-xs": "font",
1373
1464
  "--tracking-xs": "font",
@@ -1405,6 +1496,8 @@
1405
1496
  "--weight-regular": "font",
1406
1497
  "--weight-medium": "font",
1407
1498
  "--weight-semibold": "font",
1499
+ "--control-text": "font",
1500
+ "--control-leading": "font",
1408
1501
  "--radius-sm": "radius",
1409
1502
  "--radius-md": "radius",
1410
1503
  "--radius-lg": "radius",
@@ -1422,12 +1515,32 @@
1422
1515
  "--topbar-h": "spacing",
1423
1516
  "--panel-w": "spacing",
1424
1517
  "--drawer-h": "spacing",
1425
- "--h-button": "spacing",
1426
- "--h-button-sm": "spacing",
1427
- "--h-input": "spacing",
1428
1518
  "--h-nav-item": "spacing",
1429
1519
  "--h-subnav-item": "spacing",
1430
1520
  "--h-tree-item": "spacing",
1521
+ "--control-h": "spacing",
1522
+ "--control-tracking": "font",
1523
+ "--control-icon": "spacing",
1524
+ "--control-px": "spacing",
1525
+ "--control-gap": "spacing",
1526
+ "--group-gap": "spacing",
1527
+ "--bar-h": "spacing",
1528
+ "--bar-card-h": "spacing",
1529
+ "--edge-pad": "spacing",
1530
+ "--cell-px": "spacing",
1531
+ "--check-size": "spacing",
1532
+ "--tag-h": "spacing",
1533
+ "--switch-w": "spacing",
1534
+ "--switch-h": "spacing",
1535
+ "--title-cell-py": "spacing",
1536
+ "--title-cell-gap": "spacing",
1537
+ "--title-cell-tile": "spacing",
1538
+ "--title-cell-icon": "spacing",
1539
+ "--title-cell-tile-r": "spacing",
1540
+ "--title-cell-tile-gap": "spacing",
1541
+ "--h-button": "color",
1542
+ "--h-input": "color",
1543
+ "--h-button-sm": "spacing",
1431
1544
  "--page-pad-y": "spacing",
1432
1545
  "--page-pad-x": "spacing",
1433
1546
  "--section-gap": "spacing",
@@ -19,16 +19,22 @@ const dirs = readdirSync(componentsDir)
19
19
  .filter(d => !d.startsWith('_') && !d.startsWith('.') && statSync(join(componentsDir, d)).isDirectory())
20
20
  .sort();
21
21
 
22
- /** Named exports declared in a .jsx source file. */
22
+ /* Lower-case names that are public API (everything else starting lower-case is an internal helper). */
23
+ const PUBLIC_LOWER = new Set(['applyStoredTheme']);
24
+ const isPublic = (n) => /^[A-Z][A-Za-z0-9_]*$/.test(n) || PUBLIC_LOWER.has(n);
25
+ /* Framework-neutral modules the Vue entry re-exports (React gets the same values through the .jsx files). */
26
+ const VUE_MODULES = ['navigation/nav-model.js', 'navigation/theme-store.js', 'pipeline/pipeline-catalog.js', 'icons/icon-paths.js', 'icons/feather-paths.js'];
27
+
28
+ /** Named public exports declared in a source file. */
23
29
  function exportsOf(src) {
24
30
  const names = new Set();
25
- for (const re of [/export\s+function\s+([A-Z][A-Za-z0-9_]*)/g, /export\s+const\s+([A-Z][A-Za-z0-9_]*)/g]) {
26
- let m; while ((m = re.exec(src))) names.add(m[1]);
31
+ for (const re of [/export\s+function\s+([A-Za-z_][A-Za-z0-9_]*)/g, /export\s+const\s+([A-Za-z_][A-Za-z0-9_]*)/g]) {
32
+ let m; while ((m = re.exec(src))) if (isPublic(m[1])) names.add(m[1]);
27
33
  }
28
34
  for (const m of src.matchAll(/export\s*\{([^}]*)\}/g)) {
29
35
  for (const part of m[1].split(',')) {
30
36
  const name = part.trim().split(/\s+as\s+/).pop().trim();
31
- if (/^[A-Z][A-Za-z0-9_]*$/.test(name)) names.add(name);
37
+ if (isPublic(name)) names.add(name);
32
38
  }
33
39
  }
34
40
  return [...names].sort();
@@ -41,6 +47,12 @@ let vue = `/* Generated barrel — do not edit by hand. Run: node scripts/build-
41
47
  Vue 3 single-file components; your bundler needs @vitejs/plugin-vue or vue-loader. */\n`;
42
48
  let nExports = 0, nVue = 0;
43
49
 
50
+ /* Deprecated aliases kept in the React barrel until their removal release. A rename leaves the
51
+ old name here so regenerating the barrel never drops it silently. */
52
+ const ALIASES = {
53
+ 'data/Table.jsx': [{ from: 'Table', as: 'DataTable', note: 'renamed to Table in 1.0.6 — still exported in 2.x, removed in 3.0' }],
54
+ };
55
+
44
56
  for (const dir of dirs) {
45
57
  const files = readdirSync(join(componentsDir, dir)).sort();
46
58
  const jsx = files.filter(f => f.endsWith('.jsx'));
@@ -50,6 +62,9 @@ for (const dir of dirs) {
50
62
  const names = exportsOf(readFileSync(join(componentsDir, dir, f), 'utf8'));
51
63
  if (!names.length) continue;
52
64
  lines.push(`export { ${names.join(', ')} } from "./${dir}/${f}";`);
65
+ for (const a of ALIASES[`${dir}/${f}`] || []) {
66
+ lines.push(`/** @deprecated ${a.note} */`, `export { ${a.from} as ${a.as} } from "./${dir}/${f}";`);
67
+ }
53
68
  nExports += names.length;
54
69
  if (files.includes(f.replace(/\.jsx$/, '.d.ts'))) typeLines.push(`export * from "./${dir}/${f.replace(/\.jsx$/, '')}";`);
55
70
  }
@@ -61,6 +76,11 @@ for (const dir of dirs) {
61
76
  }
62
77
  }
63
78
 
79
+ vue += '\n/* shared values */\n' + VUE_MODULES.map(p => {
80
+ const names = exportsOf(readFileSync(join(componentsDir, p), 'utf8'));
81
+ return names.length ? `export { ${names.join(', ')} } from "../${p}";` : '';
82
+ }).filter(Boolean).join('\n') + '\n';
83
+
64
84
  const targets = [['index.js', react], ['index.d.ts', types]];
65
85
  if (withVue) targets.push(['_vue/index.mjs', vue]);
66
86
  const stale = [];