@duro-app/cli 5.23.0 → 5.25.0

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 (2) hide show
  1. package/package.json +5 -5
  2. package/registry.json +16 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duro-app/cli",
3
- "version": "5.23.0",
3
+ "version": "5.25.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Machine-queryable docs for the Duro design system: components, props, recipes, tokens and rules as CLI output, JSON, or an MCP server.",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@modelcontextprotocol/sdk": ">=1.0.0",
49
- "@duro-app/ui": "^5.23.0"
49
+ "@duro-app/ui": "^5.25.0"
50
50
  },
51
51
  "peerDependenciesMeta": {
52
52
  "@duro-app/ui": {
@@ -61,9 +61,9 @@
61
61
  "@types/node": "^24.0.0",
62
62
  "ts-morph": "^26.0.0",
63
63
  "typescript": "^5.7.0",
64
- "@duro-app/tokens": "^5.23.0",
65
- "@duro-app/ui": "^5.23.0",
66
- "@duro-app/eslint-plugin": "^5.23.0"
64
+ "@duro-app/eslint-plugin": "^5.25.0",
65
+ "@duro-app/tokens": "^5.25.0",
66
+ "@duro-app/ui": "^5.25.0"
67
67
  },
68
68
  "scripts": {
69
69
  "registry": "node scripts/build-registry.mjs",
package/registry.json CHANGED
@@ -5576,7 +5576,7 @@
5576
5576
  "Item"
5577
5577
  ]
5578
5578
  },
5579
- "description": "Dropdown select for choosing one value from a list. Compound component — Root is required (throws without it). Select.Trigger takes size=\"small\" to match small Toggles and Buttons in a toolbar. Select.Popup takes label (the list's accessible name) and empty (shown in place of the list when it has no items). On React Native the trigger opens a bottom sheet (a Drawer at the medium and large detents) titled by label, with a Cancel text button (cancelLabel); the chosen option is filled with a trailing check, and a press picks an option and closes the sheet. Native has no arrow keys: each option is its own screen-reader stop.",
5579
+ "description": "Dropdown select for choosing one value from a list. Compound component — Root is required (throws without it). Select.Trigger takes size=\"small\" to match small Toggles and Buttons in a toolbar. Select.Popup takes label (the list's accessible name) and empty (shown in place of the list when it has no items). On the web the list opens below the trigger, or above it when it would overflow the viewport below and fits above. On React Native the trigger opens a bottom sheet (a Drawer at the medium and large detents) titled by label, with a Cancel text button (cancelLabel); the chosen option is filled with a trailing check, and a press picks an option and closes the sheet. Native has no arrow keys: each option is its own screen-reader stop.",
5580
5580
  "example": "<Select.Root name=\"role\" defaultValue=\"viewer\">\n <Select.Trigger>\n <Select.Value placeholder=\"Select role\" />\n <Select.Icon />\n </Select.Trigger>\n <Select.Popup>\n <Select.Item value=\"admin\">Admin</Select.Item>\n <Select.Item value=\"editor\">Editor</Select.Item>\n <Select.Item value=\"viewer\">Viewer</Select.Item>\n </Select.Popup>\n</Select.Root>",
5581
5581
  "relatedTo": [
5582
5582
  {
@@ -5955,7 +5955,7 @@
5955
5955
  "Pane"
5956
5956
  ]
5957
5957
  },
5958
- "description": "Two panes side by side with a resizable separator: the first Pane is sized by the Handle (pointer drag, arrow keys, Shift for larger steps, Home and End), the second takes the rest. Min, max and starting widths are size tokens. Below collapseBelow, measured on its own width, the panes stack in one column and the handle goes; on native they always stack. A controlled collapsed prop shrinks the first pane to a strip (the iconButton size) that shows collapsedContent, removes the Handle, and keeps the first pane’s own children mounted but inert and hidden (state kept, no tab stops, out of the accessibility tree); the prior width returns when it turns false. Native ignores both. The Handle is a hairline that thickens to the accent on hover, keyboard focus or drag.",
5958
+ "description": "Two panes side by side with a resizable separator: the first Pane is sized by the Handle (pointer drag, arrow keys, Shift for larger steps, Home and End), the second takes the rest. Min, max and starting widths are size tokens. onSizeChange reports every width while the handle moves; onSizeCommit reports the width once a resize ends (a released drag, each keyboard step), the moment to persist it. Below collapseBelow, measured on its own width, the panes stack in one column and the handle goes; on native they always stack. A controlled collapsed prop shrinks the first pane to a strip (the iconButton size) that shows collapsedContent, removes the Handle, and keeps the first pane’s own children mounted but inert and hidden (state kept, no tab stops, out of the accessibility tree); the prior width returns when it turns false. Native ignores both. The Handle is a hairline that thickens to the accent on hover, keyboard focus or drag.",
5959
5959
  "example": "<SplitPane.Root aria-label=\"Resize the session list\" minSize=\"sidebarW\" maxSize=\"panelLg\">\n <SplitPane.Pane>\n <List.Root aria-label=\"Sessions\">…</List.Root>\n </SplitPane.Pane>\n <SplitPane.Handle />\n <SplitPane.Pane>\n <Panel.Root>…</Panel.Root>\n </SplitPane.Pane>\n</SplitPane.Root>",
