dsh-plugin-core 0.31.0 → 0.33.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/dist/adv/explorer/FileBrowser.d.ts +58 -0
- package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
- package/dist/adv/explorer/FileBrowser.js +632 -0
- package/dist/adv/explorer/FileBrowser.js.map +1 -0
- package/dist/adv/explorer/crumb-nav.d.ts +45 -0
- package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
- package/dist/adv/explorer/crumb-nav.js +78 -0
- package/dist/adv/explorer/crumb-nav.js.map +1 -0
- package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
- package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
- package/dist/adv/explorer/crumbs-menu.js +102 -0
- package/dist/adv/explorer/crumbs-menu.js.map +1 -0
- package/dist/adv/explorer/explorer-css.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.js +4 -0
- package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
- package/dist/adv/explorer/explorer-css.js +3 -0
- package/dist/adv/explorer/explorer-css.js.map +1 -0
- package/dist/adv/explorer/fs-face.d.ts +36 -0
- package/dist/adv/explorer/fs-face.d.ts.map +1 -0
- package/dist/adv/explorer/fs-face.js +74 -0
- package/dist/adv/explorer/fs-face.js.map +1 -0
- package/dist/adv/explorer/index.d.ts +6 -0
- package/dist/adv/explorer/index.d.ts.map +1 -0
- package/dist/adv/explorer/index.js +6 -0
- package/dist/adv/explorer/index.js.map +1 -0
- package/dist/adv/explorer/landing.d.ts +26 -0
- package/dist/adv/explorer/landing.d.ts.map +1 -0
- package/dist/adv/explorer/landing.js +43 -0
- package/dist/adv/explorer/landing.js.map +1 -0
- package/dist/adv/explorer/open.d.ts +137 -0
- package/dist/adv/explorer/open.d.ts.map +1 -0
- package/dist/adv/explorer/open.js +350 -0
- package/dist/adv/explorer/open.js.map +1 -0
- package/dist/adv/explorer/picker-placement.d.ts +69 -0
- package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
- package/dist/adv/explorer/picker-placement.js +122 -0
- package/dist/adv/explorer/picker-placement.js.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.js +60 -0
- package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
- package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.js +63 -0
- package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.js +122 -0
- package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
- package/dist/adv/explorer/preview/index.d.ts +24 -0
- package/dist/adv/explorer/preview/index.d.ts.map +1 -0
- package/dist/adv/explorer/preview/index.js +58 -0
- package/dist/adv/explorer/preview/index.js.map +1 -0
- package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
- package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
- package/dist/adv/explorer/preview/md-labels.js +12 -0
- package/dist/adv/explorer/preview/md-labels.js.map +1 -0
- package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
- package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
- package/dist/adv/explorer/preview-title-bar.js +48 -0
- package/dist/adv/explorer/preview-title-bar.js.map +1 -0
- package/dist/adv/explorer/types.d.ts +259 -0
- package/dist/adv/explorer/types.d.ts.map +1 -0
- package/dist/adv/explorer/types.js +379 -0
- package/dist/adv/explorer/types.js.map +1 -0
- package/dist/adv/session/SessionViewModal.d.ts +37 -0
- package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
- package/dist/adv/session/SessionViewModal.js +1133 -0
- package/dist/adv/session/SessionViewModal.js.map +1 -0
- package/dist/adv/session/changes.d.ts +73 -0
- package/dist/adv/session/changes.d.ts.map +1 -0
- package/dist/adv/session/changes.js +134 -0
- package/dist/adv/session/changes.js.map +1 -0
- package/dist/adv/session/faces.d.ts +244 -0
- package/dist/adv/session/faces.d.ts.map +1 -0
- package/dist/adv/session/faces.js +17 -0
- package/dist/adv/session/faces.js.map +1 -0
- package/dist/adv/session/index.d.ts +7 -0
- package/dist/adv/session/index.d.ts.map +1 -0
- package/dist/adv/session/index.js +27 -0
- package/dist/adv/session/index.js.map +1 -0
- package/dist/adv/session/mirror/AskCard.d.ts +35 -0
- package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/AskCard.js +131 -0
- package/dist/adv/session/mirror/AskCard.js.map +1 -0
- package/dist/adv/session/mirror/BashRow.d.ts +14 -0
- package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/BashRow.js +143 -0
- package/dist/adv/session/mirror/BashRow.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatView.d.ts +47 -0
- package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatView.js +138 -0
- package/dist/adv/session/mirror/ChatView.js.map +1 -0
- package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
- package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/CommandCard.js +69 -0
- package/dist/adv/session/mirror/CommandCard.js.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
- package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
- package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
- package/dist/adv/session/mirror/Deliverables.js +175 -0
- package/dist/adv/session/mirror/Deliverables.js.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
- package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.js +69 -0
- package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
- package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
- package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageItem.js +194 -0
- package/dist/adv/session/mirror/MessageItem.js.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.js +111 -0
- package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.js +57 -0
- package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
- package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
- package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
- package/dist/adv/session/mirror/StatDialog.js +49 -0
- package/dist/adv/session/mirror/StatDialog.js.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.js +268 -0
- package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
- package/dist/adv/session/mirror/control-details.d.ts +9 -0
- package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
- package/dist/adv/session/mirror/control-details.js +549 -0
- package/dist/adv/session/mirror/control-details.js.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.js +153 -0
- package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
- package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
- package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
- package/dist/adv/session/mirror/message-chrome.js +153 -0
- package/dist/adv/session/mirror/message-chrome.js.map +1 -0
- package/dist/adv/session/mirror/process-groups.d.ts +56 -0
- package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
- package/dist/adv/session/mirror/process-groups.js +204 -0
- package/dist/adv/session/mirror/process-groups.js.map +1 -0
- package/dist/adv/session/official-classes.d.ts +28 -0
- package/dist/adv/session/official-classes.d.ts.map +1 -0
- package/dist/adv/session/official-classes.js +152 -0
- package/dist/adv/session/official-classes.js.map +1 -0
- package/dist/adv/session/open-review.d.ts +13 -0
- package/dist/adv/session/open-review.d.ts.map +1 -0
- package/dist/adv/session/open-review.js +32 -0
- package/dist/adv/session/open-review.js.map +1 -0
- package/dist/adv/session/open-session-view.d.ts +19 -0
- package/dist/adv/session/open-session-view.d.ts.map +1 -0
- package/dist/adv/session/open-session-view.js +147 -0
- package/dist/adv/session/open-session-view.js.map +1 -0
- package/dist/adv/session/pending-inputs.d.ts +33 -0
- package/dist/adv/session/pending-inputs.d.ts.map +1 -0
- package/dist/adv/session/pending-inputs.js +130 -0
- package/dist/adv/session/pending-inputs.js.map +1 -0
- package/dist/adv/session/session-css.d.ts +2 -0
- package/dist/adv/session/session-css.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.d.ts +2 -0
- package/dist/adv/session/session-css.generated.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.js +4 -0
- package/dist/adv/session/session-css.generated.js.map +1 -0
- package/dist/adv/session/session-css.js +3 -0
- package/dist/adv/session/session-css.js.map +1 -0
- package/dist/adv/session/tail-follow.d.ts +29 -0
- package/dist/adv/session/tail-follow.d.ts.map +1 -0
- package/dist/adv/session/tail-follow.js +106 -0
- package/dist/adv/session/tail-follow.js.map +1 -0
- package/dist/design/tokens-css.generated.d.ts +1 -1
- package/dist/design/tokens-css.generated.d.ts.map +1 -1
- package/dist/design/tokens-css.generated.js +1 -1
- package/dist/design/tokens-css.generated.js.map +1 -1
- package/dist/ui/Button.d.ts.map +1 -1
- package/dist/ui/Button.js +6 -2
- package/dist/ui/Button.js.map +1 -1
- package/dist/ui/Checkbox.d.ts.map +1 -1
- package/dist/ui/Checkbox.js +7 -3
- package/dist/ui/Checkbox.js.map +1 -1
- package/dist/ui/DateTimePicker.d.ts.map +1 -1
- package/dist/ui/DateTimePicker.js +4 -3
- package/dist/ui/DateTimePicker.js.map +1 -1
- package/dist/ui/Field.d.ts.map +1 -1
- package/dist/ui/Field.js +15 -7
- package/dist/ui/Field.js.map +1 -1
- package/dist/ui/Modal.d.ts +7 -6
- package/dist/ui/Modal.d.ts.map +1 -1
- package/dist/ui/Modal.js +6 -6
- package/dist/ui/Modal.js.map +1 -1
- package/dist/ui/Pagination.d.ts.map +1 -1
- package/dist/ui/Pagination.js +3 -1
- package/dist/ui/Pagination.js.map +1 -1
- package/dist/ui/Picker.d.ts.map +1 -1
- package/dist/ui/Picker.js +3 -2
- package/dist/ui/Picker.js.map +1 -1
- package/dist/ui/Segmented.d.ts.map +1 -1
- package/dist/ui/Segmented.js +4 -1
- package/dist/ui/Segmented.js.map +1 -1
- package/dist/ui/SideSheet.d.ts.map +1 -1
- package/dist/ui/SideSheet.js +6 -5
- package/dist/ui/SideSheet.js.map +1 -1
- package/dist/ui/Textarea.d.ts.map +1 -1
- package/dist/ui/Textarea.js +4 -1
- package/dist/ui/Textarea.js.map +1 -1
- package/dist/ui/actions/Button.d.ts +102 -0
- package/dist/ui/actions/Button.d.ts.map +1 -0
- package/dist/ui/actions/Button.js +233 -0
- package/dist/ui/actions/Button.js.map +1 -0
- package/dist/ui/actions/button-css.generated.d.ts +2 -0
- package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
- package/dist/ui/actions/button-css.generated.js +4 -0
- package/dist/ui/actions/button-css.generated.js.map +1 -0
- package/dist/ui/display/Card.d.ts +65 -0
- package/dist/ui/display/Card.d.ts.map +1 -0
- package/dist/ui/display/Card.js +109 -0
- package/dist/ui/display/Card.js.map +1 -0
- package/dist/ui/display/Chip.d.ts +28 -0
- package/dist/ui/display/Chip.d.ts.map +1 -0
- package/dist/ui/display/Chip.js +36 -0
- package/dist/ui/display/Chip.js.map +1 -0
- package/dist/ui/display/CodeViewer.d.ts +38 -0
- package/dist/ui/display/CodeViewer.d.ts.map +1 -0
- package/dist/ui/display/CodeViewer.js +107 -0
- package/dist/ui/display/CodeViewer.js.map +1 -0
- package/dist/ui/display/FieldHint.d.ts +18 -0
- package/dist/ui/display/FieldHint.d.ts.map +1 -0
- package/dist/ui/display/FieldHint.js +40 -0
- package/dist/ui/display/FieldHint.js.map +1 -0
- package/dist/ui/display/FlipText.d.ts +43 -0
- package/dist/ui/display/FlipText.d.ts.map +1 -0
- package/dist/ui/display/FlipText.js +59 -0
- package/dist/ui/display/FlipText.js.map +1 -0
- package/dist/ui/display/LiveText.d.ts +13 -0
- package/dist/ui/display/LiveText.d.ts.map +1 -0
- package/dist/ui/display/LiveText.js +19 -0
- package/dist/ui/display/LiveText.js.map +1 -0
- package/dist/ui/display/MarqueeText.d.ts +22 -0
- package/dist/ui/display/MarqueeText.d.ts.map +1 -0
- package/dist/ui/display/MarqueeText.js +52 -0
- package/dist/ui/display/MarqueeText.js.map +1 -0
- package/dist/ui/display/SectionHead.d.ts +35 -0
- package/dist/ui/display/SectionHead.d.ts.map +1 -0
- package/dist/ui/display/SectionHead.js +45 -0
- package/dist/ui/display/SectionHead.js.map +1 -0
- package/dist/ui/display/Surface.d.ts +43 -0
- package/dist/ui/display/Surface.d.ts.map +1 -0
- package/dist/ui/display/Surface.js +39 -0
- package/dist/ui/display/Surface.js.map +1 -0
- package/dist/ui/display/Table.d.ts +30 -0
- package/dist/ui/display/Table.d.ts.map +1 -0
- package/dist/ui/display/Table.js +96 -0
- package/dist/ui/display/Table.js.map +1 -0
- package/dist/ui/display/card-css.d.ts +2 -0
- package/dist/ui/display/card-css.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.d.ts +2 -0
- package/dist/ui/display/card-css.generated.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.js +4 -0
- package/dist/ui/display/card-css.generated.js.map +1 -0
- package/dist/ui/display/card-css.js +5 -0
- package/dist/ui/display/card-css.js.map +1 -0
- package/dist/ui/display/chip-css.d.ts +2 -0
- package/dist/ui/display/chip-css.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.d.ts +2 -0
- package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.js +4 -0
- package/dist/ui/display/chip-css.generated.js.map +1 -0
- package/dist/ui/display/chip-css.js +12 -0
- package/dist/ui/display/chip-css.js.map +1 -0
- package/dist/ui/display/code-viewer-css.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.js +4 -0
- package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
- package/dist/ui/display/code-viewer-css.js +3 -0
- package/dist/ui/display/code-viewer-css.js.map +1 -0
- package/dist/ui/display/code-viewer-lang.d.ts +15 -0
- package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-lang.js +190 -0
- package/dist/ui/display/code-viewer-lang.js.map +1 -0
- package/dist/ui/display/code-viewer-theme.d.ts +5 -0
- package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-theme.js +138 -0
- package/dist/ui/display/code-viewer-theme.js.map +1 -0
- package/dist/ui/display/flip-css.d.ts +2 -0
- package/dist/ui/display/flip-css.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.d.ts +2 -0
- package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.js +4 -0
- package/dist/ui/display/flip-css.generated.js.map +1 -0
- package/dist/ui/display/flip-css.js +4 -0
- package/dist/ui/display/flip-css.js.map +1 -0
- package/dist/ui/display/hint-css.generated.d.ts +2 -0
- package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
- package/dist/ui/display/hint-css.generated.js +4 -0
- package/dist/ui/display/hint-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.d.ts +2 -0
- package/dist/ui/display/marquee-css.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.d.ts +2 -0
- package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.js +4 -0
- package/dist/ui/display/marquee-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.js +4 -0
- package/dist/ui/display/marquee-css.js.map +1 -0
- package/dist/ui/display/section-head-css.generated.d.ts +2 -0
- package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
- package/dist/ui/display/section-head-css.generated.js +4 -0
- package/dist/ui/display/section-head-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.d.ts +2 -0
- package/dist/ui/display/surface-css.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.d.ts +2 -0
- package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.js +4 -0
- package/dist/ui/display/surface-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.js +7 -0
- package/dist/ui/display/surface-css.js.map +1 -0
- package/dist/ui/display/table-css.generated.d.ts +2 -0
- package/dist/ui/display/table-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-css.generated.js +4 -0
- package/dist/ui/display/table-css.generated.js.map +1 -0
- package/dist/ui/display/table-logic.d.ts +110 -0
- package/dist/ui/display/table-logic.d.ts.map +1 -0
- package/dist/ui/display/table-logic.js +81 -0
- package/dist/ui/display/table-logic.js.map +1 -0
- package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
- package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-plain-css.generated.js +4 -0
- package/dist/ui/display/table-plain-css.generated.js.map +1 -0
- package/dist/ui/display/table-shared.d.ts +101 -0
- package/dist/ui/display/table-shared.d.ts.map +1 -0
- package/dist/ui/display/table-shared.js +229 -0
- package/dist/ui/display/table-shared.js.map +1 -0
- package/dist/ui/feedback/AlertModal.d.ts +41 -0
- package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
- package/dist/ui/feedback/AlertModal.js +45 -0
- package/dist/ui/feedback/AlertModal.js.map +1 -0
- package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
- package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/feedback/ConfirmModal.js +47 -0
- package/dist/ui/feedback/ConfirmModal.js.map +1 -0
- package/dist/ui/feedback/Loader.d.ts +49 -0
- package/dist/ui/feedback/Loader.d.ts.map +1 -0
- package/dist/ui/feedback/Loader.js +79 -0
- package/dist/ui/feedback/Loader.js.map +1 -0
- package/dist/ui/feedback/LoaderBar.d.ts +38 -0
- package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
- package/dist/ui/feedback/LoaderBar.js +79 -0
- package/dist/ui/feedback/LoaderBar.js.map +1 -0
- package/dist/ui/feedback/Loading.d.ts +69 -0
- package/dist/ui/feedback/Loading.d.ts.map +1 -0
- package/dist/ui/feedback/Loading.js +164 -0
- package/dist/ui/feedback/Loading.js.map +1 -0
- package/dist/ui/feedback/Modal.d.ts +73 -0
- package/dist/ui/feedback/Modal.d.ts.map +1 -0
- package/dist/ui/feedback/Modal.js +83 -0
- package/dist/ui/feedback/Modal.js.map +1 -0
- package/dist/ui/feedback/SideSheet.d.ts +70 -0
- package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
- package/dist/ui/feedback/SideSheet.js +130 -0
- package/dist/ui/feedback/SideSheet.js.map +1 -0
- package/dist/ui/feedback/Toast.d.ts +45 -0
- package/dist/ui/feedback/Toast.d.ts.map +1 -0
- package/dist/ui/feedback/Toast.js +225 -0
- package/dist/ui/feedback/Toast.js.map +1 -0
- package/dist/ui/feedback/feedback-css.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.js +4 -0
- package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
- package/dist/ui/feedback/feedback-css.js +4 -0
- package/dist/ui/feedback/feedback-css.js.map +1 -0
- package/dist/ui/feedback/host-toast.d.ts +23 -0
- package/dist/ui/feedback/host-toast.d.ts.map +1 -0
- package/dist/ui/feedback/host-toast.js +34 -0
- package/dist/ui/feedback/host-toast.js.map +1 -0
- package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
- package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-art.js +6 -0
- package/dist/ui/feedback/loader-bar-art.js.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
- package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
- package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-css.generated.js +4 -0
- package/dist/ui/feedback/loader-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loading-css.generated.js +4 -0
- package/dist/ui/feedback/loading-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-host.d.ts +49 -0
- package/dist/ui/feedback/loading-host.d.ts.map +1 -0
- package/dist/ui/feedback/loading-host.js +57 -0
- package/dist/ui/feedback/loading-host.js.map +1 -0
- package/dist/ui/feedback/modal-host.d.ts +51 -0
- package/dist/ui/feedback/modal-host.d.ts.map +1 -0
- package/dist/ui/feedback/modal-host.js +170 -0
- package/dist/ui/feedback/modal-host.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
- package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.js +2 -0
- package/dist/ui/feedback/side-sheet-css.js.map +1 -0
- package/dist/ui/feedback/toast-host.d.ts +24 -0
- package/dist/ui/feedback/toast-host.d.ts.map +1 -0
- package/dist/ui/feedback/toast-host.js +20 -0
- package/dist/ui/feedback/toast-host.js.map +1 -0
- package/dist/ui/feedback-css.generated.d.ts +1 -1
- package/dist/ui/feedback-css.generated.d.ts.map +1 -1
- package/dist/ui/feedback-css.generated.js +1 -1
- package/dist/ui/feedback-css.generated.js.map +1 -1
- package/dist/ui/index.d.ts +44 -44
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +44 -44
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/infra/chevron.d.ts +22 -0
- package/dist/ui/infra/chevron.d.ts.map +1 -0
- package/dist/ui/infra/chevron.js +33 -0
- package/dist/ui/infra/chevron.js.map +1 -0
- package/dist/ui/infra/controls-css.d.ts +16 -0
- package/dist/ui/infra/controls-css.d.ts.map +1 -0
- package/dist/ui/infra/controls-css.js +26 -0
- package/dist/ui/infra/controls-css.js.map +1 -0
- package/dist/ui/infra/css.d.ts +35 -0
- package/dist/ui/infra/css.d.ts.map +1 -0
- package/dist/ui/infra/css.js +52 -0
- package/dist/ui/infra/css.js.map +1 -0
- package/dist/ui/infra/host-data.d.ts +119 -0
- package/dist/ui/infra/host-data.d.ts.map +1 -0
- package/dist/ui/infra/host-data.js +122 -0
- package/dist/ui/infra/host-data.js.map +1 -0
- package/dist/ui/infra/locale.d.ts +4 -0
- package/dist/ui/infra/locale.d.ts.map +1 -0
- package/dist/ui/infra/locale.js +17 -0
- package/dist/ui/infra/locale.js.map +1 -0
- package/dist/ui/infra/overlay-css.d.ts +2 -0
- package/dist/ui/infra/overlay-css.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
- package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.js +4 -0
- package/dist/ui/infra/overlay-css.generated.js.map +1 -0
- package/dist/ui/infra/overlay-css.js +2 -0
- package/dist/ui/infra/overlay-css.js.map +1 -0
- package/dist/ui/infra/overlay.d.ts +62 -0
- package/dist/ui/infra/overlay.d.ts.map +1 -0
- package/dist/ui/infra/overlay.js +94 -0
- package/dist/ui/infra/overlay.js.map +1 -0
- package/dist/ui/infra/panel-css.d.ts +2 -0
- package/dist/ui/infra/panel-css.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.js +4 -0
- package/dist/ui/infra/panel-css.generated.js.map +1 -0
- package/dist/ui/infra/panel-css.js +2 -0
- package/dist/ui/infra/panel-css.js.map +1 -0
- package/dist/ui/infra/panel.d.ts +41 -0
- package/dist/ui/infra/panel.d.ts.map +1 -0
- package/dist/ui/infra/panel.js +37 -0
- package/dist/ui/infra/panel.js.map +1 -0
- package/dist/ui/infra/side-panel-css.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.js +4 -0
- package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
- package/dist/ui/infra/side-panel-css.js +2 -0
- package/dist/ui/infra/side-panel-css.js.map +1 -0
- package/dist/ui/infra/thenable.d.ts +9 -0
- package/dist/ui/infra/thenable.d.ts.map +1 -0
- package/dist/ui/infra/thenable.js +15 -0
- package/dist/ui/infra/thenable.js.map +1 -0
- package/dist/ui/infra/ticker.d.ts +8 -0
- package/dist/ui/infra/ticker.d.ts.map +1 -0
- package/dist/ui/infra/ticker.js +49 -0
- package/dist/ui/infra/ticker.js.map +1 -0
- package/dist/ui/infra/tooltip.d.ts +29 -0
- package/dist/ui/infra/tooltip.d.ts.map +1 -0
- package/dist/ui/infra/tooltip.js +10 -0
- package/dist/ui/infra/tooltip.js.map +1 -0
- package/dist/ui/inputs/Checkbox.d.ts +24 -0
- package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
- package/dist/ui/inputs/Checkbox.js +35 -0
- package/dist/ui/inputs/Checkbox.js.map +1 -0
- package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
- package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
- package/dist/ui/inputs/DateTimePicker.js +462 -0
- package/dist/ui/inputs/DateTimePicker.js.map +1 -0
- package/dist/ui/inputs/Field.d.ts +125 -0
- package/dist/ui/inputs/Field.d.ts.map +1 -0
- package/dist/ui/inputs/Field.js +175 -0
- package/dist/ui/inputs/Field.js.map +1 -0
- package/dist/ui/inputs/InputGroup.d.ts +91 -0
- package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
- package/dist/ui/inputs/InputGroup.js +125 -0
- package/dist/ui/inputs/InputGroup.js.map +1 -0
- package/dist/ui/inputs/ModelPicker.d.ts +48 -0
- package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
- package/dist/ui/inputs/ModelPicker.js +101 -0
- package/dist/ui/inputs/ModelPicker.js.map +1 -0
- package/dist/ui/inputs/Picker.d.ts +56 -0
- package/dist/ui/inputs/Picker.d.ts.map +1 -0
- package/dist/ui/inputs/Picker.js +244 -0
- package/dist/ui/inputs/Picker.js.map +1 -0
- package/dist/ui/inputs/Segmented.d.ts +99 -0
- package/dist/ui/inputs/Segmented.d.ts.map +1 -0
- package/dist/ui/inputs/Segmented.js +135 -0
- package/dist/ui/inputs/Segmented.js.map +1 -0
- package/dist/ui/inputs/Textarea.d.ts +36 -0
- package/dist/ui/inputs/Textarea.d.ts.map +1 -0
- package/dist/ui/inputs/Textarea.js +35 -0
- package/dist/ui/inputs/Textarea.js.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.js +39 -0
- package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.js +4 -0
- package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
- package/dist/ui/inputs/datetime-logic.d.ts +102 -0
- package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-logic.js +200 -0
- package/dist/ui/inputs/datetime-logic.js.map +1 -0
- package/dist/ui/inputs/field-css.generated.d.ts +2 -0
- package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/field-css.generated.js +4 -0
- package/dist/ui/inputs/field-css.generated.js.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.js +4 -0
- package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.d.ts +2 -0
- package/dist/ui/inputs/picker-css.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
- package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.js +4 -0
- package/dist/ui/inputs/picker-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.js +4 -0
- package/dist/ui/inputs/picker-css.js.map +1 -0
- package/dist/ui/inputs/picker-icons.d.ts +12 -0
- package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
- package/dist/ui/inputs/picker-icons.js +29 -0
- package/dist/ui/inputs/picker-icons.js.map +1 -0
- package/dist/ui/inputs/picker-logic.d.ts +33 -0
- package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
- package/dist/ui/inputs/picker-logic.js +68 -0
- package/dist/ui/inputs/picker-logic.js.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.js +4 -0
- package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
- package/dist/ui/layout/PanelDock.d.ts +132 -0
- package/dist/ui/layout/PanelDock.d.ts.map +1 -0
- package/dist/ui/layout/PanelDock.js +390 -0
- package/dist/ui/layout/PanelDock.js.map +1 -0
- package/dist/ui/layout/QuickToolbar.d.ts +54 -0
- package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
- package/dist/ui/layout/QuickToolbar.js +254 -0
- package/dist/ui/layout/QuickToolbar.js.map +1 -0
- package/dist/ui/layout/SplitGroup.d.ts +37 -0
- package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
- package/dist/ui/layout/SplitGroup.js +36 -0
- package/dist/ui/layout/SplitGroup.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.js +4 -0
- package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.js +4 -0
- package/dist/ui/layout/panel-dock-css.js.map +1 -0
- package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
- package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-logic.js +110 -0
- package/dist/ui/layout/panel-dock-logic.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.js +40 -0
- package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
- package/dist/ui/layout/resizer.d.ts +29 -0
- package/dist/ui/layout/resizer.d.ts.map +1 -0
- package/dist/ui/layout/resizer.js +42 -0
- package/dist/ui/layout/resizer.js.map +1 -0
- package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
- package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/split-group-css.generated.js +4 -0
- package/dist/ui/layout/split-group-css.generated.js.map +1 -0
- package/dist/ui/navigation/Pagination.d.ts +59 -0
- package/dist/ui/navigation/Pagination.d.ts.map +1 -0
- package/dist/ui/navigation/Pagination.js +112 -0
- package/dist/ui/navigation/Pagination.js.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.js +4 -0
- package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
- package/dist/ui/navigation/pagination-logic.d.ts +36 -0
- package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-logic.js +73 -0
- package/dist/ui/navigation/pagination-logic.js.map +1 -0
- package/dist/ui/official.js +2 -2
- package/dist/ui/official.js.map +1 -1
- package/dist/ui/overlay-css.generated.d.ts +1 -1
- package/dist/ui/overlay-css.generated.d.ts.map +1 -1
- package/dist/ui/overlay-css.generated.js +1 -1
- package/dist/ui/overlay-css.generated.js.map +1 -1
- package/dist/ui/overlay.d.ts +13 -0
- package/dist/ui/overlay.d.ts.map +1 -1
- package/dist/ui/overlay.js +33 -0
- package/dist/ui/overlay.js.map +1 -1
- package/dist/ui/side-sheet-css.generated.d.ts +1 -1
- package/dist/ui/side-sheet-css.generated.d.ts.map +1 -1
- package/dist/ui/side-sheet-css.generated.js +1 -1
- package/dist/ui/side-sheet-css.generated.js.map +1 -1
- package/dist/utils/i18n.d.ts +2 -2
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/design/architecture.md +9 -8
- package/docs/design/copywriting.md +23 -0
- package/docs/design/external/dsh-host.md +5 -5
- package/docs/design/structure.md +132 -128
- package/docs/design/style.md +5 -5
- package/docs/help/ui.doc.ts +4 -4
- package/docs/help/ui.md +4 -4
- package/docs/help/utils.doc.ts +3 -3
- package/docs/help/utils.md +3 -3
- package/docs/requirements.md +30 -276
- package/package.json +1 -1
package/docs/design/structure.md
CHANGED
|
@@ -1,165 +1,169 @@
|
|
|
1
1
|
# 结构规范
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文件回答三个问题:
|
|
4
4
|
|
|
5
|
-
1.
|
|
6
|
-
2.
|
|
5
|
+
1. **控件怎么归类** —— 一个新控件该放哪,按固定顺序判定,不用开会。
|
|
6
|
+
2. **代码怎么分** —— 每个目录放什么、谁依赖谁。
|
|
7
|
+
3. **预览插件(packages/demo)左侧怎么分** —— 与代码同构的两级目录。
|
|
7
8
|
|
|
8
|
-
> 本文是**目标态**(2026-10-19 用户拍板)。哪些已在、哪些暂缓,用状态标注区分;
|
|
9
|
-
> 现状与目标的差异见文末「未落地项」。
|
|
10
9
|
> 运行逻辑(样式注入机制、数据流、触发关系)的真源在 `docs/design/architecture.md`,本文不重复。
|
|
10
|
+
> 2026-11-05 用户拍板:分类改用**业界通名**(对齐 Ant Design / Element Plus / MUI / Mantine / Chakra 的菜单),
|
|
11
|
+
> 并且**结构优先于兼容** —— 消费方该改就改,不为保持旧 import 而选不合理结构。
|
|
11
12
|
|
|
12
|
-
##
|
|
13
|
+
## 一、三级:区 → 类 → 控件
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
| 级 | 是什么 | 举例 |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| **区** | 能力域,导航一级 | 入门 / 设计 / 控件 / 应用模块 / 工具方法 |
|
|
18
|
+
| **类** | 控件按用途归的类,导航二级 + 目录一级 | 动作 / 录入 / 展示 / 反馈 / 布局 / 导航 |
|
|
19
|
+
| **控件** | 一个导出件 = 目录里的一个文件 | `Button.ts` / `Picker.ts` / `Table.ts` |
|
|
20
|
+
|
|
21
|
+
「区」只存在于**导航与文档**里;代码目录只有类和控件。两棵树不是同一棵树,别互相找。
|
|
22
|
+
|
|
23
|
+
## 二、控件归类:三步判定
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
拿一个新控件,从上往下走,走到哪停就放哪:
|
|
26
|
+
|
|
27
|
+
1. **import React 或 DOM 吗?** 不 import → 它不是控件:落 `src/utils/`(纯方法)或 `src/design/`(值 / 注入机制)。
|
|
28
|
+
2. **必须拿到业务对象(工作区 / 会话 / 文件 / 模型)才能工作吗?** → 落 `src/adv/`,不进 `ui`。
|
|
29
|
+
3. **按「用户拿它做什么」选类**:
|
|
30
|
+
|
|
31
|
+
| 类 | 判据 | 成员(2026-11-05) |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| **动作** `actions` | 点它触发一次操作,本身不产生值 | Button、IconButton |
|
|
34
|
+
| **录入** `inputs` | 产生或修改一个值 | Input、NumberInput、PrefixedInput、Textarea、Checkbox、Segmented、Picker、DateTimePicker、WorkspacePicker、ModelPicker、InputGroup |
|
|
35
|
+
| **展示** `display` | 只呈现内容,不改变状态 | Card、StripCard、Surface、Chip、Table、CodeViewer、MarqueeText、FlipText、LiveText、SectionHead、FieldHint |
|
|
36
|
+
| **反馈** `feedback` | 表达「正在进行 / 刚完成 / 出错了」 | Modal、SideSheet、AlertModal、ConfirmModal、alertModal、confirmModal、Toast、host-toast、Loader、LoaderBar、Loading |
|
|
37
|
+
| **布局** `layout` | 只决定内部元素怎么摆、怎么拼 | SplitGroup、PanelDock、QuickToolbar、resizer |
|
|
38
|
+
| **导航** `navigation` | 在多个视图 / 页之间移动 | Pagination |
|
|
39
|
+
| **基础设施** `infra` | **不是控件**:宿主桥、注入器、纯逻辑、跨类共用底座 | official、css、controls-css、locale、tooltip、host-data、modal-host、loading-host、toast-host、overlay、panel + 皮肤、thenable、ticker、chevron |
|
|
20
40
|
|
|
21
|
-
|
|
22
|
-
|---|---|
|
|
23
|
-
| ✅ | 代码已在(质量待逐个重审) |
|
|
24
|
-
| 🟡 | 缺口 / 待迁:需要补或需要挪位置的 |
|
|
25
|
-
| ⚪ | 暂缓:先标着,不做 |
|
|
41
|
+
三条边界裁决(按顺序用):
|
|
26
42
|
|
|
27
|
-
|
|
43
|
+
1. **同时持有「值」和「操作」** → 归布局(它其实是两个控件焊在一起),或者直接拆成两个。
|
|
44
|
+
2. **内部元素位置由它决定** → 布局;**只加一层外观、位置全由调用方给** → 展示(Card / Surface 属展现外壳)。
|
|
45
|
+
3. **跨类说不清** → 按**多数派**:查 AntD / Element / MUI / Mantine / Chakra 的菜单,装得多的那类胜出,并在本文登记结果。
|
|
28
46
|
|
|
29
|
-
|
|
47
|
+
**新增第 8 个类要用户拍板**,agent 一律不自建 —— 这是防「又冒出一个新空间」的闸门。
|
|
48
|
+
拿不准时归现有 6 类,宁可挤一点也不另开。
|
|
49
|
+
|
|
50
|
+
## 三、代码分层
|
|
30
51
|
|
|
31
52
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
├──
|
|
35
|
-
│
|
|
36
|
-
│ └── style-kit ✅ 运行时注入 <style>,createStyleKit({ id })
|
|
53
|
+
src/
|
|
54
|
+
├── design/ ① 设计层 —— 只放「值」和「注入机制」,零 React
|
|
55
|
+
│ ├── tokens 颜色 / 字号 / 间距 / 圆角 / 层级(别名官方 --dsw-alias-*)
|
|
56
|
+
│ └── style-kit 运行时注入 <style>,createStyleKit({ id })
|
|
37
57
|
│
|
|
38
|
-
├── ui/
|
|
39
|
-
│ ├──
|
|
40
|
-
│ ├──
|
|
41
|
-
│
|
|
42
|
-
│
|
|
43
|
-
│
|
|
44
|
-
│
|
|
45
|
-
│ │
|
|
46
|
-
│
|
|
47
|
-
│ │
|
|
48
|
-
│
|
|
49
|
-
│
|
|
50
|
-
│ │
|
|
51
|
-
│
|
|
52
|
-
│ │
|
|
53
|
-
│ ├──
|
|
54
|
-
│
|
|
55
|
-
│
|
|
56
|
-
│ │ InputGroup(输入框 + 按钮组焊成一体:可选前置标题 / 撤销 / 自定义高度)
|
|
57
|
-
│ └── 布局 ✅ PanelDock / createPanelDock(可停靠分栏:多面板 + 拖拽拉栏)
|
|
58
|
-
│ 组名 = 窗口一对一、同名覆盖、默认上限 3 超限拒绝;
|
|
59
|
-
│ 不做 tab 切换 / 自动淘汰 / 浮动层(用户 2026-10-20 定案)
|
|
60
|
-
│ ✅ QuickToolbar(右侧浮动快捷工具栏:内置回顶部 + 自定义按钮;
|
|
61
|
-
│ 纵向恒贴屏幕底边,横向默认贴屏幕右缘或指定控件右缘外侧)
|
|
58
|
+
├── ui/ ② 控件(依赖 design)
|
|
59
|
+
│ ├── index.ts 对外唯一入口(导出面扁平,不按类开子路径)
|
|
60
|
+
│ ├── official.ts L1 官方 adapter —— 全仓唯一 import 官方 primitives 的地方
|
|
61
|
+
│ ├── actions/ Button · IconButton(+ button.css / generated)
|
|
62
|
+
│ ├── inputs/ Field(Input/NumberInput/PrefixedInput)· Textarea · Checkbox
|
|
63
|
+
│ │ Segmented · Picker(+ picker-logic / picker-icons)
|
|
64
|
+
│ │ DateTimePicker(+ datetime-logic)· InputGroup
|
|
65
|
+
│ │ WorkspacePicker · ModelPicker
|
|
66
|
+
│ ├── display/ Card · StripCard · Surface · Chip · Table(+ table-logic / table-shared)
|
|
67
|
+
│ │ CodeViewer(+ code-viewer-lang / -theme)· MarqueeText · FlipText
|
|
68
|
+
│ │ LiveText · SectionHead · FieldHint
|
|
69
|
+
│ ├── feedback/ Modal · SideSheet · AlertModal · ConfirmModal(+ modal-host)
|
|
70
|
+
│ │ Toast(+ toast-host)· host-toast · Loader · LoaderBar · Loading
|
|
71
|
+
│ ├── layout/ SplitGroup · PanelDock(+ panel-dock-logic)· QuickToolbar
|
|
72
|
+
│ │ (+ quick-toolbar-logic)· resizer
|
|
73
|
+
│ ├── navigation/ Pagination(+ pagination-logic)
|
|
74
|
+
│ └── infra/ css · controls-css · locale · tooltip · host-data
|
|
75
|
+
│ overlay / panel(跨类共用浮层底座 + 皮肤)· thenable · ticker · chevron
|
|
62
76
|
│
|
|
63
|
-
├── utils/
|
|
64
|
-
│ ├── date
|
|
65
|
-
│ ├── i18n
|
|
66
|
-
│ ├──
|
|
67
|
-
│
|
|
68
|
-
│ ├── http ⚪ 暂缓
|
|
69
|
-
│ └── path ✅ 纯路径方法(无 UI):joinPath / parentOf / crumbsOf / extOf / mimeOf
|
|
70
|
-
│ (已从 explorer/types.ts 迁入,2026-10-20)
|
|
77
|
+
├── utils/ ③ 纯方法 —— 零 React / 零 DOM(谁都能用,它不依赖谁)
|
|
78
|
+
│ ├── date 日期 / 相对时间 / 时间区间
|
|
79
|
+
│ ├── i18n 内置中英字典
|
|
80
|
+
│ ├── path joinPath / parentOf / crumbsOf / extOf / mimeOf
|
|
81
|
+
│ └── number / string / http 暂缓(不对外承诺,但代码在)
|
|
71
82
|
│
|
|
72
|
-
├── adv
|
|
73
|
-
│ ├── FileBrowser
|
|
74
|
-
│
|
|
75
|
-
│ ├── types ✅ 纯逻辑层(零 React / 零官方件):预览分发 / 错误码 / 根反推 / 过滤
|
|
76
|
-
│ └── preview ✅ 预览体家族:md / 代码 / HTML / PDF / Office / 图片
|
|
83
|
+
├── adv/ ④ 应用模块 —— ui + utils 拼出来的成品
|
|
84
|
+
│ ├── explorer/ 文件浏览:FileBrowser · openFilePreview · pickWorkspaceFile · 预览体家族
|
|
85
|
+
│ └── session/ 会话记录:SessionPreview
|
|
77
86
|
│
|
|
78
|
-
└──
|
|
79
|
-
└── SessionPreview ✅ 成品:ui.Modal 承载会话消息(modal / sidebar / page)
|
|
87
|
+
└── host/ 宿主接口类型(无运行时)
|
|
80
88
|
```
|
|
81
89
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
| 成品 | 用到的 `ui` 基础能力 | 定制了什么 |
|
|
85
|
-
|---|---|---|
|
|
86
|
-
| `adv.session` · `SessionPreview` | `Modal` | 把会话消息放进弹窗 |
|
|
87
|
-
| `adv.explorer` · `FileBrowser` | `Button`(面包屑 ghost / 行尾 outline)/ `IconButton` / `Segmented` / `MarqueeText` / `PanelDock`(浏览态外壳与拖宽)+ 官方件(`FileTypeIcon` / `MarkdownText` / `CodeBlock`,经 `ui/official`) | 面包屑 + 内联展开树 + 预览体家族 + 两命令式能力 |
|
|
88
|
-
|
|
89
|
-
`adv.*` 只做「拼装 + 业务定制」,不重新实现按钮 / 下拉 / 弹窗 / 侧栏。
|
|
90
|
+
**一个控件的四份东西放同一个目录**:`X.ts` + `X-logic.ts`(若有)+ `X.css`(真源)+ `X-css.generated.ts`(生成物)。
|
|
91
|
+
CSS 真源位置改动要同步 `scripts/gen-css.mjs` 的 `MAP`(显式清单,刻意保留摩擦)。
|
|
90
92
|
|
|
91
|
-
|
|
93
|
+
## 四、依赖方向(单向,不许反向)
|
|
92
94
|
|
|
93
95
|
```
|
|
94
|
-
design ──▶ ui ──▶ adv
|
|
96
|
+
design ──▶ ui ──▶ adv/explorer · adv/session
|
|
95
97
|
utils(谁都不依赖,谁都可以用)
|
|
96
98
|
```
|
|
97
99
|
|
|
98
|
-
- `utils` 不得 import `ui` / `design` / React / DOM / 宿主 API
|
|
100
|
+
- `utils` 不得 import `ui` / `design` / React / DOM / 宿主 API。
|
|
99
101
|
- `design` 不得依赖 `ui`(否则「只想要 token 的插件」被迫拖进 React)。
|
|
100
|
-
- `ui` 不得依赖 `adv
|
|
101
|
-
- `adv
|
|
102
|
+
- `ui` 不得依赖 `adv/*`(反向成环)。
|
|
103
|
+
- `adv/*` 只从 `ui` / `utils` 的公开导出消费,不直接 import 官方平台模块(要包先过 `ui/official.ts`)。
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
## 五、立包判据
|
|
104
106
|
|
|
105
|
-
|
|
107
|
+
**有实质内容、会持续长大的功能模块才独立成区;只是一个控件就进 `ui`。**
|
|
106
108
|
统一到「控件」粒度,不提整个页面。
|
|
107
109
|
|
|
108
|
-
|
|
110
|
+
## 六、对外入口
|
|
109
111
|
|
|
110
|
-
|
|
112
|
+
| 子路径 | 用途 | 为什么单独开 |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| `dsh-plugin-core/ui` | 全部控件(唯一主入口,扁平导出) | 单入口是业界共识(AntD / MUI 同);按类开 7 条子路径只增加记忆成本 |
|
|
115
|
+
| `dsh-plugin-core/ui/official` | L1 官方 adapter | `adv/*` 要直接取官方件,属结构性第二入口 |
|
|
116
|
+
| `dsh-plugin-core/ui/code-viewer` | CodeViewer | 直接引 `@uiw/react-codemirror`,重依赖必须可选 |
|
|
117
|
+
| `dsh-plugin-core/ui/host-toast` | 宿主原生 Toast | 入口静态 import 官方件会让 Node 单测崩(旧坑) |
|
|
118
|
+
| `dsh-plugin-core/adv/explorer` | 文件浏览 | 应用模块独立子路径 |
|
|
119
|
+
| `dsh-plugin-core/adv/session` | 会话预览 | 同上 |
|
|
120
|
+
|
|
121
|
+
**不再新增子路径**:想加,先问「是重依赖,还是只是分类?」—— 分类归目录,不归导出口。
|
|
122
|
+
|
|
123
|
+
## 七、demo 展示分区(两级,17 页)
|
|
124
|
+
|
|
125
|
+
侧栏与右侧共用 `packages/demo/src/sections/index.tsx` 的 `ALL_SECTIONS`(单一事实源)。
|
|
111
126
|
|
|
112
127
|
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
│
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
│
|
|
122
|
-
|
|
123
|
-
│
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
│ ├─ 文件浏览 FileBrowser + openFilePreview / pickWorkspaceFile(点文件夹、点文件看预览)
|
|
129
|
-
│ └─ 会话预览 SessionPreview(弹窗里放会话记录)
|
|
130
|
-
│
|
|
131
|
-
└─ ④ 工具方法
|
|
132
|
-
日期格式化 / 相对时间(拿真实值演示,不是控件)
|
|
128
|
+
① 入门 start 帮助索引 / 快速开始 / 参考
|
|
129
|
+
② 设计 design 设计基础(token · 明暗)
|
|
130
|
+
③ 控件 components
|
|
131
|
+
├─ 动作 actions Button · IconButton
|
|
132
|
+
├─ 录入 inputs Input · NumberInput · PrefixedInput · Textarea · Checkbox
|
|
133
|
+
│ Segmented · Picker · DateTimePicker · WorkspacePicker
|
|
134
|
+
│ ModelPicker · InputGroup
|
|
135
|
+
├─ 展示 display Card · StripCard · Surface · Chip · Table · CodeViewer
|
|
136
|
+
│ MarqueeText · FlipText · LiveText · SectionHead · FieldHint
|
|
137
|
+
├─ 反馈 feedback Modal · SideSheet · AlertModal · ConfirmModal
|
|
138
|
+
│ Toast · Loader · LoaderBar · Loading
|
|
139
|
+
├─ 布局 layout SplitGroup · PanelDock · QuickToolbar
|
|
140
|
+
└─ 导航 navigation Pagination
|
|
141
|
+
④ 应用模块 blocks 文件浏览 / 会话预览
|
|
142
|
+
⑤ 工具方法 utils 日期时间 / 文本 / 数字 / HTTP / 多语言
|
|
133
143
|
```
|
|
134
144
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
|
140
|
-
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
| `
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
-
|
|
157
|
-
`openFilePreview` / `pickWorkspaceFile` 两命令式能力 + 纯逻辑层;`WorkspacePicker` 留在 `ui`。
|
|
158
|
-
- ~~**路径方法归基础**~~ → **已落地**(2026-10-20):`joinPath` / `parentOf` / `crumbsOf` / `extOf` / `mimeOf`
|
|
159
|
-
在 `utils/path`;`previewInfoOf` 等业务判断留 `explorer/types.ts`(纯逻辑层,node 单测直接引)。
|
|
160
|
-
- ~~**补基础组件**:`ui` 需补 `SidebarLayout` / `SplitPane`~~ → **已落地为 `PanelDock`**(2026-10-20),
|
|
161
|
-
`resizer` 保留为它的底层函数。
|
|
162
|
-
- **暂缓项**:`utils/string`、`utils/number`、`utils/http`、`ui/feedback/Loading` —— 只标注,未删代码。
|
|
145
|
+
合并后的页按旧页面的顺序串联,控件之间的分节就是各 `Example` 块自己的标题(不再额外加一层小标题)。
|
|
146
|
+
|
|
147
|
+
## 八、对应表:导航 ↔ 代码 ↔ 文档
|
|
148
|
+
|
|
149
|
+
| 导航项 | 代码 | 文档 |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| ① 入门 | (无,讲述型) | `docs/help/index.md` + `integration.md` |
|
|
152
|
+
| ② 设计 | `src/design/` | `docs/help/design.md` |
|
|
153
|
+
| ③ 控件 · 动作 | `src/ui/actions/` | `docs/help/ui.md` |
|
|
154
|
+
| ③ 控件 · 录入 | `src/ui/inputs/` | 同上 |
|
|
155
|
+
| ③ 控件 · 展示 | `src/ui/display/` | 同上 |
|
|
156
|
+
| ③ 控件 · 反馈 | `src/ui/feedback/` | 同上 |
|
|
157
|
+
| ③ 控件 · 布局 | `src/ui/layout/` | 同上 |
|
|
158
|
+
| ③ 控件 · 导航 | `src/ui/navigation/` | 同上 |
|
|
159
|
+
| (无导航项) | `src/ui/infra/` | 只在「入门 · 接入」讲一句 |
|
|
160
|
+
| ④ 应用模块 | `src/adv/explorer/`、`src/adv/session/` | `docs/help/explorer.md`、`session.md` |
|
|
161
|
+
| ⑤ 工具方法 | `src/utils/` | `docs/help/methods.md` |
|
|
162
|
+
|
|
163
|
+
## 九、未落地项
|
|
164
|
+
|
|
165
|
+
- ~~**分类表 + 自检**~~ → **已落地**(2026-11-05):`test/ui-taxonomy.test.mjs` 盯三件事 —— `src/ui` 根只许 `index.ts` / `official.ts`、类目录只有登记过的 7 个、`*.css` 与 `*-css.generated.ts` 必须同目录成对。
|
|
166
|
+
- **暂缓项**:`utils/string`、`utils/number`、`utils/http`、`ui/feedback/Loading`(只标注,未删代码)。
|
|
163
167
|
- **库里没有的**:
|
|
164
168
|
- Switch 开关 —— 官方 primitives 有,归「包官方」批次;
|
|
165
|
-
- Select 下拉 —— 用 `Picker` 代替(`SelectField` 曾因依赖官方 Menu
|
|
169
|
+
- Select 下拉 —— 用 `Picker` 代替(`SelectField` 曾因依赖官方 Menu 被删,属已反转的旧决策)。
|
package/docs/design/style.md
CHANGED
|
@@ -122,13 +122,13 @@ its own assertion.
|
|
|
122
122
|
|
|
123
123
|
> EN: There is only one arrow: `Chevron`
|
|
124
124
|
|
|
125
|
-
`ui` 层零官方依赖,箭头一律走 `src/ui/chevron.ts` 的自绘 chevron(`h(Chevron, { dir, size })`,
|
|
125
|
+
`ui` 层零官方依赖,箭头一律走 `src/ui/infra/chevron.ts` 的自绘 chevron(`h(Chevron, { dir, size })`,
|
|
126
126
|
四向共用一条路径,靠旋转实现)。**不许再写 `'▾'` / `'↑'` 这类字形**——各系统字体下粗细、角度、
|
|
127
127
|
基线都不一样,同一套界面里会冒出第二种箭头(2026-10-26:卡片折叠箭头就是这么来的)。
|
|
128
128
|
有自检盯着:`test/quality.test.mjs`。
|
|
129
129
|
|
|
130
130
|
EN: The `ui` layer has no official dependency, so every arrow comes from the self-drawn chevron in
|
|
131
|
-
`src/ui/chevron.ts`. Never write a glyph arrow again; a test enforces it.
|
|
131
|
+
`src/ui/infra/chevron.ts`. Never write a glyph arrow again; a test enforces it.
|
|
132
132
|
|
|
133
133
|
## 拼成一体:外壳持框,内件交边
|
|
134
134
|
|
|
@@ -140,7 +140,7 @@ EN: The `ui` layer has no official dependency, so every arrow comes from the sel
|
|
|
140
140
|
自己画 `:focus-visible` 圈——否则格子里会冒出半圈描边。
|
|
141
141
|
|
|
142
142
|
`SplitGroup` 用后代选择器直接压内件(`.dshpc-split .dshpc-picker__trigger` / `.dshpc-split .dshpc-seg`),
|
|
143
|
-
所以**内件类名就是耦合点**:改这些类名或结构必须同步改 `src/ui/
|
|
143
|
+
所以**内件类名就是耦合点**:改这些类名或结构必须同步改 `src/ui/layout/split-group.css`,否则拼接
|
|
144
144
|
静默失效(双边框、底色错位),没有自检能替你发现。高度不写死——内件按自己的 `size`(sm 24 /
|
|
145
145
|
md 28 / lg 32)撑开,外壳跟着长;两格传同一个 `size` 才逐像素等高。**外壳绝不能用 `height:100%`
|
|
146
146
|
拉满内件**:它和 `.dshpc-picker__trigger--lg` / `--sm` 同特异性(两个类)且 `split-group.css`
|
|
@@ -154,7 +154,7 @@ md 28 / lg 32)撑开,外壳跟着长;两格传同一个 `size` 才逐像
|
|
|
154
154
|
EN: Welding controls into one visual unit has exactly one recipe: the shell owns border, radius,
|
|
155
155
|
`overflow:hidden` and the shared `:focus-within` ring; the cells hand over border, background and radius.
|
|
156
156
|
`SplitGroup` overrides inner classes with descendant selectors, so those class names are the coupling point —
|
|
157
|
-
rename them and you must update `src/ui/
|
|
157
|
+
rename them and you must update `src/ui/layout/split-group.css`, or the weld fails silently.
|
|
158
158
|
|
|
159
159
|
## 滚动条让位:一律离边缘 1px
|
|
160
160
|
|
|
@@ -190,7 +190,7 @@ one-liner; `--dshpc-dock-gap` was removed on 2026-11-02. A test enforces the bor
|
|
|
190
190
|
|
|
191
191
|
> EN: Three tiers for floating surfaces — modal / popover / menu
|
|
192
192
|
|
|
193
|
-
所有「浮起来的框」的**表面**(底色 · 描边宽 · 圆角 · 阴影)只在 `src/ui/panel.css` 定义,档位只有三个
|
|
193
|
+
所有「浮起来的框」的**表面**(底色 · 描边宽 · 圆角 · 阴影)只在 `src/ui/infra/panel.css` 定义,档位只有三个
|
|
194
194
|
(2026-11-03 用户定:样式统一,交互各家自己管):
|
|
195
195
|
|
|
196
196
|
| 档位 | 用在 | 底色 | 描边 | 圆角 | 阴影 |
|
package/docs/help/ui.doc.ts
CHANGED
|
@@ -825,8 +825,8 @@ const doc: DocTopic = {
|
|
|
825
825
|
en: 'The callback’s return value decides whether it closes: **only `false`** (returned directly, or resolved to `false`) means it did not succeed — the dialog stays for a retry; `true` / `undefined` / anything else closes as usual; a rejection also keeps it open (the error is logged). The callback owns its failure message, so call sites need no `try/catch`.',
|
|
826
826
|
},
|
|
827
827
|
{
|
|
828
|
-
zh: '**要「整框谁都别动」就传 `locked`**,别拿按钮 loading 顶替 —— 两者是两件事:loading 只管那一颗按钮转圈,`locked`
|
|
829
|
-
en: '**When the whole dialog must be untouchable, pass `locked`** — do not fake it with button loading: loading only spins that one button, while `locked`
|
|
828
|
+
zh: '**要「整框谁都别动」就传 `locked`**,别拿按钮 loading 顶替 —— 两者是两件事:loading 只管那一颗按钮转圈,`locked` 管整块面板。做法是**控件各自按自己的禁用态渲染**(Button / Input / Textarea / Checkbox / Segmented / Picker / 日期选择 / 分页 都会自己变灰并真的禁用,Tab 自然跳过),再盖一层**全透明**点击层兜住自绘元素与鼠标 —— 所以界面不会整体蒙灰(蒙灰会让人以为坏了),只有控件自己变灰 + 禁止手势。它**只做「或」、从不写回**任何 `disabled`:本来禁用的解锁后照样禁用,锁定期间你把某个控件改成能用 / 禁用,解锁后也照你的。声明式传 `locked={saving}` 即可;受控项,不传 = 未锁,关掉重开自然复位。命令式那两个函数的回调会收到 `ctl`(`{ setLocked(bool) }`):`onConfirm: async (ctl) => { ctl.setLocked(true); await save(); ctl.setLocked(false) }`;框关掉之后再调是空操作。',
|
|
829
|
+
en: '**When the whole dialog must be untouchable, pass `locked`** — do not fake it with button loading: loading only spins that one button, while `locked` covers the whole panel. It works by letting **each control render its own disabled state** (Button / Input / Textarea / Checkbox / Segmented / Picker / date picker / pagination all dim themselves and are genuinely disabled, so Tab skips them), plus a **fully transparent** click layer that catches self-drawn elements and the pointer — so the surface is never dimmed as a whole (a veil reads as "the app broke"); only the controls dim and the cursor turns not-allowed. It **only ORs and never writes back** any `disabled`: already-disabled controls stay disabled after unlocking, and anything you flip mid-lock stays as you left it. Declaratively pass `locked={saving}`; it is controlled and stateless — omitted means unlocked, reopening starts clean. The imperative dialogs hand their callbacks a `ctl` (`{ setLocked(bool) }`): `onConfirm: async (ctl) => { ctl.setLocked(true); await save(); ctl.setLocked(false) }`. Calling it after the dialog closed is a no-op.',
|
|
830
830
|
},
|
|
831
831
|
],
|
|
832
832
|
api: [
|
|
@@ -861,7 +861,7 @@ const doc: DocTopic = {
|
|
|
861
861
|
{ name: 'closeOnMask', type: 'boolean', def: "'true'", desc: { zh: '点遮罩关闭;误触代价大的场景设 false', en: 'Close on mask click; set false where mis-clicks are costly' } },
|
|
862
862
|
{ name: 'escClose', type: 'boolean', def: "'true'", desc: { zh: 'Esc 关闭', en: 'Close on Esc' } },
|
|
863
863
|
{ name: 'busy', type: 'boolean', def: 'false', desc: { zh: '有异步在跑(footer 里的 `Button` 正在 loading):遮罩 / Esc / ✕ 三条关闭路径一起失效,内容照常。否决项,不替代 closeOnMask / escClose', en: 'Async work in flight (a footer `Button` is loading): mask / Esc / ✕ all stop closing while content keeps rendering. A veto, not a replacement for closeOnMask / escClose' } },
|
|
864
|
-
{ name: 'locked', type: 'boolean', def: 'false', desc: { zh: '**锁死全部交互**(与 loading
|
|
864
|
+
{ name: 'locked', type: 'boolean', def: 'false', desc: { zh: '**锁死全部交互**(与 loading 解耦):面板里的核心控件各自按**自己的禁用态**渲染(灰掉、点不动、Tab 跳过),再盖一层**全透明**点击层兜住自绘元素与鼠标(禁止手势)—— **不压任何灰色遮罩**;同时 Tab 键整个吃掉、锁定瞬间把面板里的活动焦点 blur 掉(自绘的 input 也打不了字);三条关闭路径同时失效。自绘的原生表单元素会顺带**近似变灰**(一条特异性为 0 的规则,只写 opacity / cursor,被你自己任何一条规则或 `--dshpc-lock-dim: 1` 覆盖掉)。只做「或」、不写回调用方的 `disabled`:本来禁用的解锁后照样禁用,锁定期间改的也不被覆盖。受控项、不落内部 state(关掉重开自然回到未锁)', en: '**Locks every interaction** (decoupled from loading): core controls inside render in **their own disabled state** (dimmed, unclickable, skipped by Tab), plus a **fully transparent** click layer that catches self-drawn elements and the pointer (not-allowed cursor) — **no dim veil at all**; Tab is swallowed outright and whatever was focused inside is blurred on lock (so a self-drawn input cannot be typed into); all three close paths stop working. Self-drawn native form elements get an **approximate dim** too (one zero-specificity rule writing only opacity / cursor, beaten by any rule of yours or by `--dshpc-lock-dim: 1`). It only ORs and never writes back a caller’s `disabled`: already-disabled controls stay disabled after unlocking, and mid-lock changes are not overwritten. Controlled and stateless (reopening starts unlocked)' } },
|
|
865
865
|
{ name: 'maxWidth', type: 'string', def: '按 size', desc: { zh: '任意 CSS 值,覆盖 size 的宽度上限;不要用 vw(遮罩已按右侧分栏让位)', en: 'Any CSS value, overriding the size’s max width; avoid vw (the mask already yielded to the right column)' } },
|
|
866
866
|
{ name: 'hideHeader', type: 'boolean', def: "'false'", desc: { zh: '不渲染头部(沉浸式)', en: 'Skip header (immersive)' } },
|
|
867
867
|
{ name: 'footer', type: 'ReactNode', def: '—', desc: { zh: '底栏(按钮区;上下内距相等、内容垂直居中)', en: 'Footer (button area; symmetric padding, vertically centred)' } },
|
|
@@ -945,7 +945,7 @@ const doc: DocTopic = {
|
|
|
945
945
|
{ name: 'open', type: 'boolean', def: 'true', desc: { zh: '受控开关:传 false 时先播收起动画再卸载(想有收起效果就常驻渲染它、只切这个布尔)', en: 'Controlled flag: false plays the collapse animation before unmounting (keep it mounted and toggle this to get the exit motion)' } },
|
|
946
946
|
{ name: 'closeOnMask / escClose', type: 'boolean', def: "'true' / 'true'", desc: { zh: '点遮罩关闭 / Esc 关闭', en: 'Close on mask click / on Esc' } },
|
|
947
947
|
{ name: 'busy', type: 'boolean', def: 'false', desc: { zh: '有异步在跑(footer 里的 `Button` 正在 loading):遮罩 / Esc / ✕ 三条关闭路径一起失效,内容照常。否决项,不替代 closeOnMask / escClose', en: 'Async work in flight (a footer `Button` is loading): mask / Esc / ✕ all stop closing while content keeps rendering. A veto, not a replacement for closeOnMask / escClose' } },
|
|
948
|
-
{ name: 'locked', type: 'boolean', def: 'false', desc: { zh: '锁死全部交互(含义同 `Modal.locked
|
|
948
|
+
{ name: 'locked', type: 'boolean', def: 'false', desc: { zh: '锁死全部交互(含义同 `Modal.locked`):核心控件各自按自己的禁用态渲染 + 全透明点击层 + 三条关闭路径失效;不压灰色遮罩、不写回任何 `disabled`', en: 'Lock every interaction (same as `Modal.locked`): core controls render in their own disabled state, a fully transparent click layer catches the rest, all three close paths stop working; no dim veil and no writing back to any `disabled`' } },
|
|
949
949
|
{ name: 'width / minWidth / maxWidth', type: 'number / number / number', def: '460 / 320 / —', desc: { zh: '初始宽度 / 拖拽下限 / 拖拽上限(px;上限缺省 = 遮罩盒宽)', en: 'Initial width / resize floor / resize ceiling (px; ceiling defaults to the mask box)' } },
|
|
950
950
|
{ name: 'resizable', type: 'boolean', def: 'true', desc: { zh: '能否拖宽(关掉就没有拖拽条)', en: 'Whether it resizes by dragging (off = no handle)' } },
|
|
951
951
|
{ name: 'footer / children', type: 'ReactNode / ReactNode', def: '— / —', desc: { zh: '底栏 / 主体(主体是唯一滚动容器)', en: 'Footer / body (the body is the only scroll container)' } },
|
package/docs/help/ui.md
CHANGED
|
@@ -696,9 +696,9 @@ Modal 是自绘 overlay,不走 react-dom portal。
|
|
|
696
696
|
|
|
697
697
|
> EN: The callback’s return value decides whether it closes: **only `false`** (returned directly, or resolved to `false`) means it did not succeed — the dialog stays for a retry; `true` / `undefined` / anything else closes as usual; a rejection also keeps it open (the error is logged). The callback owns its failure message, so call sites need no `try/catch`.
|
|
698
698
|
|
|
699
|
-
**要「整框谁都别动」就传 `locked`**,别拿按钮 loading 顶替 —— 两者是两件事:loading 只管那一颗按钮转圈,`locked`
|
|
699
|
+
**要「整框谁都别动」就传 `locked`**,别拿按钮 loading 顶替 —— 两者是两件事:loading 只管那一颗按钮转圈,`locked` 管整块面板。做法是**控件各自按自己的禁用态渲染**(Button / Input / Textarea / Checkbox / Segmented / Picker / 日期选择 / 分页 都会自己变灰并真的禁用,Tab 自然跳过),再盖一层**全透明**点击层兜住自绘元素与鼠标 —— 所以界面不会整体蒙灰(蒙灰会让人以为坏了),只有控件自己变灰 + 禁止手势。它**只做「或」、从不写回**任何 `disabled`:本来禁用的解锁后照样禁用,锁定期间你把某个控件改成能用 / 禁用,解锁后也照你的。声明式传 `locked={saving}` 即可;受控项,不传 = 未锁,关掉重开自然复位。命令式那两个函数的回调会收到 `ctl`(`{ setLocked(bool) }`):`onConfirm: async (ctl) => { ctl.setLocked(true); await save(); ctl.setLocked(false) }`;框关掉之后再调是空操作。
|
|
700
700
|
|
|
701
|
-
> EN: **When the whole dialog must be untouchable, pass `locked`** — do not fake it with button loading: loading only spins that one button, while `locked`
|
|
701
|
+
> EN: **When the whole dialog must be untouchable, pass `locked`** — do not fake it with button loading: loading only spins that one button, while `locked` covers the whole panel. It works by letting **each control render its own disabled state** (Button / Input / Textarea / Checkbox / Segmented / Picker / date picker / pagination all dim themselves and are genuinely disabled, so Tab skips them), plus a **fully transparent** click layer that catches self-drawn elements and the pointer — so the surface is never dimmed as a whole (a veil reads as "the app broke"); only the controls dim and the cursor turns not-allowed. It **only ORs and never writes back** any `disabled`: already-disabled controls stay disabled after unlocking, and anything you flip mid-lock stays as you left it. Declaratively pass `locked={saving}`; it is controlled and stateless — omitted means unlocked, reopening starts clean. The imperative dialogs hand their callbacks a `ctl` (`{ setLocked(bool) }`): `onConfirm: async (ctl) => { ctl.setLocked(true); await save(); ctl.setLocked(false) }`. Calling it after the dialog closed is a no-op.
|
|
702
702
|
|
|
703
703
|
| 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
|
|
704
704
|
|---|---|---|---|---|
|
|
@@ -728,7 +728,7 @@ Modal 是自绘 overlay,不走 react-dom portal。
|
|
|
728
728
|
| `closeOnMask` | `boolean` | 'true' | 点遮罩关闭;误触代价大的场景设 false | Close on mask click; set false where mis-clicks are costly |
|
|
729
729
|
| `escClose` | `boolean` | 'true' | Esc 关闭 | Close on Esc |
|
|
730
730
|
| `busy` | `boolean` | false | 有异步在跑(footer 里的 `Button` 正在 loading):遮罩 / Esc / ✕ 三条关闭路径一起失效,内容照常。否决项,不替代 closeOnMask / escClose | Async work in flight (a footer `Button` is loading): mask / Esc / ✕ all stop closing while content keeps rendering. A veto, not a replacement for closeOnMask / escClose |
|
|
731
|
-
| `locked` | `boolean` | false | **锁死全部交互**(与 loading
|
|
731
|
+
| `locked` | `boolean` | false | **锁死全部交互**(与 loading 解耦):面板里的核心控件各自按**自己的禁用态**渲染(灰掉、点不动、Tab 跳过),再盖一层**全透明**点击层兜住自绘元素与鼠标(禁止手势)—— **不压任何灰色遮罩**;同时 Tab 键整个吃掉、锁定瞬间把面板里的活动焦点 blur 掉(自绘的 input 也打不了字);三条关闭路径同时失效。自绘的原生表单元素会顺带**近似变灰**(一条特异性为 0 的规则,只写 opacity / cursor,被你自己任何一条规则或 `--dshpc-lock-dim: 1` 覆盖掉)。只做「或」、不写回调用方的 `disabled`:本来禁用的解锁后照样禁用,锁定期间改的也不被覆盖。受控项、不落内部 state(关掉重开自然回到未锁) | **Locks every interaction** (decoupled from loading): core controls inside render in **their own disabled state** (dimmed, unclickable, skipped by Tab), plus a **fully transparent** click layer that catches self-drawn elements and the pointer (not-allowed cursor) — **no dim veil at all**; Tab is swallowed outright and whatever was focused inside is blurred on lock (so a self-drawn input cannot be typed into); all three close paths stop working. Self-drawn native form elements get an **approximate dim** too (one zero-specificity rule writing only opacity / cursor, beaten by any rule of yours or by `--dshpc-lock-dim: 1`). It only ORs and never writes back a caller’s `disabled`: already-disabled controls stay disabled after unlocking, and mid-lock changes are not overwritten. Controlled and stateless (reopening starts unlocked) |
|
|
732
732
|
| `maxWidth` | `string` | 按 size | 任意 CSS 值,覆盖 size 的宽度上限;不要用 vw(遮罩已按右侧分栏让位) | Any CSS value, overriding the size’s max width; avoid vw (the mask already yielded to the right column) |
|
|
733
733
|
| `hideHeader` | `boolean` | 'false' | 不渲染头部(沉浸式) | Skip header (immersive) |
|
|
734
734
|
| `footer` | `ReactNode` | — | 底栏(按钮区;上下内距相等、内容垂直居中) | Footer (button area; symmetric padding, vertically centred) |
|
|
@@ -800,7 +800,7 @@ Modal 是自绘 overlay,不走 react-dom portal。
|
|
|
800
800
|
| `open` | `boolean` | true | 受控开关:传 false 时先播收起动画再卸载(想有收起效果就常驻渲染它、只切这个布尔) | Controlled flag: false plays the collapse animation before unmounting (keep it mounted and toggle this to get the exit motion) |
|
|
801
801
|
| `closeOnMask / escClose` | `boolean` | 'true' / 'true' | 点遮罩关闭 / Esc 关闭 | Close on mask click / on Esc |
|
|
802
802
|
| `busy` | `boolean` | false | 有异步在跑(footer 里的 `Button` 正在 loading):遮罩 / Esc / ✕ 三条关闭路径一起失效,内容照常。否决项,不替代 closeOnMask / escClose | Async work in flight (a footer `Button` is loading): mask / Esc / ✕ all stop closing while content keeps rendering. A veto, not a replacement for closeOnMask / escClose |
|
|
803
|
-
| `locked` | `boolean` | false | 锁死全部交互(含义同 `Modal.locked
|
|
803
|
+
| `locked` | `boolean` | false | 锁死全部交互(含义同 `Modal.locked`):核心控件各自按自己的禁用态渲染 + 全透明点击层 + 三条关闭路径失效;不压灰色遮罩、不写回任何 `disabled` | Lock every interaction (same as `Modal.locked`): core controls render in their own disabled state, a fully transparent click layer catches the rest, all three close paths stop working; no dim veil and no writing back to any `disabled` |
|
|
804
804
|
| `width / minWidth / maxWidth` | `number / number / number` | 460 / 320 / — | 初始宽度 / 拖拽下限 / 拖拽上限(px;上限缺省 = 遮罩盒宽) | Initial width / resize floor / resize ceiling (px; ceiling defaults to the mask box) |
|
|
805
805
|
| `resizable` | `boolean` | true | 能否拖宽(关掉就没有拖拽条) | Whether it resizes by dragging (off = no handle) |
|
|
806
806
|
| `footer / children` | `ReactNode / ReactNode` | — / — | 底栏 / 主体(主体是唯一滚动容器) | Footer / body (the body is the only scroll container) |
|
package/docs/help/utils.doc.ts
CHANGED
|
@@ -111,8 +111,8 @@ const doc: DocTopic = {
|
|
|
111
111
|
en: 'Boundary: a plugin’s own UI copy is the plugin’s responsibility; this package offers no plugin-level i18n framework. To override a string: pass a `translate` prop, or use `t` with your own dictionary.',
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
|
-
zh: '语言默认跟随宿主:官方 locale 插件把生效语言写进 `<html lang>`(zh → `zh-CN`),本包直接读它 ⇒ 插件不必再接 locale 服务、也不必自己同步。`setLocale` 只是手动覆盖(测试 /
|
|
115
|
-
en: 'The language follows the host by default: the official locale plugin writes the active language into `<html lang>` (zh → `zh-CN`) and this package reads it directly, so a plugin needs neither the locale service nor its own sync. `setLocale` is only a manual override (tests / non-host environments); once called it stops following the host.',
|
|
114
|
+
zh: '语言默认跟随宿主:官方 locale 插件把生效语言写进 `<html lang>`(zh → `zh-CN`),本包直接读它 ⇒ 插件不必再接 locale 服务、也不必自己同步。`setLocale` 只是手动覆盖(测试 / 非宿主环境用),调过就不再跟随宿主,传 `null` 恢复跟随。',
|
|
115
|
+
en: 'The language follows the host by default: the official locale plugin writes the active language into `<html lang>` (zh → `zh-CN`) and this package reads it directly, so a plugin needs neither the locale service nor its own sync. `setLocale` is only a manual override (tests / non-host environments); once called it stops following the host, and passing `null` resumes it.',
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
zh: '可用 key 全集见 src/utils/i18n.ts 的 UtilMessageKey;要在宿主切语言时重渲组件,顶层调一次 `useLocale()`(ui 导出)。',
|
|
@@ -123,7 +123,7 @@ const doc: DocTopic = {
|
|
|
123
123
|
{
|
|
124
124
|
id: 'utils-i18n',
|
|
125
125
|
rows: [
|
|
126
|
-
{ name: 'setLocale(locale)', type: "('zh' | 'en') => void", def: '不调则跟随宿主', desc: { zh: '手动覆盖语言(测试 /
|
|
126
|
+
{ name: 'setLocale(locale)', type: "('zh' | 'en' | null) => void", def: '不调则跟随宿主', desc: { zh: '手动覆盖语言(测试 / 非宿主);传 `null` 恢复跟随宿主 `<html lang>`', en: 'Manual override (tests / non-host); pass `null` to follow the host `<html lang>` again' } },
|
|
127
127
|
{ name: 'getLocale()', type: '() => string', def: '—', desc: { zh: '当前语言(默认跟随宿主)', en: 'Current locale (follows the host by default)' } },
|
|
128
128
|
{ name: 't(key, vars?)', type: '(key, vars?) => string', def: '—', desc: { zh: '取文案;{n} 占位由 vars 填', en: 'Get copy; {n} placeholders filled by vars' } },
|
|
129
129
|
{ name: 'type Translate', type: '(key, vars?) => string', def: '—', desc: { zh: '组件都收这个参数供覆盖', en: 'Components accept this to override copy' } },
|
package/docs/help/utils.md
CHANGED
|
@@ -84,9 +84,9 @@ RequestOptions:{ timeoutMs?, signal?, method?, body?, headers? }。
|
|
|
84
84
|
|
|
85
85
|
> EN: Boundary: a plugin’s own UI copy is the plugin’s responsibility; this package offers no plugin-level i18n framework. To override a string: pass a `translate` prop, or use `t` with your own dictionary.
|
|
86
86
|
|
|
87
|
-
语言默认跟随宿主:官方 locale 插件把生效语言写进 `<html lang>`(zh → `zh-CN`),本包直接读它 ⇒ 插件不必再接 locale 服务、也不必自己同步。`setLocale` 只是手动覆盖(测试 /
|
|
87
|
+
语言默认跟随宿主:官方 locale 插件把生效语言写进 `<html lang>`(zh → `zh-CN`),本包直接读它 ⇒ 插件不必再接 locale 服务、也不必自己同步。`setLocale` 只是手动覆盖(测试 / 非宿主环境用),调过就不再跟随宿主,传 `null` 恢复跟随。
|
|
88
88
|
|
|
89
|
-
> EN: The language follows the host by default: the official locale plugin writes the active language into `<html lang>` (zh → `zh-CN`) and this package reads it directly, so a plugin needs neither the locale service nor its own sync. `setLocale` is only a manual override (tests / non-host environments); once called it stops following the host.
|
|
89
|
+
> EN: The language follows the host by default: the official locale plugin writes the active language into `<html lang>` (zh → `zh-CN`) and this package reads it directly, so a plugin needs neither the locale service nor its own sync. `setLocale` is only a manual override (tests / non-host environments); once called it stops following the host, and passing `null` resumes it.
|
|
90
90
|
|
|
91
91
|
可用 key 全集见 src/utils/i18n.ts 的 UtilMessageKey;要在宿主切语言时重渲组件,顶层调一次 `useLocale()`(ui 导出)。
|
|
92
92
|
|
|
@@ -94,7 +94,7 @@ RequestOptions:{ timeoutMs?, signal?, method?, body?, headers? }。
|
|
|
94
94
|
|
|
95
95
|
| 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
|
|
96
96
|
|---|---|---|---|---|
|
|
97
|
-
| `setLocale(locale)` | `('zh' \| 'en') => void` | 不调则跟随宿主 | 手动覆盖语言(测试 /
|
|
97
|
+
| `setLocale(locale)` | `('zh' \| 'en' \| null) => void` | 不调则跟随宿主 | 手动覆盖语言(测试 / 非宿主);传 `null` 恢复跟随宿主 `<html lang>` | Manual override (tests / non-host); pass `null` to follow the host `<html lang>` again |
|
|
98
98
|
| `getLocale()` | `() => string` | — | 当前语言(默认跟随宿主) | Current locale (follows the host by default) |
|
|
99
99
|
| `t(key, vars?)` | `(key, vars?) => string` | — | 取文案;{n} 占位由 vars 填 | Get copy; {n} placeholders filled by vars |
|
|
100
100
|
| `type Translate` | `(key, vars?) => string` | — | 组件都收这个参数供覆盖 | Components accept this to override copy |
|