zidane-ui 9.1.13 → 9.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.d.ts +2 -2
- package/dist/adapters/index.js +2 -2
- package/dist/adapters/live.d.ts +29 -3
- package/dist/adapters/live.js +9 -1
- package/dist/adapters/server-composer-host.js +17 -2
- package/dist/adapters/server-extensions-host.d.ts +0 -1
- package/dist/adapters/server-extensions-host.js +4 -15
- package/dist/adapters/server-git-host.js +7 -16
- package/dist/adapters/server-host.js +181 -43
- package/dist/adapters/server-machines-host.d.ts +2 -0
- package/dist/adapters/server-machines-host.js +22 -23
- package/dist/adapters/server-onboarding-host.d.ts +1 -1
- package/dist/adapters/server-onboarding-host.js +3 -4
- package/dist/adapters/server-session-host.js +22 -3
- package/dist/adapters/server-settings-accounts.js +2 -2
- package/dist/adapters/server-settings-host.js +2 -2
- package/dist/adapters/server-settings-performance.js +7 -9
- package/dist/adapters/server-settings-sections.js +13 -14
- package/dist/adapters/server-sidebar-host.js +2 -2
- package/dist/adapters/sse-host.js +68 -3
- package/dist/adapters/sse-protocol.d.ts +12 -2
- package/dist/adapters/sse-protocol.js +4 -2
- package/dist/app/AppHostProvider.js +4 -3
- package/dist/app/ModalProvider.d.ts +13 -3
- package/dist/app/ModalProvider.js +103 -24
- package/dist/app/NoticeStack.d.ts +33 -0
- package/dist/app/NoticeStack.js +90 -0
- package/dist/app/index.d.ts +3 -2
- package/dist/app/index.js +3 -2
- package/dist/chat/SessionFilterMenu.d.ts +1 -1
- package/dist/chat/SessionFilterMenu.js +2 -1
- package/dist/chat/composer/Composer.js +10 -8
- package/dist/chat/composer/ModelChainList.js +17 -8
- package/dist/chat/composer/ModelChainTooltip.js +5 -2
- package/dist/chat/composer/use-draft-target.d.ts +20 -1
- package/dist/chat/composer/use-draft-target.js +121 -5
- package/dist/chat/composer/use-new-session-defaults.d.ts +5 -1
- package/dist/chat/composer/use-new-session-defaults.js +17 -4
- package/dist/chat/headless/chip-labels.d.ts +1 -0
- package/dist/chat/headless/chip-labels.js +1 -0
- package/dist/chat/headless/composer/labels-editor.d.ts +0 -2
- package/dist/chat/headless/composer/labels-editor.js +0 -2
- package/dist/chat/headless/draft-target.d.ts +21 -1
- package/dist/chat/headless/fixture-host.js +17 -2
- package/dist/chat/headless/host.d.ts +3 -3
- package/dist/chat/headless/index.d.ts +9 -9
- package/dist/chat/headless/index.js +2 -2
- package/dist/chat/headless/labels.d.ts +13 -6
- package/dist/chat/headless/labels.js +10 -9
- package/dist/chat/headless/session-list.d.ts +20 -8
- package/dist/chat/headless/session-list.js +1 -0
- package/dist/chat/headless/sidebar/directory.d.ts +56 -14
- package/dist/chat/headless/sidebar/directory.js +149 -70
- package/dist/chat/headless/sidebar/index.d.ts +3 -3
- package/dist/chat/headless/sidebar/index.js +2 -2
- package/dist/chat/headless/sidebar/labels.d.ts +15 -8
- package/dist/chat/headless/sidebar/types.d.ts +3 -1
- package/dist/chat/headless/sidebar/view.d.ts +13 -5
- package/dist/chat/headless/sidebar/view.js +31 -11
- package/dist/chat/headless/streams/actions.d.ts +5 -3
- package/dist/chat/headless/streams/actions.js +3 -2
- package/dist/chat/headless/streams/index.d.ts +3 -3
- package/dist/chat/headless/streams/merge.d.ts +6 -10
- package/dist/chat/headless/streams/merge.js +7 -21
- package/dist/chat/headless/streams/session-streams.d.ts +29 -4
- package/dist/chat/headless/streams/session-streams.js +86 -0
- package/dist/chat/headless/streams/store.d.ts +162 -16
- package/dist/chat/headless/streams/store.js +334 -38
- package/dist/chat/headless/streams/types.d.ts +10 -7
- package/dist/chat/headless/transcript-labels.d.ts +1 -0
- package/dist/chat/interactions/PlanCard.js +10 -3
- package/dist/chat/interactions/QuestionForm.js +7 -3
- package/dist/chat/interactions/card-ui.d.ts +5 -3
- package/dist/chat/interactions/card-ui.js +9 -7
- package/dist/chat/rich-composer/RichComposer.js +1 -7
- package/dist/chat/rich-composer/composer-extensions.d.ts +0 -2
- package/dist/chat/rich-composer/composer-extensions.js +2 -2
- package/dist/chat/rich-composer/use-composer-editor.d.ts +0 -2
- package/dist/chat/rich-composer/use-composer-editor.js +1 -2
- package/dist/chat/sidebar/SessionSidebar.js +5 -5
- package/dist/chat/sidebar/SidebarFilterMenu.js +3 -1
- package/dist/chat/sidebar/SidebarFrame.d.ts +4 -0
- package/dist/chat/sidebar/SidebarFrame.js +27 -9
- package/dist/chat/sidebar/SidebarGroupHeader.js +1 -1
- package/dist/chat/sidebar/SidebarHostProvider.d.ts +8 -5
- package/dist/chat/sidebar/SidebarHostProvider.js +13 -9
- package/dist/chat/sidebar/SidebarToggleButton.js +7 -3
- package/dist/chat/sidebar/index.d.ts +2 -2
- package/dist/chat/sidebar/session-menu.js +4 -4
- package/dist/chat/sidebar/useSaveViewAsSpace.js +2 -2
- package/dist/chat/testing/contract.js +2 -2
- package/dist/chat/transcript/AuthFailureCard.js +11 -8
- package/dist/chat/transcript/BadgeMenu.js +13 -2
- package/dist/chat/transcript/MermaidDiagram.js +7 -3
- package/dist/chat/transcript/fold.d.ts +4 -0
- package/dist/chat/transcript/fold.js +53 -22
- package/dist/chat/transcript/script-input.d.ts +1 -1
- package/dist/chat/transcript/shell-block.js +7 -3
- package/dist/chat/transcript/useStickToBottom.js +12 -0
- package/dist/components/BrowserSignIn.js +23 -21
- package/dist/components/Form.d.ts +6 -4
- package/dist/components/Form.js +16 -8
- package/dist/components/LoadError.d.ts +4 -2
- package/dist/components/LoadError.js +13 -9
- package/dist/components/Notice.d.ts +29 -0
- package/dist/components/Notice.js +63 -0
- package/dist/components/PanelEmpty.d.ts +1 -1
- package/dist/components/PanelEmpty.js +4 -2
- package/dist/components/Restricted.d.ts +1 -1
- package/dist/components/palette/PaletteList.js +8 -1
- package/dist/components/palette/PalettePanel.js +14 -6
- package/dist/core.css +24 -5
- package/dist/dist/{index-Bq87OcGy.d.ts → index-BZM8tu4L.d.ts} +28 -3
- package/dist/dist/index.d.ts +2 -2
- package/dist/dist/{timeout-B5pO5I5a.d.ts → timeout-Cyx3VGPz.d.ts} +1 -1
- package/dist/extensions/ExtensionSettingsPage.js +1 -4
- package/dist/extensions/ExtensionSettingsSection.js +4 -3
- package/dist/extensions/ExtensionSettingsSidebar.js +2 -6
- package/dist/extensions/SettingsWireForm.d.ts +1 -7
- package/dist/extensions/SettingsWireForm.js +7 -5
- package/dist/extensions/headless/fixture-host.d.ts +1 -5
- package/dist/extensions/headless/fixture-host.js +1 -4
- package/dist/extensions/headless/host.d.ts +1 -11
- package/dist/extensions/headless/index.d.ts +3 -3
- package/dist/extensions/headless/index.js +2 -2
- package/dist/extensions/headless/select.d.ts +1 -11
- package/dist/extensions/headless/select.js +1 -18
- package/dist/files/EditorColumn.js +12 -1
- package/dist/files/TreeColumn.js +13 -20
- package/dist/files/useOpenFiles.js +2 -0
- package/dist/git/BranchMenu.js +5 -3
- package/dist/git/ImportRepoDialog.js +18 -9
- package/dist/git/MoveSessionDialog.js +15 -7
- package/dist/git/RemoteFolderPicker.js +34 -16
- package/dist/git/SyncChip.js +17 -17
- package/dist/git/WherePicker.d.ts +16 -1
- package/dist/git/WherePicker.js +80 -36
- package/dist/git/headless/environment.d.ts +33 -3
- package/dist/git/headless/environment.js +33 -5
- package/dist/git/headless/index.d.ts +2 -2
- package/dist/git/headless/index.js +2 -2
- package/dist/git/headless/labels.d.ts +15 -2
- package/dist/git/headless/labels.js +17 -4
- package/dist/git/useEnvironmentChoices.d.ts +3 -1
- package/dist/git/useEnvironmentChoices.js +6 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/labels.d.ts +5 -0
- package/dist/labels.js +5 -0
- package/dist/machines/AddMachineDialog.d.ts +34 -0
- package/dist/machines/AddMachineDialog.js +464 -0
- package/dist/machines/Banners.d.ts +33 -4
- package/dist/machines/Banners.js +64 -3
- package/dist/machines/DaemonMenu.js +27 -4
- package/dist/machines/HostCapabilities.d.ts +1 -3
- package/dist/machines/HostCapabilities.js +24 -45
- package/dist/machines/HostSyncPanel.js +123 -129
- package/dist/machines/HostsSection.d.ts +4 -1
- package/dist/machines/HostsSection.js +30 -7
- package/dist/machines/MachinesExplainer.d.ts +17 -0
- package/dist/machines/MachinesExplainer.js +71 -0
- package/dist/machines/MachinesProvider.d.ts +14 -2
- package/dist/machines/MachinesProvider.js +35 -1
- package/dist/machines/ServerAddedCard.d.ts +31 -0
- package/dist/machines/ServerAddedCard.js +72 -0
- package/dist/machines/ServerCard.js +91 -215
- package/dist/machines/ServerMachinesPanel.d.ts +2 -2
- package/dist/machines/ServerMachinesPanel.js +184 -323
- package/dist/machines/ServerUpdatePanel.js +51 -40
- package/dist/machines/ShareThisComputerForm.d.ts +19 -0
- package/dist/machines/ShareThisComputerForm.js +133 -0
- package/dist/machines/TokensPanel.d.ts +5 -3
- package/dist/machines/TokensPanel.js +98 -78
- package/dist/machines/headless/fixture-host.d.ts +19 -3
- package/dist/machines/headless/fixture-host.js +42 -5
- package/dist/machines/headless/fixtures.js +4 -6
- package/dist/machines/headless/host.d.ts +40 -19
- package/dist/machines/headless/index.d.ts +3 -3
- package/dist/machines/headless/index.js +2 -2
- package/dist/machines/headless/labels.d.ts +63 -20
- package/dist/machines/headless/labels.js +88 -25
- package/dist/machines/headless/messages.js +8 -0
- package/dist/machines/headless/stores.d.ts +9 -2
- package/dist/machines/headless/stores.js +28 -1
- package/dist/machines/index.d.ts +7 -3
- package/dist/machines/index.js +8 -4
- package/dist/machines/testing/contract.d.ts +15 -3
- package/dist/machines/testing/contract.js +68 -14
- package/dist/motion/grow.d.ts +8 -1
- package/dist/motion/grow.js +10 -4
- package/dist/onboarding/demos/index.js +1 -1
- package/dist/onboarding/headless/labels.d.ts +13 -0
- package/dist/onboarding/headless/labels.js +8 -0
- package/dist/onboarding/index.js +3 -3
- package/dist/onboarding/sources/SourceBrowser.js +11 -7
- package/dist/onboarding/steps/ConnectorsStep.js +1 -1
- package/dist/onboarding/steps/ImportStep.js +4 -1
- package/dist/onboarding/steps/ReadyStep.js +9 -2
- package/dist/onboarding/steps/SkillsStep.js +1 -1
- package/dist/onboarding/steps/connect/KeyForm.js +6 -2
- package/dist/onboarding/steps/connect/ProviderPanel.js +6 -2
- package/dist/onboarding/steps/connect/ProviderReady.js +25 -20
- package/dist/onboarding/steps/tasks.js +17 -14
- package/dist/server/sse-handler.js +141 -19
- package/dist/session/ArtifactsPanel.js +39 -17
- package/dist/session/PlanTracker.js +12 -7
- package/dist/session/ProjectHome.js +13 -11
- package/dist/session/RemindersPanel.js +34 -16
- package/dist/session/RunningWorkDialog.js +6 -2
- package/dist/session/SecretsPanel.js +29 -10
- package/dist/session/SessionDetailsDialog.d.ts +1 -1
- package/dist/session/SessionDetailsDialog.js +18 -10
- package/dist/session/SideChat.js +10 -7
- package/dist/session/TurnDetailsDialog.js +19 -5
- package/dist/session/UsagePanel.js +10 -4
- package/dist/session/headless/host.d.ts +2 -0
- package/dist/session/headless/labels.d.ts +19 -1
- package/dist/session/headless/labels.js +15 -1
- package/dist/session/headless/queue.js +2 -1
- package/dist/session/headless/reminder-labels.d.ts +4 -0
- package/dist/session/headless/reminder-labels.js +4 -0
- package/dist/settings/SettingsRestricted.d.ts +1 -1
- package/dist/settings/SettingsRestricted.js +4 -4
- package/dist/settings/SettingsShell.d.ts +7 -0
- package/dist/settings/SettingsShell.js +6 -1
- package/dist/settings/headless/fixture-performance.d.ts +1 -1
- package/dist/settings/headless/host.d.ts +2 -2
- package/dist/settings/headless/labels.d.ts +3 -3
- package/dist/settings/headless/labels.js +3 -3
- package/dist/settings/headless/performance.d.ts +3 -4
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/index.d.ts +2 -1
- package/dist/settings/index.js +2 -1
- package/dist/settings/sections/editor/EditorSection.js +7 -4
- package/dist/settings/sections/editor/labels.d.ts +1 -0
- package/dist/settings/sections/editor/labels.js +1 -0
- package/dist/settings/sections/environments/EnvironmentsSection.js +19 -12
- package/dist/settings/sections/environments/labels.d.ts +1 -0
- package/dist/settings/sections/environments/labels.js +2 -1
- package/dist/settings/sections/extensions/ExtensionConfigRows.d.ts +1 -3
- package/dist/settings/sections/extensions/ExtensionConfigRows.js +20 -19
- package/dist/settings/sections/extensions/ExtensionOptionsSection.js +2 -1
- package/dist/settings/sections/extensions/options-labels.d.ts +2 -1
- package/dist/settings/sections/extensions/options-labels.js +2 -1
- package/dist/settings/sections/index.d.ts +2 -1
- package/dist/settings/sections/index.js +2 -1
- package/dist/settings/sections/logs/LogsSection.d.ts +2 -2
- package/dist/settings/sections/logs/LogsSection.js +2 -2
- package/dist/settings/sections/mcp/McpSection.d.ts +1 -1
- package/dist/settings/sections/mcp/McpSection.js +12 -6
- package/dist/settings/sections/mcp/McpServerRow.js +20 -13
- package/dist/settings/sections/mcp/labels.d.ts +8 -2
- package/dist/settings/sections/mcp/labels.js +8 -2
- package/dist/settings/sections/models/ModelRows.js +1 -1
- package/dist/settings/sections/models/NewChatPlaceRow.d.ts +26 -0
- package/dist/settings/sections/models/NewChatPlaceRow.js +78 -0
- package/dist/settings/sections/models/SpacesDefaultsSection.js +15 -3
- package/dist/settings/sections/models/labels.d.ts +7 -0
- package/dist/settings/sections/models/labels.js +7 -0
- package/dist/settings/sections/models/model-test.js +7 -4
- package/dist/settings/sections/performance/PerformanceSection.js +16 -6
- package/dist/settings/sections/performance/labels.d.ts +1 -1
- package/dist/settings/sections/performance/labels.js +1 -1
- package/dist/settings/sections/providers/ProvidersSection.d.ts +1 -1
- package/dist/settings/sections/providers/ProvidersSection.js +14 -7
- package/dist/settings/sections/providers/ServerProvidersSection.d.ts +1 -1
- package/dist/settings/sections/providers/ServerProvidersSection.js +11 -5
- package/dist/settings/sections/providers/labels.d.ts +2 -2
- package/dist/settings/sections/providers/labels.js +2 -2
- package/dist/settings/sections/skills/SkillList.js +1 -1
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/settings/testing/performance.contract.js +8 -12
- package/dist/styles.css +32 -3
- package/dist/terminal/HostTerminalSurface.js +15 -5
- package/dist/terminal/TerminalPanel.js +30 -17
- package/dist/terminal/TerminalSurface.js +11 -4
- package/dist/terminal/headless/labels.d.ts +5 -0
- package/dist/terminal/headless/labels.js +5 -0
- package/dist/terminal/headless/store.d.ts +1 -1
- package/dist/terminal/headless/store.js +6 -3
- package/dist/workspace/LayoutBudget.d.ts +5 -1
- package/dist/workspace/LayoutBudget.js +14 -1
- package/dist/workspace/PanelContentView.d.ts +1 -1
- package/dist/workspace/PanelContentView.js +17 -6
- package/dist/workspace/WorkspaceProvider.js +3 -2
- package/dist/workspace/headless/labels.d.ts +1 -0
- package/dist/workspace/headless/labels.js +1 -0
- package/package.json +3 -3
- package/src/styles/motion.css +8 -0
- package/src/styles/primitives.css +7 -0
package/dist/styles.css
CHANGED
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
.i-ph-clock-counter-clockwise{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M136 80v43.47l36.12 21.67a8 8 0 0 1-8.24 13.72l-40-24A8 8 0 0 1 120 128V80a8 8 0 0 1 16 0m-8-48a95.44 95.44 0 0 0-67.92 28.15C52.81 67.51 46.35 74.59 40 82V64a8 8 0 0 0-16 0v40a8 8 0 0 0 8 8h40a8 8 0 0 0 0-16H49c7.15-8.42 14.27-16.35 22.39-24.57a80 80 0 1 1 1.66 114.75a8 8 0 1 0-11 11.64A96 96 0 1 0 128 32'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
76
76
|
.i-ph-cloud{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M160 40a88.09 88.09 0 0 0-78.71 48.67A64 64 0 1 0 72 216h88a88 88 0 0 0 0-176m0 160H72a48 48 0 0 1 0-96c1.1 0 2.2 0 3.29.11A88 88 0 0 0 72 128a8 8 0 0 0 16 0a72 72 0 1 1 72 72'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
77
77
|
.i-ph-cloud-arrow-up{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M178.34 165.66L160 147.31V208a8 8 0 0 1-16 0v-60.69l-18.34 18.35a8 8 0 0 1-11.32-11.32l32-32a8 8 0 0 1 11.32 0l32 32a8 8 0 0 1-11.32 11.32M160 40a88.08 88.08 0 0 0-78.71 48.68A64 64 0 1 0 72 216h40a8 8 0 0 0 0-16H72a48 48 0 0 1 0-96c1.1 0 2.2 0 3.29.12A88 88 0 0 0 72 128a8 8 0 0 0 16 0a72 72 0 1 1 100.8 66a8 8 0 0 0 3.2 15.34a7.9 7.9 0 0 0 3.2-.68A88 88 0 0 0 160 40'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
78
|
+
.i-ph-cloud-slash{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M53.92 34.62a8 8 0 1 0-11.84 10.76l39.24 43.17l-.06.12A65 65 0 0 0 72 88a64 64 0 0 0 0 128h88a87.3 87.3 0 0 0 31.8-5.93l10.28 11.31a8 8 0 1 0 11.84-10.76ZM160 200H72a48 48 0 0 1 0-96c1.1 0 2.2 0 3.3.12A88.4 88.4 0 0 0 72 128a8 8 0 0 0 16 0a72.3 72.3 0 0 1 5.06-26.54l87 95.7A71.7 71.7 0 0 1 160 200m88-72a87.9 87.9 0 0 1-22.35 58.61A8 8 0 0 1 213.71 176a72 72 0 0 0-96.34-106a8 8 0 0 1-9.48-12.89A88 88 0 0 1 248 128'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
78
79
|
.i-ph-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M69.12 94.15L28.5 128l40.62 33.85a8 8 0 1 1-10.24 12.29l-48-40a8 8 0 0 1 0-12.29l48-40a8 8 0 0 1 10.24 12.3m176 27.7l-48-40a8 8 0 1 0-10.24 12.3L227.5 128l-40.62 33.85a8 8 0 1 0 10.24 12.29l48-40a8 8 0 0 0 0-12.29m-82.39-89.37a8 8 0 0 0-10.25 4.79l-64 176a8 8 0 0 0 4.79 10.26A8.1 8.1 0 0 0 96 224a8 8 0 0 0 7.52-5.27l64-176a8 8 0 0 0-4.79-10.25'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
79
80
|
.i-ph-coffee{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M80 56V24a8 8 0 0 1 16 0v32a8 8 0 0 1-16 0m40 8a8 8 0 0 0 8-8V24a8 8 0 0 0-16 0v32a8 8 0 0 0 8 8m32 0a8 8 0 0 0 8-8V24a8 8 0 0 0-16 0v32a8 8 0 0 0 8 8m96 56v8a40 40 0 0 1-37.51 39.91a96.6 96.6 0 0 1-27 40.09H208a8 8 0 0 1 0 16H32a8 8 0 0 1 0-16h24.54A96.3 96.3 0 0 1 24 136V88a8 8 0 0 1 8-8h176a40 40 0 0 1 40 40m-48-24H40v40a80.27 80.27 0 0 0 45.12 72h69.76A80.27 80.27 0 0 0 200 136Zm32 24a24 24 0 0 0-16-22.62V136a96 96 0 0 1-1.2 15a24 24 0 0 0 17.2-23Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
80
81
|
.i-ph-columns{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M104 32H64a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16m0 176H64V48h40Zm88-176h-40a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16m0 176h-40V48h40Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
@@ -137,6 +138,7 @@
|
|
|
137
138
|
.i-ph-globe-simple{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M128 24a104 104 0 1 0 104 104A104.12 104.12 0 0 0 128 24m87.62 96h-39.83c-1.79-36.51-15.85-62.33-27.38-77.6a88.19 88.19 0 0 1 67.22 77.6ZM96.23 136h63.54c-2.31 41.61-22.23 67.11-31.77 77c-9.55-9.9-29.46-35.4-31.77-77m0-16c2.31-41.61 22.23-67.11 31.77-77c9.55 9.93 29.46 35.43 31.77 77Zm11.36-77.6C96.06 57.67 82 83.49 80.21 120H40.37a88.19 88.19 0 0 1 67.22-77.6M40.37 136h39.84c1.82 36.51 15.85 62.33 27.38 77.6A88.19 88.19 0 0 1 40.37 136m108 77.6c11.53-15.27 25.56-41.09 27.38-77.6h39.84a88.19 88.19 0 0 1-67.18 77.6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
138
139
|
.i-ph-graduation-cap{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m251.76 88.94l-120-64a8 8 0 0 0-7.52 0l-120 64a8 8 0 0 0 0 14.12L32 117.87v48.42a15.9 15.9 0 0 0 4.06 10.65C49.16 191.53 78.51 216 128 216a130 130 0 0 0 48-8.76V240a8 8 0 0 0 16 0v-40.49a115.6 115.6 0 0 0 27.94-22.57a15.9 15.9 0 0 0 4.06-10.65v-48.42l27.76-14.81a8 8 0 0 0 0-14.12M128 200c-43.27 0-68.72-21.14-80-33.71V126.4l76.24 40.66a8 8 0 0 0 7.52 0L176 143.47v46.34c-12.6 5.88-28.48 10.19-48 10.19m80-33.75a97.8 97.8 0 0 1-16 14.25v-45.57l16-8.53Zm-20-47.31l-.22-.13l-56-29.87a8 8 0 0 0-7.52 14.12L171 128l-43 22.93L25 96l103-54.93L231 96Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
139
140
|
.i-ph-graph{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M200 152a31.84 31.84 0 0 0-19.53 6.68l-23.11-18A31.65 31.65 0 0 0 160 128c0-.74 0-1.48-.08-2.21l13.23-4.41A32 32 0 1 0 168 104c0 .74 0 1.48.08 2.21l-13.23 4.41A32 32 0 0 0 128 96a32.6 32.6 0 0 0-5.27.44L115.89 81A32 32 0 1 0 96 88a32.6 32.6 0 0 0 5.27-.44l6.84 15.4a31.92 31.92 0 0 0-8.57 39.64l-25.71 22.84a32.06 32.06 0 1 0 10.63 12l25.71-22.84a31.91 31.91 0 0 0 37.36-1.24l23.11 18A31.65 31.65 0 0 0 168 184a32 32 0 1 0 32-32m0-64a16 16 0 1 1-16 16a16 16 0 0 1 16-16M80 56a16 16 0 1 1 16 16a16 16 0 0 1-16-16M56 208a16 16 0 1 1 16-16a16 16 0 0 1-16 16m56-80a16 16 0 1 1 16 16a16 16 0 0 1-16-16m88 72a16 16 0 1 1 16-16a16 16 0 0 1-16 16'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
141
|
+
.i-ph-graphics-card{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M232 48H16a8 8 0 0 0-8 8v152a8 8 0 0 0 16 0v-16h16v16a8 8 0 0 0 16 0v-16h16v16a8 8 0 0 0 16 0v-16h16v16a8 8 0 0 0 16 0v-16h112a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16m0 128H24V64h208Zm-56-16a40 40 0 1 0-40-40a40 40 0 0 0 40 40m-24-40a23.74 23.74 0 0 1 2.35-10.34l32 32A23.74 23.74 0 0 1 176 144a24 24 0 0 1-24-24m48 0a23.74 23.74 0 0 1-2.35 10.34l-32-32A23.74 23.74 0 0 1 176 96a24 24 0 0 1 24 24M80 160a40 40 0 1 0-40-40a40 40 0 0 0 40 40m-24-40a23.74 23.74 0 0 1 2.35-10.34l32 32A23.74 23.74 0 0 1 80 144a24 24 0 0 1-24-24m48 0a23.74 23.74 0 0 1-2.35 10.34l-32-32A23.74 23.74 0 0 1 80 96a24 24 0 0 1 24 24'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
140
142
|
.i-ph-hand{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M188 48a27.75 27.75 0 0 0-12 2.71V44a28 28 0 0 0-54.65-8.6A28 28 0 0 0 80 60v64l-3.82-6.13a28 28 0 0 0-48.6 27.82c16 33.77 28.93 57.72 43.72 72.69C86.24 233.54 103.2 240 128 240a88.1 88.1 0 0 0 88-88V76a28 28 0 0 0-28-28m12 104a72.08 72.08 0 0 1-72 72c-20.38 0-33.51-4.88-45.33-16.85C69.44 193.74 57.26 171 41.9 138.58a6 6 0 0 0-.3-.58a12 12 0 0 1 20.79-12a2 2 0 0 0 .14.23l18.67 30A8 8 0 0 0 96 152V60a12 12 0 0 1 24 0v60a8 8 0 0 0 16 0V44a12 12 0 0 1 24 0v76a8 8 0 0 0 16 0V76a12 12 0 0 1 24 0Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
141
143
|
.i-ph-hand-palm{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M188 88a27.75 27.75 0 0 0-12 2.71V60a28 28 0 0 0-41.36-24.6A28 28 0 0 0 80 44v6.71A27.75 27.75 0 0 0 68 48a28 28 0 0 0-28 28v76a88 88 0 0 0 176 0v-36a28 28 0 0 0-28-28m12 64a72 72 0 0 1-144 0V76a12 12 0 0 1 24 0v44a8 8 0 0 0 16 0V44a12 12 0 0 1 24 0v68a8 8 0 0 0 16 0V60a12 12 0 0 1 24 0v68.67A48.08 48.08 0 0 0 120 176a8 8 0 0 0 16 0a32 32 0 0 1 32-32a8 8 0 0 0 8-8v-20a12 12 0 0 1 24 0Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
142
144
|
.i-ph-hard-drives{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M208 136H48a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16m0 64H48v-48h160zm0-160H48a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 64H48V56h160zm-16-24a12 12 0 1 1-12-12a12 12 0 0 1 12 12m0 96a12 12 0 1 1-12-12a12 12 0 0 1 12 12'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
@@ -215,6 +217,7 @@
|
|
|
215
217
|
.i-ph-sidebar-simple{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16M40 56h40v144H40Zm176 144H96V56h120z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
216
218
|
.i-ph-sidebar-simple-fill{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 160H88V56h128z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
217
219
|
.i-ph-sign-in{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m141.66 133.66l-40 40a8 8 0 0 1-11.32-11.32L116.69 136H24a8 8 0 0 1 0-16h92.69L90.34 93.66a8 8 0 0 1 11.32-11.32l40 40a8 8 0 0 1 0 11.32M200 32h-64a8 8 0 0 0 0 16h56v160h-56a8 8 0 0 0 0 16h64a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
220
|
+
.i-ph-signpost{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M246 106.65L212.33 69.3a16 16 0 0 0-11.89-5.3H136V32a8 8 0 0 0-16 0v32H40a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h80v64a8 8 0 0 0 16 0v-64h64.44a16 16 0 0 0 11.89-5.3L246 117.35a8 8 0 0 0 0-10.7M200.44 144H40V80h160.44l28.8 32Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
218
221
|
.i-ph-sliders-horizontal{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M40 88h33a32 32 0 0 0 62 0h81a8 8 0 0 0 0-16h-81a32 32 0 0 0-62 0H40a8 8 0 0 0 0 16m64-24a16 16 0 1 1-16 16a16 16 0 0 1 16-16m112 104h-17a32 32 0 0 0-62 0H40a8 8 0 0 0 0 16h97a32 32 0 0 0 62 0h17a8 8 0 0 0 0-16m-48 24a16 16 0 1 1 16-16a16 16 0 0 1-16 16'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
219
222
|
.i-ph-sparkle{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M197.58 129.06L146 110l-19-51.62a15.92 15.92 0 0 0-29.88 0L78 110l-51.62 19a15.92 15.92 0 0 0 0 29.88L78 178l19 51.62a15.92 15.92 0 0 0 29.88 0L146 178l51.62-19a15.92 15.92 0 0 0 0-29.88ZM137 164.22a8 8 0 0 0-4.74 4.74L112 223.85L91.78 169a8 8 0 0 0-4.78-4.78L32.15 144L87 123.78a8 8 0 0 0 4.78-4.78L112 64.15L132.22 119a8 8 0 0 0 4.74 4.74L191.85 144ZM144 40a8 8 0 0 1 8-8h16V16a8 8 0 0 1 16 0v16h16a8 8 0 0 1 0 16h-16v16a8 8 0 0 1-16 0V48h-16a8 8 0 0 1-8-8m104 48a8 8 0 0 1-8 8h-8v8a8 8 0 0 1-16 0v-8h-8a8 8 0 0 1 0-16h8v-8a8 8 0 0 1 16 0v8h8a8 8 0 0 1 8 8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
220
223
|
.i-ph-speaker-high{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' height='1em' width='1em' display='inline-block' vertical-align='middle' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M155.51 24.81a8 8 0 0 0-8.42.88L77.25 80H32a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h45.25l69.84 54.31A8 8 0 0 0 160 224V32a8 8 0 0 0-4.49-7.19M32 96h40v64H32Zm112 111.64l-56-43.55V91.91l56-43.55Zm54-106.08a40 40 0 0 1 0 52.88a8 8 0 0 1-12-10.58a24 24 0 0 0 0-31.72a8 8 0 0 1 12-10.58M248 128a79.9 79.9 0 0 1-20.37 53.34a8 8 0 0 1-11.92-10.67a64 64 0 0 0 0-85.33a8 8 0 1 1 11.92-10.67A79.83 79.83 0 0 1 248 128'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;height:1em;width:1em;display:inline-block;vertical-align:middle;}
|
|
@@ -363,7 +366,6 @@
|
|
|
363
366
|
.top-7{top:1.75rem;}
|
|
364
367
|
.top-full{top:100%;}
|
|
365
368
|
.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;}
|
|
366
|
-
.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;}
|
|
367
369
|
.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;}
|
|
368
370
|
.isolate{isolation:isolate;}
|
|
369
371
|
.z-\[-1\]{z-index:-1;}
|
|
@@ -396,6 +398,7 @@
|
|
|
396
398
|
.m\[0\]{margin:0;}
|
|
397
399
|
.m-1{margin:0.25rem;}
|
|
398
400
|
.m-2{margin:0.5rem;}
|
|
401
|
+
.m-3{margin:0.75rem;}
|
|
399
402
|
.m\[1\]{margin:1;}
|
|
400
403
|
.m\[2\]{margin:2;}
|
|
401
404
|
.m\[2\]\!{margin:2 !important;}
|
|
@@ -415,7 +418,8 @@
|
|
|
415
418
|
.-my-0\.5{margin-top:-0.125rem;margin-bottom:-0.125rem;}
|
|
416
419
|
.-my-1{margin-top:-0.25rem;margin-bottom:-0.25rem;}
|
|
417
420
|
.-my-px{margin-top:-1px;margin-bottom:-1px;}
|
|
418
|
-
.mx
|
|
421
|
+
.mx,
|
|
422
|
+
.mx-4{margin-left:1rem;margin-right:1rem;}
|
|
419
423
|
.mx-0\.5{margin-left:0.125rem;margin-right:0.125rem;}
|
|
420
424
|
.mx-1{margin-left:0.25rem;margin-right:0.25rem;}
|
|
421
425
|
.mx-1\.5{margin-left:0.375rem;margin-right:0.375rem;}
|
|
@@ -500,14 +504,17 @@
|
|
|
500
504
|
.hidden{display:none;}
|
|
501
505
|
.aspect-square{aspect-ratio:1/1;}
|
|
502
506
|
.size-7{width:1.75rem;height:1.75rem;}
|
|
507
|
+
.size-9{width:2.25rem;height:2.25rem;}
|
|
503
508
|
.\!h-2{height:0.5rem !important;}
|
|
504
509
|
.\!h-6{height:1.5rem !important;}
|
|
505
510
|
.\!h-7{height:1.75rem !important;}
|
|
511
|
+
.\!max-w-none{max-width:none !important;}
|
|
506
512
|
.\!min-h-0{min-height:0 !important;}
|
|
507
513
|
.\!w-4{width:1rem !important;}
|
|
508
514
|
.\!w-40{width:10rem !important;}
|
|
509
515
|
.\!w-64{width:16rem !important;}
|
|
510
516
|
.\!w-auto{width:auto !important;}
|
|
517
|
+
.\!w-full{width:100% !important;}
|
|
511
518
|
.h-\[108px\]{height:108px;}
|
|
512
519
|
.h-\[14px\]{height:14px;}
|
|
513
520
|
.h-\[18px\]{height:18px;}
|
|
@@ -650,6 +657,7 @@
|
|
|
650
657
|
.min-h-full{min-height:100%;}
|
|
651
658
|
.min-w-\[10rem\],
|
|
652
659
|
.min-w-40{min-width:10rem;}
|
|
660
|
+
.min-w-\[12rem\]{min-width:12rem;}
|
|
653
661
|
.min-w-\[14px\]{min-width:14px;}
|
|
654
662
|
.min-w-\[14rem\]{min-width:14rem;}
|
|
655
663
|
.min-w-\[1em\]{min-width:1em;}
|
|
@@ -681,6 +689,7 @@
|
|
|
681
689
|
.w-\[440px\]{width:440px;}
|
|
682
690
|
.w-\[460px\]{width:460px;}
|
|
683
691
|
.w-\[480px\]{width:480px;}
|
|
692
|
+
.w-\[520px\]{width:520px;}
|
|
684
693
|
.w-\[560px\]{width:560px;}
|
|
685
694
|
.w-\[62\%\]{width:62%;}
|
|
686
695
|
.w-\[72px\]{width:72px;}
|
|
@@ -690,6 +699,7 @@
|
|
|
690
699
|
.w-\[8px\]{width:8px;}
|
|
691
700
|
.w-\[920px\]{width:920px;}
|
|
692
701
|
.w-\[calc\(50\%-2px\)\]{width:calc(50% - 2px);}
|
|
702
|
+
.w-\[min\(24rem\,calc\(100vw-1\.5rem\)\)\]{width:min(24rem,calc(100vw - 1.5rem));}
|
|
693
703
|
.w-0\.5{width:0.125rem;}
|
|
694
704
|
.w-1,
|
|
695
705
|
.w1{width:0.25rem;}
|
|
@@ -736,6 +746,7 @@
|
|
|
736
746
|
.flex-grow,
|
|
737
747
|
.grow{flex-grow:1;}
|
|
738
748
|
.basis-40{flex-basis:10rem;}
|
|
749
|
+
.basis-full{flex-basis:100%;}
|
|
739
750
|
.flex-row{flex-direction:row;}
|
|
740
751
|
.flex-row-reverse{flex-direction:row-reverse;}
|
|
741
752
|
.flex-col{flex-direction:column;}
|
|
@@ -828,7 +839,6 @@
|
|
|
828
839
|
.gap-y-1\.5{row-gap:0.375rem;}
|
|
829
840
|
.gap-y-2{row-gap:0.5rem;}
|
|
830
841
|
.gap-y-3\.5{row-gap:0.875rem;}
|
|
831
|
-
.space-y-0\.5>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(0.125rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(0.125rem * var(--un-space-y-reverse));}
|
|
832
842
|
.space-y-1\.5>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(0.375rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(0.375rem * var(--un-space-y-reverse));}
|
|
833
843
|
.space-y-1>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(0.25rem * var(--un-space-y-reverse));}
|
|
834
844
|
.space-y-2>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(0.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(0.5rem * var(--un-space-y-reverse));}
|
|
@@ -947,6 +957,7 @@
|
|
|
947
957
|
.bg-amber-500{--un-bg-opacity:1;background-color:rgb(245 158 11 / var(--un-bg-opacity));}
|
|
948
958
|
.bg-amber-600{--un-bg-opacity:1;background-color:rgb(217 119 6 / var(--un-bg-opacity));}
|
|
949
959
|
.bg-black{--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity));}
|
|
960
|
+
.bg-black\/30{background-color:rgb(0 0 0 / 0.3);}
|
|
950
961
|
.bg-current{background-color:currentColor;}
|
|
951
962
|
.bg-transparent{background-color:transparent;}
|
|
952
963
|
.bg-zg-accent-fill-fg{background-color:var(--zg-accent-fill-fg);}
|
|
@@ -1196,6 +1207,7 @@
|
|
|
1196
1207
|
.tracking-\[-0\.005em\]{letter-spacing:-0.005em;}
|
|
1197
1208
|
.tracking-\[-0\.01em\]{letter-spacing:-0.01em;}
|
|
1198
1209
|
.tracking-\[0\.12em\]{letter-spacing:0.12em;}
|
|
1210
|
+
.tracking-\[0\.2em\]{letter-spacing:0.2em;}
|
|
1199
1211
|
.tracking-\[inherit\]{letter-spacing:inherit;}
|
|
1200
1212
|
.tracking-normal{letter-spacing:0em;}
|
|
1201
1213
|
.font-\[inherit\]{font-family:inherit;}
|
|
@@ -1301,6 +1313,8 @@
|
|
|
1301
1313
|
.z-zg-overlay{z-index:var(--zg-z-overlay);}
|
|
1302
1314
|
.z-zg-tooltip{z-index:var(--zg-z-tooltip);}
|
|
1303
1315
|
.bg-zg-danger\/10{background-color:color-mix(in srgb, var(--zg-danger) 10%, transparent);}
|
|
1316
|
+
.bg-zg-info\/10{background-color:color-mix(in srgb, var(--zg-info) 10%, transparent);}
|
|
1317
|
+
.bg-zg-success\/15{background-color:color-mix(in srgb, var(--zg-success) 15%, transparent);}
|
|
1304
1318
|
.bg-zg-warn\/10{background-color:color-mix(in srgb, var(--zg-warn) 10%, transparent);}
|
|
1305
1319
|
.border-zg-danger\/30{border-color:color-mix(in srgb, var(--zg-danger) 30%, transparent);}
|
|
1306
1320
|
.text-zg-accent-fill-fg\/80{color:color-mix(in srgb, var(--zg-accent-fill-fg) 80%, transparent);}
|
|
@@ -1955,6 +1969,13 @@ html[data-motion='off'] {
|
|
|
1955
1969
|
padding: 6px 10px;
|
|
1956
1970
|
align-items: flex-start;
|
|
1957
1971
|
}
|
|
1972
|
+
/* A row that belongs to the row above it (a server's machines): one glyph column in. */
|
|
1973
|
+
.zg-menu-row.zg-menu-row-nested {
|
|
1974
|
+
padding-left: 26px;
|
|
1975
|
+
}
|
|
1976
|
+
.zg-menu-row.zg-menu-row-nested[data-size='lg'] {
|
|
1977
|
+
padding-left: 28px;
|
|
1978
|
+
}
|
|
1958
1979
|
.zg-menu-row:hover:not(:disabled) {
|
|
1959
1980
|
background: var(--zg-row-hover);
|
|
1960
1981
|
}
|
|
@@ -2589,6 +2610,14 @@ html[data-motion='reduced'] .zg-shimmer {
|
|
|
2589
2610
|
opacity var(--zg-motion-fade),
|
|
2590
2611
|
margin-left var(--zg-motion-settle);
|
|
2591
2612
|
}
|
|
2613
|
+
/* `Grow symmetric`: leaving on the curve it arrived on, so a row shrinking out
|
|
2614
|
+
as another grows in mirrors it exactly and the list's height holds. */
|
|
2615
|
+
.zg-grow[data-symmetric]:not([data-shown]) {
|
|
2616
|
+
transition:
|
|
2617
|
+
grid-template-rows var(--zg-motion-settle),
|
|
2618
|
+
opacity var(--zg-motion-fade-out),
|
|
2619
|
+
margin-left var(--zg-motion-settle);
|
|
2620
|
+
}
|
|
2592
2621
|
.zg-grow-clip {
|
|
2593
2622
|
min-height: 0;
|
|
2594
2623
|
overflow-x: visible;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Notice } from "../components/Notice.js";
|
|
2
|
+
import { errorMessage } from "../components/report-error.js";
|
|
1
3
|
import { RowActionsMenu } from "../components/RowActionsMenu.js";
|
|
2
4
|
import { getMergedKeybindings } from "../keybindings/headless/overrides.js";
|
|
3
5
|
import { bindingAllowedIn } from "../keybindings/headless/key-scope.js";
|
|
@@ -324,7 +326,10 @@ function HostTerminalSurface({ scope, terminalId, label, cwd, autoFocus = false,
|
|
|
324
326
|
for (const q of pending) (q.kind === "reset" ? reset : apply)(q.offset, q.data);
|
|
325
327
|
settle(true);
|
|
326
328
|
} catch (err) {
|
|
327
|
-
if (!disposed && seq === attachSeq) setFailed(
|
|
329
|
+
if (!disposed && seq === attachSeq) setFailed({
|
|
330
|
+
message: labels.terminalAttachError,
|
|
331
|
+
detail: errorMessage(err)
|
|
332
|
+
});
|
|
328
333
|
reveal();
|
|
329
334
|
}
|
|
330
335
|
}
|
|
@@ -471,7 +476,10 @@ function HostTerminalSurface({ scope, terminalId, label, cwd, autoFocus = false,
|
|
|
471
476
|
attach();
|
|
472
477
|
if (autoFocusRef.current) term.focus();
|
|
473
478
|
}, (err) => {
|
|
474
|
-
if (!disposed) setFailed(
|
|
479
|
+
if (!disposed) setFailed({
|
|
480
|
+
message: labels.terminalLoadError,
|
|
481
|
+
detail: errorMessage(err)
|
|
482
|
+
});
|
|
475
483
|
});
|
|
476
484
|
return () => {
|
|
477
485
|
disposed = true;
|
|
@@ -586,9 +594,11 @@ function HostTerminalSurface({ scope, terminalId, label, cwd, autoFocus = false,
|
|
|
586
594
|
className: "absolute inset-0 pl-2 pt-1",
|
|
587
595
|
style: { caretColor: "transparent" }
|
|
588
596
|
}),
|
|
589
|
-
failed && /* @__PURE__ */ jsx(
|
|
590
|
-
|
|
591
|
-
|
|
597
|
+
failed && /* @__PURE__ */ jsx(Notice, {
|
|
598
|
+
tone: "error",
|
|
599
|
+
detail: failed.detail,
|
|
600
|
+
className: "absolute inset-x-0 top-0 m-2",
|
|
601
|
+
children: failed.message
|
|
592
602
|
}),
|
|
593
603
|
/* @__PURE__ */ jsx(RowActionsMenu, {
|
|
594
604
|
open: menu !== null,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useMotionTransition, useTabExit } from "../motion/springs.js";
|
|
2
2
|
import { IconButton } from "../components/IconButton.js";
|
|
3
3
|
import { buttonClass } from "../components/button.js";
|
|
4
|
+
import { Notice } from "../components/Notice.js";
|
|
4
5
|
import { Tooltip } from "../components/Tooltip.js";
|
|
5
6
|
import { IconToggle } from "../components/IconToggle.js";
|
|
6
7
|
import { useTabDrag } from "../hooks/useTabDrag.js";
|
|
@@ -214,19 +215,19 @@ function TerminalPanel({ scope, placement, trailing, className, style }) {
|
|
|
214
215
|
onNew: (target) => void openNew(target),
|
|
215
216
|
trailing
|
|
216
217
|
}),
|
|
217
|
-
data.error && /* @__PURE__ */
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}), /* @__PURE__ */ jsx(IconButton, {
|
|
218
|
+
data.error && /* @__PURE__ */ jsx(Notice, {
|
|
219
|
+
tone: "error",
|
|
220
|
+
compact: true,
|
|
221
|
+
detail: data.error,
|
|
222
|
+
className: "shrink-0 mx-2 mt-1",
|
|
223
|
+
action: /* @__PURE__ */ jsx(IconButton, {
|
|
224
224
|
size: "xs",
|
|
225
225
|
icon: "i-ph-x",
|
|
226
226
|
label: labels.terminalDismissError,
|
|
227
227
|
onClick: () => store.dismissError(key),
|
|
228
|
-
className: "!text-current"
|
|
229
|
-
})
|
|
228
|
+
className: "!text-current ml-auto"
|
|
229
|
+
}),
|
|
230
|
+
children: labels.terminalActionFailed
|
|
230
231
|
}),
|
|
231
232
|
/* @__PURE__ */ jsx("div", {
|
|
232
233
|
ref: areaRef,
|
|
@@ -439,7 +440,7 @@ function statusText(t, labels) {
|
|
|
439
440
|
switch (t.status) {
|
|
440
441
|
case "exited": return t.exitCode !== void 0 ? labels.terminalExitedWith(t.exitCode) : labels.terminalExitedPlain;
|
|
441
442
|
case "paused": return labels.terminalDisconnected;
|
|
442
|
-
case "error": return
|
|
443
|
+
case "error": return labels.terminalFailedToStart;
|
|
443
444
|
case "starting": return labels.terminalStarting;
|
|
444
445
|
default: return null;
|
|
445
446
|
}
|
|
@@ -457,18 +458,30 @@ function StatusBar({ scope, terminal: t, onReconnect }) {
|
|
|
457
458
|
label: labels.terminalRestart,
|
|
458
459
|
run: () => void store.restart(scope, t.id)
|
|
459
460
|
} : null;
|
|
461
|
+
const button = action && /* @__PURE__ */ jsx("button", {
|
|
462
|
+
type: "button",
|
|
463
|
+
onClick: action.run,
|
|
464
|
+
className: "zg-segment-item zg-press-soft shrink-0 h-5 px-1.5 rounded-zg-sm border-0 bg-transparent font-sans text-zg-meta text-[var(--zg-accent)] cursor-pointer",
|
|
465
|
+
children: action.label
|
|
466
|
+
});
|
|
467
|
+
if (t.status === "error") return /* @__PURE__ */ jsx("div", {
|
|
468
|
+
className: "shrink-0 px-2 py-1",
|
|
469
|
+
"data-testid": "terminal-status",
|
|
470
|
+
children: /* @__PURE__ */ jsx(Notice, {
|
|
471
|
+
tone: "error",
|
|
472
|
+
compact: true,
|
|
473
|
+
...t.error ? { detail: t.error } : {},
|
|
474
|
+
action: button,
|
|
475
|
+
children: text
|
|
476
|
+
})
|
|
477
|
+
});
|
|
460
478
|
return /* @__PURE__ */ jsxs("div", {
|
|
461
|
-
className:
|
|
479
|
+
className: "shrink-0 flex items-center gap-2 h-7 px-3 zg-meta",
|
|
462
480
|
"data-testid": "terminal-status",
|
|
463
481
|
children: [/* @__PURE__ */ jsx("span", {
|
|
464
482
|
className: "truncate",
|
|
465
483
|
children: text
|
|
466
|
-
}),
|
|
467
|
-
type: "button",
|
|
468
|
-
onClick: action.run,
|
|
469
|
-
className: "zg-segment-item zg-press-soft shrink-0 h-5 px-1.5 rounded-zg-sm border-0 bg-transparent font-sans text-zg-meta text-[var(--zg-accent)] cursor-pointer",
|
|
470
|
-
children: action.label
|
|
471
|
-
})]
|
|
484
|
+
}), button]
|
|
472
485
|
});
|
|
473
486
|
}
|
|
474
487
|
function Empty({ onNew }) {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { useLabels } from "../labels.js";
|
|
2
|
+
import { Notice } from "../components/Notice.js";
|
|
3
|
+
import { errorMessage } from "../components/report-error.js";
|
|
2
4
|
import { loadGhostty, openTerminal } from "./ghostty.js";
|
|
3
5
|
import { macTerminalKey } from "./keys.js";
|
|
4
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -131,7 +133,7 @@ function TerminalSurface({ adapter, theme, fontFamily, fontSize, symbolsFontUrl,
|
|
|
131
133
|
if (adapter.onExit) unsubscribe.push(adapter.onExit((code) => setExitCode(code)));
|
|
132
134
|
if (live.current.autoFocus && live.current.visible) term.focus();
|
|
133
135
|
}, (error) => {
|
|
134
|
-
if (!disposed) setFailed(
|
|
136
|
+
if (!disposed) setFailed(errorMessage(error));
|
|
135
137
|
});
|
|
136
138
|
return () => {
|
|
137
139
|
disposed = true;
|
|
@@ -176,10 +178,15 @@ function TerminalSurface({ adapter, theme, fontFamily, fontSize, symbolsFontUrl,
|
|
|
176
178
|
"data-terminal-mount": true,
|
|
177
179
|
className: "absolute inset-0 pl-2 pt-1",
|
|
178
180
|
style: { caretColor: "transparent" }
|
|
179
|
-
}),
|
|
181
|
+
}), failed !== null ? /* @__PURE__ */ jsx(Notice, {
|
|
182
|
+
tone: "error",
|
|
183
|
+
detail: failed,
|
|
184
|
+
className: "absolute inset-x-0 bottom-0 m-2",
|
|
185
|
+
children: labels.terminalStartFailed
|
|
186
|
+
}) : exitCode !== null && /* @__PURE__ */ jsx("div", {
|
|
180
187
|
role: "status",
|
|
181
|
-
className:
|
|
182
|
-
children:
|
|
188
|
+
className: "absolute inset-x-0 bottom-0 m-2 px-2.5 py-1.5 rounded-zg-sm text-zg-label bg-[var(--zg-tray)] text-[var(--zg-text-muted)]",
|
|
189
|
+
children: labels.terminalExited(exitCode)
|
|
183
190
|
})]
|
|
184
191
|
});
|
|
185
192
|
}
|
|
@@ -60,6 +60,11 @@ declare const DEFAULT_TERMINAL_LABELS: {
|
|
|
60
60
|
terminalPaste: string;
|
|
61
61
|
terminalClear: string;
|
|
62
62
|
terminalCouldNotLoad: (message: string) => string;
|
|
63
|
+
/** The terminal's view failed: the renderer did not load, or the terminal did not attach. */
|
|
64
|
+
terminalLoadError: string;
|
|
65
|
+
terminalAttachError: string;
|
|
66
|
+
/** Opening, closing or restarting a terminal failed (the error line over the terminal). */
|
|
67
|
+
terminalActionFailed: string;
|
|
63
68
|
/** A remote terminal's loopback link, in its tooltip. */
|
|
64
69
|
terminalLinkOnServer: (serverName: string) => string;
|
|
65
70
|
};
|
|
@@ -60,6 +60,11 @@ const DEFAULT_TERMINAL_LABELS = {
|
|
|
60
60
|
terminalPaste: "Paste",
|
|
61
61
|
terminalClear: "Clear",
|
|
62
62
|
terminalCouldNotLoad: (message) => `Could not load the terminal: ${message}`,
|
|
63
|
+
/** The terminal's view failed: the renderer did not load, or the terminal did not attach. */
|
|
64
|
+
terminalLoadError: "Couldn't load the terminal.",
|
|
65
|
+
terminalAttachError: "Couldn't connect to this terminal.",
|
|
66
|
+
/** Opening, closing or restarting a terminal failed (the error line over the terminal). */
|
|
67
|
+
terminalActionFailed: "Couldn't complete that terminal action.",
|
|
63
68
|
/** A remote terminal's loopback link, in its tooltip. */
|
|
64
69
|
terminalLinkOnServer: (serverName) => `runs on ${serverName}, not reachable from this computer`
|
|
65
70
|
};
|
|
@@ -249,7 +249,8 @@ var TerminalStore = class {
|
|
|
249
249
|
if (s.state.terminals.some((t) => t.owner === "user")) return;
|
|
250
250
|
const revealed = this.revealed.get(key);
|
|
251
251
|
if (revealed && revealed === s.activeId && s.state.terminals.some((t) => t.id === revealed)) return;
|
|
252
|
-
await this.open(scope, void 0, measure?.() ?? void 0);
|
|
252
|
+
const info = await this.open(scope, void 0, measure?.() ?? void 0);
|
|
253
|
+
if (info && placement === "drawer") this.reveal(scope, info.id, "drawer");
|
|
253
254
|
}
|
|
254
255
|
/**
|
|
255
256
|
* Opens a terminal and makes it active. Resolves `null` when it failed (see `error`).
|
|
@@ -505,13 +506,15 @@ var TerminalStore = class {
|
|
|
505
506
|
this.layouts.update(scope, { terminalOpen: open });
|
|
506
507
|
}
|
|
507
508
|
/**
|
|
508
|
-
* Opens the drawer and a new terminal in it.
|
|
509
|
+
* Opens the drawer and a new terminal in it, focused.
|
|
509
510
|
*
|
|
510
511
|
* @param scope - The scope.
|
|
511
512
|
*/
|
|
512
513
|
openInDrawer(scope) {
|
|
513
514
|
this.layouts.update(scope, { terminalOpen: true });
|
|
514
|
-
this.open(scope)
|
|
515
|
+
this.open(scope).then((info) => {
|
|
516
|
+
if (info) this.reveal(scope, info.id, "drawer");
|
|
517
|
+
});
|
|
515
518
|
}
|
|
516
519
|
/**
|
|
517
520
|
* Opens a new terminal in the scope, shows it, and types `input` into it (a
|
|
@@ -9,6 +9,10 @@ interface LayoutBudget extends LayoutResolved {
|
|
|
9
9
|
hidePanel: () => void;
|
|
10
10
|
/** Bring the slid-away panel back. */
|
|
11
11
|
revealPanel: () => void;
|
|
12
|
+
/** The sidebar is open over the chat while the window is too narrow to dock it. */
|
|
13
|
+
sidebarPeek: boolean;
|
|
14
|
+
/** Open (or close) the sidebar over the chat. It works only while the budget collapses the sidebar. */
|
|
15
|
+
peekSidebar: (open: boolean) => void;
|
|
12
16
|
/**
|
|
13
17
|
* Drag caps that keep the chat at its floor, read at drag time. A getter,
|
|
14
18
|
* not a value: they change on every resized pixel and must not re-render
|
|
@@ -39,7 +43,7 @@ interface LayoutBudgetProviderProps {
|
|
|
39
43
|
width: number | null;
|
|
40
44
|
share: number | null;
|
|
41
45
|
};
|
|
42
|
-
/** What the panel belongs to (the scope's key): a change brings a slid-away panel back. */
|
|
46
|
+
/** What the panel belongs to (the scope's key): a change brings a slid-away panel back and closes a peeking sidebar. */
|
|
43
47
|
resetKey?: string | null;
|
|
44
48
|
/** The columns. */
|
|
45
49
|
children: ReactNode;
|
|
@@ -12,7 +12,10 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, use
|
|
|
12
12
|
*
|
|
13
13
|
* Owns the floating panel's "slid away" flag: a pointer-down in the chat
|
|
14
14
|
* hides it (`hidePanel`) until it is opened again, the window grows enough
|
|
15
|
-
* to dock it, or the scope changes (`resetKey`).
|
|
15
|
+
* to dock it, or the scope changes (`resetKey`). And the sidebar's peek: on a
|
|
16
|
+
* window too narrow to dock it (a phone, a tablet), the sidebar toggle opens
|
|
17
|
+
* it over the chat (`peekSidebar`) until it is closed, the scope changes, or
|
|
18
|
+
* the window grows enough to dock it.
|
|
16
19
|
*
|
|
17
20
|
* Never read `window.innerWidth` in a column: read `useLayoutBudget()`.
|
|
18
21
|
*/
|
|
@@ -53,6 +56,12 @@ function LayoutBudgetProvider({ sidebar, panel, resetKey = null, children }) {
|
|
|
53
56
|
]);
|
|
54
57
|
const hidePanel = useCallback(() => setPanelHidden(true), []);
|
|
55
58
|
const revealPanel = useCallback(() => setPanelHidden(false), []);
|
|
59
|
+
const [peek, setPeek] = useState(false);
|
|
60
|
+
const sidebarPeek = peek && resolved.sidebarForcedCollapsed;
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
setPeek(false);
|
|
63
|
+
}, [resolved.sidebarForcedCollapsed, resetKey]);
|
|
64
|
+
const peekSidebar = useCallback((open) => setPeek(open), []);
|
|
56
65
|
const caps = useRef({
|
|
57
66
|
viewportWidth,
|
|
58
67
|
resolved,
|
|
@@ -79,12 +88,16 @@ function LayoutBudgetProvider({ sidebar, panel, resetKey = null, children }) {
|
|
|
79
88
|
panelHidden,
|
|
80
89
|
hidePanel,
|
|
81
90
|
revealPanel,
|
|
91
|
+
sidebarPeek,
|
|
92
|
+
peekSidebar,
|
|
82
93
|
getCaps
|
|
83
94
|
}), [
|
|
84
95
|
resolved,
|
|
85
96
|
panelHidden,
|
|
86
97
|
hidePanel,
|
|
87
98
|
revealPanel,
|
|
99
|
+
sidebarPeek,
|
|
100
|
+
peekSidebar,
|
|
88
101
|
getCaps
|
|
89
102
|
]);
|
|
90
103
|
return /* @__PURE__ */ jsx(BudgetContext.Provider, {
|
|
@@ -37,7 +37,7 @@ interface PanelContentViewProps {
|
|
|
37
37
|
content: PanelContent | null;
|
|
38
38
|
/** A load is in flight. */
|
|
39
39
|
loading: boolean;
|
|
40
|
-
/** Why the last load failed, or `null`. */
|
|
40
|
+
/** Why the last load or action failed, in the extension's words (shown under Details), or `null`. */
|
|
41
41
|
error: string | null;
|
|
42
42
|
/** Runs one of the panel's actions (a row's `actionId`, a footer action). Keep it stable: the view is memoised. */
|
|
43
43
|
onAction: (actionId: string, payload?: unknown) => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Notice } from "../components/Notice.js";
|
|
1
2
|
import { PanelEmpty, PanelLoading } from "../components/PanelEmpty.js";
|
|
2
3
|
import { PANEL_ROW, PANEL_ROW_HOVER, RowBadge } from "../components/PanelRows.js";
|
|
3
4
|
import { useExtensionItems } from "../extensions/ExtensionsProvider.js";
|
|
@@ -62,10 +63,18 @@ const PanelContentView = memo(function PanelContentView({ content, loading, erro
|
|
|
62
63
|
className,
|
|
63
64
|
style
|
|
64
65
|
});
|
|
66
|
+
if (!content && error) return /* @__PURE__ */ jsx("div", {
|
|
67
|
+
className: `${block ? "" : "px-3 pt-3"}${className ? ` ${className}` : ""}`,
|
|
68
|
+
style,
|
|
69
|
+
children: /* @__PURE__ */ jsx(Notice, {
|
|
70
|
+
tone: "error",
|
|
71
|
+
detail: error,
|
|
72
|
+
children: labels.panelError
|
|
73
|
+
})
|
|
74
|
+
});
|
|
65
75
|
if (!content) return /* @__PURE__ */ jsx(PanelEmpty, {
|
|
66
76
|
icon: "i-ph-squares-four",
|
|
67
|
-
title:
|
|
68
|
-
warn: Boolean(error),
|
|
77
|
+
title: labels.panelContentNone,
|
|
69
78
|
className,
|
|
70
79
|
style
|
|
71
80
|
});
|
|
@@ -94,10 +103,12 @@ const PanelContentView = memo(function PanelContentView({ content, loading, erro
|
|
|
94
103
|
}), loadingMore ? labels.panelLoadingMore : content.more.label ?? labels.panelLoadMore]
|
|
95
104
|
}) : null;
|
|
96
105
|
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
97
|
-
error && /* @__PURE__ */ jsx(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
error && /* @__PURE__ */ jsx(Notice, {
|
|
107
|
+
tone: "error",
|
|
108
|
+
compact: true,
|
|
109
|
+
detail: error,
|
|
110
|
+
className: "mb-2",
|
|
111
|
+
children: labels.panelError
|
|
101
112
|
}),
|
|
102
113
|
header && /* @__PURE__ */ jsx("div", {
|
|
103
114
|
className: block ? "mb-4" : "mb-3",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LabelsProvider } from "../labels.js";
|
|
2
|
+
import { errorMessage } from "../components/report-error.js";
|
|
2
3
|
import { activeTabOf } from "./headless/panel-tree.js";
|
|
3
4
|
import { EMPTY_WORKSPACE_LAYOUT, createMemoryLayouts } from "./headless/layouts.js";
|
|
4
5
|
import { EMPTY_CONTENT_ENTRY, bindingKey, createPanelContents } from "./headless/contents.js";
|
|
@@ -129,7 +130,7 @@ function WorkspaceState({ host: given, scope, tabs: appTabs, fillEmpty = false,
|
|
|
129
130
|
const refresh = useCallback((id) => {
|
|
130
131
|
if (!cwd || !binding || !panels) return;
|
|
131
132
|
const token = contentsStore.begin(binding, id);
|
|
132
|
-
panels.load(cwd, id, ctxFor(id)).then((content) => contentsStore.settle(binding, id, token, { content })).catch((err) => contentsStore.settle(binding, id, token, { error:
|
|
133
|
+
panels.load(cwd, id, ctxFor(id)).then((content) => contentsStore.settle(binding, id, token, { content })).catch((err) => contentsStore.settle(binding, id, token, { error: errorMessage(err) }));
|
|
133
134
|
}, [
|
|
134
135
|
cwd,
|
|
135
136
|
binding,
|
|
@@ -189,7 +190,7 @@ function WorkspaceState({ host: given, scope, tabs: appTabs, fillEmpty = false,
|
|
|
189
190
|
const result = await panels.action(cwd, id, actionId, payload, ctxFor(id));
|
|
190
191
|
error = result.ok ? null : errorText(result.error);
|
|
191
192
|
} catch (err) {
|
|
192
|
-
error =
|
|
193
|
+
error = errorMessage(err);
|
|
193
194
|
}
|
|
194
195
|
if (!at) return;
|
|
195
196
|
if (error !== null) {
|
|
@@ -23,6 +23,7 @@ const DEFAULT_WORKSPACE_LABELS = {
|
|
|
23
23
|
panelTabUpdated: "updated",
|
|
24
24
|
panelResizeGroups: "Resize panel groups",
|
|
25
25
|
panelUnavailable: "This panel is not available here.",
|
|
26
|
+
panelError: "Something went wrong in this panel.",
|
|
26
27
|
panelContentNone: "Nothing to show",
|
|
27
28
|
panelContentEmpty: "Nothing yet",
|
|
28
29
|
panelHeatmapLabel: "Activity heatmap",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zidane-ui",
|
|
3
|
-
"version": "9.1.
|
|
3
|
+
"version": "9.1.16",
|
|
4
4
|
"description": "Zidane design system and chat kit: tokens, surface primitives, theme engine, React components, the chat layer (sessions, transcript, composer) and ChatHost adapters.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -514,7 +514,7 @@
|
|
|
514
514
|
"prepare": "bun run link:zidane"
|
|
515
515
|
},
|
|
516
516
|
"dependencies": {
|
|
517
|
-
"@pierre/diffs": "
|
|
517
|
+
"@pierre/diffs": "1.6.2",
|
|
518
518
|
"@pierre/highlights": "0.3.0",
|
|
519
519
|
"@pierre/trees": "^1.0.0-beta.6",
|
|
520
520
|
"@radix-ui/react-dropdown-menu": "^2.1.25",
|
|
@@ -536,7 +536,7 @@
|
|
|
536
536
|
"react": "^19.3.0",
|
|
537
537
|
"react-dom": "^19.3.0",
|
|
538
538
|
"unocss": ">=66.0.0",
|
|
539
|
-
"zidane": "^9.1.
|
|
539
|
+
"zidane": "^9.1.16",
|
|
540
540
|
"vitest": ">=3"
|
|
541
541
|
},
|
|
542
542
|
"peerDependenciesMeta": {
|
package/src/styles/motion.css
CHANGED
|
@@ -281,6 +281,14 @@ html[data-motion='reduced'] .zg-shimmer {
|
|
|
281
281
|
opacity var(--zg-motion-fade),
|
|
282
282
|
margin-left var(--zg-motion-settle);
|
|
283
283
|
}
|
|
284
|
+
/* `Grow symmetric`: leaving on the curve it arrived on, so a row shrinking out
|
|
285
|
+
as another grows in mirrors it exactly and the list's height holds. */
|
|
286
|
+
.zg-grow[data-symmetric]:not([data-shown]) {
|
|
287
|
+
transition:
|
|
288
|
+
grid-template-rows var(--zg-motion-settle),
|
|
289
|
+
opacity var(--zg-motion-fade-out),
|
|
290
|
+
margin-left var(--zg-motion-settle);
|
|
291
|
+
}
|
|
284
292
|
.zg-grow-clip {
|
|
285
293
|
min-height: 0;
|
|
286
294
|
overflow-x: visible;
|
|
@@ -249,6 +249,13 @@
|
|
|
249
249
|
padding: 6px 10px;
|
|
250
250
|
align-items: flex-start;
|
|
251
251
|
}
|
|
252
|
+
/* A row that belongs to the row above it (a server's machines): one glyph column in. */
|
|
253
|
+
.zg-menu-row.zg-menu-row-nested {
|
|
254
|
+
padding-left: 26px;
|
|
255
|
+
}
|
|
256
|
+
.zg-menu-row.zg-menu-row-nested[data-size='lg'] {
|
|
257
|
+
padding-left: 28px;
|
|
258
|
+
}
|
|
252
259
|
.zg-menu-row:hover:not(:disabled) {
|
|
253
260
|
background: var(--zg-row-hover);
|
|
254
261
|
}
|