zidane-ui 9.1.1 → 9.1.3
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 +12 -11
- 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/index.js +1 -1
- 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/index.js +1 -1
- package/dist/onboarding/steps/ConnectStep.js +1 -1
- package/dist/onboarding/steps/ExtensionsStep.js +1 -1
- package/dist/onboarding/steps/ReadyStep.js +1 -1
- package/dist/onboarding/steps/connect/ProviderPanel.js +1 -1
- package/dist/session/headless/index.js +2 -2
- 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 +1 -1
- package/dist/settings/sections/models/model-test.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/Form.tsx
DELETED
|
@@ -1,593 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Form sections, rows and controls: a section is a labelled tray; plain rows
|
|
3
|
-
* sit flat in it with the row-hover wash; entity cards (a server, a provider)
|
|
4
|
-
* sit raised in it (`FormCard`). Toggle rows flip on click, choice rows cycle
|
|
5
|
-
* to the next option, nav rows navigate. A row whose one control sits among
|
|
6
|
-
* other buttons (a picker with Test and clear, a select) is a `HostRow`: it
|
|
7
|
-
* washes and answers a click like a row button. Rows of several controls
|
|
8
|
-
* (segments, sliders, inputs) leave the input to them. Inputs are wells
|
|
9
|
-
* (`INPUT_CLASS`).
|
|
10
|
-
*/
|
|
11
|
-
import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
|
12
|
-
import { Segmented } from './Segmented';
|
|
13
|
-
import { Raised, SectionLabel, Tray } from './Surface';
|
|
14
|
-
import { SwitchGlyph } from './SwitchGlyph';
|
|
15
|
-
|
|
16
|
-
const FOCUS_RING =
|
|
17
|
-
'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--zg-ring)]';
|
|
18
|
-
|
|
19
|
-
/** A whole-row button inside a section tray: flat, washed on hover. */
|
|
20
|
-
export const ROW_BUTTON_CLASS = `zg-press-subtle flex items-center gap-3 w-full text-left px-3 py-2 rounded-zg-md bg-transparent border-0 cursor-pointer text-[var(--zg-text)] hover:before:bg-[var(--zg-row-hover)] transition-colors disabled:opacity-zg-disabled disabled:cursor-default disabled:hover:before:bg-transparent ${FOCUS_RING}`;
|
|
21
|
-
|
|
22
|
-
/** A static row whose control (segment, slider, input) takes the input. */
|
|
23
|
-
export const ROW_CLASS = 'flex items-center gap-3 px-3 py-2';
|
|
24
|
-
|
|
25
|
-
/** A {@link HostRow}'s surface: a row button's wash, giving with the control inside (`zg-press-host`). */
|
|
26
|
-
export const ROW_HOST_CLASS = `zg-press-host ${ROW_CLASS} rounded-zg-md`;
|
|
27
|
-
|
|
28
|
-
/** The control of a {@link HostRow} that takes the row's width: a picker's trigger, holding the label and the value. */
|
|
29
|
-
export const ROW_TRIGGER_CLASS = `zg-press-subtle flex items-center gap-3 flex-1 min-w-0 text-left bg-transparent border-0 p-0 cursor-pointer text-[var(--zg-text)] rounded-zg-sm disabled:cursor-default ${FOCUS_RING}`;
|
|
30
|
-
|
|
31
|
-
/** What answers a click on a host row by itself. */
|
|
32
|
-
const ROW_OWN_TARGETS = 'button, a, input, select, textarea, label';
|
|
33
|
-
|
|
34
|
-
/** Single-line text input: a well set into its surface. */
|
|
35
|
-
export const INPUT_CLASS =
|
|
36
|
-
'zg-well w-full h-8 px-2.5 text-zg-ui placeholder:text-[var(--zg-text-subtle)] disabled:opacity-zg-disabled';
|
|
37
|
-
|
|
38
|
-
/** Multi-line / code input. */
|
|
39
|
-
export const TEXTAREA_CLASS =
|
|
40
|
-
'zg-well w-full px-2.5 py-2 text-zg-label font-mono leading-relaxed placeholder:text-[var(--zg-text-subtle)] resize-y';
|
|
41
|
-
|
|
42
|
-
/** Label above a form field. */
|
|
43
|
-
export const FIELD_LABEL_CLASS = 'block text-xs text-[var(--zg-text-muted)] mb-1';
|
|
44
|
-
|
|
45
|
-
/** An inline add / install form: a raised card above the list it feeds. */
|
|
46
|
-
export const FORM_CARD_CLASS = 'zg-raised border rounded-zg-lg p-4 space-y-3';
|
|
47
|
-
|
|
48
|
-
/** Props for {@link ErrorNote}. */
|
|
49
|
-
export interface ErrorNoteProps {
|
|
50
|
-
/** The error message. */
|
|
51
|
-
children: ReactNode;
|
|
52
|
-
/** Extra classes on the root element. */
|
|
53
|
-
className?: string;
|
|
54
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
55
|
-
style?: CSSProperties;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* A failure worth reading: a soft danger wash, no border.
|
|
60
|
-
*
|
|
61
|
-
* @param props - Component props.
|
|
62
|
-
*/
|
|
63
|
-
export function ErrorNote({ children, className, style }: ErrorNoteProps) {
|
|
64
|
-
return (
|
|
65
|
-
<div
|
|
66
|
-
role="alert"
|
|
67
|
-
className={['px-3 py-2 rounded-zg-md bg-zg-danger/10 text-xs text-zg-danger break-words', className]
|
|
68
|
-
.filter(Boolean)
|
|
69
|
-
.join(' ')}
|
|
70
|
-
style={style}
|
|
71
|
-
>
|
|
72
|
-
{children}
|
|
73
|
-
</div>
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Props for {@link OpLine}. */
|
|
78
|
-
export interface OpLineProps {
|
|
79
|
-
/**
|
|
80
|
-
* Tone of the line: `busy` and `notice` are muted (a result worth a quiet line,
|
|
81
|
-
* never a celebration: a success that shows elsewhere needs no line at all), and
|
|
82
|
-
* `error` is danger-coloured and announced as an alert.
|
|
83
|
-
*/
|
|
84
|
-
kind: 'busy' | 'notice' | 'error';
|
|
85
|
-
/** The feedback text. */
|
|
86
|
-
children: ReactNode;
|
|
87
|
-
/** Extra classes on the root element. */
|
|
88
|
-
className?: string;
|
|
89
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
90
|
-
style?: CSSProperties;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* One-line feedback for a lifecycle op (install / update / remove).
|
|
95
|
-
*
|
|
96
|
-
* @param props - Component props.
|
|
97
|
-
*/
|
|
98
|
-
export function OpLine({ kind, children, className, style }: OpLineProps) {
|
|
99
|
-
return (
|
|
100
|
-
<div
|
|
101
|
-
role={kind === 'error' ? 'alert' : undefined}
|
|
102
|
-
className={[
|
|
103
|
-
`px-1 text-xs break-words ${kind === 'error' ? 'text-zg-danger' : 'text-[var(--zg-text-muted)]'}`,
|
|
104
|
-
className,
|
|
105
|
-
]
|
|
106
|
-
.filter(Boolean)
|
|
107
|
-
.join(' ')}
|
|
108
|
-
style={style}
|
|
109
|
-
>
|
|
110
|
-
{children}
|
|
111
|
-
</div>
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** Props for {@link FormSection}. */
|
|
116
|
-
export interface FormSectionProps {
|
|
117
|
-
/**
|
|
118
|
-
* Label above the section. The label line is omitted when neither `title` nor `trailing` is set.
|
|
119
|
-
*/
|
|
120
|
-
title?: ReactNode;
|
|
121
|
-
/** Right side of the label line: a count, a small action. */
|
|
122
|
-
trailing?: ReactNode;
|
|
123
|
-
/**
|
|
124
|
-
* `rows` hosts flat rows; `cards` spaces raised {@link FormCard}s apart.
|
|
125
|
-
* @default 'rows'
|
|
126
|
-
*/
|
|
127
|
-
layout?: 'rows' | 'cards';
|
|
128
|
-
/** Extra classes on the section. */
|
|
129
|
-
className?: string;
|
|
130
|
-
/** The rows or cards. */
|
|
131
|
-
children: ReactNode;
|
|
132
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
133
|
-
style?: CSSProperties;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* A labelled group. `rows` (default) hosts flat rows; `cards` spaces raised
|
|
138
|
-
* `FormCard`s apart on the same tray.
|
|
139
|
-
*
|
|
140
|
-
* @param props - Component props.
|
|
141
|
-
*/
|
|
142
|
-
export function FormSection({ title, trailing, layout = 'rows', className = '', children, style }: FormSectionProps) {
|
|
143
|
-
return (
|
|
144
|
-
<section className={className} style={style}>
|
|
145
|
-
{(title || trailing) && (
|
|
146
|
-
// Over rows, the label starts where their text does and its trailing control ends where theirs do
|
|
147
|
-
// (the tray's 4px and a row's 12px); cards set their own insets.
|
|
148
|
-
<div
|
|
149
|
-
className={`flex items-center justify-between gap-2 min-h-5 ${layout === 'rows' ? 'px-4' : 'px-1'} mb-1.5`}
|
|
150
|
-
>
|
|
151
|
-
{title ? <SectionLabel>{title}</SectionLabel> : <span />}
|
|
152
|
-
{trailing}
|
|
153
|
-
</div>
|
|
154
|
-
)}
|
|
155
|
-
<Tray radius="lg" className={layout === 'cards' ? 'p-1.5 flex flex-col gap-1.5' : 'p-1 flex flex-col'}>
|
|
156
|
-
{children}
|
|
157
|
-
</Tray>
|
|
158
|
-
</section>
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/** Props for {@link FormCard}. */
|
|
163
|
-
export interface FormCardProps {
|
|
164
|
-
/** Extra classes on the card. */
|
|
165
|
-
className?: string;
|
|
166
|
-
/** The card's content. */
|
|
167
|
-
children: ReactNode;
|
|
168
|
-
/** Test id for the card element. */
|
|
169
|
-
'data-testid'?: string;
|
|
170
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
171
|
-
style?: CSSProperties;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* An entity card lifted off its section tray (server, provider, environment).
|
|
176
|
-
*
|
|
177
|
-
* @param props - Component props.
|
|
178
|
-
*/
|
|
179
|
-
export function FormCard({ className = '', children, ...rest }: FormCardProps) {
|
|
180
|
-
return (
|
|
181
|
-
<Raised radius="md" className={`overflow-hidden ${className}`} {...rest}>
|
|
182
|
-
{children}
|
|
183
|
-
</Raised>
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/** Props for {@link RowText}. */
|
|
188
|
-
export interface RowTextProps {
|
|
189
|
-
/** The row's main text. */
|
|
190
|
-
label: ReactNode;
|
|
191
|
-
/** Muted text under the label. */
|
|
192
|
-
description?: ReactNode;
|
|
193
|
-
/**
|
|
194
|
-
* Cut the description to one line with an ellipsis. When off, it wraps.
|
|
195
|
-
* @default true
|
|
196
|
-
*/
|
|
197
|
-
truncate?: boolean;
|
|
198
|
-
/** Extra classes on the root element. */
|
|
199
|
-
className?: string;
|
|
200
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
201
|
-
style?: CSSProperties;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Label over an optional muted description, the left half of every row.
|
|
206
|
-
*
|
|
207
|
-
* @param props - Component props.
|
|
208
|
-
*/
|
|
209
|
-
export function RowText({ label, description, truncate = true, className, style }: RowTextProps) {
|
|
210
|
-
return (
|
|
211
|
-
<div className={['flex-1 min-w-0', className].filter(Boolean).join(' ')} style={style}>
|
|
212
|
-
<div className="text-sm text-[var(--zg-text)]">{label}</div>
|
|
213
|
-
{description && (
|
|
214
|
-
<div className={`text-xs text-[var(--zg-text-muted)] ${truncate ? 'truncate' : 'zg-pretty'}`}>
|
|
215
|
-
{description}
|
|
216
|
-
</div>
|
|
217
|
-
)}
|
|
218
|
-
</div>
|
|
219
|
-
);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/** Props for {@link MetaChip}. */
|
|
223
|
-
export interface MetaChipProps {
|
|
224
|
-
/**
|
|
225
|
-
* Text colour of the chip.
|
|
226
|
-
* @default 'muted'
|
|
227
|
-
*/
|
|
228
|
-
tone?: 'muted' | 'text' | 'accent' | 'success' | 'warn' | 'danger' | 'info';
|
|
229
|
-
/** Native tooltip. */
|
|
230
|
-
title?: string;
|
|
231
|
-
/** Extra classes on the chip. */
|
|
232
|
-
className?: string;
|
|
233
|
-
/** The chip's content. */
|
|
234
|
-
children: ReactNode;
|
|
235
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
236
|
-
style?: CSSProperties;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* A status or value chip set into its surface: track tone, meta voice.
|
|
241
|
-
*
|
|
242
|
-
* @param props - Component props.
|
|
243
|
-
*/
|
|
244
|
-
export function MetaChip({ tone = 'muted', title, className = '', children, style }: MetaChipProps) {
|
|
245
|
-
return (
|
|
246
|
-
<span
|
|
247
|
-
title={title}
|
|
248
|
-
className={`zg-track-chip zg-meta inline-flex items-center gap-1 h-[18px] px-1.5 shrink-0 whitespace-nowrap ${CHIP_TONE[tone]} ${className}`}
|
|
249
|
-
style={style}
|
|
250
|
-
>
|
|
251
|
-
{children}
|
|
252
|
-
</span>
|
|
253
|
-
);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const CHIP_TONE = {
|
|
257
|
-
muted: '',
|
|
258
|
-
text: '!text-[var(--zg-text)]',
|
|
259
|
-
accent: '!text-[var(--zg-accent)]',
|
|
260
|
-
success: '!text-zg-success',
|
|
261
|
-
warn: '!text-zg-warn',
|
|
262
|
-
danger: '!text-zg-danger',
|
|
263
|
-
info: '!text-zg-info',
|
|
264
|
-
} as const;
|
|
265
|
-
|
|
266
|
-
/** Props for {@link Switch}. */
|
|
267
|
-
export interface SwitchProps {
|
|
268
|
-
/** Whether the switch is on. */
|
|
269
|
-
on: boolean;
|
|
270
|
-
/** Extra classes on the root element. */
|
|
271
|
-
className?: string;
|
|
272
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
273
|
-
style?: CSSProperties;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* The settings-row switch glyph (`SwitchGlyph` md); the row around it is the control.
|
|
278
|
-
*
|
|
279
|
-
* @param props - Component props.
|
|
280
|
-
*/
|
|
281
|
-
export function Switch({ on, className, style }: SwitchProps) {
|
|
282
|
-
return <SwitchGlyph on={on} size="md" className={className} style={style} />;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
/** Props for {@link Checkbox}. */
|
|
286
|
-
export interface CheckboxProps {
|
|
287
|
-
/** Whether the box is ticked. */
|
|
288
|
-
checked: boolean;
|
|
289
|
-
/** Extra classes on the root element. */
|
|
290
|
-
className?: string;
|
|
291
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
292
|
-
style?: CSSProperties;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* The checkbox glyph for multi-select lists; the row around it is the control.
|
|
297
|
-
*
|
|
298
|
-
* @param props - Component props.
|
|
299
|
-
*/
|
|
300
|
-
export function Checkbox({ checked, className, style }: CheckboxProps) {
|
|
301
|
-
return (
|
|
302
|
-
<span
|
|
303
|
-
aria-hidden
|
|
304
|
-
className={[
|
|
305
|
-
`mt-0.5 w-4 h-4 rounded-zg-sm shrink-0 flex items-center justify-center transition-colors ${
|
|
306
|
-
checked
|
|
307
|
-
? 'bg-[var(--zg-accent-fill)]'
|
|
308
|
-
: 'bg-[var(--zg-track)] shadow-[inset_0_0_0_1px_var(--zg-border-strong)]'
|
|
309
|
-
}`,
|
|
310
|
-
className,
|
|
311
|
-
]
|
|
312
|
-
.filter(Boolean)
|
|
313
|
-
.join(' ')}
|
|
314
|
-
style={style}
|
|
315
|
-
>
|
|
316
|
-
{checked && <span className="i-ph-check-bold text-zg-label text-zg-accent-fill-fg" />}
|
|
317
|
-
</span>
|
|
318
|
-
);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
/** Props for {@link ToggleSwitch}. */
|
|
322
|
-
export interface ToggleSwitchProps {
|
|
323
|
-
/** Whether the switch is on. */
|
|
324
|
-
on: boolean;
|
|
325
|
-
/** Called with the new state when the switch is clicked. */
|
|
326
|
-
onChange: (on: boolean) => void;
|
|
327
|
-
/** Accessible name of the switch. It has no visible text. */
|
|
328
|
-
label: string;
|
|
329
|
-
/** Native tooltip. */
|
|
330
|
-
title?: string;
|
|
331
|
-
/**
|
|
332
|
-
* Grey the switch out and ignore clicks.
|
|
333
|
-
* @default false
|
|
334
|
-
*/
|
|
335
|
-
disabled?: boolean;
|
|
336
|
-
/** Extra classes on the root element. */
|
|
337
|
-
className?: string;
|
|
338
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
339
|
-
style?: CSSProperties;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* A standalone switch control, for rows that host other buttons too.
|
|
344
|
-
*
|
|
345
|
-
* @param props - Component props.
|
|
346
|
-
*/
|
|
347
|
-
export function ToggleSwitch({ on, onChange, label, title, disabled = false, className, style }: ToggleSwitchProps) {
|
|
348
|
-
return (
|
|
349
|
-
<button
|
|
350
|
-
type="button"
|
|
351
|
-
role="switch"
|
|
352
|
-
aria-checked={on}
|
|
353
|
-
aria-label={label}
|
|
354
|
-
title={title}
|
|
355
|
-
disabled={disabled}
|
|
356
|
-
onClick={() => onChange(!on)}
|
|
357
|
-
className={[
|
|
358
|
-
`zg-press-soft inline-flex shrink-0 rounded-full border-0 p-0 bg-transparent cursor-pointer disabled:opacity-zg-disabled disabled:cursor-default ${FOCUS_RING}`,
|
|
359
|
-
className,
|
|
360
|
-
]
|
|
361
|
-
.filter(Boolean)
|
|
362
|
-
.join(' ')}
|
|
363
|
-
style={style}
|
|
364
|
-
>
|
|
365
|
-
<Switch on={on} />
|
|
366
|
-
</button>
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
/** Props for {@link NavRow}. */
|
|
371
|
-
export interface NavRowProps {
|
|
372
|
-
/**
|
|
373
|
-
* The row: its `label`, `description` and `icon` class, and `onSelect`, called when the row is
|
|
374
|
-
* clicked.
|
|
375
|
-
*/
|
|
376
|
-
action: { label: string; description: string; icon: string; onSelect: () => void };
|
|
377
|
-
/** Extra classes on the root element. */
|
|
378
|
-
className?: string;
|
|
379
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
380
|
-
style?: CSSProperties;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* A row that navigates somewhere (another modal, a sub-surface).
|
|
385
|
-
*
|
|
386
|
-
* @param props - Component props.
|
|
387
|
-
*/
|
|
388
|
-
export function NavRow({ action, className, style }: NavRowProps) {
|
|
389
|
-
return (
|
|
390
|
-
<button
|
|
391
|
-
type="button"
|
|
392
|
-
onClick={action.onSelect}
|
|
393
|
-
className={[ROW_BUTTON_CLASS, className].filter(Boolean).join(' ')}
|
|
394
|
-
style={style}
|
|
395
|
-
>
|
|
396
|
-
<span className={`${action.icon} text-base text-[var(--zg-text-muted)] shrink-0`} aria-hidden />
|
|
397
|
-
<RowText label={action.label} description={action.description} />
|
|
398
|
-
<span className="i-ph-caret-right text-zg-meta text-[var(--zg-text-muted)] shrink-0" aria-hidden />
|
|
399
|
-
</button>
|
|
400
|
-
);
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
/** Props for {@link HostRow}: the row's `div` attributes, `children` and `disabled`. */
|
|
404
|
-
export interface HostRowProps extends HTMLAttributes<HTMLDivElement> {
|
|
405
|
-
/**
|
|
406
|
-
* The control can't be used now: no wash, no forwarding.
|
|
407
|
-
* @default false
|
|
408
|
-
*/
|
|
409
|
-
disabled?: boolean;
|
|
410
|
-
/** The row's content, the control marked `data-row-control` among it. */
|
|
411
|
-
children: ReactNode;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* A row whose one control sits among other buttons (a picker with Test and
|
|
416
|
-
* clear, a select, a switch beside a note): it washes on hover like a row
|
|
417
|
-
* button, and a click anywhere on it but on a button or a field works the
|
|
418
|
-
* control, the element marked `data-row-control` (or the button, select or
|
|
419
|
-
* input inside it; a select opens its list). Keyboard users reach the
|
|
420
|
-
* control itself.
|
|
421
|
-
*
|
|
422
|
-
* @param props - The row's `div` attributes, `children` and `disabled`.
|
|
423
|
-
*/
|
|
424
|
-
export function HostRow({ disabled = false, className = '', children, ...rest }: HostRowProps) {
|
|
425
|
-
return (
|
|
426
|
-
// A pointer convenience, like a label: the keyboard reaches the control itself, which this hands a click to.
|
|
427
|
-
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
428
|
-
<div
|
|
429
|
-
{...rest}
|
|
430
|
-
className={`${ROW_HOST_CLASS} ${disabled ? '' : 'cursor-pointer hover:before:bg-[var(--zg-row-hover)]'} transition-colors ${className}`}
|
|
431
|
-
onClick={(e) => {
|
|
432
|
-
rest.onClick?.(e);
|
|
433
|
-
if (disabled || e.defaultPrevented) return;
|
|
434
|
-
const row = e.currentTarget;
|
|
435
|
-
const target = e.target as Element;
|
|
436
|
-
// What it opened (a portaled menu) and its own buttons and fields answer for themselves.
|
|
437
|
-
const own = target.closest(ROW_OWN_TARGETS);
|
|
438
|
-
if (!row.contains(target) || (own && row.contains(own))) return;
|
|
439
|
-
const marked = row.querySelector<HTMLElement>('[data-row-control]');
|
|
440
|
-
const control = marked?.matches('button, select, input')
|
|
441
|
-
? marked
|
|
442
|
-
: marked?.querySelector<HTMLElement>('button, select, input');
|
|
443
|
-
if (!control || (control as HTMLButtonElement).disabled) return;
|
|
444
|
-
control.focus({ preventScroll: true });
|
|
445
|
-
if (control instanceof HTMLSelectElement)
|
|
446
|
-
(control as HTMLSelectElement & { showPicker?: () => void }).showPicker?.();
|
|
447
|
-
else control.click();
|
|
448
|
-
}}
|
|
449
|
-
>
|
|
450
|
-
{children}
|
|
451
|
-
</div>
|
|
452
|
-
);
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/** Props for {@link SwitchRow}. */
|
|
456
|
-
export interface SwitchRowProps {
|
|
457
|
-
/** The row's main text. */
|
|
458
|
-
label: string;
|
|
459
|
-
/** Muted text under the label. It wraps. */
|
|
460
|
-
description?: string;
|
|
461
|
-
/** Whether the option is on. */
|
|
462
|
-
on: boolean;
|
|
463
|
-
/** Called when the row is clicked. */
|
|
464
|
-
onToggle: () => void;
|
|
465
|
-
/** Extra classes on the root element. */
|
|
466
|
-
className?: string;
|
|
467
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
468
|
-
style?: CSSProperties;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Plain on/off row for store-backed booleans (not the vendored settings table).
|
|
473
|
-
*
|
|
474
|
-
* @param props - Component props.
|
|
475
|
-
*/
|
|
476
|
-
export function SwitchRow({ label, description, on, onToggle, className, style }: SwitchRowProps) {
|
|
477
|
-
return (
|
|
478
|
-
<button
|
|
479
|
-
type="button"
|
|
480
|
-
role="switch"
|
|
481
|
-
onClick={onToggle}
|
|
482
|
-
aria-checked={on}
|
|
483
|
-
className={[ROW_BUTTON_CLASS, className].filter(Boolean).join(' ')}
|
|
484
|
-
style={style}
|
|
485
|
-
>
|
|
486
|
-
<RowText label={label} description={description} truncate={false} />
|
|
487
|
-
<Switch on={on} />
|
|
488
|
-
</button>
|
|
489
|
-
);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
/** Props for {@link SegmentedRow}. */
|
|
493
|
-
export interface SegmentedRowProps<T extends string> {
|
|
494
|
-
/** The row's main text. It also names the choice group. */
|
|
495
|
-
label: string;
|
|
496
|
-
/** Muted text under the label. It wraps. */
|
|
497
|
-
description?: string;
|
|
498
|
-
/** The value of the selected option. */
|
|
499
|
-
value: T;
|
|
500
|
-
/** Called with the new value when an option is picked. */
|
|
501
|
-
onChange: (v: T) => void;
|
|
502
|
-
/** The choices, as {@link SegmentedOption}s with a string `label`. */
|
|
503
|
-
options: { value: T; label: string; icon?: string; title?: string; disabled?: boolean }[];
|
|
504
|
-
/** Extra classes on the root element. */
|
|
505
|
-
className?: string;
|
|
506
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
507
|
-
style?: CSSProperties;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/**
|
|
511
|
-
* Label + description on the left, a Segmented picker on the right.
|
|
512
|
-
*
|
|
513
|
-
* @param props - Component props.
|
|
514
|
-
*/
|
|
515
|
-
export function SegmentedRow<T extends string>({
|
|
516
|
-
label,
|
|
517
|
-
description,
|
|
518
|
-
value,
|
|
519
|
-
onChange,
|
|
520
|
-
options,
|
|
521
|
-
className,
|
|
522
|
-
style,
|
|
523
|
-
}: SegmentedRowProps<T>) {
|
|
524
|
-
return (
|
|
525
|
-
<div className={[ROW_CLASS, className].filter(Boolean).join(' ')} style={style}>
|
|
526
|
-
<RowText label={label} description={description} truncate={false} />
|
|
527
|
-
<Segmented value={value} onChange={onChange} options={options} ariaLabel={label} className="shrink-0" />
|
|
528
|
-
</div>
|
|
529
|
-
);
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
/** Props for {@link SliderRow}. */
|
|
533
|
-
export interface SliderRowProps {
|
|
534
|
-
/** The row's main text. It also names the slider. */
|
|
535
|
-
label: string;
|
|
536
|
-
/** Muted text under the label. It wraps. */
|
|
537
|
-
description?: string;
|
|
538
|
-
/** Current value. */
|
|
539
|
-
value: number;
|
|
540
|
-
/** Lowest value. */
|
|
541
|
-
min: number;
|
|
542
|
-
/** Highest value. */
|
|
543
|
-
max: number;
|
|
544
|
-
/** Increment between values. */
|
|
545
|
-
step: number;
|
|
546
|
-
/** Formats the value for the readout beside the slider. */
|
|
547
|
-
format: (v: number) => string;
|
|
548
|
-
/** Called with the new value while the slider moves. */
|
|
549
|
-
onChange: (v: number) => void;
|
|
550
|
-
/** Called when the slider is double-clicked, to restore the default value. */
|
|
551
|
-
onReset?: () => void;
|
|
552
|
-
/** Extra classes on the root element. */
|
|
553
|
-
className?: string;
|
|
554
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
555
|
-
style?: CSSProperties;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* Labelled range input with a value readout and a reset.
|
|
560
|
-
*
|
|
561
|
-
* @param props - Component props.
|
|
562
|
-
*/
|
|
563
|
-
export function SliderRow({
|
|
564
|
-
label,
|
|
565
|
-
description,
|
|
566
|
-
value,
|
|
567
|
-
min,
|
|
568
|
-
max,
|
|
569
|
-
step,
|
|
570
|
-
format,
|
|
571
|
-
onChange,
|
|
572
|
-
onReset,
|
|
573
|
-
className,
|
|
574
|
-
style,
|
|
575
|
-
}: SliderRowProps) {
|
|
576
|
-
return (
|
|
577
|
-
<div className={[ROW_CLASS, className].filter(Boolean).join(' ')} style={style}>
|
|
578
|
-
<RowText label={label} description={description} truncate={false} />
|
|
579
|
-
<input
|
|
580
|
-
type="range"
|
|
581
|
-
min={min}
|
|
582
|
-
max={max}
|
|
583
|
-
step={step}
|
|
584
|
-
value={value}
|
|
585
|
-
onChange={(e) => onChange(Number(e.target.value))}
|
|
586
|
-
onDoubleClick={onReset}
|
|
587
|
-
className="zg-range w-36 shrink-0"
|
|
588
|
-
aria-label={label}
|
|
589
|
-
/>
|
|
590
|
-
<span className="zg-meta w-12 text-right shrink-0">{format(value)}</span>
|
|
591
|
-
</div>
|
|
592
|
-
);
|
|
593
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties } from 'react';
|
|
2
|
-
|
|
3
|
-
/** Props for {@link Highlighted}. */
|
|
4
|
-
export interface HighlightedProps {
|
|
5
|
-
/** The full text to render. */
|
|
6
|
-
text: string;
|
|
7
|
-
/**
|
|
8
|
-
* UTF-16 offsets in `text` of the characters to highlight, as a string matcher reports
|
|
9
|
-
* them. An empty list renders `text` plain.
|
|
10
|
-
*/
|
|
11
|
-
indices: readonly number[];
|
|
12
|
-
/** Extra classes on the wrapping `span`. */
|
|
13
|
-
className?: string;
|
|
14
|
-
/** Inline styles on the root element, merged after the component's own. */
|
|
15
|
-
style?: CSSProperties;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* `text` with the characters at `indices` (a search match) in the accent. One
|
|
20
|
-
* inline box, so a flex or grid parent lays it out as one item, not one per run.
|
|
21
|
-
* Offsets are UTF-16 positions, and an emoji counts as matched when either of its units is.
|
|
22
|
-
*
|
|
23
|
-
* @param props - Component props.
|
|
24
|
-
*/
|
|
25
|
-
export function Highlighted({ text, indices, className = '', style }: HighlightedProps) {
|
|
26
|
-
if (indices.length === 0)
|
|
27
|
-
return (
|
|
28
|
-
<span className={className} style={style}>
|
|
29
|
-
{text}
|
|
30
|
-
</span>
|
|
31
|
-
);
|
|
32
|
-
const set = new Set(indices);
|
|
33
|
-
const out: React.ReactNode[] = [];
|
|
34
|
-
let run = '';
|
|
35
|
-
let inMatch = false;
|
|
36
|
-
const flush = (key: number) => {
|
|
37
|
-
if (!run) return;
|
|
38
|
-
out.push(
|
|
39
|
-
inMatch ? (
|
|
40
|
-
<mark key={key} className="bg-transparent text-[var(--zg-accent)] font-medium">
|
|
41
|
-
{run}
|
|
42
|
-
</mark>
|
|
43
|
-
) : (
|
|
44
|
-
run
|
|
45
|
-
),
|
|
46
|
-
);
|
|
47
|
-
run = '';
|
|
48
|
-
};
|
|
49
|
-
// `indices` are UTF-16 offsets (what string matchers produce). Walk whole
|
|
50
|
-
// code points so an emoji is never split into two lone surrogates; it is
|
|
51
|
-
// matched when either of its units is.
|
|
52
|
-
let i = 0;
|
|
53
|
-
for (const ch of text) {
|
|
54
|
-
const m = set.has(i) || (ch.length > 1 && set.has(i + 1));
|
|
55
|
-
if (m !== inMatch) {
|
|
56
|
-
flush(i);
|
|
57
|
-
inMatch = m;
|
|
58
|
-
}
|
|
59
|
-
run += ch;
|
|
60
|
-
i += ch.length;
|
|
61
|
-
}
|
|
62
|
-
flush(text.length);
|
|
63
|
-
return (
|
|
64
|
-
<span className={className} style={style}>
|
|
65
|
-
{out}
|
|
66
|
-
</span>
|
|
67
|
-
);
|
|
68
|
-
}
|