@duro-app/cli 5.29.0 → 5.31.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 +75 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duro-app/cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.31.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.31.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/
|
|
65
|
-
"@duro-app/
|
|
66
|
-
"@duro-app/
|
|
64
|
+
"@duro-app/tokens": "^5.31.0",
|
|
65
|
+
"@duro-app/eslint-plugin": "^5.31.0",
|
|
66
|
+
"@duro-app/ui": "^5.31.0"
|
|
67
67
|
},
|
|
68
68
|
"scripts": {
|
|
69
69
|
"registry": "node scripts/build-registry.mjs",
|
package/registry.json
CHANGED
|
@@ -4457,7 +4457,7 @@
|
|
|
4457
4457
|
"Item"
|
|
4458
4458
|
]
|
|
4459
4459
|
},
|
|
4460
|
-
"description": "Dropdown action menu. Triggers actions (not value selection). Compound component — Root is required (throws without it). Menu.Trigger renders the button itself: give it the label (text, an Icon), never a Button; an icon-only trigger takes aria-label, and variant=\"ghost\" suits toolbars; size=\"small\" matches small Toggles and Buttons (a small ghost trigger is iconButtonSm). The popup is portalled and placed against the trigger (never clipped by a sticky or overflow ancestor), capped at sizes.listMaxH with scrolling, and takes focus on open (WAI-ARIA menu button); Escape closes only the menu, not an enclosing Popover or Dialog. On React Native the popup is placed against the trigger in a modal overlay; a press outside or the Android back button closes it, and an item runs its onClick after the menu has gone (so an item can open a Dialog). Menu.LinkItem takes onNavigate(href, event) on both platforms (ADR-0002); on native, without it or without preventDefault, the link opens with the system. Native has no arrow keys: each item is its own screen-reader stop.",
|
|
4460
|
+
"description": "Dropdown action menu. Triggers actions (not value selection). Compound component — Root is required (throws without it). Menu.Trigger renders the button itself: give it the label (text, an Icon), never a Button; an icon-only trigger takes aria-label, and variant=\"ghost\" suits toolbars; size=\"small\" matches small Toggles and Buttons (a small ghost trigger is iconButtonSm). The popup is portalled and placed against the trigger (never clipped by a sticky or overflow ancestor), capped at sizes.listMaxH with scrolling, and takes focus on open (WAI-ARIA menu button); Escape closes only the menu, not an enclosing Popover or Dialog. On React Native the popup is placed against the trigger in a modal overlay; a press outside or the Android back button closes it, and an item runs its onClick after the menu has gone (so an item can open a Dialog). Menu.LinkItem takes onNavigate(href, event) on both platforms (ADR-0002); on native, without it or without preventDefault, the link opens with the system. Native has no arrow keys: each item is its own screen-reader stop. A Menu.Item can be disabled: it stays listed and is announced as disabled, but the highlight and the arrow keys skip it and a press or Enter does nothing.",
|
|
4461
4461
|
"example": "<Menu.Root>\n <Menu.Trigger>Actions</Menu.Trigger>\n <Menu.Popup>\n <Menu.Item onClick={() => console.log('edit')}>Edit</Menu.Item>\n <Menu.Item onClick={() => console.log('duplicate')}>Duplicate</Menu.Item>\n <Menu.Separator />\n <Menu.LinkItem href=\"/settings\">Settings</Menu.LinkItem>\n </Menu.Popup>\n</Menu.Root>",
|
|
4462
4462
|
"relatedTo": [
|
|
4463
4463
|
{
|
|
@@ -4494,6 +4494,13 @@
|
|
|
4494
4494
|
"required": false,
|
|
4495
4495
|
"type": "() => void"
|
|
4496
4496
|
},
|
|
4497
|
+
{
|
|
4498
|
+
"default": "false",
|
|
4499
|
+
"description": "Shown but not available: skipped by the arrow keys, inert to a press, announced as disabled.",
|
|
4500
|
+
"name": "disabled",
|
|
4501
|
+
"required": false,
|
|
4502
|
+
"type": "boolean"
|
|
4503
|
+
},
|
|
4497
4504
|
{
|
|
4498
4505
|
"name": "children",
|
|
4499
4506
|
"required": true,
|
|
@@ -5589,7 +5596,7 @@
|
|
|
5589
5596
|
"Item"
|
|
5590
5597
|
]
|
|
5591
5598
|
},
|
|
5592
|
-
"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. An Item can be disabled (shown, skipped by the keys, inert to a press, announced as disabled), and onOpenChange on Root reports the list opening and closing, so work such as checking which options are available starts only once someone is choosing.",
|
|
5599
|
+
"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. An Item can be disabled (shown, skipped by the keys, inert to a press, announced as disabled), and onOpenChange on Root reports the list opening and closing, so work such as checking which options are available starts only once someone is choosing. Root takes disabled for the whole control: the trigger is a disabled button (announced so, on native too) and does not open.",
|
|
5593
5600
|
"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>",
|
|
5594
5601
|
"relatedTo": [
|
|
5595
5602
|
{
|
|
@@ -5729,6 +5736,13 @@
|
|
|
5729
5736
|
"required": false,
|
|
5730
5737
|
"type": "(open: boolean) => void"
|
|
5731
5738
|
},
|
|
5739
|
+
{
|
|
5740
|
+
"default": "false",
|
|
5741
|
+
"description": "The whole control is disabled: the trigger is a disabled button and does not open.",
|
|
5742
|
+
"name": "disabled",
|
|
5743
|
+
"required": false,
|
|
5744
|
+
"type": "boolean"
|
|
5745
|
+
},
|
|
5732
5746
|
{
|
|
5733
5747
|
"name": "children",
|
|
5734
5748
|
"required": true,
|
|
@@ -8532,6 +8546,65 @@
|
|
|
8532
8546
|
"props": null,
|
|
8533
8547
|
"sourcePath": "packages/ui/src/components/Tree/Tree.tsx"
|
|
8534
8548
|
},
|
|
8549
|
+
"Video": {
|
|
8550
|
+
"importPath": "@duro-app/ui",
|
|
8551
|
+
"kind": "component",
|
|
8552
|
+
"meta": {
|
|
8553
|
+
"description": "A video file with the browser's own controls: a <video> as wide as its container (never wider, at its own ratio) with one source of the given MIME type, named for assistive tech by label. preload is metadata by default (duration and first frame, not the whole file). Web only: on React Native, host your own player (expo-video) behind a .native.tsx leaf.",
|
|
8554
|
+
"example": "<Video src={objectUrl} type=\"video/mp4\" label={fileName} />",
|
|
8555
|
+
"whenNotToUse": [
|
|
8556
|
+
"A decorative or autoplaying background — Duro has none",
|
|
8557
|
+
"An image — use an img or Prose"
|
|
8558
|
+
],
|
|
8559
|
+
"whenToUse": [
|
|
8560
|
+
"A video file the person opened: a screen recording, a clip in a file viewer",
|
|
8561
|
+
"A video an app turned into an object URL from bytes it fetched"
|
|
8562
|
+
]
|
|
8563
|
+
},
|
|
8564
|
+
"name": "Video",
|
|
8565
|
+
"native": false,
|
|
8566
|
+
"props": [
|
|
8567
|
+
{
|
|
8568
|
+
"description": "The video's URL: a file URL, or an object URL an app made from bytes it fetched.",
|
|
8569
|
+
"name": "src",
|
|
8570
|
+
"required": true,
|
|
8571
|
+
"type": "string"
|
|
8572
|
+
},
|
|
8573
|
+
{
|
|
8574
|
+
"description": "Its MIME type (`video/mp4`, `video/webm`), so the browser picks a playable source.",
|
|
8575
|
+
"name": "type",
|
|
8576
|
+
"required": true,
|
|
8577
|
+
"type": "string"
|
|
8578
|
+
},
|
|
8579
|
+
{
|
|
8580
|
+
"description": "The accessible name: what the video shows (its file name, a caption).",
|
|
8581
|
+
"name": "label",
|
|
8582
|
+
"required": true,
|
|
8583
|
+
"type": "string"
|
|
8584
|
+
},
|
|
8585
|
+
{
|
|
8586
|
+
"default": "true",
|
|
8587
|
+
"description": "The browser's own play, seek and volume controls. Default: true.",
|
|
8588
|
+
"name": "controls",
|
|
8589
|
+
"required": false,
|
|
8590
|
+
"type": "boolean"
|
|
8591
|
+
},
|
|
8592
|
+
{
|
|
8593
|
+
"default": "'metadata'",
|
|
8594
|
+
"description": "How much to fetch before play: metadata (duration, first frame) by default.",
|
|
8595
|
+
"name": "preload",
|
|
8596
|
+
"required": false,
|
|
8597
|
+
"type": "'none' | 'metadata' | 'auto'"
|
|
8598
|
+
},
|
|
8599
|
+
{
|
|
8600
|
+
"description": "The video element, e.g. to pause it from elsewhere.",
|
|
8601
|
+
"name": "ref",
|
|
8602
|
+
"required": false,
|
|
8603
|
+
"type": "Ref<HTMLVideoElement>"
|
|
8604
|
+
}
|
|
8605
|
+
],
|
|
8606
|
+
"sourcePath": "packages/ui/src/components/Video/Video.tsx"
|
|
8607
|
+
},
|
|
8535
8608
|
"VirtualList": {
|
|
8536
8609
|
"importPath": "@duro-app/ui",
|
|
8537
8610
|
"kind": "component",
|