@agent-native/core 0.86.0 → 0.87.0
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 +2 -2
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/docs/content/components.mdx +13 -0
- package/corpus/core/docs/content/creating-templates.mdx +7 -0
- package/corpus/core/docs/content/locales/ar-SA/components.mdx +9 -0
- package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/de-DE/components.mdx +9 -0
- package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/de-DE/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/es-ES/components.mdx +9 -0
- package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/es-ES/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/fr-FR/components.mdx +9 -0
- package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/hi-IN/components.mdx +9 -0
- package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/ja-JP/components.mdx +9 -0
- package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/ko-KR/components.mdx +9 -0
- package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/pt-BR/components.mdx +9 -0
- package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-CN/components.mdx +9 -0
- package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-TW/components.mdx +9 -0
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +6 -0
- package/corpus/core/docs/content/template-analytics.mdx +6 -0
- package/corpus/core/docs/content/template-clips.mdx +7 -0
- package/corpus/core/docs/content/tracking.mdx +6 -0
- package/corpus/core/package.json +9 -1
- package/corpus/core/src/application-state/emitter.ts +37 -5
- package/corpus/core/src/cli/create.ts +55 -3
- package/corpus/core/src/cli/workspacify.ts +10 -4
- package/corpus/core/src/client/AgentPanel.tsx +10 -0
- package/corpus/core/src/client/AssistantChat.tsx +91 -27
- package/corpus/core/src/client/ErrorBoundary.tsx +67 -12
- package/corpus/core/src/client/ErrorReportActions.tsx +69 -0
- package/corpus/core/src/client/FeedbackButton.tsx +8 -4
- package/corpus/core/src/client/components/ui/dialog.tsx +1 -91
- package/corpus/core/src/client/components/ui/dropdown-menu.tsx +1 -191
- package/corpus/core/src/client/components/ui/hover-card.tsx +1 -29
- package/corpus/core/src/client/components/ui/popover.tsx +1 -31
- package/corpus/core/src/client/components/ui/sheet.tsx +1 -96
- package/corpus/core/src/client/components/ui/tooltip.tsx +1 -53
- package/corpus/core/src/client/db-admin/DbAdminPage.tsx +41 -13
- package/corpus/core/src/client/db-admin/SqlEditor.tsx +10 -3
- package/corpus/core/src/client/db-admin/TableEditor.tsx +12 -5
- package/corpus/core/src/client/db-admin/useAgentSync.ts +10 -3
- package/corpus/core/src/client/db-admin/useDbAdmin.ts +65 -16
- package/corpus/core/src/client/error-reporting.ts +100 -0
- package/corpus/core/src/client/index.ts +11 -0
- package/corpus/core/src/client/org/RequireActiveOrg.tsx +12 -0
- package/corpus/core/src/client/visual-style-controls.tsx +615 -2
- package/corpus/core/src/db-admin/index.ts +26 -0
- package/corpus/core/src/db-admin/operations.ts +87 -49
- package/corpus/core/src/localization/default-messages.ts +4 -0
- package/corpus/core/src/secrets/crypto.ts +47 -9
- package/corpus/core/src/server/agent-access.ts +72 -0
- package/corpus/core/src/server/builder-design-systems.ts +328 -9
- package/corpus/core/src/server/h3-helpers.ts +14 -2
- package/corpus/core/src/server/index.ts +34 -0
- package/corpus/core/src/server/request-context.ts +64 -7
- package/corpus/core/src/shared/agent-access.ts +112 -0
- package/corpus/core/src/shared/index.ts +14 -0
- package/corpus/core/src/templates/default/app/root.tsx +47 -0
- package/corpus/templates/analytics/AGENTS.md +10 -4
- package/corpus/templates/analytics/actions/delete-db-admin-connection.ts +19 -0
- package/corpus/templates/analytics/actions/list-db-admin-connections.ts +18 -0
- package/corpus/templates/analytics/actions/navigate.ts +17 -3
- package/corpus/templates/analytics/actions/save-db-admin-connection.ts +33 -0
- package/corpus/templates/analytics/actions/view-screen.ts +11 -3
- package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +7 -2
- package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +16 -11
- package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -1
- package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +7 -2
- package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +6 -3
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +6 -1
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +7 -2
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +15 -11
- package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +7 -1
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +7 -2
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
- package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +1 -2
- package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +5 -2
- package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +3 -4
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +12 -9
- package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +11 -2
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +23 -2
- package/corpus/templates/analytics/app/i18n-data.ts +230 -20
- package/corpus/templates/analytics/app/pages/Agents.tsx +406 -12
- package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
- package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -28
- package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -2
- package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -2
- package/corpus/templates/analytics/app/pages/Settings.tsx +16 -16
- package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +2 -3
- package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +13 -8
- package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +2 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +4 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +2 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +1 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +8 -3
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +4 -5
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +1 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +21 -16
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +13 -14
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +21 -13
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +28 -23
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +12 -12
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -29
- package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +7 -8
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
- package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +15 -11
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +42 -23
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +12 -7
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
- package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
- package/corpus/templates/analytics/app/root.tsx +2 -2
- package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
- package/corpus/templates/analytics/changelog/2026-07-03-connect-other-app-databases-from-analytics.md +6 -0
- package/corpus/templates/analytics/package.json +1 -0
- package/corpus/templates/analytics/server/db/schema.ts +27 -0
- package/corpus/templates/analytics/server/lib/db-admin-connections.ts +458 -0
- package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +59 -59
- package/corpus/templates/analytics/server/plugins/db.ts +35 -0
- package/corpus/templates/analytics/server/routes/[base]/_agent-native/analytics-db-admin/[...path].ts +1 -0
- package/corpus/templates/analytics/server/routes/_agent-native/analytics-db-admin/[...path].ts +160 -0
- package/corpus/templates/analytics/shared/session-replay-agent-access.ts +14 -3
- package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +2 -3
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -9
- package/corpus/templates/assets/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/assets/app/components/layout/PageShell.tsx +5 -6
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
- package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
- package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
- package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
- package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +2 -3
- package/corpus/templates/assets/app/root.tsx +1 -1
- package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
- package/corpus/templates/assets/app/routes/audit.tsx +14 -15
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +54 -49
- package/corpus/templates/assets/app/routes/library.tsx +31 -31
- package/corpus/templates/assets/app/routes/settings.tsx +18 -18
- package/corpus/templates/assets/package.json +1 -0
- package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +5 -6
- package/corpus/templates/brain/app/components/brain/Surface.tsx +8 -3
- package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
- package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
- package/corpus/templates/brain/app/routes/ops.tsx +18 -18
- package/corpus/templates/brain/app/routes/review.tsx +27 -22
- package/corpus/templates/brain/app/routes/search.tsx +20 -20
- package/corpus/templates/brain/app/routes/settings.tsx +22 -22
- package/corpus/templates/brain/app/routes/sources.tsx +23 -23
- package/corpus/templates/brain/package.json +1 -0
- package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
- package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
- package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +1 -2
- package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +8 -9
- package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
- package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +2 -3
- package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +15 -10
- package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
- package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +12 -9
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +13 -10
- package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
- package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
- package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
- package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
- package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
- package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
- package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
- package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +10 -8
- package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
- package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
- package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +1 -1
- package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
- package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -6
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -16
- package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +50 -45
- package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
- package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
- package/corpus/templates/calendar/app/pages/CalendarView.tsx +17 -17
- package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
- package/corpus/templates/calendar/app/pages/Settings.tsx +12 -12
- package/corpus/templates/calendar/app/routes/event.tsx +2 -2
- package/corpus/templates/calendar/package.json +1 -0
- package/corpus/templates/chat/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/chat/app/components/layout/Layout.tsx +7 -7
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
- package/corpus/templates/chat/app/routes/database.tsx +1 -2
- package/corpus/templates/chat/app/routes/observability.tsx +1 -1
- package/corpus/templates/chat/app/routes/settings.tsx +5 -5
- package/corpus/templates/chat/package.json +1 -0
- package/corpus/templates/clips/AGENTS.md +5 -0
- package/corpus/templates/clips/actions/create-recording-agent-link.ts +15 -20
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +74 -34
- package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
- package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
- package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +165 -3
- package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +101 -57
- package/corpus/templates/clips/app/components/editor/split-button.tsx +4 -5
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
- package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +16 -11
- package/corpus/templates/clips/app/components/editor/timeline.tsx +4 -6
- package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
- package/corpus/templates/clips/app/components/editor/trim-handles.tsx +4 -7
- package/corpus/templates/clips/app/components/editor/waveform.tsx +13 -4
- package/corpus/templates/clips/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/clips/app/components/layout/Layout.tsx +2 -3
- package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
- package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
- package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -2
- package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
- package/corpus/templates/clips/app/components/library/library-grid.tsx +7 -7
- package/corpus/templates/clips/app/components/library/library-layout.tsx +16 -16
- package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
- package/corpus/templates/clips/app/components/library/recording-card.tsx +16 -12
- package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
- package/corpus/templates/clips/app/components/library/sort-menu.tsx +3 -4
- package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
- package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +6 -2
- package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
- package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
- package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
- package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +9 -9
- package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -6
- package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +4 -4
- package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +2 -3
- package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
- package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +6 -7
- package/corpus/templates/clips/app/components/player/insights-panel.tsx +1 -2
- package/corpus/templates/clips/app/components/player/player-controls.tsx +15 -15
- package/corpus/templates/clips/app/components/player/reactions-tray.tsx +3 -3
- package/corpus/templates/clips/app/components/player/settings-panel.tsx +12 -13
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +20 -11
- package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +2 -3
- package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
- package/corpus/templates/clips/app/components/player/video-player.tsx +9 -9
- package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
- package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
- package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +21 -21
- package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +5 -6
- package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +6 -7
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
- package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +9 -5
- package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +19 -9
- package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +9 -10
- package/corpus/templates/clips/app/components/workspace/members-list.tsx +10 -11
- package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +1 -2
- package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +2 -3
- package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -3
- package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +1 -2
- package/corpus/templates/clips/app/root.tsx +10 -10
- package/corpus/templates/clips/app/routes/_app.dictate.tsx +13 -13
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +35 -26
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
- package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +31 -31
- package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +13 -8
- package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
- package/corpus/templates/clips/app/routes/_app.trash.tsx +10 -10
- package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
- package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
- package/corpus/templates/clips/app/routes/download.tsx +2 -2
- package/corpus/templates/clips/app/routes/embed.$shareId.tsx +1 -1
- package/corpus/templates/clips/app/routes/invite.$token.tsx +13 -8
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +28 -23
- package/corpus/templates/clips/app/routes/record.tsx +3 -3
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +41 -20
- package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -2
- package/corpus/templates/clips/changelog/2026-07-05-desktop-full-screen-recordings-with-system-audio-now-finaliz.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-05-desktop-recording-shortcut-start-stop.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-05-desktop-recordings-no-longer-fail-when-saved-capture-constra.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-05-permanently-deleted-clips-now-clean-up-s3-media-objects.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-05-timeline-zoom-controls-are-now-visible-in-the-clip-editor-an.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +98 -1
- package/corpus/templates/clips/desktop/src/components/MediaDeviceRow.tsx +3 -2
- package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +121 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -84
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +77 -39
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +60 -8
- package/corpus/templates/clips/package.json +1 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +17 -12
- package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +110 -0
- package/corpus/templates/clips/server/lib/s3-upload-provider.ts +126 -0
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +47 -11
- package/corpus/templates/clips/shared/agent-context.ts +23 -21
- package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
- package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
- package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
- package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
- package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
- package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +36 -36
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +3 -3
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +23 -23
- package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +4 -5
- package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +4 -5
- package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
- package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
- package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
- package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
- package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
- package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
- package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +8 -9
- package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +18 -19
- package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +20 -21
- package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
- package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +18 -19
- package/corpus/templates/content/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/content/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +22 -22
- package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
- package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
- package/corpus/templates/content/app/root.tsx +13 -5
- package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
- package/corpus/templates/content/app/routes/_app.local-files.tsx +11 -11
- package/corpus/templates/content/app/routes/_app.settings.tsx +3 -3
- package/corpus/templates/content/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
- package/corpus/templates/content/package.json +1 -0
- package/corpus/templates/design/AGENTS.md +13 -7
- package/corpus/templates/design/actions/get-design-system.ts +21 -0
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +14 -37
- package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +21 -16
- package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +3 -3
- package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
- package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
- package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +8 -9
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
- package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +5 -6
- package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
- package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
- package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
- package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +3 -3
- package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +70 -9
- package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +17 -8
- package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +2 -3
- package/corpus/templates/design/app/components/design/code-workbench/editor/StatusBar.tsx +1 -1
- package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +8 -2
- package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +24 -20
- package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
- package/corpus/templates/design/app/components/design/code-workbench/store.tsx +48 -0
- package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
- package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
- package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +2 -3
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +18 -15
- package/corpus/templates/design/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
- package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +6 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +15 -14
- package/corpus/templates/design/app/i18n-data.ts +154 -142
- package/corpus/templates/design/app/pages/DesignEditor.tsx +51 -47
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +40 -22
- package/corpus/templates/design/app/pages/DesignSystems.tsx +32 -32
- package/corpus/templates/design/app/pages/Index.tsx +28 -28
- package/corpus/templates/design/app/pages/NotFound.tsx +1 -2
- package/corpus/templates/design/app/pages/Present.tsx +1 -2
- package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -2
- package/corpus/templates/design/app/root.tsx +1 -1
- package/corpus/templates/design/app/routes/settings.tsx +3 -3
- package/corpus/templates/design/changelog/2026-07-03-design-system-setup-now-indexes-figma-code-and-design-md-sou.md +6 -0
- package/corpus/templates/design/changelog/2026-07-03-the-code-editor-is-easier-to-use-with-top-sidebar-tabs-clear.md +6 -0
- package/corpus/templates/design/package.json +1 -0
- package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +16 -106
- package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
- package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
- package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +10 -11
- package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +13 -10
- package/corpus/templates/forms/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +15 -15
- package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
- package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -24
- package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +25 -25
- package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
- package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
- package/corpus/templates/forms/app/routes/_app.settings.tsx +5 -5
- package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
- package/corpus/templates/forms/package.json +1 -0
- package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
- package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
- package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
- package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
- package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -2
- package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
- package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +11 -7
- package/corpus/templates/macros/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/macros/app/root.tsx +1 -1
- package/corpus/templates/macros/app/routes/_index.tsx +1 -1
- package/corpus/templates/macros/app/routes/analytics.tsx +9 -9
- package/corpus/templates/macros/app/routes/settings.tsx +2 -2
- package/corpus/templates/macros/package.json +1 -0
- package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
- package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
- package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
- package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +3 -4
- package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
- package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -9
- package/corpus/templates/mail/app/components/email/ComposeModal.tsx +18 -18
- package/corpus/templates/mail/app/components/email/EmailList.tsx +17 -17
- package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +6 -6
- package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +11 -11
- package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
- package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
- package/corpus/templates/mail/app/components/email/RecipientInput.tsx +13 -13
- package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +4 -5
- package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
- package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +12 -12
- package/corpus/templates/mail/app/components/layout/SearchBar.tsx +5 -5
- package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
- package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
- package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
- package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
- package/corpus/templates/mail/app/pages/NotFound.tsx +1 -2
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +25 -25
- package/corpus/templates/mail/app/root.tsx +61 -2
- package/corpus/templates/mail/app/routes/_index.tsx +1 -2
- package/corpus/templates/mail/app/routes/email.tsx +2 -2
- package/corpus/templates/mail/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
- package/corpus/templates/mail/package.json +1 -0
- package/corpus/templates/plan/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -6
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
- package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +2 -3
- package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
- package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +1 -2
- package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
- package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
- package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +83 -82
- package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
- package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
- package/corpus/templates/plan/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/plan/app/i18n/de-DE.ts +4 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +4 -0
- package/corpus/templates/plan/app/i18n/es-ES.ts +4 -0
- package/corpus/templates/plan/app/i18n/fr-FR.ts +4 -0
- package/corpus/templates/plan/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/plan/app/i18n/ja-JP.ts +4 -0
- package/corpus/templates/plan/app/i18n/ko-KR.ts +4 -0
- package/corpus/templates/plan/app/i18n/pt-BR.ts +4 -0
- package/corpus/templates/plan/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/plan/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/plan/app/pages/PlansPage.tsx +158 -80
- package/corpus/templates/plan/app/root.tsx +1 -1
- package/corpus/templates/plan/app/routes/_index.tsx +2 -1
- package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
- package/corpus/templates/plan/app/routes/plans.$id.tsx +2 -1
- package/corpus/templates/plan/app/routes/plans.tsx +2 -1
- package/corpus/templates/plan/app/routes/recaps.$id.tsx +2 -1
- package/corpus/templates/plan/app/routes/recaps.tsx +2 -1
- package/corpus/templates/plan/app/routes/settings.tsx +5 -5
- package/corpus/templates/plan/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-05-images-in-plan-documents-open-reliably-in-the-full-size-prev.md +6 -0
- package/corpus/templates/plan/package.json +1 -0
- package/corpus/templates/slides/AGENTS.md +7 -3
- package/corpus/templates/slides/actions/get-design-system.ts +21 -0
- package/corpus/templates/slides/actions/import-file.ts +15 -7
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +14 -37
- package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
- package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +1 -2
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -3
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +45 -22
- package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
- package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +8 -8
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +15 -17
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +9 -10
- package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +5 -6
- package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
- package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -4
- package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +4 -5
- package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -4
- package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +1 -2
- package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
- package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +169 -160
- package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +20 -17
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +56 -6
- package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/layout/Header.tsx +4 -2
- package/corpus/templates/slides/app/components/layout/Layout.tsx +7 -2
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
- package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
- package/corpus/templates/slides/app/i18n/ar-SA.ts +8 -7
- package/corpus/templates/slides/app/i18n/de-DE.ts +7 -8
- package/corpus/templates/slides/app/i18n/en-US.ts +8 -7
- package/corpus/templates/slides/app/i18n/es-ES.ts +7 -8
- package/corpus/templates/slides/app/i18n/fr-FR.ts +7 -8
- package/corpus/templates/slides/app/i18n/hi-IN.ts +8 -7
- package/corpus/templates/slides/app/i18n/ja-JP.ts +7 -8
- package/corpus/templates/slides/app/i18n/ko-KR.ts +7 -7
- package/corpus/templates/slides/app/i18n/pt-BR.ts +7 -8
- package/corpus/templates/slides/app/i18n/zh-CN.ts +8 -7
- package/corpus/templates/slides/app/i18n/zh-TW.ts +8 -7
- package/corpus/templates/slides/app/lib/canvas-zoom.ts +16 -1
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +6 -6
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
- package/corpus/templates/slides/app/pages/Index.tsx +18 -15
- package/corpus/templates/slides/app/root.tsx +3 -3
- package/corpus/templates/slides/app/routes/settings.tsx +5 -5
- package/corpus/templates/slides/changelog/2026-07-03-design-system-setup-now-indexes-figma-code-and-design-md-sou.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-03-slide-editing-now-keeps-thumbnails-speaker-notes-styling-and.md +6 -0
- package/corpus/templates/slides/package.json +1 -0
- package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +16 -104
- package/dist/application-state/emitter.d.ts +9 -2
- package/dist/application-state/emitter.d.ts.map +1 -1
- package/dist/application-state/emitter.js +25 -3
- package/dist/application-state/emitter.js.map +1 -1
- package/dist/cli/create.d.ts +2 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +52 -4
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/workspacify.d.ts +2 -0
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +8 -4
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +2 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +77 -25
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +37 -2
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/ErrorReportActions.d.ts +13 -0
- package/dist/client/ErrorReportActions.d.ts.map +1 -0
- package/dist/client/ErrorReportActions.js +14 -0
- package/dist/client/ErrorReportActions.js.map +1 -0
- package/dist/client/FeedbackButton.d.ts +3 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +6 -5
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/components/ui/dialog.d.ts +1 -13
- package/dist/client/components/ui/dialog.d.ts.map +1 -1
- package/dist/client/components/ui/dialog.js +1 -20
- package/dist/client/components/ui/dialog.js.map +1 -1
- package/dist/client/components/ui/dropdown-menu.d.ts +1 -27
- package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/client/components/ui/dropdown-menu.js +1 -33
- package/dist/client/components/ui/dropdown-menu.js.map +1 -1
- package/dist/client/components/ui/hover-card.d.ts +1 -6
- package/dist/client/components/ui/hover-card.d.ts.map +1 -1
- package/dist/client/components/ui/hover-card.js +1 -9
- package/dist/client/components/ui/hover-card.js.map +1 -1
- package/dist/client/components/ui/popover.d.ts +1 -7
- package/dist/client/components/ui/popover.d.ts.map +1 -1
- package/dist/client/components/ui/popover.js +1 -10
- package/dist/client/components/ui/popover.js.map +1 -1
- package/dist/client/components/ui/sheet.d.ts +1 -15
- package/dist/client/components/ui/sheet.d.ts.map +1 -1
- package/dist/client/components/ui/sheet.js +1 -22
- package/dist/client/components/ui/sheet.js.map +1 -1
- package/dist/client/components/ui/tooltip.d.ts +1 -8
- package/dist/client/components/ui/tooltip.d.ts.map +1 -1
- package/dist/client/components/ui/tooltip.js +1 -17
- package/dist/client/components/ui/tooltip.js.map +1 -1
- package/dist/client/db-admin/DbAdminPage.d.ts +9 -1
- package/dist/client/db-admin/DbAdminPage.d.ts.map +1 -1
- package/dist/client/db-admin/DbAdminPage.js +17 -13
- package/dist/client/db-admin/DbAdminPage.js.map +1 -1
- package/dist/client/db-admin/SqlEditor.d.ts +3 -1
- package/dist/client/db-admin/SqlEditor.d.ts.map +1 -1
- package/dist/client/db-admin/SqlEditor.js +3 -3
- package/dist/client/db-admin/SqlEditor.js.map +1 -1
- package/dist/client/db-admin/TableEditor.d.ts +3 -1
- package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
- package/dist/client/db-admin/TableEditor.js +6 -6
- package/dist/client/db-admin/TableEditor.js.map +1 -1
- package/dist/client/db-admin/useAgentSync.d.ts +3 -2
- package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
- package/dist/client/db-admin/useAgentSync.js +8 -4
- package/dist/client/db-admin/useAgentSync.js.map +1 -1
- package/dist/client/db-admin/useDbAdmin.d.ts +11 -7
- package/dist/client/db-admin/useDbAdmin.d.ts.map +1 -1
- package/dist/client/db-admin/useDbAdmin.js +45 -20
- package/dist/client/db-admin/useDbAdmin.js.map +1 -1
- package/dist/client/error-reporting.d.ts +19 -0
- package/dist/client/error-reporting.d.ts.map +1 -0
- package/dist/client/error-reporting.js +71 -0
- package/dist/client/error-reporting.js.map +1 -0
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
- package/dist/client/org/RequireActiveOrg.js +2 -1
- package/dist/client/org/RequireActiveOrg.js.map +1 -1
- package/dist/client/visual-style-controls.d.ts +11 -0
- package/dist/client/visual-style-controls.d.ts.map +1 -1
- package/dist/client/visual-style-controls.js +350 -1
- package/dist/client/visual-style-controls.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db-admin/index.d.ts +3 -0
- package/dist/db-admin/index.d.ts.map +1 -0
- package/dist/db-admin/index.js +2 -0
- package/dist/db-admin/index.js.map +1 -0
- package/dist/db-admin/operations.d.ts +26 -5
- package/dist/db-admin/operations.d.ts.map +1 -1
- package/dist/db-admin/operations.js +66 -55
- package/dist/db-admin/operations.js.map +1 -1
- package/dist/localization/default-messages.d.ts +3 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +3 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/secrets/crypto.d.ts.map +1 -1
- package/dist/secrets/crypto.js +37 -4
- package/dist/secrets/crypto.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-access.d.ts +16 -0
- package/dist/server/agent-access.d.ts.map +1 -0
- package/dist/server/agent-access.js +25 -0
- package/dist/server/agent-access.js.map +1 -0
- package/dist/server/builder-design-systems.d.ts +61 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +219 -14
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/h3-helpers.d.ts.map +1 -1
- package/dist/server/h3-helpers.js +12 -2
- package/dist/server/h3-helpers.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/request-context.d.ts +17 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +46 -6
- package/dist/server/request-context.js.map +1 -1
- package/dist/shared/agent-access.d.ts +29 -0
- package/dist/shared/agent-access.d.ts.map +1 -0
- package/dist/shared/agent-access.js +57 -0
- package/dist/shared/agent-access.js.map +1 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/templates/default/app/root.tsx +47 -0
- package/docs/content/components.mdx +13 -0
- package/docs/content/creating-templates.mdx +7 -0
- package/docs/content/locales/ar-SA/components.mdx +9 -0
- package/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
- package/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
- package/docs/content/locales/ar-SA/template-clips.mdx +7 -0
- package/docs/content/locales/ar-SA/tracking.mdx +6 -0
- package/docs/content/locales/de-DE/components.mdx +9 -0
- package/docs/content/locales/de-DE/creating-templates.mdx +2 -0
- package/docs/content/locales/de-DE/template-analytics.mdx +6 -0
- package/docs/content/locales/de-DE/template-clips.mdx +7 -0
- package/docs/content/locales/de-DE/tracking.mdx +6 -0
- package/docs/content/locales/es-ES/components.mdx +9 -0
- package/docs/content/locales/es-ES/creating-templates.mdx +2 -0
- package/docs/content/locales/es-ES/template-analytics.mdx +6 -0
- package/docs/content/locales/es-ES/template-clips.mdx +7 -0
- package/docs/content/locales/es-ES/tracking.mdx +6 -0
- package/docs/content/locales/fr-FR/components.mdx +9 -0
- package/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
- package/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
- package/docs/content/locales/fr-FR/template-clips.mdx +7 -0
- package/docs/content/locales/fr-FR/tracking.mdx +6 -0
- package/docs/content/locales/hi-IN/components.mdx +9 -0
- package/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
- package/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
- package/docs/content/locales/hi-IN/template-clips.mdx +7 -0
- package/docs/content/locales/hi-IN/tracking.mdx +6 -0
- package/docs/content/locales/ja-JP/components.mdx +9 -0
- package/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
- package/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
- package/docs/content/locales/ja-JP/template-clips.mdx +7 -0
- package/docs/content/locales/ja-JP/tracking.mdx +6 -0
- package/docs/content/locales/ko-KR/components.mdx +9 -0
- package/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
- package/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
- package/docs/content/locales/ko-KR/template-clips.mdx +7 -0
- package/docs/content/locales/ko-KR/tracking.mdx +6 -0
- package/docs/content/locales/pt-BR/components.mdx +9 -0
- package/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
- package/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
- package/docs/content/locales/pt-BR/template-clips.mdx +7 -0
- package/docs/content/locales/pt-BR/tracking.mdx +6 -0
- package/docs/content/locales/zh-CN/components.mdx +9 -0
- package/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
- package/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
- package/docs/content/locales/zh-CN/template-clips.mdx +7 -0
- package/docs/content/locales/zh-CN/tracking.mdx +6 -0
- package/docs/content/locales/zh-TW/components.mdx +9 -0
- package/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
- package/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
- package/docs/content/locales/zh-TW/template-clips.mdx +7 -0
- package/docs/content/locales/zh-TW/tracking.mdx +6 -0
- package/docs/content/template-analytics.mdx +6 -0
- package/docs/content/template-clips.mdx +7 -0
- package/docs/content/tracking.mdx +6 -0
- package/package.json +10 -2
- package/src/templates/default/app/root.tsx +47 -0
- package/corpus/templates/analytics/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/analytics/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/analytics/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/analytics/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/analytics/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/analytics/app/components/ui/button.tsx +0 -57
- package/corpus/templates/analytics/app/components/ui/card.tsx +0 -86
- package/corpus/templates/analytics/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/analytics/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/analytics/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/analytics/app/components/ui/command.tsx +0 -154
- package/corpus/templates/analytics/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/analytics/app/components/ui/date-picker.tsx +0 -68
- package/corpus/templates/analytics/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/analytics/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/analytics/app/components/ui/form.tsx +0 -177
- package/corpus/templates/analytics/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/analytics/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/analytics/app/components/ui/input.tsx +0 -22
- package/corpus/templates/analytics/app/components/ui/label.tsx +0 -24
- package/corpus/templates/analytics/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/analytics/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/analytics/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/analytics/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/analytics/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/analytics/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/analytics/app/components/ui/select.tsx +0 -158
- package/corpus/templates/analytics/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/analytics/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/analytics/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/analytics/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/analytics/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/analytics/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/analytics/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/analytics/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/analytics/app/components/ui/table.tsx +0 -117
- package/corpus/templates/analytics/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/analytics/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/analytics/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/analytics/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/analytics/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/analytics/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/analytics/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/analytics/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/analytics/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/assets/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/assets/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/assets/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/assets/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/assets/app/components/ui/button.tsx +0 -57
- package/corpus/templates/assets/app/components/ui/card.tsx +0 -86
- package/corpus/templates/assets/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/assets/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/assets/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/assets/app/components/ui/input.tsx +0 -22
- package/corpus/templates/assets/app/components/ui/label.tsx +0 -24
- package/corpus/templates/assets/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/assets/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/assets/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/assets/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/assets/app/components/ui/select.tsx +0 -158
- package/corpus/templates/assets/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/assets/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/assets/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/assets/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/assets/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/assets/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/assets/app/components/ui/table.tsx +0 -117
- package/corpus/templates/assets/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/assets/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/brain/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/brain/app/components/ui/button.tsx +0 -57
- package/corpus/templates/brain/app/components/ui/card.tsx +0 -86
- package/corpus/templates/brain/app/components/ui/input.tsx +0 -22
- package/corpus/templates/brain/app/components/ui/label.tsx +0 -24
- package/corpus/templates/brain/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/brain/app/components/ui/select.tsx +0 -158
- package/corpus/templates/brain/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/brain/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/brain/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/brain/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/brain/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/brain/app/components/ui/table.tsx +0 -117
- package/corpus/templates/brain/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/brain/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/calendar/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/calendar/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/calendar/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/calendar/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/calendar/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/calendar/app/components/ui/button.tsx +0 -57
- package/corpus/templates/calendar/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/calendar/app/components/ui/card.tsx +0 -86
- package/corpus/templates/calendar/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/calendar/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/calendar/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/calendar/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/calendar/app/components/ui/command.tsx +0 -154
- package/corpus/templates/calendar/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/calendar/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/calendar/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/calendar/app/components/ui/form.tsx +0 -177
- package/corpus/templates/calendar/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/calendar/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/calendar/app/components/ui/input.tsx +0 -22
- package/corpus/templates/calendar/app/components/ui/label.tsx +0 -24
- package/corpus/templates/calendar/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/calendar/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/calendar/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/calendar/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/calendar/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/calendar/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/calendar/app/components/ui/select.tsx +0 -158
- package/corpus/templates/calendar/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/calendar/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/calendar/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/calendar/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/calendar/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/calendar/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/calendar/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/calendar/app/components/ui/table.tsx +0 -117
- package/corpus/templates/calendar/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/calendar/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/calendar/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/calendar/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/calendar/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/calendar/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/calendar/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/calendar/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/calendar/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/calendar/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/chat/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/chat/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/chat/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/chat/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/chat/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/chat/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/chat/app/components/ui/button.tsx +0 -57
- package/corpus/templates/chat/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/chat/app/components/ui/card.tsx +0 -86
- package/corpus/templates/chat/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/chat/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/chat/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/chat/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/chat/app/components/ui/command.tsx +0 -154
- package/corpus/templates/chat/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/chat/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/chat/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/chat/app/components/ui/form.tsx +0 -177
- package/corpus/templates/chat/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/chat/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/chat/app/components/ui/input.tsx +0 -22
- package/corpus/templates/chat/app/components/ui/label.tsx +0 -24
- package/corpus/templates/chat/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/chat/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/chat/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/chat/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/chat/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/chat/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/chat/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/chat/app/components/ui/select.tsx +0 -158
- package/corpus/templates/chat/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/chat/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/chat/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/chat/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/chat/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/chat/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/chat/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/chat/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/chat/app/components/ui/table.tsx +0 -117
- package/corpus/templates/chat/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/chat/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/chat/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/chat/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/chat/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/chat/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/chat/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/chat/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/chat/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/chat/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/clips/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/clips/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/clips/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/clips/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/clips/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/clips/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/clips/app/components/ui/button.tsx +0 -57
- package/corpus/templates/clips/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/clips/app/components/ui/card.tsx +0 -86
- package/corpus/templates/clips/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/clips/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/clips/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/clips/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/clips/app/components/ui/command.tsx +0 -154
- package/corpus/templates/clips/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/clips/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/clips/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/clips/app/components/ui/form.tsx +0 -177
- package/corpus/templates/clips/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/clips/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/clips/app/components/ui/input.tsx +0 -22
- package/corpus/templates/clips/app/components/ui/label.tsx +0 -24
- package/corpus/templates/clips/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/clips/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/clips/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/clips/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/clips/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/clips/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/clips/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/clips/app/components/ui/select.tsx +0 -158
- package/corpus/templates/clips/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/clips/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/clips/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/clips/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/clips/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/clips/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/clips/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/clips/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/clips/app/components/ui/table.tsx +0 -117
- package/corpus/templates/clips/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/clips/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/clips/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/clips/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/clips/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/clips/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/clips/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/clips/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/clips/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/clips/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/content/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/content/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/content/app/components/ui/button.tsx +0 -57
- package/corpus/templates/content/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/content/app/components/ui/input.tsx +0 -22
- package/corpus/templates/content/app/components/ui/label.tsx +0 -24
- package/corpus/templates/content/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/content/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/content/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/content/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/content/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/content/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/content/app/components/ui/table.tsx +0 -117
- package/corpus/templates/content/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/content/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/content/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/content/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/content/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/content/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/content/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/design/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/design/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/design/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/design/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/design/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/design/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/design/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/design/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/design/app/components/ui/button.tsx +0 -57
- package/corpus/templates/design/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/design/app/components/ui/card.tsx +0 -86
- package/corpus/templates/design/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/design/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/design/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/design/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/design/app/components/ui/command.tsx +0 -154
- package/corpus/templates/design/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/design/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/design/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/design/app/components/ui/form.tsx +0 -177
- package/corpus/templates/design/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/design/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/design/app/components/ui/input.tsx +0 -22
- package/corpus/templates/design/app/components/ui/label.tsx +0 -24
- package/corpus/templates/design/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/design/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/design/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/design/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/design/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/design/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/design/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/design/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/design/app/components/ui/select.tsx +0 -158
- package/corpus/templates/design/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/design/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/design/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/design/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/design/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/design/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/design/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/design/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/design/app/components/ui/table.tsx +0 -117
- package/corpus/templates/design/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/design/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/design/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/design/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/design/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/design/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/design/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/design/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/design/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/design/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/forms/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/forms/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/forms/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/forms/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/forms/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/forms/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/forms/app/components/ui/button.tsx +0 -57
- package/corpus/templates/forms/app/components/ui/card.tsx +0 -86
- package/corpus/templates/forms/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/forms/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/forms/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/forms/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/forms/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/forms/app/components/ui/form.tsx +0 -177
- package/corpus/templates/forms/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/forms/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/forms/app/components/ui/input.tsx +0 -22
- package/corpus/templates/forms/app/components/ui/label.tsx +0 -24
- package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/forms/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/forms/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/forms/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/forms/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/forms/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/forms/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/forms/app/components/ui/select.tsx +0 -158
- package/corpus/templates/forms/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/forms/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/forms/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/forms/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/forms/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/forms/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/forms/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/forms/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/forms/app/components/ui/table.tsx +0 -117
- package/corpus/templates/forms/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/forms/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/forms/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/forms/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/forms/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/forms/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/forms/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/forms/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/forms/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/macros/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/macros/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/macros/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/macros/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/macros/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/macros/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/macros/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/macros/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/macros/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/macros/app/components/ui/command.tsx +0 -154
- package/corpus/templates/macros/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/macros/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/macros/app/components/ui/form.tsx +0 -177
- package/corpus/templates/macros/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/macros/app/components/ui/label.tsx +0 -24
- package/corpus/templates/macros/app/components/ui/logo.tsx +0 -36
- package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/macros/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/macros/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/macros/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/macros/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/macros/app/components/ui/select.tsx +0 -158
- package/corpus/templates/macros/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/macros/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/macros/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/macros/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/macros/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/macros/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/macros/app/components/ui/table.tsx +0 -117
- package/corpus/templates/macros/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/macros/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/macros/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/macros/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/mail/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/mail/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/mail/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/mail/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/mail/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/mail/app/components/ui/button.tsx +0 -57
- package/corpus/templates/mail/app/components/ui/card.tsx +0 -86
- package/corpus/templates/mail/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/mail/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/mail/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/mail/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/mail/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/mail/app/components/ui/form.tsx +0 -177
- package/corpus/templates/mail/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/mail/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/mail/app/components/ui/label.tsx +0 -24
- package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/mail/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/mail/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/mail/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/mail/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/mail/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/mail/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/mail/app/components/ui/select.tsx +0 -158
- package/corpus/templates/mail/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/mail/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/mail/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/mail/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/mail/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/mail/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/mail/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/mail/app/components/ui/table.tsx +0 -117
- package/corpus/templates/mail/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/mail/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/mail/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/mail/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/mail/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/mail/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/mail/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/plan/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/plan/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/plan/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/plan/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/plan/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/plan/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/plan/app/components/ui/button.tsx +0 -57
- package/corpus/templates/plan/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/plan/app/components/ui/card.tsx +0 -86
- package/corpus/templates/plan/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/plan/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/plan/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/plan/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/plan/app/components/ui/command.tsx +0 -154
- package/corpus/templates/plan/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/plan/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/plan/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/plan/app/components/ui/form.tsx +0 -177
- package/corpus/templates/plan/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/plan/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/plan/app/components/ui/input.tsx +0 -22
- package/corpus/templates/plan/app/components/ui/label.tsx +0 -24
- package/corpus/templates/plan/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/plan/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/plan/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/plan/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/plan/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/plan/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/plan/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/plan/app/components/ui/select.tsx +0 -158
- package/corpus/templates/plan/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/plan/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/plan/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/plan/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/plan/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/plan/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/plan/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/plan/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/plan/app/components/ui/table.tsx +0 -117
- package/corpus/templates/plan/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/plan/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/plan/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/plan/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/plan/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/plan/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/plan/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/plan/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/plan/app/hooks/use-toast.ts +0 -188
- package/corpus/templates/slides/app/components/layout/HeaderActions.tsx +0 -84
- package/corpus/templates/slides/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +0 -139
- package/corpus/templates/slides/app/components/ui/alert.tsx +0 -59
- package/corpus/templates/slides/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/slides/app/components/ui/avatar.tsx +0 -48
- package/corpus/templates/slides/app/components/ui/badge.tsx +0 -37
- package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/slides/app/components/ui/button.tsx +0 -57
- package/corpus/templates/slides/app/components/ui/calendar.tsx +0 -68
- package/corpus/templates/slides/app/components/ui/card.tsx +0 -86
- package/corpus/templates/slides/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/slides/app/components/ui/chart.tsx +0 -375
- package/corpus/templates/slides/app/components/ui/checkbox.tsx +0 -28
- package/corpus/templates/slides/app/components/ui/collapsible.tsx +0 -9
- package/corpus/templates/slides/app/components/ui/command.tsx +0 -154
- package/corpus/templates/slides/app/components/ui/context-menu.tsx +0 -202
- package/corpus/templates/slides/app/components/ui/dialog.tsx +0 -130
- package/corpus/templates/slides/app/components/ui/drawer.tsx +0 -116
- package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +0 -212
- package/corpus/templates/slides/app/components/ui/form.tsx +0 -177
- package/corpus/templates/slides/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/slides/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/slides/app/components/ui/input.tsx +0 -22
- package/corpus/templates/slides/app/components/ui/label.tsx +0 -24
- package/corpus/templates/slides/app/components/ui/menubar.tsx +0 -234
- package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/slides/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/slides/app/components/ui/popover.tsx +0 -44
- package/corpus/templates/slides/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/slides/app/components/ui/radio-group.tsx +0 -42
- package/corpus/templates/slides/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/slides/app/components/ui/scroll-area.tsx +0 -46
- package/corpus/templates/slides/app/components/ui/select.tsx +0 -158
- package/corpus/templates/slides/app/components/ui/separator.tsx +0 -29
- package/corpus/templates/slides/app/components/ui/sheet.tsx +0 -160
- package/corpus/templates/slides/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/slides/app/components/ui/skeleton.tsx +0 -15
- package/corpus/templates/slides/app/components/ui/slider.tsx +0 -26
- package/corpus/templates/slides/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/slides/app/components/ui/spinner.tsx +0 -17
- package/corpus/templates/slides/app/components/ui/switch.tsx +0 -27
- package/corpus/templates/slides/app/components/ui/table.tsx +0 -117
- package/corpus/templates/slides/app/components/ui/tabs.tsx +0 -53
- package/corpus/templates/slides/app/components/ui/textarea.tsx +0 -23
- package/corpus/templates/slides/app/components/ui/toast.tsx +0 -127
- package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -33
- package/corpus/templates/slides/app/components/ui/toggle-group.tsx +0 -59
- package/corpus/templates/slides/app/components/ui/toggle.tsx +0 -43
- package/corpus/templates/slides/app/components/ui/tooltip.tsx +0 -30
- package/corpus/templates/slides/app/components/ui/use-toast.ts +0 -3
- package/corpus/templates/slides/app/hooks/use-mobile.tsx +0 -21
- package/corpus/templates/slides/app/hooks/use-toast.ts +0 -188
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/client/ErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/client/ErrorBoundary.tsx"],"names":[],"mappings":"AAkWA,wBAAgB,aAAa,gCAI5B"}
|
|
@@ -3,8 +3,10 @@ import { useEffect, useState } from "react";
|
|
|
3
3
|
import { isRouteErrorResponse, useInRouterContext, useRouteError, } from "react-router";
|
|
4
4
|
import { DEFAULT_LOCALE, LOCALE_HYDRATION_GLOBAL, LOCALE_STORAGE_KEY, normalizeLocaleCode, } from "../localization/shared.js";
|
|
5
5
|
import { appPath } from "./api-path.js";
|
|
6
|
+
import { ErrorReportActions } from "./ErrorReportActions.js";
|
|
6
7
|
import { isDynamicImportFailureMessage, recoverFromStaleChunkError, } from "./route-chunk-recovery.js";
|
|
7
|
-
const
|
|
8
|
+
const primaryActionClassName = "inline-flex h-9 items-center gap-1.5 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow-sm hover:bg-primary/90 cursor-pointer";
|
|
9
|
+
const secondaryActionClassName = "inline-flex h-9 cursor-pointer items-center gap-1.5 rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground shadow-sm hover:bg-accent";
|
|
8
10
|
const errorCopy = {
|
|
9
11
|
"en-US": {
|
|
10
12
|
loadingLatest: "Loading the latest version...",
|
|
@@ -15,6 +17,9 @@ const errorCopy = {
|
|
|
15
17
|
statusTitle: (status) => `${status} Error`,
|
|
16
18
|
goHome: "Go home",
|
|
17
19
|
reload: "Reload",
|
|
20
|
+
sendFeedback: "Send feedback",
|
|
21
|
+
feedbackPlaceholder: "Describe what happened before this error appeared.",
|
|
22
|
+
openGitHubIssue: "Open GitHub issue",
|
|
18
23
|
},
|
|
19
24
|
"zh-CN": {
|
|
20
25
|
loadingLatest: "正在加载最新版本...",
|
|
@@ -25,6 +30,9 @@ const errorCopy = {
|
|
|
25
30
|
statusTitle: (status) => `${status} 错误`,
|
|
26
31
|
goHome: "回到首页",
|
|
27
32
|
reload: "重新加载",
|
|
33
|
+
sendFeedback: "发送反馈",
|
|
34
|
+
feedbackPlaceholder: "描述此错误出现前发生了什么。",
|
|
35
|
+
openGitHubIssue: "打开 GitHub issue",
|
|
28
36
|
},
|
|
29
37
|
"zh-TW": {
|
|
30
38
|
loadingLatest: "正在載入最新版本...",
|
|
@@ -35,6 +43,9 @@ const errorCopy = {
|
|
|
35
43
|
statusTitle: (status) => `${status} 錯誤`,
|
|
36
44
|
goHome: "回首頁",
|
|
37
45
|
reload: "重新載入",
|
|
46
|
+
sendFeedback: "傳送意見回饋",
|
|
47
|
+
feedbackPlaceholder: "描述此錯誤出現前發生了什麼。",
|
|
48
|
+
openGitHubIssue: "開啟 GitHub issue",
|
|
38
49
|
},
|
|
39
50
|
"es-ES": {
|
|
40
51
|
loadingLatest: "Cargando la versión más reciente...",
|
|
@@ -45,6 +56,9 @@ const errorCopy = {
|
|
|
45
56
|
statusTitle: (status) => `Error ${status}`,
|
|
46
57
|
goHome: "Ir al inicio",
|
|
47
58
|
reload: "Recargar",
|
|
59
|
+
sendFeedback: "Enviar comentarios",
|
|
60
|
+
feedbackPlaceholder: "Describe qué pasó antes de que apareciera este error.",
|
|
61
|
+
openGitHubIssue: "Abrir issue en GitHub",
|
|
48
62
|
},
|
|
49
63
|
"fr-FR": {
|
|
50
64
|
loadingLatest: "Chargement de la dernière version...",
|
|
@@ -55,6 +69,9 @@ const errorCopy = {
|
|
|
55
69
|
statusTitle: (status) => `Erreur ${status}`,
|
|
56
70
|
goHome: "Accueil",
|
|
57
71
|
reload: "Recharger",
|
|
72
|
+
sendFeedback: "Envoyer un retour",
|
|
73
|
+
feedbackPlaceholder: "Décrivez ce qui s'est passé avant cette erreur.",
|
|
74
|
+
openGitHubIssue: "Ouvrir une issue GitHub",
|
|
58
75
|
},
|
|
59
76
|
"de-DE": {
|
|
60
77
|
loadingLatest: "Neueste Version wird geladen...",
|
|
@@ -65,6 +82,9 @@ const errorCopy = {
|
|
|
65
82
|
statusTitle: (status) => `Fehler ${status}`,
|
|
66
83
|
goHome: "Zur Startseite",
|
|
67
84
|
reload: "Neu laden",
|
|
85
|
+
sendFeedback: "Feedback senden",
|
|
86
|
+
feedbackPlaceholder: "Beschreiben Sie, was vor diesem Fehler passiert ist.",
|
|
87
|
+
openGitHubIssue: "GitHub-Issue öffnen",
|
|
68
88
|
},
|
|
69
89
|
"ja-JP": {
|
|
70
90
|
loadingLatest: "最新バージョンを読み込み中...",
|
|
@@ -75,6 +95,9 @@ const errorCopy = {
|
|
|
75
95
|
statusTitle: (status) => `${status} エラー`,
|
|
76
96
|
goHome: "ホームへ",
|
|
77
97
|
reload: "再読み込み",
|
|
98
|
+
sendFeedback: "フィードバックを送信",
|
|
99
|
+
feedbackPlaceholder: "このエラーの直前に起きたことを説明してください。",
|
|
100
|
+
openGitHubIssue: "GitHub issue を開く",
|
|
78
101
|
},
|
|
79
102
|
"ko-KR": {
|
|
80
103
|
loadingLatest: "최신 버전을 불러오는 중...",
|
|
@@ -85,6 +108,9 @@ const errorCopy = {
|
|
|
85
108
|
statusTitle: (status) => `${status} 오류`,
|
|
86
109
|
goHome: "홈으로 이동",
|
|
87
110
|
reload: "새로고침",
|
|
111
|
+
sendFeedback: "피드백 보내기",
|
|
112
|
+
feedbackPlaceholder: "이 오류가 나타나기 전에 무슨 일이 있었는지 적어 주세요.",
|
|
113
|
+
openGitHubIssue: "GitHub issue 열기",
|
|
88
114
|
},
|
|
89
115
|
"pt-BR": {
|
|
90
116
|
loadingLatest: "Carregando a versão mais recente...",
|
|
@@ -95,6 +121,9 @@ const errorCopy = {
|
|
|
95
121
|
statusTitle: (status) => `Erro ${status}`,
|
|
96
122
|
goHome: "Ir para início",
|
|
97
123
|
reload: "Recarregar",
|
|
124
|
+
sendFeedback: "Enviar feedback",
|
|
125
|
+
feedbackPlaceholder: "Descreva o que aconteceu antes deste erro aparecer.",
|
|
126
|
+
openGitHubIssue: "Abrir issue no GitHub",
|
|
98
127
|
},
|
|
99
128
|
"hi-IN": {
|
|
100
129
|
loadingLatest: "नवीनतम संस्करण लोड हो रहा है...",
|
|
@@ -105,6 +134,9 @@ const errorCopy = {
|
|
|
105
134
|
statusTitle: (status) => `${status} त्रुटि`,
|
|
106
135
|
goHome: "होम पर जाएं",
|
|
107
136
|
reload: "रीलोड करें",
|
|
137
|
+
sendFeedback: "फ़ीडबैक भेजें",
|
|
138
|
+
feedbackPlaceholder: "इस त्रुटि से पहले क्या हुआ, उसका वर्णन करें।",
|
|
139
|
+
openGitHubIssue: "GitHub issue खोलें",
|
|
108
140
|
},
|
|
109
141
|
"ar-SA": {
|
|
110
142
|
loadingLatest: "جار تحميل أحدث إصدار...",
|
|
@@ -115,6 +147,9 @@ const errorCopy = {
|
|
|
115
147
|
statusTitle: (status) => `خطأ ${status}`,
|
|
116
148
|
goHome: "العودة للرئيسية",
|
|
117
149
|
reload: "إعادة التحميل",
|
|
150
|
+
sendFeedback: "إرسال الملاحظات",
|
|
151
|
+
feedbackPlaceholder: "صف ما حدث قبل ظهور هذا الخطأ.",
|
|
152
|
+
openGitHubIssue: "فتح مشكلة في GitHub",
|
|
118
153
|
},
|
|
119
154
|
};
|
|
120
155
|
function readErrorLocale() {
|
|
@@ -224,7 +259,7 @@ function ErrorScreen({ error }) {
|
|
|
224
259
|
if (typeof console !== "undefined" && error) {
|
|
225
260
|
console.error("[ErrorBoundary]", error);
|
|
226
261
|
}
|
|
227
|
-
return (_jsx("main", { className: "flex items-center justify-center min-h-screen p-4 bg-background text-foreground", children: _jsxs("div", { className: "flex flex-col items-center text-center max-w-md", children: [status && (_jsx("span", { className: "text-7xl font-bold tracking-tight text-muted-foreground/40", children: status })), _jsx("h1", { className: "mt-3 text-2xl font-semibold", children: title }), _jsx("p", { className: "mt-2 text-muted-foreground text-sm", children: details }), _jsx("a", { href: appPath("/"), className:
|
|
262
|
+
return (_jsx("main", { className: "flex items-center justify-center min-h-screen p-4 bg-background text-foreground", children: _jsxs("div", { className: "flex flex-col items-center text-center max-w-md", children: [status && (_jsx("span", { className: "text-7xl font-bold tracking-tight text-muted-foreground/40", children: status })), _jsx("h1", { className: "mt-3 text-2xl font-semibold", children: title }), _jsx("p", { className: "mt-2 text-muted-foreground text-sm", children: details }), _jsxs("div", { className: "mt-6 flex flex-wrap justify-center gap-2", children: [_jsx("a", { href: appPath("/"), className: primaryActionClassName, children: copy.goHome }), _jsx("button", { type: "button", onClick: () => window.location.reload(), className: secondaryActionClassName, children: copy.reload }), _jsx(ErrorReportActions, { appName: "Agent Native", title: title, details: details, status: status, issueTitle: `Error screen: ${title}`, feedbackLabel: copy.sendFeedback, feedbackPlaceholder: copy.feedbackPlaceholder, githubLabel: copy.openGitHubIssue, feedbackClassName: "h-9", githubClassName: "h-9" })] }), stack && (_jsx("pre", { className: "mt-6 w-full text-start text-xs overflow-auto p-4 bg-muted rounded", children: _jsx("code", { children: stack }) }))] }) }));
|
|
228
263
|
}
|
|
229
264
|
function RoutedErrorScreen() {
|
|
230
265
|
return _jsx(ErrorScreen, { error: useRouteError() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/client/ErrorBoundary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n isRouteErrorResponse,\n useInRouterContext,\n useRouteError,\n} from \"react-router\";\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_STORAGE_KEY,\n normalizeLocaleCode,\n type LocaleCode,\n} from \"../localization/shared.js\";\nimport { appPath } from \"./api-path.js\";\nimport {\n isDynamicImportFailureMessage,\n recoverFromStaleChunkError,\n} from \"./route-chunk-recovery.js\";\n\nconst homeLinkClassName =\n \"mt-6 inline-flex items-center gap-1.5 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm hover:bg-primary/90 cursor-pointer\";\n\nconst errorCopy: Record<\n LocaleCode,\n {\n loadingLatest: string;\n genericTitle: string;\n genericDetails: string;\n notFoundTitle: string;\n notFoundDetails: string;\n statusTitle: (status: number) => string;\n goHome: string;\n reload: string;\n }\n> = {\n \"en-US\": {\n loadingLatest: \"Loading the latest version...\",\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails: \"We couldn't find this page.\",\n statusTitle: (status) => `${status} Error`,\n goHome: \"Go home\",\n reload: \"Reload\",\n },\n \"zh-CN\": {\n loadingLatest: \"正在加载最新版本...\",\n genericTitle: \"出错了\",\n genericDetails: \"发生了意外错误。\",\n notFoundTitle: \"页面未找到\",\n notFoundDetails: \"我们找不到这个页面。\",\n statusTitle: (status) => `${status} 错误`,\n goHome: \"回到首页\",\n reload: \"重新加载\",\n },\n \"zh-TW\": {\n loadingLatest: \"正在載入最新版本...\",\n genericTitle: \"發生錯誤\",\n genericDetails: \"發生未預期的錯誤。\",\n notFoundTitle: \"找不到頁面\",\n notFoundDetails: \"找不到這個頁面。\",\n statusTitle: (status) => `${status} 錯誤`,\n goHome: \"回首頁\",\n reload: \"重新載入\",\n },\n \"es-ES\": {\n loadingLatest: \"Cargando la versión más reciente...\",\n genericTitle: \"Algo salió mal\",\n genericDetails: \"Se produjo un error inesperado.\",\n notFoundTitle: \"Página no encontrada\",\n notFoundDetails: \"No pudimos encontrar esta página.\",\n statusTitle: (status) => `Error ${status}`,\n goHome: \"Ir al inicio\",\n reload: \"Recargar\",\n },\n \"fr-FR\": {\n loadingLatest: \"Chargement de la dernière version...\",\n genericTitle: \"Un problème est survenu\",\n genericDetails: \"Une erreur inattendue s'est produite.\",\n notFoundTitle: \"Page introuvable\",\n notFoundDetails: \"Nous n'avons pas trouvé cette page.\",\n statusTitle: (status) => `Erreur ${status}`,\n goHome: \"Accueil\",\n reload: \"Recharger\",\n },\n \"de-DE\": {\n loadingLatest: \"Neueste Version wird geladen...\",\n genericTitle: \"Etwas ist schiefgelaufen\",\n genericDetails: \"Ein unerwarteter Fehler ist aufgetreten.\",\n notFoundTitle: \"Seite nicht gefunden\",\n notFoundDetails: \"Wir konnten diese Seite nicht finden.\",\n statusTitle: (status) => `Fehler ${status}`,\n goHome: \"Zur Startseite\",\n reload: \"Neu laden\",\n },\n \"ja-JP\": {\n loadingLatest: \"最新バージョンを読み込み中...\",\n genericTitle: \"問題が発生しました\",\n genericDetails: \"予期しないエラーが発生しました。\",\n notFoundTitle: \"ページが見つかりません\",\n notFoundDetails: \"このページは見つかりませんでした。\",\n statusTitle: (status) => `${status} エラー`,\n goHome: \"ホームへ\",\n reload: \"再読み込み\",\n },\n \"ko-KR\": {\n loadingLatest: \"최신 버전을 불러오는 중...\",\n genericTitle: \"문제가 발생했습니다\",\n genericDetails: \"예기치 않은 오류가 발생했습니다.\",\n notFoundTitle: \"페이지를 찾을 수 없음\",\n notFoundDetails: \"이 페이지를 찾을 수 없습니다.\",\n statusTitle: (status) => `${status} 오류`,\n goHome: \"홈으로 이동\",\n reload: \"새로고침\",\n },\n \"pt-BR\": {\n loadingLatest: \"Carregando a versão mais recente...\",\n genericTitle: \"Algo deu errado\",\n genericDetails: \"Ocorreu um erro inesperado.\",\n notFoundTitle: \"Página não encontrada\",\n notFoundDetails: \"Não encontramos esta página.\",\n statusTitle: (status) => `Erro ${status}`,\n goHome: \"Ir para início\",\n reload: \"Recarregar\",\n },\n \"hi-IN\": {\n loadingLatest: \"नवीनतम संस्करण लोड हो रहा है...\",\n genericTitle: \"कुछ गलत हो गया\",\n genericDetails: \"एक अनपेक्षित त्रुटि हुई।\",\n notFoundTitle: \"पेज नहीं मिला\",\n notFoundDetails: \"हमें यह पेज नहीं मिला।\",\n statusTitle: (status) => `${status} त्रुटि`,\n goHome: \"होम पर जाएं\",\n reload: \"रीलोड करें\",\n },\n \"ar-SA\": {\n loadingLatest: \"جار تحميل أحدث إصدار...\",\n genericTitle: \"حدث خطأ ما\",\n genericDetails: \"حدث خطأ غير متوقع.\",\n notFoundTitle: \"الصفحة غير موجودة\",\n notFoundDetails: \"تعذر العثور على هذه الصفحة.\",\n statusTitle: (status) => `خطأ ${status}`,\n goHome: \"العودة للرئيسية\",\n reload: \"إعادة التحميل\",\n },\n};\n\nfunction readErrorLocale(): LocaleCode {\n if (typeof window === \"undefined\") return DEFAULT_LOCALE;\n const hydrated = (window as any)[LOCALE_HYDRATION_GLOBAL]?.locale;\n const stored = window.localStorage?.getItem(LOCALE_STORAGE_KEY);\n return (\n normalizeLocaleCode(hydrated) ??\n normalizeLocaleCode(stored) ??\n DEFAULT_LOCALE\n );\n}\n\nfunction useErrorCopy() {\n const [locale, setLocale] = useState<LocaleCode>(readErrorLocale);\n useEffect(() => {\n setLocale(readErrorLocale());\n }, []);\n return errorCopy[locale] ?? errorCopy[DEFAULT_LOCALE];\n}\n\nfunction useApplyThemeClass() {\n useEffect(() => {\n const root = document.documentElement;\n if (root.classList.contains(\"dark\") || root.classList.contains(\"light\"))\n return;\n try {\n const stored = localStorage.getItem(\"theme\");\n if (stored === \"dark\") {\n root.classList.add(\"dark\");\n } else if (stored === \"light\") {\n root.classList.add(\"light\");\n } else if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n root.classList.add(\"dark\");\n }\n } catch {}\n }, []);\n}\n\nfunction errorMessageOf(error: unknown): string {\n if (error instanceof Error) return error.message;\n return typeof error === \"string\" ? error : \"\";\n}\n\n/**\n * When a route renders against a stale lazy chunk after a deploy (the chunk's\n * hashed filename no longer exists), the import rejection surfaces here. Reload\n * once to fetch fresh assets instead of stranding the user on an error screen.\n * The reload is loop-guarded; if it cannot recover, fall back to the screen.\n */\nfunction useStaleChunkRecovery(error: unknown): boolean {\n const [recovering, setRecovering] = useState(() =>\n isDynamicImportFailureMessage(errorMessageOf(error)),\n );\n useEffect(() => {\n if (!isDynamicImportFailureMessage(errorMessageOf(error))) {\n setRecovering(false);\n return;\n }\n if (!recoverFromStaleChunkError(error)) setRecovering(false);\n }, [error]);\n return recovering;\n}\n\nfunction UpdatingScreen() {\n const copy = useErrorCopy();\n return (\n <main className=\"flex items-center justify-center min-h-screen p-4 bg-background text-foreground\">\n <p className=\"text-muted-foreground text-sm\">{copy.loadingLatest}</p>\n </main>\n );\n}\n\nfunction ErrorScreen({ error }: { error: unknown }) {\n const copy = useErrorCopy();\n const recovering = useStaleChunkRecovery(error);\n // While auto-recovering a stale chunk, show a neutral state and skip the\n // console.error below so the transient, self-healing failure does not get\n // reported as a hard error.\n if (recovering) return <UpdatingScreen />;\n\n let status: number | null = null;\n let title = copy.genericTitle;\n let details = copy.genericDetails;\n let stack: string | undefined;\n\n if (isRouteErrorResponse(error)) {\n status = error.status;\n if (error.status === 404) {\n title = copy.notFoundTitle;\n details = copy.notFoundDetails;\n } else {\n title = copy.statusTitle(error.status);\n details = error.statusText || details;\n }\n } else if (error instanceof Error) {\n // Always surface the underlying error message — a generic\n // \"An unexpected error occurred.\" in production tells users (and us)\n // nothing. The stack trace is still gated to dev so we don't leak\n // internals to end users.\n if (error.message) {\n details = error.message;\n }\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\"\n ) {\n stack = error.stack;\n }\n } else if (typeof error === \"string\" && error) {\n details = error;\n }\n\n // Log to the console so the underlying failure is recoverable from\n // browser devtools / Sentry even when the UI hides the stack.\n if (typeof console !== \"undefined\" && error) {\n console.error(\"[ErrorBoundary]\", error);\n }\n\n return (\n <main className=\"flex items-center justify-center min-h-screen p-4 bg-background text-foreground\">\n <div className=\"flex flex-col items-center text-center max-w-md\">\n {status && (\n <span className=\"text-7xl font-bold tracking-tight text-muted-foreground/40\">\n {status}\n </span>\n )}\n <h1 className=\"mt-3 text-2xl font-semibold\">{title}</h1>\n <p className=\"mt-2 text-muted-foreground text-sm\">{details}</p>\n <a href={appPath(\"/\")} className={homeLinkClassName}>\n {copy.goHome}\n </a>\n <button\n type=\"button\"\n onClick={() => window.location.reload()}\n className=\"mt-3 inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-border bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm hover:bg-accent\"\n >\n {copy.reload}\n </button>\n {stack && (\n <pre className=\"mt-6 w-full text-start text-xs overflow-auto p-4 bg-muted rounded\">\n <code>{stack}</code>\n </pre>\n )}\n </div>\n </main>\n );\n}\n\nfunction RoutedErrorScreen() {\n return <ErrorScreen error={useRouteError()} />;\n}\n\nexport function ErrorBoundary() {\n useApplyThemeClass();\n if (!useInRouterContext()) return <ErrorScreen error={undefined} />;\n return <RoutedErrorScreen />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/client/ErrorBoundary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n isRouteErrorResponse,\n useInRouterContext,\n useRouteError,\n} from \"react-router\";\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_STORAGE_KEY,\n normalizeLocaleCode,\n type LocaleCode,\n} from \"../localization/shared.js\";\nimport { appPath } from \"./api-path.js\";\nimport { ErrorReportActions } from \"./ErrorReportActions.js\";\nimport {\n isDynamicImportFailureMessage,\n recoverFromStaleChunkError,\n} from \"./route-chunk-recovery.js\";\n\nconst primaryActionClassName =\n \"inline-flex h-9 items-center gap-1.5 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow-sm hover:bg-primary/90 cursor-pointer\";\nconst secondaryActionClassName =\n \"inline-flex h-9 cursor-pointer items-center gap-1.5 rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground shadow-sm hover:bg-accent\";\n\nconst errorCopy: Record<\n LocaleCode,\n {\n loadingLatest: string;\n genericTitle: string;\n genericDetails: string;\n notFoundTitle: string;\n notFoundDetails: string;\n statusTitle: (status: number) => string;\n goHome: string;\n reload: string;\n sendFeedback: string;\n feedbackPlaceholder: string;\n openGitHubIssue: string;\n }\n> = {\n \"en-US\": {\n loadingLatest: \"Loading the latest version...\",\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails: \"We couldn't find this page.\",\n statusTitle: (status) => `${status} Error`,\n goHome: \"Go home\",\n reload: \"Reload\",\n sendFeedback: \"Send feedback\",\n feedbackPlaceholder: \"Describe what happened before this error appeared.\",\n openGitHubIssue: \"Open GitHub issue\",\n },\n \"zh-CN\": {\n loadingLatest: \"正在加载最新版本...\",\n genericTitle: \"出错了\",\n genericDetails: \"发生了意外错误。\",\n notFoundTitle: \"页面未找到\",\n notFoundDetails: \"我们找不到这个页面。\",\n statusTitle: (status) => `${status} 错误`,\n goHome: \"回到首页\",\n reload: \"重新加载\",\n sendFeedback: \"发送反馈\",\n feedbackPlaceholder: \"描述此错误出现前发生了什么。\",\n openGitHubIssue: \"打开 GitHub issue\",\n },\n \"zh-TW\": {\n loadingLatest: \"正在載入最新版本...\",\n genericTitle: \"發生錯誤\",\n genericDetails: \"發生未預期的錯誤。\",\n notFoundTitle: \"找不到頁面\",\n notFoundDetails: \"找不到這個頁面。\",\n statusTitle: (status) => `${status} 錯誤`,\n goHome: \"回首頁\",\n reload: \"重新載入\",\n sendFeedback: \"傳送意見回饋\",\n feedbackPlaceholder: \"描述此錯誤出現前發生了什麼。\",\n openGitHubIssue: \"開啟 GitHub issue\",\n },\n \"es-ES\": {\n loadingLatest: \"Cargando la versión más reciente...\",\n genericTitle: \"Algo salió mal\",\n genericDetails: \"Se produjo un error inesperado.\",\n notFoundTitle: \"Página no encontrada\",\n notFoundDetails: \"No pudimos encontrar esta página.\",\n statusTitle: (status) => `Error ${status}`,\n goHome: \"Ir al inicio\",\n reload: \"Recargar\",\n sendFeedback: \"Enviar comentarios\",\n feedbackPlaceholder:\n \"Describe qué pasó antes de que apareciera este error.\",\n openGitHubIssue: \"Abrir issue en GitHub\",\n },\n \"fr-FR\": {\n loadingLatest: \"Chargement de la dernière version...\",\n genericTitle: \"Un problème est survenu\",\n genericDetails: \"Une erreur inattendue s'est produite.\",\n notFoundTitle: \"Page introuvable\",\n notFoundDetails: \"Nous n'avons pas trouvé cette page.\",\n statusTitle: (status) => `Erreur ${status}`,\n goHome: \"Accueil\",\n reload: \"Recharger\",\n sendFeedback: \"Envoyer un retour\",\n feedbackPlaceholder: \"Décrivez ce qui s'est passé avant cette erreur.\",\n openGitHubIssue: \"Ouvrir une issue GitHub\",\n },\n \"de-DE\": {\n loadingLatest: \"Neueste Version wird geladen...\",\n genericTitle: \"Etwas ist schiefgelaufen\",\n genericDetails: \"Ein unerwarteter Fehler ist aufgetreten.\",\n notFoundTitle: \"Seite nicht gefunden\",\n notFoundDetails: \"Wir konnten diese Seite nicht finden.\",\n statusTitle: (status) => `Fehler ${status}`,\n goHome: \"Zur Startseite\",\n reload: \"Neu laden\",\n sendFeedback: \"Feedback senden\",\n feedbackPlaceholder: \"Beschreiben Sie, was vor diesem Fehler passiert ist.\",\n openGitHubIssue: \"GitHub-Issue öffnen\",\n },\n \"ja-JP\": {\n loadingLatest: \"最新バージョンを読み込み中...\",\n genericTitle: \"問題が発生しました\",\n genericDetails: \"予期しないエラーが発生しました。\",\n notFoundTitle: \"ページが見つかりません\",\n notFoundDetails: \"このページは見つかりませんでした。\",\n statusTitle: (status) => `${status} エラー`,\n goHome: \"ホームへ\",\n reload: \"再読み込み\",\n sendFeedback: \"フィードバックを送信\",\n feedbackPlaceholder: \"このエラーの直前に起きたことを説明してください。\",\n openGitHubIssue: \"GitHub issue を開く\",\n },\n \"ko-KR\": {\n loadingLatest: \"최신 버전을 불러오는 중...\",\n genericTitle: \"문제가 발생했습니다\",\n genericDetails: \"예기치 않은 오류가 발생했습니다.\",\n notFoundTitle: \"페이지를 찾을 수 없음\",\n notFoundDetails: \"이 페이지를 찾을 수 없습니다.\",\n statusTitle: (status) => `${status} 오류`,\n goHome: \"홈으로 이동\",\n reload: \"새로고침\",\n sendFeedback: \"피드백 보내기\",\n feedbackPlaceholder:\n \"이 오류가 나타나기 전에 무슨 일이 있었는지 적어 주세요.\",\n openGitHubIssue: \"GitHub issue 열기\",\n },\n \"pt-BR\": {\n loadingLatest: \"Carregando a versão mais recente...\",\n genericTitle: \"Algo deu errado\",\n genericDetails: \"Ocorreu um erro inesperado.\",\n notFoundTitle: \"Página não encontrada\",\n notFoundDetails: \"Não encontramos esta página.\",\n statusTitle: (status) => `Erro ${status}`,\n goHome: \"Ir para início\",\n reload: \"Recarregar\",\n sendFeedback: \"Enviar feedback\",\n feedbackPlaceholder: \"Descreva o que aconteceu antes deste erro aparecer.\",\n openGitHubIssue: \"Abrir issue no GitHub\",\n },\n \"hi-IN\": {\n loadingLatest: \"नवीनतम संस्करण लोड हो रहा है...\",\n genericTitle: \"कुछ गलत हो गया\",\n genericDetails: \"एक अनपेक्षित त्रुटि हुई।\",\n notFoundTitle: \"पेज नहीं मिला\",\n notFoundDetails: \"हमें यह पेज नहीं मिला।\",\n statusTitle: (status) => `${status} त्रुटि`,\n goHome: \"होम पर जाएं\",\n reload: \"रीलोड करें\",\n sendFeedback: \"फ़ीडबैक भेजें\",\n feedbackPlaceholder: \"इस त्रुटि से पहले क्या हुआ, उसका वर्णन करें।\",\n openGitHubIssue: \"GitHub issue खोलें\",\n },\n \"ar-SA\": {\n loadingLatest: \"جار تحميل أحدث إصدار...\",\n genericTitle: \"حدث خطأ ما\",\n genericDetails: \"حدث خطأ غير متوقع.\",\n notFoundTitle: \"الصفحة غير موجودة\",\n notFoundDetails: \"تعذر العثور على هذه الصفحة.\",\n statusTitle: (status) => `خطأ ${status}`,\n goHome: \"العودة للرئيسية\",\n reload: \"إعادة التحميل\",\n sendFeedback: \"إرسال الملاحظات\",\n feedbackPlaceholder: \"صف ما حدث قبل ظهور هذا الخطأ.\",\n openGitHubIssue: \"فتح مشكلة في GitHub\",\n },\n};\n\nfunction readErrorLocale(): LocaleCode {\n if (typeof window === \"undefined\") return DEFAULT_LOCALE;\n const hydrated = (window as any)[LOCALE_HYDRATION_GLOBAL]?.locale;\n const stored = window.localStorage?.getItem(LOCALE_STORAGE_KEY);\n return (\n normalizeLocaleCode(hydrated) ??\n normalizeLocaleCode(stored) ??\n DEFAULT_LOCALE\n );\n}\n\nfunction useErrorCopy() {\n const [locale, setLocale] = useState<LocaleCode>(readErrorLocale);\n useEffect(() => {\n setLocale(readErrorLocale());\n }, []);\n return errorCopy[locale] ?? errorCopy[DEFAULT_LOCALE];\n}\n\nfunction useApplyThemeClass() {\n useEffect(() => {\n const root = document.documentElement;\n if (root.classList.contains(\"dark\") || root.classList.contains(\"light\"))\n return;\n try {\n const stored = localStorage.getItem(\"theme\");\n if (stored === \"dark\") {\n root.classList.add(\"dark\");\n } else if (stored === \"light\") {\n root.classList.add(\"light\");\n } else if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n root.classList.add(\"dark\");\n }\n } catch {}\n }, []);\n}\n\nfunction errorMessageOf(error: unknown): string {\n if (error instanceof Error) return error.message;\n return typeof error === \"string\" ? error : \"\";\n}\n\n/**\n * When a route renders against a stale lazy chunk after a deploy (the chunk's\n * hashed filename no longer exists), the import rejection surfaces here. Reload\n * once to fetch fresh assets instead of stranding the user on an error screen.\n * The reload is loop-guarded; if it cannot recover, fall back to the screen.\n */\nfunction useStaleChunkRecovery(error: unknown): boolean {\n const [recovering, setRecovering] = useState(() =>\n isDynamicImportFailureMessage(errorMessageOf(error)),\n );\n useEffect(() => {\n if (!isDynamicImportFailureMessage(errorMessageOf(error))) {\n setRecovering(false);\n return;\n }\n if (!recoverFromStaleChunkError(error)) setRecovering(false);\n }, [error]);\n return recovering;\n}\n\nfunction UpdatingScreen() {\n const copy = useErrorCopy();\n return (\n <main className=\"flex items-center justify-center min-h-screen p-4 bg-background text-foreground\">\n <p className=\"text-muted-foreground text-sm\">{copy.loadingLatest}</p>\n </main>\n );\n}\n\nfunction ErrorScreen({ error }: { error: unknown }) {\n const copy = useErrorCopy();\n const recovering = useStaleChunkRecovery(error);\n // While auto-recovering a stale chunk, show a neutral state and skip the\n // console.error below so the transient, self-healing failure does not get\n // reported as a hard error.\n if (recovering) return <UpdatingScreen />;\n\n let status: number | null = null;\n let title = copy.genericTitle;\n let details = copy.genericDetails;\n let stack: string | undefined;\n\n if (isRouteErrorResponse(error)) {\n status = error.status;\n if (error.status === 404) {\n title = copy.notFoundTitle;\n details = copy.notFoundDetails;\n } else {\n title = copy.statusTitle(error.status);\n details = error.statusText || details;\n }\n } else if (error instanceof Error) {\n // Always surface the underlying error message — a generic\n // \"An unexpected error occurred.\" in production tells users (and us)\n // nothing. The stack trace is still gated to dev so we don't leak\n // internals to end users.\n if (error.message) {\n details = error.message;\n }\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\"\n ) {\n stack = error.stack;\n }\n } else if (typeof error === \"string\" && error) {\n details = error;\n }\n\n // Log to the console so the underlying failure is recoverable from\n // browser devtools / Sentry even when the UI hides the stack.\n if (typeof console !== \"undefined\" && error) {\n console.error(\"[ErrorBoundary]\", error);\n }\n\n return (\n <main className=\"flex items-center justify-center min-h-screen p-4 bg-background text-foreground\">\n <div className=\"flex flex-col items-center text-center max-w-md\">\n {status && (\n <span className=\"text-7xl font-bold tracking-tight text-muted-foreground/40\">\n {status}\n </span>\n )}\n <h1 className=\"mt-3 text-2xl font-semibold\">{title}</h1>\n <p className=\"mt-2 text-muted-foreground text-sm\">{details}</p>\n <div className=\"mt-6 flex flex-wrap justify-center gap-2\">\n <a href={appPath(\"/\")} className={primaryActionClassName}>\n {copy.goHome}\n </a>\n <button\n type=\"button\"\n onClick={() => window.location.reload()}\n className={secondaryActionClassName}\n >\n {copy.reload}\n </button>\n <ErrorReportActions\n appName=\"Agent Native\"\n title={title}\n details={details}\n status={status}\n issueTitle={`Error screen: ${title}`}\n feedbackLabel={copy.sendFeedback}\n feedbackPlaceholder={copy.feedbackPlaceholder}\n githubLabel={copy.openGitHubIssue}\n feedbackClassName=\"h-9\"\n githubClassName=\"h-9\"\n />\n </div>\n {stack && (\n <pre className=\"mt-6 w-full text-start text-xs overflow-auto p-4 bg-muted rounded\">\n <code>{stack}</code>\n </pre>\n )}\n </div>\n </main>\n );\n}\n\nfunction RoutedErrorScreen() {\n return <ErrorScreen error={useRouteError()} />;\n}\n\nexport function ErrorBoundary() {\n useApplyThemeClass();\n if (!useInRouterContext()) return <ErrorScreen error={undefined} />;\n return <RoutedErrorScreen />;\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ErrorReportTemplateOptions } from "./error-reporting.js";
|
|
2
|
+
export interface ErrorReportActionsProps extends ErrorReportTemplateOptions {
|
|
3
|
+
feedbackLabel?: string;
|
|
4
|
+
feedbackPlaceholder?: string;
|
|
5
|
+
githubLabel?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
feedbackClassName?: string;
|
|
8
|
+
githubClassName?: string;
|
|
9
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
10
|
+
align?: "start" | "center" | "end";
|
|
11
|
+
}
|
|
12
|
+
export declare function ErrorReportActions({ feedbackLabel, feedbackPlaceholder, githubLabel, className, feedbackClassName, githubClassName, side, align, ...report }: ErrorReportActionsProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=ErrorReportActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorReportActions.d.ts","sourceRoot":"","sources":["../../src/client/ErrorReportActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,uBAAwB,SAAQ,0BAA0B;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,aAA+B,EAC/B,mBAA0E,EAC1E,WAAiC,EACjC,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,IAAY,EACZ,KAAgB,EAChB,GAAG,MAAM,EACV,EAAE,uBAAuB,+BAqCzB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconBrandGithub } from "@tabler/icons-react";
|
|
3
|
+
import { buildErrorReportTemplate, buildGitHubIssueUrl, } from "./error-reporting.js";
|
|
4
|
+
import { FeedbackButton } from "./FeedbackButton.js";
|
|
5
|
+
import { cn } from "./utils.js";
|
|
6
|
+
export function ErrorReportActions({ feedbackLabel = "Send feedback", feedbackPlaceholder = "Describe what happened before this error appeared.", githubLabel = "Open GitHub issue", className, feedbackClassName, githubClassName, side = "top", align = "center", ...report }) {
|
|
7
|
+
const template = buildErrorReportTemplate({
|
|
8
|
+
...report,
|
|
9
|
+
prompt: report.prompt ?? feedbackPlaceholder,
|
|
10
|
+
});
|
|
11
|
+
const githubIssueUrl = buildGitHubIssueUrl(report);
|
|
12
|
+
return (_jsxs("div", { className: cn("flex flex-wrap items-center justify-center gap-2", className), children: [_jsx(FeedbackButton, { variant: "outlined", label: feedbackLabel, placeholder: feedbackPlaceholder, initialValue: template, side: side, align: align, className: cn("h-8 text-xs", feedbackClassName) }), _jsxs("a", { href: githubIssueUrl, target: "_blank", rel: "noreferrer", className: cn("inline-flex h-8 items-center gap-1.5 rounded-md px-2 text-xs text-muted-foreground underline-offset-4 hover:bg-muted/60 hover:text-foreground hover:underline", githubClassName), children: [_jsx(IconBrandGithub, { className: "size-3.5" }), githubLabel] })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ErrorReportActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorReportActions.js","sourceRoot":"","sources":["../../src/client/ErrorReportActions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAahC,MAAM,UAAU,kBAAkB,CAAC,EACjC,aAAa,GAAG,eAAe,EAC/B,mBAAmB,GAAG,oDAAoD,EAC1E,WAAW,GAAG,mBAAmB,EACjC,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,QAAQ,EAChB,GAAG,MAAM,EACe;IACxB,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG,MAAM;QACT,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,mBAAmB;KAC7C,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,kDAAkD,EAClD,SAAS,CACV,aAED,KAAC,cAAc,IACb,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,QAAQ,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAC/C,EACF,aACE,IAAI,EAAE,cAAc,EACpB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAE,EAAE,CACX,+JAA+J,EAC/J,eAAe,CAChB,aAED,KAAC,eAAe,IAAC,SAAS,EAAC,UAAU,GAAG,EACvC,WAAW,IACV,IACA,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { IconBrandGithub } from \"@tabler/icons-react\";\n\nimport {\n buildErrorReportTemplate,\n buildGitHubIssueUrl,\n type ErrorReportTemplateOptions,\n} from \"./error-reporting.js\";\nimport { FeedbackButton } from \"./FeedbackButton.js\";\nimport { cn } from \"./utils.js\";\n\nexport interface ErrorReportActionsProps extends ErrorReportTemplateOptions {\n feedbackLabel?: string;\n feedbackPlaceholder?: string;\n githubLabel?: string;\n className?: string;\n feedbackClassName?: string;\n githubClassName?: string;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n}\n\nexport function ErrorReportActions({\n feedbackLabel = \"Send feedback\",\n feedbackPlaceholder = \"Describe what happened before this error appeared.\",\n githubLabel = \"Open GitHub issue\",\n className,\n feedbackClassName,\n githubClassName,\n side = \"top\",\n align = \"center\",\n ...report\n}: ErrorReportActionsProps) {\n const template = buildErrorReportTemplate({\n ...report,\n prompt: report.prompt ?? feedbackPlaceholder,\n });\n const githubIssueUrl = buildGitHubIssueUrl(report);\n\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center justify-center gap-2\",\n className,\n )}\n >\n <FeedbackButton\n variant=\"outlined\"\n label={feedbackLabel}\n placeholder={feedbackPlaceholder}\n initialValue={template}\n side={side}\n align={align}\n className={cn(\"h-8 text-xs\", feedbackClassName)}\n />\n <a\n href={githubIssueUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={cn(\n \"inline-flex h-8 items-center gap-1.5 rounded-md px-2 text-xs text-muted-foreground underline-offset-4 hover:bg-muted/60 hover:text-foreground hover:underline\",\n githubClassName,\n )}\n >\n <IconBrandGithub className=\"size-3.5\" />\n {githubLabel}\n </a>\n </div>\n );\n}\n"]}
|
|
@@ -14,6 +14,8 @@ export interface FeedbackButtonProps {
|
|
|
14
14
|
align?: "start" | "center" | "end";
|
|
15
15
|
/** Placeholder text for the textarea. */
|
|
16
16
|
placeholder?: string;
|
|
17
|
+
/** Optional text to prefill when the popover opens. */
|
|
18
|
+
initialValue?: string;
|
|
17
19
|
/** Current chat session/thread id, when the host already knows it. */
|
|
18
20
|
chatSessionId?: string | null;
|
|
19
21
|
/** Chat localStorage namespace, when the host uses per-app chat storage. */
|
|
@@ -24,5 +26,5 @@ export interface FeedbackButtonProps {
|
|
|
24
26
|
/** Optional custom trigger element. */
|
|
25
27
|
trigger?: ReactNode;
|
|
26
28
|
}
|
|
27
|
-
export declare function FeedbackButton({ variant, label, url, className, side, align, placeholder, chatSessionId, chatStorageKey, open: controlledOpen, onOpenChange, trigger: customTrigger, }: FeedbackButtonProps): import("react").JSX.Element;
|
|
29
|
+
export declare function FeedbackButton({ variant, label, url, className, side, align, placeholder, initialValue, chatSessionId, chatStorageKey, open: controlledOpen, onOpenChange, trigger: customTrigger, }: FeedbackButtonProps): import("react").JSX.Element;
|
|
28
30
|
//# sourceMappingURL=FeedbackButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAyNf,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,uCAAuC;IACvC,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAeD,wBAAgB,cAAc,CAAC,EAC7B,OAAmB,EACnB,KAAK,EACL,GAA0B,EAC1B,SAAS,EACT,IAAI,EACJ,KAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,OAAO,EAAE,aAAa,GACvB,EAAE,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAyNf,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,uCAAuC;IACvC,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAeD,wBAAgB,cAAc,CAAC,EAC7B,OAAmB,EACnB,KAAK,EACL,GAA0B,EAC1B,SAAS,EACT,IAAI,EACJ,KAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,OAAO,EAAE,aAAa,GACvB,EAAE,mBAAmB,+BA6QrB"}
|
|
@@ -5,7 +5,7 @@ import { IconMessage2, IconCheck } from "@tabler/icons-react";
|
|
|
5
5
|
import { useState, useEffect, useRef, useCallback, } from "react";
|
|
6
6
|
import { DEFAULT_LOCALE } from "../localization/shared.js";
|
|
7
7
|
import { getFeedbackClientContext } from "./feedback-context.js";
|
|
8
|
-
import {
|
|
8
|
+
import { useOptionalLocale } from "./i18n.js";
|
|
9
9
|
import { useSession } from "./use-session.js";
|
|
10
10
|
import { cn } from "./utils.js";
|
|
11
11
|
const DEFAULT_FEEDBACK_URL = "https://forms.agent-native.com/f/agent-native-feedback/_16ewV";
|
|
@@ -194,10 +194,11 @@ const honeypotStyle = {
|
|
|
194
194
|
height: "1px",
|
|
195
195
|
overflow: "hidden",
|
|
196
196
|
};
|
|
197
|
-
export function FeedbackButton({ variant = "sidebar", label, url = DEFAULT_FEEDBACK_URL, className, side, align = "end", placeholder, chatSessionId, chatStorageKey, open: controlledOpen, onOpenChange, trigger: customTrigger, }) {
|
|
197
|
+
export function FeedbackButton({ variant = "sidebar", label, url = DEFAULT_FEEDBACK_URL, className, side, align = "end", placeholder, initialValue, chatSessionId, chatStorageKey, open: controlledOpen, onOpenChange, trigger: customTrigger, }) {
|
|
198
198
|
const target = parseTarget(url);
|
|
199
199
|
const { session } = useSession();
|
|
200
|
-
const
|
|
200
|
+
const localeContext = useOptionalLocale();
|
|
201
|
+
const locale = localeContext?.locale ?? DEFAULT_LOCALE;
|
|
201
202
|
const copy = FEEDBACK_COPY[locale] ?? FEEDBACK_COPY[DEFAULT_LOCALE];
|
|
202
203
|
const resolvedLabel = label ?? copy.label;
|
|
203
204
|
const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
|
|
@@ -221,7 +222,7 @@ export function FeedbackButton({ variant = "sidebar", label, url = DEFAULT_FEEDB
|
|
|
221
222
|
if (!open)
|
|
222
223
|
return;
|
|
223
224
|
openedAtRef.current = Date.now();
|
|
224
|
-
setValue("");
|
|
225
|
+
setValue(initialValue ?? "");
|
|
225
226
|
setHoneypot("");
|
|
226
227
|
setSubmitting(false);
|
|
227
228
|
setSubmitted(false);
|
|
@@ -246,7 +247,7 @@ export function FeedbackButton({ variant = "sidebar", label, url = DEFAULT_FEEDB
|
|
|
246
247
|
closeTimerRef.current = null;
|
|
247
248
|
}
|
|
248
249
|
};
|
|
249
|
-
}, [open, url]);
|
|
250
|
+
}, [copy.invalidUrl, copy.loadError, initialValue, open, url]);
|
|
250
251
|
const submit = useCallback(async (e) => {
|
|
251
252
|
e?.preventDefault();
|
|
252
253
|
if (!target || submitting)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackButton.js","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { IconMessage2, IconCheck } from \"@tabler/icons-react\";\nimport {\n useState,\n useEffect,\n useRef,\n useCallback,\n type CSSProperties,\n type FormEvent,\n type ReactNode,\n} from \"react\";\n\nimport { DEFAULT_LOCALE, type LocaleCode } from \"../localization/shared.js\";\nimport { getFeedbackClientContext } from \"./feedback-context.js\";\nimport { useLocale } from \"./i18n.js\";\nimport { useSession } from \"./use-session.js\";\nimport { cn } from \"./utils.js\";\n\nconst DEFAULT_FEEDBACK_URL =\n \"https://forms.agent-native.com/f/agent-native-feedback/_16ewV\";\n\nfunction isSyntheticAgentNativeAnonymousEmail(\n value: string | null | undefined,\n): boolean {\n return /^anon-[^\\s@]+@agent-native\\.com$/i.test(value ?? \"\");\n}\n\ninterface ParsedTarget {\n endpoint: string;\n slug: string;\n}\n\ninterface FormSchema {\n formId: string;\n fieldId: string;\n}\n\nconst FEEDBACK_COPY: Record<\n LocaleCode,\n {\n label: string;\n placeholder: string;\n submit: string;\n submitting: string;\n success: string;\n loadError: string;\n invalidUrl: string;\n emptyError: string;\n sendError: string;\n keyboardHint: string;\n }\n> = {\n \"en-US\": {\n label: \"Feedback\",\n placeholder: \"What's working, what's broken, or what would you change?\",\n submit: \"Send feedback\",\n submitting: \"Sending...\",\n success: \"Thanks for the feedback!\",\n loadError: \"Couldn't load feedback form\",\n invalidUrl: \"Invalid feedback URL\",\n emptyError: \"Please write something first\",\n sendError: \"Couldn't send feedback\",\n keyboardHint: \"{{shortcut}}+Enter to send\",\n },\n \"zh-CN\": {\n label: \"反馈\",\n placeholder: \"哪些地方好用、哪里坏了,或你想改什么?\",\n submit: \"发送反馈\",\n submitting: \"正在发送...\",\n success: \"感谢你的反馈!\",\n loadError: \"无法加载反馈表单\",\n invalidUrl: \"反馈 URL 无效\",\n emptyError: \"请先写点内容\",\n sendError: \"无法发送反馈\",\n keyboardHint: \"{{shortcut}}+Enter 发送\",\n },\n \"zh-TW\": {\n label: \"意見回饋\",\n placeholder: \"哪些地方好用、哪裡壞了,或你想改什麼?\",\n submit: \"送出意見回饋\",\n submitting: \"正在送出...\",\n success: \"感謝你的意見回饋。\",\n loadError: \"無法載入意見回饋表單\",\n invalidUrl: \"意見回饋 URL 無效\",\n emptyError: \"請先輸入內容\",\n sendError: \"無法送出意見回饋\",\n keyboardHint: \"{{shortcut}}+Enter 送出\",\n },\n \"es-ES\": {\n label: \"Comentarios\",\n placeholder: \"¿Qué funciona, qué falla o qué cambiarías?\",\n submit: \"Enviar comentarios\",\n submitting: \"Enviando...\",\n success: \"Gracias por tus comentarios.\",\n loadError: \"No se pudo cargar el formulario\",\n invalidUrl: \"URL de comentarios no válida\",\n emptyError: \"Escribe algo primero\",\n sendError: \"No se pudieron enviar los comentarios\",\n keyboardHint: \"{{shortcut}}+Enter para enviar\",\n },\n \"fr-FR\": {\n label: \"Retour\",\n placeholder: \"Qu'est-ce qui marche, casse ou devrait changer ?\",\n submit: \"Envoyer\",\n submitting: \"Envoi...\",\n success: \"Merci pour votre retour.\",\n loadError: \"Impossible de charger le formulaire\",\n invalidUrl: \"URL de retour invalide\",\n emptyError: \"Écrivez quelque chose d'abord\",\n sendError: \"Impossible d'envoyer le retour\",\n keyboardHint: \"{{shortcut}}+Entrée pour envoyer\",\n },\n \"de-DE\": {\n label: \"Feedback\",\n placeholder: \"Was funktioniert, was ist kaputt, was würdest du ändern?\",\n submit: \"Feedback senden\",\n submitting: \"Wird gesendet...\",\n success: \"Danke für dein Feedback!\",\n loadError: \"Feedback-Formular konnte nicht geladen werden\",\n invalidUrl: \"Ungültige Feedback-URL\",\n emptyError: \"Bitte zuerst etwas schreiben\",\n sendError: \"Feedback konnte nicht gesendet werden\",\n keyboardHint: \"{{shortcut}}+Enter zum Senden\",\n },\n \"ja-JP\": {\n label: \"フィードバック\",\n placeholder: \"良い点、問題点、変更したい点を教えてください。\",\n submit: \"送信\",\n submitting: \"送信中...\",\n success: \"フィードバックありがとうございます。\",\n loadError: \"フォームを読み込めませんでした\",\n invalidUrl: \"フィードバック URL が無効です\",\n emptyError: \"先に内容を入力してください\",\n sendError: \"送信できませんでした\",\n keyboardHint: \"{{shortcut}}+Enter で送信\",\n },\n \"ko-KR\": {\n label: \"피드백\",\n placeholder: \"잘 되는 점, 깨진 점, 바꾸고 싶은 점을 알려주세요.\",\n submit: \"피드백 보내기\",\n submitting: \"보내는 중...\",\n success: \"피드백 감사합니다.\",\n loadError: \"피드백 양식을 불러올 수 없습니다\",\n invalidUrl: \"피드백 URL이 올바르지 않습니다\",\n emptyError: \"먼저 내용을 입력해 주세요\",\n sendError: \"피드백을 보낼 수 없습니다\",\n keyboardHint: \"{{shortcut}}+Enter로 보내기\",\n },\n \"pt-BR\": {\n label: \"Feedback\",\n placeholder: \"O que funciona, quebrou ou você mudaria?\",\n submit: \"Enviar feedback\",\n submitting: \"Enviando...\",\n success: \"Obrigado pelo feedback!\",\n loadError: \"Não foi possível carregar o formulário\",\n invalidUrl: \"URL de feedback inválida\",\n emptyError: \"Escreva algo primeiro\",\n sendError: \"Não foi possível enviar o feedback\",\n keyboardHint: \"{{shortcut}}+Enter para enviar\",\n },\n \"hi-IN\": {\n label: \"फ़ीडबैक\",\n placeholder: \"क्या काम कर रहा है, क्या टूटा है, या आप क्या बदलना चाहेंगे?\",\n submit: \"फ़ीडबैक भेजें\",\n submitting: \"भेजा जा रहा है...\",\n success: \"फ़ीडबैक के लिए धन्यवाद!\",\n loadError: \"फ़ीडबैक फ़ॉर्म लोड नहीं हुआ\",\n invalidUrl: \"फ़ीडबैक URL अमान्य है\",\n emptyError: \"पहले कुछ लिखें\",\n sendError: \"फ़ीडबैक भेजा नहीं जा सका\",\n keyboardHint: \"भेजने के लिए {{shortcut}}+Enter\",\n },\n \"ar-SA\": {\n label: \"ملاحظات\",\n placeholder: \"ما الذي يعمل، وما المعطل، وما الذي تريد تغييره؟\",\n submit: \"إرسال الملاحظات\",\n submitting: \"جار الإرسال...\",\n success: \"شكرا لملاحظاتك!\",\n loadError: \"تعذر تحميل نموذج الملاحظات\",\n invalidUrl: \"رابط الملاحظات غير صالح\",\n emptyError: \"اكتب شيئا أولا\",\n sendError: \"تعذر إرسال الملاحظات\",\n keyboardHint: \"{{shortcut}}+Enter للإرسال\",\n },\n};\n\nfunction parseTarget(url: string): ParsedTarget | null {\n try {\n const u = new URL(url);\n const idx = u.pathname.indexOf(\"/f/\");\n if (idx === -1) return null;\n const slug = u.pathname.slice(idx + 3).replace(/\\/$/, \"\");\n if (!slug) return null;\n return { endpoint: u.origin, slug };\n } catch {\n return null;\n }\n}\n\nconst schemaCache = new Map<string, Promise<FormSchema>>();\n\nasync function loadSchema(target: ParsedTarget): Promise<FormSchema> {\n const key = `${target.endpoint}|${target.slug}`;\n let pending = schemaCache.get(key);\n if (pending) return pending;\n pending = (async () => {\n const res = await fetch(\n `${target.endpoint}/api/forms/public/${encodeURIComponent(target.slug)}`,\n { headers: { Accept: \"application/json\" } },\n );\n if (!res.ok) throw new Error(`form fetch ${res.status}`);\n const body = (await res.json()) as {\n id: string;\n fields: Array<{ id: string; type: string }>;\n };\n const field =\n body.fields.find((f) => f.type === \"textarea\") ??\n body.fields.find((f) => f.type === \"text\") ??\n body.fields[0];\n if (!field) throw new Error(\"form has no fields\");\n return { formId: body.id, fieldId: field.id };\n })();\n pending.catch(() => schemaCache.delete(key));\n schemaCache.set(key, pending);\n return pending;\n}\n\nexport interface FeedbackButtonProps {\n /**\n * \"sidebar\" renders a full-width row with icon + label (for app left sidebars).\n * \"icon\" renders a small icon-only button (for dense toolbars, e.g. the agent panel header).\n * \"outlined\" renders an outlined pill button with icon + label (for top-nav bars, e.g. docs).\n */\n variant?: \"sidebar\" | \"icon\" | \"outlined\";\n label?: string;\n url?: string;\n className?: string;\n /** Which side the popover opens on. Defaults match the variant. */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n /** Placeholder text for the textarea. */\n placeholder?: string;\n /** Current chat session/thread id, when the host already knows it. */\n chatSessionId?: string | null;\n /** Chat localStorage namespace, when the host uses per-app chat storage. */\n chatStorageKey?: string | null;\n /** Controlled popover open state for hosts that trigger feedback from a menu. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Optional custom trigger element. */\n trigger?: ReactNode;\n}\n\nconst surfaceStyle: CSSProperties = {\n width: \"min(380px, calc(100vw - 32px))\",\n};\n\nconst honeypotStyle: CSSProperties = {\n position: \"absolute\",\n left: \"-10000px\",\n top: \"auto\",\n width: \"1px\",\n height: \"1px\",\n overflow: \"hidden\",\n};\n\nexport function FeedbackButton({\n variant = \"sidebar\",\n label,\n url = DEFAULT_FEEDBACK_URL,\n className,\n side,\n align = \"end\",\n placeholder,\n chatSessionId,\n chatStorageKey,\n open: controlledOpen,\n onOpenChange,\n trigger: customTrigger,\n}: FeedbackButtonProps) {\n const target = parseTarget(url);\n const { session } = useSession();\n const { locale } = useLocale();\n const copy = FEEDBACK_COPY[locale] ?? FEEDBACK_COPY[DEFAULT_LOCALE];\n const resolvedLabel = label ?? copy.label;\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [controlledOpen, onOpenChange],\n );\n const [value, setValue] = useState(\"\");\n const [honeypot, setHoneypot] = useState(\"\");\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [schema, setSchema] = useState<FormSchema | null>(null);\n const openedAtRef = useRef<number>(0);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n // Reset transient state and kick off schema load on each open.\n useEffect(() => {\n if (!open) return;\n openedAtRef.current = Date.now();\n setValue(\"\");\n setHoneypot(\"\");\n setSubmitting(false);\n setSubmitted(false);\n setError(null);\n setSchema(null);\n if (target) {\n loadSchema(target)\n .then((s) => setSchema(s))\n .catch((err) => {\n console.error(\"[FeedbackButton] schema load failed\", err);\n setError(copy.loadError);\n });\n } else {\n setError(copy.invalidUrl);\n }\n const t = setTimeout(() => textareaRef.current?.focus(), 30);\n return () => {\n clearTimeout(t);\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n }, [open, url]);\n\n const submit = useCallback(\n async (e?: FormEvent) => {\n e?.preventDefault();\n if (!target || submitting) return;\n const trimmed = value.trim();\n if (!trimmed) {\n setError(copy.emptyError);\n return;\n }\n setSubmitting(true);\n setError(null);\n try {\n const resolvedSchema = schema ?? (await loadSchema(target));\n if (!schema) setSchema(resolvedSchema);\n const submitterEmail = isSyntheticAgentNativeAnonymousEmail(\n session?.email,\n )\n ? null\n : session?.email;\n const feedbackContext = getFeedbackClientContext({\n chatSessionId,\n storageKey: chatStorageKey,\n });\n const res = await fetch(\n `${target.endpoint}/api/submit/${encodeURIComponent(resolvedSchema.formId)}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n data: { [resolvedSchema.fieldId]: trimmed },\n _t: openedAtRef.current,\n _hp: honeypot,\n _meta: {\n ...(submitterEmail ? { submitterEmail } : {}),\n ...feedbackContext,\n },\n }),\n },\n );\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: string;\n };\n throw new Error(body.error || `submit failed (${res.status})`);\n }\n setSubmitted(true);\n closeTimerRef.current = setTimeout(() => setOpen(false), 1400);\n } catch (err) {\n setSubmitting(false);\n setError(err instanceof Error ? err.message : copy.sendError);\n }\n },\n [\n target,\n schema,\n value,\n honeypot,\n submitting,\n session?.email,\n chatSessionId,\n chatStorageKey,\n setOpen,\n copy.emptyError,\n copy.sendError,\n ],\n );\n\n let trigger;\n if (customTrigger) {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n {customTrigger}\n </PopoverPrimitive.Trigger>\n );\n } else if (variant === \"icon\") {\n trigger = (\n <TooltipPrimitive.Provider delayDuration={200}>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n aria-label={resolvedLabel}\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50\",\n className,\n )}\n >\n <IconMessage2 size={14} />\n </button>\n </PopoverPrimitive.Trigger>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n sideOffset={6}\n className=\"z-[100040] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md animate-in fade-in-0 zoom-in-95\"\n >\n {resolvedLabel}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n } else if (variant === \"outlined\") {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n aria-label={resolvedLabel}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-border bg-transparent px-3 text-sm text-muted-foreground transition hover:border-foreground/40 hover:text-foreground\",\n className,\n )}\n >\n <IconMessage2 size={14} stroke={1.5} />\n <span>{resolvedLabel}</span>\n </button>\n </PopoverPrimitive.Trigger>\n );\n } else {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground\",\n className,\n )}\n >\n <IconMessage2 className=\"h-4 w-4\" />\n <span>{resolvedLabel}</span>\n </button>\n </PopoverPrimitive.Trigger>\n );\n }\n\n const resolvedSide = side ?? (variant === \"sidebar\" ? \"top\" : \"bottom\");\n const resolvedPlaceholder = placeholder ?? copy.placeholder;\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {trigger}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={resolvedSide}\n align={align}\n sideOffset={8}\n collisionPadding={16}\n className=\"z-[100040] overflow-hidden rounded-lg border border-border bg-popover shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\n style={surfaceStyle}\n >\n {submitted ? (\n <div className=\"flex flex-col items-center justify-center gap-3 px-6 py-10 text-center\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-emerald-500/10 text-emerald-500\">\n <IconCheck size={20} stroke={2.5} />\n </div>\n <div className=\"text-sm font-medium text-foreground\">\n {copy.success}\n </div>\n </div>\n ) : (\n <form onSubmit={submit} className=\"flex flex-col gap-3 p-3\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={(e) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"Enter\") submit();\n }}\n placeholder={resolvedPlaceholder}\n rows={5}\n maxLength={10000}\n className=\"w-full resize-none rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n />\n <input\n type=\"text\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n value={honeypot}\n onChange={(e) => setHoneypot(e.target.value)}\n style={honeypotStyle}\n />\n <div className=\"flex items-center justify-between gap-3\">\n <div\n className={cn(\n \"text-[11px]\",\n error ? \"text-destructive\" : \"text-muted-foreground/75\",\n )}\n >\n {error ??\n copy.keyboardHint.replace(\n \"{{shortcut}}\",\n /Mac|iPhone|iPad/.test(navigator.userAgent)\n ? \"⌘\"\n : \"Ctrl\",\n )}\n </div>\n <button\n type=\"submit\"\n disabled={submitting || !value.trim()}\n className=\"inline-flex h-8 items-center justify-center rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {submitting ? copy.submitting : copy.submit}\n </button>\n </div>\n </form>\n )}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FeedbackButton.js","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { IconMessage2, IconCheck } from \"@tabler/icons-react\";\nimport {\n useState,\n useEffect,\n useRef,\n useCallback,\n type CSSProperties,\n type FormEvent,\n type ReactNode,\n} from \"react\";\n\nimport { DEFAULT_LOCALE, type LocaleCode } from \"../localization/shared.js\";\nimport { getFeedbackClientContext } from \"./feedback-context.js\";\nimport { useOptionalLocale } from \"./i18n.js\";\nimport { useSession } from \"./use-session.js\";\nimport { cn } from \"./utils.js\";\n\nconst DEFAULT_FEEDBACK_URL =\n \"https://forms.agent-native.com/f/agent-native-feedback/_16ewV\";\n\nfunction isSyntheticAgentNativeAnonymousEmail(\n value: string | null | undefined,\n): boolean {\n return /^anon-[^\\s@]+@agent-native\\.com$/i.test(value ?? \"\");\n}\n\ninterface ParsedTarget {\n endpoint: string;\n slug: string;\n}\n\ninterface FormSchema {\n formId: string;\n fieldId: string;\n}\n\nconst FEEDBACK_COPY: Record<\n LocaleCode,\n {\n label: string;\n placeholder: string;\n submit: string;\n submitting: string;\n success: string;\n loadError: string;\n invalidUrl: string;\n emptyError: string;\n sendError: string;\n keyboardHint: string;\n }\n> = {\n \"en-US\": {\n label: \"Feedback\",\n placeholder: \"What's working, what's broken, or what would you change?\",\n submit: \"Send feedback\",\n submitting: \"Sending...\",\n success: \"Thanks for the feedback!\",\n loadError: \"Couldn't load feedback form\",\n invalidUrl: \"Invalid feedback URL\",\n emptyError: \"Please write something first\",\n sendError: \"Couldn't send feedback\",\n keyboardHint: \"{{shortcut}}+Enter to send\",\n },\n \"zh-CN\": {\n label: \"反馈\",\n placeholder: \"哪些地方好用、哪里坏了,或你想改什么?\",\n submit: \"发送反馈\",\n submitting: \"正在发送...\",\n success: \"感谢你的反馈!\",\n loadError: \"无法加载反馈表单\",\n invalidUrl: \"反馈 URL 无效\",\n emptyError: \"请先写点内容\",\n sendError: \"无法发送反馈\",\n keyboardHint: \"{{shortcut}}+Enter 发送\",\n },\n \"zh-TW\": {\n label: \"意見回饋\",\n placeholder: \"哪些地方好用、哪裡壞了,或你想改什麼?\",\n submit: \"送出意見回饋\",\n submitting: \"正在送出...\",\n success: \"感謝你的意見回饋。\",\n loadError: \"無法載入意見回饋表單\",\n invalidUrl: \"意見回饋 URL 無效\",\n emptyError: \"請先輸入內容\",\n sendError: \"無法送出意見回饋\",\n keyboardHint: \"{{shortcut}}+Enter 送出\",\n },\n \"es-ES\": {\n label: \"Comentarios\",\n placeholder: \"¿Qué funciona, qué falla o qué cambiarías?\",\n submit: \"Enviar comentarios\",\n submitting: \"Enviando...\",\n success: \"Gracias por tus comentarios.\",\n loadError: \"No se pudo cargar el formulario\",\n invalidUrl: \"URL de comentarios no válida\",\n emptyError: \"Escribe algo primero\",\n sendError: \"No se pudieron enviar los comentarios\",\n keyboardHint: \"{{shortcut}}+Enter para enviar\",\n },\n \"fr-FR\": {\n label: \"Retour\",\n placeholder: \"Qu'est-ce qui marche, casse ou devrait changer ?\",\n submit: \"Envoyer\",\n submitting: \"Envoi...\",\n success: \"Merci pour votre retour.\",\n loadError: \"Impossible de charger le formulaire\",\n invalidUrl: \"URL de retour invalide\",\n emptyError: \"Écrivez quelque chose d'abord\",\n sendError: \"Impossible d'envoyer le retour\",\n keyboardHint: \"{{shortcut}}+Entrée pour envoyer\",\n },\n \"de-DE\": {\n label: \"Feedback\",\n placeholder: \"Was funktioniert, was ist kaputt, was würdest du ändern?\",\n submit: \"Feedback senden\",\n submitting: \"Wird gesendet...\",\n success: \"Danke für dein Feedback!\",\n loadError: \"Feedback-Formular konnte nicht geladen werden\",\n invalidUrl: \"Ungültige Feedback-URL\",\n emptyError: \"Bitte zuerst etwas schreiben\",\n sendError: \"Feedback konnte nicht gesendet werden\",\n keyboardHint: \"{{shortcut}}+Enter zum Senden\",\n },\n \"ja-JP\": {\n label: \"フィードバック\",\n placeholder: \"良い点、問題点、変更したい点を教えてください。\",\n submit: \"送信\",\n submitting: \"送信中...\",\n success: \"フィードバックありがとうございます。\",\n loadError: \"フォームを読み込めませんでした\",\n invalidUrl: \"フィードバック URL が無効です\",\n emptyError: \"先に内容を入力してください\",\n sendError: \"送信できませんでした\",\n keyboardHint: \"{{shortcut}}+Enter で送信\",\n },\n \"ko-KR\": {\n label: \"피드백\",\n placeholder: \"잘 되는 점, 깨진 점, 바꾸고 싶은 점을 알려주세요.\",\n submit: \"피드백 보내기\",\n submitting: \"보내는 중...\",\n success: \"피드백 감사합니다.\",\n loadError: \"피드백 양식을 불러올 수 없습니다\",\n invalidUrl: \"피드백 URL이 올바르지 않습니다\",\n emptyError: \"먼저 내용을 입력해 주세요\",\n sendError: \"피드백을 보낼 수 없습니다\",\n keyboardHint: \"{{shortcut}}+Enter로 보내기\",\n },\n \"pt-BR\": {\n label: \"Feedback\",\n placeholder: \"O que funciona, quebrou ou você mudaria?\",\n submit: \"Enviar feedback\",\n submitting: \"Enviando...\",\n success: \"Obrigado pelo feedback!\",\n loadError: \"Não foi possível carregar o formulário\",\n invalidUrl: \"URL de feedback inválida\",\n emptyError: \"Escreva algo primeiro\",\n sendError: \"Não foi possível enviar o feedback\",\n keyboardHint: \"{{shortcut}}+Enter para enviar\",\n },\n \"hi-IN\": {\n label: \"फ़ीडबैक\",\n placeholder: \"क्या काम कर रहा है, क्या टूटा है, या आप क्या बदलना चाहेंगे?\",\n submit: \"फ़ीडबैक भेजें\",\n submitting: \"भेजा जा रहा है...\",\n success: \"फ़ीडबैक के लिए धन्यवाद!\",\n loadError: \"फ़ीडबैक फ़ॉर्म लोड नहीं हुआ\",\n invalidUrl: \"फ़ीडबैक URL अमान्य है\",\n emptyError: \"पहले कुछ लिखें\",\n sendError: \"फ़ीडबैक भेजा नहीं जा सका\",\n keyboardHint: \"भेजने के लिए {{shortcut}}+Enter\",\n },\n \"ar-SA\": {\n label: \"ملاحظات\",\n placeholder: \"ما الذي يعمل، وما المعطل، وما الذي تريد تغييره؟\",\n submit: \"إرسال الملاحظات\",\n submitting: \"جار الإرسال...\",\n success: \"شكرا لملاحظاتك!\",\n loadError: \"تعذر تحميل نموذج الملاحظات\",\n invalidUrl: \"رابط الملاحظات غير صالح\",\n emptyError: \"اكتب شيئا أولا\",\n sendError: \"تعذر إرسال الملاحظات\",\n keyboardHint: \"{{shortcut}}+Enter للإرسال\",\n },\n};\n\nfunction parseTarget(url: string): ParsedTarget | null {\n try {\n const u = new URL(url);\n const idx = u.pathname.indexOf(\"/f/\");\n if (idx === -1) return null;\n const slug = u.pathname.slice(idx + 3).replace(/\\/$/, \"\");\n if (!slug) return null;\n return { endpoint: u.origin, slug };\n } catch {\n return null;\n }\n}\n\nconst schemaCache = new Map<string, Promise<FormSchema>>();\n\nasync function loadSchema(target: ParsedTarget): Promise<FormSchema> {\n const key = `${target.endpoint}|${target.slug}`;\n let pending = schemaCache.get(key);\n if (pending) return pending;\n pending = (async () => {\n const res = await fetch(\n `${target.endpoint}/api/forms/public/${encodeURIComponent(target.slug)}`,\n { headers: { Accept: \"application/json\" } },\n );\n if (!res.ok) throw new Error(`form fetch ${res.status}`);\n const body = (await res.json()) as {\n id: string;\n fields: Array<{ id: string; type: string }>;\n };\n const field =\n body.fields.find((f) => f.type === \"textarea\") ??\n body.fields.find((f) => f.type === \"text\") ??\n body.fields[0];\n if (!field) throw new Error(\"form has no fields\");\n return { formId: body.id, fieldId: field.id };\n })();\n pending.catch(() => schemaCache.delete(key));\n schemaCache.set(key, pending);\n return pending;\n}\n\nexport interface FeedbackButtonProps {\n /**\n * \"sidebar\" renders a full-width row with icon + label (for app left sidebars).\n * \"icon\" renders a small icon-only button (for dense toolbars, e.g. the agent panel header).\n * \"outlined\" renders an outlined pill button with icon + label (for top-nav bars, e.g. docs).\n */\n variant?: \"sidebar\" | \"icon\" | \"outlined\";\n label?: string;\n url?: string;\n className?: string;\n /** Which side the popover opens on. Defaults match the variant. */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n /** Placeholder text for the textarea. */\n placeholder?: string;\n /** Optional text to prefill when the popover opens. */\n initialValue?: string;\n /** Current chat session/thread id, when the host already knows it. */\n chatSessionId?: string | null;\n /** Chat localStorage namespace, when the host uses per-app chat storage. */\n chatStorageKey?: string | null;\n /** Controlled popover open state for hosts that trigger feedback from a menu. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Optional custom trigger element. */\n trigger?: ReactNode;\n}\n\nconst surfaceStyle: CSSProperties = {\n width: \"min(380px, calc(100vw - 32px))\",\n};\n\nconst honeypotStyle: CSSProperties = {\n position: \"absolute\",\n left: \"-10000px\",\n top: \"auto\",\n width: \"1px\",\n height: \"1px\",\n overflow: \"hidden\",\n};\n\nexport function FeedbackButton({\n variant = \"sidebar\",\n label,\n url = DEFAULT_FEEDBACK_URL,\n className,\n side,\n align = \"end\",\n placeholder,\n initialValue,\n chatSessionId,\n chatStorageKey,\n open: controlledOpen,\n onOpenChange,\n trigger: customTrigger,\n}: FeedbackButtonProps) {\n const target = parseTarget(url);\n const { session } = useSession();\n const localeContext = useOptionalLocale();\n const locale = localeContext?.locale ?? DEFAULT_LOCALE;\n const copy = FEEDBACK_COPY[locale] ?? FEEDBACK_COPY[DEFAULT_LOCALE];\n const resolvedLabel = label ?? copy.label;\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [controlledOpen, onOpenChange],\n );\n const [value, setValue] = useState(\"\");\n const [honeypot, setHoneypot] = useState(\"\");\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [schema, setSchema] = useState<FormSchema | null>(null);\n const openedAtRef = useRef<number>(0);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n // Reset transient state and kick off schema load on each open.\n useEffect(() => {\n if (!open) return;\n openedAtRef.current = Date.now();\n setValue(initialValue ?? \"\");\n setHoneypot(\"\");\n setSubmitting(false);\n setSubmitted(false);\n setError(null);\n setSchema(null);\n if (target) {\n loadSchema(target)\n .then((s) => setSchema(s))\n .catch((err) => {\n console.error(\"[FeedbackButton] schema load failed\", err);\n setError(copy.loadError);\n });\n } else {\n setError(copy.invalidUrl);\n }\n const t = setTimeout(() => textareaRef.current?.focus(), 30);\n return () => {\n clearTimeout(t);\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n }, [copy.invalidUrl, copy.loadError, initialValue, open, url]);\n\n const submit = useCallback(\n async (e?: FormEvent) => {\n e?.preventDefault();\n if (!target || submitting) return;\n const trimmed = value.trim();\n if (!trimmed) {\n setError(copy.emptyError);\n return;\n }\n setSubmitting(true);\n setError(null);\n try {\n const resolvedSchema = schema ?? (await loadSchema(target));\n if (!schema) setSchema(resolvedSchema);\n const submitterEmail = isSyntheticAgentNativeAnonymousEmail(\n session?.email,\n )\n ? null\n : session?.email;\n const feedbackContext = getFeedbackClientContext({\n chatSessionId,\n storageKey: chatStorageKey,\n });\n const res = await fetch(\n `${target.endpoint}/api/submit/${encodeURIComponent(resolvedSchema.formId)}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n data: { [resolvedSchema.fieldId]: trimmed },\n _t: openedAtRef.current,\n _hp: honeypot,\n _meta: {\n ...(submitterEmail ? { submitterEmail } : {}),\n ...feedbackContext,\n },\n }),\n },\n );\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: string;\n };\n throw new Error(body.error || `submit failed (${res.status})`);\n }\n setSubmitted(true);\n closeTimerRef.current = setTimeout(() => setOpen(false), 1400);\n } catch (err) {\n setSubmitting(false);\n setError(err instanceof Error ? err.message : copy.sendError);\n }\n },\n [\n target,\n schema,\n value,\n honeypot,\n submitting,\n session?.email,\n chatSessionId,\n chatStorageKey,\n setOpen,\n copy.emptyError,\n copy.sendError,\n ],\n );\n\n let trigger;\n if (customTrigger) {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n {customTrigger}\n </PopoverPrimitive.Trigger>\n );\n } else if (variant === \"icon\") {\n trigger = (\n <TooltipPrimitive.Provider delayDuration={200}>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n aria-label={resolvedLabel}\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50\",\n className,\n )}\n >\n <IconMessage2 size={14} />\n </button>\n </PopoverPrimitive.Trigger>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n sideOffset={6}\n className=\"z-[100040] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md animate-in fade-in-0 zoom-in-95\"\n >\n {resolvedLabel}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n } else if (variant === \"outlined\") {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n aria-label={resolvedLabel}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-border bg-transparent px-3 text-sm text-muted-foreground transition hover:border-foreground/40 hover:text-foreground\",\n className,\n )}\n >\n <IconMessage2 size={14} stroke={1.5} />\n <span>{resolvedLabel}</span>\n </button>\n </PopoverPrimitive.Trigger>\n );\n } else {\n trigger = (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground\",\n className,\n )}\n >\n <IconMessage2 className=\"h-4 w-4\" />\n <span>{resolvedLabel}</span>\n </button>\n </PopoverPrimitive.Trigger>\n );\n }\n\n const resolvedSide = side ?? (variant === \"sidebar\" ? \"top\" : \"bottom\");\n const resolvedPlaceholder = placeholder ?? copy.placeholder;\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {trigger}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={resolvedSide}\n align={align}\n sideOffset={8}\n collisionPadding={16}\n className=\"z-[100040] overflow-hidden rounded-lg border border-border bg-popover shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\n style={surfaceStyle}\n >\n {submitted ? (\n <div className=\"flex flex-col items-center justify-center gap-3 px-6 py-10 text-center\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-emerald-500/10 text-emerald-500\">\n <IconCheck size={20} stroke={2.5} />\n </div>\n <div className=\"text-sm font-medium text-foreground\">\n {copy.success}\n </div>\n </div>\n ) : (\n <form onSubmit={submit} className=\"flex flex-col gap-3 p-3\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={(e) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"Enter\") submit();\n }}\n placeholder={resolvedPlaceholder}\n rows={5}\n maxLength={10000}\n className=\"w-full resize-none rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n />\n <input\n type=\"text\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n value={honeypot}\n onChange={(e) => setHoneypot(e.target.value)}\n style={honeypotStyle}\n />\n <div className=\"flex items-center justify-between gap-3\">\n <div\n className={cn(\n \"text-[11px]\",\n error ? \"text-destructive\" : \"text-muted-foreground/75\",\n )}\n >\n {error ??\n copy.keyboardHint.replace(\n \"{{shortcut}}\",\n /Mac|iPhone|iPad/.test(navigator.userAgent)\n ? \"⌘\"\n : \"Ctrl\",\n )}\n </div>\n <button\n type=\"submit\"\n disabled={submitting || !value.trim()}\n className=\"inline-flex h-8 items-center justify-center rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {submitting ? copy.submitting : copy.submit}\n </button>\n </div>\n </form>\n )}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n"]}
|
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
|
|
4
|
-
declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
-
declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
-
declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
-
declare function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
8
|
-
declare namespace DialogHeader {
|
|
9
|
-
var displayName: string;
|
|
10
|
-
}
|
|
11
|
-
declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
12
|
-
declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
13
|
-
export { Dialog, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogTitle, DialogDescription, };
|
|
1
|
+
export * from "@agent-native/toolkit/ui/dialog";
|
|
14
2
|
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../src/client/components/ui/dialog.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../src/client/components/ui/dialog.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -1,21 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
3
|
-
import { IconX } from "@tabler/icons-react";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { cn } from "../../utils.js";
|
|
6
|
-
const Dialog = DialogPrimitive.Root;
|
|
7
|
-
const DialogTrigger = DialogPrimitive.Trigger;
|
|
8
|
-
const DialogClose = DialogPrimitive.Close;
|
|
9
|
-
const DialogPortal = DialogPrimitive.Portal;
|
|
10
|
-
const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn("fixed inset-0 z-[270] bg-background/45 backdrop-blur-[1px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className), ...props })));
|
|
11
|
-
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
12
|
-
const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn("fixed left-1/2 top-1/2 z-[280] flex max-h-[min(760px,calc(100vh-32px))] w-[calc(100vw-24px)] max-w-[720px] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-lg border border-border bg-background text-foreground shadow-lg outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-150 data-[state=open]:duration-200 data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", className), ...props, children: [children, _jsxs(DialogPrimitive.Close, { className: "absolute end-3 top-3 flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", children: [_jsx(IconX, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] })] })));
|
|
13
|
-
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
14
|
-
const DialogHeader = ({ className, ...props }) => (_jsx("div", { className: cn("grid gap-1.5 px-4 py-4", className), ...props }));
|
|
15
|
-
DialogHeader.displayName = "DialogHeader";
|
|
16
|
-
const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn("text-sm font-semibold text-foreground", className), ...props })));
|
|
17
|
-
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
18
|
-
const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn("text-xs text-muted-foreground", className), ...props })));
|
|
19
|
-
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
20
|
-
export { Dialog, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogTitle, DialogDescription, };
|
|
1
|
+
export * from "@agent-native/toolkit/ui/dialog";
|
|
21
2
|
//# sourceMappingURL=dialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../src/client/components/ui/dialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../src/client/components/ui/dialog.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"@agent-native/toolkit/ui/dialog\";\n"]}
|