@duro-app/cli 5.22.0 → 5.24.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.
- package/package.json +5 -5
- package/registry.json +25 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duro-app/cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.24.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.
|
|
49
|
+
"@duro-app/ui": "^5.24.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/eslint-plugin": "^5.
|
|
65
|
-
"@duro-app/
|
|
66
|
-
"@duro-app/
|
|
64
|
+
"@duro-app/eslint-plugin": "^5.24.0",
|
|
65
|
+
"@duro-app/tokens": "^5.24.0",
|
|
66
|
+
"@duro-app/ui": "^5.24.0"
|
|
67
67
|
},
|
|
68
68
|
"scripts": {
|
|
69
69
|
"registry": "node scripts/build-registry.mjs",
|
package/registry.json
CHANGED
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"Main"
|
|
191
191
|
]
|
|
192
192
|
},
|
|
193
|
-
"description": "An application's frame: a navigation rail (a labelled nav, the brand at its top, an optional footer at its foot) beside the main content (main), with an optional Header. Below collapseBelow (sm default, md or lg), measured on the shell's own width, the rail is hidden and one sticky bar (a banner, appBarH tall) holds a Menu button that opens the same navigation in a left Drawer, the brand, and the Header's content when there is one — a shell without a Header still has its navigation on a phone. Above it the Header is a row that scrolls with the page and the rail stays sticky. CSS makes the switch: the server renders one HTML for every width with the brand in both places, and display: none hides the inactive copy, so nothing moves after hydration. A skip link (the first tab stop) focuses Main; an Aside inside Main sticks below the bar. Labels come from props. Compound component — Root is required. On React Native it is always the narrow shape: the bar below the status bar, Main under it, and the Rail in a left Drawer; there is no skip link.",
|
|
193
|
+
"description": "An application's frame: a navigation rail (a labelled nav, the brand at its top, an optional footer at its foot) beside the main content (main), with an optional Header. Below collapseBelow (sm default, md or lg), measured on the shell's own width, the rail is hidden and one sticky bar (a banner, appBarH tall) holds a Menu button that opens the same navigation in a left Drawer, the brand, and the Header's content when there is one — a shell without a Header still has its navigation on a phone. Above it the Header is a row that scrolls with the page and the rail stays sticky. CSS makes the switch: the server renders one HTML for every width with the brand in both places, and display: none hides the inactive copy, so nothing moves after hydration. A skip link (the first tab stop) focuses Main; an Aside inside Main sticks below the bar. Labels come from props. Compound component — Root is required. On React Native it is always the narrow shape: the bar below the status bar, Main under it, and the Rail in a left Drawer; there is no skip link. scroll=\"main\" makes it an app frame rather than a page: the shell is the viewport's height and Main scrolls on its own, so a SplitPane or VirtualList inside it fills Main and scrolls its own panes.",
|
|
194
194
|
"example": "<AppShell.Root\n menuLabel=\"Menu\"\n closeLabel=\"Close navigation\"\n skipLabel=\"Skip to content\"\n brand={<TextLink href=\"/\">Acme</TextLink>}\n collapseBelow=\"md\"\n>\n <AppShell.Rail aria-label=\"Navigation\" footer={<Text variant=\"bodySm\">{user.name}</Text>}>\n {({close}) => (\n <SideNav.Root value={pathname} onValueChange={(v) => { close(); navigate(v) }}>\n <SideNav.Item value=\"/docs\">Docs</SideNav.Item>\n </SideNav.Root>\n )}\n </AppShell.Rail>\n <AppShell.Header>{search}</AppShell.Header>\n <AppShell.Main>{children}</AppShell.Main>\n</AppShell.Root>",
|
|
195
195
|
"relatedTo": [
|
|
196
196
|
{
|
|
@@ -325,6 +325,17 @@
|
|
|
325
325
|
"lg"
|
|
326
326
|
]
|
|
327
327
|
},
|
|
328
|
+
{
|
|
329
|
+
"default": "'page'",
|
|
330
|
+
"description": "What scrolls. `page` (default): the document, a page that grows with its content. `main`: the shell is exactly the viewport's height and Main scrolls on its own, so a SplitPane or VirtualList inside it can fill Main and scroll its own panes (an app such as a chat or a mail client).",
|
|
331
|
+
"name": "scroll",
|
|
332
|
+
"required": false,
|
|
333
|
+
"type": "AppShellScroll",
|
|
334
|
+
"union": [
|
|
335
|
+
"page",
|
|
336
|
+
"main"
|
|
337
|
+
]
|
|
338
|
+
},
|
|
328
339
|
{
|
|
329
340
|
"description": "`AppShell.Rail`, `AppShell.Main` and an optional `AppShell.Header`, as direct children (Root places the Header's content in its bar).",
|
|
330
341
|
"name": "children",
|
|
@@ -5565,7 +5576,7 @@
|
|
|
5565
5576
|
"Item"
|
|
5566
5577
|
]
|
|
5567
5578
|
},
|
|
5568
|
-
"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.",
|
|
5569
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>",
|
|
5570
5581
|
"relatedTo": [
|
|
5571
5582
|
{
|
|
@@ -5944,7 +5955,7 @@
|
|
|
5944
5955
|
"Pane"
|
|
5945
5956
|
]
|
|
5946
5957
|
},
|
|
5947
|
-
"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.",
|
|
5948
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>",
|
|
5949
5960
|
"relatedTo": [
|
|
5950
5961
|
{
|
|
@@ -6014,6 +6025,12 @@
|
|
|
6014
6025
|
"required": false,
|
|
6015
6026
|
"type": "(px: number) => void"
|
|
6016
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
|
+
},
|
|
6017
6034
|
{
|
|
6018
6035
|
"default": "'sidebarW'",
|
|
6019
6036
|
"description": "The primary pane's narrowest width, a size token. Default: `sidebarW`",
|
|
@@ -8485,7 +8502,7 @@
|
|
|
8485
8502
|
"optional": [],
|
|
8486
8503
|
"required": []
|
|
8487
8504
|
},
|
|
8488
|
-
"description": "A windowed list on @tanstack/react-virtual: only the rows in view (plus overscan) are mounted, and rows are measured so they may differ in height. role=\"list\" with listitem rows carrying aria-setsize and aria-posinset. anchor=\"end\" opens at the last item and stays pinned to the bottom while new items arrive and the reader is at the bottom (a transcript, a log). It fills its parent, or stops at maxHeight. onStartReached fires once each time the reader scrolls to the start (load older history), and prepending items keeps the first visible row in place. On native it is a FlatList with the same props (role list; rows carry no listitem role, which React Native lacks) (maintainVisibleContentPosition for prepend).",
|
|
8505
|
+
"description": "A windowed list on @tanstack/react-virtual: only the rows in view (plus overscan) are mounted, and rows are measured so they may differ in height. role=\"list\" with listitem rows carrying aria-setsize and aria-posinset. anchor=\"end\" opens at the last item and stays pinned to the bottom while new items arrive and the reader is at the bottom (a transcript, a log). It fills its parent, or stops at maxHeight. onStartReached fires once each time the reader scrolls to the start (load older history), and prepending items keeps the first visible row in place. On native it is a FlatList with the same props (role list; rows carry no listitem role, which React Native lacks) (maintainVisibleContentPosition for prepend). The scroll region is a tab stop with a focus ring, so the keyboard can scroll rows that hold no control.",
|
|
8489
8506
|
"example": "<VirtualList\n aria-label=\"Transcript\"\n items={messages}\n getKey={(m) => m.id}\n estimateSize=\"controlLg\"\n anchor=\"end\"\n renderItem={(m) => <Text>{m.text}</Text>}\n/>",
|
|
8490
8507
|
"relatedTo": [
|
|
8491
8508
|
{
|
|
@@ -10966,6 +10983,10 @@
|
|
|
10966
10983
|
"md",
|
|
10967
10984
|
"lg"
|
|
10968
10985
|
],
|
|
10986
|
+
"AppShellScroll": [
|
|
10987
|
+
"page",
|
|
10988
|
+
"main"
|
|
10989
|
+
],
|
|
10969
10990
|
"BadgeSize": [
|
|
10970
10991
|
"sm",
|
|
10971
10992
|
"md"
|