5960
5960
  "relatedTo": [
5961
5961
  {
@@ -6025,6 +6025,12 @@
6025
6025
  "required": false,
6026
6026
  "type": "(px: number) => void"
6027
6027
  },
6028
+ {
6029
+ "description": "Called once a resize ends, with the width it ended at: when a drag is released (or cancelled) and after each keyboard step. Persist the width here rather than on every `onSizeChange`.",
6030
+ "name": "onSizeCommit",
6031
+ "required": false,
6032
+ "type": "(px: number) => void"
6033
+ },
6028
6034
  {
6029
6035
  "default": "'sidebarW'",
6030
6036
  "description": "The primary pane's narrowest width, a size token. Default: `sidebarW`",
@@ -8333,7 +8339,7 @@
8333
8339
  "Item"
8334
8340
  ]
8335
8341
  },
8336
- "description": "Hierarchy of items with single selection and expandable branches (the WAI-ARIA tree pattern): one tab stop, arrow keys, Home/End, typeahead. A click or Enter on a branch row with no href selects it and toggles it open or closed (a folder); a branch with href navigates, and its chevron toggles. An Item with href renders its row as a real link (cmd-click opens a tab) outside the tab order; Enter/Space follows it, through onNavigate(href, event) when given. Compound component — Root is required. On React Native each row is a pressable link (href) or button, and a branch has its own chevron control that expands it (named by the optional Root prop expandLabel(text), default the item text); selection, expansion and aria-level are the same, the keyboard model (arrows, Home/End, typeahead) is web only. On native onNavigate is required for in-app routes: without it a relative href goes to the system (Linking.openURL). On web a tree with more items than Root virtualizeThreshold (default 150, open or not) is windowed: only the rows in view mount, as flat treeitems with aria-level, aria-setsize and aria-posinset; maxHeight caps its scroll viewport. Items must be JSX descendants of Root (fragments and arrays are fine, an Item hidden inside another component is not seen by the window). Native renders every row.",
8342
+ "description": "Hierarchy of items with single selection and expandable branches (the WAI-ARIA tree pattern): one tab stop, arrow keys, Home/End, typeahead. A click or Enter on a branch row with no href selects it and toggles it open or closed (a folder); a branch with href navigates, and its chevron toggles. An Item with expandable is a branch before its children exist (a directory listed only when opened): it opens like any branch and onExpandedChange tells the app to load them. An Item with href renders its row as a real link (cmd-click opens a tab) outside the tab order; Enter/Space follows it, through onNavigate(href, event) when given. Compound component — Root is required. On React Native each row is a pressable link (href) or button, and a branch has its own chevron control that expands it (named by the optional Root prop expandLabel(text), default the item text); selection, expansion and aria-level are the same, the keyboard model (arrows, Home/End, typeahead) is web only. On native onNavigate is required for in-app routes: without it a relative href goes to the system (Linking.openURL). On web a tree with more items than Root virtualizeThreshold (default 150, open or not) is windowed: only the rows in view mount, as flat treeitems with aria-level, aria-setsize and aria-posinset; maxHeight caps its scroll viewport. Items must be JSX descendants of Root (fragments and arrays are fine, an Item hidden inside another component is not seen by the window). Native renders every row.",
8337
8343
  "example": "<Tree.Root aria-label=\"Blocs\" defaultExpanded={['energy']} onValueChange={setSelected}>\n <Tree.Item value=\"energy\" label=\"Core business — Energy\">\n <Tree.Item value=\"generation\" label=\"Generation\" meta=\"4 apps\" />\n <Tree.Item value=\"network\" label=\"Network operations\">\n <Tree.Item value=\"scada\" label=\"SCADA supervision\" />\n </Tree.Item>\n </Tree.Item>\n <Tree.Item value=\"finance\" label=\"Finance & steering\" />\n</Tree.Root>",
8338
8344
  "relatedTo": [
8339
8345
  {
@@ -8383,11 +8389,17 @@
8383
8389
  "type": "string"
8384
8390
  },
8385
8391
  {
8386
- "description": "nested items: the branch's children (none = a leaf)",
8392
+ "description": "nested items: the branch's children (none = a leaf, unless `expandable`)",
8387
8393
  "name": "children",
8388
8394
  "required": false,
8389
8395
  "type": "ReactNode"
8390
8396
  },
8397
+ {
8398
+ "description": "A branch before its children exist (a directory not listed yet): it shows the chevron and opens like any branch, and `onExpandedChange` tells the app to load them. Pass the children once they are there (or a loading row meanwhile).",
8399
+ "name": "expandable",
8400
+ "required": false,
8401
+ "type": "boolean"
8402
+ },
8391
8403
  {
8392
8404
  "description": "trailing content on the row (a count, a status)",
8393
8405
  "name": "meta",