@agent-native/core 0.83.0 → 0.84.1
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 -2
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +34 -0
- package/corpus/core/README.md +2 -2
- package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/evals.mdx +34 -12
- package/corpus/core/docs/content/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/corpus/core/docs/content/template-chat.mdx +1 -1
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/engine/builtin.ts +1 -1
- package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
- package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
- package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
- package/corpus/core/src/agent/harness/translate.ts +3 -0
- package/corpus/core/src/agent/harness/types.ts +1 -0
- package/corpus/core/src/agent/model-config.ts +34 -13
- package/corpus/core/src/agent/production-agent.ts +87 -10
- package/corpus/core/src/agent/thread-data-builder.ts +29 -4
- package/corpus/core/src/agent/tool-call-journal.ts +109 -48
- package/corpus/core/src/agent/types.ts +6 -1
- package/corpus/core/src/cli/design-connect.ts +106 -0
- package/corpus/core/src/cli/gateway-helpers.ts +17 -0
- package/corpus/core/src/cli/recap.ts +0 -2
- package/corpus/core/src/cli/skills.ts +54 -16
- package/corpus/core/src/cli/workspace-dev.ts +29 -5
- package/corpus/core/src/client/AssistantChat.tsx +89 -42
- package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
- package/corpus/core/src/client/chat/message-components.tsx +49 -1
- package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
- package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
- package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
- package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
- package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
- package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
- package/corpus/core/src/client/guided-questions.tsx +21 -27
- package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
- package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
- package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
- package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
- package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
- package/corpus/core/src/client/useProductionAgent.ts +6 -2
- package/corpus/core/src/deploy/build.ts +1 -1
- package/corpus/core/src/eval/define-eval.ts +4 -1
- package/corpus/core/src/eval/report.ts +23 -8
- package/corpus/core/src/eval/runner.ts +41 -6
- package/corpus/core/src/eval/types.ts +11 -0
- package/corpus/core/src/observability/traces.ts +3 -3
- package/corpus/core/src/onboarding/default-steps.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
- package/corpus/core/src/server/core-routes-plugin.ts +7 -1
- package/corpus/core/src/server/open-route.ts +59 -40
- package/corpus/core/src/shared/reasoning-effort.ts +2 -0
- package/corpus/core/src/sharing/access.ts +22 -2
- package/corpus/core/src/sharing/registry.ts +18 -0
- package/corpus/core/src/styles/agent-native.css +104 -20
- package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
- package/corpus/templates/analytics/app/global.css +4 -0
- package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
- package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
- package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
- package/corpus/templates/calendar/AGENTS.md +4 -0
- package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
- package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/content/AGENTS.md +9 -2
- package/corpus/templates/content/actions/_database-row-batch.ts +230 -0
- package/corpus/templates/content/actions/_database-utils.ts +17 -9
- package/corpus/templates/content/actions/_notion-action-utils.ts +26 -0
- package/corpus/templates/content/actions/connect-notion-status.ts +13 -4
- package/corpus/templates/content/actions/create-and-link-notion-page.ts +23 -0
- package/corpus/templates/content/actions/delete-database-items.ts +55 -0
- package/corpus/templates/content/actions/delete-document.ts +4 -4
- package/corpus/templates/content/actions/disconnect-notion.ts +16 -0
- package/corpus/templates/content/actions/duplicate-database-item.ts +1 -1
- package/corpus/templates/content/actions/duplicate-database-items.ts +191 -0
- package/corpus/templates/content/actions/link-notion-page.ts +10 -7
- package/corpus/templates/content/actions/list-notion-links.ts +3 -4
- package/corpus/templates/content/actions/pull-notion-page.ts +7 -9
- package/corpus/templates/content/actions/push-notion-page.ts +7 -9
- package/corpus/templates/content/actions/refresh-notion-sync-status.ts +24 -0
- package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +23 -0
- package/corpus/templates/content/actions/search-notion-pages.ts +67 -0
- package/corpus/templates/content/actions/unlink-notion-page.ts +23 -0
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
- package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +27 -34
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +16 -13
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +10 -10
- package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
- package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +18 -9
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +27 -34
- package/corpus/templates/content/app/components/editor/database/navigation-state.ts +10 -4
- package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +32 -17
- package/corpus/templates/content/app/global.css +6 -5
- package/corpus/templates/content/app/hooks/use-content-database.ts +35 -0
- package/corpus/templates/content/app/hooks/use-notion.ts +108 -99
- package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
- package/corpus/templates/content/package.json +3 -0
- package/corpus/templates/content/parity/README.md +69 -0
- package/corpus/templates/content/parity/eval-scenarios.ts +118 -0
- package/corpus/templates/content/parity/exceptions.allowlist.ts +17 -0
- package/corpus/templates/content/parity/matrix.md +28 -0
- package/corpus/templates/content/parity/matrix.ts +606 -0
- package/corpus/templates/content/parity/matrix.types.ts +42 -0
- package/corpus/templates/content/parity/parity-evals.eval.ts +4 -0
- package/corpus/templates/content/parity/render-matrix.ts +90 -0
- package/corpus/templates/content/parity/scenario-to-eval.ts +57 -0
- package/corpus/templates/content/shared/api.ts +11 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
- package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
- package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
- package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
- package/corpus/templates/design/actions/navigate.ts +3 -12
- package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
- package/corpus/templates/design/actions/view-screen.ts +1 -1
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -14
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
- package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
- package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
- package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1038 -150
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
- package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
- package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1129 -155
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
- package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
- package/corpus/templates/design/app/components/design/types.ts +19 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
- package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
- package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
- package/corpus/templates/design/app/global.css +56 -0
- package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
- package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
- package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
- package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
- package/corpus/templates/design/app/i18n-data.ts +63 -188
- package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
- package/corpus/templates/design/app/pages/DesignEditor.tsx +1428 -384
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
- package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/design/app/pages/Index.tsx +49 -26
- package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
- package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
- package/corpus/templates/design/app/routes/examples.tsx +1 -7
- package/corpus/templates/design/app/routes/templates.tsx +7 -4
- package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +15 -4
- package/corpus/templates/design/server/db/index.ts +52 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/design/server/plugins/auth.ts +1 -0
- package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
- package/corpus/templates/design/shared/board-file.ts +380 -5
- package/corpus/templates/design/shared/board-objects.ts +2 -2
- package/corpus/templates/design/shared/code-layer.ts +50 -6
- package/corpus/templates/design/shared/motion-compiler.ts +27 -0
- package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
- package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
- package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
- package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
- package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
- package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
- package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/macros/app/routes/_index.tsx +5 -5
- package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
- package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
- package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
- package/corpus/templates/mail/app/global.css +3 -2
- package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
- package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
- package/corpus/templates/slides/app/global.css +10 -0
- package/corpus/templates/slides/app/pages/Index.tsx +55 -51
- package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
- package/dist/agent/engine/anthropic-engine.d.ts +2 -2
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +2 -2
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +1 -1
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/output-tokens.js +1 -1
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/harness/acp-adapter.d.ts +4 -1
- package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
- package/dist/agent/harness/acp-adapter.js +19 -2
- package/dist/agent/harness/acp-adapter.js.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.js +3 -0
- package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
- package/dist/agent/harness/translate.d.ts.map +1 -1
- package/dist/agent/harness/translate.js +3 -0
- package/dist/agent/harness/translate.js.map +1 -1
- package/dist/agent/harness/types.d.ts +1 -0
- package/dist/agent/harness/types.d.ts.map +1 -1
- package/dist/agent/harness/types.js.map +1 -1
- package/dist/agent/model-config.d.ts +21 -20
- package/dist/agent/model-config.d.ts.map +1 -1
- package/dist/agent/model-config.js +31 -13
- package/dist/agent/model-config.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +85 -10
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +27 -6
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/tool-call-journal.d.ts +11 -9
- package/dist/agent/tool-call-journal.d.ts.map +1 -1
- package/dist/agent/tool-call-journal.js +92 -40
- package/dist/agent/tool-call-journal.js.map +1 -1
- package/dist/agent/types.d.ts +5 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +84 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/gateway-helpers.d.ts +4 -0
- package/dist/cli/gateway-helpers.d.ts.map +1 -1
- package/dist/cli/gateway-helpers.js +9 -0
- package/dist/cli/gateway-helpers.js.map +1 -1
- package/dist/cli/recap.d.ts.map +1 -1
- package/dist/cli/recap.js +0 -2
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +54 -16
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +33 -6
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +72 -26
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +8 -1
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +7 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +37 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/repo-helpers.d.ts +1 -0
- package/dist/client/chat/repo-helpers.d.ts.map +1 -1
- package/dist/client/chat/repo-helpers.js +59 -0
- package/dist/client/chat/repo-helpers.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +4 -4
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/components/ApiKeySettings.js +8 -8
- package/dist/client/components/ApiKeySettings.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +24 -15
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js +11 -6
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +4 -3
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +6 -6
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +1 -1
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +1 -1
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.js +2 -2
- package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +23 -19
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +13 -10
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +2 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +8 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +6 -38
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts +2 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/eval/define-eval.d.ts.map +1 -1
- package/dist/eval/define-eval.js +2 -1
- package/dist/eval/define-eval.js.map +1 -1
- package/dist/eval/report.d.ts.map +1 -1
- package/dist/eval/report.js +19 -4
- package/dist/eval/report.js.map +1 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +38 -6
- package/dist/eval/runner.js.map +1 -1
- package/dist/eval/types.d.ts +11 -0
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/eval/types.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +5 -5
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js.map +1 -1
- package/dist/onboarding/default-steps.js +1 -1
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +3 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +134 -72
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +3 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +4 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/open-route.d.ts +9 -0
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +48 -38
- package/dist/server/open-route.js.map +1 -1
- package/dist/shared/reasoning-effort.js +3 -0
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +18 -2
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/registry.d.ts +10 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +104 -20
- package/dist/styles/rich-markdown-editor.css +11 -10
- package/docs/content/cloneable-saas.mdx +2 -2
- package/docs/content/evals.mdx +34 -12
- package/docs/content/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ar-SA/evals.mdx +7 -0
- package/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/docs/content/locales/de-DE/evals.mdx +8 -0
- package/docs/content/locales/de-DE/faq.mdx +1 -1
- package/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/docs/content/locales/es-ES/evals.mdx +8 -0
- package/docs/content/locales/es-ES/faq.mdx +1 -1
- package/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/fr-FR/evals.mdx +8 -0
- package/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/hi-IN/evals.mdx +8 -0
- package/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ja-JP/evals.mdx +7 -0
- package/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ko-KR/evals.mdx +7 -0
- package/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/pt-BR/evals.mdx +8 -0
- package/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-CN/evals.mdx +7 -0
- package/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-TW/evals.mdx +7 -0
- package/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/docs/content/template-chat.mdx +1 -1
- package/package.json +1 -1
- package/corpus/templates/content/server/routes/api/notion/disconnect.post.ts +0 -12
- package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
- package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
- package/corpus/templates/design/app/pages/Templates.tsx +0 -279
|
@@ -72,6 +72,10 @@ export interface AutoLayoutMatrixValue {
|
|
|
72
72
|
horizontal?: number;
|
|
73
73
|
vertical?: number;
|
|
74
74
|
};
|
|
75
|
+
mixedSize?: {
|
|
76
|
+
horizontal?: boolean;
|
|
77
|
+
vertical?: boolean;
|
|
78
|
+
};
|
|
75
79
|
childSizing: {
|
|
76
80
|
horizontal: AutoLayoutSizing;
|
|
77
81
|
vertical: AutoLayoutSizing;
|
|
@@ -184,6 +188,7 @@ export interface AutoLayoutMatrixProps {
|
|
|
184
188
|
availableChildSizing?: Partial<
|
|
185
189
|
Record<AutoLayoutSizingAxis, AutoLayoutSizing[]>
|
|
186
190
|
>;
|
|
191
|
+
showChildLayoutControls?: boolean;
|
|
187
192
|
labels?: Partial<AutoLayoutMatrixLabels>;
|
|
188
193
|
disabled?: boolean;
|
|
189
194
|
className?: string;
|
|
@@ -254,6 +259,7 @@ export function AutoLayoutMatrix({
|
|
|
254
259
|
onDisplayChange,
|
|
255
260
|
onChildSizeChange,
|
|
256
261
|
availableChildSizing,
|
|
262
|
+
showChildLayoutControls = true,
|
|
257
263
|
labels,
|
|
258
264
|
disabled = false,
|
|
259
265
|
className,
|
|
@@ -297,69 +303,71 @@ export function AutoLayoutMatrix({
|
|
|
297
303
|
<TooltipProvider delayDuration={250}>
|
|
298
304
|
<div className={cn("space-y-3", className)}>
|
|
299
305
|
{/* ── Flow ── */}
|
|
300
|
-
|
|
301
|
-
<
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
<
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
onClick={() => selectFlow("horizontal")}
|
|
328
|
-
>
|
|
329
|
-
<IconFlowHorizontal className="size-3.5" />
|
|
330
|
-
</FlowButton>
|
|
331
|
-
<FlowButton
|
|
332
|
-
label={"Grid" /* i18n-ignore design inspector label */}
|
|
333
|
-
active={activeFlow === "grid"}
|
|
334
|
-
disabled={disabled}
|
|
335
|
-
onClick={() => selectFlow("grid")}
|
|
336
|
-
>
|
|
337
|
-
<IconFlowGrid className="size-3.5" />
|
|
338
|
-
</FlowButton>
|
|
339
|
-
</div>
|
|
340
|
-
{/* Reset / reverse-flow button */}
|
|
341
|
-
<Tooltip>
|
|
342
|
-
<TooltipTrigger asChild>
|
|
343
|
-
<Button
|
|
344
|
-
type="button"
|
|
345
|
-
variant="ghost"
|
|
346
|
-
size="icon"
|
|
306
|
+
{showChildLayoutControls ? (
|
|
307
|
+
<div className="space-y-1.5">
|
|
308
|
+
<ControlLabel>
|
|
309
|
+
{"Flow" /* i18n-ignore design inspector label */}
|
|
310
|
+
</ControlLabel>
|
|
311
|
+
<div className="flex items-center gap-1.5">
|
|
312
|
+
{/* 4-segment flow bar: normal / vertical / horizontal / grid */}
|
|
313
|
+
<div className="flex h-7 flex-1 items-center gap-0.5 rounded-md bg-[var(--design-editor-control-bg)] p-0.5">
|
|
314
|
+
<FlowButton
|
|
315
|
+
label={"Normal flow" /* i18n-ignore design inspector label */}
|
|
316
|
+
active={activeFlow === "normal"}
|
|
317
|
+
disabled={disabled}
|
|
318
|
+
onClick={() => selectFlow("normal")}
|
|
319
|
+
>
|
|
320
|
+
<IconFlowNormal />
|
|
321
|
+
</FlowButton>
|
|
322
|
+
<FlowButton
|
|
323
|
+
label={copy.vertical}
|
|
324
|
+
active={activeFlow === "vertical"}
|
|
325
|
+
disabled={disabled}
|
|
326
|
+
onClick={() => selectFlow("vertical")}
|
|
327
|
+
>
|
|
328
|
+
<IconFlowVertical className="size-3.5" />
|
|
329
|
+
</FlowButton>
|
|
330
|
+
<FlowButton
|
|
331
|
+
label={copy.horizontal}
|
|
332
|
+
active={activeFlow === "horizontal"}
|
|
347
333
|
disabled={disabled}
|
|
348
|
-
aria-label={
|
|
349
|
-
"Reset auto layout flow" /* i18n-ignore inspector tooltip */
|
|
350
|
-
}
|
|
351
334
|
onClick={() => selectFlow("horizontal")}
|
|
352
|
-
className="size-7 shrink-0 rounded-md text-muted-foreground hover:bg-[var(--design-editor-control-bg)] hover:text-foreground"
|
|
353
335
|
>
|
|
354
|
-
<
|
|
355
|
-
</
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
336
|
+
<IconFlowHorizontal className="size-3.5" />
|
|
337
|
+
</FlowButton>
|
|
338
|
+
<FlowButton
|
|
339
|
+
label={"Grid" /* i18n-ignore design inspector label */}
|
|
340
|
+
active={activeFlow === "grid"}
|
|
341
|
+
disabled={disabled}
|
|
342
|
+
onClick={() => selectFlow("grid")}
|
|
343
|
+
>
|
|
344
|
+
<IconFlowGrid className="size-3.5" />
|
|
345
|
+
</FlowButton>
|
|
346
|
+
</div>
|
|
347
|
+
{/* Reset / reverse-flow button */}
|
|
348
|
+
<Tooltip>
|
|
349
|
+
<TooltipTrigger asChild>
|
|
350
|
+
<Button
|
|
351
|
+
type="button"
|
|
352
|
+
variant="ghost"
|
|
353
|
+
size="icon"
|
|
354
|
+
disabled={disabled}
|
|
355
|
+
aria-label={
|
|
356
|
+
"Reset auto layout flow" /* i18n-ignore inspector tooltip */
|
|
357
|
+
}
|
|
358
|
+
onClick={() => selectFlow("horizontal")}
|
|
359
|
+
className="size-7 shrink-0 rounded-md text-muted-foreground hover:bg-[var(--design-editor-control-bg)] hover:text-foreground"
|
|
360
|
+
>
|
|
361
|
+
<IconArrowBackUp className="size-4" />
|
|
362
|
+
</Button>
|
|
363
|
+
</TooltipTrigger>
|
|
364
|
+
<TooltipContent>
|
|
365
|
+
{"Reset auto layout flow" /* i18n-ignore inspector tooltip */}
|
|
366
|
+
</TooltipContent>
|
|
367
|
+
</Tooltip>
|
|
368
|
+
</div>
|
|
361
369
|
</div>
|
|
362
|
-
|
|
370
|
+
) : null}
|
|
363
371
|
|
|
364
372
|
{/* ── Resizing ── */}
|
|
365
373
|
<div className="space-y-1.5">
|
|
@@ -372,6 +380,7 @@ export function AutoLayoutMatrix({
|
|
|
372
380
|
sizingAxis="horizontal"
|
|
373
381
|
value={value.childSizing.horizontal}
|
|
374
382
|
resolvedSize={value.resolvedSize?.horizontal}
|
|
383
|
+
mixed={Boolean(value.mixedSize?.horizontal)}
|
|
375
384
|
minMax={value.childMinMax?.horizontal}
|
|
376
385
|
options={resolveSizingOptions(
|
|
377
386
|
availableChildSizing?.horizontal,
|
|
@@ -393,6 +402,7 @@ export function AutoLayoutMatrix({
|
|
|
393
402
|
sizingAxis="vertical"
|
|
394
403
|
value={value.childSizing.vertical}
|
|
395
404
|
resolvedSize={value.resolvedSize?.vertical}
|
|
405
|
+
mixed={Boolean(value.mixedSize?.vertical)}
|
|
396
406
|
minMax={value.childMinMax?.vertical}
|
|
397
407
|
options={resolveSizingOptions(
|
|
398
408
|
availableChildSizing?.vertical,
|
|
@@ -436,7 +446,7 @@ export function AutoLayoutMatrix({
|
|
|
436
446
|
</div>
|
|
437
447
|
</div>
|
|
438
448
|
|
|
439
|
-
{!isBlock ? (
|
|
449
|
+
{showChildLayoutControls && !isBlock ? (
|
|
440
450
|
<div className="grid grid-cols-[78px_1fr] items-start gap-3">
|
|
441
451
|
<div className="space-y-1.5">
|
|
442
452
|
<ControlLabel>
|
|
@@ -468,111 +478,115 @@ export function AutoLayoutMatrix({
|
|
|
468
478
|
) : null}
|
|
469
479
|
|
|
470
480
|
{/* ── Padding ── */}
|
|
471
|
-
|
|
472
|
-
<
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
<
|
|
477
|
-
icon={IconPaddingHorizontal}
|
|
478
|
-
ariaLabel={copy.paddingLeft + " / " + copy.paddingRight}
|
|
479
|
-
value={horizontalPaddingValue}
|
|
480
|
-
onChange={(next) =>
|
|
481
|
-
onPaddingChange({
|
|
482
|
-
top: value.padding.top,
|
|
483
|
-
bottom: value.padding.bottom,
|
|
484
|
-
left: next,
|
|
485
|
-
right: next,
|
|
486
|
-
})
|
|
487
|
-
}
|
|
488
|
-
disabled={disabled}
|
|
489
|
-
/>
|
|
490
|
-
<PaddingField
|
|
491
|
-
icon={IconPaddingVertical}
|
|
492
|
-
ariaLabel={copy.paddingTop + " / " + copy.paddingBottom}
|
|
493
|
-
value={verticalPaddingValue}
|
|
494
|
-
onChange={(next) =>
|
|
495
|
-
onPaddingChange({
|
|
496
|
-
top: next,
|
|
497
|
-
bottom: next,
|
|
498
|
-
left: value.padding.left,
|
|
499
|
-
right: value.padding.right,
|
|
500
|
-
})
|
|
501
|
-
}
|
|
502
|
-
disabled={disabled}
|
|
503
|
-
/>
|
|
504
|
-
<PaddingLinkButton
|
|
505
|
-
linked
|
|
506
|
-
disabled={disabled}
|
|
507
|
-
linkLabel={copy.linkPadding}
|
|
508
|
-
unlinkLabel={copy.unlinkPadding}
|
|
509
|
-
onToggle={() => onPaddingLinkedChange(false)}
|
|
510
|
-
/>
|
|
511
|
-
</div>
|
|
512
|
-
) : (
|
|
513
|
-
/* Unlinked state: expand to 4 separate T / R / B / L fields */
|
|
514
|
-
<div className="grid grid-cols-[1fr_1fr_auto] items-center gap-1.5">
|
|
515
|
-
<div className="col-span-2 grid grid-cols-2 gap-1.5">
|
|
481
|
+
{showChildLayoutControls ? (
|
|
482
|
+
<div className="space-y-1.5">
|
|
483
|
+
<ControlLabel>{copy.padding}</ControlLabel>
|
|
484
|
+
{value.paddingLinked ? (
|
|
485
|
+
/* Default linked state: 2 compact fields + link toggle */
|
|
486
|
+
<div className="grid grid-cols-[1fr_1fr_auto] items-center gap-1.5">
|
|
516
487
|
<PaddingField
|
|
517
|
-
icon={
|
|
518
|
-
ariaLabel={copy.
|
|
519
|
-
value={
|
|
488
|
+
icon={IconPaddingHorizontal}
|
|
489
|
+
ariaLabel={copy.paddingLeft + " / " + copy.paddingRight}
|
|
490
|
+
value={horizontalPaddingValue}
|
|
520
491
|
onChange={(next) =>
|
|
521
|
-
onPaddingChange({
|
|
492
|
+
onPaddingChange({
|
|
493
|
+
top: value.padding.top,
|
|
494
|
+
bottom: value.padding.bottom,
|
|
495
|
+
left: next,
|
|
496
|
+
right: next,
|
|
497
|
+
})
|
|
522
498
|
}
|
|
523
499
|
disabled={disabled}
|
|
524
500
|
/>
|
|
525
501
|
<PaddingField
|
|
526
|
-
icon={
|
|
527
|
-
ariaLabel={copy.
|
|
528
|
-
value={
|
|
502
|
+
icon={IconPaddingVertical}
|
|
503
|
+
ariaLabel={copy.paddingTop + " / " + copy.paddingBottom}
|
|
504
|
+
value={verticalPaddingValue}
|
|
529
505
|
onChange={(next) =>
|
|
530
|
-
onPaddingChange({
|
|
506
|
+
onPaddingChange({
|
|
507
|
+
top: next,
|
|
508
|
+
bottom: next,
|
|
509
|
+
left: value.padding.left,
|
|
510
|
+
right: value.padding.right,
|
|
511
|
+
})
|
|
531
512
|
}
|
|
532
513
|
disabled={disabled}
|
|
533
514
|
/>
|
|
534
|
-
<
|
|
535
|
-
|
|
536
|
-
ariaLabel={copy.paddingBottom}
|
|
537
|
-
value={value.padding.bottom}
|
|
538
|
-
onChange={(next) =>
|
|
539
|
-
onPaddingChange({ ...value.padding, bottom: next })
|
|
540
|
-
}
|
|
515
|
+
<PaddingLinkButton
|
|
516
|
+
linked
|
|
541
517
|
disabled={disabled}
|
|
518
|
+
linkLabel={copy.linkPadding}
|
|
519
|
+
unlinkLabel={copy.unlinkPadding}
|
|
520
|
+
onToggle={() => onPaddingLinkedChange(false)}
|
|
542
521
|
/>
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
522
|
+
</div>
|
|
523
|
+
) : (
|
|
524
|
+
/* Unlinked state: expand to 4 separate T / R / B / L fields */
|
|
525
|
+
<div className="grid grid-cols-[1fr_1fr_auto] items-center gap-1.5">
|
|
526
|
+
<div className="col-span-2 grid grid-cols-2 gap-1.5">
|
|
527
|
+
<PaddingField
|
|
528
|
+
icon={IconPaddingTopMini}
|
|
529
|
+
ariaLabel={copy.paddingTop}
|
|
530
|
+
value={value.padding.top}
|
|
531
|
+
onChange={(next) =>
|
|
532
|
+
onPaddingChange({ ...value.padding, top: next })
|
|
533
|
+
}
|
|
534
|
+
disabled={disabled}
|
|
535
|
+
/>
|
|
536
|
+
<PaddingField
|
|
537
|
+
icon={IconPaddingRightMini}
|
|
538
|
+
ariaLabel={copy.paddingRight}
|
|
539
|
+
value={value.padding.right}
|
|
540
|
+
onChange={(next) =>
|
|
541
|
+
onPaddingChange({ ...value.padding, right: next })
|
|
542
|
+
}
|
|
543
|
+
disabled={disabled}
|
|
544
|
+
/>
|
|
545
|
+
<PaddingField
|
|
546
|
+
icon={IconPaddingBottomMini}
|
|
547
|
+
ariaLabel={copy.paddingBottom}
|
|
548
|
+
value={value.padding.bottom}
|
|
549
|
+
onChange={(next) =>
|
|
550
|
+
onPaddingChange({ ...value.padding, bottom: next })
|
|
551
|
+
}
|
|
552
|
+
disabled={disabled}
|
|
553
|
+
/>
|
|
554
|
+
<PaddingField
|
|
555
|
+
icon={IconPaddingLeftMini}
|
|
556
|
+
ariaLabel={copy.paddingLeft}
|
|
557
|
+
value={value.padding.left}
|
|
558
|
+
onChange={(next) =>
|
|
559
|
+
onPaddingChange({ ...value.padding, left: next })
|
|
560
|
+
}
|
|
561
|
+
disabled={disabled}
|
|
562
|
+
/>
|
|
563
|
+
</div>
|
|
564
|
+
<PaddingLinkButton
|
|
565
|
+
linked={false}
|
|
550
566
|
disabled={disabled}
|
|
567
|
+
linkLabel={copy.linkPadding}
|
|
568
|
+
unlinkLabel={copy.unlinkPadding}
|
|
569
|
+
onToggle={() => onPaddingLinkedChange(true)}
|
|
551
570
|
/>
|
|
552
571
|
</div>
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
linkLabel={copy.linkPadding}
|
|
557
|
-
unlinkLabel={copy.unlinkPadding}
|
|
558
|
-
onToggle={() => onPaddingLinkedChange(true)}
|
|
559
|
-
/>
|
|
560
|
-
</div>
|
|
561
|
-
)}
|
|
562
|
-
</div>
|
|
572
|
+
)}
|
|
573
|
+
</div>
|
|
574
|
+
) : null}
|
|
563
575
|
|
|
564
576
|
{/* ── Clip content ── */}
|
|
565
|
-
|
|
566
|
-
<
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
577
|
+
{showChildLayoutControls ? (
|
|
578
|
+
<label className="flex h-6 cursor-pointer items-center gap-2 !text-[11px] text-foreground">
|
|
579
|
+
<Checkbox
|
|
580
|
+
checked={Boolean(value.clipContent)}
|
|
581
|
+
disabled={disabled}
|
|
582
|
+
onCheckedChange={(checked) =>
|
|
583
|
+
onClipContentChange?.(checked === true)
|
|
584
|
+
}
|
|
585
|
+
className="size-3.5 rounded-[3px]"
|
|
586
|
+
/>
|
|
587
|
+
<span>{copy.clipContent}</span>
|
|
588
|
+
</label>
|
|
589
|
+
) : null}
|
|
576
590
|
</div>
|
|
577
591
|
</TooltipProvider>
|
|
578
592
|
);
|
|
@@ -804,7 +818,7 @@ function AlignmentBars({
|
|
|
804
818
|
/** Small uppercase muted section label, 11px. */
|
|
805
819
|
function ControlLabel({ children }: { children: ReactNode }) {
|
|
806
820
|
return (
|
|
807
|
-
<span className="block text-[11px] font-medium text-muted-foreground">
|
|
821
|
+
<span className="block !text-[11px] font-medium text-muted-foreground">
|
|
808
822
|
{children}
|
|
809
823
|
</span>
|
|
810
824
|
);
|
|
@@ -898,8 +912,8 @@ function GapField({
|
|
|
898
912
|
precision={1}
|
|
899
913
|
disabled={disabled}
|
|
900
914
|
className="min-w-0 flex-1 gap-0"
|
|
901
|
-
labelClassName="h-7 w-6 justify-center gap-0 rounded-l-md text-muted-foreground [&>span]:hidden"
|
|
902
|
-
inputClassName="h-6 border-0 bg-transparent px-1 text-[11px] shadow-none focus-visible:ring-0"
|
|
915
|
+
labelClassName="h-7 w-6 justify-center gap-0 rounded-l-md rounded-r-none text-muted-foreground [&>span]:hidden"
|
|
916
|
+
inputClassName="h-6 border-0 bg-transparent px-1 !text-[11px] shadow-none focus-visible:ring-0"
|
|
903
917
|
/>
|
|
904
918
|
{onDistribute != null ? (
|
|
905
919
|
<DropdownMenu>
|
|
@@ -1013,8 +1027,8 @@ function PaddingField({
|
|
|
1013
1027
|
precision={1}
|
|
1014
1028
|
disabled={disabled}
|
|
1015
1029
|
className="min-w-0 flex-1 gap-0"
|
|
1016
|
-
labelClassName="h-7 w-6 justify-center gap-0 rounded-l-md text-muted-foreground [&>span]:hidden"
|
|
1017
|
-
inputClassName="h-6 border-0 bg-transparent px-1 text-[11px] shadow-none focus-visible:ring-0"
|
|
1030
|
+
labelClassName="h-7 w-6 justify-center gap-0 rounded-l-md rounded-r-none text-muted-foreground [&>span]:hidden"
|
|
1031
|
+
inputClassName="h-6 border-0 bg-transparent px-1 !text-[11px] shadow-none focus-visible:ring-0"
|
|
1018
1032
|
/>
|
|
1019
1033
|
</div>
|
|
1020
1034
|
);
|
|
@@ -1071,6 +1085,7 @@ export interface SizingFieldProps {
|
|
|
1071
1085
|
sizingAxis: AutoLayoutSizingAxis;
|
|
1072
1086
|
value: AutoLayoutSizing;
|
|
1073
1087
|
resolvedSize?: number;
|
|
1088
|
+
mixed?: boolean;
|
|
1074
1089
|
/** Currently-set min/max constraints (px). */
|
|
1075
1090
|
minMax?: SizingFieldMinMax;
|
|
1076
1091
|
options?: AutoLayoutSizing[];
|
|
@@ -1109,6 +1124,7 @@ export function SizingField({
|
|
|
1109
1124
|
sizingAxis,
|
|
1110
1125
|
value,
|
|
1111
1126
|
resolvedSize,
|
|
1127
|
+
mixed = false,
|
|
1112
1128
|
minMax,
|
|
1113
1129
|
options = SIZING_OPTIONS,
|
|
1114
1130
|
labels: labelOverrides,
|
|
@@ -1225,7 +1241,7 @@ export function SizingField({
|
|
|
1225
1241
|
<div
|
|
1226
1242
|
className={cn(
|
|
1227
1243
|
"flex h-7 w-full items-center overflow-hidden rounded-md",
|
|
1228
|
-
"bg-[var(--design-editor-control-bg)] text-[11px]",
|
|
1244
|
+
"bg-[var(--design-editor-control-bg)] !text-[11px]",
|
|
1229
1245
|
disabled && "pointer-events-none opacity-40",
|
|
1230
1246
|
)}
|
|
1231
1247
|
>
|
|
@@ -1235,16 +1251,17 @@ export function SizingField({
|
|
|
1235
1251
|
ariaLabel={`${axis} size in pixels`}
|
|
1236
1252
|
tooltipLabel={`${axis} size`}
|
|
1237
1253
|
icon={null}
|
|
1238
|
-
value={Math.round(resolvedSize ?? 0)}
|
|
1254
|
+
value={mixed ? 0 : Math.round(resolvedSize ?? 0)}
|
|
1239
1255
|
onChange={(next) => onSizeChange!(Math.max(0, Math.round(next)))}
|
|
1256
|
+
mixed={mixed}
|
|
1240
1257
|
unit="px"
|
|
1241
1258
|
min={0}
|
|
1242
1259
|
step={1}
|
|
1243
1260
|
precision={0}
|
|
1244
1261
|
disabled={disabled}
|
|
1245
1262
|
className="min-w-0 flex-1 gap-0"
|
|
1246
|
-
labelClassName="h-7 w-5 justify-center gap-0 rounded-l-md px-0 text-muted-foreground"
|
|
1247
|
-
inputClassName="h-6 border-0 bg-transparent px-1 text-[11px] shadow-none focus-visible:ring-0"
|
|
1263
|
+
labelClassName="h-7 w-5 justify-center gap-0 rounded-l-md rounded-r-none px-0 text-muted-foreground"
|
|
1264
|
+
inputClassName="h-6 border-0 bg-transparent px-1 !text-[11px] shadow-none focus-visible:ring-0"
|
|
1248
1265
|
/>
|
|
1249
1266
|
{/* Caret opens the mode picker */}
|
|
1250
1267
|
<Tooltip>
|
|
@@ -1282,11 +1299,11 @@ export function SizingField({
|
|
|
1282
1299
|
<DropdownMenuTrigger asChild>
|
|
1283
1300
|
<button
|
|
1284
1301
|
type="button"
|
|
1285
|
-
aria-label={`${axis} ${Math.round(resolvedSize ?? 0)} ${labels[value]}`}
|
|
1302
|
+
aria-label={`${axis} ${mixed ? "Mixed" : Math.round(resolvedSize ?? 0)} ${labels[value]}`}
|
|
1286
1303
|
disabled={disabled}
|
|
1287
1304
|
className={cn(
|
|
1288
1305
|
"flex h-7 w-full items-center gap-1 overflow-hidden rounded-md px-1.5",
|
|
1289
|
-
"bg-[var(--design-editor-control-bg)] text-[11px]",
|
|
1306
|
+
"bg-[var(--design-editor-control-bg)] !text-[11px]",
|
|
1290
1307
|
"hover:bg-[var(--design-editor-panel-raised-bg)]",
|
|
1291
1308
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
1292
1309
|
"focus:outline-none focus-visible:ring-1 focus-visible:ring-[var(--design-editor-accent-color,hsl(var(--primary)))]",
|
|
@@ -1295,8 +1312,13 @@ export function SizingField({
|
|
|
1295
1312
|
{/* Axis letter */}
|
|
1296
1313
|
<span className="shrink-0 text-muted-foreground">{axis}</span>
|
|
1297
1314
|
{/* Resolved size */}
|
|
1298
|
-
<span
|
|
1299
|
-
{
|
|
1315
|
+
<span
|
|
1316
|
+
className={cn(
|
|
1317
|
+
"min-w-0 flex-1 truncate text-left tabular-nums",
|
|
1318
|
+
mixed ? "text-muted-foreground" : "text-foreground",
|
|
1319
|
+
)}
|
|
1320
|
+
>
|
|
1321
|
+
{mixed ? "Mixed" : Math.round(resolvedSize ?? 0)}
|
|
1300
1322
|
</span>
|
|
1301
1323
|
{/* Mode word (Hug/Fill only) */}
|
|
1302
1324
|
{showWord ? (
|
|
@@ -1412,7 +1434,7 @@ function ConstraintSubRow({
|
|
|
1412
1434
|
disabled={disabled}
|
|
1413
1435
|
className="min-w-0 flex-1 gap-0"
|
|
1414
1436
|
labelClassName="hidden"
|
|
1415
|
-
inputClassName="h-5 border-0 bg-transparent px-1 text-[11px] shadow-none focus-visible:ring-0"
|
|
1437
|
+
inputClassName="h-5 border-0 bg-transparent px-1 !text-[11px] shadow-none focus-visible:ring-0"
|
|
1416
1438
|
/>
|
|
1417
1439
|
<Tooltip>
|
|
1418
1440
|
<TooltipTrigger asChild>
|