zidane-ui 9.1.1 → 9.1.4
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 +2 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/server-transcript-members.d.ts +1 -1
- package/dist/adapters/server-transcript-members.js +19 -1
- package/dist/app/ModalProvider.d.ts +3 -1
- package/dist/app/ModalProvider.js +15 -9
- package/dist/approvals/headless/index.js +1 -1
- package/dist/chat/HostTranscript.d.ts +3 -1
- package/dist/chat/HostTranscript.js +5 -3
- package/dist/chat/Transcript.js +1 -1
- package/dist/chat/composer/ComposerEditor.js +1 -1
- package/dist/chat/composer/index.js +1 -1
- package/dist/chat/composer/use-composer-stores.js +1 -1
- package/dist/chat/headless/block-runs.d.ts +57 -0
- package/dist/chat/headless/block-runs.js +123 -0
- package/dist/chat/headless/composer/index.js +2 -2
- package/dist/chat/headless/fixture-transcript.d.ts +6 -1
- package/dist/chat/headless/fixture-transcript.js +49 -0
- package/dist/chat/headless/host.d.ts +3 -0
- package/dist/chat/headless/index.d.ts +2 -1
- package/dist/chat/headless/index.js +11 -10
- package/dist/chat/headless/labels.d.ts +42 -0
- package/dist/chat/headless/labels.js +42 -0
- package/dist/chat/headless/session-list.d.ts +27 -0
- package/dist/chat/headless/sidebar/labels.d.ts +27 -0
- package/dist/chat/headless/streams/index.js +1 -1
- package/dist/chat/headless/streams/live-events.js +2 -1
- package/dist/chat/headless/streams/session-streams.js +2 -2
- package/dist/chat/headless/streams/store.js +2 -2
- package/dist/chat/headless/transcript/batch.d.ts +21 -1
- package/dist/chat/headless/transcript/batch.js +55 -10
- package/dist/chat/headless/transcript/collapse.js +18 -3
- package/dist/chat/headless/transcript/fold.js +26 -10
- package/dist/chat/headless/transcript/index.js +1 -1
- package/dist/chat/headless/transcript/rows.d.ts +7 -1
- package/dist/chat/index.d.ts +6 -1
- package/dist/chat/index.js +7 -2
- package/dist/chat/testing/contract.d.ts +6 -1
- package/dist/chat/testing/contract.js +30 -3
- package/dist/chat/transcript/AnsiText.d.ts +27 -0
- package/dist/chat/transcript/AnsiText.js +73 -0
- package/dist/chat/transcript/CodemodeScript.d.ts +33 -0
- package/dist/chat/transcript/CodemodeScript.js +212 -0
- package/dist/chat/transcript/LiveOutput.d.ts +21 -0
- package/dist/chat/transcript/LiveOutput.js +42 -0
- package/dist/chat/transcript/TranscriptRow.js +19 -2
- package/dist/chat/transcript/actions.d.ts +6 -0
- package/dist/chat/transcript/index.d.ts +6 -1
- package/dist/chat/transcript/index.js +6 -1
- package/dist/chat/transcript/markdown.js +9 -0
- package/dist/chat/transcript/renderers.d.ts +7 -0
- package/dist/chat/transcript/script-input.d.ts +17 -0
- package/dist/chat/transcript/script-input.js +16 -0
- package/dist/chat/transcript/shell-block-scope.d.ts +29 -0
- package/dist/chat/transcript/shell-block-scope.js +18 -0
- package/dist/chat/transcript/shell-block.d.ts +27 -0
- package/dist/chat/transcript/shell-block.js +306 -0
- package/dist/chat/transcript/tool-parts.d.ts +18 -6
- package/dist/chat/transcript/tool-parts.js +15 -5
- package/dist/chat/transcript/tool-payload.js +6 -3
- package/dist/chat/transcript/tool-row.js +155 -96
- package/dist/chat/transcript/user-bash.js +3 -2
- package/dist/code/HighlightedCode.js +3 -69
- package/dist/code/highlight-lines.d.ts +24 -0
- package/dist/code/highlight-lines.js +41 -0
- package/dist/code/use-highlighted-html.d.ts +5 -0
- package/dist/code/use-highlighted-html.js +75 -0
- package/dist/core.css +6 -2
- package/dist/dist/{index-CGbOWa7y.d.ts → index-WlE93Q6d.d.ts} +101 -3
- package/dist/extensions/ExtensionSettingsSidebar.js +19 -3
- package/dist/extensions/kit.d.ts +1 -1
- package/dist/git/BranchMenu.d.ts +1 -7
- package/dist/git/BranchMenu.js +17 -40
- package/dist/git/headless/labels.d.ts +0 -2
- package/dist/git/headless/labels.js +0 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/onboarding/demos/index.js +1 -1
- package/dist/onboarding/index.js +5 -5
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ConnectorsStep.js +1 -1
- package/dist/onboarding/steps/ExtensionsStep.js +1 -1
- package/dist/onboarding/steps/ReadyStep.js +2 -2
- package/dist/onboarding/steps/SkillsStep.js +1 -1
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/session/headless/index.js +1 -1
- package/dist/settings/SettingsShell.d.ts +3 -1
- package/dist/settings/SettingsShell.js +15 -8
- package/dist/settings/headless/catalog.js +5 -0
- package/dist/settings/headless/layout.js +2 -1
- package/dist/settings/headless/registry.d.ts +2 -0
- package/dist/settings/headless/search.d.ts +1 -1
- package/dist/settings/sections/environments/EnvironmentsSection.js +1 -1
- package/dist/settings/sections/extensions/ExtensionsSection.js +2 -2
- package/dist/settings/sections/models/ModelRows.js +2 -2
- package/dist/settings/sections/models/model-test.js +1 -1
- package/dist/settings/sections/skills/SkillsSection.js +1 -1
- package/dist/styles.css +291 -2
- package/dist/terminal/TerminalProvider.d.ts +3 -1
- package/dist/terminal/TerminalProvider.js +5 -1
- package/dist/terminal/headless/store.d.ts +10 -0
- package/dist/terminal/headless/store.js +16 -0
- package/dist/terminal/index.d.ts +2 -2
- package/dist/terminal/index.js +2 -2
- package/dist/theme/runtime-icons.d.ts +50 -0
- package/dist/theme/runtime-icons.js +95 -0
- package/package.json +3 -6
- package/src/styles/primitives.css +5 -2
- package/src/styles/transcript.css +281 -0
- package/src/adapters/browser-appearance-host.ts +0 -51
- package/src/adapters/browser-keybindings-host.ts +0 -48
- package/src/adapters/browser-workspace-host.ts +0 -92
- package/src/adapters/closable-client.ts +0 -34
- package/src/adapters/extension-modules.ts +0 -360
- package/src/adapters/index.ts +0 -35
- package/src/adapters/live-events.ts +0 -6
- package/src/adapters/live.ts +0 -270
- package/src/adapters/run-host.ts +0 -238
- package/src/adapters/server-approvals-host.ts +0 -102
- package/src/adapters/server-client.ts +0 -15
- package/src/adapters/server-composer-host.ts +0 -459
- package/src/adapters/server-extensions-host.ts +0 -979
- package/src/adapters/server-files-host.ts +0 -287
- package/src/adapters/server-git-host.ts +0 -289
- package/src/adapters/server-host.ts +0 -489
- package/src/adapters/server-machines-host.ts +0 -283
- package/src/adapters/server-oauth-flow.ts +0 -133
- package/src/adapters/server-onboarding-host.ts +0 -363
- package/src/adapters/server-palette-host.ts +0 -134
- package/src/adapters/server-session-host.ts +0 -241
- package/src/adapters/server-settings-accounts.ts +0 -212
- package/src/adapters/server-settings-host.ts +0 -120
- package/src/adapters/server-settings-models.ts +0 -46
- package/src/adapters/server-settings-performance.ts +0 -58
- package/src/adapters/server-settings-sections.ts +0 -222
- package/src/adapters/server-sidebar-host.ts +0 -59
- package/src/adapters/server-terminal-host.ts +0 -124
- package/src/adapters/server-transcript-members.ts +0 -131
- package/src/adapters/sse-host.ts +0 -264
- package/src/adapters/sse-parser.ts +0 -82
- package/src/adapters/sse-protocol.ts +0 -118
- package/src/adapters/stream-pacer.ts +0 -122
- package/src/adapters/worker-host.ts +0 -192
- package/src/adapters/worker-protocol.ts +0 -97
- package/src/app/AppHostProvider.tsx +0 -135
- package/src/app/ModalProvider.tsx +0 -731
- package/src/app/headless/app-host.ts +0 -61
- package/src/app/headless/index.ts +0 -6
- package/src/app/headless/resource.ts +0 -444
- package/src/app/index.ts +0 -9
- package/src/app/testing/index.ts +0 -90
- package/src/app/useConfirm.tsx +0 -65
- package/src/app/useResource.ts +0 -30
- package/src/appearance/AppearanceProvider.tsx +0 -383
- package/src/appearance/apply.ts +0 -69
- package/src/appearance/headless/fixture-host.ts +0 -111
- package/src/appearance/headless/fonts.ts +0 -224
- package/src/appearance/headless/host.ts +0 -65
- package/src/appearance/headless/index.ts +0 -12
- package/src/appearance/headless/prefs.ts +0 -252
- package/src/appearance/headless/storage.ts +0 -127
- package/src/appearance/headless/zoom-commands.ts +0 -21
- package/src/appearance/index.ts +0 -11
- package/src/appearance/testing/contract.ts +0 -210
- package/src/appearance/testing/index.ts +0 -6
- package/src/approvals/ApprovalBar.tsx +0 -234
- package/src/approvals/ApprovalConcern.tsx +0 -33
- package/src/approvals/ApprovalShell.tsx +0 -69
- package/src/approvals/ApprovalsProvider.tsx +0 -110
- package/src/approvals/FileEditApproval.tsx +0 -310
- package/src/approvals/HunkPreviews.tsx +0 -225
- package/src/approvals/SafelistPanel.tsx +0 -149
- package/src/approvals/headless/fixture-host.ts +0 -73
- package/src/approvals/headless/fixtures.ts +0 -86
- package/src/approvals/headless/heads.ts +0 -81
- package/src/approvals/headless/host.ts +0 -80
- package/src/approvals/headless/index.ts +0 -12
- package/src/approvals/headless/labels.ts +0 -67
- package/src/approvals/headless/pending.ts +0 -91
- package/src/approvals/headless/preview.ts +0 -94
- package/src/approvals/headless/safelist.ts +0 -63
- package/src/approvals/index.ts +0 -13
- package/src/approvals/key-scope.ts +0 -33
- package/src/approvals/testing/contract.ts +0 -230
- package/src/approvals/testing/index.ts +0 -7
- package/src/brands/marks.ts +0 -298
- package/src/chat/ChatProvider.tsx +0 -60
- package/src/chat/DaemonOrb.tsx +0 -107
- package/src/chat/HostBadge.tsx +0 -71
- package/src/chat/HostStatusDot.tsx +0 -53
- package/src/chat/HostTranscript.tsx +0 -101
- package/src/chat/PdfPreview.tsx +0 -65
- package/src/chat/RunEstimateChip.tsx +0 -168
- package/src/chat/SessionFilterMenu.tsx +0 -397
- package/src/chat/SessionGroupHeader.tsx +0 -177
- package/src/chat/SessionHostHeader.tsx +0 -66
- package/src/chat/SessionList.tsx +0 -413
- package/src/chat/SessionListRow.tsx +0 -296
- package/src/chat/SessionStreamsProvider.tsx +0 -253
- package/src/chat/StatusDot.tsx +0 -128
- package/src/chat/TextPreview.tsx +0 -121
- package/src/chat/Throbber.tsx +0 -270
- package/src/chat/Transcript.tsx +0 -523
- package/src/chat/composer/AgentPicker.tsx +0 -155
- package/src/chat/composer/AgentPickerDialog.tsx +0 -99
- package/src/chat/composer/ApprovalDock.tsx +0 -64
- package/src/chat/composer/ArchivedBanner.tsx +0 -44
- package/src/chat/composer/AttachmentTiles.tsx +0 -211
- package/src/chat/composer/Composer.tsx +0 -500
- package/src/chat/composer/ComposerBadges.tsx +0 -339
- package/src/chat/composer/ComposerControls.tsx +0 -243
- package/src/chat/composer/ComposerEditor.tsx +0 -101
- package/src/chat/composer/ComposerHostProvider.tsx +0 -46
- package/src/chat/composer/ComposerShell.tsx +0 -129
- package/src/chat/composer/ContextBreakdown.tsx +0 -382
- package/src/chat/composer/ContextOrb.tsx +0 -176
- package/src/chat/composer/ConversationBadges.tsx +0 -168
- package/src/chat/composer/DockCard.tsx +0 -126
- package/src/chat/composer/EffortPickerDialog.tsx +0 -184
- package/src/chat/composer/HostComposer.tsx +0 -135
- package/src/chat/composer/HostContextOrb.tsx +0 -94
- package/src/chat/composer/HostModelChainList.tsx +0 -102
- package/src/chat/composer/HostPicker.tsx +0 -97
- package/src/chat/composer/HostPickers.tsx +0 -320
- package/src/chat/composer/ImageModelList.tsx +0 -151
- package/src/chat/composer/ModelChainList.tsx +0 -442
- package/src/chat/composer/ModelChainParts.tsx +0 -247
- package/src/chat/composer/ModelChainRow.tsx +0 -191
- package/src/chat/composer/ModelChainRows.tsx +0 -223
- package/src/chat/composer/ModelChainTooltip.tsx +0 -121
- package/src/chat/composer/ModelFacts.tsx +0 -204
- package/src/chat/composer/ModelOptionsPicker.tsx +0 -257
- package/src/chat/composer/ModelPicker.tsx +0 -513
- package/src/chat/composer/ModelPickerDialog.tsx +0 -99
- package/src/chat/composer/ModelProviderPills.tsx +0 -141
- package/src/chat/composer/PickerPill.tsx +0 -41
- package/src/chat/composer/ProjectMenu.tsx +0 -187
- package/src/chat/composer/PromptHistoryProvider.tsx +0 -214
- package/src/chat/composer/RetryPill.tsx +0 -47
- package/src/chat/composer/RunStatusChip.tsx +0 -150
- package/src/chat/composer/ScopeToggle.tsx +0 -94
- package/src/chat/composer/SelectTurnHint.tsx +0 -40
- package/src/chat/composer/SendButton.tsx +0 -89
- package/src/chat/composer/ServerScopeToggle.tsx +0 -188
- package/src/chat/composer/attachment-ingest.ts +0 -413
- package/src/chat/composer/attachments.tsx +0 -176
- package/src/chat/composer/badge-order.ts +0 -65
- package/src/chat/composer/composer-bus.ts +0 -317
- package/src/chat/composer/index.ts +0 -63
- package/src/chat/composer/load-composer-editor.ts +0 -25
- package/src/chat/composer/model-catalog.ts +0 -424
- package/src/chat/composer/model-list-layout.ts +0 -118
- package/src/chat/composer/prompt-history-nav.ts +0 -60
- package/src/chat/composer/scope-side.ts +0 -7
- package/src/chat/composer/suggestion-extension.ts +0 -113
- package/src/chat/composer/suggestions.tsx +0 -115
- package/src/chat/composer/use-agent-profiles.ts +0 -97
- package/src/chat/composer/use-cache-hints.ts +0 -93
- package/src/chat/composer/use-composer-stores.ts +0 -140
- package/src/chat/composer/use-draft-target.ts +0 -317
- package/src/chat/composer/use-new-session-defaults.ts +0 -201
- package/src/chat/composer/use-provider-ready-poll.ts +0 -35
- package/src/chat/composer/use-run-meter.ts +0 -140
- package/src/chat/composer/use-send-prompt.ts +0 -188
- package/src/chat/composer/use-session-meters.ts +0 -109
- package/src/chat/composer/use-sustained-work.ts +0 -74
- package/src/chat/composer/useAttachmentIngest.ts +0 -116
- package/src/chat/composer/useModelListSpy.ts +0 -19
- package/src/chat/headless/badge-refs.ts +0 -76
- package/src/chat/headless/chip-labels.ts +0 -40
- package/src/chat/headless/chip-settle.ts +0 -53
- package/src/chat/headless/chip-views.ts +0 -215
- package/src/chat/headless/composer/attachment-dedupe.ts +0 -50
- package/src/chat/headless/composer/commands.ts +0 -16
- package/src/chat/headless/composer/composer-sources.ts +0 -150
- package/src/chat/headless/composer/conversation-badges.ts +0 -227
- package/src/chat/headless/composer/draft-sync.ts +0 -199
- package/src/chat/headless/composer/editor-markdown.ts +0 -137
- package/src/chat/headless/composer/ghost-autocomplete.ts +0 -381
- package/src/chat/headless/composer/host-chrome.ts +0 -197
- package/src/chat/headless/composer/host.ts +0 -250
- package/src/chat/headless/composer/index.ts +0 -17
- package/src/chat/headless/composer/labels-chrome.ts +0 -83
- package/src/chat/headless/composer/labels-editor.ts +0 -44
- package/src/chat/headless/composer/labels.ts +0 -18
- package/src/chat/headless/composer/live-cost.ts +0 -67
- package/src/chat/headless/composer/model-knobs.ts +0 -179
- package/src/chat/headless/composer/model-names.ts +0 -145
- package/src/chat/headless/composer/model-picker-prefs.ts +0 -90
- package/src/chat/headless/composer/models.ts +0 -86
- package/src/chat/headless/composer/new-session-defaults.ts +0 -68
- package/src/chat/headless/composer/prompt-suggestions.ts +0 -72
- package/src/chat/headless/composer/remember-model-pick.ts +0 -132
- package/src/chat/headless/composer/run-meter.ts +0 -228
- package/src/chat/headless/composer-modes.ts +0 -170
- package/src/chat/headless/draft-scope.ts +0 -136
- package/src/chat/headless/draft-target.ts +0 -87
- package/src/chat/headless/extension-sources.ts +0 -64
- package/src/chat/headless/file-chip.ts +0 -175
- package/src/chat/headless/fixture-host.ts +0 -294
- package/src/chat/headless/fixture-transcript.ts +0 -125
- package/src/chat/headless/fixtures/demo-transcript-all-kinds.ts +0 -233
- package/src/chat/headless/fixtures/demo-transcript.ts +0 -244
- package/src/chat/headless/host.ts +0 -264
- package/src/chat/headless/hosts.ts +0 -55
- package/src/chat/headless/index.ts +0 -31
- package/src/chat/headless/labels.ts +0 -373
- package/src/chat/headless/markdown-chunks.ts +0 -134
- package/src/chat/headless/path-resolver.ts +0 -178
- package/src/chat/headless/prompt-origin.ts +0 -90
- package/src/chat/headless/reference-store.ts +0 -285
- package/src/chat/headless/send-flow.ts +0 -347
- package/src/chat/headless/session-list.ts +0 -400
- package/src/chat/headless/sidebar/activity.ts +0 -179
- package/src/chat/headless/sidebar/badges.ts +0 -190
- package/src/chat/headless/sidebar/compaction.ts +0 -98
- package/src/chat/headless/sidebar/directory.ts +0 -1046
- package/src/chat/headless/sidebar/dot-state.ts +0 -36
- package/src/chat/headless/sidebar/environment.ts +0 -70
- package/src/chat/headless/sidebar/estimates.ts +0 -146
- package/src/chat/headless/sidebar/host.ts +0 -41
- package/src/chat/headless/sidebar/index.ts +0 -18
- package/src/chat/headless/sidebar/labels.ts +0 -161
- package/src/chat/headless/sidebar/notifications.ts +0 -61
- package/src/chat/headless/sidebar/pinned-projects.ts +0 -51
- package/src/chat/headless/sidebar/pinned-sessions.ts +0 -27
- package/src/chat/headless/sidebar/project-icons.ts +0 -116
- package/src/chat/headless/sidebar/query.ts +0 -621
- package/src/chat/headless/sidebar/rows.ts +0 -427
- package/src/chat/headless/sidebar/types.ts +0 -96
- package/src/chat/headless/sidebar/view.ts +0 -367
- package/src/chat/headless/site-icons.ts +0 -51
- package/src/chat/headless/smooth-stream.ts +0 -76
- package/src/chat/headless/store.ts +0 -62
- package/src/chat/headless/streams/actions.ts +0 -85
- package/src/chat/headless/streams/index.ts +0 -25
- package/src/chat/headless/streams/live-events.ts +0 -124
- package/src/chat/headless/streams/merge.ts +0 -60
- package/src/chat/headless/streams/pacer.ts +0 -189
- package/src/chat/headless/streams/prompt-previews.ts +0 -64
- package/src/chat/headless/streams/scheduler.ts +0 -36
- package/src/chat/headless/streams/selectors.ts +0 -76
- package/src/chat/headless/streams/session-streams.ts +0 -407
- package/src/chat/headless/streams/store.ts +0 -1107
- package/src/chat/headless/streams/transcript.ts +0 -41
- package/src/chat/headless/streams/types.ts +0 -84
- package/src/chat/headless/transcript/batch.ts +0 -429
- package/src/chat/headless/transcript/collapse.ts +0 -789
- package/src/chat/headless/transcript/fold-actions.ts +0 -269
- package/src/chat/headless/transcript/fold-attachments.ts +0 -78
- package/src/chat/headless/transcript/fold.ts +0 -382
- package/src/chat/headless/transcript/index.ts +0 -41
- package/src/chat/headless/transcript/nesting.ts +0 -73
- package/src/chat/headless/transcript/pairing.ts +0 -124
- package/src/chat/headless/transcript/rows.ts +0 -377
- package/src/chat/headless/transcript/run-failures.ts +0 -72
- package/src/chat/headless/transcript/select-stops.ts +0 -151
- package/src/chat/headless/transcript/tool-media.ts +0 -42
- package/src/chat/headless/transcript-host.ts +0 -180
- package/src/chat/headless/transcript-labels.ts +0 -12
- package/src/chat/headless/turn-labels.ts +0 -28
- package/src/chat/headless/turn-prompt.ts +0 -32
- package/src/chat/index.ts +0 -31
- package/src/chat/interactions/HostInteractions.tsx +0 -76
- package/src/chat/interactions/InboxPanel.tsx +0 -226
- package/src/chat/interactions/InteractionCard.tsx +0 -111
- package/src/chat/interactions/PlanCard.tsx +0 -186
- package/src/chat/interactions/QuestionField.tsx +0 -336
- package/src/chat/interactions/QuestionForm.tsx +0 -283
- package/src/chat/interactions/card-ui.tsx +0 -86
- package/src/chat/interactions/hooks.ts +0 -49
- package/src/chat/interactions/index.ts +0 -8
- package/src/chat/provider-color.ts +0 -71
- package/src/chat/rich-composer/MentionList.tsx +0 -238
- package/src/chat/rich-composer/RichComposer.tsx +0 -1071
- package/src/chat/rich-composer/badge-decorations.ts +0 -157
- package/src/chat/rich-composer/composer-controls.tsx +0 -102
- package/src/chat/rich-composer/composer-extensions.ts +0 -388
- package/src/chat/rich-composer/composer-keys.ts +0 -416
- package/src/chat/rich-composer/ghost-plugin.ts +0 -89
- package/src/chat/rich-composer/index.ts +0 -3
- package/src/chat/rich-composer/mention-popover.ts +0 -336
- package/src/chat/rich-composer/slash-completion.ts +0 -143
- package/src/chat/rich-composer/use-composer-bus.ts +0 -57
- package/src/chat/rich-composer/use-composer-editor.ts +0 -216
- package/src/chat/rich-composer/use-composer-sources.ts +0 -90
- package/src/chat/rich-composer/use-draft-mirror.ts +0 -398
- package/src/chat/rich-composer/use-editor-handover.ts +0 -45
- package/src/chat/rich-composer/use-extension-composer.ts +0 -80
- package/src/chat/rich-composer/use-ghost-lifecycle.ts +0 -265
- package/src/chat/rich-composer/use-prompt-ghost.ts +0 -90
- package/src/chat/rich-composer/use-staged-attachments.ts +0 -65
- package/src/chat/sidebar/MainSessionRow.tsx +0 -102
- package/src/chat/sidebar/ProjectIcon.tsx +0 -399
- package/src/chat/sidebar/RowChips.tsx +0 -98
- package/src/chat/sidebar/SessionSidebar.tsx +0 -1039
- package/src/chat/sidebar/SidebarDecoration.tsx +0 -93
- package/src/chat/sidebar/SidebarFilterMenu.tsx +0 -270
- package/src/chat/sidebar/SidebarFooter.tsx +0 -244
- package/src/chat/sidebar/SidebarFrame.tsx +0 -154
- package/src/chat/sidebar/SidebarGroupHeader.tsx +0 -263
- package/src/chat/sidebar/SidebarHostProvider.tsx +0 -51
- package/src/chat/sidebar/SidebarRowView.tsx +0 -151
- package/src/chat/sidebar/SidebarSearchRow.tsx +0 -66
- package/src/chat/sidebar/SidebarSessionRow.tsx +0 -317
- package/src/chat/sidebar/SidebarToggleButton.tsx +0 -48
- package/src/chat/sidebar/SpaceSwitcher.tsx +0 -341
- package/src/chat/sidebar/SpacesSection.tsx +0 -259
- package/src/chat/sidebar/collapsed.ts +0 -61
- package/src/chat/sidebar/index.ts +0 -109
- package/src/chat/sidebar/session-menu.ts +0 -441
- package/src/chat/sidebar/sidebar-focus-hold.ts +0 -56
- package/src/chat/sidebar/sidebar-live.tsx +0 -666
- package/src/chat/sidebar/use-main-session.ts +0 -32
- package/src/chat/sidebar/useAgentNames.ts +0 -12
- package/src/chat/sidebar/useCompactionProgress.ts +0 -24
- package/src/chat/sidebar/usePinnedProjects.ts +0 -36
- package/src/chat/sidebar/useSaveViewAsSpace.ts +0 -42
- package/src/chat/sidebar/useSessionActivity.ts +0 -24
- package/src/chat/sidebar/useSessionBadges.ts +0 -26
- package/src/chat/sidebar/useSessionDirectoryView.ts +0 -128
- package/src/chat/sidebar/useSessionSearch.ts +0 -94
- package/src/chat/sidebar/useSidebarKeyboardNav.ts +0 -167
- package/src/chat/sidebar/useSidebarLabels.ts +0 -10
- package/src/chat/testing/composer.contract.ts +0 -508
- package/src/chat/testing/contract.ts +0 -634
- package/src/chat/testing/fixture-composer-chrome.ts +0 -159
- package/src/chat/testing/fixture-composer-host.ts +0 -147
- package/src/chat/testing/fixture-sidebar-host.ts +0 -99
- package/src/chat/testing/index.ts +0 -12
- package/src/chat/testing/sidebar.contract.ts +0 -196
- package/src/chat/transcript/BadgeMenu.tsx +0 -241
- package/src/chat/transcript/CardMarkdown.tsx +0 -102
- package/src/chat/transcript/ChipCard.tsx +0 -187
- package/src/chat/transcript/ChipCards.tsx +0 -100
- package/src/chat/transcript/DiffLines.tsx +0 -122
- package/src/chat/transcript/EarlierHistory.tsx +0 -136
- package/src/chat/transcript/EditDiffBlock.tsx +0 -176
- package/src/chat/transcript/FileChip.tsx +0 -361
- package/src/chat/transcript/ImageGenerationBlock.tsx +0 -239
- package/src/chat/transcript/InlineChipText.tsx +0 -57
- package/src/chat/transcript/InteractionToolBody.tsx +0 -211
- package/src/chat/transcript/LazyRow.tsx +0 -311
- package/src/chat/transcript/MermaidDiagram.tsx +0 -484
- package/src/chat/transcript/PromptEcho.tsx +0 -171
- package/src/chat/transcript/PromptOriginLabel.tsx +0 -44
- package/src/chat/transcript/ProseMarkdown.tsx +0 -168
- package/src/chat/transcript/ReferenceText.tsx +0 -198
- package/src/chat/transcript/SelectCursor.tsx +0 -118
- package/src/chat/transcript/SelectTurnHint.tsx +0 -81
- package/src/chat/transcript/SelectTurnProvider.tsx +0 -150
- package/src/chat/transcript/SubagentBlock.tsx +0 -224
- package/src/chat/transcript/TranscriptRow.tsx +0 -362
- package/src/chat/transcript/TranscriptSearch.tsx +0 -171
- package/src/chat/transcript/TurnMenu.tsx +0 -217
- package/src/chat/transcript/actions.tsx +0 -77
- package/src/chat/transcript/badges.tsx +0 -155
- package/src/chat/transcript/chip-details.ts +0 -169
- package/src/chat/transcript/chip-resolve.ts +0 -56
- package/src/chat/transcript/extension-renderers.tsx +0 -148
- package/src/chat/transcript/fold-attachments.tsx +0 -221
- package/src/chat/transcript/fold-status.tsx +0 -112
- package/src/chat/transcript/fold-worker.tsx +0 -160
- package/src/chat/transcript/fold.tsx +0 -522
- package/src/chat/transcript/frame.tsx +0 -326
- package/src/chat/transcript/index.ts +0 -66
- package/src/chat/transcript/markdown-cache.ts +0 -84
- package/src/chat/transcript/markdown-context.ts +0 -52
- package/src/chat/transcript/markdown.tsx +0 -351
- package/src/chat/transcript/messages.tsx +0 -169
- package/src/chat/transcript/notices.tsx +0 -508
- package/src/chat/transcript/prompt-lines.tsx +0 -55
- package/src/chat/transcript/prompt.tsx +0 -258
- package/src/chat/transcript/prose.tsx +0 -171
- package/src/chat/transcript/recent-map.ts +0 -32
- package/src/chat/transcript/references.ts +0 -108
- package/src/chat/transcript/remark-references.ts +0 -157
- package/src/chat/transcript/remark-refs.ts +0 -176
- package/src/chat/transcript/renderer-slots.tsx +0 -35
- package/src/chat/transcript/renderers.tsx +0 -251
- package/src/chat/transcript/row-estimate.ts +0 -158
- package/src/chat/transcript/run-rows.tsx +0 -291
- package/src/chat/transcript/site-icons.ts +0 -27
- package/src/chat/transcript/thumbnails.ts +0 -146
- package/src/chat/transcript/tool-batch.tsx +0 -102
- package/src/chat/transcript/tool-details.tsx +0 -31
- package/src/chat/transcript/tool-media.tsx +0 -132
- package/src/chat/transcript/tool-parts.tsx +0 -358
- package/src/chat/transcript/tool-payload.tsx +0 -76
- package/src/chat/transcript/tool-row.tsx +0 -496
- package/src/chat/transcript/turn-commands.ts +0 -101
- package/src/chat/transcript/use-transcript-rows.ts +0 -195
- package/src/chat/transcript/useComposerSearch.ts +0 -106
- package/src/chat/transcript/useSelectTurnKeys.ts +0 -204
- package/src/chat/transcript/useSettledReveal.ts +0 -57
- package/src/chat/transcript/useStickToBottom.ts +0 -600
- package/src/chat/transcript/useTranscriptFind.ts +0 -70
- package/src/chat/transcript/useTranscriptFindKey.ts +0 -52
- package/src/chat/transcript/useTranscriptScroll.ts +0 -163
- package/src/chat/transcript/useTranscriptSearch.tsx +0 -382
- package/src/chat/transcript/useTranscriptSelectionCopy.ts +0 -63
- package/src/chat/transcript/useWheelHoverPause.ts +0 -79
- package/src/chat/transcript/user-bash.tsx +0 -134
- package/src/chat/transcript-options.ts +0 -51
- package/src/chat/useChatLabels.ts +0 -14
- package/src/code/CodeHighlightProvider.tsx +0 -87
- package/src/code/HighlightedCode.tsx +0 -156
- package/src/code/code-themes.ts +0 -187
- package/src/code/editor/CodeCompletion.tsx +0 -719
- package/src/code/editor/CodeEditor.tsx +0 -480
- package/src/code/editor/CodeHover.tsx +0 -429
- package/src/code/editor/DiagnosticAnnotation.tsx +0 -73
- package/src/code/editor/DiagnosticsChip.tsx +0 -85
- package/src/code/editor/DiffView.tsx +0 -197
- package/src/code/editor/EditorColumn.tsx +0 -256
- package/src/code/editor/FileIcon.tsx +0 -89
- package/src/code/editor/FileTabPill.tsx +0 -101
- package/src/code/editor/FileTree.tsx +0 -414
- package/src/code/editor/FileView.tsx +0 -462
- package/src/code/editor/HighlightWorkers.tsx +0 -84
- package/src/code/editor/LanguageEditor.tsx +0 -210
- package/src/code/editor/_vendor/tree-icon-colors.ts +0 -72
- package/src/code/editor/diagnostics.ts +0 -140
- package/src/code/editor/edit-session.ts +0 -32
- package/src/code/editor/environment.tsx +0 -88
- package/src/code/editor/find/FindBar.tsx +0 -126
- package/src/code/editor/find/find-highlight.ts +0 -138
- package/src/code/editor/find/find-model.ts +0 -123
- package/src/code/editor/find/settle-scroll.ts +0 -77
- package/src/code/editor/find/useFind.ts +0 -203
- package/src/code/editor/fs-adapter.ts +0 -37
- package/src/code/editor/index.ts +0 -36
- package/src/code/editor/language.ts +0 -31
- package/src/code/editor/patch-parse.ts +0 -176
- package/src/code/editor/patch-parse.worker.ts +0 -12
- package/src/code/editor/pierre-theme.ts +0 -155
- package/src/code/editor/prime-diff.ts +0 -37
- package/src/code/editor/reveal.ts +0 -58
- package/src/code/editor/scroll-reach.ts +0 -28
- package/src/code/editor/useCodeDocument.ts +0 -226
- package/src/code/editor/useDefinition.ts +0 -159
- package/src/code/editor/useDetachCleanup.ts +0 -36
- package/src/code/editor/useFileDocument.ts +0 -87
- package/src/code/editor/useRevealLine.ts +0 -92
- package/src/code/editor/word-at.ts +0 -145
- package/src/code/highlight.worker.ts +0 -16
- package/src/code/highlighter.ts +0 -181
- package/src/code/highlights.ts +0 -51
- package/src/code/mermaid-lexer.ts +0 -331
- package/src/code/shiki-theme.ts +0 -46
- package/src/components/BrandMark.tsx +0 -118
- package/src/components/Breadcrumb.tsx +0 -105
- package/src/components/BrowserChrome.tsx +0 -189
- package/src/components/BrowserSignIn.tsx +0 -210
- package/src/components/ChoiceCards.tsx +0 -170
- package/src/components/CodeFrame.tsx +0 -225
- package/src/components/ConfirmDialog.tsx +0 -119
- package/src/components/CopyButton.tsx +0 -85
- package/src/components/EditableTitle.tsx +0 -199
- package/src/components/ErrorBoundary.tsx +0 -208
- package/src/components/Form.tsx +0 -593
- package/src/components/Highlighted.tsx +0 -68
- package/src/components/HowItWorks.tsx +0 -123
- package/src/components/IconButton.tsx +0 -101
- package/src/components/IconToggle.tsx +0 -71
- package/src/components/Keycap.tsx +0 -334
- package/src/components/Lightbox.tsx +0 -257
- package/src/components/LoadError.tsx +0 -45
- package/src/components/MediaNav.tsx +0 -85
- package/src/components/Menu.tsx +0 -435
- package/src/components/Overlay.tsx +0 -327
- package/src/components/PanelEmpty.tsx +0 -80
- package/src/components/PanelRows.tsx +0 -107
- package/src/components/PreviewWindow.tsx +0 -53
- package/src/components/ReorderTabs.tsx +0 -103
- package/src/components/RowActionsMenu.tsx +0 -383
- package/src/components/SegmentSpinner.tsx +0 -88
- package/src/components/Segmented.tsx +0 -126
- package/src/components/StepFrame.tsx +0 -151
- package/src/components/Stepper.tsx +0 -157
- package/src/components/Surface.tsx +0 -191
- package/src/components/SwatchPicker.tsx +0 -147
- package/src/components/SwitchGlyph.tsx +0 -56
- package/src/components/TabPill.tsx +0 -188
- package/src/components/ThemeThumb.tsx +0 -52
- package/src/components/ToggleCard.tsx +0 -120
- package/src/components/Tooltip.tsx +0 -288
- package/src/components/ZoomableImage.tsx +0 -322
- package/src/components/button.ts +0 -120
- package/src/components/floating/FloatingSurface.tsx +0 -158
- package/src/components/floating/HoverCard.tsx +0 -143
- package/src/components/floating/Popover.tsx +0 -166
- package/src/components/floating/useAnchoredPosition.ts +0 -186
- package/src/components/floating/usePopover.ts +0 -158
- package/src/components/image-clipboard.ts +0 -70
- package/src/components/keyboard-layout.ts +0 -115
- package/src/components/palette/PaletteList.tsx +0 -432
- package/src/components/palette/PalettePanel.tsx +0 -338
- package/src/components/palette/palette-layout.ts +0 -86
- package/src/components/report-error.ts +0 -142
- package/src/components/zoom.ts +0 -133
- package/src/extensions/ExtensionComponent.tsx +0 -167
- package/src/extensions/ExtensionDialogHost.tsx +0 -445
- package/src/extensions/ExtensionRenderer.tsx +0 -100
- package/src/extensions/ExtensionScreen.tsx +0 -122
- package/src/extensions/ExtensionSettingsPage.tsx +0 -112
- package/src/extensions/ExtensionSettingsPages.tsx +0 -44
- package/src/extensions/ExtensionSettingsSidebar.tsx +0 -373
- package/src/extensions/ExtensionSlot.tsx +0 -213
- package/src/extensions/ExtensionWebview.tsx +0 -104
- package/src/extensions/ExtensionsProvider.tsx +0 -124
- package/src/extensions/SettingsWireForm.tsx +0 -182
- package/src/extensions/headless/dialog-queue.ts +0 -92
- package/src/extensions/headless/effect-channel.ts +0 -50
- package/src/extensions/headless/effect-router.ts +0 -107
- package/src/extensions/headless/fixture-host.ts +0 -381
- package/src/extensions/headless/host.ts +0 -398
- package/src/extensions/headless/index.ts +0 -17
- package/src/extensions/headless/labels.ts +0 -64
- package/src/extensions/headless/links.ts +0 -56
- package/src/extensions/headless/select.ts +0 -249
- package/src/extensions/headless/webview-bridge.ts +0 -127
- package/src/extensions/headless/wire.ts +0 -175
- package/src/extensions/hooks.ts +0 -209
- package/src/extensions/index.ts +0 -25
- package/src/extensions/kit.ts +0 -79
- package/src/extensions/links.tsx +0 -165
- package/src/extensions/testing/contract.ts +0 -382
- package/src/extensions/testing/index.ts +0 -6
- package/src/extensions/useExtensionsLabels.ts +0 -14
- package/src/files/CodeViewer.tsx +0 -289
- package/src/files/DiffFileViewer.tsx +0 -143
- package/src/files/DiffsTab.tsx +0 -581
- package/src/files/EditorColumn.tsx +0 -453
- package/src/files/EditorEnvironmentRoot.tsx +0 -63
- package/src/files/FilesDiagnosticsChip.tsx +0 -32
- package/src/files/FilesProvider.tsx +0 -58
- package/src/files/FilesTab.tsx +0 -441
- package/src/files/MediaDiff.tsx +0 -61
- package/src/files/MediaView.tsx +0 -170
- package/src/files/ReviewDraft.tsx +0 -88
- package/src/files/ReviewableDiff.tsx +0 -72
- package/src/files/SearchPanel.tsx +0 -325
- package/src/files/TreeColumn.tsx +0 -229
- package/src/files/code-excerpt.ts +0 -265
- package/src/files/code-menu.ts +0 -53
- package/src/files/drafts-store.ts +0 -192
- package/src/files/file-actions.ts +0 -152
- package/src/files/headless/editor-prefs.ts +0 -230
- package/src/files/headless/entries.ts +0 -172
- package/src/files/headless/fixture-host.ts +0 -260
- package/src/files/headless/host.ts +0 -387
- package/src/files/headless/index.ts +0 -14
- package/src/files/headless/labels.ts +0 -123
- package/src/files/headless/lsp-edits.ts +0 -58
- package/src/files/headless/media.ts +0 -57
- package/src/files/headless/name-match.ts +0 -38
- package/src/files/headless/search.ts +0 -23
- package/src/files/headless/view.ts +0 -114
- package/src/files/headless/workspace-diff.ts +0 -82
- package/src/files/index.ts +0 -25
- package/src/files/lazy-tabs.tsx +0 -41
- package/src/files/session-patch.ts +0 -45
- package/src/files/tab-hooks.ts +0 -37
- package/src/files/testing/contract.ts +0 -279
- package/src/files/testing/demo.ts +0 -36
- package/src/files/testing/index.ts +0 -7
- package/src/files/useCodeReview.tsx +0 -177
- package/src/files/useDiagnostics.ts +0 -59
- package/src/files/useDiagnosticsRun.ts +0 -86
- package/src/files/useEntryActions.ts +0 -280
- package/src/files/useFilesDiagnostics.ts +0 -51
- package/src/files/useFilesLabels.ts +0 -14
- package/src/files/useFolderChanges.ts +0 -38
- package/src/files/useLsp.ts +0 -181
- package/src/files/useOpenFiles.ts +0 -402
- package/src/files/useWorkspace.ts +0 -148
- package/src/files/working-tree-diff.ts +0 -142
- package/src/git/BranchMenu.tsx +0 -988
- package/src/git/GitBar.tsx +0 -297
- package/src/git/GitProvider.tsx +0 -50
- package/src/git/ImportRepoDialog.tsx +0 -390
- package/src/git/MoveSessionDialog.tsx +0 -396
- package/src/git/RemoteFolderPicker.tsx +0 -475
- package/src/git/SyncChip.tsx +0 -275
- package/src/git/WherePicker.tsx +0 -358
- package/src/git/headless/environment.ts +0 -132
- package/src/git/headless/host.ts +0 -353
- package/src/git/headless/index.ts +0 -14
- package/src/git/headless/labels.ts +0 -230
- package/src/git/headless/move.ts +0 -101
- package/src/git/headless/remote-clone.ts +0 -44
- package/src/git/headless/status-reads.ts +0 -77
- package/src/git/headless/switcher.ts +0 -215
- package/src/git/headless/sync.ts +0 -71
- package/src/git/index.ts +0 -17
- package/src/git/testing/contract.ts +0 -551
- package/src/git/testing/index.ts +0 -537
- package/src/git/useEnvironmentChoices.ts +0 -50
- package/src/git/useGitBar.ts +0 -180
- package/src/hooks/keyed-store.ts +0 -65
- package/src/hooks/useDisplayPath.tsx +0 -93
- package/src/hooks/useHydrated.ts +0 -16
- package/src/hooks/useMinuteTick.ts +0 -49
- package/src/hooks/useNearViewport.ts +0 -111
- package/src/hooks/usePersistedState.ts +0 -98
- package/src/hooks/useResizeDrag.ts +0 -240
- package/src/hooks/useTabDrag.ts +0 -88
- package/src/index.ts +0 -119
- package/src/keybindings/KeyCommands.tsx +0 -123
- package/src/keybindings/KeyHint.tsx +0 -78
- package/src/keybindings/KeybindingsProvider.tsx +0 -231
- package/src/keybindings/headless/catalog.ts +0 -360
- package/src/keybindings/headless/commands.ts +0 -77
- package/src/keybindings/headless/fixture-host.ts +0 -51
- package/src/keybindings/headless/host.ts +0 -29
- package/src/keybindings/headless/index.ts +0 -13
- package/src/keybindings/headless/key-scope.ts +0 -91
- package/src/keybindings/headless/labels.ts +0 -14
- package/src/keybindings/headless/overrides.ts +0 -64
- package/src/keybindings/index.ts +0 -15
- package/src/keybindings/load-once.ts +0 -11
- package/src/keybindings/match.ts +0 -48
- package/src/keybindings/press.ts +0 -80
- package/src/keybindings/testing/contract.ts +0 -139
- package/src/keybindings/testing/index.ts +0 -6
- package/src/keybindings/useHelpKey.ts +0 -35
- package/src/keybindings/useKeybindingsLabels.ts +0 -14
- package/src/labels.tsx +0 -175
- package/src/machines/AddServerForm.tsx +0 -151
- package/src/machines/Banners.tsx +0 -172
- package/src/machines/DaemonMenu.tsx +0 -413
- package/src/machines/HostCapabilities.tsx +0 -245
- package/src/machines/HostSignIn.tsx +0 -63
- package/src/machines/HostSyncPanel.tsx +0 -275
- package/src/machines/HostsSection.tsx +0 -312
- package/src/machines/MachinesProvider.tsx +0 -164
- package/src/machines/ServerCard.tsx +0 -347
- package/src/machines/ServerMachinesPanel.tsx +0 -547
- package/src/machines/ServerUpdatePanel.tsx +0 -160
- package/src/machines/SyncAccounts.tsx +0 -148
- package/src/machines/SyncMarker.tsx +0 -87
- package/src/machines/SyncOutcomeBadge.tsx +0 -84
- package/src/machines/TokensPanel.tsx +0 -249
- package/src/machines/headless/fixture-host.ts +0 -519
- package/src/machines/headless/fixtures.ts +0 -164
- package/src/machines/headless/host.ts +0 -381
- package/src/machines/headless/index.ts +0 -13
- package/src/machines/headless/labels.ts +0 -364
- package/src/machines/headless/messages.ts +0 -209
- package/src/machines/headless/presence.ts +0 -110
- package/src/machines/headless/settings-focus.ts +0 -25
- package/src/machines/headless/stores.ts +0 -137
- package/src/machines/headless/sync.ts +0 -207
- package/src/machines/index.ts +0 -29
- package/src/machines/settings-section.tsx +0 -37
- package/src/machines/testing/contract.ts +0 -617
- package/src/machines/testing/index.ts +0 -7
- package/src/machines/testing/sync.contract.ts +0 -260
- package/src/motion/SwapIcon.tsx +0 -29
- package/src/motion/collapse.ts +0 -21
- package/src/motion/grow.tsx +0 -86
- package/src/motion/layout-animating.ts +0 -50
- package/src/motion/presence.ts +0 -191
- package/src/motion/provider.tsx +0 -63
- package/src/motion/reduced.ts +0 -36
- package/src/motion/roll.tsx +0 -131
- package/src/motion/shimmer.ts +0 -15
- package/src/motion/size.tsx +0 -192
- package/src/motion/springs.ts +0 -413
- package/src/motion/swap.tsx +0 -216
- package/src/motion/title-text.tsx +0 -74
- package/src/onboarding/ConnectProviderCard.tsx +0 -49
- package/src/onboarding/OnboardingFlow.tsx +0 -176
- package/src/onboarding/OnboardingProvider.tsx +0 -209
- package/src/onboarding/OnboardingStepFrame.tsx +0 -80
- package/src/onboarding/conversation.tsx +0 -196
- package/src/onboarding/demos/autonomy.tsx +0 -154
- package/src/onboarding/demos/extensions.tsx +0 -183
- package/src/onboarding/demos/features.tsx +0 -488
- package/src/onboarding/demos/how-it-works.tsx +0 -698
- package/src/onboarding/demos/index.ts +0 -11
- package/src/onboarding/demos/parts.tsx +0 -133
- package/src/onboarding/demos/tour.tsx +0 -217
- package/src/onboarding/headless/controller.ts +0 -110
- package/src/onboarding/headless/fixture-host.ts +0 -269
- package/src/onboarding/headless/fixtures.ts +0 -486
- package/src/onboarding/headless/host.ts +0 -176
- package/src/onboarding/headless/index.ts +0 -8
- package/src/onboarding/headless/labels.ts +0 -282
- package/src/onboarding/index.ts +0 -21
- package/src/onboarding/marks.tsx +0 -107
- package/src/onboarding/preview-attachments.ts +0 -39
- package/src/onboarding/skills/SkillSourceBrowser.tsx +0 -128
- package/src/onboarding/skills/parts.tsx +0 -464
- package/src/onboarding/sources/SourceBrowser.tsx +0 -400
- package/src/onboarding/steps/AutonomyStep.tsx +0 -128
- package/src/onboarding/steps/ConnectStep.tsx +0 -104
- package/src/onboarding/steps/ConnectorsStep.tsx +0 -222
- package/src/onboarding/steps/ConversationStep.tsx +0 -132
- package/src/onboarding/steps/ExtensionsStep.tsx +0 -113
- package/src/onboarding/steps/FeatureExample.tsx +0 -46
- package/src/onboarding/steps/FeaturesStep.tsx +0 -88
- package/src/onboarding/steps/ImportStep.tsx +0 -156
- package/src/onboarding/steps/LookStep.tsx +0 -276
- package/src/onboarding/steps/ReadyStep.tsx +0 -278
- package/src/onboarding/steps/SkillsStep.tsx +0 -45
- package/src/onboarding/steps/StepSection.tsx +0 -63
- package/src/onboarding/steps/Tradeoff.tsx +0 -45
- package/src/onboarding/steps/WelcomeStep.tsx +0 -147
- package/src/onboarding/steps/connect/KeyForm.tsx +0 -112
- package/src/onboarding/steps/connect/ProviderPanel.tsx +0 -149
- package/src/onboarding/steps/connect/ProviderReady.tsx +0 -171
- package/src/onboarding/steps/connect/ready-text.ts +0 -17
- package/src/onboarding/steps/index.ts +0 -12
- package/src/onboarding/steps/tasks.tsx +0 -84
- package/src/onboarding/testing/contract.ts +0 -472
- package/src/onboarding/testing/index.ts +0 -7
- package/src/onboarding/tutorials.tsx +0 -45
- package/src/onboarding/useSignIn.ts +0 -58
- package/src/palette/CommandPalette.tsx +0 -59
- package/src/palette/PaletteDialog.tsx +0 -186
- package/src/palette/PaletteProvider.tsx +0 -149
- package/src/palette/PaletteRows.tsx +0 -208
- package/src/palette/app-sources.ts +0 -62
- package/src/palette/headless/app-sources.ts +0 -515
- package/src/palette/headless/gather.ts +0 -50
- package/src/palette/headless/host.ts +0 -129
- package/src/palette/headless/index.ts +0 -15
- package/src/palette/headless/labels.ts +0 -124
- package/src/palette/headless/rank-protocol.ts +0 -23
- package/src/palette/headless/recents.ts +0 -35
- package/src/palette/headless/session-sources.ts +0 -218
- package/src/palette/headless/sources.ts +0 -313
- package/src/palette/headless/store.ts +0 -105
- package/src/palette/index.ts +0 -17
- package/src/palette/rank.worker.ts +0 -30
- package/src/palette/setup.ts +0 -19
- package/src/palette/testing/contract.ts +0 -250
- package/src/palette/testing/index.ts +0 -152
- package/src/palette/useConversationSearch.ts +0 -115
- package/src/palette/usePaletteController.ts +0 -229
- package/src/palette/useRankedItems.ts +0 -122
- package/src/path.ts +0 -199
- package/src/server/demo-tools.ts +0 -34
- package/src/server/environment.ts +0 -118
- package/src/server/index.ts +0 -7
- package/src/server/scripted-provider.ts +0 -174
- package/src/server/sse-handler.ts +0 -457
- package/src/server/testing/index.ts +0 -7
- package/src/session/ArtifactRowChips.tsx +0 -260
- package/src/session/ArtifactsPanel.tsx +0 -426
- package/src/session/DiffFileTree.tsx +0 -173
- package/src/session/PanelAttention.tsx +0 -131
- package/src/session/ProjectHome.tsx +0 -733
- package/src/session/ProviderUsageProvider.tsx +0 -113
- package/src/session/QueueTab.tsx +0 -669
- package/src/session/RunningWorkDialog.tsx +0 -178
- package/src/session/SessionCacheFacts.tsx +0 -190
- package/src/session/SessionDetailsDialog.tsx +0 -627
- package/src/session/SessionHeader.tsx +0 -242
- package/src/session/SessionProvider.tsx +0 -98
- package/src/session/SessionShell.tsx +0 -77
- package/src/session/SideChat.tsx +0 -320
- package/src/session/TodoList.tsx +0 -123
- package/src/session/TodosPanel.tsx +0 -279
- package/src/session/TurnDetailsDialog.tsx +0 -299
- package/src/session/UsagePanel.tsx +0 -358
- package/src/session/WelcomeScreen.tsx +0 -88
- package/src/session/headless/artifacts.ts +0 -101
- package/src/session/headless/diff-tree.ts +0 -167
- package/src/session/headless/fixture-host.ts +0 -362
- package/src/session/headless/home-layout.ts +0 -276
- package/src/session/headless/host.ts +0 -263
- package/src/session/headless/index.ts +0 -23
- package/src/session/headless/keyed.ts +0 -72
- package/src/session/headless/labels.ts +0 -337
- package/src/session/headless/queue-attachments.ts +0 -73
- package/src/session/headless/queue.ts +0 -122
- package/src/session/headless/running-work.ts +0 -85
- package/src/session/headless/session-actions.ts +0 -198
- package/src/session/headless/session-diffs.ts +0 -136
- package/src/session/headless/side.ts +0 -63
- package/src/session/headless/todos.ts +0 -62
- package/src/session/headless/usage-format.ts +0 -19
- package/src/session/headless/usage.ts +0 -407
- package/src/session/index.ts +0 -31
- package/src/session/modal-shell.tsx +0 -24
- package/src/session/testing/contract.ts +0 -588
- package/src/session/testing/demo.ts +0 -224
- package/src/session/testing/index.ts +0 -7
- package/src/session/useSessionLabels.ts +0 -14
- package/src/session/useUsageSummary.ts +0 -82
- package/src/settings/SettingsHeadingText.tsx +0 -54
- package/src/settings/SettingsHostSwitcher.tsx +0 -93
- package/src/settings/SettingsNav.tsx +0 -198
- package/src/settings/SettingsProvider.tsx +0 -127
- package/src/settings/SettingsRowsPage.tsx +0 -218
- package/src/settings/SettingsShell.tsx +0 -337
- package/src/settings/SettingsTutorial.tsx +0 -55
- package/src/settings/headless/catalog.ts +0 -570
- package/src/settings/headless/claude-import.ts +0 -61
- package/src/settings/headless/enabled.ts +0 -44
- package/src/settings/headless/fixture-accounts.ts +0 -260
- package/src/settings/headless/fixture-host.ts +0 -162
- package/src/settings/headless/fixture-models.ts +0 -51
- package/src/settings/headless/fixture-performance.ts +0 -350
- package/src/settings/headless/fixture-sections.ts +0 -391
- package/src/settings/headless/host.ts +0 -127
- package/src/settings/headless/index.ts +0 -22
- package/src/settings/headless/labels.ts +0 -63
- package/src/settings/headless/layout-sections.ts +0 -41
- package/src/settings/headless/layout.ts +0 -732
- package/src/settings/headless/mcp.ts +0 -319
- package/src/settings/headless/models.ts +0 -51
- package/src/settings/headless/page-counts.ts +0 -40
- package/src/settings/headless/performance.ts +0 -524
- package/src/settings/headless/providers.ts +0 -117
- package/src/settings/headless/registry.ts +0 -62
- package/src/settings/headless/resource.ts +0 -75
- package/src/settings/headless/search.ts +0 -142
- package/src/settings/headless/sections-host.ts +0 -340
- package/src/settings/index.ts +0 -32
- package/src/settings/rows.tsx +0 -152
- package/src/settings/section.tsx +0 -165
- package/src/settings/sections/appearance/AppearanceSection.tsx +0 -667
- package/src/settings/sections/appearance/labels.ts +0 -77
- package/src/settings/sections/claude-import/ClaudeImportDialog.tsx +0 -258
- package/src/settings/sections/claude-import/labels.ts +0 -42
- package/src/settings/sections/claude-import/use-claude-import-available.ts +0 -35
- package/src/settings/sections/descriptors.tsx +0 -261
- package/src/settings/sections/editor/EditorSection.tsx +0 -521
- package/src/settings/sections/editor/labels.ts +0 -84
- package/src/settings/sections/enabled-list/EnabledListSection.tsx +0 -112
- package/src/settings/sections/enabled-list/labels.ts +0 -37
- package/src/settings/sections/environments/EnvironmentsSection.tsx +0 -549
- package/src/settings/sections/environments/labels.ts +0 -31
- package/src/settings/sections/extensions/ChangeOriginDialog.tsx +0 -218
- package/src/settings/sections/extensions/CreateExtensionDialog.tsx +0 -210
- package/src/settings/sections/extensions/ExtensionConfigRows.tsx +0 -508
- package/src/settings/sections/extensions/ExtensionOptionsSection.tsx +0 -356
- package/src/settings/sections/extensions/ExtensionPicksBar.tsx +0 -112
- package/src/settings/sections/extensions/ExtensionSourceBrowser.tsx +0 -244
- package/src/settings/sections/extensions/ExtensionsSection.tsx +0 -665
- package/src/settings/sections/extensions/create-labels.ts +0 -31
- package/src/settings/sections/extensions/labels.ts +0 -64
- package/src/settings/sections/extensions/options-labels.ts +0 -34
- package/src/settings/sections/host-catalog/HostCatalogSection.tsx +0 -457
- package/src/settings/sections/host-catalog/labels.ts +0 -44
- package/src/settings/sections/index.ts +0 -60
- package/src/settings/sections/instructions/InstructionsSection.tsx +0 -385
- package/src/settings/sections/instructions/labels.ts +0 -33
- package/src/settings/sections/keybindings/KeybindingsSection.tsx +0 -124
- package/src/settings/sections/keybindings/labels.ts +0 -72
- package/src/settings/sections/keybindings/rows.ts +0 -103
- package/src/settings/sections/logs/LogsSection.tsx +0 -153
- package/src/settings/sections/logs/labels.ts +0 -20
- package/src/settings/sections/mcp/McpAddForm.tsx +0 -245
- package/src/settings/sections/mcp/McpSection.tsx +0 -358
- package/src/settings/sections/mcp/McpServerRow.tsx +0 -404
- package/src/settings/sections/mcp/labels.ts +0 -193
- package/src/settings/sections/models/AgentDefaults.tsx +0 -365
- package/src/settings/sections/models/ModelListPicker.tsx +0 -265
- package/src/settings/sections/models/ModelPickField.tsx +0 -220
- package/src/settings/sections/models/ModelRows.tsx +0 -381
- package/src/settings/sections/models/SpacesDefaultsSection.tsx +0 -102
- package/src/settings/sections/models/labels.ts +0 -119
- package/src/settings/sections/models/model-test.tsx +0 -125
- package/src/settings/sections/performance/PerfSparkline.tsx +0 -64
- package/src/settings/sections/performance/PerformanceHud.tsx +0 -110
- package/src/settings/sections/performance/PerformanceSection.tsx +0 -770
- package/src/settings/sections/performance/labels.ts +0 -114
- package/src/settings/sections/performance/use-perf-monitor.ts +0 -26
- package/src/settings/sections/plugins/PluginsSection.tsx +0 -151
- package/src/settings/sections/plugins/labels.ts +0 -23
- package/src/settings/sections/providers/CredentialSources.tsx +0 -237
- package/src/settings/sections/providers/ProvidersSection.tsx +0 -389
- package/src/settings/sections/providers/ServerProvidersSection.tsx +0 -244
- package/src/settings/sections/providers/ServerSignIn.tsx +0 -137
- package/src/settings/sections/providers/labels.ts +0 -160
- package/src/settings/sections/shared/catalog.tsx +0 -265
- package/src/settings/sections/shared/labels.ts +0 -31
- package/src/settings/sections/skills/SkillList.tsx +0 -494
- package/src/settings/sections/skills/SkillsSection.tsx +0 -249
- package/src/settings/sections/skills/labels.ts +0 -54
- package/src/settings/sections/use-section-labels.ts +0 -10
- package/src/settings/testing/accounts-demo.ts +0 -110
- package/src/settings/testing/accounts.contract.ts +0 -319
- package/src/settings/testing/claude-import.contract.ts +0 -93
- package/src/settings/testing/contract.ts +0 -192
- package/src/settings/testing/extension-options.contract.ts +0 -163
- package/src/settings/testing/index.ts +0 -11
- package/src/settings/testing/models.contract.ts +0 -135
- package/src/settings/testing/performance.contract.ts +0 -219
- package/src/settings/testing/sections.contract.ts +0 -306
- package/src/terminal/HostTerminalSurface.tsx +0 -917
- package/src/terminal/TerminalDrawer.tsx +0 -228
- package/src/terminal/TerminalPanel.tsx +0 -740
- package/src/terminal/TerminalProvider.tsx +0 -201
- package/src/terminal/TerminalSurface.tsx +0 -262
- package/src/terminal/box-glyphs.ts +0 -333
- package/src/terminal/ghostty.ts +0 -116
- package/src/terminal/grid-size.ts +0 -46
- package/src/terminal/headless/fixture-host.ts +0 -250
- package/src/terminal/headless/host.ts +0 -99
- package/src/terminal/headless/index.ts +0 -11
- package/src/terminal/headless/labels.ts +0 -69
- package/src/terminal/headless/layout.ts +0 -57
- package/src/terminal/headless/links.ts +0 -227
- package/src/terminal/headless/order.ts +0 -28
- package/src/terminal/headless/output-cursor.ts +0 -66
- package/src/terminal/headless/recent.ts +0 -20
- package/src/terminal/headless/replay.ts +0 -45
- package/src/terminal/headless/scope.ts +0 -60
- package/src/terminal/headless/store.ts +0 -637
- package/src/terminal/index.ts +0 -40
- package/src/terminal/keys.ts +0 -34
- package/src/terminal/testing/contract.ts +0 -274
- package/src/terminal/testing/demo.ts +0 -40
- package/src/terminal/testing/index.ts +0 -7
- package/src/terminal/theme.ts +0 -110
- package/src/terminal/useTerminalLabels.ts +0 -14
- package/src/theme/accents.ts +0 -46
- package/src/theme/color.ts +0 -450
- package/src/theme/css-vars.ts +0 -187
- package/src/theme/derive.ts +0 -700
- package/src/theme/from-theme.ts +0 -52
- package/src/theme/stylesheet.ts +0 -55
- package/src/theme/themes.ts +0 -767
- package/src/theme/without-transitions.ts +0 -18
- package/src/uno.ts +0 -167
- package/src/workspace/LayoutBudget.tsx +0 -143
- package/src/workspace/PanelContentView.tsx +0 -523
- package/src/workspace/PanelCorner.tsx +0 -111
- package/src/workspace/PanelGroups.tsx +0 -264
- package/src/workspace/PanelHome.tsx +0 -71
- package/src/workspace/PanelItems.tsx +0 -368
- package/src/workspace/PanelStrip.tsx +0 -316
- package/src/workspace/SidePanel.tsx +0 -240
- package/src/workspace/TabParking.tsx +0 -120
- package/src/workspace/WorkspaceProvider.tsx +0 -558
- package/src/workspace/dnd/engine.ts +0 -371
- package/src/workspace/dnd/hooks.ts +0 -72
- package/src/workspace/dnd/index.ts +0 -57
- package/src/workspace/dnd/parking.tsx +0 -181
- package/src/workspace/extension-tabs.tsx +0 -174
- package/src/workspace/frame-motion.ts +0 -160
- package/src/workspace/headless/contents.ts +0 -125
- package/src/workspace/headless/host.ts +0 -129
- package/src/workspace/headless/index.ts +0 -33
- package/src/workspace/headless/labels.ts +0 -44
- package/src/workspace/headless/layout-memory.ts +0 -649
- package/src/workspace/headless/layouts.ts +0 -224
- package/src/workspace/headless/open-target.ts +0 -125
- package/src/workspace/headless/ops.ts +0 -163
- package/src/workspace/headless/panel-focus.ts +0 -58
- package/src/workspace/headless/panel-tree.ts +0 -259
- package/src/workspace/headless/resolve.ts +0 -146
- package/src/workspace/headless/reveal-at.ts +0 -27
- package/src/workspace/headless/strip-drop.ts +0 -81
- package/src/workspace/headless/tree.ts +0 -480
- package/src/workspace/headless/view.ts +0 -164
- package/src/workspace/index.ts +0 -23
- package/src/workspace/panel-group-keys.ts +0 -36
- package/src/workspace/panel-visibility.ts +0 -28
- package/src/workspace/tab-scopes.ts +0 -245
- package/src/workspace/testing/contract.ts +0 -282
- package/src/workspace/testing/index.ts +0 -140
- package/src/workspace/use-split-drag.ts +0 -73
- package/src/workspace/useScopeLayout.ts +0 -26
- package/src/workspace/useViewport.ts +0 -22
- package/src/workspace/useWorkspaceLabels.ts +0 -14
- package/src/workspace/workspace-key-commands.ts +0 -108
- /package/dist/dist/{types-bDQagoiL.d.ts → types-2HrgolQz.d.ts} +0 -0
package/src/components/button.ts
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The app's buttons: one quiet, consistent set for every surface (dock
|
|
3
|
-
* cards, inbox, modals, Settings, panels). Compose with `buttonClass`, or
|
|
4
|
-
* use the named constants.
|
|
5
|
-
*
|
|
6
|
-
* secondary a raised chip (`.zg-raised`), muted text; hover brightens
|
|
7
|
-
* the text.
|
|
8
|
-
* primary soft accent wash (not a filled slab) with accent text;
|
|
9
|
-
* hover deepens the wash.
|
|
10
|
-
* solid the accent fill (`.zg-fill`, lit like a raised chip), for
|
|
11
|
-
* the one committing action of a dialog footer (Create,
|
|
12
|
-
* Approve, Import).
|
|
13
|
-
* ghost text only; hover adds the row wash. Leading a row, pass
|
|
14
|
-
* `flush: 'start'` so its text lines up with the content edge
|
|
15
|
-
* instead of sitting a padding inside it.
|
|
16
|
-
* danger muted red on nothing; hover adds a soft red wash. For the
|
|
17
|
-
* step that only asks (Remove, Delete…, Reject…).
|
|
18
|
-
* danger-solid the same fill as `solid`, in danger (`.zg-fill-danger`),
|
|
19
|
-
* for the destructive commit: a confirm dialog's Delete, an
|
|
20
|
-
* armed "Confirm …", Deny.
|
|
21
|
-
*
|
|
22
|
-
* Every wash sits on the press layer (`::before`), so a variant without a
|
|
23
|
-
* fill of its own says `bg-transparent`: the reset keeps a <button>'s
|
|
24
|
-
* native background, which would show grey under the wash.
|
|
25
|
-
*
|
|
26
|
-
* Sizes: `xs` in toolbars (h-6 / 11px), `sm` in rows (h-7 / 12px), `md`
|
|
27
|
-
* for card actions, headers, form submits and dialog footers (h-8 / 13px),
|
|
28
|
-
* `lg` for page-level calls to action (h-9 / 14px: the website's hero).
|
|
29
|
-
*/
|
|
30
|
-
const BTN_BASE =
|
|
31
|
-
'zg-press inline-flex items-center justify-center gap-1.5 shrink-0 whitespace-nowrap rounded-zg-md cursor-pointer transition-colors disabled:opacity-zg-disabled disabled:cursor-default zg-focus-ring';
|
|
32
|
-
const SIZE_ROW = 'h-7 px-2.5 text-zg-label';
|
|
33
|
-
const SIZE_LG = 'h-8 px-3 text-zg-ui';
|
|
34
|
-
const SIZE_XS = 'h-6 px-2 text-zg-meta';
|
|
35
|
-
const SIZE_CTA = 'h-9 px-4 text-zg-body';
|
|
36
|
-
type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
37
|
-
const SIZES: Record<ButtonSize, string> = { xs: SIZE_XS, sm: SIZE_ROW, md: SIZE_LG, lg: SIZE_CTA };
|
|
38
|
-
/** Pulls a borderless button out by its own padding, so its text sits on the content edge. */
|
|
39
|
-
const FLUSH: Record<ButtonSize, { start: string; end: string }> = {
|
|
40
|
-
xs: { start: '-ml-2', end: '-mr-2' },
|
|
41
|
-
sm: { start: '-ml-2.5', end: '-mr-2.5' },
|
|
42
|
-
md: { start: '-ml-3', end: '-mr-3' },
|
|
43
|
-
lg: { start: '-ml-4', end: '-mr-4' },
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const SECONDARY = 'zg-raised border text-[var(--zg-text-muted)] hover:text-[var(--zg-text)]';
|
|
47
|
-
const PRIMARY =
|
|
48
|
-
'font-medium border-0 bg-transparent before:bg-[var(--zg-accent-soft)] text-[var(--zg-accent-hover)] hover:before:bg-[var(--zg-accent-soft-strong)]';
|
|
49
|
-
const SOLID = 'zg-fill font-medium border-0';
|
|
50
|
-
const DANGER = 'border-0 bg-transparent text-zg-danger hover:before:bg-zg-danger/10';
|
|
51
|
-
const DANGER_SOLID = 'zg-fill zg-fill-danger font-medium border-0';
|
|
52
|
-
const GHOST =
|
|
53
|
-
'border-0 bg-transparent text-[var(--zg-text-muted)] hover:before:bg-[var(--zg-row-hover)] hover:text-[var(--zg-text)]';
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Look of a button: `secondary` (raised chip), `primary` (soft accent wash), `solid` (accent fill
|
|
57
|
-
* for the committing action of a dialog), `ghost` (text only), `danger` (muted red) and
|
|
58
|
-
* `danger-solid` (danger fill for the destructive commit).
|
|
59
|
-
*/
|
|
60
|
-
export type ButtonVariant = 'secondary' | 'primary' | 'solid' | 'ghost' | 'danger' | 'danger-solid';
|
|
61
|
-
const VARIANTS: Record<ButtonVariant, string> = {
|
|
62
|
-
secondary: SECONDARY,
|
|
63
|
-
primary: PRIMARY,
|
|
64
|
-
solid: SOLID,
|
|
65
|
-
ghost: GHOST,
|
|
66
|
-
danger: DANGER,
|
|
67
|
-
'danger-solid': DANGER_SOLID,
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* The button look as a class string, for `<button>`, `<a>` or a router link alike.
|
|
72
|
-
*
|
|
73
|
-
* @param options - The variant, size and flush alignment of the button. Defaults to a `secondary`,
|
|
74
|
-
* `md` button.
|
|
75
|
-
* @returns The class string for the button look.
|
|
76
|
-
*/
|
|
77
|
-
export function buttonClass({
|
|
78
|
-
variant = 'secondary',
|
|
79
|
-
size = 'md',
|
|
80
|
-
flush,
|
|
81
|
-
}: {
|
|
82
|
-
/**
|
|
83
|
-
* Button look.
|
|
84
|
-
* @default 'secondary'
|
|
85
|
-
*/
|
|
86
|
-
variant?: ButtonVariant;
|
|
87
|
-
/**
|
|
88
|
-
* Button size: `xs` is 24px high, `sm` 28px, `md` 32px and `lg` 36px.
|
|
89
|
-
* @default 'md'
|
|
90
|
-
*/
|
|
91
|
-
size?: ButtonSize;
|
|
92
|
-
/** Ghost / danger only (no fill to align): line the text up with the edge it leads or ends. */
|
|
93
|
-
flush?: 'start' | 'end';
|
|
94
|
-
} = {}): string {
|
|
95
|
-
return `${BTN_BASE} ${SIZES[size]} ${VARIANTS[variant]} ${flush ? FLUSH[size][flush] : ''}`;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/** In-row secondary action (Edit / Update / Sign out / Keep / Cancel …). */
|
|
99
|
-
export const BTN_SECONDARY = `${BTN_BASE} ${SIZE_ROW} ${SECONDARY}`;
|
|
100
|
-
|
|
101
|
-
/** In-row primary action (Sign in / Retry / Import …): soft accent, not a slab. */
|
|
102
|
-
export const BTN_PRIMARY = `${BTN_BASE} ${SIZE_ROW} ${PRIMARY}`;
|
|
103
|
-
|
|
104
|
-
/** In-row destructive action (Remove / Delete / Clear): quiet until hovered. */
|
|
105
|
-
export const BTN_DANGER = `${BTN_BASE} ${SIZE_ROW} ${DANGER}`;
|
|
106
|
-
|
|
107
|
-
/** Armed destructive confirm (Confirm remove / Confirm delete): the danger fill. */
|
|
108
|
-
export const BTN_DANGER_CONFIRM = `${BTN_BASE} ${SIZE_ROW} ${DANGER_SOLID}`;
|
|
109
|
-
|
|
110
|
-
/** Secondary header / footer action (Refresh / Cancel …): the accent button stays rightmost. */
|
|
111
|
-
export const BTN_LG_SECONDARY = `${BTN_BASE} ${SIZE_LG} ${SECONDARY}`;
|
|
112
|
-
|
|
113
|
-
/** Primary header action or form submit, soft accent. */
|
|
114
|
-
export const BTN_LG_PRIMARY = `${BTN_BASE} ${SIZE_LG} ${PRIMARY}`;
|
|
115
|
-
|
|
116
|
-
/** The committing action of a dialog footer: accent fill. */
|
|
117
|
-
export const BTN_LG_SOLID = `${BTN_BASE} ${SIZE_LG} ${SOLID}`;
|
|
118
|
-
|
|
119
|
-
/** Destructive dialog footer action (Delete session, Deny): the danger fill. */
|
|
120
|
-
export const BTN_LG_DANGER = `${BTN_BASE} ${SIZE_LG} ${DANGER_SOLID}`;
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The one floating surface: overlay tone, float shadow, one radius, enter /
|
|
3
|
-
* exit motion. Portaled to `document.body` and fixed-positioned against its
|
|
4
|
-
* anchor (`useAnchoredPosition`), so no ancestor's overflow can clip it.
|
|
5
|
-
*
|
|
6
|
-
* Motion (motion.dev, the `menu` tween): grows out of its anchor, scale
|
|
7
|
-
* 0.96 → 1 from the placement's `transform-origin` plus a 4px slide from
|
|
8
|
-
* the anchor's side (any of the four), opacity landing first; leaves on
|
|
9
|
-
* `menu-exit` (fade, scale to 0.98, no slide), unmounting when that
|
|
10
|
-
* finishes (`AnimatePresence`). Reduced: an 80ms fade, no movement. Off: instant.
|
|
11
|
-
* `data-state` (open / closed) stays for styling and tests.
|
|
12
|
-
*
|
|
13
|
-
* Presses inside are stopped from bubbling through the React tree: the
|
|
14
|
-
* composer routes stray clicks to its editor, and a menu row press must not
|
|
15
|
-
* reach it.
|
|
16
|
-
*/
|
|
17
|
-
import { AnimatePresence, domAnimation, LazyMotion, m } from 'motion/react';
|
|
18
|
-
import { forwardRef, useCallback, useRef, type CSSProperties, type ReactNode, useSyncExternalStore } from 'react';
|
|
19
|
-
import { createPortal } from 'react-dom';
|
|
20
|
-
|
|
21
|
-
import { menuTransition, useMotionPrefs } from '../../motion/springs';
|
|
22
|
-
import { anchorNudge, useAnchoredPosition, type Align, type Anchor, type Side } from './useAnchoredPosition';
|
|
23
|
-
|
|
24
|
-
/** Props of {@link FloatingSurface}. */
|
|
25
|
-
export interface FloatingSurfaceProps {
|
|
26
|
-
/** Whether the surface is shown. It stays mounted until its exit finishes. */
|
|
27
|
-
open: boolean;
|
|
28
|
-
/** The element or point the surface is placed against. */
|
|
29
|
-
anchor: Anchor;
|
|
30
|
-
/**
|
|
31
|
-
* Preferred side of the anchor. It flips when it does not fit.
|
|
32
|
-
* @default 'bottom'
|
|
33
|
-
*/
|
|
34
|
-
side?: Side;
|
|
35
|
-
/**
|
|
36
|
-
* How the surface lines up along the anchor's edge.
|
|
37
|
-
* @default 'start'
|
|
38
|
-
*/
|
|
39
|
-
align?: Align;
|
|
40
|
-
/**
|
|
41
|
-
* Gap between anchor and surface, in px.
|
|
42
|
-
* @default 6
|
|
43
|
-
*/
|
|
44
|
-
offset?: number;
|
|
45
|
-
/** Fixed width in px; otherwise sized by content. */
|
|
46
|
-
width?: number;
|
|
47
|
-
/** Extra classes on the surface. */
|
|
48
|
-
className?: string;
|
|
49
|
-
/** Inline styles, merged over the computed position. */
|
|
50
|
-
style?: CSSProperties;
|
|
51
|
-
/** For a trigger's `aria-controls`. */
|
|
52
|
-
id?: string;
|
|
53
|
-
/** ARIA role of the surface, such as `menu` or `dialog`. */
|
|
54
|
-
role?: string;
|
|
55
|
-
/** Accessible name of the surface. */
|
|
56
|
-
'aria-label'?: string;
|
|
57
|
-
/** Test id for the surface element. */
|
|
58
|
-
'data-testid'?: string;
|
|
59
|
-
/** A hover card stays open while the pointer is on it. */
|
|
60
|
-
onPointerEnter?: () => void;
|
|
61
|
-
/** Called when the pointer leaves the surface. A hover card closes on it. */
|
|
62
|
-
onPointerLeave?: () => void;
|
|
63
|
-
/** A hover card closes when focus leaves it. */
|
|
64
|
-
onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
|
|
65
|
-
/** Menu navigation when the surface itself is the menu. */
|
|
66
|
-
onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
67
|
-
/** The surface's content. */
|
|
68
|
-
children: ReactNode;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const noop = () => () => {};
|
|
72
|
-
const isClient = () => true;
|
|
73
|
-
const isServer = () => false;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Renders the one floating surface: overlay tone, float shadow and one radius, portaled to
|
|
77
|
-
* `document.body` and fixed-positioned against its anchor so no ancestor's overflow clips it.
|
|
78
|
-
* It grows out of its anchor on enter and fades out on exit. Presses inside do not bubble
|
|
79
|
-
* through the React tree. The ref goes to the surface element.
|
|
80
|
-
*/
|
|
81
|
-
export const FloatingSurface = forwardRef<HTMLDivElement, FloatingSurfaceProps>(
|
|
82
|
-
function FloatingSurface(props, forwardedRef) {
|
|
83
|
-
// No document on the server: the portal mounts after hydration.
|
|
84
|
-
const client = useSyncExternalStore(noop, isClient, isServer);
|
|
85
|
-
if (!client) return null;
|
|
86
|
-
return createPortal(
|
|
87
|
-
// `m` with the DOM animation features only (see Overlay).
|
|
88
|
-
<LazyMotion features={domAnimation}>
|
|
89
|
-
<AnimatePresence>
|
|
90
|
-
{props.open && <Surface key="surface" {...props} forwardedRef={forwardedRef} />}
|
|
91
|
-
</AnimatePresence>
|
|
92
|
-
</LazyMotion>,
|
|
93
|
-
document.body,
|
|
94
|
-
);
|
|
95
|
-
},
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
function Surface({
|
|
99
|
-
anchor,
|
|
100
|
-
side = 'bottom',
|
|
101
|
-
align = 'start',
|
|
102
|
-
offset,
|
|
103
|
-
width,
|
|
104
|
-
className = '',
|
|
105
|
-
style,
|
|
106
|
-
children,
|
|
107
|
-
open: _open,
|
|
108
|
-
forwardedRef,
|
|
109
|
-
...rest
|
|
110
|
-
}: FloatingSurfaceProps & { forwardedRef: React.ForwardedRef<HTMLDivElement> }) {
|
|
111
|
-
const localRef = useRef<HTMLDivElement | null>(null);
|
|
112
|
-
const placement = useAnchoredPosition(true, anchor, localRef, { side, align, offset });
|
|
113
|
-
const prefs = useMotionPrefs();
|
|
114
|
-
const placedSide = placement?.side ?? side;
|
|
115
|
-
// Below full motion only the opacity plays: no scale, no slide.
|
|
116
|
-
const moves = prefs.level === 'full';
|
|
117
|
-
const hidden = moves ? { opacity: 0, scale: 0.96, ...anchorNudge(placedSide, 4) } : { opacity: 0 };
|
|
118
|
-
const leave = moves ? { opacity: 0, scale: 0.98 } : { opacity: 0 };
|
|
119
|
-
|
|
120
|
-
// Stable as long as the caller's ref is (an object, or a memoised callback): an inline
|
|
121
|
-
// callback would change every render, and React would detach and reattach it each time.
|
|
122
|
-
const setRef = useCallback(
|
|
123
|
-
(node: HTMLDivElement | null) => {
|
|
124
|
-
localRef.current = node;
|
|
125
|
-
if (typeof forwardedRef === 'function') forwardedRef(node);
|
|
126
|
-
else if (forwardedRef) forwardedRef.current = node;
|
|
127
|
-
},
|
|
128
|
-
[forwardedRef],
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
// Hold the enter until the first placement exists, so it grows from the anchor, not the corner.
|
|
132
|
-
// The placement is measured in a layout effect after the ref attaches, so it lands before paint.
|
|
133
|
-
const placed = placement !== null;
|
|
134
|
-
|
|
135
|
-
return (
|
|
136
|
-
<m.div
|
|
137
|
-
ref={setRef}
|
|
138
|
-
{...rest}
|
|
139
|
-
data-state={placed ? 'open' : 'closed'}
|
|
140
|
-
data-side={placedSide}
|
|
141
|
-
className={`zg-float fixed z-zg-float ${className}`}
|
|
142
|
-
initial={hidden}
|
|
143
|
-
animate={placed ? { opacity: 1, scale: 1, x: 0, y: 0, transition: menuTransition(prefs) } : hidden}
|
|
144
|
-
exit={{ ...leave, pointerEvents: 'none', transition: menuTransition(prefs, true) }}
|
|
145
|
-
style={{
|
|
146
|
-
top: placement?.top ?? -9999,
|
|
147
|
-
left: placement?.left ?? -9999,
|
|
148
|
-
width,
|
|
149
|
-
transformOrigin: placement?.origin,
|
|
150
|
-
...style,
|
|
151
|
-
}}
|
|
152
|
-
onMouseDown={(e) => e.stopPropagation()}
|
|
153
|
-
onClick={(e) => e.stopPropagation()}
|
|
154
|
-
>
|
|
155
|
-
{children}
|
|
156
|
-
</m.div>
|
|
157
|
-
);
|
|
158
|
-
}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A card that opens while its trigger is hovered: after a short intent delay
|
|
3
|
-
* (sweeping the pointer across a list opens nothing), and it stays open while
|
|
4
|
-
* the pointer moves onto it, so what it lists can be clicked. Leaving both
|
|
5
|
-
* closes it after a beat; Escape closes it at once (and stops there, so App's
|
|
6
|
-
* global Esc does not also fire). Keyboard focus on the trigger opens it the
|
|
7
|
-
* same way, and it stays while focus moves into the card.
|
|
8
|
-
*/
|
|
9
|
-
import { useCallback, useEffect, useRef, useState, type FocusEvent, type ReactNode } from 'react';
|
|
10
|
-
|
|
11
|
-
import { FloatingSurface } from './FloatingSurface';
|
|
12
|
-
import type { Align, Side } from './useAnchoredPosition';
|
|
13
|
-
|
|
14
|
-
const OPEN_MS = 250;
|
|
15
|
-
const CLOSE_MS = 150;
|
|
16
|
-
|
|
17
|
-
/** Props {@link HoverCard} passes to its `trigger` function, to spread onto the trigger element. */
|
|
18
|
-
export interface HoverCardTriggerProps {
|
|
19
|
-
/** Ref callback that registers the trigger as the card's anchor. */
|
|
20
|
-
ref: (node: HTMLElement | null) => void;
|
|
21
|
-
/** Starts the open delay when the pointer enters the trigger. */
|
|
22
|
-
onPointerEnter: () => void;
|
|
23
|
-
/** Starts the close delay when the pointer leaves the trigger. */
|
|
24
|
-
onPointerLeave: () => void;
|
|
25
|
-
/** Optional in the type so callers that build these props themselves still compile. */
|
|
26
|
-
onFocus?: () => void;
|
|
27
|
-
/** Starts the close delay when focus leaves the trigger, unless it moves into the card. */
|
|
28
|
-
onBlur?: (event: FocusEvent<HTMLElement>) => void;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Props for {@link HoverCard}. */
|
|
32
|
-
export interface HoverCardProps {
|
|
33
|
-
/**
|
|
34
|
-
* Renders the trigger. Spread the received props onto the element; `open` is whether the card is
|
|
35
|
-
* shown.
|
|
36
|
-
*/
|
|
37
|
-
trigger: (props: HoverCardTriggerProps, open: boolean) => ReactNode;
|
|
38
|
-
/** The card's content. */
|
|
39
|
-
children: ReactNode;
|
|
40
|
-
/**
|
|
41
|
-
* Preferred side of the trigger. It flips when it does not fit.
|
|
42
|
-
* @default 'right'
|
|
43
|
-
*/
|
|
44
|
-
side?: Side;
|
|
45
|
-
/**
|
|
46
|
-
* How the card lines up along the trigger's edge.
|
|
47
|
-
* @default 'start'
|
|
48
|
-
*/
|
|
49
|
-
align?: Align;
|
|
50
|
-
/** Fixed width of the card in px. Sized by its content when omitted. */
|
|
51
|
-
width?: number;
|
|
52
|
-
/** Accessible name of the card, which has the `dialog` role. */
|
|
53
|
-
ariaLabel: string;
|
|
54
|
-
/** Test id for the card element. */
|
|
55
|
-
testId?: string;
|
|
56
|
-
/**
|
|
57
|
-
* Position against another element than the trigger (a sidebar badge's
|
|
58
|
-
* card against its whole row, so it opens beside the list instead of over
|
|
59
|
-
* the rows below). `null`: the trigger.
|
|
60
|
-
*/
|
|
61
|
-
anchorTo?: (trigger: HTMLElement) => HTMLElement | null;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Renders a trigger and a card that opens while the trigger is hovered or focused. The card
|
|
66
|
-
* opens after 250 ms, so sweeping the pointer across a list opens nothing, and stays open
|
|
67
|
-
* while the pointer or focus is on it. It closes 150 ms after both leave, and Esc closes it
|
|
68
|
-
* at once.
|
|
69
|
-
*
|
|
70
|
-
* @param props - Component props.
|
|
71
|
-
*/
|
|
72
|
-
export function HoverCard({
|
|
73
|
-
trigger,
|
|
74
|
-
children,
|
|
75
|
-
side = 'right',
|
|
76
|
-
align = 'start',
|
|
77
|
-
width,
|
|
78
|
-
ariaLabel,
|
|
79
|
-
testId,
|
|
80
|
-
anchorTo,
|
|
81
|
-
}: HoverCardProps) {
|
|
82
|
-
const [open, setOpen] = useState(false);
|
|
83
|
-
const anchor = useRef<HTMLElement | null>(null);
|
|
84
|
-
const surface = useRef<HTMLDivElement | null>(null);
|
|
85
|
-
const timer = useRef<number | undefined>(undefined);
|
|
86
|
-
const schedule = useCallback((next: boolean) => {
|
|
87
|
-
window.clearTimeout(timer.current);
|
|
88
|
-
timer.current = window.setTimeout(() => setOpen(next), next ? OPEN_MS : CLOSE_MS);
|
|
89
|
-
}, []);
|
|
90
|
-
const stay = useCallback(() => window.clearTimeout(timer.current), []);
|
|
91
|
-
useEffect(() => () => window.clearTimeout(timer.current), []);
|
|
92
|
-
useEffect(() => {
|
|
93
|
-
if (!open) return undefined;
|
|
94
|
-
const onKey = (e: KeyboardEvent) => {
|
|
95
|
-
if (e.key !== 'Escape') return;
|
|
96
|
-
e.preventDefault();
|
|
97
|
-
e.stopPropagation();
|
|
98
|
-
window.clearTimeout(timer.current);
|
|
99
|
-
setOpen(false);
|
|
100
|
-
};
|
|
101
|
-
window.addEventListener('keydown', onKey, true);
|
|
102
|
-
return () => window.removeEventListener('keydown', onKey, true);
|
|
103
|
-
}, [open]);
|
|
104
|
-
|
|
105
|
-
return (
|
|
106
|
-
<>
|
|
107
|
-
{trigger(
|
|
108
|
-
{
|
|
109
|
-
ref: (node) => {
|
|
110
|
-
anchor.current = node;
|
|
111
|
-
},
|
|
112
|
-
onPointerEnter: () => schedule(true),
|
|
113
|
-
onPointerLeave: () => schedule(false),
|
|
114
|
-
onFocus: () => schedule(true),
|
|
115
|
-
onBlur: (e) => {
|
|
116
|
-
if (!surface.current?.contains(e.relatedTarget as Node | null)) schedule(false);
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
open,
|
|
120
|
-
)}
|
|
121
|
-
<FloatingSurface
|
|
122
|
-
ref={surface}
|
|
123
|
-
open={open}
|
|
124
|
-
anchor={{ element: anchor.current && anchorTo ? (anchorTo(anchor.current) ?? anchor.current) : anchor.current }}
|
|
125
|
-
side={side}
|
|
126
|
-
align={align}
|
|
127
|
-
width={width}
|
|
128
|
-
role="dialog"
|
|
129
|
-
aria-label={ariaLabel}
|
|
130
|
-
data-testid={testId}
|
|
131
|
-
className="overflow-hidden"
|
|
132
|
-
onPointerEnter={stay}
|
|
133
|
-
onPointerLeave={() => schedule(false)}
|
|
134
|
-
onBlur={(e) => {
|
|
135
|
-
const to = e.relatedTarget as Node | null;
|
|
136
|
-
if (!e.currentTarget.contains(to) && !anchor.current?.contains(to)) schedule(false);
|
|
137
|
-
}}
|
|
138
|
-
>
|
|
139
|
-
{children}
|
|
140
|
-
</FloatingSurface>
|
|
141
|
-
</>
|
|
142
|
-
);
|
|
143
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A trigger that opens a floating surface. The trigger is rendered by the
|
|
3
|
-
* caller (it gets the props to spread: ref, aria-haspopup / -expanded /
|
|
4
|
-
* -controls, onClick), so any control (a segment item, an icon button, a
|
|
5
|
-
* pill) can open one.
|
|
6
|
-
*
|
|
7
|
-
* A surface that is (or holds) a menu or listbox takes focus on open: the
|
|
8
|
-
* current choice, else the first row, unless its content already focused
|
|
9
|
-
* something (a search field). The arrows then move between rows; Esc and a
|
|
10
|
-
* pick hand focus back to the trigger (`usePopover`).
|
|
11
|
-
*/
|
|
12
|
-
import { useCallback, useEffect, useId, useLayoutEffect, useRef, useState, type ReactNode } from 'react';
|
|
13
|
-
|
|
14
|
-
import { focusMenuRow, handleMenuKeyDown } from '../Menu';
|
|
15
|
-
import { FloatingSurface } from './FloatingSurface';
|
|
16
|
-
import type { Align, Side } from './useAnchoredPosition';
|
|
17
|
-
import { usePopover } from './usePopover';
|
|
18
|
-
|
|
19
|
-
/** Props {@link Popover} passes to its `trigger` function, to spread onto the trigger element. */
|
|
20
|
-
export interface PopoverTriggerProps {
|
|
21
|
-
/** Ref callback that registers the trigger as the surface's anchor. */
|
|
22
|
-
ref: (node: HTMLElement | null) => void;
|
|
23
|
-
/** Kind of popup the trigger opens, from the `role` prop. */
|
|
24
|
-
'aria-haspopup': 'dialog' | 'menu' | 'listbox';
|
|
25
|
-
/** Whether the surface is open. */
|
|
26
|
-
'aria-expanded': boolean;
|
|
27
|
-
/** The surface's id while it is open. */
|
|
28
|
-
'aria-controls'?: string;
|
|
29
|
-
/** Toggles the surface. */
|
|
30
|
-
onClick: () => void;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** Props for {@link Popover}. */
|
|
34
|
-
export interface PopoverProps {
|
|
35
|
-
/**
|
|
36
|
-
* Renders the trigger. Spread the received props onto the element; `open` is whether the surface
|
|
37
|
-
* is shown.
|
|
38
|
-
*/
|
|
39
|
-
trigger: (props: PopoverTriggerProps, open: boolean) => ReactNode;
|
|
40
|
-
/**
|
|
41
|
-
* Renders the surface content. `close` closes the surface and returns focus to the trigger, for
|
|
42
|
-
* use after a pick.
|
|
43
|
-
*/
|
|
44
|
-
children: (close: () => void) => ReactNode;
|
|
45
|
-
/**
|
|
46
|
-
* Preferred side of the trigger. It flips when it does not fit.
|
|
47
|
-
* @default 'top'
|
|
48
|
-
*/
|
|
49
|
-
side?: Side;
|
|
50
|
-
/**
|
|
51
|
-
* How the surface lines up along the trigger's edge.
|
|
52
|
-
* @default 'start'
|
|
53
|
-
*/
|
|
54
|
-
align?: Align;
|
|
55
|
-
/** Fixed width of the surface in px. Sized by its content when omitted. */
|
|
56
|
-
width?: number;
|
|
57
|
-
/**
|
|
58
|
-
* ARIA role of the surface, also reported on the trigger as `aria-haspopup`. A `menu` or
|
|
59
|
-
* `listbox` takes keyboard navigation between rows.
|
|
60
|
-
* @default 'dialog'
|
|
61
|
-
*/
|
|
62
|
-
role?: 'dialog' | 'menu' | 'listbox';
|
|
63
|
-
/** Accessible name of the surface. */
|
|
64
|
-
ariaLabel: string;
|
|
65
|
-
/**
|
|
66
|
-
* Called when an outside press, Esc or the trigger closes the surface. Not called for a close
|
|
67
|
-
* from `children`.
|
|
68
|
-
*/
|
|
69
|
-
onDismiss?: () => void;
|
|
70
|
-
/** Called when the surface opens or closes, however it does (to load what it shows on each opening). */
|
|
71
|
-
onOpenChange?: (open: boolean) => void;
|
|
72
|
-
/** Extra classes on the surface. */
|
|
73
|
-
className?: string;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Renders a trigger that opens a floating surface. The caller draws the trigger from the props
|
|
78
|
-
* it receives, so any control can open one. A surface that is or holds a menu or listbox takes
|
|
79
|
-
* focus on open; Esc and a pick hand focus back to the trigger.
|
|
80
|
-
*
|
|
81
|
-
* @param props - Component props.
|
|
82
|
-
*/
|
|
83
|
-
export function Popover({
|
|
84
|
-
trigger,
|
|
85
|
-
children,
|
|
86
|
-
side = 'top',
|
|
87
|
-
align = 'start',
|
|
88
|
-
width,
|
|
89
|
-
role = 'dialog',
|
|
90
|
-
ariaLabel,
|
|
91
|
-
onDismiss,
|
|
92
|
-
onOpenChange,
|
|
93
|
-
className = '',
|
|
94
|
-
}: PopoverProps) {
|
|
95
|
-
const popover = usePopover({ onDismiss });
|
|
96
|
-
const { open, triggerRef, surfaceRef } = popover;
|
|
97
|
-
const surfaceId = useId();
|
|
98
|
-
// Stable, so FloatingSurface's forwarded ref (and the trigger's) is not detached and reattached every render.
|
|
99
|
-
const setTriggerRef = useCallback(
|
|
100
|
-
(node: HTMLElement | null) => {
|
|
101
|
-
triggerRef.current = node;
|
|
102
|
-
},
|
|
103
|
-
[triggerRef],
|
|
104
|
-
);
|
|
105
|
-
const setSurfaceRef = useCallback(
|
|
106
|
-
(node: HTMLDivElement | null) => {
|
|
107
|
-
surfaceRef.current = node;
|
|
108
|
-
},
|
|
109
|
-
[surfaceRef],
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
const surface = surfaceRef.current;
|
|
114
|
-
if (!open || !surface || surface.contains(document.activeElement)) return;
|
|
115
|
-
if (role !== 'dialog' || surface.querySelector('[role="menu"], [role="listbox"]')) focusMenuRow(surface);
|
|
116
|
-
}, [open, role, surfaceRef]);
|
|
117
|
-
|
|
118
|
-
const openChange = useRef(onOpenChange);
|
|
119
|
-
useLayoutEffect(() => {
|
|
120
|
-
openChange.current = onOpenChange;
|
|
121
|
-
});
|
|
122
|
-
const reported = useRef(open);
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
if (reported.current === open) return;
|
|
125
|
-
reported.current = open;
|
|
126
|
-
openChange.current?.(open);
|
|
127
|
-
}, [open]);
|
|
128
|
-
|
|
129
|
-
// The surface from the first open on (kept for its exit and the next open):
|
|
130
|
-
// lists carry a popover per row or group, and a closed one cost a portal,
|
|
131
|
-
// a presence and its content's elements each.
|
|
132
|
-
const [armed, setArmed] = useState(open);
|
|
133
|
-
if (open && !armed) setArmed(true);
|
|
134
|
-
|
|
135
|
-
const triggerProps: PopoverTriggerProps = {
|
|
136
|
-
ref: setTriggerRef,
|
|
137
|
-
'aria-haspopup': role,
|
|
138
|
-
'aria-expanded': open,
|
|
139
|
-
'aria-controls': open ? surfaceId : undefined,
|
|
140
|
-
onClick: popover.toggle,
|
|
141
|
-
};
|
|
142
|
-
return (
|
|
143
|
-
<>
|
|
144
|
-
{trigger(triggerProps, open)}
|
|
145
|
-
{armed && (
|
|
146
|
-
<FloatingSurface
|
|
147
|
-
ref={setSurfaceRef}
|
|
148
|
-
id={surfaceId}
|
|
149
|
-
open={open}
|
|
150
|
-
anchor={{ element: triggerRef.current }}
|
|
151
|
-
side={side}
|
|
152
|
-
align={align}
|
|
153
|
-
width={width}
|
|
154
|
-
role={role}
|
|
155
|
-
aria-label={ariaLabel}
|
|
156
|
-
className={`overflow-hidden ${className}`}
|
|
157
|
-
// A surface that is itself the menu (rows in a `Menu role="group"`) navigates here.
|
|
158
|
-
onKeyDown={role === 'dialog' ? undefined : handleMenuKeyDown}
|
|
159
|
-
>
|
|
160
|
-
{/* FloatingSurface keeps this mounted through its exit (motion), then drops it. */}
|
|
161
|
-
{children(popover.close)}
|
|
162
|
-
</FloatingSurface>
|
|
163
|
-
)}
|
|
164
|
-
</>
|
|
165
|
-
);
|
|
166
|
-
}
|