@agent-native/core 0.90.1 → 0.90.2
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/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +14 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/AgentPanel.tsx +1 -1
- package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +11 -6
- package/corpus/core/src/client/use-action.ts +39 -2
- package/corpus/core/src/client/use-db-sync.ts +44 -18
- package/corpus/core/src/db/create-get-db.ts +32 -2
- package/corpus/core/src/server/framework-request-handler.ts +52 -4
- package/corpus/templates/assets/.agents/skills/asset-generation/SKILL.md +5 -0
- package/corpus/templates/assets/.agents/skills/logo-composite/SKILL.md +34 -6
- package/corpus/templates/assets/AGENTS.md +23 -4
- package/corpus/templates/assets/actions/_generation-preset-settings.ts +48 -0
- package/corpus/templates/assets/actions/_helpers.ts +8 -1
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +64 -0
- package/corpus/templates/assets/actions/create-generation-preset.ts +11 -3
- package/corpus/templates/assets/actions/generate-image-batch.ts +7 -2
- package/corpus/templates/assets/actions/generate-image.ts +342 -25
- package/corpus/templates/assets/actions/get-library.ts +4 -3
- package/corpus/templates/assets/actions/navigate.ts +2 -1
- package/corpus/templates/assets/actions/refresh-generation-run.ts +5 -1
- package/corpus/templates/assets/actions/update-asset.ts +1 -0
- package/corpus/templates/assets/actions/update-generation-preset.ts +8 -1
- package/corpus/templates/assets/actions/view-screen.ts +8 -1
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -1
- package/corpus/templates/assets/app/hooks/use-image-model-menu.ts +1 -0
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +11 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +64 -0
- package/corpus/templates/assets/app/i18n-data.ts +650 -0
- package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +44 -33
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +1474 -0
- package/corpus/templates/assets/app/routes/library.tsx +43 -1
- package/corpus/templates/assets/server/lib/generation.ts +366 -44
- package/corpus/templates/assets/server/lib/image-processing.ts +252 -0
- package/corpus/templates/assets/server/lib/preset-skeleton.ts +137 -0
- package/corpus/templates/assets/shared/api.ts +47 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +7 -2
- package/corpus/templates/clips/app/components/library/sort-menu.tsx +1 -1
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +114 -33
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +27 -1
- package/corpus/templates/clips/app/routes/record.tsx +157 -68
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +5 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +20 -3
- package/corpus/templates/clips/shared/finalize-recovery.ts +23 -3
- package/corpus/templates/content/AGENTS.md +52 -52
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +188 -8
- package/corpus/templates/content/actions/_builder-docs-client.ts +41 -3
- package/corpus/templates/content/actions/_database-source-utils.ts +998 -160
- package/corpus/templates/content/actions/_database-utils.ts +44 -4
- package/corpus/templates/content/actions/_notion-action-utils.ts +6 -2
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +23 -1
- package/corpus/templates/content/actions/attach-content-database-source.ts +85 -12
- package/corpus/templates/content/actions/change-content-database-source-role.ts +9 -1
- package/corpus/templates/content/actions/delete-content-database.ts +1 -0
- package/corpus/templates/content/actions/get-document.ts +11 -2
- package/corpus/templates/content/actions/list-content-databases.ts +57 -9
- package/corpus/templates/content/actions/prepare-builder-source-review.ts +23 -6
- package/corpus/templates/content/actions/refresh-content-database-source.ts +26 -3
- package/corpus/templates/content/actions/restore-content-database.ts +1 -0
- package/corpus/templates/content/actions/update-document.ts +43 -0
- package/corpus/templates/content/app/components/editor/BuilderBodySyncingNotice.tsx +21 -0
- package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +0 -1
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +70 -28
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +69 -17
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +4 -4
- package/corpus/templates/content/app/components/editor/body-hydration.ts +112 -0
- package/corpus/templates/content/app/components/editor/builder-body-hydration-pump.ts +52 -0
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +9076 -2876
- package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +41 -1
- package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +36 -11
- package/corpus/templates/content/app/components/editor/previewDocumentSaveController.ts +21 -1
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +11 -1
- package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +11 -8
- package/corpus/templates/content/app/global.css +41 -0
- package/corpus/templates/content/app/hooks/use-content-database.ts +346 -42
- package/corpus/templates/content/app/hooks/use-db-sync.ts +9 -0
- package/corpus/templates/content/app/hooks/use-documents.ts +47 -0
- package/corpus/templates/content/app/hooks/use-notion.ts +12 -10
- package/corpus/templates/content/app/i18n/zh-TW.ts +35 -0
- package/corpus/templates/content/app/i18n-data.ts +355 -0
- package/corpus/templates/content/app/root.tsx +22 -0
- package/corpus/templates/content/changelog/2026-07-01-builder-database-sources-keep-loading-rows-in-the-background.md +6 -0
- package/corpus/templates/content/changelog/2026-07-01-builder-source-attach-starts-with-usable-rows.md +6 -0
- package/corpus/templates/content/changelog/2026-07-01-builder-source-attachment-now-stays-connected-after-large.md +6 -0
- package/corpus/templates/content/changelog/2026-07-01-builder-source-refreshes-now-show-progress-for-large-docs-blog.md +6 -0
- package/corpus/templates/content/changelog/2026-07-01-database-pages-now-delete-to-trash-without-route-errors.md +6 -0
- package/corpus/templates/content/changelog/2026-07-02-builder-source-refreshes-recover-from-stalled-background-row.md +6 -0
- package/corpus/templates/content/changelog/2026-07-02-builder-sourced-rows-open-with-sync-protection.md +6 -0
- package/corpus/templates/content/changelog/2026-07-02-database-rows-and-pages-open-faster-from-recently-loaded-dat.md +6 -0
- package/corpus/templates/content/changelog/2026-07-02-preview-panels-close-reliably-narrow-sidebar-row-actions-sta.md +6 -0
- package/corpus/templates/content/changelog/2026-07-06-builder-sync-progress-no-longer-shows-continue.md +6 -0
- package/corpus/templates/content/shared/api.ts +13 -0
- package/corpus/templates/content/shared/builder-mdx.ts +16 -3
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +23 -13
- package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +98 -0
- package/corpus/templates/design/.agents/skills/shader-fills/SKILL.md +162 -0
- package/corpus/templates/design/AGENTS.md +9 -2
- package/corpus/templates/design/actions/add-breakpoint.ts +6 -3
- package/corpus/templates/design/actions/apply-a11y-fix.ts +57 -37
- package/corpus/templates/design/actions/apply-component-prop-edit.ts +41 -20
- package/corpus/templates/design/actions/apply-motion-edit.ts +251 -38
- package/corpus/templates/design/actions/apply-shader-fill.ts +90 -66
- package/corpus/templates/design/actions/apply-visual-edit.ts +282 -55
- package/corpus/templates/design/actions/create-component.ts +29 -60
- package/corpus/templates/design/actions/create-file.ts +9 -2
- package/corpus/templates/design/actions/duplicate-design.ts +31 -2
- package/corpus/templates/design/actions/edit-design.ts +36 -38
- package/corpus/templates/design/actions/generate-design-title.ts +87 -0
- package/corpus/templates/design/actions/generate-design.ts +53 -18
- package/corpus/templates/design/actions/generate-screens.ts +108 -4
- package/corpus/templates/design/actions/get-motion-timeline.ts +35 -7
- package/corpus/templates/design/actions/insert-asset.ts +34 -29
- package/corpus/templates/design/actions/insert-design-native-asset.ts +129 -32
- package/corpus/templates/design/actions/insert-figma-library-asset.ts +35 -30
- package/corpus/templates/design/actions/present-design-variants.ts +7 -2
- package/corpus/templates/design/actions/remove-motion-timeline.ts +31 -36
- package/corpus/templates/design/actions/update-file.ts +190 -75
- package/corpus/templates/design/app/components/design/BreakpointBar.tsx +403 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +469 -222
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +708 -53
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +83 -3
- package/corpus/templates/design/app/components/design/EditPanel.tsx +1091 -6948
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +419 -85
- package/corpus/templates/design/app/components/design/MotionDock.tsx +1124 -103
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2610 -1398
- package/corpus/templates/design/app/components/design/ReadOnlyDesignBanner.tsx +22 -0
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +2182 -235
- package/corpus/templates/design/app/components/design/bridge/motion-preview.bridge.ts +187 -11
- package/corpus/templates/design/app/components/design/bridge/shader-fill-preview.bridge.ts +376 -1
- package/corpus/templates/design/app/components/design/bridge/shader-runtime.bridge.ts +746 -0
- package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +17 -0
- package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +1 -1
- package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +1 -3
- package/corpus/templates/design/app/components/design/code-workbench/quickinput/QuickInput.tsx +1 -1
- package/corpus/templates/design/app/components/design/edit-panel/appearance-properties.tsx +518 -0
- package/corpus/templates/design/app/components/design/edit-panel/code-inspect-helpers.tsx +562 -0
- package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +763 -0
- package/corpus/templates/design/app/components/design/edit-panel/document-colors.ts +94 -0
- package/corpus/templates/design/app/components/design/edit-panel/effects-properties.tsx +780 -0
- package/corpus/templates/design/app/components/design/edit-panel/element-classification.ts +446 -0
- package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +79 -0
- package/corpus/templates/design/app/components/design/edit-panel/field-primitives.tsx +315 -0
- package/corpus/templates/design/app/components/design/edit-panel/fill-gradient-helpers.ts +344 -0
- package/corpus/templates/design/app/components/design/edit-panel/fill-properties.tsx +594 -0
- package/corpus/templates/design/app/components/design/edit-panel/frame-presets-panel.tsx +119 -0
- package/corpus/templates/design/app/components/design/edit-panel/inspector-controls.tsx +248 -0
- package/corpus/templates/design/app/components/design/edit-panel/interaction-state-helpers.ts +45 -0
- package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +693 -0
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +724 -0
- package/corpus/templates/design/app/components/design/edit-panel/position-helpers.ts +207 -0
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +628 -0
- package/corpus/templates/design/app/components/design/edit-panel/selection-helpers.ts +91 -0
- package/corpus/templates/design/app/components/design/edit-panel/stroke-properties.tsx +649 -0
- package/corpus/templates/design/app/components/design/edit-panel/style-change-types.ts +118 -0
- package/corpus/templates/design/app/components/design/edit-panel/style-options.ts +88 -0
- package/corpus/templates/design/app/components/design/edit-panel/transform-helpers.ts +100 -0
- package/corpus/templates/design/app/components/design/edit-panel/typography-helpers.ts +117 -0
- package/corpus/templates/design/app/components/design/edit-panel/typography-properties.tsx +501 -0
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +91 -40
- package/corpus/templates/design/app/components/design/inspector/BreakpointOverrideIndicator.tsx +82 -0
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +189 -87
- package/corpus/templates/design/app/components/design/inspector/GlslShaderPanel.tsx +1097 -0
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +44 -0
- package/corpus/templates/design/app/components/design/inspector/InteractionStatePanel.tsx +258 -0
- package/corpus/templates/design/app/components/design/inspector/MotionKeyframeDiamond.tsx +144 -0
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +99 -9
- package/corpus/templates/design/app/components/design/inspector/frame-size-presets.ts +116 -0
- package/corpus/templates/design/app/components/design/inspector/index.ts +26 -0
- package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +29 -0
- package/corpus/templates/design/app/components/design/multi-screen/alt-hover-measurement.ts +171 -0
- package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +220 -0
- package/corpus/templates/design/app/components/design/multi-screen/chrome-transitions.ts +35 -0
- package/corpus/templates/design/app/components/design/multi-screen/cross-screen-drop.ts +134 -0
- package/corpus/templates/design/app/components/design/multi-screen/culling.ts +185 -0
- package/corpus/templates/design/app/components/design/multi-screen/gradient-overlay-geometry.ts +120 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +892 -0
- package/corpus/templates/design/app/components/design/multi-screen/vector-edit-geometry.ts +21 -0
- package/corpus/templates/design/app/components/design/types.ts +15 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +109 -5
- package/corpus/templates/design/app/global.css +8 -8
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +259 -2
- package/corpus/templates/design/app/i18n/zh-TW.ts +163 -9
- package/corpus/templates/design/app/i18n-breakpoints.ts +205 -0
- package/corpus/templates/design/app/i18n-data.ts +1664 -152
- package/corpus/templates/design/app/i18n-motion.ts +563 -0
- package/corpus/templates/design/app/lib/design-import.ts +73 -0
- package/corpus/templates/design/app/pages/Index.tsx +41 -22
- package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +1 -1
- package/corpus/templates/design/changelog/2026-06-30-design-now-has-a-figma-style-left-rail-for-file-agent-assets.md +1 -1
- package/corpus/templates/design/changelog/2026-06-30-design-tools-now-use-a-quieter-figma-style-list-layout.md +1 -1
- package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +1 -1
- package/corpus/templates/design/changelog/2026-07-03-canvas-interactions-now-match-figma-rotation-aware-resizing-.md +1 -1
- package/corpus/templates/design/changelog/2026-07-03-layers-panel-matches-figma-top-layer-on-top-drag-with-auto-s.md +1 -1
- package/corpus/templates/design/changelog/2026-07-05-designs-get-ai-generated-names-from-your-prompt.md +6 -0
- package/corpus/templates/design/changelog/2026-07-05-local-code-screens-keep-their-connection-when-duplicated-and.md +6 -0
- package/corpus/templates/design/changelog/2026-07-05-press-a-to-draw-screens-on-the-canvas-inside-a-screen-it-dr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-3d-rotation-and-perspective-controls-on-every-element.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-ai-generated-and-duplicated-screens-now-get-their-editor-sel.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-applying-shaders-and-fills-in-quick-succession-can-no-longer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-breakpoint-frames-in-the-overview-now-support-click-to-selec.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-breakpoint-segments-in-the-inspector-now-show-a-device-icon-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-breakpoint-targeting-now-lives-in-one-compact-control-in-the.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-canvas-edits-can-no-longer-be-overwritten-by-stale-collabora.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-canvas-edits-inside-screens-save-reliably-again.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-cleaner-inspector-removed-the-ask-ai-box-from-the-design-tab.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-clicking-empty-canvas-space-now-deselects-an-element-inside-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-dragging-an-element-onto-a-rectangle-now-nests-it-inside-wit.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-dragging-screens-and-objects-on-the-canvas-is-now-much-smoot.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-drawing-a-shape-or-text-on-the-canvas-no-longer-flashes-away.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-dropping-an-element-between-two-others-inside-a-screen-now-s.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-duplicating-a-screen-now-places-the-copy-exactly-where-you-d.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-edit-gradients-directly-on-elements-inside-screens-scale-str.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-edits-from-collaborators-and-the-agent-now-update-the-canvas.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-a-bug-where-most-style-position-and-text-edits-briefly.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-a-confusing-raw-error-message-when-a-file-upload-fails.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-a-rare-case-where-an-edit-could-be-silently-overwritte.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-inserted-assets-sometimes-disappearing-reappearing-or-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-inspector-value-scrubbing-producing-erratic-numbers-an.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-padding-gap-and-min-max-size-scrubbing-not-updating-th.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-text-stroke-color-turning-black-and-glyphs-disappearin.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-the-collapsed-effects-and-stroke-inspector-sections-sh.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-the-new-design-dialog-closing-unexpectedly-when-using-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-fixed-the-typography-section-missing-when-selecting-text-nes.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-full-view-no-longer-flashes-back-to-the-overview-on-entry-no.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-keyframe-animation-timeline-per-property-keyframes-easing-cu.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-moving-restyling-and-scrubbing-values-on-elements-in-ai-gene.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-padding-and-corner-radius-value-scrubbing-now-snaps-to-whole.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-padding-handles-now-only-resize-on-the-handle-line-itself-sh.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-preview-and-edit-hover-focus-and-pressed-states-with-real-cs.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-promoting-an-element-to-a-component-now-works-correctly-for-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-reduced-url-history-churn-and-selection-overlay-flicker-whil.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-removed-the-decorative-dot-before-screen-names-in-the-overvi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-responsive-breakpoints-edit-at-any-width-with-cascading-over.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-screen-labels-no-longer-turn-blue-when-you-hover-inside-the-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-scrolling-a-screen-with-an-element-selected-stays-smooth-on-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-selecting-multiple-elements-and-dragging-now-moves-the-whole.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-selection-borders-handles-and-value-readouts-now-stay-the-sa.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-selection-handles-and-editing-chrome-now-stay-a-constant-siz.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-shader-fills-and-effects-ai-authored-or-preset-glsl-shaders-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-text-drawn-on-the-canvas-now-defaults-to-white-and-inter-in-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-text-dropped-into-a-shape-now-stays-readable-instead-of-disa.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-the-add-tweak-controls-prompt-no-longer-jumps-to-the-corner-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-the-padding-value-readout-now-stays-visible-while-you-hover-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-the-selected-element-attachment-now-clears-from-the-chat-com.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-the-zoom-menu-is-more-compact-with-tight-rows-and-right-alig.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-undo-and-redo-no-longer-flash-the-screen-changes-now-apply-i.md +6 -0
- package/corpus/templates/design/changelog/2026-07-06-zoom-presets-like-zoom-to-50-now-stay-on-the-focused-screen-.md +6 -0
- package/corpus/templates/design/server/lib/import-design-files.ts +11 -2
- package/corpus/templates/design/server/source-workspace.ts +139 -59
- package/corpus/templates/design/shared/board-file.ts +11 -2
- package/corpus/templates/design/shared/breakpoint-media.ts +543 -0
- package/corpus/templates/design/shared/canvas-math.ts +354 -35
- package/corpus/templates/design/shared/code-layer.ts +277 -8
- package/corpus/templates/design/shared/design-state.ts +11 -4
- package/corpus/templates/design/shared/interaction-states.ts +548 -0
- package/corpus/templates/design/shared/motion-compiler.ts +186 -23
- package/corpus/templates/design/shared/motion-easing.ts +294 -0
- package/corpus/templates/design/shared/motion-timeline.ts +400 -34
- package/corpus/templates/design/shared/prompt-title.ts +95 -0
- package/corpus/templates/design/shared/responsive-classes.ts +448 -10
- package/corpus/templates/design/shared/screen-annotation.ts +46 -0
- package/corpus/templates/design/shared/shader-fills.ts +1009 -0
- package/corpus/templates/design/shared/shader-presets.ts +852 -4
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +15 -2
- package/corpus/templates/slides/app/components/editor/ImportButton.tsx +10 -1
- package/corpus/templates/slides/app/lib/upload-response.ts +71 -0
- package/dist/client/AgentPanel.js +1 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.js +11 -6
- package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
- package/dist/client/use-action.d.ts +3 -0
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +34 -3
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +4 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +37 -18
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db/create-get-db.d.ts +25 -0
- package/dist/db/create-get-db.d.ts.map +1 -1
- package/dist/db/create-get-db.js +25 -2
- package/dist/db/create-get-db.js.map +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +37 -1
- package/dist/server/framework-request-handler.js.map +1 -1
- package/package.json +1 -1
- package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +0 -153
- package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +0 -133
- package/corpus/templates/design/app/pages/DesignEditor.tsx +0 -22924
|
@@ -198,6 +198,8 @@ export function builderReviewPublicationTransitionsMap(
|
|
|
198
198
|
const ATTENTION_TAG_EFFECTS: ReadonlySet<BuilderCmsWriteEffect> = new Set([
|
|
199
199
|
"unpublish",
|
|
200
200
|
]);
|
|
201
|
+
const REVIEW_DIALOG_INITIAL_ROW_LIMIT = 100;
|
|
202
|
+
const REVIEW_DIALOG_ROW_INCREMENT = 100;
|
|
201
203
|
|
|
202
204
|
function rowEffectTagClass(effect: BuilderCmsWriteEffect) {
|
|
203
205
|
return ATTENTION_TAG_EFFECTS.has(effect)
|
|
@@ -246,6 +248,17 @@ export function BuilderSourceReviewDialog({
|
|
|
246
248
|
writeMode === "publish_updates" &&
|
|
247
249
|
source?.metadata.allowPublicationTransitions === true;
|
|
248
250
|
const reviewRows = useMemo(() => review?.rows ?? [], [review]);
|
|
251
|
+
const reviewTotalRowCount = review?.totalRowCount ?? reviewRows.length;
|
|
252
|
+
const [visibleRowLimit, setVisibleRowLimit] = useState(
|
|
253
|
+
REVIEW_DIALOG_INITIAL_ROW_LIMIT,
|
|
254
|
+
);
|
|
255
|
+
useEffect(() => {
|
|
256
|
+
if (open) setVisibleRowLimit(REVIEW_DIALOG_INITIAL_ROW_LIMIT);
|
|
257
|
+
}, [open, review]);
|
|
258
|
+
const visibleReviewRows = reviewRows.slice(0, visibleRowLimit);
|
|
259
|
+
const hasMoreRenderedRows = visibleReviewRows.length < reviewRows.length;
|
|
260
|
+
const isServerCapped =
|
|
261
|
+
reviewTotalRowCount > reviewRows.length && !hasMoreRenderedRows;
|
|
249
262
|
const reviewRowIds = useMemo(
|
|
250
263
|
() => reviewRows.map((row) => row.changeSetId),
|
|
251
264
|
[reviewRows],
|
|
@@ -443,7 +456,15 @@ export function BuilderSourceReviewDialog({
|
|
|
443
456
|
{t("database.whatChanged")}
|
|
444
457
|
</div>
|
|
445
458
|
<div className="grid gap-2">
|
|
446
|
-
{
|
|
459
|
+
{reviewTotalRowCount > visibleReviewRows.length ? (
|
|
460
|
+
<div className="rounded-md border border-border bg-muted/20 p-2 text-xs text-muted-foreground">
|
|
461
|
+
{t("database.builderReviewShowingRows", {
|
|
462
|
+
shown: visibleReviewRows.length,
|
|
463
|
+
total: reviewTotalRowCount,
|
|
464
|
+
})}
|
|
465
|
+
</div>
|
|
466
|
+
) : null}
|
|
467
|
+
{visibleReviewRows.map((row) => {
|
|
447
468
|
const selection = transitionSelections[row.changeSetId];
|
|
448
469
|
const effect = builderReviewEffectiveRowEffect(
|
|
449
470
|
row.effect,
|
|
@@ -607,6 +628,25 @@ export function BuilderSourceReviewDialog({
|
|
|
607
628
|
</div>
|
|
608
629
|
);
|
|
609
630
|
})}
|
|
631
|
+
{hasMoreRenderedRows ? (
|
|
632
|
+
<Button
|
|
633
|
+
type="button"
|
|
634
|
+
variant="outline"
|
|
635
|
+
size="sm"
|
|
636
|
+
className="justify-self-start"
|
|
637
|
+
onClick={() =>
|
|
638
|
+
setVisibleRowLimit(
|
|
639
|
+
(current) => current + REVIEW_DIALOG_ROW_INCREMENT,
|
|
640
|
+
)
|
|
641
|
+
}
|
|
642
|
+
>
|
|
643
|
+
{t("database.builderReviewShowMore")}
|
|
644
|
+
</Button>
|
|
645
|
+
) : isServerCapped ? (
|
|
646
|
+
<div className="rounded-md border border-border bg-muted/20 p-2 text-xs text-muted-foreground">
|
|
647
|
+
{t("database.builderReviewRemainingBatches")}
|
|
648
|
+
</div>
|
|
649
|
+
) : null}
|
|
610
650
|
</div>
|
|
611
651
|
</section>
|
|
612
652
|
|
|
@@ -513,6 +513,7 @@ export function ImageBlock({
|
|
|
513
513
|
const [lightboxZoomed, setLightboxZoomed] = useState(false);
|
|
514
514
|
const [moreMenuOpen, setMoreMenuOpen] = useState(false);
|
|
515
515
|
const [isGeneratingAlt, setIsGeneratingAlt] = useState(false);
|
|
516
|
+
const [imageLoadFailed, setImageLoadFailed] = useState(false);
|
|
516
517
|
const fileInputRef = useRef<HTMLInputElement>(null);
|
|
517
518
|
const altInputRef = useRef<HTMLInputElement>(null);
|
|
518
519
|
const emptyBlockRef = useRef<HTMLDivElement>(null);
|
|
@@ -528,6 +529,10 @@ export function ImageBlock({
|
|
|
528
529
|
const controlsVisible = isEditable && (isHovered || selected);
|
|
529
530
|
const options = extension.options as ContentImageOptions;
|
|
530
531
|
|
|
532
|
+
useEffect(() => {
|
|
533
|
+
setImageLoadFailed(false);
|
|
534
|
+
}, [src]);
|
|
535
|
+
|
|
531
536
|
useEffect(() => {
|
|
532
537
|
if (!sourcePanelOpen && !selected) return;
|
|
533
538
|
|
|
@@ -979,17 +984,37 @@ export function ImageBlock({
|
|
|
979
984
|
}}
|
|
980
985
|
style={activeWidth ? { width: `${activeWidth}px` } : undefined}
|
|
981
986
|
>
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
987
|
+
{imageLoadFailed ? (
|
|
988
|
+
<div
|
|
989
|
+
className="media-block__broken"
|
|
990
|
+
role="img"
|
|
991
|
+
aria-label={alt || t("editor.media.imageBroken")}
|
|
992
|
+
>
|
|
993
|
+
<IconPhoto className="media-block__broken-icon" aria-hidden />
|
|
994
|
+
<div className="media-block__broken-copy">
|
|
995
|
+
<span className="media-block__broken-title">
|
|
996
|
+
{t("editor.media.imageBroken")}
|
|
997
|
+
</span>
|
|
998
|
+
{alt.trim() ? (
|
|
999
|
+
<span className="media-block__broken-alt">{alt}</span>
|
|
1000
|
+
) : null}
|
|
1001
|
+
</div>
|
|
1002
|
+
</div>
|
|
1003
|
+
) : (
|
|
1004
|
+
<img
|
|
1005
|
+
src={src}
|
|
1006
|
+
alt={alt || ""}
|
|
1007
|
+
className="media-block__content"
|
|
1008
|
+
draggable={false}
|
|
1009
|
+
onLoad={() => setImageLoadFailed(false)}
|
|
1010
|
+
onError={() => setImageLoadFailed(true)}
|
|
1011
|
+
onDoubleClick={(event) => {
|
|
1012
|
+
event.preventDefault();
|
|
1013
|
+
event.stopPropagation();
|
|
1014
|
+
openLightbox();
|
|
1015
|
+
}}
|
|
1016
|
+
/>
|
|
1017
|
+
)}
|
|
993
1018
|
|
|
994
1019
|
<input
|
|
995
1020
|
ref={fileInputRef}
|
|
@@ -57,6 +57,16 @@
|
|
|
57
57
|
export interface PreviewDocumentPayload {
|
|
58
58
|
title: string;
|
|
59
59
|
content: string;
|
|
60
|
+
loadedUpdatedAt?: string;
|
|
61
|
+
loadedContentWasEmpty?: boolean;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface PreviewDocumentSaveSkipped {
|
|
65
|
+
skipped: true;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function skippedPreviewDocumentSave(): PreviewDocumentSaveSkipped {
|
|
69
|
+
return { skipped: true };
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
export interface PreviewDocumentSaveController {
|
|
@@ -152,7 +162,17 @@ export function createPreviewDocumentSaveController(args: {
|
|
|
152
162
|
|
|
153
163
|
const attempted = { ...pending };
|
|
154
164
|
const promise = Promise.resolve(args.save(documentId, attempted))
|
|
155
|
-
.then(() => {
|
|
165
|
+
.then((result) => {
|
|
166
|
+
if (
|
|
167
|
+
result &&
|
|
168
|
+
typeof result === "object" &&
|
|
169
|
+
"skipped" in result &&
|
|
170
|
+
result.skipped === true
|
|
171
|
+
) {
|
|
172
|
+
pending = { ...lastSaved };
|
|
173
|
+
inFlight = null;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
156
176
|
lastSaved = attempted;
|
|
157
177
|
hasSavedLocally = true;
|
|
158
178
|
inFlight = null;
|
|
@@ -75,6 +75,7 @@ import {
|
|
|
75
75
|
} from "@/components/ui/tooltip";
|
|
76
76
|
import {
|
|
77
77
|
useCreateContentDatabase,
|
|
78
|
+
useDeleteContentDatabase,
|
|
78
79
|
useRestoreContentDatabase,
|
|
79
80
|
useTrashedContentDatabases,
|
|
80
81
|
} from "@/hooks/use-content-database";
|
|
@@ -201,6 +202,7 @@ export function DocumentSidebar({
|
|
|
201
202
|
const { data: documents = [], isLoading } = useDocuments();
|
|
202
203
|
const createDocument = useCreateDocument();
|
|
203
204
|
const createDatabase = useCreateContentDatabase(null);
|
|
205
|
+
const deleteContentDatabase = useDeleteContentDatabase();
|
|
204
206
|
const deleteDocument = useDeleteDocument();
|
|
205
207
|
const moveDocument = useMoveDocument();
|
|
206
208
|
const restoreContentDatabase = useRestoreContentDatabase();
|
|
@@ -462,6 +464,7 @@ export function DocumentSidebar({
|
|
|
462
464
|
|
|
463
465
|
const handleDelete = useCallback(
|
|
464
466
|
async (id: string) => {
|
|
467
|
+
const deletedDocument = documents.find((doc) => doc.id === id) ?? null;
|
|
465
468
|
const deletedIds = collectDocumentSubtreeIds(documents, id);
|
|
466
469
|
const activeDeleted = activeDocumentId
|
|
467
470
|
? deletedIds.has(activeDocumentId)
|
|
@@ -500,7 +503,13 @@ export function DocumentSidebar({
|
|
|
500
503
|
}
|
|
501
504
|
|
|
502
505
|
try {
|
|
503
|
-
|
|
506
|
+
if (deletedDocument?.database) {
|
|
507
|
+
await deleteContentDatabase.mutateAsync({
|
|
508
|
+
databaseId: deletedDocument.database.id,
|
|
509
|
+
});
|
|
510
|
+
} else {
|
|
511
|
+
await deleteDocument.mutateAsync({ id });
|
|
512
|
+
}
|
|
504
513
|
queryClient.invalidateQueries({
|
|
505
514
|
queryKey: ["action", "list-documents"],
|
|
506
515
|
});
|
|
@@ -522,6 +531,7 @@ export function DocumentSidebar({
|
|
|
522
531
|
},
|
|
523
532
|
[
|
|
524
533
|
activeDocumentId,
|
|
534
|
+
deleteContentDatabase,
|
|
525
535
|
deleteDocument,
|
|
526
536
|
documents,
|
|
527
537
|
localFileMode,
|
|
@@ -116,9 +116,7 @@ export function DocumentTreeItem({
|
|
|
116
116
|
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
|
117
117
|
const indent = depth * 12 + 12;
|
|
118
118
|
const rowWidth =
|
|
119
|
-
sidebarWidth === undefined
|
|
120
|
-
? undefined
|
|
121
|
-
: Math.max(224, sidebarWidth - 8 + depth * 12);
|
|
119
|
+
sidebarWidth === undefined ? undefined : Math.max(0, sidebarWidth - 8);
|
|
122
120
|
const {
|
|
123
121
|
attributes,
|
|
124
122
|
listeners,
|
|
@@ -145,12 +143,12 @@ export function DocumentTreeItem({
|
|
|
145
143
|
{...(isLocalFileNode ? {} : listeners)}
|
|
146
144
|
aria-label={node.title || "Untitled"}
|
|
147
145
|
className={cn(
|
|
148
|
-
"group relative flex min-w-
|
|
146
|
+
"group relative flex min-w-0 items-center gap-1.5 rounded-md border-l-2 py-[5px] pe-2 text-sm cursor-pointer select-none",
|
|
149
147
|
canEdit && !isLocalFileNode && "cursor-grab active:cursor-grabbing",
|
|
150
148
|
isDragging && "bg-accent/70 text-accent-foreground shadow-sm",
|
|
151
149
|
isActive
|
|
152
|
-
? "bg-accent text-accent-foreground"
|
|
153
|
-
: "text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
150
|
+
? "border-primary bg-accent text-accent-foreground font-medium"
|
|
151
|
+
: "border-transparent text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
154
152
|
)}
|
|
155
153
|
style={{
|
|
156
154
|
paddingInlineStart: `${indent}px`,
|
|
@@ -205,13 +203,18 @@ export function DocumentTreeItem({
|
|
|
205
203
|
)}
|
|
206
204
|
</span>
|
|
207
205
|
|
|
208
|
-
<span
|
|
206
|
+
<span
|
|
207
|
+
className={cn(
|
|
208
|
+
"min-w-0 flex-1 truncate",
|
|
209
|
+
(hasMenuActions || canCreateChild) && "pr-12",
|
|
210
|
+
)}
|
|
211
|
+
>
|
|
209
212
|
{node.title || "Untitled"}
|
|
210
213
|
</span>
|
|
211
214
|
|
|
212
215
|
<div
|
|
213
216
|
className={cn(
|
|
214
|
-
"pointer-events-none absolute right-1 top-1/2 flex flex-shrink-0 -translate-y-1/2 items-center gap-0.5 rounded-md
|
|
217
|
+
"pointer-events-none absolute right-1 top-1/2 flex flex-shrink-0 -translate-y-1/2 items-center gap-0.5 rounded-md bg-accent px-0.5 opacity-0 group-hover:pointer-events-auto group-hover:opacity-100 group-focus-within:pointer-events-auto group-focus-within:opacity-100",
|
|
215
218
|
"bg-accent text-foreground",
|
|
216
219
|
isActive && "text-accent-foreground",
|
|
217
220
|
)}
|
|
@@ -1343,6 +1343,47 @@ div[data-notion-column] > :last-child {
|
|
|
1343
1343
|
user-select: none;
|
|
1344
1344
|
}
|
|
1345
1345
|
|
|
1346
|
+
.media-block__broken {
|
|
1347
|
+
display: flex;
|
|
1348
|
+
align-items: center;
|
|
1349
|
+
width: min(100%, 42rem);
|
|
1350
|
+
min-width: min(18rem, calc(100vw - 3rem));
|
|
1351
|
+
min-height: 10rem;
|
|
1352
|
+
gap: 0.9rem;
|
|
1353
|
+
border: 1px dashed hsl(var(--border));
|
|
1354
|
+
border-radius: 8px;
|
|
1355
|
+
background: hsl(var(--muted) / 0.45);
|
|
1356
|
+
color: hsl(var(--muted-foreground));
|
|
1357
|
+
padding: 1.25rem;
|
|
1358
|
+
line-height: 1.4;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
.media-block__broken-icon {
|
|
1362
|
+
width: 1.75rem;
|
|
1363
|
+
height: 1.75rem;
|
|
1364
|
+
flex: 0 0 auto;
|
|
1365
|
+
color: hsl(var(--muted-foreground));
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
.media-block__broken-copy {
|
|
1369
|
+
min-width: 0;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
.media-block__broken-title {
|
|
1373
|
+
display: block;
|
|
1374
|
+
color: hsl(var(--foreground));
|
|
1375
|
+
font-size: 0.92rem;
|
|
1376
|
+
font-weight: 600;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
.media-block__broken-alt {
|
|
1380
|
+
display: block;
|
|
1381
|
+
max-width: 34rem;
|
|
1382
|
+
margin-top: 0.25rem;
|
|
1383
|
+
overflow-wrap: anywhere;
|
|
1384
|
+
font-size: 0.86rem;
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1346
1387
|
.media-block[data-resized="true"] .media-block__content {
|
|
1347
1388
|
width: 100%;
|
|
1348
1389
|
}
|