@alexgorbatchev/shadcn 0.0.19 → 0.0.20
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/README.md +21 -2
- package/dist/{chunk-q2ewq67a.js → chunk-02qymemz.js} +1 -1
- package/dist/{chunk-k89xxj12.js → chunk-0ewzb2ax.js} +1 -1
- package/dist/{chunk-6wvtsf2m.js → chunk-14qj6w54.js} +5 -5
- package/dist/{chunk-0q6mg89k.js → chunk-1c5jjkhw.js} +1 -1
- package/dist/{chunk-38kwkd1a.js → chunk-1qhf8gh8.js} +3 -2
- package/dist/{chunk-zgpdhtkw.js → chunk-21x1n6gn.js} +6 -6
- package/dist/{chunk-h46mdagy.js → chunk-24pefkd5.js} +1 -1
- package/dist/{chunk-msave608.js → chunk-2bx2r98r.js} +1 -1
- package/dist/{chunk-41wykzq3.js → chunk-2tmvz090.js} +1 -1
- package/dist/{chunk-wxncy44f.js → chunk-3d9v39ga.js} +1 -1
- package/dist/{chunk-2b9agdrf.js → chunk-3dyqen8w.js} +1 -1
- package/dist/{chunk-f63f8w58.js → chunk-3jrsp186.js} +1 -1
- package/dist/{chunk-njzam0hx.js → chunk-3qqdfft7.js} +1 -0
- package/dist/{chunk-gfm2arhj.js → chunk-43hfchxf.js} +1 -1
- package/dist/{chunk-6xr41wyr.js → chunk-46jdxdzy.js} +3 -3
- package/dist/{chunk-x7z9jzyf.js → chunk-4djw71cv.js} +22 -12
- package/dist/{chunk-vpj3vk7v.js → chunk-4drqqqz1.js} +1 -1
- package/dist/{chunk-mjpc4qf7.js → chunk-52e8a05a.js} +1 -1
- package/dist/{chunk-82vfgkjv.js → chunk-553bzh59.js} +1 -1
- package/dist/{chunk-kc4mmrwk.js → chunk-5ayp2vkw.js} +1 -1
- package/dist/{chunk-19441s27.js → chunk-5pvyxayg.js} +2 -2
- package/dist/{chunk-vx7c2xhq.js → chunk-5v4typ39.js} +3 -3
- package/dist/{chunk-gt8m0zeq.js → chunk-5wndb6hx.js} +1 -1
- package/dist/{chunk-550z7s64.js → chunk-6432235c.js} +3 -3
- package/dist/{chunk-f73en61v.js → chunk-6f3qpy7v.js} +1 -1
- package/dist/{chunk-2gten6a1.js → chunk-6wvhq8wq.js} +2 -2
- package/dist/{chunk-717ggspf.js → chunk-70vndezn.js} +16 -5
- package/dist/{chunk-r7fy89jq.js → chunk-79667fz5.js} +3 -3
- package/dist/{chunk-waat2ksf.js → chunk-7pyt4e5t.js} +1 -1
- package/dist/{chunk-8x8yxf6x.js → chunk-84ca0dpc.js} +2 -2
- package/dist/{chunk-9msk1t9e.js → chunk-8a15x4a8.js} +1 -1
- package/dist/{chunk-f8758vjx.js → chunk-8fcjx3he.js} +5 -5
- package/dist/{chunk-h8awhm19.js → chunk-96wh7ccv.js} +1 -1
- package/dist/{chunk-pe1vvkp7.js → chunk-9jct7hv0.js} +3 -3
- package/dist/{chunk-xqn8mef3.js → chunk-a6kyjjfk.js} +1 -0
- package/dist/chunk-aa7m22zj.js +22 -0
- package/dist/{chunk-zhdp6qrb.js → chunk-bcpy6gpz.js} +1 -1
- package/dist/{chunk-v4yqjvzd.js → chunk-bygq5yqf.js} +31 -6
- package/dist/{chunk-2m0zpzbm.js → chunk-cn81dnqb.js} +1 -0
- package/dist/{chunk-m1a9e1py.js → chunk-d2z4gebj.js} +1 -1
- package/dist/{chunk-mx21wpq0.js → chunk-d4bm5rzy.js} +12 -2
- package/dist/{chunk-0zwxgwr4.js → chunk-d9jbqd99.js} +1 -1
- package/dist/{chunk-qw7229kj.js → chunk-dgkj6442.js} +1 -1
- package/dist/{chunk-r4fr62ca.js → chunk-djm7qq62.js} +1 -1
- package/dist/{chunk-9dw4dyzq.js → chunk-e0pv0me5.js} +1 -1
- package/dist/{chunk-k4vvp62d.js → chunk-ecmk3vgd.js} +1 -1
- package/dist/{chunk-2qxy1r5y.js → chunk-eq88qk1d.js} +10 -10
- package/dist/{chunk-jq6tc65r.js → chunk-f5hphka1.js} +7 -1
- package/dist/{chunk-2e4fnx0e.js → chunk-fb6h4fzt.js} +1 -1
- package/dist/{chunk-c900175p.js → chunk-fba5hr7b.js} +1 -1
- package/dist/{chunk-155c0btb.js → chunk-g03nphs1.js} +1 -1
- package/dist/{chunk-x82x81th.js → chunk-gabqzfq0.js} +3 -3
- package/dist/{chunk-zcwynyr0.js → chunk-gykrcxd1.js} +1 -0
- package/dist/{chunk-45kmek5e.js → chunk-h979cxnh.js} +14 -3
- package/dist/{chunk-m54kq3he.js → chunk-hh43wg05.js} +22 -12
- package/dist/{chunk-6hbx647r.js → chunk-j4gd5awk.js} +6 -6
- package/dist/{chunk-aewjmzt9.js → chunk-jba22682.js} +3 -3
- package/dist/{chunk-82cw4kcg.js → chunk-jf0y740b.js} +1 -1
- package/dist/{chunk-fyb0b7bp.js → chunk-jpamrhdk.js} +1 -1
- package/dist/{chunk-gyg2s982.js → chunk-k4qz4q7r.js} +1 -0
- package/dist/{chunk-s3b87adw.js → chunk-kv1akmf5.js} +1 -1
- package/dist/{chunk-2g0zzx6f.js → chunk-m2ct74my.js} +1 -0
- package/dist/{chunk-c6b2cfw4.js → chunk-mrrbycgx.js} +3 -3
- package/dist/chunk-mz3e810d.js +83 -0
- package/dist/{chunk-serw27sv.js → chunk-nkw2vsf3.js} +1 -0
- package/dist/{chunk-wf5cnpdg.js → chunk-p45ytcc2.js} +3 -3
- package/dist/{chunk-86211e5a.js → chunk-p8gshf3k.js} +1 -1
- package/dist/{chunk-cre60717.js → chunk-p8qtk151.js} +1 -1
- package/dist/{chunk-3552jz55.js → chunk-qcsxnn16.js} +1 -0
- package/dist/{chunk-q40gqpwh.js → chunk-qgjjcmpa.js} +1 -1
- package/dist/{chunk-dppmqr99.js → chunk-qv19jhdk.js} +1 -1
- package/dist/{chunk-1x2ch0xc.js → chunk-rffrerg5.js} +3 -1
- package/dist/{chunk-0jb0xgdb.js → chunk-s46hvhjw.js} +1 -1
- package/dist/{chunk-h561m2ae.js → chunk-s83v0taa.js} +1 -1
- package/dist/{chunk-emasqc8x.js → chunk-sat9hjv7.js} +1 -1
- package/dist/{chunk-akaezred.js → chunk-tea1nrwn.js} +2 -2
- package/dist/{chunk-47xfhw4f.js → chunk-v9r6t8bz.js} +1 -0
- package/dist/{chunk-48b1ya7g.js → chunk-ve9gpkxd.js} +1 -1
- package/dist/{chunk-jacxpetf.js → chunk-vjtbpkht.js} +2 -2
- package/dist/{chunk-g7v9cqyg.js → chunk-vq8nc5xa.js} +1 -1
- package/dist/{chunk-55bcw5ff.js → chunk-w1w71edg.js} +1 -0
- package/dist/{chunk-z5d2zpnj.js → chunk-wkpf4bv7.js} +1 -1
- package/dist/{chunk-ed49y20r.js → chunk-ws4y7ctw.js} +1 -1
- package/dist/{chunk-r3artnc9.js → chunk-ykt5sv7n.js} +1 -1
- package/dist/{chunk-yncp9nsv.js → chunk-z4jpedvh.js} +1 -0
- package/dist/{chunk-b12s32e3.js → chunk-zj06vvcz.js} +1 -1
- package/dist/{chunk-5h6m9dsm.js → chunk-ztcbee24.js} +1 -1
- package/dist/components/AlertDialog.d.ts +1 -1
- package/dist/components/ContextMenu.d.ts +1 -1
- package/dist/components/Dialog.d.ts +1 -1
- package/dist/components/Drawer.d.ts +1 -1
- package/dist/components/DropdownMenu.d.ts +1 -1
- package/dist/components/ScrollGuard.d.ts +6 -0
- package/dist/components/Toast.d.ts +1 -1
- package/dist/components/assistant-ui/elements/AgentCard.js +1 -1
- package/dist/components/assistant-ui/elements/ApprovalCard.js +1 -1
- package/dist/components/assistant-ui/elements/ArtifactCard.js +1 -1
- package/dist/components/assistant-ui/elements/BackgroundInbox.js +2 -2
- package/dist/components/assistant-ui/elements/Chart.js +2 -2
- package/dist/components/assistant-ui/elements/ChatPanel.js +1 -1
- package/dist/components/assistant-ui/elements/Citation.js +3 -2
- package/dist/components/assistant-ui/elements/CodeDiff.js +2 -2
- package/dist/components/assistant-ui/elements/CommandPalette.js +4 -3
- package/dist/components/assistant-ui/elements/ComparisonCard.js +1 -1
- package/dist/components/assistant-ui/elements/ComposerContext.js +3 -2
- package/dist/components/assistant-ui/elements/ContextDisplay.js +9 -8
- package/dist/components/assistant-ui/elements/ContextDisplayBar.js +6 -5
- package/dist/components/assistant-ui/elements/ContextDisplayContent.js +3 -2
- package/dist/components/assistant-ui/elements/ContextDisplayRing.js +6 -5
- package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +3 -2
- package/dist/components/assistant-ui/elements/ContextDisplayText.js +6 -5
- package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +3 -2
- package/dist/components/assistant-ui/elements/ConversationMap.js +3 -2
- package/dist/components/assistant-ui/elements/DataTable.js +2 -2
- package/dist/components/assistant-ui/elements/EditMessage.js +2 -2
- package/dist/components/assistant-ui/elements/ElicitationForm.js +2 -2
- package/dist/components/assistant-ui/elements/FeedbackDialog.js +2 -2
- package/dist/components/assistant-ui/elements/FileTree.js +2 -2
- package/dist/components/assistant-ui/elements/FlowGraph.js +2 -2
- package/dist/components/assistant-ui/elements/GenerativeUi.js +5 -4
- package/dist/components/assistant-ui/elements/Image.js +3 -2
- package/dist/components/assistant-ui/elements/ImageGallery.js +3 -2
- package/dist/components/assistant-ui/elements/MarkdownText.js +4 -3
- package/dist/components/assistant-ui/elements/McpServerPanel.js +2 -2
- package/dist/components/assistant-ui/elements/MermaidDiagram.js +4 -3
- package/dist/components/assistant-ui/elements/MermaidZoom.js +3 -2
- package/dist/components/assistant-ui/elements/ModelPicker.js +2 -2
- package/dist/components/assistant-ui/elements/ModelSelector.js +13 -12
- package/dist/components/assistant-ui/elements/ModelSelectorContent.js +10 -9
- package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorItem.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorList.js +6 -5
- package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -2
- package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +4 -3
- package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +3 -2
- package/dist/components/assistant-ui/elements/ReasoningPanel.js +1 -1
- package/dist/components/assistant-ui/elements/RecommendationCard.js +1 -1
- package/dist/components/assistant-ui/elements/RegenerateMenu.js +3 -2
- package/dist/components/assistant-ui/elements/ScheduleCard.js +1 -1
- package/dist/components/assistant-ui/elements/ScrollAnchor.js +1 -1
- package/dist/components/assistant-ui/elements/SettingsPanel.js +1 -1
- package/dist/components/assistant-ui/elements/SpecSheet.js +1 -1
- package/dist/components/assistant-ui/elements/TaskCard.js +1 -1
- package/dist/components/assistant-ui/elements/TooltipIconButton.js +3 -2
- package/dist/components/assistant-ui/index.js +61 -60
- package/dist/components/assistant-ui/native/AssistantModal.js +10 -9
- package/dist/components/assistant-ui/native/AssistantSidebar.js +11 -10
- package/dist/components/assistant-ui/native/AttachmentPreview.js +5 -4
- package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +1 -1
- package/dist/components/assistant-ui/native/ContextDisplay.js +11 -10
- package/dist/components/assistant-ui/native/ContextDisplayBar.js +8 -7
- package/dist/components/assistant-ui/native/ContextDisplayRing.js +8 -7
- package/dist/components/assistant-ui/native/ContextDisplayRoot.js +5 -4
- package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +4 -3
- package/dist/components/assistant-ui/native/ContextDisplayText.js +8 -7
- package/dist/components/assistant-ui/native/ConversationMapAui.js +4 -3
- package/dist/components/assistant-ui/native/McpConfigDialog.js +3 -2
- package/dist/components/assistant-ui/native/MermaidDiagram.js +5 -4
- package/dist/components/assistant-ui/native/MessageTiming.js +3 -2
- package/dist/components/assistant-ui/native/ModelSelector.js +15 -14
- package/dist/components/assistant-ui/native/Reasoning.js +5 -4
- package/dist/components/assistant-ui/native/TaskCard.js +6 -5
- package/dist/components/assistant-ui/native/TaskGroup.js +7 -6
- package/dist/components/assistant-ui/native/TaskTray.js +3 -2
- package/dist/components/assistant-ui/native/Thread.js +9 -8
- package/dist/components/assistant-ui/native/ThreadListSidebar.js +4 -3
- package/dist/components/assistant-ui/native/VoiceControl.js +6 -5
- package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +4 -3
- package/dist/components/assistant-ui/native/VoiceMuteButton.js +4 -3
- package/dist/components/assistant-ui/native/index.js +52 -51
- package/dist/components/command/index.js +3 -2
- package/dist/components/questionnaire/index.js +2 -2
- package/dist/components/resizable/Resizable.d.ts +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/hooks/usePortalNode.d.ts +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +293 -121
- package/dist/theme.css +34 -35
- package/dist/utils/observeScrollGuards.d.ts +4 -0
- package/llms/components/actions/Button.md +433 -0
- package/llms/components/actions/ButtonGroup.md +278 -0
- package/llms/components/actions/ButtonLink.md +189 -0
- package/llms/components/actions/Toggle.md +191 -0
- package/llms/components/actions/ToggleGroup.md +161 -0
- package/llms/components/assistant-ui/elements/agents-tasks/AgentCard.md +60 -0
- package/llms/components/assistant-ui/elements/agents-tasks/AgentHandoff.md +78 -0
- package/llms/components/assistant-ui/elements/agents-tasks/AgentPlan.md +57 -0
- package/llms/components/assistant-ui/elements/agents-tasks/AgentStatus.md +88 -0
- package/llms/components/assistant-ui/elements/agents-tasks/JobProgress.md +84 -0
- package/llms/components/assistant-ui/elements/agents-tasks/RunActivity.md +75 -0
- package/llms/components/assistant-ui/elements/agents-tasks/ScheduleCard.md +91 -0
- package/llms/components/assistant-ui/elements/agents-tasks/StoppedRun.md +54 -0
- package/llms/components/assistant-ui/elements/agents-tasks/SubagentList.md +72 -0
- package/llms/components/assistant-ui/elements/agents-tasks/TaskCard.md +101 -0
- package/llms/components/assistant-ui/elements/agents-tasks/TaskStateIcon.md +86 -0
- package/llms/components/assistant-ui/elements/agents-tasks/TodoList.md +99 -0
- package/llms/components/assistant-ui/elements/branding/ClaudeLogo.md +36 -0
- package/llms/components/assistant-ui/elements/branding/GeminiLogo.md +47 -0
- package/llms/components/assistant-ui/elements/branding/GitHubIcon.md +41 -0
- package/llms/components/assistant-ui/elements/branding/OpenAILogo.md +36 -0
- package/llms/components/assistant-ui/elements/code-diffs/CodeDiff.md +67 -0
- package/llms/components/assistant-ui/elements/code-diffs/CodeRunner.md +66 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewer.md +144 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerContent.md +50 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFile.md +50 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileBadge.md +50 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileContent.md +59 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerHeader.md +81 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerLine.md +50 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerSplitLine.md +55 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerStats.md +50 -0
- package/llms/components/assistant-ui/elements/code-diffs/DiffViewerText.md +44 -0
- package/llms/components/assistant-ui/elements/code-diffs/ReviewableDiff.md +102 -0
- package/llms/components/assistant-ui/elements/code-diffs/ShikiHighlighter.md +131 -0
- package/llms/components/assistant-ui/elements/code-diffs/SyntaxHighlighter.md +62 -0
- package/llms/components/assistant-ui/elements/code-diffs/TerminalAnsiFragment.md +66 -0
- package/llms/components/assistant-ui/elements/code-diffs/TerminalBlock.md +131 -0
- package/llms/components/assistant-ui/elements/composer/CommandPalette.md +79 -0
- package/llms/components/assistant-ui/elements/composer/Composer.md +62 -0
- package/llms/components/assistant-ui/elements/composer/ComposerActions.md +34 -0
- package/llms/components/assistant-ui/elements/composer/ComposerAttachButton.md +50 -0
- package/llms/components/assistant-ui/elements/composer/ComposerAttachmentChip.md +58 -0
- package/llms/components/assistant-ui/elements/composer/ComposerAttachments.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerBar.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerCommandItem.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerContext.md +50 -0
- package/llms/components/assistant-ui/elements/composer/ComposerInput.md +56 -0
- package/llms/components/assistant-ui/elements/composer/ComposerMenu.md +59 -0
- package/llms/components/assistant-ui/elements/composer/ComposerMenuItem.md +50 -0
- package/llms/components/assistant-ui/elements/composer/ComposerModelItem.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerModelTrigger.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerPersonItem.md +42 -0
- package/llms/components/assistant-ui/elements/composer/ComposerSend.md +58 -0
- package/llms/components/assistant-ui/elements/composer/ComposerToolbar.md +34 -0
- package/llms/components/assistant-ui/elements/composer/ComposerVoice.md +58 -0
- package/llms/components/assistant-ui/elements/composer/ComposerVoiceButton.md +50 -0
- package/llms/components/assistant-ui/elements/composer/MobileComposer.md +82 -0
- package/llms/components/assistant-ui/elements/composer/PromptLibrary.md +99 -0
- package/llms/components/assistant-ui/elements/composer/Suggestions.md +62 -0
- package/llms/components/assistant-ui/elements/context/ContextBreakdown.md +58 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplay.md +37 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayBar.md +28 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayContent.md +31 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayRing.md +28 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayRoot.md +54 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayText.md +28 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayTrigger.md +51 -0
- package/llms/components/assistant-ui/elements/context/ContextDisplayValue.md +58 -0
- package/llms/components/assistant-ui/elements/context/MemoryChips.md +57 -0
- package/llms/components/assistant-ui/elements/conversations/BackgroundInbox.md +57 -0
- package/llms/components/assistant-ui/elements/conversations/CanvasSplit.md +68 -0
- package/llms/components/assistant-ui/elements/conversations/ChatPanel.md +82 -0
- package/llms/components/assistant-ui/elements/conversations/CheckpointHistory.md +57 -0
- package/llms/components/assistant-ui/elements/conversations/ConversationMap.md +59 -0
- package/llms/components/assistant-ui/elements/conversations/ConversationSearch.md +83 -0
- package/llms/components/assistant-ui/elements/conversations/DaySeparator.md +44 -0
- package/llms/components/assistant-ui/elements/conversations/DraftRestore.md +48 -0
- package/llms/components/assistant-ui/elements/conversations/EditMessage.md +97 -0
- package/llms/components/assistant-ui/elements/conversations/LauncherBubble.md +79 -0
- package/llms/components/assistant-ui/elements/conversations/MessageActions.md +68 -0
- package/llms/components/assistant-ui/elements/conversations/MessageAttachments.md +57 -0
- package/llms/components/assistant-ui/elements/conversations/MessageBranches.md +76 -0
- package/llms/components/assistant-ui/elements/conversations/MessagePair.md +57 -0
- package/llms/components/assistant-ui/elements/conversations/MessageQueue.md +54 -0
- package/llms/components/assistant-ui/elements/conversations/MessageTiming.md +78 -0
- package/llms/components/assistant-ui/elements/conversations/QuoteReply.md +83 -0
- package/llms/components/assistant-ui/elements/conversations/RegenerateMenu.md +117 -0
- package/llms/components/assistant-ui/elements/conversations/ScrollAnchor.md +56 -0
- package/llms/components/assistant-ui/elements/conversations/SharedConversation.md +81 -0
- package/llms/components/assistant-ui/elements/conversations/ThreadList.md +121 -0
- package/llms/components/assistant-ui/elements/conversations/ThreadSearch.md +131 -0
- package/llms/components/assistant-ui/elements/data-visualization/ActivityGraph.md +51 -0
- package/llms/components/assistant-ui/elements/data-visualization/ArtifactCard.md +50 -0
- package/llms/components/assistant-ui/elements/data-visualization/Chart.md +58 -0
- package/llms/components/assistant-ui/elements/data-visualization/ComparisonCard.md +58 -0
- package/llms/components/assistant-ui/elements/data-visualization/CostMeter.md +49 -0
- package/llms/components/assistant-ui/elements/data-visualization/DataTable.md +240 -0
- package/llms/components/assistant-ui/elements/data-visualization/Diagram.md +77 -0
- package/llms/components/assistant-ui/elements/data-visualization/DotMatrix.md +188 -0
- package/llms/components/assistant-ui/elements/data-visualization/FlowGraph.md +61 -0
- package/llms/components/assistant-ui/elements/data-visualization/GenerativeUi.md +110 -0
- package/llms/components/assistant-ui/elements/data-visualization/GenerativeUiTheme.md +67 -0
- package/llms/components/assistant-ui/elements/data-visualization/GeoMap.md +91 -0
- package/llms/components/assistant-ui/elements/data-visualization/HeatGraph.md +57 -0
- package/llms/components/assistant-ui/elements/data-visualization/MapAnswer.md +58 -0
- package/llms/components/assistant-ui/elements/data-visualization/MermaidDiagram.md +66 -0
- package/llms/components/assistant-ui/elements/data-visualization/NumberRoll.md +88 -0
- package/llms/components/assistant-ui/elements/data-visualization/NumberRollDigit.md +28 -0
- package/llms/components/assistant-ui/elements/data-visualization/NumberRollPart.md +28 -0
- package/llms/components/assistant-ui/elements/data-visualization/NumberTicker.md +87 -0
- package/llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md +86 -0
- package/llms/components/assistant-ui/elements/data-visualization/ScoreBreakdown.md +72 -0
- package/llms/components/assistant-ui/elements/data-visualization/ShareMeter.md +50 -0
- package/llms/components/assistant-ui/elements/data-visualization/SpecSheet.md +69 -0
- package/llms/components/assistant-ui/elements/data-visualization/Timeline.md +72 -0
- package/llms/components/assistant-ui/elements/data-visualization/TraceWaterfall.md +88 -0
- package/llms/components/assistant-ui/elements/media-voice/AudioPlayer.md +50 -0
- package/llms/components/assistant-ui/elements/media-voice/File.md +122 -0
- package/llms/components/assistant-ui/elements/media-voice/FileTree.md +59 -0
- package/llms/components/assistant-ui/elements/media-voice/Image.md +201 -0
- package/llms/components/assistant-ui/elements/media-voice/ImageGallery.md +64 -0
- package/llms/components/assistant-ui/elements/media-voice/ImageGeneration.md +50 -0
- package/llms/components/assistant-ui/elements/media-voice/ReadAloud.md +89 -0
- package/llms/components/assistant-ui/elements/media-voice/SpeakerIdentity.md +60 -0
- package/llms/components/assistant-ui/elements/media-voice/VideoPlayer.md +42 -0
- package/llms/components/assistant-ui/elements/media-voice/VoiceConversation.md +78 -0
- package/llms/components/assistant-ui/elements/media-voice/VoiceOrb.md +110 -0
- package/llms/components/assistant-ui/elements/models/ModelPicker.md +79 -0
- package/llms/components/assistant-ui/elements/models/ModelSelector.md +48 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorContent.md +45 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorEffort.md +31 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorEmpty.md +30 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorFocusAnchor.md +31 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorGroup.md +40 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorItem.md +38 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorList.md +30 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorRoot.md +72 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorSearch.md +31 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorSeparator.md +34 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorTrigger.md +66 -0
- package/llms/components/assistant-ui/elements/models/ModelSelectorValue.md +32 -0
- package/llms/components/assistant-ui/elements/models/ReasoningEffort.md +86 -0
- package/llms/components/assistant-ui/elements/reasoning/GenerationLoader.md +88 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningContent.md +59 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningFade.md +62 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningPanel.md +75 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningRoot.md +101 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningText.md +59 -0
- package/llms/components/assistant-ui/elements/reasoning/ReasoningTrigger.md +59 -0
- package/llms/components/assistant-ui/elements/reasoning/ThinkingIndicator.md +54 -0
- package/llms/components/assistant-ui/elements/reasoning/TypingIndicator.md +62 -0
- package/llms/components/assistant-ui/elements/sources-research/Citation.md +103 -0
- package/llms/components/assistant-ui/elements/sources-research/ConfidenceMarker.md +94 -0
- package/llms/components/assistant-ui/elements/sources-research/DocumentReference.md +60 -0
- package/llms/components/assistant-ui/elements/sources-research/InlineCitation.md +56 -0
- package/llms/components/assistant-ui/elements/sources-research/LinkPreview.md +65 -0
- package/llms/components/assistant-ui/elements/sources-research/ResearchReport.md +72 -0
- package/llms/components/assistant-ui/elements/sources-research/RetrievalChunks.md +75 -0
- package/llms/components/assistant-ui/elements/sources-research/SourceGlyph.md +54 -0
- package/llms/components/assistant-ui/elements/sources-research/Sources.md +150 -0
- package/llms/components/assistant-ui/elements/sources-research/WebPreview.md +80 -0
- package/llms/components/assistant-ui/elements/sources-research/WebSearch.md +72 -0
- package/llms/components/assistant-ui/elements/states-settings/ConnectionState.md +58 -0
- package/llms/components/assistant-ui/elements/states-settings/ElicitationForm.md +101 -0
- package/llms/components/assistant-ui/elements/states-settings/EmptyState.md +64 -0
- package/llms/components/assistant-ui/elements/states-settings/EmptyStateComposer.md +88 -0
- package/llms/components/assistant-ui/elements/states-settings/EmptyStateGreeting.md +56 -0
- package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestion.md +66 -0
- package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestions.md +61 -0
- package/llms/components/assistant-ui/elements/states-settings/ErrorState.md +47 -0
- package/llms/components/assistant-ui/elements/states-settings/EveAskQuestion.md +166 -0
- package/llms/components/assistant-ui/elements/states-settings/FeedbackDialog.md +85 -0
- package/llms/components/assistant-ui/elements/states-settings/Onboarding.md +84 -0
- package/llms/components/assistant-ui/elements/states-settings/OptionList.md +74 -0
- package/llms/components/assistant-ui/elements/states-settings/OptionText.md +38 -0
- package/llms/components/assistant-ui/elements/states-settings/QuestionFlow.md +85 -0
- package/llms/components/assistant-ui/elements/states-settings/QuotaBanner.md +91 -0
- package/llms/components/assistant-ui/elements/states-settings/SettingsPanel.md +92 -0
- package/llms/components/assistant-ui/elements/text-formatting/DirectiveText.md +94 -0
- package/llms/components/assistant-ui/elements/text-formatting/Frac.md +28 -0
- package/llms/components/assistant-ui/elements/text-formatting/MarkdownText.md +66 -0
- package/llms/components/assistant-ui/elements/text-formatting/MathBlock.md +67 -0
- package/llms/components/assistant-ui/elements/text-formatting/StreamingText.md +62 -0
- package/llms/components/assistant-ui/elements/text-formatting/Sub.md +28 -0
- package/llms/components/assistant-ui/elements/text-formatting/Sup.md +28 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ApprovalCard.md +96 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ComputerUse.md +58 -0
- package/llms/components/assistant-ui/elements/tools-approvals/GuardrailNotice.md +78 -0
- package/llms/components/assistant-ui/elements/tools-approvals/McpServerPanel.md +73 -0
- package/llms/components/assistant-ui/elements/tools-approvals/PermissionGrant.md +104 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ToolCall.md +81 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ToolError.md +89 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ToolGroup.md +101 -0
- package/llms/components/assistant-ui/elements/tools-approvals/ToolTimeline.md +87 -0
- package/llms/components/assistant-ui/native/agents-tasks/AgentStatus.md +87 -0
- package/llms/components/assistant-ui/native/agents-tasks/TaskCard.md +111 -0
- package/llms/components/assistant-ui/native/agents-tasks/TaskGroup.md +82 -0
- package/llms/components/assistant-ui/native/agents-tasks/TaskTray.md +66 -0
- package/llms/components/assistant-ui/native/code-diffs/SyntaxHighlighter.md +48 -0
- package/llms/components/assistant-ui/native/composer/AttachmentPreview.md +58 -0
- package/llms/components/assistant-ui/native/composer/ComposerTriggerPopover.md +42 -0
- package/llms/components/assistant-ui/native/composer/FollowupSuggestionsRow.md +36 -0
- package/llms/components/assistant-ui/native/context/ContextDisplay.md +42 -0
- package/llms/components/assistant-ui/native/context/ContextDisplayBar.md +52 -0
- package/llms/components/assistant-ui/native/context/ContextDisplayRing.md +52 -0
- package/llms/components/assistant-ui/native/context/ContextDisplayRoot.md +42 -0
- package/llms/components/assistant-ui/native/context/ContextDisplayRuntimeRoot.md +42 -0
- package/llms/components/assistant-ui/native/context/ContextDisplayText.md +52 -0
- package/llms/components/assistant-ui/native/conversations/AssistantModal.md +60 -0
- package/llms/components/assistant-ui/native/conversations/AssistantSidebar.md +44 -0
- package/llms/components/assistant-ui/native/conversations/ConversationMapAui.md +50 -0
- package/llms/components/assistant-ui/native/conversations/MessageTiming.md +83 -0
- package/llms/components/assistant-ui/native/conversations/QuoteBlock.md +34 -0
- package/llms/components/assistant-ui/native/conversations/SelectionToolbar.md +53 -0
- package/llms/components/assistant-ui/native/conversations/Thread.md +144 -0
- package/llms/components/assistant-ui/native/conversations/ThreadList.md +67 -0
- package/llms/components/assistant-ui/native/conversations/ThreadListSidebar.md +45 -0
- package/llms/components/assistant-ui/native/data-visualization/MermaidDiagram.md +34 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceConnectButton.md +69 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceControl.md +52 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceConversation.md +64 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceDisconnectButton.md +53 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceMuteButton.md +59 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceOrb.md +66 -0
- package/llms/components/assistant-ui/native/media-voice/VoiceStatusDot.md +58 -0
- package/llms/components/assistant-ui/native/models/ModelSelector.md +50 -0
- package/llms/components/assistant-ui/native/reasoning/Reasoning.md +87 -0
- package/llms/components/assistant-ui/native/sources-research/Sources.md +145 -0
- package/llms/components/assistant-ui/native/text-formatting/DirectiveText.md +42 -0
- package/llms/components/assistant-ui/native/tools-approvals/McpConfigDialog.md +54 -0
- package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackApproval.md +352 -0
- package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackRoot.md +84 -0
- package/llms/components/assistant-ui/native/tools-approvals/ToolGroup.md +63 -0
- package/llms/components/data-display/Avatar.md +254 -0
- package/llms/components/data-display/Badge.md +221 -0
- package/llms/components/data-display/Carousel.md +465 -0
- package/llms/components/data-display/Chart.md +546 -0
- package/llms/components/data-display/Item.md +502 -0
- package/llms/components/data-display/JsonViewer.md +38 -0
- package/llms/components/data-display/Kbd.md +99 -0
- package/llms/components/data-display/Table.md +254 -0
- package/llms/components/data-display/VirtualTable.md +57 -0
- package/llms/components/dates/Calendar.md +539 -0
- package/llms/components/dates/PersianCalendar.md +117 -0
- package/llms/components/drag-drop/DragDropPreview.md +46 -0
- package/llms/components/drag-drop/DragDropProvider.md +28 -0
- package/llms/components/feedback/Alert.md +117 -0
- package/llms/components/feedback/Empty.md +193 -0
- package/llms/components/feedback/EmptyState.md +38 -0
- package/llms/components/feedback/PageMessage.md +49 -0
- package/llms/components/feedback/Progress.md +140 -0
- package/llms/components/feedback/Skeleton.md +157 -0
- package/llms/components/feedback/Sonner.md +325 -0
- package/llms/components/feedback/Spinner.md +119 -0
- package/llms/components/feedback/Toast.md +242 -0
- package/llms/components/forms/Checkbox.md +204 -0
- package/llms/components/forms/Combobox.md +594 -0
- package/llms/components/forms/Field.md +511 -0
- package/llms/components/forms/ImagePicker.md +63 -0
- package/llms/components/forms/InlineEdit.md +67 -0
- package/llms/components/forms/Input.md +380 -0
- package/llms/components/forms/InputGroup.md +628 -0
- package/llms/components/forms/InputOTP.md +400 -0
- package/llms/components/forms/Label.md +181 -0
- package/llms/components/forms/NativeSelect.md +128 -0
- package/llms/components/forms/Questionnaire.md +267 -0
- package/llms/components/forms/RadioGroup.md +401 -0
- package/llms/components/forms/Select.md +575 -0
- package/llms/components/forms/Slider.md +234 -0
- package/llms/components/forms/StarRating.md +60 -0
- package/llms/components/forms/Switch.md +240 -0
- package/llms/components/forms/Textarea.md +219 -0
- package/llms/components/layout/Accordion.md +249 -0
- package/llms/components/layout/AspectRatio.md +68 -0
- package/llms/components/layout/Card.md +391 -0
- package/llms/components/layout/Collapsible.md +231 -0
- package/llms/components/layout/Resizable.md +267 -0
- package/llms/components/layout/ScrollArea.md +170 -0
- package/llms/components/layout/Separator.md +104 -0
- package/llms/components/layout/SplitView.md +92 -0
- package/llms/components/messaging/Attachment.md +324 -0
- package/llms/components/messaging/Bubble.md +411 -0
- package/llms/components/messaging/Marker.md +203 -0
- package/llms/components/messaging/Message.md +268 -0
- package/llms/components/messaging/MessageScroller.md +227 -0
- package/llms/components/navigation/Breadcrumb.md +159 -0
- package/llms/components/navigation/Command.md +471 -0
- package/llms/components/navigation/ContextMenu.md +596 -0
- package/llms/components/navigation/DropdownMenu.md +602 -0
- package/llms/components/navigation/Menubar.md +397 -0
- package/llms/components/navigation/NavigationMenu.md +379 -0
- package/llms/components/navigation/Pagination.md +222 -0
- package/llms/components/navigation/Sidebar.md +330 -0
- package/llms/components/navigation/Tabs.md +418 -0
- package/llms/components/overlays/AlertDialog.md +365 -0
- package/llms/components/overlays/ConfirmationDialog.md +77 -0
- package/llms/components/overlays/Dialog.md +559 -0
- package/llms/components/overlays/Drawer.md +597 -0
- package/llms/components/overlays/HoverCard.md +276 -0
- package/llms/components/overlays/Popover.md +286 -0
- package/llms/components/overlays/Sheet.md +433 -0
- package/llms/components/overlays/Tooltip.md +318 -0
- package/llms/components/providers/DensityProvider.md +171 -0
- package/llms/components/providers/DirectionProvider.md +39 -0
- package/llms/components/providers/PortalProvider.md +264 -0
- package/llms/components/providers/ScrollGuard.md +24 -0
- package/llms/components/providers/ThemeProvider.md +71 -0
- package/llms/setup.md +380 -0
- package/llms.txt +428 -0
- package/package.json +6 -3
- package/dist/chunk-czg9p52v.js +0 -74
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
# ContextMenu
|
|
2
|
+
|
|
3
|
+
Story: @alexgorbatchev/shadcn/components/navigation/ContextMenu
|
|
4
|
+
Source: src/components/stories/navigation/ContextMenu.stories.tsx
|
|
5
|
+
|
|
6
|
+
[Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/navigation/ContextMenu.stories.tsx)
|
|
7
|
+
|
|
8
|
+
## Public imports
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { Button, DirectionProvider, Toggle, NativeSelect, NativeSelectOption, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "@alexgorbatchev/shadcn";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Supporting imports
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import type { ComponentProps, ReactElement } from "react";
|
|
18
|
+
import { useState } from "react";
|
|
19
|
+
import { FileIcon, SaveIcon, TrashIcon } from "lucide-react";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Default component
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
ContextMenu
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
|
|
31
|
+
|
|
32
|
+
### Default
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
{
|
|
36
|
+
render: function Render(args) {
|
|
37
|
+
const [action, setAction] = useState("No action");
|
|
38
|
+
const [checked, setChecked] = useState(false);
|
|
39
|
+
const [sort, setSort] = useState("name");
|
|
40
|
+
return (<div className="flex flex-col gap-4">
|
|
41
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
42
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
43
|
+
<Button disabled>Delete project</Button>
|
|
44
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
45
|
+
Show details
|
|
46
|
+
</Toggle>
|
|
47
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
48
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
49
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
50
|
+
</NativeSelect>
|
|
51
|
+
<ContextMenu {...args}>
|
|
52
|
+
<ContextMenuTrigger className="border border-border p-panel">Right click the project</ContextMenuTrigger>
|
|
53
|
+
<ContextMenuContent aria-label="Project actions">
|
|
54
|
+
<ContextMenuGroup>
|
|
55
|
+
<ContextMenuLabel>Project</ContextMenuLabel>
|
|
56
|
+
<ContextMenuItem className={itemClassName} onClick={() => setAction("Opened")}>
|
|
57
|
+
Open<ContextMenuShortcut>Enter</ContextMenuShortcut>
|
|
58
|
+
</ContextMenuItem>
|
|
59
|
+
<ContextMenuItem disabled>Delete</ContextMenuItem>
|
|
60
|
+
</ContextMenuGroup>
|
|
61
|
+
<ContextMenuSeparator />
|
|
62
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked}>
|
|
63
|
+
Show details
|
|
64
|
+
</ContextMenuCheckboxItem>
|
|
65
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
66
|
+
<ContextMenuRadioItem value="name">Sort by name</ContextMenuRadioItem>
|
|
67
|
+
<ContextMenuRadioItem value="date">Sort by date</ContextMenuRadioItem>
|
|
68
|
+
</ContextMenuRadioGroup>
|
|
69
|
+
<ContextMenuSub>
|
|
70
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
71
|
+
<ContextMenuSubContent>
|
|
72
|
+
<ContextMenuGroup>
|
|
73
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
74
|
+
</ContextMenuGroup>
|
|
75
|
+
</ContextMenuSubContent>
|
|
76
|
+
</ContextMenuSub>
|
|
77
|
+
</ContextMenuContent>
|
|
78
|
+
</ContextMenu>
|
|
79
|
+
<output aria-label="Project action">{action}</output>
|
|
80
|
+
<output aria-label="Details enabled">{String(checked)}</output>
|
|
81
|
+
<output aria-label="Sort order">{sort}</output>
|
|
82
|
+
</div>);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Compact
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
{
|
|
91
|
+
render: function Render(args) {
|
|
92
|
+
const [action, setAction] = useState("No action");
|
|
93
|
+
const [checked, setChecked] = useState(false);
|
|
94
|
+
const [sort, setSort] = useState("name");
|
|
95
|
+
return (<div className="flex flex-col gap-4">
|
|
96
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
97
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
98
|
+
<Button disabled>Delete project</Button>
|
|
99
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
100
|
+
Show details
|
|
101
|
+
</Toggle>
|
|
102
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
103
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
104
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
105
|
+
</NativeSelect>
|
|
106
|
+
<ContextMenu {...args}>
|
|
107
|
+
<ContextMenuTrigger className="border border-border p-panel">Right click the project</ContextMenuTrigger>
|
|
108
|
+
<ContextMenuContent aria-label="Project actions">
|
|
109
|
+
<ContextMenuGroup>
|
|
110
|
+
<ContextMenuLabel>Project</ContextMenuLabel>
|
|
111
|
+
<ContextMenuItem className={itemClassName} onClick={() => setAction("Opened")}>
|
|
112
|
+
Open<ContextMenuShortcut>Enter</ContextMenuShortcut>
|
|
113
|
+
</ContextMenuItem>
|
|
114
|
+
<ContextMenuItem disabled>Delete</ContextMenuItem>
|
|
115
|
+
</ContextMenuGroup>
|
|
116
|
+
<ContextMenuSeparator />
|
|
117
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked}>
|
|
118
|
+
Show details
|
|
119
|
+
</ContextMenuCheckboxItem>
|
|
120
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
121
|
+
<ContextMenuRadioItem value="name">Sort by name</ContextMenuRadioItem>
|
|
122
|
+
<ContextMenuRadioItem value="date">Sort by date</ContextMenuRadioItem>
|
|
123
|
+
</ContextMenuRadioGroup>
|
|
124
|
+
<ContextMenuSub>
|
|
125
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
126
|
+
<ContextMenuSubContent>
|
|
127
|
+
<ContextMenuGroup>
|
|
128
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
129
|
+
</ContextMenuGroup>
|
|
130
|
+
</ContextMenuSubContent>
|
|
131
|
+
</ContextMenuSub>
|
|
132
|
+
</ContextMenuContent>
|
|
133
|
+
</ContextMenu>
|
|
134
|
+
<output aria-label="Project action">{action}</output>
|
|
135
|
+
<output aria-label="Details enabled">{String(checked)}</output>
|
|
136
|
+
<output aria-label="Sort order">{sort}</output>
|
|
137
|
+
</div>);
|
|
138
|
+
},
|
|
139
|
+
globals: { density: "compact" }
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Disabled
|
|
144
|
+
|
|
145
|
+
```tsx
|
|
146
|
+
{
|
|
147
|
+
render: function Render(args) {
|
|
148
|
+
const [action, setAction] = useState("No action");
|
|
149
|
+
const [checked, setChecked] = useState(false);
|
|
150
|
+
const [sort, setSort] = useState("name");
|
|
151
|
+
return (<div className="flex flex-col gap-4">
|
|
152
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
153
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
154
|
+
<Button disabled>Delete project</Button>
|
|
155
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
156
|
+
Show details
|
|
157
|
+
</Toggle>
|
|
158
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
159
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
160
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
161
|
+
</NativeSelect>
|
|
162
|
+
<ContextMenu {...args}>
|
|
163
|
+
<ContextMenuTrigger className="border border-border p-panel">Right click the project</ContextMenuTrigger>
|
|
164
|
+
<ContextMenuContent aria-label="Project actions">
|
|
165
|
+
<ContextMenuGroup>
|
|
166
|
+
<ContextMenuLabel>Project</ContextMenuLabel>
|
|
167
|
+
<ContextMenuItem className={itemClassName} onClick={() => setAction("Opened")}>
|
|
168
|
+
Open<ContextMenuShortcut>Enter</ContextMenuShortcut>
|
|
169
|
+
</ContextMenuItem>
|
|
170
|
+
<ContextMenuItem disabled>Delete</ContextMenuItem>
|
|
171
|
+
</ContextMenuGroup>
|
|
172
|
+
<ContextMenuSeparator />
|
|
173
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked}>
|
|
174
|
+
Show details
|
|
175
|
+
</ContextMenuCheckboxItem>
|
|
176
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
177
|
+
<ContextMenuRadioItem value="name">Sort by name</ContextMenuRadioItem>
|
|
178
|
+
<ContextMenuRadioItem value="date">Sort by date</ContextMenuRadioItem>
|
|
179
|
+
</ContextMenuRadioGroup>
|
|
180
|
+
<ContextMenuSub>
|
|
181
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
182
|
+
<ContextMenuSubContent>
|
|
183
|
+
<ContextMenuGroup>
|
|
184
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
185
|
+
</ContextMenuGroup>
|
|
186
|
+
</ContextMenuSubContent>
|
|
187
|
+
</ContextMenuSub>
|
|
188
|
+
</ContextMenuContent>
|
|
189
|
+
</ContextMenu>
|
|
190
|
+
<output aria-label="Project action">{action}</output>
|
|
191
|
+
<output aria-label="Details enabled">{String(checked)}</output>
|
|
192
|
+
<output aria-label="Sort order">{sort}</output>
|
|
193
|
+
</div>);
|
|
194
|
+
},
|
|
195
|
+
args: { disabled: true }
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### NativePartCallbacks
|
|
200
|
+
|
|
201
|
+
```tsx
|
|
202
|
+
{
|
|
203
|
+
args: {
|
|
204
|
+
triggerClassName: fn(() => "p-panel"),
|
|
205
|
+
contentClassName: fn(() => "min-w-64"),
|
|
206
|
+
labelClassName: fn(() => "py-2"),
|
|
207
|
+
itemClassName: fn(() => "py-2"),
|
|
208
|
+
checkboxClassName: fn(() => "py-2"),
|
|
209
|
+
radioClassName: fn(() => "py-2"),
|
|
210
|
+
subTriggerClassName: fn(() => "py-2"),
|
|
211
|
+
separatorClassName: fn(() => "my-2"),
|
|
212
|
+
},
|
|
213
|
+
render: (args) => {
|
|
214
|
+
const [checked, setChecked] = useState(false);
|
|
215
|
+
const [sort, setSort] = useState("name");
|
|
216
|
+
const [action, setAction] = useState("No action");
|
|
217
|
+
return (<div className="flex flex-col gap-4">
|
|
218
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
219
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
220
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
221
|
+
Show details
|
|
222
|
+
</Toggle>
|
|
223
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
224
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
225
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
226
|
+
</NativeSelect>
|
|
227
|
+
<ContextMenu>
|
|
228
|
+
<ContextMenuTrigger className={args.triggerClassName}>Right click for callbacks</ContextMenuTrigger>
|
|
229
|
+
<ContextMenuContent aria-label="Callback actions" className={args.contentClassName}>
|
|
230
|
+
<ContextMenuGroup>
|
|
231
|
+
<ContextMenuLabel className={args.labelClassName}>Project</ContextMenuLabel>
|
|
232
|
+
<ContextMenuItem className={args.itemClassName} onClick={() => setAction("Opened")}>
|
|
233
|
+
Open
|
|
234
|
+
</ContextMenuItem>
|
|
235
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked} className={args.checkboxClassName}>
|
|
236
|
+
Show details
|
|
237
|
+
</ContextMenuCheckboxItem>
|
|
238
|
+
</ContextMenuGroup>
|
|
239
|
+
<ContextMenuSeparator className={args.separatorClassName}/>
|
|
240
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
241
|
+
<ContextMenuRadioItem value="name" className={args.radioClassName}>
|
|
242
|
+
Sort by name
|
|
243
|
+
</ContextMenuRadioItem>
|
|
244
|
+
<ContextMenuRadioItem value="date" className={args.radioClassName}>
|
|
245
|
+
Sort by date
|
|
246
|
+
</ContextMenuRadioItem>
|
|
247
|
+
</ContextMenuRadioGroup>
|
|
248
|
+
<ContextMenuSub>
|
|
249
|
+
<ContextMenuSubTrigger className={args.subTriggerClassName}>Share</ContextMenuSubTrigger>
|
|
250
|
+
<ContextMenuSubContent aria-label="Sharing actions" className={args.contentClassName}>
|
|
251
|
+
<ContextMenuGroup>
|
|
252
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
253
|
+
</ContextMenuGroup>
|
|
254
|
+
</ContextMenuSubContent>
|
|
255
|
+
</ContextMenuSub>
|
|
256
|
+
</ContextMenuContent>
|
|
257
|
+
</ContextMenu>
|
|
258
|
+
<output aria-label="Project action">{action}</output>
|
|
259
|
+
</div>);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### RightToLeft
|
|
265
|
+
|
|
266
|
+
```tsx
|
|
267
|
+
{
|
|
268
|
+
render: function Render(args) {
|
|
269
|
+
const [action, setAction] = useState("No action");
|
|
270
|
+
const [checked, setChecked] = useState(false);
|
|
271
|
+
const [sort, setSort] = useState("name");
|
|
272
|
+
return (<div className="flex flex-col gap-4">
|
|
273
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
274
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
275
|
+
<Button disabled>Delete project</Button>
|
|
276
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
277
|
+
Show details
|
|
278
|
+
</Toggle>
|
|
279
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
280
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
281
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
282
|
+
</NativeSelect>
|
|
283
|
+
<ContextMenu {...args}>
|
|
284
|
+
<ContextMenuTrigger className="border border-border p-panel">Right click the project</ContextMenuTrigger>
|
|
285
|
+
<ContextMenuContent aria-label="Project actions">
|
|
286
|
+
<ContextMenuGroup>
|
|
287
|
+
<ContextMenuLabel>Project</ContextMenuLabel>
|
|
288
|
+
<ContextMenuItem className={itemClassName} onClick={() => setAction("Opened")}>
|
|
289
|
+
Open<ContextMenuShortcut>Enter</ContextMenuShortcut>
|
|
290
|
+
</ContextMenuItem>
|
|
291
|
+
<ContextMenuItem disabled>Delete</ContextMenuItem>
|
|
292
|
+
</ContextMenuGroup>
|
|
293
|
+
<ContextMenuSeparator />
|
|
294
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked}>
|
|
295
|
+
Show details
|
|
296
|
+
</ContextMenuCheckboxItem>
|
|
297
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
298
|
+
<ContextMenuRadioItem value="name">Sort by name</ContextMenuRadioItem>
|
|
299
|
+
<ContextMenuRadioItem value="date">Sort by date</ContextMenuRadioItem>
|
|
300
|
+
</ContextMenuRadioGroup>
|
|
301
|
+
<ContextMenuSub>
|
|
302
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
303
|
+
<ContextMenuSubContent>
|
|
304
|
+
<ContextMenuGroup>
|
|
305
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
306
|
+
</ContextMenuGroup>
|
|
307
|
+
</ContextMenuSubContent>
|
|
308
|
+
</ContextMenuSub>
|
|
309
|
+
</ContextMenuContent>
|
|
310
|
+
</ContextMenu>
|
|
311
|
+
<output aria-label="Project action">{action}</output>
|
|
312
|
+
<output aria-label="Details enabled">{String(checked)}</output>
|
|
313
|
+
<output aria-label="Sort order">{sort}</output>
|
|
314
|
+
</div>);
|
|
315
|
+
},
|
|
316
|
+
globals: { density: "compact" },
|
|
317
|
+
decorators: [
|
|
318
|
+
(Story) => (<DirectionProvider direction="rtl">
|
|
319
|
+
<div dir="rtl">
|
|
320
|
+
<Story />
|
|
321
|
+
</div>
|
|
322
|
+
</DirectionProvider>),
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### MotionPreference
|
|
328
|
+
|
|
329
|
+
```tsx
|
|
330
|
+
{
|
|
331
|
+
render: function Render(args) {
|
|
332
|
+
const [action, setAction] = useState("No action");
|
|
333
|
+
const [checked, setChecked] = useState(false);
|
|
334
|
+
const [sort, setSort] = useState("name");
|
|
335
|
+
return (<div className="flex flex-col gap-4">
|
|
336
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
337
|
+
<Button onClick={() => setAction("Link copied")}>Copy project link</Button>
|
|
338
|
+
<Button disabled>Delete project</Button>
|
|
339
|
+
<Toggle aria-label="Show details" pressed={checked} onPressedChange={setChecked}>
|
|
340
|
+
Show details
|
|
341
|
+
</Toggle>
|
|
342
|
+
<NativeSelect aria-label="Sort projects" value={sort} onChange={(event) => setSort(event.currentTarget.value)}>
|
|
343
|
+
<NativeSelectOption value="name">Sort by name</NativeSelectOption>
|
|
344
|
+
<NativeSelectOption value="date">Sort by date</NativeSelectOption>
|
|
345
|
+
</NativeSelect>
|
|
346
|
+
<ContextMenu {...args}>
|
|
347
|
+
<ContextMenuTrigger className="border border-border p-panel">Right click the project</ContextMenuTrigger>
|
|
348
|
+
<ContextMenuContent aria-label="Project actions">
|
|
349
|
+
<ContextMenuGroup>
|
|
350
|
+
<ContextMenuLabel>Project</ContextMenuLabel>
|
|
351
|
+
<ContextMenuItem className={itemClassName} onClick={() => setAction("Opened")}>
|
|
352
|
+
Open<ContextMenuShortcut>Enter</ContextMenuShortcut>
|
|
353
|
+
</ContextMenuItem>
|
|
354
|
+
<ContextMenuItem disabled>Delete</ContextMenuItem>
|
|
355
|
+
</ContextMenuGroup>
|
|
356
|
+
<ContextMenuSeparator />
|
|
357
|
+
<ContextMenuCheckboxItem checked={checked} onCheckedChange={setChecked}>
|
|
358
|
+
Show details
|
|
359
|
+
</ContextMenuCheckboxItem>
|
|
360
|
+
<ContextMenuRadioGroup value={sort} onValueChange={setSort}>
|
|
361
|
+
<ContextMenuRadioItem value="name">Sort by name</ContextMenuRadioItem>
|
|
362
|
+
<ContextMenuRadioItem value="date">Sort by date</ContextMenuRadioItem>
|
|
363
|
+
</ContextMenuRadioGroup>
|
|
364
|
+
<ContextMenuSub>
|
|
365
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
366
|
+
<ContextMenuSubContent>
|
|
367
|
+
<ContextMenuGroup>
|
|
368
|
+
<ContextMenuItem onClick={() => setAction("Link copied")}>Copy link</ContextMenuItem>
|
|
369
|
+
</ContextMenuGroup>
|
|
370
|
+
</ContextMenuSubContent>
|
|
371
|
+
</ContextMenuSub>
|
|
372
|
+
</ContextMenuContent>
|
|
373
|
+
</ContextMenu>
|
|
374
|
+
<output aria-label="Project action">{action}</output>
|
|
375
|
+
<output aria-label="Details enabled">{String(checked)}</output>
|
|
376
|
+
<output aria-label="Sort order">{sort}</output>
|
|
377
|
+
</div>);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### BottomAligned
|
|
383
|
+
|
|
384
|
+
```tsx
|
|
385
|
+
{
|
|
386
|
+
render: function Render(args) {
|
|
387
|
+
const [action, setAction] = useState("No action");
|
|
388
|
+
return (<div className="flex flex-col items-center gap-4 p-12">
|
|
389
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
390
|
+
<ContextMenu {...args}>
|
|
391
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click for bottom menu</ContextMenuTrigger>
|
|
392
|
+
<ContextMenuContent side="bottom" align="start" alignOffset={0} aria-label="Bottom actions">
|
|
393
|
+
<ContextMenuGroup>
|
|
394
|
+
<ContextMenuItem onClick={() => setAction("Opened")}>Open</ContextMenuItem>
|
|
395
|
+
</ContextMenuGroup>
|
|
396
|
+
</ContextMenuContent>
|
|
397
|
+
</ContextMenu>
|
|
398
|
+
<output aria-label="Bottom action">{action}</output>
|
|
399
|
+
</div>);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### RightToLeftBottomAligned
|
|
405
|
+
|
|
406
|
+
```tsx
|
|
407
|
+
{
|
|
408
|
+
render: function Render(args) {
|
|
409
|
+
const [action, setAction] = useState("No action");
|
|
410
|
+
return (<div className="flex flex-col items-center gap-4 p-12">
|
|
411
|
+
<Button onClick={() => setAction("Opened")}>Open project</Button>
|
|
412
|
+
<ContextMenu {...args}>
|
|
413
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click for bottom menu</ContextMenuTrigger>
|
|
414
|
+
<ContextMenuContent side="bottom" align="start" alignOffset={0} aria-label="Bottom actions">
|
|
415
|
+
<ContextMenuGroup>
|
|
416
|
+
<ContextMenuItem onClick={() => setAction("Opened")}>Open</ContextMenuItem>
|
|
417
|
+
</ContextMenuGroup>
|
|
418
|
+
</ContextMenuContent>
|
|
419
|
+
</ContextMenu>
|
|
420
|
+
<output aria-label="Bottom action">{action}</output>
|
|
421
|
+
</div>);
|
|
422
|
+
},
|
|
423
|
+
decorators: RightToLeft.decorators
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Icons
|
|
428
|
+
|
|
429
|
+
```tsx
|
|
430
|
+
{
|
|
431
|
+
render: function Render(args) {
|
|
432
|
+
const [action, setAction] = useState("No action");
|
|
433
|
+
return (<div className="flex flex-col gap-4">
|
|
434
|
+
<Button onClick={() => setAction("Created")}>New project file</Button>
|
|
435
|
+
<Button onClick={() => setAction("Saved")}>Save project</Button>
|
|
436
|
+
<ContextMenu {...args}>
|
|
437
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click for file actions</ContextMenuTrigger>
|
|
438
|
+
<ContextMenuContent aria-label="File actions">
|
|
439
|
+
<ContextMenuGroup>
|
|
440
|
+
<ContextMenuLabel>File</ContextMenuLabel>
|
|
441
|
+
<ContextMenuItem onClick={() => setAction("Created")}>
|
|
442
|
+
<FileIcon aria-hidden="true"/>
|
|
443
|
+
New file<ContextMenuShortcut>Ctrl+N</ContextMenuShortcut>
|
|
444
|
+
</ContextMenuItem>
|
|
445
|
+
<ContextMenuSeparator />
|
|
446
|
+
<ContextMenuItem onClick={() => setAction("Saved")}>
|
|
447
|
+
<SaveIcon aria-hidden="true"/>
|
|
448
|
+
Save<ContextMenuShortcut>Ctrl+S</ContextMenuShortcut>
|
|
449
|
+
</ContextMenuItem>
|
|
450
|
+
</ContextMenuGroup>
|
|
451
|
+
</ContextMenuContent>
|
|
452
|
+
</ContextMenu>
|
|
453
|
+
<output aria-label="File action">{action}</output>
|
|
454
|
+
</div>);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### RightToLeftIcons
|
|
460
|
+
|
|
461
|
+
```tsx
|
|
462
|
+
{
|
|
463
|
+
render: function Render(args) {
|
|
464
|
+
const [action, setAction] = useState("No action");
|
|
465
|
+
return (<div className="flex flex-col gap-4">
|
|
466
|
+
<Button onClick={() => setAction("Created")}>New project file</Button>
|
|
467
|
+
<Button onClick={() => setAction("Saved")}>Save project</Button>
|
|
468
|
+
<ContextMenu {...args}>
|
|
469
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click for file actions</ContextMenuTrigger>
|
|
470
|
+
<ContextMenuContent aria-label="File actions">
|
|
471
|
+
<ContextMenuGroup>
|
|
472
|
+
<ContextMenuLabel>File</ContextMenuLabel>
|
|
473
|
+
<ContextMenuItem onClick={() => setAction("Created")}>
|
|
474
|
+
<FileIcon aria-hidden="true"/>
|
|
475
|
+
New file<ContextMenuShortcut>Ctrl+N</ContextMenuShortcut>
|
|
476
|
+
</ContextMenuItem>
|
|
477
|
+
<ContextMenuSeparator />
|
|
478
|
+
<ContextMenuItem onClick={() => setAction("Saved")}>
|
|
479
|
+
<SaveIcon aria-hidden="true"/>
|
|
480
|
+
Save<ContextMenuShortcut>Ctrl+S</ContextMenuShortcut>
|
|
481
|
+
</ContextMenuItem>
|
|
482
|
+
</ContextMenuGroup>
|
|
483
|
+
</ContextMenuContent>
|
|
484
|
+
</ContextMenu>
|
|
485
|
+
<output aria-label="File action">{action}</output>
|
|
486
|
+
</div>);
|
|
487
|
+
},
|
|
488
|
+
decorators: RightToLeft.decorators
|
|
489
|
+
}
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Destructive
|
|
493
|
+
|
|
494
|
+
```tsx
|
|
495
|
+
{
|
|
496
|
+
render: function Render(args) {
|
|
497
|
+
const [isPresent, setIsPresent] = useState(true);
|
|
498
|
+
return (<div className="flex flex-col gap-4">
|
|
499
|
+
<Button variant="destructive" disabled={!isPresent} onClick={() => setIsPresent(false)}>
|
|
500
|
+
Discard project draft
|
|
501
|
+
</Button>
|
|
502
|
+
<ContextMenu {...args}>
|
|
503
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click the draft</ContextMenuTrigger>
|
|
504
|
+
<ContextMenuContent aria-label="Draft actions">
|
|
505
|
+
<ContextMenuGroup>
|
|
506
|
+
<ContextMenuItem variant="destructive" disabled={!isPresent} onClick={() => setIsPresent(false)}>
|
|
507
|
+
<TrashIcon aria-hidden="true"/>
|
|
508
|
+
Discard draft
|
|
509
|
+
</ContextMenuItem>
|
|
510
|
+
</ContextMenuGroup>
|
|
511
|
+
</ContextMenuContent>
|
|
512
|
+
</ContextMenu>
|
|
513
|
+
<output aria-label="Draft status">{isPresent ? "Draft available" : "Draft discarded"}</output>
|
|
514
|
+
</div>);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### RightToLeftDestructive
|
|
520
|
+
|
|
521
|
+
```tsx
|
|
522
|
+
{
|
|
523
|
+
render: function Render(args) {
|
|
524
|
+
const [isPresent, setIsPresent] = useState(true);
|
|
525
|
+
return (<div className="flex flex-col gap-4">
|
|
526
|
+
<Button variant="destructive" disabled={!isPresent} onClick={() => setIsPresent(false)}>
|
|
527
|
+
Discard project draft
|
|
528
|
+
</Button>
|
|
529
|
+
<ContextMenu {...args}>
|
|
530
|
+
<ContextMenuTrigger className="w-64 border p-panel">Right click the draft</ContextMenuTrigger>
|
|
531
|
+
<ContextMenuContent aria-label="Draft actions">
|
|
532
|
+
<ContextMenuGroup>
|
|
533
|
+
<ContextMenuItem variant="destructive" disabled={!isPresent} onClick={() => setIsPresent(false)}>
|
|
534
|
+
<TrashIcon aria-hidden="true"/>
|
|
535
|
+
Discard draft
|
|
536
|
+
</ContextMenuItem>
|
|
537
|
+
</ContextMenuGroup>
|
|
538
|
+
</ContextMenuContent>
|
|
539
|
+
</ContextMenu>
|
|
540
|
+
<output aria-label="Draft status">{isPresent ? "Draft available" : "Draft discarded"}</output>
|
|
541
|
+
</div>);
|
|
542
|
+
},
|
|
543
|
+
decorators: RightToLeft.decorators
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
### Top
|
|
548
|
+
|
|
549
|
+
```tsx
|
|
550
|
+
{
|
|
551
|
+
render: () => <SideMenu side="top"/>
|
|
552
|
+
}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### Left
|
|
556
|
+
|
|
557
|
+
```tsx
|
|
558
|
+
{
|
|
559
|
+
render: () => <SideMenu side="left"/>
|
|
560
|
+
}
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Right
|
|
564
|
+
|
|
565
|
+
```tsx
|
|
566
|
+
{
|
|
567
|
+
render: () => <SideMenu side="right"/>
|
|
568
|
+
}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### RightToLeftTop
|
|
572
|
+
|
|
573
|
+
```tsx
|
|
574
|
+
{
|
|
575
|
+
render: () => <SideMenu side="top"/>,
|
|
576
|
+
decorators: RightToLeft.decorators
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
### RightToLeftLeft
|
|
581
|
+
|
|
582
|
+
```tsx
|
|
583
|
+
{
|
|
584
|
+
render: () => <SideMenu side="left"/>,
|
|
585
|
+
decorators: RightToLeft.decorators
|
|
586
|
+
}
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### RightToLeftRight
|
|
590
|
+
|
|
591
|
+
```tsx
|
|
592
|
+
{
|
|
593
|
+
render: () => <SideMenu side="right"/>,
|
|
594
|
+
decorators: RightToLeft.decorators
|
|
595
|
+
}
|
|
596
|
+
```
|