@alexgorbatchev/shadcn 0.0.19 → 0.0.21
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 +45 -16
- package/THIRD_PARTY_NOTICES.md +60 -0
- package/dist/{chunk-q2ewq67a.js → chunk-02qymemz.js} +1 -1
- package/dist/{chunk-k89xxj12.js → chunk-0ewzb2ax.js} +1 -1
- package/dist/{chunk-0jb0xgdb.js → chunk-0w6rxpr5.js} +1 -1
- package/dist/{chunk-0q6mg89k.js → chunk-1c5jjkhw.js} +1 -1
- package/dist/{chunk-x82x81th.js → chunk-1p7pend8.js} +3 -3
- package/dist/chunk-21wbz345.js +65 -0
- 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-mjpc4qf7.js → chunk-52e8a05a.js} +1 -1
- package/dist/{chunk-kc4mmrwk.js → chunk-5ayp2vkw.js} +1 -1
- 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-8x8yxf6x.js → chunk-67dkgsm3.js} +2 -2
- 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-cre60717.js → chunk-72qr0gqe.js} +1 -1
- package/dist/{chunk-r7fy89jq.js → chunk-79667fz5.js} +3 -3
- package/dist/{chunk-vpj3vk7v.js → chunk-83cckb23.js} +1 -1
- package/dist/{chunk-9msk1t9e.js → chunk-8a15x4a8.js} +1 -1
- package/dist/{chunk-h8awhm19.js → chunk-96wh7ccv.js} +1 -1
- package/dist/{chunk-5h6m9dsm.js → chunk-9dqspkha.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-f8758vjx.js → chunk-az81pc04.js} +5 -5
- 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-2qxy1r5y.js → chunk-d3ad53et.js} +10 -10
- package/dist/{chunk-mx21wpq0.js → chunk-d4bm5rzy.js} +12 -2
- package/dist/{chunk-qw7229kj.js → chunk-dgkj6442.js} +1 -1
- package/dist/{chunk-r4fr62ca.js → chunk-djm7qq62.js} +1 -1
- package/dist/{chunk-45kmek5e.js → chunk-dq7kr5y0.js} +16 -4
- package/dist/{chunk-c6b2cfw4.js → chunk-e0gcczqk.js} +3 -3
- package/dist/{chunk-9dw4dyzq.js → chunk-e0pv0me5.js} +1 -1
- package/dist/{chunk-82vfgkjv.js → chunk-f4c0tg2x.js} +1 -1
- package/dist/{chunk-jq6tc65r.js → chunk-f5hphka1.js} +7 -1
- package/dist/{chunk-6wvtsf2m.js → chunk-f9ha76ap.js} +5 -5
- 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-waat2ksf.js → chunk-ghmkxqn5.js} +1 -1
- package/dist/{chunk-r3artnc9.js → chunk-gkkbg7rq.js} +1 -1
- package/dist/{chunk-zcwynyr0.js → chunk-gykrcxd1.js} +1 -0
- 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-dppmqr99.js → chunk-k8v9y2dw.js} +1 -1
- package/dist/chunk-kbg2e95b.js +434 -0
- package/dist/{chunk-s3b87adw.js → chunk-kv1akmf5.js} +1 -1
- package/dist/{chunk-2g0zzx6f.js → chunk-m2ct74my.js} +1 -0
- package/dist/{chunk-19441s27.js → chunk-m9zsppp2.js} +2 -2
- 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-3552jz55.js → chunk-qcsxnn16.js} +1 -0
- package/dist/{chunk-q40gqpwh.js → chunk-qgjjcmpa.js} +1 -1
- package/dist/chunk-r9qrb6b6.js +54 -0
- package/dist/{chunk-1x2ch0xc.js → chunk-rffrerg5.js} +3 -1
- package/dist/{chunk-h561m2ae.js → chunk-s83v0taa.js} +1 -1
- package/dist/{chunk-emasqc8x.js → chunk-sat9hjv7.js} +1 -1
- package/dist/{chunk-k4vvp62d.js → chunk-seeed8a2.js} +1 -1
- package/dist/{chunk-akaezred.js → chunk-tea1nrwn.js} +2 -2
- package/dist/{chunk-0zwxgwr4.js → chunk-tynbgc30.js} +1 -1
- 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-38kwkd1a.js → chunk-wwyzwptb.js} +3 -2
- package/dist/{chunk-yncp9nsv.js → chunk-z4jpedvh.js} +1 -0
- package/dist/{chunk-b12s32e3.js → chunk-zj06vvcz.js} +1 -1
- package/dist/components/AccountMenu.d.ts +12 -0
- package/dist/components/AlertDialog.d.ts +1 -1
- package/dist/components/AppShell.d.ts +23 -0
- package/dist/components/AuthForm.d.ts +18 -0
- package/dist/components/BarList.d.ts +16 -0
- package/dist/components/BillingUsage.d.ts +20 -0
- package/dist/components/Combobox.d.ts +2 -1
- package/dist/components/ContextMenu.d.ts +1 -1
- package/dist/components/DashboardLayout.d.ts +18 -0
- 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/FilterBar.d.ts +20 -0
- package/dist/components/Kanban.d.ts +23 -0
- package/dist/components/Meter.d.ts +9 -0
- package/dist/components/NumberField.d.ts +11 -0
- package/dist/components/PageHeader.d.ts +11 -0
- package/dist/components/ScrollGuard.d.ts +6 -0
- package/dist/components/SettingsSection.d.ts +16 -0
- package/dist/components/Sidebar.d.ts +2 -1
- package/dist/components/StatCard.d.ts +14 -0
- package/dist/components/StatusTracker.d.ts +16 -0
- package/dist/components/Stepper.d.ts +12 -0
- package/dist/components/TagInput.d.ts +16 -0
- package/dist/components/Toast.d.ts +1 -1
- package/dist/components/Toolbar.d.ts +10 -0
- package/dist/components/WorkspaceSwitcher.d.ts +14 -0
- package/dist/components/assistant-ui/elements/AgentCard.js +1 -1
- package/dist/components/assistant-ui/elements/ApprovalCard.d.ts +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 +5 -4
- 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/MessageTiming.d.ts +1 -1
- package/dist/components/assistant-ui/elements/ModelPicker.js +2 -2
- package/dist/components/assistant-ui/elements/ModelSelector.js +14 -13
- package/dist/components/assistant-ui/elements/ModelSelectorContent.js +11 -10
- package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +5 -4
- package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +5 -4
- package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +5 -4
- package/dist/components/assistant-ui/elements/ModelSelectorItem.js +5 -4
- package/dist/components/assistant-ui/elements/ModelSelectorList.js +7 -6
- package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -2
- package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +5 -4
- package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +5 -4
- 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/elements/types.d.ts +0 -4
- package/dist/components/assistant-ui/index.js +61 -60
- package/dist/components/assistant-ui/native/AssistantModal.js +11 -10
- package/dist/components/assistant-ui/native/AssistantSidebar.js +12 -11
- 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 +16 -15
- package/dist/components/assistant-ui/native/Reasoning.js +5 -4
- package/dist/components/assistant-ui/native/TaskCard.js +7 -6
- package/dist/components/assistant-ui/native/TaskGroup.js +8 -7
- package/dist/components/assistant-ui/native/TaskTray.js +3 -2
- package/dist/components/assistant-ui/native/Thread.js +10 -9
- 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/calendar/DatePicker.d.ts +27 -0
- package/dist/components/calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.js +175 -2
- package/dist/components/chart/AnalyticsChart.d.ts +24 -0
- package/dist/components/chart/index.d.ts +2 -0
- package/dist/components/chart/index.js +88 -0
- package/dist/components/color-picker/ColorPicker.d.ts +14 -0
- package/dist/components/color-picker/index.d.ts +2 -0
- package/dist/components/color-picker/index.js +52 -0
- package/dist/components/command/index.js +3 -2
- package/dist/components/data-grid/DataGrid.d.ts +44 -0
- package/dist/components/data-grid/index.d.ts +2 -0
- package/dist/components/data-grid/index.js +228 -0
- package/dist/components/editor/RichTextEditor.d.ts +14 -0
- package/dist/components/editor/index.d.ts +2 -0
- package/dist/components/editor/index.js +108 -0
- package/dist/components/event-calendar/EventCalendar.d.ts +16 -0
- package/dist/components/event-calendar/EventForm.d.ts +18 -0
- package/dist/components/event-calendar/index.d.ts +4 -0
- package/dist/components/event-calendar/index.js +266 -0
- package/dist/components/file-upload/FileUpload.d.ts +14 -0
- package/dist/components/file-upload/index.d.ts +2 -0
- package/dist/components/file-upload/index.js +80 -0
- package/dist/components/gantt/Gantt.d.ts +22 -0
- package/dist/components/gantt/Roadmap.d.ts +18 -0
- package/dist/components/gantt/index.d.ts +4 -0
- package/dist/components/gantt/index.js +357 -0
- package/dist/components/image-crop/ImageCrop.d.ts +10 -0
- package/dist/components/image-crop/index.d.ts +2 -0
- package/dist/components/image-crop/index.js +35 -0
- 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/components/tree/Tree.d.ts +16 -0
- package/dist/components/tree/index.d.ts +2 -0
- package/dist/components/tree/index.js +57 -0
- package/dist/event-calendar.css +83 -0
- package/dist/hooks/usePortalNode.d.ts +14 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +1636 -761
- package/dist/options/types.d.ts +5 -0
- 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/actions/Toolbar.md +89 -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/AnalyticsChart.md +48 -0
- package/llms/components/data-display/Avatar.md +254 -0
- package/llms/components/data-display/Badge.md +221 -0
- package/llms/components/data-display/BarList.md +50 -0
- package/llms/components/data-display/Carousel.md +465 -0
- package/llms/components/data-display/Chart.md +546 -0
- package/llms/components/data-display/DataGrid.md +51 -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/Meter.md +74 -0
- package/llms/components/data-display/Sparkline.md +50 -0
- package/llms/components/data-display/StatCard.md +65 -0
- package/llms/components/data-display/StatusTracker.md +51 -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/DatePicker.md +97 -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/AuthForm.md +70 -0
- package/llms/components/forms/Checkbox.md +204 -0
- package/llms/components/forms/ColorPicker.md +70 -0
- package/llms/components/forms/Combobox.md +594 -0
- package/llms/components/forms/EventForm.md +66 -0
- package/llms/components/forms/Field.md +511 -0
- package/llms/components/forms/FileUpload.md +55 -0
- package/llms/components/forms/FilterBar.md +34 -0
- package/llms/components/forms/ImageCrop.md +88 -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/NumberField.md +94 -0
- package/llms/components/forms/Questionnaire.md +279 -0
- package/llms/components/forms/RadioGroup.md +401 -0
- package/llms/components/forms/RichTextEditor.md +62 -0
- package/llms/components/forms/Select.md +575 -0
- package/llms/components/forms/SettingsSection.md +65 -0
- package/llms/components/forms/Slider.md +234 -0
- package/llms/components/forms/StarRating.md +60 -0
- package/llms/components/forms/Stepper.md +85 -0
- package/llms/components/forms/Switch.md +240 -0
- package/llms/components/forms/TagInput.md +47 -0
- package/llms/components/forms/Textarea.md +219 -0
- package/llms/components/layout/Accordion.md +249 -0
- package/llms/components/layout/AppShell.md +63 -0
- package/llms/components/layout/AspectRatio.md +68 -0
- package/llms/components/layout/BillingUsage.md +51 -0
- package/llms/components/layout/Card.md +391 -0
- package/llms/components/layout/Collapsible.md +231 -0
- package/llms/components/layout/DashboardLayout.md +78 -0
- package/llms/components/layout/PageHeader.md +49 -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/AccountMenu.md +42 -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/navigation/Tree.md +28 -0
- package/llms/components/navigation/WorkspaceSwitcher.md +48 -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/planning/EventCalendar.md +67 -0
- package/llms/components/planning/Gantt.md +66 -0
- package/llms/components/planning/Kanban.md +50 -0
- package/llms/components/planning/Roadmap.md +34 -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 +390 -0
- package/llms.txt +462 -0
- package/package.json +110 -5
- package/dist/chunk-czg9p52v.js +0 -74
package/dist/index.js
CHANGED
|
@@ -10,9 +10,12 @@ import {
|
|
|
10
10
|
useDensity
|
|
11
11
|
} from "./chunk-e6hk39ev.js";
|
|
12
12
|
import {
|
|
13
|
-
PortalContext,
|
|
14
13
|
usePortalContainer2
|
|
15
14
|
} from "./chunk-j89xg1ak.js";
|
|
15
|
+
import {
|
|
16
|
+
usePortalNode,
|
|
17
|
+
PortalProvider2
|
|
18
|
+
} from "./chunk-aa7m22zj.js";
|
|
16
19
|
import {
|
|
17
20
|
DirectionProvider2,
|
|
18
21
|
useDirection2
|
|
@@ -33,7 +36,7 @@ import {
|
|
|
33
36
|
DropdownMenuRadioItem2,
|
|
34
37
|
DropdownMenuSeparator2,
|
|
35
38
|
DropdownMenuShortcut2
|
|
36
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-d4bm5rzy.js";
|
|
37
40
|
import {
|
|
38
41
|
Popover2,
|
|
39
42
|
PopoverTrigger2,
|
|
@@ -41,7 +44,7 @@ import {
|
|
|
41
44
|
PopoverHeader2,
|
|
42
45
|
PopoverTitle2,
|
|
43
46
|
PopoverDescription2
|
|
44
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-4djw71cv.js";
|
|
45
48
|
import {
|
|
46
49
|
Skeleton2
|
|
47
50
|
} from "./chunk-d70rcwk7.js";
|
|
@@ -77,7 +80,7 @@ import {
|
|
|
77
80
|
DialogFooter2,
|
|
78
81
|
DialogTitle2,
|
|
79
82
|
DialogDescription2
|
|
80
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-70vndezn.js";
|
|
81
84
|
import {
|
|
82
85
|
Slider2
|
|
83
86
|
} from "./chunk-644cnngf.js";
|
|
@@ -92,7 +95,7 @@ import {
|
|
|
92
95
|
Tooltip2,
|
|
93
96
|
TooltipTrigger2,
|
|
94
97
|
TooltipContent2
|
|
95
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-mz3e810d.js";
|
|
96
99
|
import {
|
|
97
100
|
RadioGroup2,
|
|
98
101
|
RadioGroupItem2
|
|
@@ -105,7 +108,7 @@ import {
|
|
|
105
108
|
CardAction2,
|
|
106
109
|
CardContent2,
|
|
107
110
|
CardFooter2
|
|
108
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-bygq5yqf.js";
|
|
109
112
|
import {
|
|
110
113
|
InputGroup2,
|
|
111
114
|
InputGroupAddon2,
|
|
@@ -114,6 +117,21 @@ import {
|
|
|
114
117
|
InputGroupInput2,
|
|
115
118
|
InputGroupTextarea2
|
|
116
119
|
} from "./chunk-1jeg5z55.js";
|
|
120
|
+
import {
|
|
121
|
+
Tabs2,
|
|
122
|
+
tabsListVariants2,
|
|
123
|
+
TabsList2,
|
|
124
|
+
TabsTrigger2,
|
|
125
|
+
TabsContent2,
|
|
126
|
+
DragDropPreview2,
|
|
127
|
+
DragDropProvider2,
|
|
128
|
+
useDragDrop2,
|
|
129
|
+
useDragSource2,
|
|
130
|
+
DragSource2,
|
|
131
|
+
useDropTarget2,
|
|
132
|
+
DropTarget2,
|
|
133
|
+
Kanban2
|
|
134
|
+
} from "./chunk-kbg2e95b.js";
|
|
117
135
|
import {
|
|
118
136
|
badgeVariants2,
|
|
119
137
|
Badge2
|
|
@@ -179,6 +197,11 @@ import {
|
|
|
179
197
|
TableCell2,
|
|
180
198
|
TableCaption2
|
|
181
199
|
} from "./chunk-0y0kqaqj.js";
|
|
200
|
+
import {
|
|
201
|
+
NativeSelect2,
|
|
202
|
+
NativeSelectOption2,
|
|
203
|
+
NativeSelectOptGroup2
|
|
204
|
+
} from "./chunk-r9qrb6b6.js";
|
|
182
205
|
import {
|
|
183
206
|
Kbd2,
|
|
184
207
|
KbdGroup2
|
|
@@ -187,7 +210,7 @@ import {
|
|
|
187
210
|
HoverCard2,
|
|
188
211
|
HoverCardTrigger2,
|
|
189
212
|
HoverCardContent2
|
|
190
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-hh43wg05.js";
|
|
191
214
|
import {
|
|
192
215
|
Sheet2,
|
|
193
216
|
SheetTrigger2,
|
|
@@ -221,7 +244,15 @@ import {
|
|
|
221
244
|
SidebarMenuSub2,
|
|
222
245
|
SidebarMenuSubItem2,
|
|
223
246
|
SidebarMenuSubButton2
|
|
224
|
-
} from "./chunk-
|
|
247
|
+
} from "./chunk-dq7kr5y0.js";
|
|
248
|
+
import {
|
|
249
|
+
Toolbar2,
|
|
250
|
+
ToolbarButton2,
|
|
251
|
+
ToolbarLink2,
|
|
252
|
+
ToolbarInput2,
|
|
253
|
+
ToolbarGroup2,
|
|
254
|
+
ToolbarSeparator2
|
|
255
|
+
} from "./chunk-21wbz345.js";
|
|
225
256
|
// src/components/ButtonLink.tsx
|
|
226
257
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
227
258
|
import { useRender } from "@base-ui/react/use-render";
|
|
@@ -406,22 +437,27 @@ function ComboboxContent({
|
|
|
406
437
|
const resolvedDensity = useDensity(density);
|
|
407
438
|
const direction = useDirection();
|
|
408
439
|
const container = usePortalContainer2();
|
|
440
|
+
const portal = usePortalNode();
|
|
409
441
|
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Portal, {
|
|
410
442
|
container,
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
"
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
443
|
+
ref: portal.ref,
|
|
444
|
+
children: /* @__PURE__ */ jsx3(PortalProvider2, {
|
|
445
|
+
container: portal.node,
|
|
446
|
+
children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Positioner, {
|
|
447
|
+
side,
|
|
448
|
+
sideOffset,
|
|
449
|
+
align,
|
|
450
|
+
alignOffset,
|
|
451
|
+
anchor,
|
|
452
|
+
className: "isolate ",
|
|
453
|
+
children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Popup, {
|
|
454
|
+
dir: direction,
|
|
455
|
+
"data-density": resolvedDensity,
|
|
456
|
+
"data-slot": "combobox-content",
|
|
457
|
+
"data-chips": !!anchor,
|
|
458
|
+
className: (state) => cn2("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
459
|
+
...props
|
|
460
|
+
})
|
|
425
461
|
})
|
|
426
462
|
})
|
|
427
463
|
});
|
|
@@ -498,7 +534,14 @@ function ComboboxChips({ density, className, ...props }) {
|
|
|
498
534
|
...props
|
|
499
535
|
});
|
|
500
536
|
}
|
|
501
|
-
function ComboboxChip({
|
|
537
|
+
function ComboboxChip({
|
|
538
|
+
density,
|
|
539
|
+
className,
|
|
540
|
+
children,
|
|
541
|
+
showRemove = true,
|
|
542
|
+
removeLabel = "Remove item",
|
|
543
|
+
...props
|
|
544
|
+
}) {
|
|
502
545
|
return /* @__PURE__ */ jsxs2(ComboboxPrimitive.Chip, {
|
|
503
546
|
"data-density": density,
|
|
504
547
|
"data-slot": "combobox-chip",
|
|
@@ -513,7 +556,7 @@ function ComboboxChip({ density, className, children, showRemove = true, ...prop
|
|
|
513
556
|
}),
|
|
514
557
|
className: "size-tag -ms-1 opacity-50 hover:opacity-100",
|
|
515
558
|
"data-slot": "combobox-chip-remove",
|
|
516
|
-
"aria-label":
|
|
559
|
+
"aria-label": removeLabel,
|
|
517
560
|
children: /* @__PURE__ */ jsx3(XIcon, {
|
|
518
561
|
className: "pointer-events-none"
|
|
519
562
|
})
|
|
@@ -529,334 +572,54 @@ function ComboboxChipsInput({ density, className, ...props }) {
|
|
|
529
572
|
...props
|
|
530
573
|
});
|
|
531
574
|
}
|
|
532
|
-
// src/components/Tabs.tsx
|
|
533
|
-
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
534
|
-
import { cva } from "class-variance-authority";
|
|
535
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
536
|
-
function Tabs({ density, className, orientation = "horizontal", ...props }) {
|
|
537
|
-
return /* @__PURE__ */ jsx4(TabsPrimitive.Root, {
|
|
538
|
-
"data-density": density,
|
|
539
|
-
"data-slot": "tabs",
|
|
540
|
-
orientation,
|
|
541
|
-
className: (state) => cn2("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col", typeof className === "function" ? className(state) : className),
|
|
542
|
-
...props
|
|
543
|
-
});
|
|
544
|
-
}
|
|
545
|
-
var tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-sm p-px text-muted-foreground group-data-[orientation=horizontal]/tabs:h-control group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none", {
|
|
546
|
-
variants: {
|
|
547
|
-
variant: {
|
|
548
|
-
default: "bg-muted",
|
|
549
|
-
line: "gap-1 bg-transparent"
|
|
550
|
-
}
|
|
551
|
-
},
|
|
552
|
-
defaultVariants: {
|
|
553
|
-
variant: "default"
|
|
554
|
-
}
|
|
555
|
-
});
|
|
556
|
-
function TabsList({ density, className, variant = "default", ...props }) {
|
|
557
|
-
return /* @__PURE__ */ jsx4(TabsPrimitive.List, {
|
|
558
|
-
"data-density": density,
|
|
559
|
-
"data-slot": "tabs-list",
|
|
560
|
-
"data-variant": variant,
|
|
561
|
-
className: (state) => cn2(tabsListVariants({ variant }), typeof className === "function" ? className(state) : className),
|
|
562
|
-
...props
|
|
563
|
-
});
|
|
564
|
-
}
|
|
565
|
-
function TabsTrigger({ density, className, ...props }) {
|
|
566
|
-
return /* @__PURE__ */ jsx4(TabsPrimitive.Tab, {
|
|
567
|
-
"data-density": density,
|
|
568
|
-
"data-slot": "tabs-trigger",
|
|
569
|
-
className: (state) => cn2("relative inline-flex h-full flex-1 items-center justify-center gap-control-gap rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pe-1 has-data-[icon=inline-start]:ps-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-end-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", typeof className === "function" ? className(state) : className),
|
|
570
|
-
...props
|
|
571
|
-
});
|
|
572
|
-
}
|
|
573
|
-
function TabsContent({ density, className, ...props }) {
|
|
574
|
-
return /* @__PURE__ */ jsx4(TabsPrimitive.Panel, {
|
|
575
|
-
"data-density": density,
|
|
576
|
-
"data-slot": "tabs-content",
|
|
577
|
-
className: (state) => cn2("flex-1 text-sm outline-none", typeof className === "function" ? className(state) : className),
|
|
578
|
-
...props
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
|
-
// src/components/DragDropProvider.tsx
|
|
582
|
-
import { useCallback, useEffect, useRef, useState } from "react";
|
|
583
|
-
import { flushSync } from "react-dom";
|
|
584
|
-
|
|
585
|
-
// src/drag-drop/DragDropContext.ts
|
|
586
|
-
import { createContext } from "react";
|
|
587
|
-
var DragDropContext = createContext(null);
|
|
588
|
-
|
|
589
|
-
// src/components/DragDropPreview.tsx
|
|
590
|
-
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
591
|
-
function DragDropPreview({ labels, maxItems = 5 }) {
|
|
592
|
-
const limit = Math.max(1, Math.floor(maxItems));
|
|
593
|
-
return /* @__PURE__ */ jsxs3("div", {
|
|
594
|
-
"data-slot": "drag-drop-preview",
|
|
595
|
-
className: "flex w-max max-w-64 flex-col items-start gap-1",
|
|
596
|
-
children: [
|
|
597
|
-
labels.slice(0, limit).map((label, index) => /* @__PURE__ */ jsx5(Badge2, {
|
|
598
|
-
variant: "secondary",
|
|
599
|
-
density: "compact",
|
|
600
|
-
children: /* @__PURE__ */ jsx5("span", {
|
|
601
|
-
className: "max-w-60 truncate",
|
|
602
|
-
children: label
|
|
603
|
-
})
|
|
604
|
-
}, `${index}:${label}`)),
|
|
605
|
-
labels.length > limit && /* @__PURE__ */ jsxs3(Badge2, {
|
|
606
|
-
variant: "secondary",
|
|
607
|
-
density: "compact",
|
|
608
|
-
children: [
|
|
609
|
-
"+",
|
|
610
|
-
labels.length - limit,
|
|
611
|
-
" more…"
|
|
612
|
-
]
|
|
613
|
-
})
|
|
614
|
-
]
|
|
615
|
-
});
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
// src/components/DragDropProvider.tsx
|
|
619
|
-
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
620
|
-
function DragDropProvider({ children, maxPreviewItems = 5 }) {
|
|
621
|
-
const [active, setActive] = useState(null);
|
|
622
|
-
const [over, setOver] = useState(null);
|
|
623
|
-
const preview = useRef(null);
|
|
624
|
-
const end = useCallback(() => {
|
|
625
|
-
setActive(null);
|
|
626
|
-
setOver(null);
|
|
627
|
-
}, []);
|
|
628
|
-
useEffect(() => {
|
|
629
|
-
window.addEventListener("dragend", end);
|
|
630
|
-
window.addEventListener("drop", end);
|
|
631
|
-
return () => {
|
|
632
|
-
window.removeEventListener("dragend", end);
|
|
633
|
-
window.removeEventListener("drop", end);
|
|
634
|
-
};
|
|
635
|
-
}, [end]);
|
|
636
|
-
const start = (event, item, effect) => {
|
|
637
|
-
event.dataTransfer.effectAllowed = effect;
|
|
638
|
-
event.dataTransfer.setData(item.type, JSON.stringify(item.data) ?? "null");
|
|
639
|
-
event.dataTransfer.setData("text/plain", item.labels.join(`
|
|
640
|
-
`));
|
|
641
|
-
flushSync(() => {
|
|
642
|
-
setActive(item);
|
|
643
|
-
setOver(null);
|
|
644
|
-
});
|
|
645
|
-
if (preview.current)
|
|
646
|
-
event.dataTransfer.setDragImage(preview.current, 12, 12);
|
|
647
|
-
};
|
|
648
|
-
const enter = (next) => setOver((current) => current?.id === next.id && current.type === next.type && current.isAlt === next.isAlt && current.effect === next.effect ? current : next);
|
|
649
|
-
const leave = (id) => setOver((current) => current?.id === id ? null : current);
|
|
650
|
-
return /* @__PURE__ */ jsxs4(DragDropContext, {
|
|
651
|
-
value: { active, over, start, end, enter, leave },
|
|
652
|
-
children: [
|
|
653
|
-
children,
|
|
654
|
-
/* @__PURE__ */ jsx6("div", {
|
|
655
|
-
ref: preview,
|
|
656
|
-
"aria-hidden": "true",
|
|
657
|
-
className: "pointer-events-none fixed -left-[10000px] top-0 w-max",
|
|
658
|
-
children: /* @__PURE__ */ jsx6(DragDropPreview, {
|
|
659
|
-
labels: active?.labels ?? [],
|
|
660
|
-
maxItems: maxPreviewItems
|
|
661
|
-
})
|
|
662
|
-
}),
|
|
663
|
-
/* @__PURE__ */ jsx6("span", {
|
|
664
|
-
role: "status",
|
|
665
|
-
"aria-label": "Drag status",
|
|
666
|
-
className: "sr-only",
|
|
667
|
-
children: active && `${active.labels.length} ${active.labels.length === 1 ? "item" : "items"} being dragged`
|
|
668
|
-
})
|
|
669
|
-
]
|
|
670
|
-
});
|
|
671
|
-
}
|
|
672
|
-
// src/components/DragSource.tsx
|
|
673
|
-
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
674
|
-
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
675
|
-
|
|
676
|
-
// src/hooks/useDragSource.ts
|
|
677
|
-
import { useId } from "react";
|
|
678
|
-
|
|
679
|
-
// src/hooks/useDragDrop.ts
|
|
680
|
-
import { useContext } from "react";
|
|
681
|
-
function useDragDrop() {
|
|
682
|
-
const context = useContext(DragDropContext);
|
|
683
|
-
if (!context)
|
|
684
|
-
throw new Error("Drag and drop requires DragDropProvider.");
|
|
685
|
-
return context;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
// src/hooks/useDragSource.ts
|
|
689
|
-
function useDragSource({
|
|
690
|
-
type,
|
|
691
|
-
data,
|
|
692
|
-
labels,
|
|
693
|
-
effectAllowed = "copyMove",
|
|
694
|
-
disabled = false
|
|
695
|
-
}) {
|
|
696
|
-
const { active, start, end } = useDragDrop();
|
|
697
|
-
const sourceId = useId();
|
|
698
|
-
return {
|
|
699
|
-
isDragging: active?.sourceId === sourceId,
|
|
700
|
-
props: {
|
|
701
|
-
draggable: !disabled,
|
|
702
|
-
onDragStart: (event) => {
|
|
703
|
-
if (event.defaultPrevented)
|
|
704
|
-
return;
|
|
705
|
-
event.stopPropagation();
|
|
706
|
-
if (disabled || labels.length === 0) {
|
|
707
|
-
event.preventDefault();
|
|
708
|
-
return;
|
|
709
|
-
}
|
|
710
|
-
start(event, { sourceId, type, data, labels }, effectAllowed);
|
|
711
|
-
},
|
|
712
|
-
onDragEnd: end
|
|
713
|
-
}
|
|
714
|
-
};
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
// src/components/DragSource.tsx
|
|
718
|
-
function DragSource({
|
|
719
|
-
type,
|
|
720
|
-
data,
|
|
721
|
-
labels,
|
|
722
|
-
effectAllowed,
|
|
723
|
-
disabled,
|
|
724
|
-
render,
|
|
725
|
-
...props
|
|
726
|
-
}) {
|
|
727
|
-
const source = useDragSource({ type, data, labels, effectAllowed, disabled });
|
|
728
|
-
return useRender2({
|
|
729
|
-
defaultTagName: "div",
|
|
730
|
-
render,
|
|
731
|
-
props: mergeProps2(props, source.props),
|
|
732
|
-
state: { slot: "drag-source", dragging: source.isDragging }
|
|
733
|
-
});
|
|
734
|
-
}
|
|
735
|
-
// src/components/DropTarget.tsx
|
|
736
|
-
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
737
|
-
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
738
|
-
|
|
739
|
-
// src/hooks/useDropTarget.ts
|
|
740
|
-
import { useId as useId2, useState as useState2 } from "react";
|
|
741
|
-
function useDropTarget({ accept, canDrop, getDropEffect, onDrop }) {
|
|
742
|
-
const { active, over, enter, leave, end } = useDragDrop();
|
|
743
|
-
const id = useId2();
|
|
744
|
-
const [feedback, setFeedback] = useState2(null);
|
|
745
|
-
return {
|
|
746
|
-
feedback,
|
|
747
|
-
type: over?.id === id ? over.type : null,
|
|
748
|
-
isOver: over?.id === id,
|
|
749
|
-
isAlt: over?.id === id && over.isAlt,
|
|
750
|
-
effect: over?.id === id ? over.effect : "none",
|
|
751
|
-
props: {
|
|
752
|
-
onDragOver: (event) => {
|
|
753
|
-
const type = accept.find((type) => event.dataTransfer.types.includes(type));
|
|
754
|
-
if (!type)
|
|
755
|
-
return;
|
|
756
|
-
event.stopPropagation();
|
|
757
|
-
const item = active?.type === type ? active : null;
|
|
758
|
-
const effect = item && canDrop && !canDrop(item) ? "none" : getDropEffect?.(item, event) ?? "move";
|
|
759
|
-
event.dataTransfer.dropEffect = effect;
|
|
760
|
-
if (effect === "none") {
|
|
761
|
-
leave(id);
|
|
762
|
-
return;
|
|
763
|
-
}
|
|
764
|
-
event.preventDefault();
|
|
765
|
-
setFeedback((current) => current?.type === type && current.isAlt === event.altKey && current.effect === effect ? current : { type, isAlt: event.altKey, effect });
|
|
766
|
-
enter({ id, type, isAlt: event.altKey, effect });
|
|
767
|
-
},
|
|
768
|
-
onDragLeave: (event) => {
|
|
769
|
-
if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget))
|
|
770
|
-
leave(id);
|
|
771
|
-
},
|
|
772
|
-
onDrop: (event) => {
|
|
773
|
-
const type = accept.find((type) => event.dataTransfer.types.includes(type));
|
|
774
|
-
if (!type)
|
|
775
|
-
return;
|
|
776
|
-
event.stopPropagation();
|
|
777
|
-
event.preventDefault();
|
|
778
|
-
const raw = event.dataTransfer.getData(type);
|
|
779
|
-
let data;
|
|
780
|
-
try {
|
|
781
|
-
data = JSON.parse(raw);
|
|
782
|
-
} catch {
|
|
783
|
-
data = raw;
|
|
784
|
-
}
|
|
785
|
-
const item = { type, data, labels: active?.labels ?? [] };
|
|
786
|
-
leave(id);
|
|
787
|
-
end();
|
|
788
|
-
if (!canDrop || canDrop(item))
|
|
789
|
-
onDrop(item, event);
|
|
790
|
-
}
|
|
791
|
-
}
|
|
792
|
-
};
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
// src/components/DropTarget.tsx
|
|
796
|
-
function DropTarget({
|
|
797
|
-
accept,
|
|
798
|
-
canDrop,
|
|
799
|
-
getDropEffect,
|
|
800
|
-
onDrop,
|
|
801
|
-
render,
|
|
802
|
-
...props
|
|
803
|
-
}) {
|
|
804
|
-
const target = useDropTarget({ accept, canDrop, getDropEffect, onDrop });
|
|
805
|
-
return useRender3({
|
|
806
|
-
defaultTagName: "div",
|
|
807
|
-
render,
|
|
808
|
-
props: mergeProps3(props, target.props),
|
|
809
|
-
state: { slot: "drop-target", over: target.isOver, effect: target.effect }
|
|
810
|
-
});
|
|
811
|
-
}
|
|
812
575
|
// src/components/EmptyState.tsx
|
|
813
|
-
import { jsx as
|
|
576
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
814
577
|
function EmptyState({ title, description, children }) {
|
|
815
|
-
return /* @__PURE__ */
|
|
578
|
+
return /* @__PURE__ */ jsxs3(Empty2, {
|
|
816
579
|
children: [
|
|
817
|
-
/* @__PURE__ */
|
|
580
|
+
/* @__PURE__ */ jsxs3(EmptyHeader2, {
|
|
818
581
|
children: [
|
|
819
|
-
/* @__PURE__ */
|
|
582
|
+
/* @__PURE__ */ jsx4(EmptyTitle2, {
|
|
820
583
|
children: title
|
|
821
584
|
}),
|
|
822
|
-
/* @__PURE__ */
|
|
585
|
+
/* @__PURE__ */ jsx4(EmptyDescription2, {
|
|
823
586
|
children: description
|
|
824
587
|
})
|
|
825
588
|
]
|
|
826
589
|
}),
|
|
827
|
-
children && /* @__PURE__ */
|
|
590
|
+
children && /* @__PURE__ */ jsx4(EmptyContent2, {
|
|
828
591
|
children
|
|
829
592
|
})
|
|
830
593
|
]
|
|
831
594
|
});
|
|
832
595
|
}
|
|
833
596
|
// src/components/PageMessage.tsx
|
|
834
|
-
import { useId
|
|
835
|
-
import { jsx as
|
|
597
|
+
import { useId } from "react";
|
|
598
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
836
599
|
function PageMessage({ title, description, children }) {
|
|
837
|
-
const titleId =
|
|
838
|
-
const descriptionId =
|
|
839
|
-
return /* @__PURE__ */
|
|
600
|
+
const titleId = useId();
|
|
601
|
+
const descriptionId = useId();
|
|
602
|
+
return /* @__PURE__ */ jsx5("main", {
|
|
840
603
|
"aria-labelledby": titleId,
|
|
841
604
|
"aria-describedby": description == null ? undefined : descriptionId,
|
|
842
605
|
className: "grid min-h-dvh w-full place-items-center bg-background text-foreground",
|
|
843
|
-
children: /* @__PURE__ */
|
|
606
|
+
children: /* @__PURE__ */ jsxs4(Empty2, {
|
|
844
607
|
children: [
|
|
845
|
-
/* @__PURE__ */
|
|
608
|
+
/* @__PURE__ */ jsxs4(EmptyHeader2, {
|
|
846
609
|
children: [
|
|
847
|
-
/* @__PURE__ */
|
|
848
|
-
children: /* @__PURE__ */
|
|
610
|
+
/* @__PURE__ */ jsx5(EmptyTitle2, {
|
|
611
|
+
children: /* @__PURE__ */ jsx5("h1", {
|
|
849
612
|
id: titleId,
|
|
850
613
|
children: title
|
|
851
614
|
})
|
|
852
615
|
}),
|
|
853
|
-
description != null && /* @__PURE__ */
|
|
616
|
+
description != null && /* @__PURE__ */ jsx5(EmptyDescription2, {
|
|
854
617
|
id: descriptionId,
|
|
855
618
|
children: description
|
|
856
619
|
})
|
|
857
620
|
]
|
|
858
621
|
}),
|
|
859
|
-
children != null && /* @__PURE__ */
|
|
622
|
+
children != null && /* @__PURE__ */ jsx5(EmptyContent2, {
|
|
860
623
|
children
|
|
861
624
|
})
|
|
862
625
|
]
|
|
@@ -864,9 +627,9 @@ function PageMessage({ title, description, children }) {
|
|
|
864
627
|
});
|
|
865
628
|
}
|
|
866
629
|
// src/components/JsonViewer.tsx
|
|
867
|
-
import { jsx as
|
|
630
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
868
631
|
function JsonViewer({ value, label = "JSON", rows = 12 }) {
|
|
869
|
-
return /* @__PURE__ */
|
|
632
|
+
return /* @__PURE__ */ jsx6(Textarea2, {
|
|
870
633
|
readOnly: true,
|
|
871
634
|
rows,
|
|
872
635
|
"aria-label": label,
|
|
@@ -876,31 +639,37 @@ function JsonViewer({ value, label = "JSON", rows = 12 }) {
|
|
|
876
639
|
// src/components/AlertDialog.tsx
|
|
877
640
|
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
878
641
|
import { useDirection as useDirection3 } from "@base-ui/react/direction-provider";
|
|
879
|
-
import { jsx as
|
|
642
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
880
643
|
"use client";
|
|
881
644
|
function AlertDialog({ ...props }) {
|
|
882
|
-
return /* @__PURE__ */
|
|
645
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Root, {
|
|
883
646
|
"data-slot": "alert-dialog",
|
|
884
647
|
...props
|
|
885
648
|
});
|
|
886
649
|
}
|
|
887
650
|
function AlertDialogTrigger({ ...props }) {
|
|
888
|
-
return /* @__PURE__ */
|
|
651
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Trigger, {
|
|
889
652
|
"data-slot": "alert-dialog-trigger",
|
|
890
653
|
...props
|
|
891
654
|
});
|
|
892
655
|
}
|
|
893
|
-
function AlertDialogPortal({ container, ...props }) {
|
|
656
|
+
function AlertDialogPortal({ container, ref, children, ...props }) {
|
|
894
657
|
const resolvedContainer = usePortalContainer2(container);
|
|
895
|
-
|
|
658
|
+
const portal = usePortalNode(ref);
|
|
659
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Portal, {
|
|
896
660
|
"data-slot": "alert-dialog-portal",
|
|
897
661
|
container: resolvedContainer,
|
|
898
|
-
|
|
662
|
+
ref: portal.ref,
|
|
663
|
+
...props,
|
|
664
|
+
children: /* @__PURE__ */ jsx7(PortalProvider2, {
|
|
665
|
+
container: portal.node,
|
|
666
|
+
children
|
|
667
|
+
})
|
|
899
668
|
});
|
|
900
669
|
}
|
|
901
670
|
function AlertDialogOverlay({ density, className, ...props }) {
|
|
902
671
|
const resolvedDensity = useDensity(density);
|
|
903
|
-
return /* @__PURE__ */
|
|
672
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Backdrop, {
|
|
904
673
|
"data-density": resolvedDensity,
|
|
905
674
|
"data-slot": "alert-dialog-overlay",
|
|
906
675
|
className: (state) => cn2("fixed inset-0 isolate bg-backdrop duration-120 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
@@ -910,13 +679,14 @@ function AlertDialogOverlay({ density, className, ...props }) {
|
|
|
910
679
|
function AlertDialogContent({ density, className, size = "default", ...props }) {
|
|
911
680
|
const resolvedDensity = useDensity(density);
|
|
912
681
|
const direction = useDirection3();
|
|
913
|
-
return /* @__PURE__ */
|
|
682
|
+
return /* @__PURE__ */ jsxs5(AlertDialogPortal, {
|
|
914
683
|
children: [
|
|
915
|
-
/* @__PURE__ */
|
|
916
|
-
/* @__PURE__ */
|
|
684
|
+
/* @__PURE__ */ jsx7(AlertDialogOverlay, {}),
|
|
685
|
+
/* @__PURE__ */ jsx7(AlertDialogPrimitive.Popup, {
|
|
917
686
|
dir: direction,
|
|
918
687
|
"data-density": resolvedDensity,
|
|
919
688
|
"data-slot": "alert-dialog-content",
|
|
689
|
+
"data-scroll": "none",
|
|
920
690
|
"data-size": size,
|
|
921
691
|
className: (state) => cn2("group/alert-dialog-content fixed top-1/2 left-1/2 grid w-full -translate-x-1/2 -translate-y-1/2 gap-panel rounded-md bg-popover p-panel text-popover-foreground border border-frame-edge shadow-frame duration-120 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
922
692
|
...props
|
|
@@ -925,7 +695,7 @@ function AlertDialogContent({ density, className, size = "default", ...props })
|
|
|
925
695
|
});
|
|
926
696
|
}
|
|
927
697
|
function AlertDialogHeader({ density, className, ...props }) {
|
|
928
|
-
return /* @__PURE__ */
|
|
698
|
+
return /* @__PURE__ */ jsx7("div", {
|
|
929
699
|
"data-density": density,
|
|
930
700
|
"data-slot": "alert-dialog-header",
|
|
931
701
|
className: cn2("grid grid-rows-[auto_1fr] place-items-center gap-control-gap text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
@@ -933,7 +703,7 @@ function AlertDialogHeader({ density, className, ...props }) {
|
|
|
933
703
|
});
|
|
934
704
|
}
|
|
935
705
|
function AlertDialogFooter({ density, className, ...props }) {
|
|
936
|
-
return /* @__PURE__ */
|
|
706
|
+
return /* @__PURE__ */ jsx7("div", {
|
|
937
707
|
"data-density": density,
|
|
938
708
|
"data-slot": "alert-dialog-footer",
|
|
939
709
|
className: cn2("-mx-panel -mb-panel flex flex-col-reverse gap-2 rounded-b-md border-t bg-muted/50 p-panel group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
|
|
@@ -941,7 +711,7 @@ function AlertDialogFooter({ density, className, ...props }) {
|
|
|
941
711
|
});
|
|
942
712
|
}
|
|
943
713
|
function AlertDialogMedia({ density, className, ...props }) {
|
|
944
|
-
return /* @__PURE__ */
|
|
714
|
+
return /* @__PURE__ */ jsx7("div", {
|
|
945
715
|
"data-density": density,
|
|
946
716
|
"data-slot": "alert-dialog-media",
|
|
947
717
|
className: cn2("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-control-xs", className),
|
|
@@ -949,7 +719,7 @@ function AlertDialogMedia({ density, className, ...props }) {
|
|
|
949
719
|
});
|
|
950
720
|
}
|
|
951
721
|
function AlertDialogTitle({ density, className, ...props }) {
|
|
952
|
-
return /* @__PURE__ */
|
|
722
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Title, {
|
|
953
723
|
"data-density": density,
|
|
954
724
|
"data-slot": "alert-dialog-title",
|
|
955
725
|
className: (state) => cn2("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", typeof className === "function" ? className(state) : className),
|
|
@@ -957,7 +727,7 @@ function AlertDialogTitle({ density, className, ...props }) {
|
|
|
957
727
|
});
|
|
958
728
|
}
|
|
959
729
|
function AlertDialogDescription({ density, className, ...props }) {
|
|
960
|
-
return /* @__PURE__ */
|
|
730
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Description, {
|
|
961
731
|
"data-density": density,
|
|
962
732
|
"data-slot": "alert-dialog-description",
|
|
963
733
|
className: (state) => cn2("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", typeof className === "function" ? className(state) : className),
|
|
@@ -965,7 +735,7 @@ function AlertDialogDescription({ density, className, ...props }) {
|
|
|
965
735
|
});
|
|
966
736
|
}
|
|
967
737
|
function AlertDialogAction({ density, className, ...props }) {
|
|
968
|
-
return /* @__PURE__ */
|
|
738
|
+
return /* @__PURE__ */ jsx7(Button2, {
|
|
969
739
|
"data-density": density,
|
|
970
740
|
"data-slot": "alert-dialog-action",
|
|
971
741
|
className,
|
|
@@ -979,11 +749,11 @@ function AlertDialogCancel({
|
|
|
979
749
|
size = "default",
|
|
980
750
|
...props
|
|
981
751
|
}) {
|
|
982
|
-
return /* @__PURE__ */
|
|
752
|
+
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Close, {
|
|
983
753
|
"data-density": density,
|
|
984
754
|
"data-slot": "alert-dialog-cancel",
|
|
985
755
|
className,
|
|
986
|
-
render: /* @__PURE__ */
|
|
756
|
+
render: /* @__PURE__ */ jsx7(Button2, {
|
|
987
757
|
variant,
|
|
988
758
|
size
|
|
989
759
|
}),
|
|
@@ -994,11 +764,11 @@ function AlertDialogCancel({
|
|
|
994
764
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
995
765
|
import { useDirection as useDirection4 } from "@base-ui/react/direction-provider";
|
|
996
766
|
import { ChevronDownIcon as ChevronDownIcon3, CheckIcon as CheckIcon2, ChevronUpIcon as ChevronUpIcon2 } from "lucide-react";
|
|
997
|
-
import { jsx as
|
|
767
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
998
768
|
"use client";
|
|
999
769
|
var Select = SelectPrimitive.Root;
|
|
1000
770
|
function SelectGroup({ density, className, ...props }) {
|
|
1001
|
-
return /* @__PURE__ */
|
|
771
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.Group, {
|
|
1002
772
|
"data-density": density,
|
|
1003
773
|
"data-slot": "select-group",
|
|
1004
774
|
className: (state) => cn2("scroll-my-1 p-1", typeof className === "function" ? className(state) : className),
|
|
@@ -1006,7 +776,7 @@ function SelectGroup({ density, className, ...props }) {
|
|
|
1006
776
|
});
|
|
1007
777
|
}
|
|
1008
778
|
function SelectValue({ density, className, ...props }) {
|
|
1009
|
-
return /* @__PURE__ */
|
|
779
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.Value, {
|
|
1010
780
|
"data-density": density,
|
|
1011
781
|
"data-slot": "select-value",
|
|
1012
782
|
className: (state) => cn2("flex flex-1 text-start", typeof className === "function" ? className(state) : className),
|
|
@@ -1014,7 +784,7 @@ function SelectValue({ density, className, ...props }) {
|
|
|
1014
784
|
});
|
|
1015
785
|
}
|
|
1016
786
|
function SelectTrigger({ density, className, size = "default", children, ...props }) {
|
|
1017
|
-
return /* @__PURE__ */
|
|
787
|
+
return /* @__PURE__ */ jsxs6(SelectPrimitive.Trigger, {
|
|
1018
788
|
"data-density": density,
|
|
1019
789
|
"data-slot": "select-trigger",
|
|
1020
790
|
"data-size": size,
|
|
@@ -1022,8 +792,8 @@ function SelectTrigger({ density, className, size = "default", children, ...prop
|
|
|
1022
792
|
...props,
|
|
1023
793
|
children: [
|
|
1024
794
|
children,
|
|
1025
|
-
/* @__PURE__ */
|
|
1026
|
-
render: /* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ jsx8(SelectPrimitive.Icon, {
|
|
796
|
+
render: /* @__PURE__ */ jsx8(ChevronDownIcon3, {
|
|
1027
797
|
className: "pointer-events-none size-4 text-muted-foreground"
|
|
1028
798
|
})
|
|
1029
799
|
})
|
|
@@ -1044,35 +814,40 @@ function SelectContent({
|
|
|
1044
814
|
const resolvedDensity = useDensity(density);
|
|
1045
815
|
const direction = useDirection4();
|
|
1046
816
|
const container = usePortalContainer2();
|
|
1047
|
-
|
|
817
|
+
const portal = usePortalNode();
|
|
818
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.Portal, {
|
|
1048
819
|
container,
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
"
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
820
|
+
ref: portal.ref,
|
|
821
|
+
children: /* @__PURE__ */ jsx8(PortalProvider2, {
|
|
822
|
+
container: portal.node,
|
|
823
|
+
children: /* @__PURE__ */ jsx8(SelectPrimitive.Positioner, {
|
|
824
|
+
side,
|
|
825
|
+
sideOffset,
|
|
826
|
+
align,
|
|
827
|
+
alignOffset,
|
|
828
|
+
alignItemWithTrigger,
|
|
829
|
+
className: "isolate ",
|
|
830
|
+
children: /* @__PURE__ */ jsxs6(SelectPrimitive.Popup, {
|
|
831
|
+
dir: direction,
|
|
832
|
+
"data-density": resolvedDensity,
|
|
833
|
+
"data-slot": "select-content",
|
|
834
|
+
"data-align-trigger": alignItemWithTrigger,
|
|
835
|
+
className: (state) => cn2("relative isolate max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[align-trigger=true]:animate-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none", typeof className === "function" ? className(state) : className),
|
|
836
|
+
...props,
|
|
837
|
+
children: [
|
|
838
|
+
/* @__PURE__ */ jsx8(SelectScrollUpButton, {}),
|
|
839
|
+
/* @__PURE__ */ jsx8(SelectPrimitive.List, {
|
|
840
|
+
children
|
|
841
|
+
}),
|
|
842
|
+
/* @__PURE__ */ jsx8(SelectScrollDownButton, {})
|
|
843
|
+
]
|
|
844
|
+
})
|
|
1070
845
|
})
|
|
1071
846
|
})
|
|
1072
847
|
});
|
|
1073
848
|
}
|
|
1074
849
|
function SelectLabel({ density, className, ...props }) {
|
|
1075
|
-
return /* @__PURE__ */
|
|
850
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.GroupLabel, {
|
|
1076
851
|
"data-density": density,
|
|
1077
852
|
"data-slot": "select-label",
|
|
1078
853
|
className: (state) => cn2("px-1.5 py-1 text-xs text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
@@ -1080,21 +855,21 @@ function SelectLabel({ density, className, ...props }) {
|
|
|
1080
855
|
});
|
|
1081
856
|
}
|
|
1082
857
|
function SelectItem({ density, className, children, ...props }) {
|
|
1083
|
-
return /* @__PURE__ */
|
|
858
|
+
return /* @__PURE__ */ jsxs6(SelectPrimitive.Item, {
|
|
1084
859
|
"data-density": density,
|
|
1085
860
|
"data-slot": "select-item",
|
|
1086
861
|
className: (state) => cn2("relative flex w-full cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", typeof className === "function" ? className(state) : className),
|
|
1087
862
|
...props,
|
|
1088
863
|
children: [
|
|
1089
|
-
/* @__PURE__ */
|
|
864
|
+
/* @__PURE__ */ jsx8(SelectPrimitive.ItemText, {
|
|
1090
865
|
className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
|
|
1091
866
|
children
|
|
1092
867
|
}),
|
|
1093
|
-
/* @__PURE__ */
|
|
1094
|
-
render: /* @__PURE__ */
|
|
868
|
+
/* @__PURE__ */ jsx8(SelectPrimitive.ItemIndicator, {
|
|
869
|
+
render: /* @__PURE__ */ jsx8("span", {
|
|
1095
870
|
className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
|
|
1096
871
|
}),
|
|
1097
|
-
children: /* @__PURE__ */
|
|
872
|
+
children: /* @__PURE__ */ jsx8(CheckIcon2, {
|
|
1098
873
|
className: "pointer-events-none"
|
|
1099
874
|
})
|
|
1100
875
|
})
|
|
@@ -1102,7 +877,7 @@ function SelectItem({ density, className, children, ...props }) {
|
|
|
1102
877
|
});
|
|
1103
878
|
}
|
|
1104
879
|
function SelectSeparator({ density, className, ...props }) {
|
|
1105
|
-
return /* @__PURE__ */
|
|
880
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.Separator, {
|
|
1106
881
|
"data-density": density,
|
|
1107
882
|
"data-slot": "select-separator",
|
|
1108
883
|
className: (state) => cn2("pointer-events-none -mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
@@ -1110,40 +885,40 @@ function SelectSeparator({ density, className, ...props }) {
|
|
|
1110
885
|
});
|
|
1111
886
|
}
|
|
1112
887
|
function SelectScrollUpButton({ density, className, ...props }) {
|
|
1113
|
-
return /* @__PURE__ */
|
|
888
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollUpArrow, {
|
|
1114
889
|
"data-density": density,
|
|
1115
890
|
"data-slot": "select-scroll-up-button",
|
|
1116
891
|
className: (state) => cn2("top-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
1117
892
|
...props,
|
|
1118
|
-
children: /* @__PURE__ */
|
|
893
|
+
children: /* @__PURE__ */ jsx8(ChevronUpIcon2, {})
|
|
1119
894
|
});
|
|
1120
895
|
}
|
|
1121
896
|
function SelectScrollDownButton({ density, className, ...props }) {
|
|
1122
|
-
return /* @__PURE__ */
|
|
897
|
+
return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollDownArrow, {
|
|
1123
898
|
"data-density": density,
|
|
1124
899
|
"data-slot": "select-scroll-down-button",
|
|
1125
900
|
className: (state) => cn2("bottom-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
1126
901
|
...props,
|
|
1127
|
-
children: /* @__PURE__ */
|
|
902
|
+
children: /* @__PURE__ */ jsx8(ChevronDownIcon3, {})
|
|
1128
903
|
});
|
|
1129
904
|
}
|
|
1130
905
|
// src/components/DensityProvider.tsx
|
|
1131
|
-
import { mergeProps as
|
|
1132
|
-
import { useRender as
|
|
1133
|
-
import { jsx as
|
|
906
|
+
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
907
|
+
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
908
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1134
909
|
function DensityProvider({
|
|
1135
910
|
density = "comfortable",
|
|
1136
911
|
className,
|
|
1137
912
|
render,
|
|
1138
913
|
...props
|
|
1139
914
|
}) {
|
|
1140
|
-
const element =
|
|
915
|
+
const element = useRender2({
|
|
1141
916
|
defaultTagName: "div",
|
|
1142
|
-
props:
|
|
917
|
+
props: mergeProps2({ className: cn2("font-sans text-base leading-(--ag-leading)", className) }, props),
|
|
1143
918
|
render,
|
|
1144
919
|
state: { slot: "density-provider", density }
|
|
1145
920
|
});
|
|
1146
|
-
return /* @__PURE__ */
|
|
921
|
+
return /* @__PURE__ */ jsx9(DensityContext.Provider, {
|
|
1147
922
|
value: density,
|
|
1148
923
|
children: element
|
|
1149
924
|
});
|
|
@@ -1151,7 +926,137 @@ function DensityProvider({
|
|
|
1151
926
|
// src/components/ThemeProvider.tsx
|
|
1152
927
|
import { useMemo } from "react";
|
|
1153
928
|
import { useIsomorphicLayoutEffect, useTernaryDarkMode } from "usehooks-ts";
|
|
1154
|
-
|
|
929
|
+
|
|
930
|
+
// src/components/ScrollGuard.tsx
|
|
931
|
+
import { useEffect } from "react";
|
|
932
|
+
|
|
933
|
+
// src/utils/observeScrollGuards.ts
|
|
934
|
+
function throwViolation(error) {
|
|
935
|
+
throw error;
|
|
936
|
+
}
|
|
937
|
+
function getViolation(element, view) {
|
|
938
|
+
if (!element.getClientRects().length)
|
|
939
|
+
return;
|
|
940
|
+
const style = view.getComputedStyle(element);
|
|
941
|
+
if (style.visibility !== "visible")
|
|
942
|
+
return;
|
|
943
|
+
const axes = [];
|
|
944
|
+
if (["auto", "scroll"].includes(style.overflowX) && element.scrollWidth > element.clientWidth) {
|
|
945
|
+
axes.push(`horizontal: ${element.scrollWidth}px > ${element.clientWidth}px`);
|
|
946
|
+
}
|
|
947
|
+
if (["auto", "scroll"].includes(style.overflowY) && element.scrollHeight > element.clientHeight) {
|
|
948
|
+
axes.push(`vertical: ${element.scrollHeight}px > ${element.clientHeight}px`);
|
|
949
|
+
}
|
|
950
|
+
if (!axes.length)
|
|
951
|
+
return;
|
|
952
|
+
const slot = element.getAttribute("data-slot");
|
|
953
|
+
const identity = element.id ? ` id="${element.id}"` : slot ? ` data-slot="${slot}"` : "";
|
|
954
|
+
return `<${element.localName}${identity}> (${axes.join(", ")})`;
|
|
955
|
+
}
|
|
956
|
+
function observeScrollGuards(ownerDocument, reportViolation = throwViolation) {
|
|
957
|
+
const view = ownerDocument.defaultView;
|
|
958
|
+
if (!view)
|
|
959
|
+
return () => {};
|
|
960
|
+
let frame;
|
|
961
|
+
let needsRefresh = true;
|
|
962
|
+
let guarded = [];
|
|
963
|
+
const observed = new Set;
|
|
964
|
+
const reported = new WeakSet;
|
|
965
|
+
const schedule = () => {
|
|
966
|
+
frame ??= view.requestAnimationFrame(check);
|
|
967
|
+
};
|
|
968
|
+
const resizeObserver = new view.ResizeObserver(schedule);
|
|
969
|
+
const refresh = () => {
|
|
970
|
+
guarded = [...ownerDocument.querySelectorAll('[data-scroll="none"]')];
|
|
971
|
+
const targets = new Set(guarded.flatMap((element) => [element, ...element.querySelectorAll("*")]));
|
|
972
|
+
for (const element of observed) {
|
|
973
|
+
if (!targets.has(element)) {
|
|
974
|
+
resizeObserver.unobserve(element);
|
|
975
|
+
observed.delete(element);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
for (const element of targets) {
|
|
979
|
+
if (!observed.has(element)) {
|
|
980
|
+
resizeObserver.observe(element);
|
|
981
|
+
observed.add(element);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
needsRefresh = false;
|
|
985
|
+
};
|
|
986
|
+
const check = () => {
|
|
987
|
+
frame = undefined;
|
|
988
|
+
if (needsRefresh)
|
|
989
|
+
refresh();
|
|
990
|
+
const violations = [];
|
|
991
|
+
for (const element of guarded) {
|
|
992
|
+
const violation = getViolation(element, view);
|
|
993
|
+
if (!violation) {
|
|
994
|
+
reported.delete(element);
|
|
995
|
+
} else if (!reported.has(element)) {
|
|
996
|
+
reported.add(element);
|
|
997
|
+
violations.push(violation);
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
if (violations.length) {
|
|
1001
|
+
reportViolation(new Error(`[shadcn] Scrolling is forbidden by data-scroll="none": ${violations.join("; ")}. ` + "Move scrolling content into a nested ScrollArea or another explicit scroll viewport."));
|
|
1002
|
+
}
|
|
1003
|
+
};
|
|
1004
|
+
const mutations = new view.MutationObserver((records) => {
|
|
1005
|
+
needsRefresh ||= records.some((record) => record.type === "childList" || record.attributeName === "data-scroll");
|
|
1006
|
+
schedule();
|
|
1007
|
+
});
|
|
1008
|
+
mutations.observe(ownerDocument.documentElement, {
|
|
1009
|
+
subtree: true,
|
|
1010
|
+
childList: true,
|
|
1011
|
+
characterData: true,
|
|
1012
|
+
attributes: true
|
|
1013
|
+
});
|
|
1014
|
+
view.addEventListener("resize", schedule);
|
|
1015
|
+
ownerDocument.addEventListener("load", schedule, true);
|
|
1016
|
+
ownerDocument.addEventListener("transitionend", schedule, true);
|
|
1017
|
+
ownerDocument.addEventListener("animationend", schedule, true);
|
|
1018
|
+
ownerDocument.fonts.addEventListener("loadingdone", schedule);
|
|
1019
|
+
schedule();
|
|
1020
|
+
return () => {
|
|
1021
|
+
mutations.disconnect();
|
|
1022
|
+
resizeObserver.disconnect();
|
|
1023
|
+
if (frame !== undefined)
|
|
1024
|
+
view.cancelAnimationFrame(frame);
|
|
1025
|
+
view.removeEventListener("resize", schedule);
|
|
1026
|
+
ownerDocument.removeEventListener("load", schedule, true);
|
|
1027
|
+
ownerDocument.removeEventListener("transitionend", schedule, true);
|
|
1028
|
+
ownerDocument.removeEventListener("animationend", schedule, true);
|
|
1029
|
+
ownerDocument.fonts.removeEventListener("loadingdone", schedule);
|
|
1030
|
+
};
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
// src/components/ScrollGuard.tsx
|
|
1034
|
+
"use client";
|
|
1035
|
+
var registrations = new WeakMap;
|
|
1036
|
+
function ScrollGuard({ ownerDocument }) {
|
|
1037
|
+
useEffect(() => {
|
|
1038
|
+
if (process.env.NODE_ENV === "production")
|
|
1039
|
+
return;
|
|
1040
|
+
const target = ownerDocument ?? document;
|
|
1041
|
+
let registration = registrations.get(target);
|
|
1042
|
+
if (!registration) {
|
|
1043
|
+
registration = { users: 0, disconnect: observeScrollGuards(target) };
|
|
1044
|
+
registrations.set(target, registration);
|
|
1045
|
+
}
|
|
1046
|
+
registration.users++;
|
|
1047
|
+
return () => {
|
|
1048
|
+
registration.users--;
|
|
1049
|
+
if (!registration.users) {
|
|
1050
|
+
registration.disconnect();
|
|
1051
|
+
registrations.delete(target);
|
|
1052
|
+
}
|
|
1053
|
+
};
|
|
1054
|
+
}, [ownerDocument]);
|
|
1055
|
+
return null;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
// src/components/ThemeProvider.tsx
|
|
1059
|
+
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1155
1060
|
function StoredThemeProvider({
|
|
1156
1061
|
children,
|
|
1157
1062
|
defaultTheme = "system",
|
|
@@ -1162,7 +1067,7 @@ function StoredThemeProvider({
|
|
|
1162
1067
|
defaultValue: defaultTheme,
|
|
1163
1068
|
localStorageKey: storageKey
|
|
1164
1069
|
});
|
|
1165
|
-
return /* @__PURE__ */
|
|
1070
|
+
return /* @__PURE__ */ jsx10(ThemePalette, {
|
|
1166
1071
|
theme: forcedTheme ?? ternaryDarkMode,
|
|
1167
1072
|
resolvedTheme: forcedTheme ?? (isDarkMode ? "dark" : "light"),
|
|
1168
1073
|
setTheme: setTernaryDarkMode,
|
|
@@ -1180,9 +1085,12 @@ function ThemePalette({
|
|
|
1180
1085
|
document.documentElement.style.colorScheme = resolvedTheme;
|
|
1181
1086
|
}, [resolvedTheme]);
|
|
1182
1087
|
const value = useMemo(() => ({ theme, resolvedTheme, setTheme }), [theme, resolvedTheme, setTheme]);
|
|
1183
|
-
return /* @__PURE__ */
|
|
1088
|
+
return /* @__PURE__ */ jsxs7(ThemeContext.Provider, {
|
|
1184
1089
|
value,
|
|
1185
|
-
children
|
|
1090
|
+
children: [
|
|
1091
|
+
/* @__PURE__ */ jsx10(ScrollGuard, {}),
|
|
1092
|
+
children
|
|
1093
|
+
]
|
|
1186
1094
|
});
|
|
1187
1095
|
}
|
|
1188
1096
|
function ControlledThemeProvider({
|
|
@@ -1193,7 +1101,7 @@ function ControlledThemeProvider({
|
|
|
1193
1101
|
const isDark = useMediaQuery("(prefers-color-scheme: dark)");
|
|
1194
1102
|
const { theme, setTheme } = controlledTheme;
|
|
1195
1103
|
const resolvedTheme = forcedTheme ?? (theme === "system" ? isDark ? "dark" : "light" : theme);
|
|
1196
|
-
return /* @__PURE__ */
|
|
1104
|
+
return /* @__PURE__ */ jsx10(ThemePalette, {
|
|
1197
1105
|
theme: forcedTheme ?? theme,
|
|
1198
1106
|
resolvedTheme,
|
|
1199
1107
|
setTheme,
|
|
@@ -1202,23 +1110,23 @@ function ControlledThemeProvider({
|
|
|
1202
1110
|
}
|
|
1203
1111
|
function ThemeProvider(props) {
|
|
1204
1112
|
if (props.controlledTheme)
|
|
1205
|
-
return /* @__PURE__ */
|
|
1113
|
+
return /* @__PURE__ */ jsx10(ControlledThemeProvider, {
|
|
1206
1114
|
...props,
|
|
1207
1115
|
controlledTheme: props.controlledTheme
|
|
1208
1116
|
});
|
|
1209
|
-
return /* @__PURE__ */
|
|
1117
|
+
return /* @__PURE__ */ jsx10(StoredThemeProvider, {
|
|
1210
1118
|
...props
|
|
1211
1119
|
});
|
|
1212
1120
|
}
|
|
1213
1121
|
// src/hooks/useComboboxAnchor.ts
|
|
1214
|
-
import { useRef
|
|
1122
|
+
import { useRef } from "react";
|
|
1215
1123
|
function useComboboxAnchor() {
|
|
1216
|
-
return
|
|
1124
|
+
return useRef(null);
|
|
1217
1125
|
}
|
|
1218
1126
|
// src/components/AspectRatio.tsx
|
|
1219
|
-
import { jsx as
|
|
1127
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1220
1128
|
function AspectRatio({ ratio, className, style, ...props }) {
|
|
1221
|
-
return /* @__PURE__ */
|
|
1129
|
+
return /* @__PURE__ */ jsx11("div", {
|
|
1222
1130
|
"data-slot": "aspect-ratio",
|
|
1223
1131
|
className: cn2("relative", className),
|
|
1224
1132
|
style: { aspectRatio: ratio, ...style },
|
|
@@ -1227,11 +1135,11 @@ function AspectRatio({ ratio, className, style, ...props }) {
|
|
|
1227
1135
|
}
|
|
1228
1136
|
// src/components/Breadcrumb.tsx
|
|
1229
1137
|
import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
|
|
1230
|
-
import { mergeProps as
|
|
1231
|
-
import { useRender as
|
|
1232
|
-
import { jsx as
|
|
1138
|
+
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1139
|
+
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1140
|
+
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1233
1141
|
function Breadcrumb({ density, className, ...props }) {
|
|
1234
|
-
return /* @__PURE__ */
|
|
1142
|
+
return /* @__PURE__ */ jsx12("nav", {
|
|
1235
1143
|
"aria-label": "breadcrumb",
|
|
1236
1144
|
"data-density": density,
|
|
1237
1145
|
"data-slot": "breadcrumb",
|
|
@@ -1240,7 +1148,7 @@ function Breadcrumb({ density, className, ...props }) {
|
|
|
1240
1148
|
});
|
|
1241
1149
|
}
|
|
1242
1150
|
function BreadcrumbList({ density, className, ...props }) {
|
|
1243
|
-
return /* @__PURE__ */
|
|
1151
|
+
return /* @__PURE__ */ jsx12("ol", {
|
|
1244
1152
|
"data-density": density,
|
|
1245
1153
|
"data-slot": "breadcrumb-list",
|
|
1246
1154
|
className: cn2("flex flex-wrap items-center gap-control-gap text-sm wrap-break-word text-muted-foreground", className),
|
|
@@ -1248,7 +1156,7 @@ function BreadcrumbList({ density, className, ...props }) {
|
|
|
1248
1156
|
});
|
|
1249
1157
|
}
|
|
1250
1158
|
function BreadcrumbItem({ density, className, ...props }) {
|
|
1251
|
-
return /* @__PURE__ */
|
|
1159
|
+
return /* @__PURE__ */ jsx12("li", {
|
|
1252
1160
|
"data-density": density,
|
|
1253
1161
|
"data-slot": "breadcrumb-item",
|
|
1254
1162
|
className: cn2("inline-flex items-center gap-1", className),
|
|
@@ -1256,9 +1164,9 @@ function BreadcrumbItem({ density, className, ...props }) {
|
|
|
1256
1164
|
});
|
|
1257
1165
|
}
|
|
1258
1166
|
function BreadcrumbLink({ density, className, render, ...props }) {
|
|
1259
|
-
return
|
|
1167
|
+
return useRender3({
|
|
1260
1168
|
defaultTagName: "a",
|
|
1261
|
-
props:
|
|
1169
|
+
props: mergeProps3({
|
|
1262
1170
|
className: cn2("transition-colors hover:text-foreground", className)
|
|
1263
1171
|
}, props),
|
|
1264
1172
|
render,
|
|
@@ -1269,7 +1177,7 @@ function BreadcrumbLink({ density, className, render, ...props }) {
|
|
|
1269
1177
|
});
|
|
1270
1178
|
}
|
|
1271
1179
|
function BreadcrumbPage({ density, className, ...props }) {
|
|
1272
|
-
return /* @__PURE__ */
|
|
1180
|
+
return /* @__PURE__ */ jsx12("span", {
|
|
1273
1181
|
"data-density": density,
|
|
1274
1182
|
"data-slot": "breadcrumb-page",
|
|
1275
1183
|
role: "link",
|
|
@@ -1280,20 +1188,20 @@ function BreadcrumbPage({ density, className, ...props }) {
|
|
|
1280
1188
|
});
|
|
1281
1189
|
}
|
|
1282
1190
|
function BreadcrumbSeparator({ density, children, className, ...props }) {
|
|
1283
|
-
return /* @__PURE__ */
|
|
1191
|
+
return /* @__PURE__ */ jsx12("li", {
|
|
1284
1192
|
"data-density": density,
|
|
1285
1193
|
"data-slot": "breadcrumb-separator",
|
|
1286
1194
|
role: "presentation",
|
|
1287
1195
|
"aria-hidden": "true",
|
|
1288
1196
|
className: cn2("[&>svg]:size-3.5", className),
|
|
1289
1197
|
...props,
|
|
1290
|
-
children: children ?? /* @__PURE__ */
|
|
1198
|
+
children: children ?? /* @__PURE__ */ jsx12(ChevronRightIcon, {
|
|
1291
1199
|
className: "rtl:rotate-180"
|
|
1292
1200
|
})
|
|
1293
1201
|
});
|
|
1294
1202
|
}
|
|
1295
1203
|
function BreadcrumbEllipsis({ density, className, ...props }) {
|
|
1296
|
-
return /* @__PURE__ */
|
|
1204
|
+
return /* @__PURE__ */ jsxs8("span", {
|
|
1297
1205
|
"data-density": density,
|
|
1298
1206
|
"data-slot": "breadcrumb-ellipsis",
|
|
1299
1207
|
role: "presentation",
|
|
@@ -1301,8 +1209,8 @@ function BreadcrumbEllipsis({ density, className, ...props }) {
|
|
|
1301
1209
|
className: cn2("flex size-5 items-center justify-center [&>svg]:size-4", className),
|
|
1302
1210
|
...props,
|
|
1303
1211
|
children: [
|
|
1304
|
-
/* @__PURE__ */
|
|
1305
|
-
/* @__PURE__ */
|
|
1212
|
+
/* @__PURE__ */ jsx12(MoreHorizontalIcon, {}),
|
|
1213
|
+
/* @__PURE__ */ jsx12("span", {
|
|
1306
1214
|
className: "sr-only",
|
|
1307
1215
|
children: "More"
|
|
1308
1216
|
})
|
|
@@ -1310,11 +1218,11 @@ function BreadcrumbEllipsis({ density, className, ...props }) {
|
|
|
1310
1218
|
});
|
|
1311
1219
|
}
|
|
1312
1220
|
// src/components/ButtonGroup.tsx
|
|
1313
|
-
import { mergeProps as
|
|
1314
|
-
import { useRender as
|
|
1315
|
-
import { cva
|
|
1316
|
-
import { jsx as
|
|
1317
|
-
var buttonGroupVariants =
|
|
1221
|
+
import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
|
|
1222
|
+
import { useRender as useRender4 } from "@base-ui/react/use-render";
|
|
1223
|
+
import { cva } from "class-variance-authority";
|
|
1224
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
1225
|
+
var buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
1318
1226
|
variants: {
|
|
1319
1227
|
orientation: {
|
|
1320
1228
|
horizontal: "*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-sm! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0",
|
|
@@ -1326,7 +1234,7 @@ var buttonGroupVariants = cva2("flex w-fit items-stretch *:focus-visible:relativ
|
|
|
1326
1234
|
}
|
|
1327
1235
|
});
|
|
1328
1236
|
function ButtonGroup({ density, className, orientation, ...props }) {
|
|
1329
|
-
return /* @__PURE__ */
|
|
1237
|
+
return /* @__PURE__ */ jsx13("div", {
|
|
1330
1238
|
role: "group",
|
|
1331
1239
|
"data-density": density,
|
|
1332
1240
|
"data-slot": "button-group",
|
|
@@ -1336,9 +1244,9 @@ function ButtonGroup({ density, className, orientation, ...props }) {
|
|
|
1336
1244
|
});
|
|
1337
1245
|
}
|
|
1338
1246
|
function ButtonGroupText({ density, className, render, ...props }) {
|
|
1339
|
-
return
|
|
1247
|
+
return useRender4({
|
|
1340
1248
|
defaultTagName: "div",
|
|
1341
|
-
props:
|
|
1249
|
+
props: mergeProps4({
|
|
1342
1250
|
className: cn2("flex items-center gap-2 rounded-sm border bg-muted px-control-x text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className)
|
|
1343
1251
|
}, props),
|
|
1344
1252
|
render,
|
|
@@ -1354,7 +1262,7 @@ function ButtonGroupSeparator({
|
|
|
1354
1262
|
orientation = "vertical",
|
|
1355
1263
|
...props
|
|
1356
1264
|
}) {
|
|
1357
|
-
return /* @__PURE__ */
|
|
1265
|
+
return /* @__PURE__ */ jsx13(Separator2, {
|
|
1358
1266
|
"data-density": density,
|
|
1359
1267
|
"data-slot": "button-group-separator",
|
|
1360
1268
|
orientation,
|
|
@@ -1362,61 +1270,13 @@ function ButtonGroupSeparator({
|
|
|
1362
1270
|
...props
|
|
1363
1271
|
});
|
|
1364
1272
|
}
|
|
1365
|
-
// src/components/NativeSelect.tsx
|
|
1366
|
-
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
1367
|
-
import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1368
|
-
function NativeSelect({
|
|
1369
|
-
density,
|
|
1370
|
-
className,
|
|
1371
|
-
dir,
|
|
1372
|
-
size = "default",
|
|
1373
|
-
...props
|
|
1374
|
-
}) {
|
|
1375
|
-
return /* @__PURE__ */ jsxs10("div", {
|
|
1376
|
-
dir,
|
|
1377
|
-
className: cn2("group/native-select relative w-fit has-[select:disabled]:opacity-50", className),
|
|
1378
|
-
"data-density": density,
|
|
1379
|
-
"data-slot": "native-select-wrapper",
|
|
1380
|
-
"data-size": size,
|
|
1381
|
-
children: [
|
|
1382
|
-
/* @__PURE__ */ jsx17("select", {
|
|
1383
|
-
dir,
|
|
1384
|
-
"data-slot": "native-select",
|
|
1385
|
-
"data-size": size,
|
|
1386
|
-
className: "h-control w-full min-w-0 appearance-none rounded-sm border border-input bg-secondary py-1 pe-8 ps-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive data-[size=sm]:h-control-sm data-[size=sm]:rounded-sm data-[size=sm]:py-0.5",
|
|
1387
|
-
...props
|
|
1388
|
-
}),
|
|
1389
|
-
/* @__PURE__ */ jsx17(ChevronDownIcon4, {
|
|
1390
|
-
className: "pointer-events-none absolute top-1/2 end-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none",
|
|
1391
|
-
"aria-hidden": "true",
|
|
1392
|
-
"data-slot": "native-select-icon"
|
|
1393
|
-
})
|
|
1394
|
-
]
|
|
1395
|
-
});
|
|
1396
|
-
}
|
|
1397
|
-
function NativeSelectOption({ density, className, ...props }) {
|
|
1398
|
-
return /* @__PURE__ */ jsx17("option", {
|
|
1399
|
-
"data-density": density,
|
|
1400
|
-
"data-slot": "native-select-option",
|
|
1401
|
-
className: cn2("bg-[Canvas] text-[CanvasText]", className),
|
|
1402
|
-
...props
|
|
1403
|
-
});
|
|
1404
|
-
}
|
|
1405
|
-
function NativeSelectOptGroup({ density, className, ...props }) {
|
|
1406
|
-
return /* @__PURE__ */ jsx17("optgroup", {
|
|
1407
|
-
"data-density": density,
|
|
1408
|
-
"data-slot": "native-select-optgroup",
|
|
1409
|
-
className: cn2("bg-[Canvas] text-[CanvasText]", className),
|
|
1410
|
-
...props
|
|
1411
|
-
});
|
|
1412
|
-
}
|
|
1413
1273
|
// src/components/Item.tsx
|
|
1414
|
-
import { mergeProps as
|
|
1415
|
-
import { useRender as
|
|
1416
|
-
import { cva as
|
|
1417
|
-
import { jsx as
|
|
1274
|
+
import { mergeProps as mergeProps5 } from "@base-ui/react/merge-props";
|
|
1275
|
+
import { useRender as useRender5 } from "@base-ui/react/use-render";
|
|
1276
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
1277
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1418
1278
|
function ItemGroup({ density, className, ...props }) {
|
|
1419
|
-
return /* @__PURE__ */
|
|
1279
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1420
1280
|
role: "list",
|
|
1421
1281
|
"data-density": density,
|
|
1422
1282
|
"data-slot": "item-group",
|
|
@@ -1425,7 +1285,7 @@ function ItemGroup({ density, className, ...props }) {
|
|
|
1425
1285
|
});
|
|
1426
1286
|
}
|
|
1427
1287
|
function ItemSeparator({ density, className, ...props }) {
|
|
1428
|
-
return /* @__PURE__ */
|
|
1288
|
+
return /* @__PURE__ */ jsx14(Separator2, {
|
|
1429
1289
|
"data-density": density,
|
|
1430
1290
|
"data-slot": "item-separator",
|
|
1431
1291
|
orientation: "horizontal",
|
|
@@ -1433,7 +1293,7 @@ function ItemSeparator({ density, className, ...props }) {
|
|
|
1433
1293
|
...props
|
|
1434
1294
|
});
|
|
1435
1295
|
}
|
|
1436
|
-
var itemVariants =
|
|
1296
|
+
var itemVariants = cva2("group/item flex w-full flex-wrap items-center rounded-sm border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring [a]:transition-colors [a]:hover:bg-muted", {
|
|
1437
1297
|
variants: {
|
|
1438
1298
|
variant: {
|
|
1439
1299
|
default: "border-transparent",
|
|
@@ -1459,9 +1319,9 @@ function Item({
|
|
|
1459
1319
|
render,
|
|
1460
1320
|
...props
|
|
1461
1321
|
}) {
|
|
1462
|
-
return
|
|
1322
|
+
return useRender5({
|
|
1463
1323
|
defaultTagName: "div",
|
|
1464
|
-
props:
|
|
1324
|
+
props: mergeProps5({
|
|
1465
1325
|
className: cn2(itemVariants({ variant, size, className }))
|
|
1466
1326
|
}, props),
|
|
1467
1327
|
render,
|
|
@@ -1473,7 +1333,7 @@ function Item({
|
|
|
1473
1333
|
}
|
|
1474
1334
|
});
|
|
1475
1335
|
}
|
|
1476
|
-
var itemMediaVariants =
|
|
1336
|
+
var itemMediaVariants = cva2("flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none", {
|
|
1477
1337
|
variants: {
|
|
1478
1338
|
variant: {
|
|
1479
1339
|
default: "bg-transparent",
|
|
@@ -1486,7 +1346,7 @@ var itemMediaVariants = cva3("flex shrink-0 items-center justify-center gap-2 gr
|
|
|
1486
1346
|
}
|
|
1487
1347
|
});
|
|
1488
1348
|
function ItemMedia({ density, className, variant = "default", ...props }) {
|
|
1489
|
-
return /* @__PURE__ */
|
|
1349
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1490
1350
|
"data-density": density,
|
|
1491
1351
|
"data-slot": "item-media",
|
|
1492
1352
|
"data-variant": variant,
|
|
@@ -1495,7 +1355,7 @@ function ItemMedia({ density, className, variant = "default", ...props }) {
|
|
|
1495
1355
|
});
|
|
1496
1356
|
}
|
|
1497
1357
|
function ItemContent({ density, className, ...props }) {
|
|
1498
|
-
return /* @__PURE__ */
|
|
1358
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1499
1359
|
"data-density": density,
|
|
1500
1360
|
"data-slot": "item-content",
|
|
1501
1361
|
className: cn2("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none", className),
|
|
@@ -1503,7 +1363,7 @@ function ItemContent({ density, className, ...props }) {
|
|
|
1503
1363
|
});
|
|
1504
1364
|
}
|
|
1505
1365
|
function ItemTitle({ density, className, ...props }) {
|
|
1506
|
-
return /* @__PURE__ */
|
|
1366
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1507
1367
|
"data-density": density,
|
|
1508
1368
|
"data-slot": "item-title",
|
|
1509
1369
|
className: cn2("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", className),
|
|
@@ -1511,7 +1371,7 @@ function ItemTitle({ density, className, ...props }) {
|
|
|
1511
1371
|
});
|
|
1512
1372
|
}
|
|
1513
1373
|
function ItemDescription({ density, className, ...props }) {
|
|
1514
|
-
return /* @__PURE__ */
|
|
1374
|
+
return /* @__PURE__ */ jsx14("p", {
|
|
1515
1375
|
"data-density": density,
|
|
1516
1376
|
"data-slot": "item-description",
|
|
1517
1377
|
className: cn2("line-clamp-2 text-start text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
@@ -1519,7 +1379,7 @@ function ItemDescription({ density, className, ...props }) {
|
|
|
1519
1379
|
});
|
|
1520
1380
|
}
|
|
1521
1381
|
function ItemActions({ density, className, ...props }) {
|
|
1522
|
-
return /* @__PURE__ */
|
|
1382
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1523
1383
|
"data-density": density,
|
|
1524
1384
|
"data-slot": "item-actions",
|
|
1525
1385
|
className: cn2("flex items-center gap-2", className),
|
|
@@ -1527,7 +1387,7 @@ function ItemActions({ density, className, ...props }) {
|
|
|
1527
1387
|
});
|
|
1528
1388
|
}
|
|
1529
1389
|
function ItemHeader({ density, className, ...props }) {
|
|
1530
|
-
return /* @__PURE__ */
|
|
1390
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1531
1391
|
"data-density": density,
|
|
1532
1392
|
"data-slot": "item-header",
|
|
1533
1393
|
className: cn2("flex basis-full items-center justify-between gap-2", className),
|
|
@@ -1535,7 +1395,7 @@ function ItemHeader({ density, className, ...props }) {
|
|
|
1535
1395
|
});
|
|
1536
1396
|
}
|
|
1537
1397
|
function ItemFooter({ density, className, ...props }) {
|
|
1538
|
-
return /* @__PURE__ */
|
|
1398
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
1539
1399
|
"data-density": density,
|
|
1540
1400
|
"data-slot": "item-footer",
|
|
1541
1401
|
className: cn2("flex basis-full items-center justify-between gap-2", className),
|
|
@@ -1544,9 +1404,9 @@ function ItemFooter({ density, className, ...props }) {
|
|
|
1544
1404
|
}
|
|
1545
1405
|
// src/components/Pagination.tsx
|
|
1546
1406
|
import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2, MoreHorizontalIcon as MoreHorizontalIcon2 } from "lucide-react";
|
|
1547
|
-
import { jsx as
|
|
1407
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1548
1408
|
function Pagination({ density, className, ...props }) {
|
|
1549
|
-
return /* @__PURE__ */
|
|
1409
|
+
return /* @__PURE__ */ jsx15("nav", {
|
|
1550
1410
|
role: "navigation",
|
|
1551
1411
|
"aria-label": "pagination",
|
|
1552
1412
|
"data-density": density,
|
|
@@ -1556,7 +1416,7 @@ function Pagination({ density, className, ...props }) {
|
|
|
1556
1416
|
});
|
|
1557
1417
|
}
|
|
1558
1418
|
function PaginationContent({ density, className, ...props }) {
|
|
1559
|
-
return /* @__PURE__ */
|
|
1419
|
+
return /* @__PURE__ */ jsx15("ul", {
|
|
1560
1420
|
"data-density": density,
|
|
1561
1421
|
"data-slot": "pagination-content",
|
|
1562
1422
|
className: cn2("flex items-center gap-0.5", className),
|
|
@@ -1564,7 +1424,7 @@ function PaginationContent({ density, className, ...props }) {
|
|
|
1564
1424
|
});
|
|
1565
1425
|
}
|
|
1566
1426
|
function PaginationItem({ ...props }) {
|
|
1567
|
-
return /* @__PURE__ */
|
|
1427
|
+
return /* @__PURE__ */ jsx15("li", {
|
|
1568
1428
|
"data-slot": "pagination-item",
|
|
1569
1429
|
...props
|
|
1570
1430
|
});
|
|
@@ -1576,7 +1436,7 @@ function PaginationLink({
|
|
|
1576
1436
|
size = "icon",
|
|
1577
1437
|
...props
|
|
1578
1438
|
}) {
|
|
1579
|
-
return /* @__PURE__ */
|
|
1439
|
+
return /* @__PURE__ */ jsx15("a", {
|
|
1580
1440
|
"data-density": density,
|
|
1581
1441
|
className: cn2(buttonVariants2({ variant: isActive ? "outline" : "ghost", size }), className),
|
|
1582
1442
|
"aria-current": isActive ? "page" : undefined,
|
|
@@ -1591,18 +1451,18 @@ function PaginationPrevious({
|
|
|
1591
1451
|
text = "Previous",
|
|
1592
1452
|
...props
|
|
1593
1453
|
}) {
|
|
1594
|
-
return /* @__PURE__ */
|
|
1454
|
+
return /* @__PURE__ */ jsxs9(PaginationLink, {
|
|
1595
1455
|
density,
|
|
1596
1456
|
"aria-label": "Go to previous page",
|
|
1597
1457
|
size: "default",
|
|
1598
1458
|
className: cn2("ps-1.5!", className),
|
|
1599
1459
|
...props,
|
|
1600
1460
|
children: [
|
|
1601
|
-
/* @__PURE__ */
|
|
1461
|
+
/* @__PURE__ */ jsx15(ChevronLeftIcon, {
|
|
1602
1462
|
"data-icon": "inline-start",
|
|
1603
1463
|
className: "rtl:rotate-180"
|
|
1604
1464
|
}),
|
|
1605
|
-
/* @__PURE__ */
|
|
1465
|
+
/* @__PURE__ */ jsx15("span", {
|
|
1606
1466
|
className: "hidden sm:block",
|
|
1607
1467
|
children: text
|
|
1608
1468
|
})
|
|
@@ -1610,18 +1470,18 @@ function PaginationPrevious({
|
|
|
1610
1470
|
});
|
|
1611
1471
|
}
|
|
1612
1472
|
function PaginationNext({ density, className, text = "Next", ...props }) {
|
|
1613
|
-
return /* @__PURE__ */
|
|
1473
|
+
return /* @__PURE__ */ jsxs9(PaginationLink, {
|
|
1614
1474
|
density,
|
|
1615
1475
|
"aria-label": "Go to next page",
|
|
1616
1476
|
size: "default",
|
|
1617
1477
|
className: cn2("pe-1.5!", className),
|
|
1618
1478
|
...props,
|
|
1619
1479
|
children: [
|
|
1620
|
-
/* @__PURE__ */
|
|
1480
|
+
/* @__PURE__ */ jsx15("span", {
|
|
1621
1481
|
className: "hidden sm:block",
|
|
1622
1482
|
children: text
|
|
1623
1483
|
}),
|
|
1624
|
-
/* @__PURE__ */
|
|
1484
|
+
/* @__PURE__ */ jsx15(ChevronRightIcon2, {
|
|
1625
1485
|
"data-icon": "inline-end",
|
|
1626
1486
|
className: "rtl:rotate-180"
|
|
1627
1487
|
})
|
|
@@ -1629,15 +1489,15 @@ function PaginationNext({ density, className, text = "Next", ...props }) {
|
|
|
1629
1489
|
});
|
|
1630
1490
|
}
|
|
1631
1491
|
function PaginationEllipsis({ density, className, ...props }) {
|
|
1632
|
-
return /* @__PURE__ */
|
|
1492
|
+
return /* @__PURE__ */ jsxs9("span", {
|
|
1633
1493
|
"aria-hidden": true,
|
|
1634
1494
|
"data-density": density,
|
|
1635
1495
|
"data-slot": "pagination-ellipsis",
|
|
1636
1496
|
className: cn2("flex size-control items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
|
|
1637
1497
|
...props,
|
|
1638
1498
|
children: [
|
|
1639
|
-
/* @__PURE__ */
|
|
1640
|
-
/* @__PURE__ */
|
|
1499
|
+
/* @__PURE__ */ jsx15(MoreHorizontalIcon2, {}),
|
|
1500
|
+
/* @__PURE__ */ jsx15("span", {
|
|
1641
1501
|
className: "sr-only",
|
|
1642
1502
|
children: "More pages"
|
|
1643
1503
|
})
|
|
@@ -1646,39 +1506,39 @@ function PaginationEllipsis({ density, className, ...props }) {
|
|
|
1646
1506
|
}
|
|
1647
1507
|
// src/components/ScrollArea.tsx
|
|
1648
1508
|
import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
|
|
1649
|
-
import { jsx as
|
|
1509
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1650
1510
|
function ScrollArea({
|
|
1651
1511
|
density,
|
|
1652
1512
|
className,
|
|
1653
1513
|
children,
|
|
1654
|
-
scrollbars = /* @__PURE__ */
|
|
1514
|
+
scrollbars = /* @__PURE__ */ jsx16(ScrollBar, {}),
|
|
1655
1515
|
...props
|
|
1656
1516
|
}) {
|
|
1657
|
-
return /* @__PURE__ */
|
|
1517
|
+
return /* @__PURE__ */ jsxs10(ScrollAreaPrimitive.Root, {
|
|
1658
1518
|
"data-density": density,
|
|
1659
1519
|
"data-slot": "scroll-area",
|
|
1660
|
-
className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
|
|
1520
|
+
className: (state) => cn2("relative flex min-h-0 flex-col", typeof className === "function" ? className(state) : className),
|
|
1661
1521
|
...props,
|
|
1662
1522
|
children: [
|
|
1663
|
-
/* @__PURE__ */
|
|
1523
|
+
/* @__PURE__ */ jsx16(ScrollAreaPrimitive.Viewport, {
|
|
1664
1524
|
"data-slot": "scroll-area-viewport",
|
|
1665
|
-
className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1",
|
|
1525
|
+
className: "size-full min-h-0 flex-1 rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1",
|
|
1666
1526
|
children
|
|
1667
1527
|
}),
|
|
1668
1528
|
scrollbars,
|
|
1669
|
-
/* @__PURE__ */
|
|
1529
|
+
/* @__PURE__ */ jsx16(ScrollAreaPrimitive.Corner, {})
|
|
1670
1530
|
]
|
|
1671
1531
|
});
|
|
1672
1532
|
}
|
|
1673
1533
|
function ScrollBar({ density, className, orientation = "vertical", ...props }) {
|
|
1674
|
-
return /* @__PURE__ */
|
|
1534
|
+
return /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Scrollbar, {
|
|
1675
1535
|
"data-density": density,
|
|
1676
1536
|
"data-slot": "scroll-area-scrollbar",
|
|
1677
1537
|
"data-orientation": orientation,
|
|
1678
1538
|
orientation,
|
|
1679
1539
|
className: (state) => cn2("flex touch-none p-px transition-colors select-none data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-s data-[orientation=vertical]:border-s-transparent", typeof className === "function" ? className(state) : className),
|
|
1680
1540
|
...props,
|
|
1681
|
-
children: /* @__PURE__ */
|
|
1541
|
+
children: /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Thumb, {
|
|
1682
1542
|
"data-slot": "scroll-area-thumb",
|
|
1683
1543
|
className: "relative flex-1 rounded-full bg-border"
|
|
1684
1544
|
})
|
|
@@ -1688,13 +1548,13 @@ function ScrollBar({ density, className, orientation = "vertical", ...props }) {
|
|
|
1688
1548
|
import { useMemo as useMemo2 } from "react";
|
|
1689
1549
|
|
|
1690
1550
|
// src/drawer/DrawerContext.ts
|
|
1691
|
-
import { createContext
|
|
1692
|
-
var DrawerContext =
|
|
1551
|
+
import { createContext } from "react";
|
|
1552
|
+
var DrawerContext = createContext(null);
|
|
1693
1553
|
|
|
1694
1554
|
// src/hooks/useDrawer.ts
|
|
1695
|
-
import { useContext
|
|
1555
|
+
import { useContext } from "react";
|
|
1696
1556
|
function useDrawer() {
|
|
1697
|
-
const context =
|
|
1557
|
+
const context = useContext(DrawerContext);
|
|
1698
1558
|
if (!context) {
|
|
1699
1559
|
throw new Error("useDrawer must be used within a Drawer.");
|
|
1700
1560
|
}
|
|
@@ -1703,7 +1563,7 @@ function useDrawer() {
|
|
|
1703
1563
|
|
|
1704
1564
|
// src/components/Drawer.tsx
|
|
1705
1565
|
import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
|
|
1706
|
-
import { jsx as
|
|
1566
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1707
1567
|
function Drawer({
|
|
1708
1568
|
modal = true,
|
|
1709
1569
|
showSwipeHandle = false,
|
|
@@ -1713,9 +1573,9 @@ function Drawer({
|
|
|
1713
1573
|
}) {
|
|
1714
1574
|
const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
|
|
1715
1575
|
const contextValue = useMemo2(() => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }), [hasSnapPoints, modal, showSwipeHandle, swipeDirection]);
|
|
1716
|
-
return /* @__PURE__ */
|
|
1576
|
+
return /* @__PURE__ */ jsx17(DrawerContext.Provider, {
|
|
1717
1577
|
value: contextValue,
|
|
1718
|
-
children: /* @__PURE__ */
|
|
1578
|
+
children: /* @__PURE__ */ jsx17(DrawerPrimitive.Root, {
|
|
1719
1579
|
"data-slot": "drawer",
|
|
1720
1580
|
modal,
|
|
1721
1581
|
snapPoints,
|
|
@@ -1725,28 +1585,34 @@ function Drawer({
|
|
|
1725
1585
|
});
|
|
1726
1586
|
}
|
|
1727
1587
|
function DrawerTrigger({ ...props }) {
|
|
1728
|
-
return /* @__PURE__ */
|
|
1588
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Trigger, {
|
|
1729
1589
|
"data-slot": "drawer-trigger",
|
|
1730
1590
|
...props
|
|
1731
1591
|
});
|
|
1732
1592
|
}
|
|
1733
|
-
function DrawerPortal({ container, ...props }) {
|
|
1593
|
+
function DrawerPortal({ container, ref, children, ...props }) {
|
|
1734
1594
|
const resolvedContainer = usePortalContainer2(container);
|
|
1735
|
-
|
|
1595
|
+
const portal = usePortalNode(ref);
|
|
1596
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Portal, {
|
|
1736
1597
|
"data-slot": "drawer-portal",
|
|
1737
1598
|
container: resolvedContainer,
|
|
1738
|
-
|
|
1599
|
+
ref: portal.ref,
|
|
1600
|
+
...props,
|
|
1601
|
+
children: /* @__PURE__ */ jsx17(PortalProvider2, {
|
|
1602
|
+
container: portal.node,
|
|
1603
|
+
children
|
|
1604
|
+
})
|
|
1739
1605
|
});
|
|
1740
1606
|
}
|
|
1741
1607
|
function DrawerClose({ ...props }) {
|
|
1742
|
-
return /* @__PURE__ */
|
|
1608
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Close, {
|
|
1743
1609
|
"data-slot": "drawer-close",
|
|
1744
1610
|
...props
|
|
1745
1611
|
});
|
|
1746
1612
|
}
|
|
1747
1613
|
function DrawerOverlay({ density, className, ...props }) {
|
|
1748
1614
|
const resolvedDensity = useDensity(density);
|
|
1749
|
-
return /* @__PURE__ */
|
|
1615
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Backdrop, {
|
|
1750
1616
|
"data-density": resolvedDensity,
|
|
1751
1617
|
"data-slot": "drawer-overlay",
|
|
1752
1618
|
className: (state) => cn2("fixed inset-0 min-h-dvh bg-backdrop opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute", typeof className === "function" ? className(state) : className),
|
|
@@ -1754,7 +1620,7 @@ function DrawerOverlay({ density, className, ...props }) {
|
|
|
1754
1620
|
});
|
|
1755
1621
|
}
|
|
1756
1622
|
function DrawerSwipeHandle({ density, className, ...props }) {
|
|
1757
|
-
return /* @__PURE__ */
|
|
1623
|
+
return /* @__PURE__ */ jsx17("div", {
|
|
1758
1624
|
"data-density": density,
|
|
1759
1625
|
"data-slot": "drawer-swipe-handle",
|
|
1760
1626
|
"aria-hidden": "true",
|
|
@@ -1767,28 +1633,30 @@ function DrawerContent({ density, className, children, ...props }) {
|
|
|
1767
1633
|
const direction = useDirection2();
|
|
1768
1634
|
const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
|
|
1769
1635
|
const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
|
|
1770
|
-
return /* @__PURE__ */
|
|
1636
|
+
return /* @__PURE__ */ jsxs11(DrawerPortal, {
|
|
1771
1637
|
"data-slot": "drawer-portal",
|
|
1772
1638
|
children: [
|
|
1773
|
-
modal === true && /* @__PURE__ */
|
|
1639
|
+
modal === true && /* @__PURE__ */ jsx17(DrawerOverlay, {
|
|
1774
1640
|
"data-snap-points": hasSnapPoints ? "" : undefined
|
|
1775
1641
|
}),
|
|
1776
|
-
/* @__PURE__ */
|
|
1642
|
+
/* @__PURE__ */ jsx17(DrawerPrimitive.Viewport, {
|
|
1777
1643
|
dir: direction,
|
|
1778
1644
|
"data-slot": "drawer-viewport",
|
|
1779
1645
|
"data-modal": modal,
|
|
1780
1646
|
className: "pointer-events-none fixed inset-0 select-none data-[modal=true]:pointer-events-auto",
|
|
1781
|
-
children: /* @__PURE__ */
|
|
1647
|
+
children: /* @__PURE__ */ jsxs11(DrawerPrimitive.Popup, {
|
|
1782
1648
|
"data-density": resolvedDensity,
|
|
1783
1649
|
"data-slot": "drawer-popup",
|
|
1650
|
+
"data-scroll": "none",
|
|
1784
1651
|
"data-swipe-axis": swipeAxis,
|
|
1785
1652
|
"data-snap-points": hasSnapPoints ? "" : undefined,
|
|
1786
1653
|
className: (state) => cn2("group/drawer-popup pointer-events-auto fixed m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)] flex-col border border-frame-edge shadow-frame bg-popover text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [interpolate-size:allow-keywords] data-[swipe-direction=down]:rounded-t-md data-[swipe-direction=down]:border-t data-[swipe-direction=left]:rounded-r-md data-[swipe-direction=left]:border-r data-[swipe-direction=right]:rounded-l-md data-[swipe-direction=right]:border-l data-[swipe-direction=up]:rounded-b-md data-[swipe-direction=up]:border-b", "data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95", "after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full", "[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]", "[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-shrink:0]", "data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]", "data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)", "data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row", "data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]", "data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]", typeof className === "function" ? className(state) : className),
|
|
1787
1654
|
...props,
|
|
1788
1655
|
children: [
|
|
1789
|
-
showSwipeHandle && /* @__PURE__ */
|
|
1790
|
-
/* @__PURE__ */
|
|
1656
|
+
showSwipeHandle && /* @__PURE__ */ jsx17(DrawerSwipeHandle, {}),
|
|
1657
|
+
/* @__PURE__ */ jsx17(DrawerPrimitive.Content, {
|
|
1791
1658
|
"data-slot": "drawer-content",
|
|
1659
|
+
"data-scroll": "none",
|
|
1792
1660
|
className: "flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-out select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none",
|
|
1793
1661
|
children
|
|
1794
1662
|
})
|
|
@@ -1799,7 +1667,7 @@ function DrawerContent({ density, className, children, ...props }) {
|
|
|
1799
1667
|
});
|
|
1800
1668
|
}
|
|
1801
1669
|
function DrawerHeader({ density, className, ...props }) {
|
|
1802
|
-
return /* @__PURE__ */
|
|
1670
|
+
return /* @__PURE__ */ jsx17("div", {
|
|
1803
1671
|
"data-density": density,
|
|
1804
1672
|
"data-slot": "drawer-header",
|
|
1805
1673
|
className: cn2("flex shrink-0 flex-col gap-0.5 p-panel pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-0.5 md:text-start md:group-data-[swipe-axis=y]/drawer-popup:text-start", className),
|
|
@@ -1807,7 +1675,7 @@ function DrawerHeader({ density, className, ...props }) {
|
|
|
1807
1675
|
});
|
|
1808
1676
|
}
|
|
1809
1677
|
function DrawerFooter({ density, className, ...props }) {
|
|
1810
|
-
return /* @__PURE__ */
|
|
1678
|
+
return /* @__PURE__ */ jsx17("div", {
|
|
1811
1679
|
"data-density": density,
|
|
1812
1680
|
"data-slot": "drawer-footer",
|
|
1813
1681
|
className: cn2("mt-auto flex shrink-0 flex-col gap-2 p-panel pt-0", className),
|
|
@@ -1815,7 +1683,7 @@ function DrawerFooter({ density, className, ...props }) {
|
|
|
1815
1683
|
});
|
|
1816
1684
|
}
|
|
1817
1685
|
function DrawerTitle({ density, className, ...props }) {
|
|
1818
|
-
return /* @__PURE__ */
|
|
1686
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Title, {
|
|
1819
1687
|
"data-density": density,
|
|
1820
1688
|
"data-slot": "drawer-title",
|
|
1821
1689
|
className: (state) => cn2(" text-base font-medium text-foreground", typeof className === "function" ? className(state) : className),
|
|
@@ -1823,7 +1691,7 @@ function DrawerTitle({ density, className, ...props }) {
|
|
|
1823
1691
|
});
|
|
1824
1692
|
}
|
|
1825
1693
|
function DrawerDescription({ density, className, ...props }) {
|
|
1826
|
-
return /* @__PURE__ */
|
|
1694
|
+
return /* @__PURE__ */ jsx17(DrawerPrimitive.Description, {
|
|
1827
1695
|
"data-density": density,
|
|
1828
1696
|
"data-slot": "drawer-description",
|
|
1829
1697
|
className: (state) => cn2("text-sm text-balance text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
@@ -1834,23 +1702,29 @@ function DrawerDescription({ density, className, ...props }) {
|
|
|
1834
1702
|
import { ChevronRightIcon as ChevronRightIcon3, CheckIcon as CheckIcon3 } from "lucide-react";
|
|
1835
1703
|
import { useDirection as useDirection5 } from "@base-ui/react/direction-provider";
|
|
1836
1704
|
import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu";
|
|
1837
|
-
import { jsx as
|
|
1705
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1838
1706
|
function ContextMenu({ ...props }) {
|
|
1839
|
-
return /* @__PURE__ */
|
|
1707
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Root, {
|
|
1840
1708
|
"data-slot": "context-menu",
|
|
1841
1709
|
...props
|
|
1842
1710
|
});
|
|
1843
1711
|
}
|
|
1844
|
-
function ContextMenuPortal({ container, ...props }) {
|
|
1712
|
+
function ContextMenuPortal({ container, ref, children, ...props }) {
|
|
1845
1713
|
const resolvedContainer = usePortalContainer2(container);
|
|
1846
|
-
|
|
1714
|
+
const portal = usePortalNode(ref);
|
|
1715
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Portal, {
|
|
1847
1716
|
"data-slot": "context-menu-portal",
|
|
1848
1717
|
container: resolvedContainer,
|
|
1849
|
-
|
|
1718
|
+
ref: portal.ref,
|
|
1719
|
+
...props,
|
|
1720
|
+
children: /* @__PURE__ */ jsx18(PortalProvider2, {
|
|
1721
|
+
container: portal.node,
|
|
1722
|
+
children
|
|
1723
|
+
})
|
|
1850
1724
|
});
|
|
1851
1725
|
}
|
|
1852
1726
|
function ContextMenuTrigger({ density, className, ...props }) {
|
|
1853
|
-
return /* @__PURE__ */
|
|
1727
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Trigger, {
|
|
1854
1728
|
"data-density": density,
|
|
1855
1729
|
"data-slot": "context-menu-trigger",
|
|
1856
1730
|
className: (state) => cn2("select-none", typeof className === "function" ? className(state) : className),
|
|
@@ -1868,15 +1742,15 @@ function ContextMenuContent({
|
|
|
1868
1742
|
}) {
|
|
1869
1743
|
const resolvedDensity = useDensity(density);
|
|
1870
1744
|
const direction = useDirection5();
|
|
1871
|
-
return /* @__PURE__ */
|
|
1872
|
-
children: /* @__PURE__ */
|
|
1745
|
+
return /* @__PURE__ */ jsx18(ContextMenuPortal, {
|
|
1746
|
+
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Positioner, {
|
|
1873
1747
|
dir: direction,
|
|
1874
1748
|
className: "isolate outline-none",
|
|
1875
1749
|
align,
|
|
1876
1750
|
alignOffset,
|
|
1877
1751
|
side,
|
|
1878
1752
|
sideOffset,
|
|
1879
|
-
children: /* @__PURE__ */
|
|
1753
|
+
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Popup, {
|
|
1880
1754
|
dir: direction,
|
|
1881
1755
|
"data-density": resolvedDensity,
|
|
1882
1756
|
"data-slot": "context-menu-content",
|
|
@@ -1887,13 +1761,13 @@ function ContextMenuContent({
|
|
|
1887
1761
|
});
|
|
1888
1762
|
}
|
|
1889
1763
|
function ContextMenuGroup({ ...props }) {
|
|
1890
|
-
return /* @__PURE__ */
|
|
1764
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Group, {
|
|
1891
1765
|
"data-slot": "context-menu-group",
|
|
1892
1766
|
...props
|
|
1893
1767
|
});
|
|
1894
1768
|
}
|
|
1895
1769
|
function ContextMenuLabel({ density, className, inset, ...props }) {
|
|
1896
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.GroupLabel, {
|
|
1897
1771
|
"data-density": density,
|
|
1898
1772
|
"data-slot": "context-menu-label",
|
|
1899
1773
|
"data-inset": inset,
|
|
@@ -1902,7 +1776,7 @@ function ContextMenuLabel({ density, className, inset, ...props }) {
|
|
|
1902
1776
|
});
|
|
1903
1777
|
}
|
|
1904
1778
|
function ContextMenuItem({ density, className, inset, variant = "default", ...props }) {
|
|
1905
|
-
return /* @__PURE__ */
|
|
1779
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Item, {
|
|
1906
1780
|
"data-density": density,
|
|
1907
1781
|
"data-slot": "context-menu-item",
|
|
1908
1782
|
"data-inset": inset,
|
|
@@ -1912,13 +1786,13 @@ function ContextMenuItem({ density, className, inset, variant = "default", ...pr
|
|
|
1912
1786
|
});
|
|
1913
1787
|
}
|
|
1914
1788
|
function ContextMenuSub({ ...props }) {
|
|
1915
|
-
return /* @__PURE__ */
|
|
1789
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.SubmenuRoot, {
|
|
1916
1790
|
"data-slot": "context-menu-sub",
|
|
1917
1791
|
...props
|
|
1918
1792
|
});
|
|
1919
1793
|
}
|
|
1920
1794
|
function ContextMenuSubTrigger({ density, className, inset, children, ...props }) {
|
|
1921
|
-
return /* @__PURE__ */
|
|
1795
|
+
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.SubmenuTrigger, {
|
|
1922
1796
|
"data-density": density,
|
|
1923
1797
|
"data-slot": "context-menu-sub-trigger",
|
|
1924
1798
|
"data-inset": inset,
|
|
@@ -1926,14 +1800,14 @@ function ContextMenuSubTrigger({ density, className, inset, children, ...props }
|
|
|
1926
1800
|
...props,
|
|
1927
1801
|
children: [
|
|
1928
1802
|
children,
|
|
1929
|
-
/* @__PURE__ */
|
|
1803
|
+
/* @__PURE__ */ jsx18(ChevronRightIcon3, {
|
|
1930
1804
|
className: "rtl:rotate-180 ms-auto"
|
|
1931
1805
|
})
|
|
1932
1806
|
]
|
|
1933
1807
|
});
|
|
1934
1808
|
}
|
|
1935
1809
|
function ContextMenuSubContent({ ...props }) {
|
|
1936
|
-
return /* @__PURE__ */
|
|
1810
|
+
return /* @__PURE__ */ jsx18(ContextMenuContent, {
|
|
1937
1811
|
"data-slot": "context-menu-sub-content",
|
|
1938
1812
|
className: " shadow-frame border border-frame-edge",
|
|
1939
1813
|
side: "inline-end",
|
|
@@ -1948,7 +1822,7 @@ function ContextMenuCheckboxItem({
|
|
|
1948
1822
|
inset,
|
|
1949
1823
|
...props
|
|
1950
1824
|
}) {
|
|
1951
|
-
return /* @__PURE__ */
|
|
1825
|
+
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.CheckboxItem, {
|
|
1952
1826
|
"data-density": density,
|
|
1953
1827
|
"data-slot": "context-menu-checkbox-item",
|
|
1954
1828
|
"data-inset": inset,
|
|
@@ -1956,10 +1830,10 @@ function ContextMenuCheckboxItem({
|
|
|
1956
1830
|
checked,
|
|
1957
1831
|
...props,
|
|
1958
1832
|
children: [
|
|
1959
|
-
/* @__PURE__ */
|
|
1833
|
+
/* @__PURE__ */ jsx18("span", {
|
|
1960
1834
|
className: "pointer-events-none absolute end-2",
|
|
1961
|
-
children: /* @__PURE__ */
|
|
1962
|
-
children: /* @__PURE__ */
|
|
1835
|
+
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.CheckboxItemIndicator, {
|
|
1836
|
+
children: /* @__PURE__ */ jsx18(CheckIcon3, {})
|
|
1963
1837
|
})
|
|
1964
1838
|
}),
|
|
1965
1839
|
children
|
|
@@ -1967,23 +1841,23 @@ function ContextMenuCheckboxItem({
|
|
|
1967
1841
|
});
|
|
1968
1842
|
}
|
|
1969
1843
|
function ContextMenuRadioGroup({ ...props }) {
|
|
1970
|
-
return /* @__PURE__ */
|
|
1844
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioGroup, {
|
|
1971
1845
|
"data-slot": "context-menu-radio-group",
|
|
1972
1846
|
...props
|
|
1973
1847
|
});
|
|
1974
1848
|
}
|
|
1975
1849
|
function ContextMenuRadioItem({ density, className, children, inset, ...props }) {
|
|
1976
|
-
return /* @__PURE__ */
|
|
1850
|
+
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.RadioItem, {
|
|
1977
1851
|
"data-density": density,
|
|
1978
1852
|
"data-slot": "context-menu-radio-item",
|
|
1979
1853
|
"data-inset": inset,
|
|
1980
1854
|
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
1981
1855
|
...props,
|
|
1982
1856
|
children: [
|
|
1983
|
-
/* @__PURE__ */
|
|
1857
|
+
/* @__PURE__ */ jsx18("span", {
|
|
1984
1858
|
className: "pointer-events-none absolute end-2",
|
|
1985
|
-
children: /* @__PURE__ */
|
|
1986
|
-
children: /* @__PURE__ */
|
|
1859
|
+
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioItemIndicator, {
|
|
1860
|
+
children: /* @__PURE__ */ jsx18(CheckIcon3, {})
|
|
1987
1861
|
})
|
|
1988
1862
|
}),
|
|
1989
1863
|
children
|
|
@@ -1991,7 +1865,7 @@ function ContextMenuRadioItem({ density, className, children, inset, ...props })
|
|
|
1991
1865
|
});
|
|
1992
1866
|
}
|
|
1993
1867
|
function ContextMenuSeparator({ density, className, ...props }) {
|
|
1994
|
-
return /* @__PURE__ */
|
|
1868
|
+
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Separator, {
|
|
1995
1869
|
"data-density": density,
|
|
1996
1870
|
"data-slot": "context-menu-separator",
|
|
1997
1871
|
className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
@@ -1999,7 +1873,7 @@ function ContextMenuSeparator({ density, className, ...props }) {
|
|
|
1999
1873
|
});
|
|
2000
1874
|
}
|
|
2001
1875
|
function ContextMenuShortcut({ density, className, ...props }) {
|
|
2002
|
-
return /* @__PURE__ */
|
|
1876
|
+
return /* @__PURE__ */ jsx18("span", {
|
|
2003
1877
|
"data-density": density,
|
|
2004
1878
|
"data-slot": "context-menu-shortcut",
|
|
2005
1879
|
className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground", className),
|
|
@@ -2010,9 +1884,9 @@ function ContextMenuShortcut({ density, className, ...props }) {
|
|
|
2010
1884
|
import { CheckIcon as CheckIcon4 } from "lucide-react";
|
|
2011
1885
|
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
2012
1886
|
import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";
|
|
2013
|
-
import { jsx as
|
|
1887
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2014
1888
|
function Menubar({ density, className, ...props }) {
|
|
2015
|
-
return /* @__PURE__ */
|
|
1889
|
+
return /* @__PURE__ */ jsx19(MenubarPrimitive, {
|
|
2016
1890
|
"data-density": density,
|
|
2017
1891
|
"data-slot": "menubar",
|
|
2018
1892
|
className: (state) => cn2("flex h-control items-center gap-0.5 rounded-sm border p-px", typeof className === "function" ? className(state) : className),
|
|
@@ -2020,25 +1894,25 @@ function Menubar({ density, className, ...props }) {
|
|
|
2020
1894
|
});
|
|
2021
1895
|
}
|
|
2022
1896
|
function MenubarMenu({ ...props }) {
|
|
2023
|
-
return /* @__PURE__ */
|
|
1897
|
+
return /* @__PURE__ */ jsx19(DropdownMenu2, {
|
|
2024
1898
|
"data-slot": "menubar-menu",
|
|
2025
1899
|
...props
|
|
2026
1900
|
});
|
|
2027
1901
|
}
|
|
2028
1902
|
function MenubarGroup({ ...props }) {
|
|
2029
|
-
return /* @__PURE__ */
|
|
1903
|
+
return /* @__PURE__ */ jsx19(DropdownMenuGroup2, {
|
|
2030
1904
|
"data-slot": "menubar-group",
|
|
2031
1905
|
...props
|
|
2032
1906
|
});
|
|
2033
1907
|
}
|
|
2034
1908
|
function MenubarPortal({ ...props }) {
|
|
2035
|
-
return /* @__PURE__ */
|
|
1909
|
+
return /* @__PURE__ */ jsx19(DropdownMenuPortal2, {
|
|
2036
1910
|
"data-slot": "menubar-portal",
|
|
2037
1911
|
...props
|
|
2038
1912
|
});
|
|
2039
1913
|
}
|
|
2040
1914
|
function MenubarTrigger({ density, className, ...props }) {
|
|
2041
|
-
return /* @__PURE__ */
|
|
1915
|
+
return /* @__PURE__ */ jsx19(DropdownMenuTrigger2, {
|
|
2042
1916
|
"data-density": density,
|
|
2043
1917
|
"data-slot": "menubar-trigger",
|
|
2044
1918
|
className: (state) => cn2("flex h-full items-center rounded-sm px-control-x text-sm leading-none font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted", typeof className === "function" ? className(state) : className),
|
|
@@ -2053,7 +1927,7 @@ function MenubarContent({
|
|
|
2053
1927
|
sideOffset = 8,
|
|
2054
1928
|
...props
|
|
2055
1929
|
}) {
|
|
2056
|
-
return /* @__PURE__ */
|
|
1930
|
+
return /* @__PURE__ */ jsx19(DropdownMenuContent2, {
|
|
2057
1931
|
density,
|
|
2058
1932
|
"data-slot": "menubar-content",
|
|
2059
1933
|
align,
|
|
@@ -2064,7 +1938,7 @@ function MenubarContent({
|
|
|
2064
1938
|
});
|
|
2065
1939
|
}
|
|
2066
1940
|
function MenubarItem({ density, className, inset, variant = "default", ...props }) {
|
|
2067
|
-
return /* @__PURE__ */
|
|
1941
|
+
return /* @__PURE__ */ jsx19(DropdownMenuItem2, {
|
|
2068
1942
|
density,
|
|
2069
1943
|
"data-slot": "menubar-item",
|
|
2070
1944
|
inset,
|
|
@@ -2081,7 +1955,7 @@ function MenubarCheckboxItem({
|
|
|
2081
1955
|
inset,
|
|
2082
1956
|
...props
|
|
2083
1957
|
}) {
|
|
2084
|
-
return /* @__PURE__ */
|
|
1958
|
+
return /* @__PURE__ */ jsxs13(MenuPrimitive.CheckboxItem, {
|
|
2085
1959
|
"data-density": density,
|
|
2086
1960
|
"data-slot": "menubar-checkbox-item",
|
|
2087
1961
|
"data-inset": inset,
|
|
@@ -2089,10 +1963,10 @@ function MenubarCheckboxItem({
|
|
|
2089
1963
|
checked,
|
|
2090
1964
|
...props,
|
|
2091
1965
|
children: [
|
|
2092
|
-
/* @__PURE__ */
|
|
1966
|
+
/* @__PURE__ */ jsx19("span", {
|
|
2093
1967
|
className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
2094
|
-
children: /* @__PURE__ */
|
|
2095
|
-
children: /* @__PURE__ */
|
|
1968
|
+
children: /* @__PURE__ */ jsx19(MenuPrimitive.CheckboxItemIndicator, {
|
|
1969
|
+
children: /* @__PURE__ */ jsx19(CheckIcon4, {})
|
|
2096
1970
|
})
|
|
2097
1971
|
}),
|
|
2098
1972
|
children
|
|
@@ -2100,23 +1974,23 @@ function MenubarCheckboxItem({
|
|
|
2100
1974
|
});
|
|
2101
1975
|
}
|
|
2102
1976
|
function MenubarRadioGroup({ ...props }) {
|
|
2103
|
-
return /* @__PURE__ */
|
|
1977
|
+
return /* @__PURE__ */ jsx19(DropdownMenuRadioGroup2, {
|
|
2104
1978
|
"data-slot": "menubar-radio-group",
|
|
2105
1979
|
...props
|
|
2106
1980
|
});
|
|
2107
1981
|
}
|
|
2108
1982
|
function MenubarRadioItem({ density, className, children, inset, ...props }) {
|
|
2109
|
-
return /* @__PURE__ */
|
|
1983
|
+
return /* @__PURE__ */ jsxs13(MenuPrimitive.RadioItem, {
|
|
2110
1984
|
"data-density": density,
|
|
2111
1985
|
"data-slot": "menubar-radio-item",
|
|
2112
1986
|
"data-inset": inset,
|
|
2113
1987
|
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-1.5 ps-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2114
1988
|
...props,
|
|
2115
1989
|
children: [
|
|
2116
|
-
/* @__PURE__ */
|
|
1990
|
+
/* @__PURE__ */ jsx19("span", {
|
|
2117
1991
|
className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
2118
|
-
children: /* @__PURE__ */
|
|
2119
|
-
children: /* @__PURE__ */
|
|
1992
|
+
children: /* @__PURE__ */ jsx19(MenuPrimitive.RadioItemIndicator, {
|
|
1993
|
+
children: /* @__PURE__ */ jsx19(CheckIcon4, {})
|
|
2120
1994
|
})
|
|
2121
1995
|
}),
|
|
2122
1996
|
children
|
|
@@ -2124,7 +1998,7 @@ function MenubarRadioItem({ density, className, children, inset, ...props }) {
|
|
|
2124
1998
|
});
|
|
2125
1999
|
}
|
|
2126
2000
|
function MenubarLabel({ density, className, inset, ...props }) {
|
|
2127
|
-
return /* @__PURE__ */
|
|
2001
|
+
return /* @__PURE__ */ jsx19(DropdownMenuLabel2, {
|
|
2128
2002
|
density,
|
|
2129
2003
|
"data-slot": "menubar-label",
|
|
2130
2004
|
inset,
|
|
@@ -2133,7 +2007,7 @@ function MenubarLabel({ density, className, inset, ...props }) {
|
|
|
2133
2007
|
});
|
|
2134
2008
|
}
|
|
2135
2009
|
function MenubarSeparator({ density, className, ...props }) {
|
|
2136
|
-
return /* @__PURE__ */
|
|
2010
|
+
return /* @__PURE__ */ jsx19(DropdownMenuSeparator2, {
|
|
2137
2011
|
density,
|
|
2138
2012
|
"data-slot": "menubar-separator",
|
|
2139
2013
|
className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
@@ -2141,7 +2015,7 @@ function MenubarSeparator({ density, className, ...props }) {
|
|
|
2141
2015
|
});
|
|
2142
2016
|
}
|
|
2143
2017
|
function MenubarShortcut({ density, className, ...props }) {
|
|
2144
|
-
return /* @__PURE__ */
|
|
2018
|
+
return /* @__PURE__ */ jsx19(DropdownMenuShortcut2, {
|
|
2145
2019
|
"data-density": density,
|
|
2146
2020
|
"data-slot": "menubar-shortcut",
|
|
2147
2021
|
className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground", className),
|
|
@@ -2149,13 +2023,13 @@ function MenubarShortcut({ density, className, ...props }) {
|
|
|
2149
2023
|
});
|
|
2150
2024
|
}
|
|
2151
2025
|
function MenubarSub({ ...props }) {
|
|
2152
|
-
return /* @__PURE__ */
|
|
2026
|
+
return /* @__PURE__ */ jsx19(DropdownMenuSub2, {
|
|
2153
2027
|
"data-slot": "menubar-sub",
|
|
2154
2028
|
...props
|
|
2155
2029
|
});
|
|
2156
2030
|
}
|
|
2157
2031
|
function MenubarSubTrigger({ density, className, inset, ...props }) {
|
|
2158
|
-
return /* @__PURE__ */
|
|
2032
|
+
return /* @__PURE__ */ jsx19(DropdownMenuSubTrigger2, {
|
|
2159
2033
|
density,
|
|
2160
2034
|
"data-slot": "menubar-sub-trigger",
|
|
2161
2035
|
inset,
|
|
@@ -2164,7 +2038,7 @@ function MenubarSubTrigger({ density, className, inset, ...props }) {
|
|
|
2164
2038
|
});
|
|
2165
2039
|
}
|
|
2166
2040
|
function MenubarSubContent({ density, className, ...props }) {
|
|
2167
|
-
return /* @__PURE__ */
|
|
2041
|
+
return /* @__PURE__ */ jsx19(DropdownMenuSubContent2, {
|
|
2168
2042
|
density,
|
|
2169
2043
|
"data-slot": "menubar-sub-content",
|
|
2170
2044
|
className: (state) => cn2(" min-w-32 rounded-sm bg-popover p-1 text-popover-foreground shadow-frame border border-frame-edge border border-frame-edge shadow-frame duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 ", typeof className === "function" ? className(state) : className),
|
|
@@ -2172,10 +2046,10 @@ function MenubarSubContent({ density, className, ...props }) {
|
|
|
2172
2046
|
});
|
|
2173
2047
|
}
|
|
2174
2048
|
// src/components/NavigationMenu.tsx
|
|
2175
|
-
import { ChevronDownIcon as
|
|
2049
|
+
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
2176
2050
|
import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
|
|
2177
|
-
import { cva as
|
|
2178
|
-
import { jsx as
|
|
2051
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
2052
|
+
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2179
2053
|
function NavigationMenu({
|
|
2180
2054
|
density,
|
|
2181
2055
|
align = "start",
|
|
@@ -2184,14 +2058,14 @@ function NavigationMenu({
|
|
|
2184
2058
|
...props
|
|
2185
2059
|
}) {
|
|
2186
2060
|
const resolvedDensity = useDensity(density);
|
|
2187
|
-
return /* @__PURE__ */
|
|
2061
|
+
return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Root, {
|
|
2188
2062
|
"data-density": resolvedDensity,
|
|
2189
2063
|
"data-slot": "navigation-menu",
|
|
2190
2064
|
className: (state) => cn2("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", typeof className === "function" ? className(state) : className),
|
|
2191
2065
|
...props,
|
|
2192
2066
|
children: [
|
|
2193
2067
|
children,
|
|
2194
|
-
/* @__PURE__ */
|
|
2068
|
+
/* @__PURE__ */ jsx20(NavigationMenuPositioner, {
|
|
2195
2069
|
density: resolvedDensity,
|
|
2196
2070
|
align
|
|
2197
2071
|
})
|
|
@@ -2199,7 +2073,7 @@ function NavigationMenu({
|
|
|
2199
2073
|
});
|
|
2200
2074
|
}
|
|
2201
2075
|
function NavigationMenuList({ density, className, ...props }) {
|
|
2202
|
-
return /* @__PURE__ */
|
|
2076
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.List, {
|
|
2203
2077
|
"data-density": density,
|
|
2204
2078
|
"data-slot": "navigation-menu-list",
|
|
2205
2079
|
className: (state) => cn2("group flex flex-1 list-none items-center justify-center gap-0", typeof className === "function" ? className(state) : className),
|
|
@@ -2207,16 +2081,16 @@ function NavigationMenuList({ density, className, ...props }) {
|
|
|
2207
2081
|
});
|
|
2208
2082
|
}
|
|
2209
2083
|
function NavigationMenuItem({ density, className, ...props }) {
|
|
2210
|
-
return /* @__PURE__ */
|
|
2084
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Item, {
|
|
2211
2085
|
"data-density": density,
|
|
2212
2086
|
"data-slot": "navigation-menu-item",
|
|
2213
2087
|
className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
|
|
2214
2088
|
...props
|
|
2215
2089
|
});
|
|
2216
2090
|
}
|
|
2217
|
-
var navigationMenuTriggerStyle =
|
|
2091
|
+
var navigationMenuTriggerStyle = cva3("group/navigation-menu-trigger inline-flex h-control-lg w-max items-center justify-center rounded-sm px-control-x py-1.5 text-sm font-medium transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted");
|
|
2218
2092
|
function NavigationMenuTrigger({ density, className, children, ...props }) {
|
|
2219
|
-
return /* @__PURE__ */
|
|
2093
|
+
return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Trigger, {
|
|
2220
2094
|
"data-density": density,
|
|
2221
2095
|
"data-slot": "navigation-menu-trigger",
|
|
2222
2096
|
className: (state) => cn2(navigationMenuTriggerStyle(), "group", typeof className === "function" ? className(state) : className),
|
|
@@ -2224,12 +2098,12 @@ function NavigationMenuTrigger({ density, className, children, ...props }) {
|
|
|
2224
2098
|
children: [
|
|
2225
2099
|
children,
|
|
2226
2100
|
" ",
|
|
2227
|
-
/* @__PURE__ */
|
|
2101
|
+
/* @__PURE__ */ jsx20(NavigationMenuIndicator, {})
|
|
2228
2102
|
]
|
|
2229
2103
|
});
|
|
2230
2104
|
}
|
|
2231
2105
|
function NavigationMenuContent({ density, className, ...props }) {
|
|
2232
|
-
return /* @__PURE__ */
|
|
2106
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Content, {
|
|
2233
2107
|
"data-density": density,
|
|
2234
2108
|
"data-slot": "navigation-menu-content",
|
|
2235
2109
|
className: (state) => cn2("data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 ", typeof className === "function" ? className(state) : className),
|
|
@@ -2248,29 +2122,34 @@ function NavigationMenuPositioner({
|
|
|
2248
2122
|
const resolvedDensity = useDensity(density);
|
|
2249
2123
|
const direction = useDirection2();
|
|
2250
2124
|
const container = usePortalContainer2();
|
|
2251
|
-
|
|
2125
|
+
const portal = usePortalNode();
|
|
2126
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Portal, {
|
|
2252
2127
|
container,
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
"data-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2128
|
+
ref: portal.ref,
|
|
2129
|
+
children: /* @__PURE__ */ jsx20(PortalProvider2, {
|
|
2130
|
+
container: portal.node,
|
|
2131
|
+
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Positioner, {
|
|
2132
|
+
dir: direction,
|
|
2133
|
+
side,
|
|
2134
|
+
sideOffset,
|
|
2135
|
+
align,
|
|
2136
|
+
alignOffset,
|
|
2137
|
+
className: (state) => cn2("isolate h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0", typeof className === "function" ? className(state) : className),
|
|
2138
|
+
...props,
|
|
2139
|
+
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Popup, {
|
|
2140
|
+
"data-density": resolvedDensity,
|
|
2141
|
+
"data-slot": "navigation-menu-popup",
|
|
2142
|
+
className: "data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-sm bg-popover text-popover-foreground border border-frame-edge shadow-frame transition-[opacity,transform,width,height,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:opacity-0",
|
|
2143
|
+
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Viewport, {
|
|
2144
|
+
className: "relative size-full overflow-hidden"
|
|
2145
|
+
})
|
|
2267
2146
|
})
|
|
2268
2147
|
})
|
|
2269
2148
|
})
|
|
2270
2149
|
});
|
|
2271
2150
|
}
|
|
2272
2151
|
function NavigationMenuLink({ density, className, ...props }) {
|
|
2273
|
-
return /* @__PURE__ */
|
|
2152
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Link, {
|
|
2274
2153
|
"data-density": density,
|
|
2275
2154
|
"data-slot": "navigation-menu-link",
|
|
2276
2155
|
className: (state) => cn2("flex items-center gap-2 rounded-sm p-2 text-sm transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
@@ -2283,35 +2162,41 @@ function NavigationMenuIndicator({
|
|
|
2283
2162
|
children,
|
|
2284
2163
|
...props
|
|
2285
2164
|
}) {
|
|
2286
|
-
return /* @__PURE__ */
|
|
2165
|
+
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Icon, {
|
|
2287
2166
|
"data-density": density,
|
|
2288
2167
|
"data-slot": "navigation-menu-indicator",
|
|
2289
2168
|
className: (state) => cn2("ms-1 inline-flex size-3 shrink-0 items-center justify-center transition-transform duration-120 data-popup-open:rotate-180 [&_svg]:size-full", typeof className === "function" ? className(state) : className),
|
|
2290
2169
|
...props,
|
|
2291
|
-
children: children ?? /* @__PURE__ */
|
|
2170
|
+
children: children ?? /* @__PURE__ */ jsx20(ChevronDownIcon4, {})
|
|
2292
2171
|
});
|
|
2293
2172
|
}
|
|
2294
2173
|
// src/components/Toast.tsx
|
|
2295
2174
|
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
2296
2175
|
import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, LoaderCircleIcon, XIcon as XIcon2 } from "lucide-react";
|
|
2297
|
-
import { jsx as
|
|
2176
|
+
import { jsx as jsx21, jsxs as jsxs15, Fragment } from "react/jsx-runtime";
|
|
2298
2177
|
function ToastProvider(props) {
|
|
2299
|
-
return /* @__PURE__ */
|
|
2178
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Provider, {
|
|
2300
2179
|
...props
|
|
2301
2180
|
});
|
|
2302
2181
|
}
|
|
2303
|
-
function ToastPortal({ container, ...props }) {
|
|
2182
|
+
function ToastPortal({ container, ref, children, ...props }) {
|
|
2304
2183
|
const resolvedContainer = usePortalContainer2(container);
|
|
2305
|
-
|
|
2184
|
+
const portal = usePortalNode(ref);
|
|
2185
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Portal, {
|
|
2306
2186
|
"data-slot": "toast-portal",
|
|
2307
2187
|
container: resolvedContainer,
|
|
2308
|
-
|
|
2188
|
+
ref: portal.ref,
|
|
2189
|
+
...props,
|
|
2190
|
+
children: /* @__PURE__ */ jsx21(PortalProvider2, {
|
|
2191
|
+
container: portal.node,
|
|
2192
|
+
children
|
|
2193
|
+
})
|
|
2309
2194
|
});
|
|
2310
2195
|
}
|
|
2311
2196
|
function ToastViewport({ density, dir, className, ...props }) {
|
|
2312
2197
|
const resolvedDensity = useDensity(density);
|
|
2313
2198
|
const inheritedDirection = useDirection2();
|
|
2314
|
-
return /* @__PURE__ */
|
|
2199
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Viewport, {
|
|
2315
2200
|
dir: dir ?? inheritedDirection,
|
|
2316
2201
|
"data-density": resolvedDensity,
|
|
2317
2202
|
"data-slot": "toast-viewport",
|
|
@@ -2320,7 +2205,7 @@ function ToastViewport({ density, dir, className, ...props }) {
|
|
|
2320
2205
|
});
|
|
2321
2206
|
}
|
|
2322
2207
|
function Toast({ density, className, ...props }) {
|
|
2323
|
-
return /* @__PURE__ */
|
|
2208
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Root, {
|
|
2324
2209
|
"data-density": density,
|
|
2325
2210
|
"data-slot": "toast",
|
|
2326
2211
|
className: (state) => cn2("group/toast pointer-events-auto absolute right-0 bottom-0 w-full rounded-md border border-frame-edge bg-popover text-popover-foreground shadow-frame outline-none select-none focus-visible:ring-1 focus-visible:ring-ring [--offset-y:calc(var(--toast-offset-y)*-1-var(--toast-index)*var(--spacing-panel))] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)+var(--toast-swipe-movement-y)))] transition-[transform,opacity] duration-120 ease-out data-limited:opacity-0 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
@@ -2328,21 +2213,21 @@ function Toast({ density, className, ...props }) {
|
|
|
2328
2213
|
});
|
|
2329
2214
|
}
|
|
2330
2215
|
function ToastContent({ className, ...props }) {
|
|
2331
|
-
return /* @__PURE__ */
|
|
2216
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Content, {
|
|
2332
2217
|
"data-slot": "toast-content",
|
|
2333
2218
|
className: (state) => cn2("flex items-center gap-control-gap p-panel", typeof className === "function" ? className(state) : className),
|
|
2334
2219
|
...props
|
|
2335
2220
|
});
|
|
2336
2221
|
}
|
|
2337
2222
|
function ToastTitle({ className, ...props }) {
|
|
2338
|
-
return /* @__PURE__ */
|
|
2223
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Title, {
|
|
2339
2224
|
"data-slot": "toast-title",
|
|
2340
2225
|
className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
2341
2226
|
...props
|
|
2342
2227
|
});
|
|
2343
2228
|
}
|
|
2344
2229
|
function ToastDescription({ className, ...props }) {
|
|
2345
|
-
return /* @__PURE__ */
|
|
2230
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Description, {
|
|
2346
2231
|
"data-slot": "toast-description",
|
|
2347
2232
|
className: (state) => cn2("text-sm text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
2348
2233
|
...props
|
|
@@ -2350,13 +2235,13 @@ function ToastDescription({ className, ...props }) {
|
|
|
2350
2235
|
}
|
|
2351
2236
|
function ToastAction({
|
|
2352
2237
|
className,
|
|
2353
|
-
render = /* @__PURE__ */
|
|
2238
|
+
render = /* @__PURE__ */ jsx21(Button2, {
|
|
2354
2239
|
variant: "outline",
|
|
2355
2240
|
size: "sm"
|
|
2356
2241
|
}),
|
|
2357
2242
|
...props
|
|
2358
2243
|
}) {
|
|
2359
|
-
return /* @__PURE__ */
|
|
2244
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Action, {
|
|
2360
2245
|
"data-slot": "toast-action",
|
|
2361
2246
|
render,
|
|
2362
2247
|
className: (state) => cn2("shrink-0", typeof className === "function" ? className(state) : className),
|
|
@@ -2366,19 +2251,19 @@ function ToastAction({
|
|
|
2366
2251
|
function ToastClose({
|
|
2367
2252
|
className,
|
|
2368
2253
|
children,
|
|
2369
|
-
render = /* @__PURE__ */
|
|
2254
|
+
render = /* @__PURE__ */ jsx21(Button2, {
|
|
2370
2255
|
variant: "ghost",
|
|
2371
2256
|
size: "icon-sm"
|
|
2372
2257
|
}),
|
|
2373
2258
|
...props
|
|
2374
2259
|
}) {
|
|
2375
|
-
return /* @__PURE__ */
|
|
2260
|
+
return /* @__PURE__ */ jsx21(ToastPrimitive.Close, {
|
|
2376
2261
|
"data-slot": "toast-close",
|
|
2377
2262
|
"aria-label": "Close toast",
|
|
2378
2263
|
render,
|
|
2379
2264
|
className: (state) => cn2("relative shrink-0 text-muted-foreground hover:text-foreground", typeof className === "function" ? className(state) : className),
|
|
2380
2265
|
...props,
|
|
2381
|
-
children: children ?? /* @__PURE__ */
|
|
2266
|
+
children: children ?? /* @__PURE__ */ jsx21(XIcon2, {
|
|
2382
2267
|
"aria-hidden": "true"
|
|
2383
2268
|
})
|
|
2384
2269
|
});
|
|
@@ -2386,24 +2271,24 @@ function ToastClose({
|
|
|
2386
2271
|
function ToastIcon({ type }) {
|
|
2387
2272
|
switch (type) {
|
|
2388
2273
|
case "success":
|
|
2389
|
-
return /* @__PURE__ */
|
|
2274
|
+
return /* @__PURE__ */ jsx21(CircleCheckIcon, {
|
|
2390
2275
|
"aria-hidden": "true"
|
|
2391
2276
|
});
|
|
2392
2277
|
case "info":
|
|
2393
|
-
return /* @__PURE__ */
|
|
2278
|
+
return /* @__PURE__ */ jsx21(InfoIcon, {
|
|
2394
2279
|
"aria-hidden": "true"
|
|
2395
2280
|
});
|
|
2396
2281
|
case "warning":
|
|
2397
|
-
return /* @__PURE__ */
|
|
2282
|
+
return /* @__PURE__ */ jsx21(TriangleAlertIcon, {
|
|
2398
2283
|
"aria-hidden": "true"
|
|
2399
2284
|
});
|
|
2400
2285
|
case "error":
|
|
2401
|
-
return /* @__PURE__ */
|
|
2286
|
+
return /* @__PURE__ */ jsx21(OctagonXIcon, {
|
|
2402
2287
|
"aria-hidden": "true",
|
|
2403
2288
|
className: "text-destructive"
|
|
2404
2289
|
});
|
|
2405
2290
|
case "loading":
|
|
2406
|
-
return /* @__PURE__ */
|
|
2291
|
+
return /* @__PURE__ */ jsx21(LoaderCircleIcon, {
|
|
2407
2292
|
"aria-hidden": "true",
|
|
2408
2293
|
className: "animate-spin motion-reduce:animate-none"
|
|
2409
2294
|
});
|
|
@@ -2413,41 +2298,41 @@ function ToastIcon({ type }) {
|
|
|
2413
2298
|
}
|
|
2414
2299
|
function ToastList() {
|
|
2415
2300
|
const { toasts } = ToastPrimitive.useToastManager();
|
|
2416
|
-
return /* @__PURE__ */
|
|
2417
|
-
children: toasts.map((toastItem) => /* @__PURE__ */
|
|
2301
|
+
return /* @__PURE__ */ jsx21(Fragment, {
|
|
2302
|
+
children: toasts.map((toastItem) => /* @__PURE__ */ jsx21(Toast, {
|
|
2418
2303
|
toast: toastItem,
|
|
2419
|
-
children: /* @__PURE__ */
|
|
2304
|
+
children: /* @__PURE__ */ jsxs15(ToastContent, {
|
|
2420
2305
|
children: [
|
|
2421
|
-
/* @__PURE__ */
|
|
2306
|
+
/* @__PURE__ */ jsx21("span", {
|
|
2422
2307
|
"data-slot": "toast-icon",
|
|
2423
2308
|
className: "shrink-0 empty:hidden [&_svg]:size-4",
|
|
2424
|
-
children: /* @__PURE__ */
|
|
2309
|
+
children: /* @__PURE__ */ jsx21(ToastIcon, {
|
|
2425
2310
|
type: toastItem.type
|
|
2426
2311
|
})
|
|
2427
2312
|
}),
|
|
2428
|
-
/* @__PURE__ */
|
|
2313
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
2429
2314
|
className: "flex min-w-0 flex-1 flex-col gap-1",
|
|
2430
2315
|
children: [
|
|
2431
|
-
/* @__PURE__ */
|
|
2432
|
-
/* @__PURE__ */
|
|
2316
|
+
/* @__PURE__ */ jsx21(ToastTitle, {}),
|
|
2317
|
+
/* @__PURE__ */ jsx21(ToastDescription, {})
|
|
2433
2318
|
]
|
|
2434
2319
|
}),
|
|
2435
|
-
/* @__PURE__ */
|
|
2436
|
-
/* @__PURE__ */
|
|
2320
|
+
/* @__PURE__ */ jsx21(ToastAction, {}),
|
|
2321
|
+
/* @__PURE__ */ jsx21(ToastClose, {})
|
|
2437
2322
|
]
|
|
2438
2323
|
})
|
|
2439
2324
|
}, toastItem.id))
|
|
2440
2325
|
});
|
|
2441
2326
|
}
|
|
2442
2327
|
function ToastToaster({ children, density, ...props }) {
|
|
2443
|
-
return /* @__PURE__ */
|
|
2328
|
+
return /* @__PURE__ */ jsxs15(ToastProvider, {
|
|
2444
2329
|
...props,
|
|
2445
2330
|
children: [
|
|
2446
2331
|
children,
|
|
2447
|
-
/* @__PURE__ */
|
|
2448
|
-
children: /* @__PURE__ */
|
|
2332
|
+
/* @__PURE__ */ jsx21(ToastPortal, {
|
|
2333
|
+
children: /* @__PURE__ */ jsx21(ToastViewport, {
|
|
2449
2334
|
density,
|
|
2450
|
-
children: /* @__PURE__ */
|
|
2335
|
+
children: /* @__PURE__ */ jsx21(ToastList, {})
|
|
2451
2336
|
})
|
|
2452
2337
|
})
|
|
2453
2338
|
]
|
|
@@ -2460,11 +2345,11 @@ function useToastManager() {
|
|
|
2460
2345
|
return Toast2.useToastManager();
|
|
2461
2346
|
}
|
|
2462
2347
|
// src/components/Marker.tsx
|
|
2463
|
-
import { mergeProps as
|
|
2464
|
-
import { useRender as
|
|
2465
|
-
import { cva as
|
|
2466
|
-
import { jsx as
|
|
2467
|
-
var markerVariants =
|
|
2348
|
+
import { mergeProps as mergeProps6 } from "@base-ui/react/merge-props";
|
|
2349
|
+
import { useRender as useRender6 } from "@base-ui/react/use-render";
|
|
2350
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
2351
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
2352
|
+
var markerVariants = cva4("group/marker relative flex min-h-4 w-full items-center gap-control-gap text-start text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground [&:is(a,button)]:outline-none [&:is(a,button)]:focus-visible:outline-1 [&:is(a,button)]:focus-visible:outline-ring", {
|
|
2468
2353
|
variants: {
|
|
2469
2354
|
variant: {
|
|
2470
2355
|
default: "",
|
|
@@ -2474,15 +2359,15 @@ var markerVariants = cva5("group/marker relative flex min-h-4 w-full items-cente
|
|
|
2474
2359
|
}
|
|
2475
2360
|
});
|
|
2476
2361
|
function Marker({ density, className, variant = "default", render, ...props }) {
|
|
2477
|
-
return
|
|
2362
|
+
return useRender6({
|
|
2478
2363
|
defaultTagName: "div",
|
|
2479
|
-
props:
|
|
2364
|
+
props: mergeProps6({ className: cn2(markerVariants({ variant, className })) }, props),
|
|
2480
2365
|
render,
|
|
2481
2366
|
state: { slot: "marker", variant, density }
|
|
2482
2367
|
});
|
|
2483
2368
|
}
|
|
2484
2369
|
function MarkerIcon({ density, className, ...props }) {
|
|
2485
|
-
return /* @__PURE__ */
|
|
2370
|
+
return /* @__PURE__ */ jsx22("span", {
|
|
2486
2371
|
"data-density": density,
|
|
2487
2372
|
"data-slot": "marker-icon",
|
|
2488
2373
|
"aria-hidden": "true",
|
|
@@ -2491,7 +2376,7 @@ function MarkerIcon({ density, className, ...props }) {
|
|
|
2491
2376
|
});
|
|
2492
2377
|
}
|
|
2493
2378
|
function MarkerContent({ density, className, ...props }) {
|
|
2494
|
-
return /* @__PURE__ */
|
|
2379
|
+
return /* @__PURE__ */ jsx22("span", {
|
|
2495
2380
|
"data-density": density,
|
|
2496
2381
|
"data-slot": "marker-content",
|
|
2497
2382
|
className: cn2("min-w-0 wrap-break-word group-data-[variant=separator]/marker:text-center [&>a]:underline [&>a]:underline-offset-3 [&>a:hover]:text-foreground", className),
|
|
@@ -2499,19 +2384,19 @@ function MarkerContent({ density, className, ...props }) {
|
|
|
2499
2384
|
});
|
|
2500
2385
|
}
|
|
2501
2386
|
// src/components/Bubble.tsx
|
|
2502
|
-
import { mergeProps as
|
|
2503
|
-
import { useRender as
|
|
2504
|
-
import { cva as
|
|
2505
|
-
import { jsx as
|
|
2387
|
+
import { mergeProps as mergeProps7 } from "@base-ui/react/merge-props";
|
|
2388
|
+
import { useRender as useRender7 } from "@base-ui/react/use-render";
|
|
2389
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
2390
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
2506
2391
|
function BubbleGroup({ density, className, ...props }) {
|
|
2507
|
-
return /* @__PURE__ */
|
|
2392
|
+
return /* @__PURE__ */ jsx23("div", {
|
|
2508
2393
|
"data-density": density,
|
|
2509
2394
|
"data-slot": "bubble-group",
|
|
2510
2395
|
className: cn2("flex min-w-0 flex-col gap-control-gap", className),
|
|
2511
2396
|
...props
|
|
2512
2397
|
});
|
|
2513
2398
|
}
|
|
2514
|
-
var bubbleVariants =
|
|
2399
|
+
var bubbleVariants = cva5("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
|
|
2515
2400
|
variants: {
|
|
2516
2401
|
variant: {
|
|
2517
2402
|
default: "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80",
|
|
@@ -2526,7 +2411,7 @@ var bubbleVariants = cva6("group/bubble relative flex w-fit max-w-[80%] min-w-0
|
|
|
2526
2411
|
defaultVariants: { variant: "default" }
|
|
2527
2412
|
});
|
|
2528
2413
|
function Bubble({ density, variant = "default", align = "start", className, ...props }) {
|
|
2529
|
-
return /* @__PURE__ */
|
|
2414
|
+
return /* @__PURE__ */ jsx23("div", {
|
|
2530
2415
|
"data-density": density,
|
|
2531
2416
|
"data-slot": "bubble",
|
|
2532
2417
|
"data-variant": variant,
|
|
@@ -2536,16 +2421,16 @@ function Bubble({ density, variant = "default", align = "start", className, ...p
|
|
|
2536
2421
|
});
|
|
2537
2422
|
}
|
|
2538
2423
|
function BubbleContent({ density, className, render, ...props }) {
|
|
2539
|
-
return
|
|
2424
|
+
return useRender7({
|
|
2540
2425
|
defaultTagName: "div",
|
|
2541
|
-
props:
|
|
2426
|
+
props: mergeProps7({
|
|
2542
2427
|
className: cn2("w-fit max-w-full min-w-0 overflow-hidden rounded-sm border border-transparent px-control-x py-control-gap text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [&:is(button)]:text-start [&:is(button,a)]:transition-colors motion-reduce:transition-none [&:is(button,a)]:outline-none [&:is(button,a)]:focus-visible:border-ring [&:is(button,a)]:focus-visible:ring-1 [&:is(button,a)]:focus-visible:ring-ring", className)
|
|
2543
2428
|
}, props),
|
|
2544
2429
|
render,
|
|
2545
2430
|
state: { slot: "bubble-content", density }
|
|
2546
2431
|
});
|
|
2547
2432
|
}
|
|
2548
|
-
var bubbleReactionsVariants =
|
|
2433
|
+
var bubbleReactionsVariants = cva5("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-sm ring-2 ring-card has-[button]:p-0", {
|
|
2549
2434
|
variants: {
|
|
2550
2435
|
side: { top: "top-0 -translate-y-3/4", bottom: "bottom-0 translate-y-3/4" },
|
|
2551
2436
|
align: { start: "start-3", end: "end-3" }
|
|
@@ -2559,7 +2444,7 @@ function BubbleReactions({
|
|
|
2559
2444
|
className,
|
|
2560
2445
|
...props
|
|
2561
2446
|
}) {
|
|
2562
|
-
return /* @__PURE__ */
|
|
2447
|
+
return /* @__PURE__ */ jsx23("div", {
|
|
2563
2448
|
"data-density": density,
|
|
2564
2449
|
"data-slot": "bubble-reactions",
|
|
2565
2450
|
"data-align": align,
|
|
@@ -2569,17 +2454,17 @@ function BubbleReactions({
|
|
|
2569
2454
|
});
|
|
2570
2455
|
}
|
|
2571
2456
|
// src/components/Message.tsx
|
|
2572
|
-
import { useContext as
|
|
2573
|
-
import { useRender as
|
|
2457
|
+
import { useContext as useContext2, useLayoutEffect, useMemo as useMemo3, useRef as useRef2, useState } from "react";
|
|
2458
|
+
import { useRender as useRender8 } from "@base-ui/react/use-render";
|
|
2574
2459
|
|
|
2575
2460
|
// src/message/MessageContext.ts
|
|
2576
|
-
import { createContext as
|
|
2577
|
-
var MessageContext =
|
|
2461
|
+
import { createContext as createContext2 } from "react";
|
|
2462
|
+
var MessageContext = createContext2(null);
|
|
2578
2463
|
|
|
2579
2464
|
// src/components/Message.tsx
|
|
2580
|
-
import { jsx as
|
|
2465
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2581
2466
|
function MessageGroup({ density, className, ...props }) {
|
|
2582
|
-
return /* @__PURE__ */
|
|
2467
|
+
return /* @__PURE__ */ jsx24("div", {
|
|
2583
2468
|
"data-density": density,
|
|
2584
2469
|
"data-slot": "message-group",
|
|
2585
2470
|
className: cn2("flex min-w-0 flex-col gap-control-gap", className),
|
|
@@ -2587,12 +2472,12 @@ function MessageGroup({ density, className, ...props }) {
|
|
|
2587
2472
|
});
|
|
2588
2473
|
}
|
|
2589
2474
|
function Message({ density, className, align = "start", style, ...props }) {
|
|
2590
|
-
const [footerOffset, setFooterOffset] =
|
|
2475
|
+
const [footerOffset, setFooterOffset] = useState(0);
|
|
2591
2476
|
const context = useMemo3(() => ({ setFooterOffset }), []);
|
|
2592
2477
|
const messageStyle = { ...style, "--message-footer-offset": `${footerOffset}px` };
|
|
2593
|
-
return /* @__PURE__ */
|
|
2478
|
+
return /* @__PURE__ */ jsx24(MessageContext.Provider, {
|
|
2594
2479
|
value: context,
|
|
2595
|
-
children: /* @__PURE__ */
|
|
2480
|
+
children: /* @__PURE__ */ jsx24("div", {
|
|
2596
2481
|
"data-density": density,
|
|
2597
2482
|
"data-slot": "message",
|
|
2598
2483
|
"data-align": align,
|
|
@@ -2603,7 +2488,7 @@ function Message({ density, className, align = "start", style, ...props }) {
|
|
|
2603
2488
|
});
|
|
2604
2489
|
}
|
|
2605
2490
|
function MessageAvatar({ density, className, ...props }) {
|
|
2606
|
-
return /* @__PURE__ */
|
|
2491
|
+
return /* @__PURE__ */ jsx24("div", {
|
|
2607
2492
|
"data-density": density,
|
|
2608
2493
|
"data-slot": "message-avatar",
|
|
2609
2494
|
className: cn2("flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-(--message-footer-offset)", className),
|
|
@@ -2611,7 +2496,7 @@ function MessageAvatar({ density, className, ...props }) {
|
|
|
2611
2496
|
});
|
|
2612
2497
|
}
|
|
2613
2498
|
function MessageContent({ density, className, ...props }) {
|
|
2614
|
-
return /* @__PURE__ */
|
|
2499
|
+
return /* @__PURE__ */ jsx24("div", {
|
|
2615
2500
|
"data-density": density,
|
|
2616
2501
|
"data-slot": "message-content",
|
|
2617
2502
|
className: cn2("flex w-full min-w-0 flex-col gap-control-gap wrap-break-word group-data-[align=end]/message:[&>[data-slot]:not([data-slot=message-header])]:self-end", className),
|
|
@@ -2619,7 +2504,7 @@ function MessageContent({ density, className, ...props }) {
|
|
|
2619
2504
|
});
|
|
2620
2505
|
}
|
|
2621
2506
|
function MessageHeader({ density, className, ...props }) {
|
|
2622
|
-
return /* @__PURE__ */
|
|
2507
|
+
return /* @__PURE__ */ jsx24("div", {
|
|
2623
2508
|
"data-density": density,
|
|
2624
2509
|
"data-slot": "message-header",
|
|
2625
2510
|
className: cn2("flex max-w-full min-w-0 items-center px-control-x text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0", className),
|
|
@@ -2627,8 +2512,8 @@ function MessageHeader({ density, className, ...props }) {
|
|
|
2627
2512
|
});
|
|
2628
2513
|
}
|
|
2629
2514
|
function MessageFooter({ density, className, ...props }) {
|
|
2630
|
-
const context =
|
|
2631
|
-
const footerRef =
|
|
2515
|
+
const context = useContext2(MessageContext);
|
|
2516
|
+
const footerRef = useRef2(null);
|
|
2632
2517
|
useLayoutEffect(() => {
|
|
2633
2518
|
const footer = footerRef.current;
|
|
2634
2519
|
const content = footer?.parentElement;
|
|
@@ -2647,7 +2532,7 @@ function MessageFooter({ density, className, ...props }) {
|
|
|
2647
2532
|
context.setFooterOffset(0);
|
|
2648
2533
|
};
|
|
2649
2534
|
}, [context]);
|
|
2650
|
-
return
|
|
2535
|
+
return useRender8({
|
|
2651
2536
|
defaultTagName: "div",
|
|
2652
2537
|
ref: footerRef,
|
|
2653
2538
|
state: { slot: "message-footer", density },
|
|
@@ -2658,11 +2543,11 @@ function MessageFooter({ density, className, ...props }) {
|
|
|
2658
2543
|
});
|
|
2659
2544
|
}
|
|
2660
2545
|
// src/components/Attachment.tsx
|
|
2661
|
-
import { mergeProps as
|
|
2662
|
-
import { useRender as
|
|
2663
|
-
import { cva as
|
|
2664
|
-
import { jsx as
|
|
2665
|
-
var attachmentVariants =
|
|
2546
|
+
import { mergeProps as mergeProps8 } from "@base-ui/react/merge-props";
|
|
2547
|
+
import { useRender as useRender9 } from "@base-ui/react/use-render";
|
|
2548
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
2549
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
2550
|
+
var attachmentVariants = cva6("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-md border bg-card text-card-foreground transition-colors motion-reduce:transition-none focus-within:ring-1 focus-within:ring-ring has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive data-[state=idle]:border-dashed", {
|
|
2666
2551
|
variants: {
|
|
2667
2552
|
size: {
|
|
2668
2553
|
default: "gap-control-gap text-sm has-data-[slot=attachment-content]:px-control-x has-data-[slot=attachment-content]:py-control-gap has-data-[slot=attachment-media]:p-control-gap",
|
|
@@ -2683,7 +2568,7 @@ function Attachment({
|
|
|
2683
2568
|
orientation = "horizontal",
|
|
2684
2569
|
...props
|
|
2685
2570
|
}) {
|
|
2686
|
-
return /* @__PURE__ */
|
|
2571
|
+
return /* @__PURE__ */ jsx25("div", {
|
|
2687
2572
|
"data-slot": "attachment",
|
|
2688
2573
|
"data-density": density,
|
|
2689
2574
|
"data-state": state,
|
|
@@ -2693,7 +2578,7 @@ function Attachment({
|
|
|
2693
2578
|
...props
|
|
2694
2579
|
});
|
|
2695
2580
|
}
|
|
2696
|
-
var attachmentMediaVariants =
|
|
2581
|
+
var attachmentMediaVariants = cva6("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-sm bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=horizontal]/attachment:group-data-[size=sm]/attachment:w-8 group-data-[orientation=horizontal]/attachment:group-data-[size=xs]/attachment:w-7 group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
|
|
2697
2582
|
variants: {
|
|
2698
2583
|
variant: {
|
|
2699
2584
|
icon: "",
|
|
@@ -2703,7 +2588,7 @@ var attachmentMediaVariants = cva7("relative flex aspect-square w-10 shrink-0 it
|
|
|
2703
2588
|
defaultVariants: { variant: "icon" }
|
|
2704
2589
|
});
|
|
2705
2590
|
function AttachmentMedia({ density, className, variant = "icon", ...props }) {
|
|
2706
|
-
return /* @__PURE__ */
|
|
2591
|
+
return /* @__PURE__ */ jsx25("div", {
|
|
2707
2592
|
"data-slot": "attachment-media",
|
|
2708
2593
|
"data-density": density,
|
|
2709
2594
|
"data-variant": variant,
|
|
@@ -2712,7 +2597,7 @@ function AttachmentMedia({ density, className, variant = "icon", ...props }) {
|
|
|
2712
2597
|
});
|
|
2713
2598
|
}
|
|
2714
2599
|
function AttachmentContent({ density, className, ...props }) {
|
|
2715
|
-
return /* @__PURE__ */
|
|
2600
|
+
return /* @__PURE__ */ jsx25("div", {
|
|
2716
2601
|
"data-slot": "attachment-content",
|
|
2717
2602
|
"data-density": density,
|
|
2718
2603
|
className: cn2("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className),
|
|
@@ -2720,7 +2605,7 @@ function AttachmentContent({ density, className, ...props }) {
|
|
|
2720
2605
|
});
|
|
2721
2606
|
}
|
|
2722
2607
|
function AttachmentTitle({ density, className, ...props }) {
|
|
2723
|
-
return /* @__PURE__ */
|
|
2608
|
+
return /* @__PURE__ */ jsx25("span", {
|
|
2724
2609
|
"data-slot": "attachment-title",
|
|
2725
2610
|
"data-density": density,
|
|
2726
2611
|
className: cn2("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className),
|
|
@@ -2728,7 +2613,7 @@ function AttachmentTitle({ density, className, ...props }) {
|
|
|
2728
2613
|
});
|
|
2729
2614
|
}
|
|
2730
2615
|
function AttachmentDescription({ density, className, ...props }) {
|
|
2731
|
-
return /* @__PURE__ */
|
|
2616
|
+
return /* @__PURE__ */ jsx25("span", {
|
|
2732
2617
|
"data-slot": "attachment-description",
|
|
2733
2618
|
"data-density": density,
|
|
2734
2619
|
className: cn2("mt-0.5 block max-w-full min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive", className),
|
|
@@ -2736,7 +2621,7 @@ function AttachmentDescription({ density, className, ...props }) {
|
|
|
2736
2621
|
});
|
|
2737
2622
|
}
|
|
2738
2623
|
function AttachmentActions({ density, className, ...props }) {
|
|
2739
|
-
return /* @__PURE__ */
|
|
2624
|
+
return /* @__PURE__ */ jsx25("div", {
|
|
2740
2625
|
"data-slot": "attachment-actions",
|
|
2741
2626
|
"data-density": density,
|
|
2742
2627
|
className: cn2("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:end-3 group-data-[orientation=vertical]/attachment:gap-1", className),
|
|
@@ -2749,7 +2634,7 @@ function AttachmentAction({
|
|
|
2749
2634
|
size = "icon-xs",
|
|
2750
2635
|
...props
|
|
2751
2636
|
}) {
|
|
2752
|
-
return /* @__PURE__ */
|
|
2637
|
+
return /* @__PURE__ */ jsx25(Button2, {
|
|
2753
2638
|
"data-slot": "attachment-action",
|
|
2754
2639
|
variant,
|
|
2755
2640
|
size,
|
|
@@ -2758,15 +2643,15 @@ function AttachmentAction({
|
|
|
2758
2643
|
});
|
|
2759
2644
|
}
|
|
2760
2645
|
function AttachmentTrigger({ density, className, render, type, ...props }) {
|
|
2761
|
-
return
|
|
2646
|
+
return useRender9({
|
|
2762
2647
|
defaultTagName: "button",
|
|
2763
|
-
props:
|
|
2648
|
+
props: mergeProps8({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, props),
|
|
2764
2649
|
render,
|
|
2765
2650
|
state: { slot: "attachment-trigger", density }
|
|
2766
2651
|
});
|
|
2767
2652
|
}
|
|
2768
2653
|
function AttachmentGroup({ density, className, ...props }) {
|
|
2769
|
-
return /* @__PURE__ */
|
|
2654
|
+
return /* @__PURE__ */ jsx25("div", {
|
|
2770
2655
|
"data-slot": "attachment-group",
|
|
2771
2656
|
"data-density": density,
|
|
2772
2657
|
className: cn2("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 no-scrollbar gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className),
|
|
@@ -2774,8 +2659,8 @@ function AttachmentGroup({ density, className, ...props }) {
|
|
|
2774
2659
|
});
|
|
2775
2660
|
}
|
|
2776
2661
|
// src/components/InlineEdit.tsx
|
|
2777
|
-
import { useEffect as useEffect2, useRef as
|
|
2778
|
-
import { jsx as
|
|
2662
|
+
import { useEffect as useEffect2, useRef as useRef3, useState as useState2 } from "react";
|
|
2663
|
+
import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2779
2664
|
function InlineEdit({
|
|
2780
2665
|
label,
|
|
2781
2666
|
value,
|
|
@@ -2786,10 +2671,10 @@ function InlineEdit({
|
|
|
2786
2671
|
onCommit,
|
|
2787
2672
|
onCancel
|
|
2788
2673
|
}) {
|
|
2789
|
-
const input =
|
|
2790
|
-
const isFinished =
|
|
2791
|
-
const [isSaving, setSaving] =
|
|
2792
|
-
const [error, setError] =
|
|
2674
|
+
const input = useRef3(null);
|
|
2675
|
+
const isFinished = useRef3(false);
|
|
2676
|
+
const [isSaving, setSaving] = useState2(false);
|
|
2677
|
+
const [error, setError] = useState2("");
|
|
2793
2678
|
useEffect2(() => {
|
|
2794
2679
|
input.current?.focus();
|
|
2795
2680
|
if (shouldSelectOnMount)
|
|
@@ -2810,14 +2695,14 @@ function InlineEdit({
|
|
|
2810
2695
|
setSaving(false);
|
|
2811
2696
|
}
|
|
2812
2697
|
};
|
|
2813
|
-
return /* @__PURE__ */
|
|
2698
|
+
return /* @__PURE__ */ jsxs16("form", {
|
|
2814
2699
|
className: "flex min-w-0 flex-col gap-1",
|
|
2815
2700
|
onSubmit: (event) => {
|
|
2816
2701
|
event.preventDefault();
|
|
2817
2702
|
save();
|
|
2818
2703
|
},
|
|
2819
2704
|
children: [
|
|
2820
|
-
/* @__PURE__ */
|
|
2705
|
+
/* @__PURE__ */ jsx26(Input2, {
|
|
2821
2706
|
ref: input,
|
|
2822
2707
|
density,
|
|
2823
2708
|
"aria-label": label,
|
|
@@ -2838,7 +2723,7 @@ function InlineEdit({
|
|
|
2838
2723
|
}
|
|
2839
2724
|
}
|
|
2840
2725
|
}),
|
|
2841
|
-
error && /* @__PURE__ */
|
|
2726
|
+
error && /* @__PURE__ */ jsx26("p", {
|
|
2842
2727
|
role: "alert",
|
|
2843
2728
|
className: "text-xs text-destructive",
|
|
2844
2729
|
children: error
|
|
@@ -2850,28 +2735,28 @@ function InlineEdit({
|
|
|
2850
2735
|
import { Radio } from "@base-ui/react/radio";
|
|
2851
2736
|
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
2852
2737
|
import { StarIcon, CircleOffIcon } from "lucide-react";
|
|
2853
|
-
import { jsx as
|
|
2738
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2854
2739
|
function StarRating({ label, value, disabled, density, onValueChange }) {
|
|
2855
|
-
return /* @__PURE__ */
|
|
2740
|
+
return /* @__PURE__ */ jsx27(RadioGroup, {
|
|
2856
2741
|
"aria-label": label,
|
|
2857
2742
|
value,
|
|
2858
2743
|
disabled,
|
|
2859
2744
|
"data-density": density,
|
|
2860
2745
|
className: "inline-flex w-fit shrink-0 items-center gap-0.5",
|
|
2861
2746
|
onValueChange,
|
|
2862
|
-
children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */
|
|
2747
|
+
children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx27(Radio.Root, {
|
|
2863
2748
|
value: star,
|
|
2864
2749
|
nativeButton: true,
|
|
2865
|
-
render: /* @__PURE__ */
|
|
2750
|
+
render: /* @__PURE__ */ jsx27("button", {
|
|
2866
2751
|
type: "button"
|
|
2867
2752
|
}),
|
|
2868
2753
|
"aria-label": star === 0 ? "Unrated" : `${star} ${star === 1 ? "star" : "stars"}`,
|
|
2869
2754
|
title: star === 0 ? "Clear rating" : `${star} stars`,
|
|
2870
2755
|
className: "inline-flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground outline-none hover:text-primary focus-visible:ring-1 focus-visible:ring-ring data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
2871
|
-
children: star === 0 ? /* @__PURE__ */
|
|
2756
|
+
children: star === 0 ? /* @__PURE__ */ jsx27(CircleOffIcon, {
|
|
2872
2757
|
"aria-hidden": "true",
|
|
2873
2758
|
className: "size-3"
|
|
2874
|
-
}) : /* @__PURE__ */
|
|
2759
|
+
}) : /* @__PURE__ */ jsx27(StarIcon, {
|
|
2875
2760
|
"aria-hidden": "true",
|
|
2876
2761
|
className: star <= value ? "size-3.5 fill-primary text-primary" : "size-3.5"
|
|
2877
2762
|
})
|
|
@@ -2879,8 +2764,8 @@ function StarRating({ label, value, disabled, density, onValueChange }) {
|
|
|
2879
2764
|
});
|
|
2880
2765
|
}
|
|
2881
2766
|
// src/components/ConfirmationDialog.tsx
|
|
2882
|
-
import { useState as
|
|
2883
|
-
import { jsx as
|
|
2767
|
+
import { useState as useState3 } from "react";
|
|
2768
|
+
import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2884
2769
|
function ConfirmationDialog({
|
|
2885
2770
|
open,
|
|
2886
2771
|
title,
|
|
@@ -2889,9 +2774,9 @@ function ConfirmationDialog({
|
|
|
2889
2774
|
onOpenChange,
|
|
2890
2775
|
onConfirm
|
|
2891
2776
|
}) {
|
|
2892
|
-
const [isPending, setPending] =
|
|
2893
|
-
const [error, setError] =
|
|
2894
|
-
return /* @__PURE__ */
|
|
2777
|
+
const [isPending, setPending] = useState3(false);
|
|
2778
|
+
const [error, setError] = useState3("");
|
|
2779
|
+
return /* @__PURE__ */ jsx28(AlertDialog, {
|
|
2895
2780
|
open,
|
|
2896
2781
|
onOpenChange: (next) => {
|
|
2897
2782
|
if (!isPending) {
|
|
@@ -2899,31 +2784,31 @@ function ConfirmationDialog({
|
|
|
2899
2784
|
onOpenChange(next);
|
|
2900
2785
|
}
|
|
2901
2786
|
},
|
|
2902
|
-
children: /* @__PURE__ */
|
|
2787
|
+
children: /* @__PURE__ */ jsxs17(AlertDialogContent, {
|
|
2903
2788
|
children: [
|
|
2904
|
-
/* @__PURE__ */
|
|
2789
|
+
/* @__PURE__ */ jsxs17(AlertDialogHeader, {
|
|
2905
2790
|
children: [
|
|
2906
|
-
/* @__PURE__ */
|
|
2791
|
+
/* @__PURE__ */ jsx28(AlertDialogTitle, {
|
|
2907
2792
|
children: title
|
|
2908
2793
|
}),
|
|
2909
|
-
/* @__PURE__ */
|
|
2794
|
+
/* @__PURE__ */ jsx28(AlertDialogDescription, {
|
|
2910
2795
|
children: description
|
|
2911
2796
|
})
|
|
2912
2797
|
]
|
|
2913
2798
|
}),
|
|
2914
|
-
error && /* @__PURE__ */
|
|
2799
|
+
error && /* @__PURE__ */ jsx28(Alert2, {
|
|
2915
2800
|
variant: "destructive",
|
|
2916
|
-
children: /* @__PURE__ */
|
|
2801
|
+
children: /* @__PURE__ */ jsx28(AlertDescription2, {
|
|
2917
2802
|
children: error
|
|
2918
2803
|
})
|
|
2919
2804
|
}),
|
|
2920
|
-
/* @__PURE__ */
|
|
2805
|
+
/* @__PURE__ */ jsxs17(AlertDialogFooter, {
|
|
2921
2806
|
children: [
|
|
2922
|
-
/* @__PURE__ */
|
|
2807
|
+
/* @__PURE__ */ jsx28(AlertDialogCancel, {
|
|
2923
2808
|
disabled: isPending,
|
|
2924
2809
|
children: "Cancel"
|
|
2925
2810
|
}),
|
|
2926
|
-
/* @__PURE__ */
|
|
2811
|
+
/* @__PURE__ */ jsx28(Button2, {
|
|
2927
2812
|
variant: "destructive",
|
|
2928
2813
|
disabled: isPending,
|
|
2929
2814
|
onClick: async () => {
|
|
@@ -2947,13 +2832,13 @@ function ConfirmationDialog({
|
|
|
2947
2832
|
});
|
|
2948
2833
|
}
|
|
2949
2834
|
// src/components/ImagePicker.tsx
|
|
2950
|
-
import { useRef as
|
|
2835
|
+
import { useRef as useRef4 } from "react";
|
|
2951
2836
|
import { ImageIcon, UploadIcon } from "lucide-react";
|
|
2952
2837
|
|
|
2953
2838
|
// src/hooks/useObjectURL.ts
|
|
2954
|
-
import { useEffect as useEffect3, useState as
|
|
2839
|
+
import { useEffect as useEffect3, useState as useState4 } from "react";
|
|
2955
2840
|
function useObjectURL(file) {
|
|
2956
|
-
const [url, setURL] =
|
|
2841
|
+
const [url, setURL] = useState4();
|
|
2957
2842
|
useEffect3(() => {
|
|
2958
2843
|
if (!file) {
|
|
2959
2844
|
setURL(undefined);
|
|
@@ -2967,32 +2852,32 @@ function useObjectURL(file) {
|
|
|
2967
2852
|
}
|
|
2968
2853
|
|
|
2969
2854
|
// src/components/ImagePicker.tsx
|
|
2970
|
-
import { jsx as
|
|
2855
|
+
import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2971
2856
|
function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
|
|
2972
|
-
const input =
|
|
2857
|
+
const input = useRef4(null);
|
|
2973
2858
|
const preview = useObjectURL(file);
|
|
2974
2859
|
const image = file === null ? undefined : preview ?? src;
|
|
2975
|
-
return /* @__PURE__ */
|
|
2860
|
+
return /* @__PURE__ */ jsxs18("figure", {
|
|
2976
2861
|
className: "flex min-w-0 flex-col items-center gap-3",
|
|
2977
2862
|
"aria-label": label,
|
|
2978
2863
|
children: [
|
|
2979
|
-
/* @__PURE__ */
|
|
2864
|
+
/* @__PURE__ */ jsxs18(Avatar2, {
|
|
2980
2865
|
size: "preview",
|
|
2981
2866
|
shape: "square",
|
|
2982
2867
|
children: [
|
|
2983
|
-
/* @__PURE__ */
|
|
2868
|
+
/* @__PURE__ */ jsx29(AvatarImage2, {
|
|
2984
2869
|
src: image,
|
|
2985
2870
|
alt: label
|
|
2986
2871
|
}),
|
|
2987
|
-
/* @__PURE__ */
|
|
2988
|
-
children: /* @__PURE__ */
|
|
2872
|
+
/* @__PURE__ */ jsx29(AvatarFallback2, {
|
|
2873
|
+
children: /* @__PURE__ */ jsx29(ImageIcon, {
|
|
2989
2874
|
className: "size-12",
|
|
2990
2875
|
"aria-hidden": "true"
|
|
2991
2876
|
})
|
|
2992
2877
|
})
|
|
2993
2878
|
]
|
|
2994
2879
|
}),
|
|
2995
|
-
/* @__PURE__ */
|
|
2880
|
+
/* @__PURE__ */ jsx29("input", {
|
|
2996
2881
|
ref: input,
|
|
2997
2882
|
hidden: true,
|
|
2998
2883
|
type: "file",
|
|
@@ -3006,22 +2891,22 @@ function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
|
|
|
3006
2891
|
event.currentTarget.value = "";
|
|
3007
2892
|
}
|
|
3008
2893
|
}),
|
|
3009
|
-
/* @__PURE__ */
|
|
2894
|
+
/* @__PURE__ */ jsxs18("div", {
|
|
3010
2895
|
className: "flex flex-wrap justify-center gap-2",
|
|
3011
2896
|
children: [
|
|
3012
|
-
/* @__PURE__ */
|
|
2897
|
+
/* @__PURE__ */ jsxs18(Button2, {
|
|
3013
2898
|
type: "button",
|
|
3014
2899
|
variant: "outline",
|
|
3015
2900
|
disabled,
|
|
3016
2901
|
onClick: () => input.current?.click(),
|
|
3017
2902
|
children: [
|
|
3018
|
-
/* @__PURE__ */
|
|
2903
|
+
/* @__PURE__ */ jsx29(UploadIcon, {
|
|
3019
2904
|
"data-icon": "inline-start"
|
|
3020
2905
|
}),
|
|
3021
2906
|
"Upload image"
|
|
3022
2907
|
]
|
|
3023
2908
|
}),
|
|
3024
|
-
/* @__PURE__ */
|
|
2909
|
+
/* @__PURE__ */ jsx29(Button2, {
|
|
3025
2910
|
type: "button",
|
|
3026
2911
|
variant: "outline",
|
|
3027
2912
|
disabled: disabled || !image,
|
|
@@ -3033,19 +2918,972 @@ function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
|
|
|
3033
2918
|
]
|
|
3034
2919
|
});
|
|
3035
2920
|
}
|
|
3036
|
-
// src/components/
|
|
3037
|
-
import {
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
2921
|
+
// src/components/NumberField.tsx
|
|
2922
|
+
import { NumberField as NumberFieldPrimitive } from "@base-ui/react/number-field";
|
|
2923
|
+
import { MinusIcon, PlusIcon, MoveHorizontalIcon } from "lucide-react";
|
|
2924
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2925
|
+
function NumberField({ density, className, ...props }) {
|
|
2926
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Root, {
|
|
2927
|
+
"data-density": density,
|
|
2928
|
+
"data-slot": "number-field",
|
|
2929
|
+
className: (state) => cn2("flex min-w-0 flex-col gap-field-gap", typeof className === "function" ? className(state) : className),
|
|
2930
|
+
...props
|
|
2931
|
+
});
|
|
2932
|
+
}
|
|
2933
|
+
function NumberFieldGroup({
|
|
2934
|
+
density,
|
|
2935
|
+
className,
|
|
2936
|
+
...props
|
|
2937
|
+
}) {
|
|
2938
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Group, {
|
|
2939
|
+
"data-density": density,
|
|
2940
|
+
"data-slot": "number-field-group",
|
|
2941
|
+
className: (state) => cn2("flex h-control min-w-0 items-stretch rounded-sm border border-input bg-secondary text-foreground transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring data-disabled:opacity-50 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
2942
|
+
...props
|
|
2943
|
+
});
|
|
2944
|
+
}
|
|
2945
|
+
function NumberFieldInput({
|
|
2946
|
+
density,
|
|
2947
|
+
className,
|
|
2948
|
+
...props
|
|
2949
|
+
}) {
|
|
2950
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Input, {
|
|
2951
|
+
"data-density": density,
|
|
2952
|
+
"data-slot": "number-field-input",
|
|
2953
|
+
className: (state) => cn2("min-w-0 flex-1 bg-transparent px-control-x text-center text-sm tabular-nums outline-none disabled:cursor-not-allowed", typeof className === "function" ? className(state) : className),
|
|
2954
|
+
...props
|
|
2955
|
+
});
|
|
2956
|
+
}
|
|
2957
|
+
function NumberFieldDecrement({
|
|
2958
|
+
density,
|
|
2959
|
+
className,
|
|
2960
|
+
children = /* @__PURE__ */ jsx30(MinusIcon, {}),
|
|
2961
|
+
...props
|
|
2962
|
+
}) {
|
|
2963
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Decrement, {
|
|
2964
|
+
"data-density": density,
|
|
2965
|
+
"data-slot": "number-field-decrement",
|
|
2966
|
+
className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-s-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
|
|
2967
|
+
...props,
|
|
2968
|
+
children
|
|
2969
|
+
});
|
|
2970
|
+
}
|
|
2971
|
+
function NumberFieldIncrement({
|
|
2972
|
+
density,
|
|
2973
|
+
className,
|
|
2974
|
+
children = /* @__PURE__ */ jsx30(PlusIcon, {}),
|
|
2975
|
+
...props
|
|
2976
|
+
}) {
|
|
2977
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Increment, {
|
|
2978
|
+
"data-density": density,
|
|
2979
|
+
"data-slot": "number-field-increment",
|
|
2980
|
+
className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-e-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
|
|
2981
|
+
...props,
|
|
2982
|
+
children
|
|
2983
|
+
});
|
|
2984
|
+
}
|
|
2985
|
+
function NumberFieldScrubArea({
|
|
2986
|
+
density,
|
|
2987
|
+
className,
|
|
2988
|
+
...props
|
|
2989
|
+
}) {
|
|
2990
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubArea, {
|
|
2991
|
+
"data-density": density,
|
|
2992
|
+
"data-slot": "number-field-scrub-area",
|
|
2993
|
+
className: (state) => cn2("flex w-fit cursor-ew-resize items-center gap-control-gap text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
2994
|
+
...props
|
|
2995
|
+
});
|
|
2996
|
+
}
|
|
2997
|
+
function NumberFieldScrubAreaCursor({
|
|
2998
|
+
density,
|
|
2999
|
+
className,
|
|
3000
|
+
children = /* @__PURE__ */ jsx30(MoveHorizontalIcon, {}),
|
|
3001
|
+
...props
|
|
3002
|
+
}) {
|
|
3003
|
+
const resolvedDensity = useDensity(density);
|
|
3004
|
+
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubAreaCursor, {
|
|
3005
|
+
"data-density": resolvedDensity,
|
|
3006
|
+
"data-slot": "number-field-scrub-area-cursor",
|
|
3007
|
+
className: (state) => cn2("z-50 font-sans text-sm text-foreground [&_svg]:size-5", typeof className === "function" ? className(state) : className),
|
|
3008
|
+
...props,
|
|
3041
3009
|
children
|
|
3042
3010
|
});
|
|
3043
3011
|
}
|
|
3012
|
+
// src/components/Meter.tsx
|
|
3013
|
+
import { Meter as MeterPrimitive } from "@base-ui/react/meter";
|
|
3014
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
3015
|
+
function Meter({ density, className, ...props }) {
|
|
3016
|
+
return /* @__PURE__ */ jsx31(MeterPrimitive.Root, {
|
|
3017
|
+
"data-density": density,
|
|
3018
|
+
"data-slot": "meter",
|
|
3019
|
+
className: (state) => cn2("flex min-w-0 flex-wrap items-center gap-field-gap", typeof className === "function" ? className(state) : className),
|
|
3020
|
+
...props
|
|
3021
|
+
});
|
|
3022
|
+
}
|
|
3023
|
+
function MeterLabel({ density, className, ...props }) {
|
|
3024
|
+
return /* @__PURE__ */ jsx31(MeterPrimitive.Label, {
|
|
3025
|
+
"data-density": density,
|
|
3026
|
+
"data-slot": "meter-label",
|
|
3027
|
+
className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
3028
|
+
...props
|
|
3029
|
+
});
|
|
3030
|
+
}
|
|
3031
|
+
function MeterValue({ density, className, ...props }) {
|
|
3032
|
+
return /* @__PURE__ */ jsx31(MeterPrimitive.Value, {
|
|
3033
|
+
"data-density": density,
|
|
3034
|
+
"data-slot": "meter-value",
|
|
3035
|
+
className: (state) => cn2("ms-auto text-sm text-muted-foreground tabular-nums", typeof className === "function" ? className(state) : className),
|
|
3036
|
+
...props
|
|
3037
|
+
});
|
|
3038
|
+
}
|
|
3039
|
+
function MeterTrack({ density, className, ...props }) {
|
|
3040
|
+
return /* @__PURE__ */ jsx31(MeterPrimitive.Track, {
|
|
3041
|
+
"data-density": density,
|
|
3042
|
+
"data-slot": "meter-track",
|
|
3043
|
+
className: (state) => cn2("h-1 w-full overflow-hidden rounded-sm bg-muted", typeof className === "function" ? className(state) : className),
|
|
3044
|
+
...props
|
|
3045
|
+
});
|
|
3046
|
+
}
|
|
3047
|
+
function MeterIndicator({
|
|
3048
|
+
density,
|
|
3049
|
+
className,
|
|
3050
|
+
...props
|
|
3051
|
+
}) {
|
|
3052
|
+
return /* @__PURE__ */ jsx31(MeterPrimitive.Indicator, {
|
|
3053
|
+
"data-density": density,
|
|
3054
|
+
"data-slot": "meter-indicator",
|
|
3055
|
+
className: (state) => cn2("h-full bg-primary transition-[width] motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
3056
|
+
...props
|
|
3057
|
+
});
|
|
3058
|
+
}
|
|
3059
|
+
// src/components/Stepper.tsx
|
|
3060
|
+
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
3061
|
+
import { CheckIcon as CheckIcon5 } from "lucide-react";
|
|
3062
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
3063
|
+
function Stepper({ density, className, ...props }) {
|
|
3064
|
+
return /* @__PURE__ */ jsx32(TabsPrimitive.Root, {
|
|
3065
|
+
"data-density": density,
|
|
3066
|
+
"data-slot": "stepper",
|
|
3067
|
+
className: (state) => cn2("group/stepper flex min-w-0 flex-col gap-panel data-[orientation=vertical]:flex-row", typeof className === "function" ? className(state) : className),
|
|
3068
|
+
...props
|
|
3069
|
+
});
|
|
3070
|
+
}
|
|
3071
|
+
function StepperList({
|
|
3072
|
+
density,
|
|
3073
|
+
className,
|
|
3074
|
+
activateOnFocus = false,
|
|
3075
|
+
...props
|
|
3076
|
+
}) {
|
|
3077
|
+
return /* @__PURE__ */ jsx32(TabsPrimitive.List, {
|
|
3078
|
+
"data-density": density,
|
|
3079
|
+
"data-slot": "stepper-list",
|
|
3080
|
+
activateOnFocus,
|
|
3081
|
+
className: (state) => cn2("flex min-w-0 gap-panel group-data-[orientation=vertical]/stepper:flex-col", typeof className === "function" ? className(state) : className),
|
|
3082
|
+
...props
|
|
3083
|
+
});
|
|
3084
|
+
}
|
|
3085
|
+
function StepperTrigger({ density, className, ...props }) {
|
|
3086
|
+
return /* @__PURE__ */ jsx32(TabsPrimitive.Tab, {
|
|
3087
|
+
"data-density": density,
|
|
3088
|
+
"data-slot": "stepper-trigger",
|
|
3089
|
+
className: (state) => cn2("group/step flex min-h-control items-center gap-control-gap rounded-sm text-sm text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring data-active:text-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:opacity-50", typeof className === "function" ? className(state) : className),
|
|
3090
|
+
...props
|
|
3091
|
+
});
|
|
3092
|
+
}
|
|
3093
|
+
function StepperIndicator({ completed = false, children, className, ...props }) {
|
|
3094
|
+
return /* @__PURE__ */ jsx32("span", {
|
|
3095
|
+
"aria-hidden": "true",
|
|
3096
|
+
"data-slot": "stepper-indicator",
|
|
3097
|
+
"data-completed": completed || undefined,
|
|
3098
|
+
className: cn2("flex size-control shrink-0 items-center justify-center rounded-sm border border-input bg-secondary text-sm tabular-nums group-data-active/step:border-primary group-data-active/step:bg-primary group-data-active/step:text-primary-foreground data-completed:border-primary data-completed:text-primary [&_svg]:size-3.5", className),
|
|
3099
|
+
...props,
|
|
3100
|
+
children: completed ? /* @__PURE__ */ jsx32(CheckIcon5, {}) : children
|
|
3101
|
+
});
|
|
3102
|
+
}
|
|
3103
|
+
function StepperContent({ density, className, ...props }) {
|
|
3104
|
+
return /* @__PURE__ */ jsx32(TabsPrimitive.Panel, {
|
|
3105
|
+
"data-density": density,
|
|
3106
|
+
"data-slot": "stepper-content",
|
|
3107
|
+
className: (state) => cn2("min-w-0 flex-1 outline-none focus-visible:ring-1 focus-visible:ring-ring", typeof className === "function" ? className(state) : className),
|
|
3108
|
+
...props
|
|
3109
|
+
});
|
|
3110
|
+
}
|
|
3111
|
+
// src/components/AppShell.tsx
|
|
3112
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3113
|
+
function AppShell({
|
|
3114
|
+
navigation,
|
|
3115
|
+
brand,
|
|
3116
|
+
children,
|
|
3117
|
+
header,
|
|
3118
|
+
sidebarFooter,
|
|
3119
|
+
footer,
|
|
3120
|
+
height = "100dvh",
|
|
3121
|
+
defaultSidebarOpen = true,
|
|
3122
|
+
label = "Application",
|
|
3123
|
+
density
|
|
3124
|
+
}) {
|
|
3125
|
+
return /* @__PURE__ */ jsxs19(SidebarProvider2, {
|
|
3126
|
+
density,
|
|
3127
|
+
defaultOpen: defaultSidebarOpen,
|
|
3128
|
+
className: "relative min-h-0",
|
|
3129
|
+
style: { height },
|
|
3130
|
+
"data-scroll": "none",
|
|
3131
|
+
children: [
|
|
3132
|
+
/* @__PURE__ */ jsxs19(Sidebar2, {
|
|
3133
|
+
collapsible: "icon",
|
|
3134
|
+
position: "container",
|
|
3135
|
+
children: [
|
|
3136
|
+
/* @__PURE__ */ jsx33(SidebarHeader2, {
|
|
3137
|
+
children: brand
|
|
3138
|
+
}),
|
|
3139
|
+
/* @__PURE__ */ jsx33(SidebarContent2, {
|
|
3140
|
+
children: /* @__PURE__ */ jsx33("nav", {
|
|
3141
|
+
"aria-label": "Primary navigation",
|
|
3142
|
+
children: /* @__PURE__ */ jsx33(SidebarGroup2, {
|
|
3143
|
+
children: /* @__PURE__ */ jsx33(SidebarMenu2, {
|
|
3144
|
+
children: navigation.map((item) => /* @__PURE__ */ jsx33(SidebarMenuItem2, {
|
|
3145
|
+
children: /* @__PURE__ */ jsxs19(SidebarMenuButton2, {
|
|
3146
|
+
render: /* @__PURE__ */ jsx33("a", {
|
|
3147
|
+
href: item.href,
|
|
3148
|
+
"aria-current": item.active ? "page" : undefined
|
|
3149
|
+
}),
|
|
3150
|
+
isActive: item.active,
|
|
3151
|
+
tooltip: item.label,
|
|
3152
|
+
children: [
|
|
3153
|
+
item.icon,
|
|
3154
|
+
/* @__PURE__ */ jsx33("span", {
|
|
3155
|
+
children: item.label
|
|
3156
|
+
})
|
|
3157
|
+
]
|
|
3158
|
+
})
|
|
3159
|
+
}, item.id))
|
|
3160
|
+
})
|
|
3161
|
+
})
|
|
3162
|
+
})
|
|
3163
|
+
}),
|
|
3164
|
+
sidebarFooter && /* @__PURE__ */ jsx33(SidebarFooter2, {
|
|
3165
|
+
children: sidebarFooter
|
|
3166
|
+
})
|
|
3167
|
+
]
|
|
3168
|
+
}),
|
|
3169
|
+
/* @__PURE__ */ jsxs19(SidebarInset2, {
|
|
3170
|
+
"aria-label": label,
|
|
3171
|
+
className: "min-h-0 min-w-0",
|
|
3172
|
+
"data-scroll": "none",
|
|
3173
|
+
children: [
|
|
3174
|
+
/* @__PURE__ */ jsxs19("header", {
|
|
3175
|
+
"data-scroll": "none",
|
|
3176
|
+
className: "flex shrink-0 items-center gap-control-gap border-b border-border p-panel",
|
|
3177
|
+
children: [
|
|
3178
|
+
/* @__PURE__ */ jsx33(SidebarTrigger2, {}),
|
|
3179
|
+
/* @__PURE__ */ jsx33(Separator2, {
|
|
3180
|
+
orientation: "vertical",
|
|
3181
|
+
className: "h-control"
|
|
3182
|
+
}),
|
|
3183
|
+
header
|
|
3184
|
+
]
|
|
3185
|
+
}),
|
|
3186
|
+
/* @__PURE__ */ jsx33(ScrollArea, {
|
|
3187
|
+
className: "min-h-0 flex-1",
|
|
3188
|
+
children: /* @__PURE__ */ jsx33("div", {
|
|
3189
|
+
className: "flex min-w-0 flex-col gap-panel p-panel",
|
|
3190
|
+
children
|
|
3191
|
+
})
|
|
3192
|
+
}),
|
|
3193
|
+
footer && /* @__PURE__ */ jsx33("footer", {
|
|
3194
|
+
className: "shrink-0 border-t border-border p-panel",
|
|
3195
|
+
"data-scroll": "none",
|
|
3196
|
+
children: footer
|
|
3197
|
+
})
|
|
3198
|
+
]
|
|
3199
|
+
})
|
|
3200
|
+
]
|
|
3201
|
+
});
|
|
3202
|
+
}
|
|
3203
|
+
// src/components/PageHeader.tsx
|
|
3204
|
+
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3205
|
+
function PageHeader({ title, description, breadcrumbs, actions, density }) {
|
|
3206
|
+
return /* @__PURE__ */ jsxs20("header", {
|
|
3207
|
+
"data-density": density,
|
|
3208
|
+
"data-slot": "page-header",
|
|
3209
|
+
"data-scroll": "none",
|
|
3210
|
+
className: "flex min-w-0 flex-col gap-field-gap",
|
|
3211
|
+
children: [
|
|
3212
|
+
breadcrumbs,
|
|
3213
|
+
/* @__PURE__ */ jsxs20("div", {
|
|
3214
|
+
className: "flex min-w-0 flex-wrap items-start justify-between gap-panel",
|
|
3215
|
+
children: [
|
|
3216
|
+
/* @__PURE__ */ jsxs20("div", {
|
|
3217
|
+
className: "min-w-0",
|
|
3218
|
+
children: [
|
|
3219
|
+
/* @__PURE__ */ jsx34("h1", {
|
|
3220
|
+
className: "text-xl font-semibold text-foreground",
|
|
3221
|
+
children: title
|
|
3222
|
+
}),
|
|
3223
|
+
description && /* @__PURE__ */ jsx34("div", {
|
|
3224
|
+
className: "mt-1 text-sm text-muted-foreground",
|
|
3225
|
+
children: description
|
|
3226
|
+
})
|
|
3227
|
+
]
|
|
3228
|
+
}),
|
|
3229
|
+
actions && /* @__PURE__ */ jsx34("div", {
|
|
3230
|
+
className: "flex shrink-0 flex-wrap items-center gap-control-gap",
|
|
3231
|
+
children: actions
|
|
3232
|
+
})
|
|
3233
|
+
]
|
|
3234
|
+
})
|
|
3235
|
+
]
|
|
3236
|
+
});
|
|
3237
|
+
}
|
|
3238
|
+
// src/components/WorkspaceSwitcher.tsx
|
|
3239
|
+
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3240
|
+
function WorkspaceSwitcher({
|
|
3241
|
+
workspaces,
|
|
3242
|
+
value,
|
|
3243
|
+
defaultValue,
|
|
3244
|
+
onValueChange,
|
|
3245
|
+
disabled,
|
|
3246
|
+
label = "Workspace",
|
|
3247
|
+
density
|
|
3248
|
+
}) {
|
|
3249
|
+
return /* @__PURE__ */ jsxs21(Select, {
|
|
3250
|
+
items: workspaces,
|
|
3251
|
+
value,
|
|
3252
|
+
defaultValue: defaultValue ?? workspaces[0]?.value,
|
|
3253
|
+
onValueChange: (next) => {
|
|
3254
|
+
if (next !== null)
|
|
3255
|
+
onValueChange?.(next);
|
|
3256
|
+
},
|
|
3257
|
+
disabled,
|
|
3258
|
+
children: [
|
|
3259
|
+
/* @__PURE__ */ jsx35(SelectTrigger, {
|
|
3260
|
+
"aria-label": label,
|
|
3261
|
+
density,
|
|
3262
|
+
children: /* @__PURE__ */ jsx35(SelectValue, {})
|
|
3263
|
+
}),
|
|
3264
|
+
/* @__PURE__ */ jsx35(SelectContent, {
|
|
3265
|
+
density,
|
|
3266
|
+
children: /* @__PURE__ */ jsx35(SelectGroup, {
|
|
3267
|
+
children: workspaces.map((workspace) => /* @__PURE__ */ jsx35(SelectItem, {
|
|
3268
|
+
value: workspace.value,
|
|
3269
|
+
children: workspace.label
|
|
3270
|
+
}, workspace.value))
|
|
3271
|
+
})
|
|
3272
|
+
})
|
|
3273
|
+
]
|
|
3274
|
+
});
|
|
3275
|
+
}
|
|
3276
|
+
// src/components/AccountMenu.tsx
|
|
3277
|
+
import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3278
|
+
function AccountMenu({ name, email, image, onAction, density }) {
|
|
3279
|
+
return /* @__PURE__ */ jsxs22(DropdownMenu2, {
|
|
3280
|
+
children: [
|
|
3281
|
+
/* @__PURE__ */ jsxs22(DropdownMenuTrigger2, {
|
|
3282
|
+
render: /* @__PURE__ */ jsx36(Button2, {
|
|
3283
|
+
variant: "ghost",
|
|
3284
|
+
density
|
|
3285
|
+
}),
|
|
3286
|
+
"aria-label": `Account menu for ${name}`,
|
|
3287
|
+
children: [
|
|
3288
|
+
/* @__PURE__ */ jsxs22(Avatar2, {
|
|
3289
|
+
className: "size-control",
|
|
3290
|
+
children: [
|
|
3291
|
+
/* @__PURE__ */ jsx36(AvatarImage2, {
|
|
3292
|
+
src: image,
|
|
3293
|
+
alt: ""
|
|
3294
|
+
}),
|
|
3295
|
+
/* @__PURE__ */ jsx36(AvatarFallback2, {
|
|
3296
|
+
children: name.slice(0, 2).toUpperCase()
|
|
3297
|
+
})
|
|
3298
|
+
]
|
|
3299
|
+
}),
|
|
3300
|
+
/* @__PURE__ */ jsx36("span", {
|
|
3301
|
+
children: name
|
|
3302
|
+
})
|
|
3303
|
+
]
|
|
3304
|
+
}),
|
|
3305
|
+
/* @__PURE__ */ jsx36(DropdownMenuContent2, {
|
|
3306
|
+
density,
|
|
3307
|
+
align: "end",
|
|
3308
|
+
children: /* @__PURE__ */ jsxs22(DropdownMenuGroup2, {
|
|
3309
|
+
children: [
|
|
3310
|
+
/* @__PURE__ */ jsx36(DropdownMenuLabel2, {
|
|
3311
|
+
children: email ?? name
|
|
3312
|
+
}),
|
|
3313
|
+
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3314
|
+
onClick: () => onAction("profile"),
|
|
3315
|
+
children: "Profile"
|
|
3316
|
+
}),
|
|
3317
|
+
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3318
|
+
onClick: () => onAction("settings"),
|
|
3319
|
+
children: "Settings"
|
|
3320
|
+
}),
|
|
3321
|
+
/* @__PURE__ */ jsx36(DropdownMenuSeparator2, {}),
|
|
3322
|
+
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3323
|
+
onClick: () => onAction("sign-out"),
|
|
3324
|
+
children: "Sign out"
|
|
3325
|
+
})
|
|
3326
|
+
]
|
|
3327
|
+
})
|
|
3328
|
+
})
|
|
3329
|
+
]
|
|
3330
|
+
});
|
|
3331
|
+
}
|
|
3332
|
+
// src/components/StatCard.tsx
|
|
3333
|
+
import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3334
|
+
function StatCard({
|
|
3335
|
+
label,
|
|
3336
|
+
value,
|
|
3337
|
+
change,
|
|
3338
|
+
changeIntent = "neutral",
|
|
3339
|
+
description,
|
|
3340
|
+
children,
|
|
3341
|
+
loading = false,
|
|
3342
|
+
density
|
|
3343
|
+
}) {
|
|
3344
|
+
return /* @__PURE__ */ jsxs23(Card2, {
|
|
3345
|
+
density,
|
|
3346
|
+
"aria-label": label,
|
|
3347
|
+
"aria-busy": loading,
|
|
3348
|
+
children: [
|
|
3349
|
+
/* @__PURE__ */ jsxs23(CardHeader2, {
|
|
3350
|
+
children: [
|
|
3351
|
+
/* @__PURE__ */ jsx37(CardTitle2, {
|
|
3352
|
+
children: label
|
|
3353
|
+
}),
|
|
3354
|
+
description && /* @__PURE__ */ jsx37(CardDescription2, {
|
|
3355
|
+
children: description
|
|
3356
|
+
})
|
|
3357
|
+
]
|
|
3358
|
+
}),
|
|
3359
|
+
/* @__PURE__ */ jsx37(CardContent2, {
|
|
3360
|
+
children: /* @__PURE__ */ jsxs23("div", {
|
|
3361
|
+
className: "flex flex-wrap items-center justify-between gap-control-gap",
|
|
3362
|
+
children: [
|
|
3363
|
+
loading ? /* @__PURE__ */ jsx37(Skeleton2, {
|
|
3364
|
+
className: "h-8 w-24",
|
|
3365
|
+
"aria-label": `Loading ${label}`
|
|
3366
|
+
}) : /* @__PURE__ */ jsx37("div", {
|
|
3367
|
+
className: "text-2xl font-semibold tabular-nums",
|
|
3368
|
+
children: value
|
|
3369
|
+
}),
|
|
3370
|
+
change && /* @__PURE__ */ jsx37(Badge2, {
|
|
3371
|
+
variant: changeIntent === "positive" ? "success" : changeIntent === "negative" ? "destructive" : "secondary",
|
|
3372
|
+
children: change
|
|
3373
|
+
})
|
|
3374
|
+
]
|
|
3375
|
+
})
|
|
3376
|
+
}),
|
|
3377
|
+
children && /* @__PURE__ */ jsx37(CardFooter2, {
|
|
3378
|
+
children
|
|
3379
|
+
})
|
|
3380
|
+
]
|
|
3381
|
+
});
|
|
3382
|
+
}
|
|
3383
|
+
// src/components/AuthForm.tsx
|
|
3384
|
+
import { useId as useId2, useState as useState5 } from "react";
|
|
3385
|
+
import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3386
|
+
function AuthForm({
|
|
3387
|
+
mode = "sign-in",
|
|
3388
|
+
onSubmit,
|
|
3389
|
+
footer,
|
|
3390
|
+
alternativeActions,
|
|
3391
|
+
disabled = false,
|
|
3392
|
+
density
|
|
3393
|
+
}) {
|
|
3394
|
+
const id = useId2();
|
|
3395
|
+
const [pending, setPending] = useState5(false);
|
|
3396
|
+
const [error, setError] = useState5("");
|
|
3397
|
+
const title = mode === "sign-up" ? "Create an account" : mode === "reset-password" ? "Reset your password" : "Sign in";
|
|
3398
|
+
async function submit(event) {
|
|
3399
|
+
event.preventDefault();
|
|
3400
|
+
const data = new FormData(event.currentTarget);
|
|
3401
|
+
setError("");
|
|
3402
|
+
setPending(true);
|
|
3403
|
+
try {
|
|
3404
|
+
await onSubmit({
|
|
3405
|
+
email: String(data.get("email") ?? ""),
|
|
3406
|
+
password: String(data.get("password") ?? ""),
|
|
3407
|
+
name: String(data.get("name") ?? "")
|
|
3408
|
+
});
|
|
3409
|
+
} catch (error) {
|
|
3410
|
+
setError(error instanceof Error ? error.message : "Unable to submit. Please try again.");
|
|
3411
|
+
} finally {
|
|
3412
|
+
setPending(false);
|
|
3413
|
+
}
|
|
3414
|
+
}
|
|
3415
|
+
return /* @__PURE__ */ jsxs24(Card2, {
|
|
3416
|
+
density,
|
|
3417
|
+
children: [
|
|
3418
|
+
/* @__PURE__ */ jsxs24(CardHeader2, {
|
|
3419
|
+
children: [
|
|
3420
|
+
/* @__PURE__ */ jsx38(CardTitle2, {
|
|
3421
|
+
children: title
|
|
3422
|
+
}),
|
|
3423
|
+
/* @__PURE__ */ jsx38(CardDescription2, {
|
|
3424
|
+
children: mode === "reset-password" ? "Enter your email to request a password reset." : "Enter your details to continue."
|
|
3425
|
+
})
|
|
3426
|
+
]
|
|
3427
|
+
}),
|
|
3428
|
+
/* @__PURE__ */ jsx38(CardContent2, {
|
|
3429
|
+
children: /* @__PURE__ */ jsx38("form", {
|
|
3430
|
+
onSubmit: submit,
|
|
3431
|
+
"aria-label": title,
|
|
3432
|
+
"aria-busy": pending,
|
|
3433
|
+
children: /* @__PURE__ */ jsxs24(FieldGroup2, {
|
|
3434
|
+
children: [
|
|
3435
|
+
mode === "sign-up" && /* @__PURE__ */ jsxs24(Field2, {
|
|
3436
|
+
children: [
|
|
3437
|
+
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3438
|
+
htmlFor: id + "-name",
|
|
3439
|
+
children: "Name"
|
|
3440
|
+
}),
|
|
3441
|
+
/* @__PURE__ */ jsx38(Input2, {
|
|
3442
|
+
id: id + "-name",
|
|
3443
|
+
name: "name",
|
|
3444
|
+
autoComplete: "name",
|
|
3445
|
+
required: true,
|
|
3446
|
+
disabled: disabled || pending
|
|
3447
|
+
})
|
|
3448
|
+
]
|
|
3449
|
+
}),
|
|
3450
|
+
/* @__PURE__ */ jsxs24(Field2, {
|
|
3451
|
+
children: [
|
|
3452
|
+
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3453
|
+
htmlFor: id + "-email",
|
|
3454
|
+
children: "Email"
|
|
3455
|
+
}),
|
|
3456
|
+
/* @__PURE__ */ jsx38(Input2, {
|
|
3457
|
+
id: id + "-email",
|
|
3458
|
+
name: "email",
|
|
3459
|
+
type: "email",
|
|
3460
|
+
autoComplete: "email",
|
|
3461
|
+
required: true,
|
|
3462
|
+
disabled: disabled || pending
|
|
3463
|
+
})
|
|
3464
|
+
]
|
|
3465
|
+
}),
|
|
3466
|
+
mode !== "reset-password" && /* @__PURE__ */ jsxs24(Field2, {
|
|
3467
|
+
children: [
|
|
3468
|
+
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3469
|
+
htmlFor: id + "-password",
|
|
3470
|
+
children: "Password"
|
|
3471
|
+
}),
|
|
3472
|
+
/* @__PURE__ */ jsx38(Input2, {
|
|
3473
|
+
id: id + "-password",
|
|
3474
|
+
name: "password",
|
|
3475
|
+
type: "password",
|
|
3476
|
+
autoComplete: mode === "sign-up" ? "new-password" : "current-password",
|
|
3477
|
+
minLength: mode === "sign-up" ? 8 : undefined,
|
|
3478
|
+
required: true,
|
|
3479
|
+
disabled: disabled || pending
|
|
3480
|
+
}),
|
|
3481
|
+
mode === "sign-up" && /* @__PURE__ */ jsx38(FieldDescription2, {
|
|
3482
|
+
children: "Use at least eight characters."
|
|
3483
|
+
})
|
|
3484
|
+
]
|
|
3485
|
+
}),
|
|
3486
|
+
error && /* @__PURE__ */ jsxs24(Alert2, {
|
|
3487
|
+
variant: "destructive",
|
|
3488
|
+
children: [
|
|
3489
|
+
/* @__PURE__ */ jsx38(AlertTitle2, {
|
|
3490
|
+
children: "Request failed"
|
|
3491
|
+
}),
|
|
3492
|
+
/* @__PURE__ */ jsx38(AlertDescription2, {
|
|
3493
|
+
children: error
|
|
3494
|
+
})
|
|
3495
|
+
]
|
|
3496
|
+
}),
|
|
3497
|
+
/* @__PURE__ */ jsxs24(Button2, {
|
|
3498
|
+
type: "submit",
|
|
3499
|
+
disabled: disabled || pending,
|
|
3500
|
+
children: [
|
|
3501
|
+
pending && /* @__PURE__ */ jsx38(Spinner2, {
|
|
3502
|
+
"data-icon": "inline-start"
|
|
3503
|
+
}),
|
|
3504
|
+
mode === "reset-password" ? "Send reset link" : title
|
|
3505
|
+
]
|
|
3506
|
+
}),
|
|
3507
|
+
alternativeActions
|
|
3508
|
+
]
|
|
3509
|
+
})
|
|
3510
|
+
})
|
|
3511
|
+
}),
|
|
3512
|
+
footer && /* @__PURE__ */ jsx38(CardFooter2, {
|
|
3513
|
+
children: footer
|
|
3514
|
+
})
|
|
3515
|
+
]
|
|
3516
|
+
});
|
|
3517
|
+
}
|
|
3518
|
+
// src/components/SettingsSection.tsx
|
|
3519
|
+
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3520
|
+
function SettingsSection({
|
|
3521
|
+
title,
|
|
3522
|
+
description,
|
|
3523
|
+
children,
|
|
3524
|
+
onSubmit,
|
|
3525
|
+
saveLabel = "Save changes",
|
|
3526
|
+
pending = false,
|
|
3527
|
+
disabled = false,
|
|
3528
|
+
footer,
|
|
3529
|
+
destructive = false,
|
|
3530
|
+
density
|
|
3531
|
+
}) {
|
|
3532
|
+
return /* @__PURE__ */ jsx39("form", {
|
|
3533
|
+
"aria-label": title,
|
|
3534
|
+
onSubmit,
|
|
3535
|
+
"aria-busy": pending,
|
|
3536
|
+
children: /* @__PURE__ */ jsxs25(Card2, {
|
|
3537
|
+
density,
|
|
3538
|
+
children: [
|
|
3539
|
+
/* @__PURE__ */ jsxs25(CardHeader2, {
|
|
3540
|
+
children: [
|
|
3541
|
+
/* @__PURE__ */ jsx39(CardTitle2, {
|
|
3542
|
+
children: title
|
|
3543
|
+
}),
|
|
3544
|
+
description && /* @__PURE__ */ jsx39(CardDescription2, {
|
|
3545
|
+
children: description
|
|
3546
|
+
})
|
|
3547
|
+
]
|
|
3548
|
+
}),
|
|
3549
|
+
/* @__PURE__ */ jsx39(CardContent2, {
|
|
3550
|
+
children: /* @__PURE__ */ jsxs25("fieldset", {
|
|
3551
|
+
disabled: disabled || pending,
|
|
3552
|
+
className: "min-w-0 border-0 p-0",
|
|
3553
|
+
children: [
|
|
3554
|
+
/* @__PURE__ */ jsx39("legend", {
|
|
3555
|
+
className: "sr-only",
|
|
3556
|
+
children: title
|
|
3557
|
+
}),
|
|
3558
|
+
/* @__PURE__ */ jsx39(FieldGroup2, {
|
|
3559
|
+
children
|
|
3560
|
+
})
|
|
3561
|
+
]
|
|
3562
|
+
})
|
|
3563
|
+
}),
|
|
3564
|
+
/* @__PURE__ */ jsxs25(CardFooter2, {
|
|
3565
|
+
className: "flex flex-wrap items-center justify-between gap-control-gap",
|
|
3566
|
+
children: [
|
|
3567
|
+
footer,
|
|
3568
|
+
/* @__PURE__ */ jsxs25(Button2, {
|
|
3569
|
+
type: "submit",
|
|
3570
|
+
variant: destructive ? "destructive" : "default",
|
|
3571
|
+
disabled: disabled || pending,
|
|
3572
|
+
children: [
|
|
3573
|
+
pending && /* @__PURE__ */ jsx39(Spinner2, {
|
|
3574
|
+
"data-icon": "inline-start"
|
|
3575
|
+
}),
|
|
3576
|
+
saveLabel
|
|
3577
|
+
]
|
|
3578
|
+
})
|
|
3579
|
+
]
|
|
3580
|
+
})
|
|
3581
|
+
]
|
|
3582
|
+
})
|
|
3583
|
+
});
|
|
3584
|
+
}
|
|
3585
|
+
// src/components/TagInput.tsx
|
|
3586
|
+
import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3587
|
+
function TagInput({
|
|
3588
|
+
label,
|
|
3589
|
+
options,
|
|
3590
|
+
value,
|
|
3591
|
+
defaultValue,
|
|
3592
|
+
onValueChange,
|
|
3593
|
+
disabled,
|
|
3594
|
+
name,
|
|
3595
|
+
placeholder = "Add tags",
|
|
3596
|
+
density
|
|
3597
|
+
}) {
|
|
3598
|
+
const anchor = useComboboxAnchor();
|
|
3599
|
+
return /* @__PURE__ */ jsxs26(Combobox, {
|
|
3600
|
+
items: options,
|
|
3601
|
+
multiple: true,
|
|
3602
|
+
value,
|
|
3603
|
+
defaultValue,
|
|
3604
|
+
onValueChange,
|
|
3605
|
+
disabled,
|
|
3606
|
+
name,
|
|
3607
|
+
children: [
|
|
3608
|
+
/* @__PURE__ */ jsxs26(ComboboxChips, {
|
|
3609
|
+
ref: anchor,
|
|
3610
|
+
density,
|
|
3611
|
+
children: [
|
|
3612
|
+
/* @__PURE__ */ jsx40(ComboboxValue, {
|
|
3613
|
+
children: (values) => values.map((item) => /* @__PURE__ */ jsx40(ComboboxChip, {
|
|
3614
|
+
removeLabel: `Remove ${item}`,
|
|
3615
|
+
children: item
|
|
3616
|
+
}, item))
|
|
3617
|
+
}),
|
|
3618
|
+
/* @__PURE__ */ jsx40(ComboboxChipsInput, {
|
|
3619
|
+
"aria-label": label,
|
|
3620
|
+
placeholder
|
|
3621
|
+
})
|
|
3622
|
+
]
|
|
3623
|
+
}),
|
|
3624
|
+
/* @__PURE__ */ jsxs26(ComboboxContent, {
|
|
3625
|
+
anchor,
|
|
3626
|
+
density,
|
|
3627
|
+
children: [
|
|
3628
|
+
/* @__PURE__ */ jsx40(ComboboxEmpty, {
|
|
3629
|
+
children: "No matching tags."
|
|
3630
|
+
}),
|
|
3631
|
+
/* @__PURE__ */ jsx40(ComboboxList, {
|
|
3632
|
+
children: /* @__PURE__ */ jsx40(ComboboxGroup, {
|
|
3633
|
+
children: /* @__PURE__ */ jsx40(ComboboxCollection, {
|
|
3634
|
+
children: (item) => /* @__PURE__ */ jsx40(ComboboxItem, {
|
|
3635
|
+
value: item,
|
|
3636
|
+
children: item
|
|
3637
|
+
}, item)
|
|
3638
|
+
})
|
|
3639
|
+
})
|
|
3640
|
+
})
|
|
3641
|
+
]
|
|
3642
|
+
})
|
|
3643
|
+
]
|
|
3644
|
+
});
|
|
3645
|
+
}
|
|
3646
|
+
// src/components/FilterBar.tsx
|
|
3647
|
+
import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3648
|
+
function FilterBar({
|
|
3649
|
+
label,
|
|
3650
|
+
search,
|
|
3651
|
+
onSearchChange,
|
|
3652
|
+
filters,
|
|
3653
|
+
value,
|
|
3654
|
+
onValueChange,
|
|
3655
|
+
disabled,
|
|
3656
|
+
density
|
|
3657
|
+
}) {
|
|
3658
|
+
return /* @__PURE__ */ jsxs27("fieldset", {
|
|
3659
|
+
"aria-label": label,
|
|
3660
|
+
disabled,
|
|
3661
|
+
"data-density": density,
|
|
3662
|
+
className: "flex min-w-0 flex-wrap items-center gap-2",
|
|
3663
|
+
children: [
|
|
3664
|
+
/* @__PURE__ */ jsx41(Input2, {
|
|
3665
|
+
"aria-label": `Search ${label}`,
|
|
3666
|
+
type: "search",
|
|
3667
|
+
value: search,
|
|
3668
|
+
onChange: (event) => onSearchChange(event.target.value),
|
|
3669
|
+
className: "min-w-40 flex-1"
|
|
3670
|
+
}),
|
|
3671
|
+
filters.map((filter) => /* @__PURE__ */ jsxs27(NativeSelect2, {
|
|
3672
|
+
"aria-label": filter.label,
|
|
3673
|
+
value: value[filter.id] ?? "",
|
|
3674
|
+
onChange: (event) => onValueChange({ ...value, [filter.id]: event.target.value }),
|
|
3675
|
+
children: [
|
|
3676
|
+
/* @__PURE__ */ jsxs27(NativeSelectOption2, {
|
|
3677
|
+
value: "",
|
|
3678
|
+
children: [
|
|
3679
|
+
"All ",
|
|
3680
|
+
filter.label.toLowerCase()
|
|
3681
|
+
]
|
|
3682
|
+
}),
|
|
3683
|
+
filter.options.map((option) => /* @__PURE__ */ jsx41(NativeSelectOption2, {
|
|
3684
|
+
value: option.value,
|
|
3685
|
+
children: option.label
|
|
3686
|
+
}, option.value))
|
|
3687
|
+
]
|
|
3688
|
+
}, filter.id)),
|
|
3689
|
+
/* @__PURE__ */ jsx41(Button2, {
|
|
3690
|
+
type: "button",
|
|
3691
|
+
variant: "ghost",
|
|
3692
|
+
disabled: !search && !Object.values(value).some(Boolean),
|
|
3693
|
+
onClick: () => {
|
|
3694
|
+
onSearchChange("");
|
|
3695
|
+
onValueChange({});
|
|
3696
|
+
},
|
|
3697
|
+
children: "Clear filters"
|
|
3698
|
+
})
|
|
3699
|
+
]
|
|
3700
|
+
});
|
|
3701
|
+
}
|
|
3702
|
+
// src/components/BarList.tsx
|
|
3703
|
+
import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3704
|
+
function BarList({
|
|
3705
|
+
label,
|
|
3706
|
+
items,
|
|
3707
|
+
onItemSelect,
|
|
3708
|
+
valueFormatter = (value) => value.toLocaleString(),
|
|
3709
|
+
density
|
|
3710
|
+
}) {
|
|
3711
|
+
const max = Math.max(1, ...items.map((item) => item.value));
|
|
3712
|
+
return /* @__PURE__ */ jsxs28("section", {
|
|
3713
|
+
"aria-label": label,
|
|
3714
|
+
"data-density": density,
|
|
3715
|
+
children: [
|
|
3716
|
+
/* @__PURE__ */ jsx42("ul", {
|
|
3717
|
+
className: "grid gap-3",
|
|
3718
|
+
children: items.map((item) => /* @__PURE__ */ jsx42("li", {
|
|
3719
|
+
children: /* @__PURE__ */ jsxs28(Meter, {
|
|
3720
|
+
min: 0,
|
|
3721
|
+
max,
|
|
3722
|
+
value: item.value,
|
|
3723
|
+
"aria-label": item.label,
|
|
3724
|
+
format: { maximumFractionDigits: 2 },
|
|
3725
|
+
children: [
|
|
3726
|
+
/* @__PURE__ */ jsxs28("div", {
|
|
3727
|
+
className: "mb-1 flex items-center justify-between gap-3 text-sm",
|
|
3728
|
+
children: [
|
|
3729
|
+
/* @__PURE__ */ jsx42(MeterLabel, {
|
|
3730
|
+
children: onItemSelect ? /* @__PURE__ */ jsx42(Button2, {
|
|
3731
|
+
type: "button",
|
|
3732
|
+
variant: "link",
|
|
3733
|
+
className: "h-auto p-0",
|
|
3734
|
+
onClick: () => onItemSelect(item),
|
|
3735
|
+
children: item.label
|
|
3736
|
+
}) : item.label
|
|
3737
|
+
}),
|
|
3738
|
+
/* @__PURE__ */ jsx42(MeterValue, {
|
|
3739
|
+
children: () => valueFormatter(item.value)
|
|
3740
|
+
})
|
|
3741
|
+
]
|
|
3742
|
+
}),
|
|
3743
|
+
/* @__PURE__ */ jsx42(MeterTrack, {
|
|
3744
|
+
children: /* @__PURE__ */ jsx42(MeterIndicator, {})
|
|
3745
|
+
})
|
|
3746
|
+
]
|
|
3747
|
+
})
|
|
3748
|
+
}, item.id))
|
|
3749
|
+
}),
|
|
3750
|
+
!items.length && /* @__PURE__ */ jsx42("p", {
|
|
3751
|
+
role: "status",
|
|
3752
|
+
className: "text-sm text-muted-foreground",
|
|
3753
|
+
children: "No data available."
|
|
3754
|
+
})
|
|
3755
|
+
]
|
|
3756
|
+
});
|
|
3757
|
+
}
|
|
3758
|
+
// src/components/StatusTracker.tsx
|
|
3759
|
+
import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3760
|
+
var statusClasses = { success: "bg-success", warning: "bg-warning", error: "bg-destructive", unknown: "bg-muted" };
|
|
3761
|
+
function StatusTracker({ label, items, onItemSelect, density }) {
|
|
3762
|
+
return /* @__PURE__ */ jsx43(TooltipProvider2, {
|
|
3763
|
+
children: /* @__PURE__ */ jsx43("div", {
|
|
3764
|
+
role: "group",
|
|
3765
|
+
"aria-label": label,
|
|
3766
|
+
"data-density": density,
|
|
3767
|
+
className: "flex min-w-0 gap-1",
|
|
3768
|
+
children: items.map((item) => /* @__PURE__ */ jsxs29(Tooltip2, {
|
|
3769
|
+
children: [
|
|
3770
|
+
/* @__PURE__ */ jsx43(TooltipTrigger2, {
|
|
3771
|
+
"aria-label": `${item.label}: ${item.status}`,
|
|
3772
|
+
onClick: () => onItemSelect?.(item),
|
|
3773
|
+
className: cn2("h-8 min-w-2 flex-1 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", statusClasses[item.status])
|
|
3774
|
+
}),
|
|
3775
|
+
/* @__PURE__ */ jsxs29(TooltipContent2, {
|
|
3776
|
+
children: [
|
|
3777
|
+
item.label,
|
|
3778
|
+
": ",
|
|
3779
|
+
item.description ?? item.status
|
|
3780
|
+
]
|
|
3781
|
+
})
|
|
3782
|
+
]
|
|
3783
|
+
}, item.id))
|
|
3784
|
+
})
|
|
3785
|
+
});
|
|
3786
|
+
}
|
|
3787
|
+
// src/components/DashboardLayout.tsx
|
|
3788
|
+
import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3789
|
+
function DashboardLayout({
|
|
3790
|
+
title,
|
|
3791
|
+
description,
|
|
3792
|
+
actions,
|
|
3793
|
+
filters,
|
|
3794
|
+
stats,
|
|
3795
|
+
children,
|
|
3796
|
+
footer,
|
|
3797
|
+
density
|
|
3798
|
+
}) {
|
|
3799
|
+
return /* @__PURE__ */ jsxs30("div", {
|
|
3800
|
+
"data-density": density,
|
|
3801
|
+
"data-scroll": "none",
|
|
3802
|
+
className: "grid min-w-0 gap-6",
|
|
3803
|
+
children: [
|
|
3804
|
+
/* @__PURE__ */ jsx44(PageHeader, {
|
|
3805
|
+
title,
|
|
3806
|
+
description,
|
|
3807
|
+
actions
|
|
3808
|
+
}),
|
|
3809
|
+
filters,
|
|
3810
|
+
stats.length > 0 && /* @__PURE__ */ jsx44("div", {
|
|
3811
|
+
className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
|
|
3812
|
+
children: stats.map(({ id, ...stat }) => /* @__PURE__ */ jsx44(StatCard, {
|
|
3813
|
+
...stat
|
|
3814
|
+
}, id))
|
|
3815
|
+
}),
|
|
3816
|
+
/* @__PURE__ */ jsx44("div", {
|
|
3817
|
+
className: "grid min-w-0 gap-4",
|
|
3818
|
+
children
|
|
3819
|
+
}),
|
|
3820
|
+
footer
|
|
3821
|
+
]
|
|
3822
|
+
});
|
|
3823
|
+
}
|
|
3824
|
+
// src/components/BillingUsage.tsx
|
|
3825
|
+
import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3826
|
+
function BillingUsage({ plan, price, period, metrics, onManage, pending, density }) {
|
|
3827
|
+
return /* @__PURE__ */ jsxs31(Card2, {
|
|
3828
|
+
density,
|
|
3829
|
+
"aria-label": "Billing and usage",
|
|
3830
|
+
children: [
|
|
3831
|
+
/* @__PURE__ */ jsxs31(CardHeader2, {
|
|
3832
|
+
children: [
|
|
3833
|
+
/* @__PURE__ */ jsx45(CardTitle2, {
|
|
3834
|
+
children: plan
|
|
3835
|
+
}),
|
|
3836
|
+
/* @__PURE__ */ jsxs31(CardDescription2, {
|
|
3837
|
+
children: [
|
|
3838
|
+
price,
|
|
3839
|
+
" · ",
|
|
3840
|
+
period
|
|
3841
|
+
]
|
|
3842
|
+
})
|
|
3843
|
+
]
|
|
3844
|
+
}),
|
|
3845
|
+
/* @__PURE__ */ jsx45(CardContent2, {
|
|
3846
|
+
className: "grid gap-4",
|
|
3847
|
+
children: metrics.map((metric) => /* @__PURE__ */ jsxs31(Meter, {
|
|
3848
|
+
value: metric.used,
|
|
3849
|
+
max: metric.limit,
|
|
3850
|
+
"aria-label": metric.label,
|
|
3851
|
+
children: [
|
|
3852
|
+
/* @__PURE__ */ jsxs31("div", {
|
|
3853
|
+
className: "mb-2 flex items-center justify-between gap-3 text-sm",
|
|
3854
|
+
children: [
|
|
3855
|
+
/* @__PURE__ */ jsx45(MeterLabel, {
|
|
3856
|
+
children: metric.label
|
|
3857
|
+
}),
|
|
3858
|
+
/* @__PURE__ */ jsx45(MeterValue, {
|
|
3859
|
+
children: () => `${metric.used.toLocaleString()} / ${metric.limit.toLocaleString()}${metric.unit ? ` ${metric.unit}` : ""}`
|
|
3860
|
+
})
|
|
3861
|
+
]
|
|
3862
|
+
}),
|
|
3863
|
+
/* @__PURE__ */ jsx45(MeterTrack, {
|
|
3864
|
+
children: /* @__PURE__ */ jsx45(MeterIndicator, {})
|
|
3865
|
+
})
|
|
3866
|
+
]
|
|
3867
|
+
}, metric.id))
|
|
3868
|
+
}),
|
|
3869
|
+
/* @__PURE__ */ jsx45(CardFooter2, {
|
|
3870
|
+
children: /* @__PURE__ */ jsx45(Button2, {
|
|
3871
|
+
type: "button",
|
|
3872
|
+
variant: "outline",
|
|
3873
|
+
onClick: onManage,
|
|
3874
|
+
disabled: pending,
|
|
3875
|
+
children: "Manage billing"
|
|
3876
|
+
})
|
|
3877
|
+
})
|
|
3878
|
+
]
|
|
3879
|
+
});
|
|
3880
|
+
}
|
|
3044
3881
|
export {
|
|
3045
3882
|
Accordion,
|
|
3046
3883
|
AccordionContent,
|
|
3047
3884
|
AccordionItem,
|
|
3048
3885
|
AccordionTrigger,
|
|
3886
|
+
AccountMenu,
|
|
3049
3887
|
Alert2 as Alert,
|
|
3050
3888
|
AlertAction2 as AlertAction,
|
|
3051
3889
|
AlertDescription2 as AlertDescription,
|
|
@@ -3062,6 +3900,7 @@ export {
|
|
|
3062
3900
|
AlertDialogTitle,
|
|
3063
3901
|
AlertDialogTrigger,
|
|
3064
3902
|
AlertTitle2 as AlertTitle,
|
|
3903
|
+
AppShell,
|
|
3065
3904
|
AspectRatio,
|
|
3066
3905
|
Attachment,
|
|
3067
3906
|
AttachmentAction,
|
|
@@ -3072,6 +3911,7 @@ export {
|
|
|
3072
3911
|
AttachmentMedia,
|
|
3073
3912
|
AttachmentTitle,
|
|
3074
3913
|
AttachmentTrigger,
|
|
3914
|
+
AuthForm,
|
|
3075
3915
|
Avatar2 as Avatar,
|
|
3076
3916
|
AvatarBadge2 as AvatarBadge,
|
|
3077
3917
|
AvatarFallback2 as AvatarFallback,
|
|
@@ -3079,6 +3919,8 @@ export {
|
|
|
3079
3919
|
AvatarGroupCount2 as AvatarGroupCount,
|
|
3080
3920
|
AvatarImage2 as AvatarImage,
|
|
3081
3921
|
Badge2 as Badge,
|
|
3922
|
+
BarList,
|
|
3923
|
+
BillingUsage,
|
|
3082
3924
|
Breadcrumb,
|
|
3083
3925
|
BreadcrumbEllipsis,
|
|
3084
3926
|
BreadcrumbItem,
|
|
@@ -3137,6 +3979,7 @@ export {
|
|
|
3137
3979
|
ContextMenuSubContent,
|
|
3138
3980
|
ContextMenuSubTrigger,
|
|
3139
3981
|
ContextMenuTrigger,
|
|
3982
|
+
DashboardLayout,
|
|
3140
3983
|
DensityProvider,
|
|
3141
3984
|
Dialog2 as Dialog,
|
|
3142
3985
|
DialogClose2 as DialogClose,
|
|
@@ -3149,9 +3992,9 @@ export {
|
|
|
3149
3992
|
DialogTitle2 as DialogTitle,
|
|
3150
3993
|
DialogTrigger2 as DialogTrigger,
|
|
3151
3994
|
DirectionProvider2 as DirectionProvider,
|
|
3152
|
-
DragDropPreview,
|
|
3153
|
-
DragDropProvider,
|
|
3154
|
-
DragSource,
|
|
3995
|
+
DragDropPreview2 as DragDropPreview,
|
|
3996
|
+
DragDropProvider2 as DragDropProvider,
|
|
3997
|
+
DragSource2 as DragSource,
|
|
3155
3998
|
Drawer,
|
|
3156
3999
|
DrawerClose,
|
|
3157
4000
|
DrawerContent,
|
|
@@ -3163,7 +4006,7 @@ export {
|
|
|
3163
4006
|
DrawerSwipeHandle,
|
|
3164
4007
|
DrawerTitle,
|
|
3165
4008
|
DrawerTrigger,
|
|
3166
|
-
DropTarget,
|
|
4009
|
+
DropTarget2 as DropTarget,
|
|
3167
4010
|
DropdownMenu2 as DropdownMenu,
|
|
3168
4011
|
DropdownMenuCheckboxItem2 as DropdownMenuCheckboxItem,
|
|
3169
4012
|
DropdownMenuContent2 as DropdownMenuContent,
|
|
@@ -3196,6 +4039,7 @@ export {
|
|
|
3196
4039
|
FieldSeparator2 as FieldSeparator,
|
|
3197
4040
|
FieldSet2 as FieldSet,
|
|
3198
4041
|
FieldTitle2 as FieldTitle,
|
|
4042
|
+
FilterBar,
|
|
3199
4043
|
HoverCard2 as HoverCard,
|
|
3200
4044
|
HoverCardContent2 as HoverCardContent,
|
|
3201
4045
|
HoverCardTrigger2 as HoverCardTrigger,
|
|
@@ -3219,6 +4063,7 @@ export {
|
|
|
3219
4063
|
ItemSeparator,
|
|
3220
4064
|
ItemTitle,
|
|
3221
4065
|
JsonViewer,
|
|
4066
|
+
Kanban2 as Kanban,
|
|
3222
4067
|
Kbd2 as Kbd,
|
|
3223
4068
|
KbdGroup2 as KbdGroup,
|
|
3224
4069
|
Label2 as Label,
|
|
@@ -3247,9 +4092,14 @@ export {
|
|
|
3247
4092
|
MessageFooter,
|
|
3248
4093
|
MessageGroup,
|
|
3249
4094
|
MessageHeader,
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
4095
|
+
Meter,
|
|
4096
|
+
MeterIndicator,
|
|
4097
|
+
MeterLabel,
|
|
4098
|
+
MeterTrack,
|
|
4099
|
+
MeterValue,
|
|
4100
|
+
NativeSelect2 as NativeSelect,
|
|
4101
|
+
NativeSelectOptGroup2 as NativeSelectOptGroup,
|
|
4102
|
+
NativeSelectOption2 as NativeSelectOption,
|
|
3253
4103
|
NavigationMenu,
|
|
3254
4104
|
NavigationMenuContent,
|
|
3255
4105
|
NavigationMenuIndicator,
|
|
@@ -3258,6 +4108,14 @@ export {
|
|
|
3258
4108
|
NavigationMenuList,
|
|
3259
4109
|
NavigationMenuPositioner,
|
|
3260
4110
|
NavigationMenuTrigger,
|
|
4111
|
+
NumberField,
|
|
4112
|
+
NumberFieldDecrement,
|
|
4113
|
+
NumberFieldGroup,
|
|
4114
|
+
NumberFieldIncrement,
|
|
4115
|
+
NumberFieldInput,
|
|
4116
|
+
NumberFieldScrubArea,
|
|
4117
|
+
NumberFieldScrubAreaCursor,
|
|
4118
|
+
PageHeader,
|
|
3261
4119
|
PageMessage,
|
|
3262
4120
|
Pagination,
|
|
3263
4121
|
PaginationContent,
|
|
@@ -3272,7 +4130,7 @@ export {
|
|
|
3272
4130
|
PopoverHeader2 as PopoverHeader,
|
|
3273
4131
|
PopoverTitle2 as PopoverTitle,
|
|
3274
4132
|
PopoverTrigger2 as PopoverTrigger,
|
|
3275
|
-
PortalProvider,
|
|
4133
|
+
PortalProvider2 as PortalProvider,
|
|
3276
4134
|
Progress2 as Progress,
|
|
3277
4135
|
ProgressIndicator2 as ProgressIndicator,
|
|
3278
4136
|
ProgressLabel2 as ProgressLabel,
|
|
@@ -3282,6 +4140,7 @@ export {
|
|
|
3282
4140
|
RadioGroupItem2 as RadioGroupItem,
|
|
3283
4141
|
ScrollArea,
|
|
3284
4142
|
ScrollBar,
|
|
4143
|
+
ScrollGuard,
|
|
3285
4144
|
Select,
|
|
3286
4145
|
SelectContent,
|
|
3287
4146
|
SelectGroup,
|
|
@@ -3293,6 +4152,7 @@ export {
|
|
|
3293
4152
|
SelectTrigger,
|
|
3294
4153
|
SelectValue,
|
|
3295
4154
|
Separator2 as Separator,
|
|
4155
|
+
SettingsSection,
|
|
3296
4156
|
Sheet2 as Sheet,
|
|
3297
4157
|
SheetClose2 as SheetClose,
|
|
3298
4158
|
SheetContent2 as SheetContent,
|
|
@@ -3328,6 +4188,13 @@ export {
|
|
|
3328
4188
|
Slider2 as Slider,
|
|
3329
4189
|
Spinner2 as Spinner,
|
|
3330
4190
|
StarRating,
|
|
4191
|
+
StatCard,
|
|
4192
|
+
StatusTracker,
|
|
4193
|
+
Stepper,
|
|
4194
|
+
StepperContent,
|
|
4195
|
+
StepperIndicator,
|
|
4196
|
+
StepperList,
|
|
4197
|
+
StepperTrigger,
|
|
3331
4198
|
Switch2 as Switch,
|
|
3332
4199
|
Table2 as Table,
|
|
3333
4200
|
TableBody2 as TableBody,
|
|
@@ -3337,10 +4204,11 @@ export {
|
|
|
3337
4204
|
TableHead2 as TableHead,
|
|
3338
4205
|
TableHeader2 as TableHeader,
|
|
3339
4206
|
TableRow2 as TableRow,
|
|
3340
|
-
Tabs,
|
|
3341
|
-
TabsContent,
|
|
3342
|
-
TabsList,
|
|
3343
|
-
TabsTrigger,
|
|
4207
|
+
Tabs2 as Tabs,
|
|
4208
|
+
TabsContent2 as TabsContent,
|
|
4209
|
+
TabsList2 as TabsList,
|
|
4210
|
+
TabsTrigger2 as TabsTrigger,
|
|
4211
|
+
TagInput,
|
|
3344
4212
|
Textarea2 as Textarea,
|
|
3345
4213
|
ThemeProvider,
|
|
3346
4214
|
Toast,
|
|
@@ -3356,10 +4224,17 @@ export {
|
|
|
3356
4224
|
Toggle2 as Toggle,
|
|
3357
4225
|
ToggleGroup2 as ToggleGroup,
|
|
3358
4226
|
ToggleGroupItem2 as ToggleGroupItem,
|
|
4227
|
+
Toolbar2 as Toolbar,
|
|
4228
|
+
ToolbarButton2 as ToolbarButton,
|
|
4229
|
+
ToolbarGroup2 as ToolbarGroup,
|
|
4230
|
+
ToolbarInput2 as ToolbarInput,
|
|
4231
|
+
ToolbarLink2 as ToolbarLink,
|
|
4232
|
+
ToolbarSeparator2 as ToolbarSeparator,
|
|
3359
4233
|
Tooltip2 as Tooltip,
|
|
3360
4234
|
TooltipContent2 as TooltipContent,
|
|
3361
4235
|
TooltipProvider2 as TooltipProvider,
|
|
3362
4236
|
TooltipTrigger2 as TooltipTrigger,
|
|
4237
|
+
WorkspaceSwitcher,
|
|
3363
4238
|
badgeVariants2 as badgeVariants,
|
|
3364
4239
|
buttonGroupVariants,
|
|
3365
4240
|
buttonVariants2 as buttonVariants,
|
|
@@ -3367,13 +4242,13 @@ export {
|
|
|
3367
4242
|
createToastManager,
|
|
3368
4243
|
markerVariants,
|
|
3369
4244
|
navigationMenuTriggerStyle,
|
|
3370
|
-
tabsListVariants,
|
|
4245
|
+
tabsListVariants2 as tabsListVariants,
|
|
3371
4246
|
toggleVariants2 as toggleVariants,
|
|
3372
4247
|
useComboboxAnchor,
|
|
3373
4248
|
useDirection2 as useDirection,
|
|
3374
|
-
useDragDrop,
|
|
3375
|
-
useDragSource,
|
|
3376
|
-
useDropTarget,
|
|
4249
|
+
useDragDrop2 as useDragDrop,
|
|
4250
|
+
useDragSource2 as useDragSource,
|
|
4251
|
+
useDropTarget2 as useDropTarget,
|
|
3377
4252
|
usePortalContainer2 as usePortalContainer,
|
|
3378
4253
|
useSidebar2 as useSidebar,
|
|
3379
4254
|
useTheme2 as useTheme,
|