@flamingo-stack/openframe-frontend-core 0.0.204 → 0.0.205
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/dist/{chunk-4CWSZPXH.cjs → chunk-24KCAECR.cjs} +9 -9
- package/dist/{chunk-4CWSZPXH.cjs.map → chunk-24KCAECR.cjs.map} +1 -1
- package/dist/chunk-27APPAJN.cjs +24 -0
- package/dist/chunk-27APPAJN.cjs.map +1 -0
- package/dist/{chunk-UC43NICZ.cjs → chunk-664KA5FI.cjs} +2 -35
- package/dist/chunk-664KA5FI.cjs.map +1 -0
- package/dist/chunk-6RZYJICV.cjs +24 -0
- package/dist/chunk-6RZYJICV.cjs.map +1 -0
- package/dist/chunk-7L4DWM7P.js +24 -0
- package/dist/chunk-7L4DWM7P.js.map +1 -0
- package/dist/chunk-BZFW3FOF.cjs +21 -0
- package/dist/chunk-BZFW3FOF.cjs.map +1 -0
- package/dist/{chunk-N57KWHDB.js → chunk-CIPO6DXK.js} +5 -5
- package/dist/chunk-EL5YVPD5.js +21 -0
- package/dist/chunk-EL5YVPD5.js.map +1 -0
- package/dist/{chunk-ARQ4XP64.cjs → chunk-FDCFI7YT.cjs} +40080 -31492
- package/dist/chunk-FDCFI7YT.cjs.map +1 -0
- package/dist/chunk-G7UE6RKV.cjs +121 -0
- package/dist/chunk-G7UE6RKV.cjs.map +1 -0
- package/dist/{chunk-25LVV26X.cjs → chunk-JUZGUQMX.cjs} +178 -50
- package/dist/chunk-JUZGUQMX.cjs.map +1 -0
- package/dist/{chunk-SZPJ5R5B.js → chunk-KSOOKNBG.js} +1 -34
- package/dist/chunk-KSOOKNBG.js.map +1 -0
- package/dist/{chunk-RMB5DVED.cjs → chunk-KUZGEA7U.cjs} +83 -66
- package/dist/chunk-KUZGEA7U.cjs.map +1 -0
- package/dist/chunk-LXC6P2EO.js +63 -0
- package/dist/chunk-LXC6P2EO.js.map +1 -0
- package/dist/chunk-MJNXIEV2.js +24 -0
- package/dist/chunk-MJNXIEV2.js.map +1 -0
- package/dist/{chunk-CPXLQ57U.js → chunk-MVGGXOFA.js} +37 -20
- package/dist/chunk-MVGGXOFA.js.map +1 -0
- package/dist/{chunk-LY34ORX6.js → chunk-O55ZUAX7.js} +39920 -31332
- package/dist/chunk-O55ZUAX7.js.map +1 -0
- package/dist/chunk-OHPI2HRK.js +47 -0
- package/dist/chunk-OHPI2HRK.js.map +1 -0
- package/dist/chunk-PLJLE4A4.js +121 -0
- package/dist/chunk-PLJLE4A4.js.map +1 -0
- package/dist/{chunk-XGL5FKIK.js → chunk-SCN5WFIZ.js} +148 -20
- package/dist/chunk-SCN5WFIZ.js.map +1 -0
- package/dist/chunk-WBR7H6E3.cjs +47 -0
- package/dist/chunk-WBR7H6E3.cjs.map +1 -0
- package/dist/chunk-XL4V2PYG.cjs +63 -0
- package/dist/chunk-XL4V2PYG.cjs.map +1 -0
- package/dist/components/announcement-bar.d.ts.map +1 -1
- package/dist/components/chat/chat-attachment-bar.d.ts +66 -0
- package/dist/components/chat/chat-attachment-bar.d.ts.map +1 -0
- package/dist/components/chat/chat-container.d.ts +21 -1
- package/dist/components/chat/chat-container.d.ts.map +1 -1
- package/dist/components/chat/chat-input.d.ts.map +1 -1
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/chat-panel-context.d.ts +9 -0
- package/dist/components/chat/chat-panel-context.d.ts.map +1 -0
- package/dist/components/chat/chat-ticket-list.d.ts +1 -1
- package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts +42 -0
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/admin-content-card.d.ts +34 -0
- package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/block-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/blog-card.d.ts +30 -0
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/blog-image-placeholder.d.ts +26 -0
- package/dist/components/chat/entity-cards/blog-image-placeholder.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts +33 -0
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/case-study-card.d.ts +20 -0
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -0
- package/dist/components/chat/{chat-video-entity-card.d.ts → entity-cards/chat-video-entity-card.d.ts} +1 -1
- package/dist/components/chat/entity-cards/chat-video-entity-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts +19 -0
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/data-room-doc-card.d.ts +47 -0
- package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/dispatch.d.ts +119 -0
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/entity-author-card.d.ts +87 -0
- package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/generic-entity-card.d.ts +42 -0
- package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/github-activity-card.d.ts +37 -0
- package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts +28 -0
- package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/index.d.ts +32 -0
- package/dist/components/chat/entity-cards/index.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/investor-update-card.d.ts +19 -0
- package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +20 -0
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/product-release-card-defaults.d.ts +21 -0
- package/dist/components/chat/entity-cards/product-release-card-defaults.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/product-release-card.d.ts +12 -0
- package/dist/components/chat/entity-cards/product-release-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/program-card-defaults.d.ts +32 -0
- package/dist/components/chat/entity-cards/program-card-defaults.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/program-card.d.ts +37 -0
- package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/roadmap-card.d.ts +28 -0
- package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts +12 -0
- package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/slack-message-card.d.ts +28 -0
- package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/task-type-icon.d.ts +6 -0
- package/dist/components/chat/entity-cards/task-type-icon.d.ts.map +1 -0
- package/dist/components/chat/hooks/index.d.ts +10 -0
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-attachment-image-gallery.d.ts +5 -0
- package/dist/components/chat/hooks/use-chat-attachment-image-gallery.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat-attachments.d.ts +33 -0
- package/dist/components/chat/hooks/use-chat-attachments.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat-card-item.d.ts +7 -0
- package/dist/components/chat/hooks/use-chat-card-item.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat-identity.d.ts +44 -0
- package/dist/components/chat/hooks/use-chat-identity.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat.d.ts +30 -0
- package/dist/components/chat/hooks/use-chat.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-close-on-navigation.d.ts +2 -0
- package/dist/components/chat/hooks/use-close-on-navigation.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-embedded-chat.d.ts +174 -0
- package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-proxied-image-url.d.ts +18 -0
- package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-slash-commands.d.ts +32 -0
- package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-sse.d.ts +57 -0
- package/dist/components/chat/hooks/use-sse.d.ts.map +1 -0
- package/dist/components/chat/index.cjs +393 -0
- package/dist/components/chat/index.cjs.map +1 -0
- package/dist/components/chat/index.d.ts +5 -3
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +393 -0
- package/dist/components/chat/index.js.map +1 -0
- package/dist/components/chat/nav-link-anchor-via-runtime.d.ts +33 -0
- package/dist/components/chat/nav-link-anchor-via-runtime.d.ts.map +1 -0
- package/dist/components/chat/source-action-button.d.ts +39 -0
- package/dist/components/chat/source-action-button.d.ts.map +1 -0
- package/dist/components/chat/types/chat.types.d.ts +36 -0
- package/dist/components/chat/types/chat.types.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +56 -11
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/chat/types/entities/blog.d.ts +14 -0
- package/dist/components/chat/types/entities/blog.d.ts.map +1 -0
- package/dist/components/chat/types/entities/case-study.d.ts +10 -0
- package/dist/components/chat/types/entities/case-study.d.ts.map +1 -0
- package/dist/components/chat/types/entities/content-ref.d.ts +23 -0
- package/dist/components/chat/types/entities/content-ref.d.ts.map +1 -0
- package/dist/components/chat/types/entities/customer-interview.d.ts +10 -0
- package/dist/components/chat/types/entities/customer-interview.d.ts.map +1 -0
- package/dist/components/chat/types/entities/data-room-doc.d.ts +37 -0
- package/dist/components/chat/types/entities/data-room-doc.d.ts.map +1 -0
- package/dist/components/chat/types/entities/github-activity.d.ts +29 -0
- package/dist/components/chat/types/entities/github-activity.d.ts.map +1 -0
- package/dist/components/chat/types/entities/hubspot-ticket.d.ts +39 -0
- package/dist/components/chat/types/entities/hubspot-ticket.d.ts.map +1 -0
- package/dist/components/chat/types/entities/index.d.ts +28 -0
- package/dist/components/chat/types/entities/index.d.ts.map +1 -0
- package/dist/components/chat/types/entities/investor-update.d.ts +83 -0
- package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -0
- package/dist/components/chat/types/entities/onboarding-guide.d.ts +79 -0
- package/dist/components/chat/types/entities/onboarding-guide.d.ts.map +1 -0
- package/dist/components/chat/types/entities/program-types.d.ts +303 -0
- package/dist/components/chat/types/entities/program-types.d.ts.map +1 -0
- package/dist/components/chat/types/entities/roadmap-item.d.ts +41 -0
- package/dist/components/chat/types/entities/roadmap-item.d.ts.map +1 -0
- package/dist/components/chat/types/entities/slack-message.d.ts +28 -0
- package/dist/components/chat/types/entities/slack-message.d.ts.map +1 -0
- package/dist/components/chat/types/index.d.ts +1 -0
- package/dist/components/chat/types/index.d.ts.map +1 -1
- package/dist/components/chat/utils/agent-status-message.d.ts +18 -0
- package/dist/components/chat/utils/agent-status-message.d.ts.map +1 -0
- package/dist/components/chat/utils/auto-continuation-directive.d.ts +38 -0
- package/dist/components/chat/utils/auto-continuation-directive.d.ts.map +1 -0
- package/dist/components/chat/utils/chat-attachment-markdown.d.ts +114 -0
- package/dist/components/chat/utils/chat-attachment-markdown.d.ts.map +1 -0
- package/dist/components/chat/utils/chat-authed-fetch.d.ts +13 -0
- package/dist/components/chat/utils/chat-authed-fetch.d.ts.map +1 -0
- package/dist/components/chat/utils/chat-nav-resolution.d.ts +72 -0
- package/dist/components/chat/utils/chat-nav-resolution.d.ts.map +1 -0
- package/dist/components/chat/utils/chat-proxy-auth-storage.d.ts +43 -0
- package/dist/components/chat/utils/chat-proxy-auth-storage.d.ts.map +1 -0
- package/dist/components/chat/utils/chip-action-class.d.ts +16 -0
- package/dist/components/chat/utils/chip-action-class.d.ts.map +1 -0
- package/dist/components/chat/utils/chip-styles.d.ts +32 -0
- package/dist/components/chat/utils/chip-styles.d.ts.map +1 -0
- package/dist/components/chat/utils/clickup-task-type-utils.d.ts +38 -0
- package/dist/components/chat/utils/clickup-task-type-utils.d.ts.map +1 -0
- package/dist/components/chat/utils/compact-card-classes.d.ts +50 -0
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -0
- package/dist/components/chat/utils/decide-new-tab.d.ts +39 -0
- package/dist/components/chat/utils/decide-new-tab.d.ts.map +1 -0
- package/dist/components/chat/utils/external-app-urls.d.ts +14 -0
- package/dist/components/chat/utils/external-app-urls.d.ts.map +1 -0
- package/dist/components/chat/utils/flatten-assistant-content.d.ts +25 -0
- package/dist/components/chat/utils/flatten-assistant-content.d.ts.map +1 -0
- package/dist/components/chat/utils/icon-registry.d.ts +67 -0
- package/dist/components/chat/utils/icon-registry.d.ts.map +1 -0
- package/dist/components/chat/utils/index.d.ts +21 -0
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/chat/utils/is-cross-origin-url.d.ts +22 -0
- package/dist/components/chat/utils/is-cross-origin-url.d.ts.map +1 -0
- package/dist/components/chat/utils/nav-anchor-props.d.ts +54 -0
- package/dist/components/chat/utils/nav-anchor-props.d.ts.map +1 -0
- package/dist/components/chat/utils/nav-click-handler.d.ts +51 -0
- package/dist/components/chat/utils/nav-click-handler.d.ts.map +1 -0
- package/dist/components/chat/utils/scroll-anchor.d.ts +30 -0
- package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -0
- package/dist/components/chat/utils/slash-dispatch-utils.d.ts +109 -0
- package/dist/components/chat/utils/slash-dispatch-utils.d.ts.map +1 -0
- package/dist/components/chat/utils/source-icons.d.ts +8 -0
- package/dist/components/chat/utils/source-icons.d.ts.map +1 -0
- package/dist/components/chat/utils/source-row-cta.d.ts +111 -0
- package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -0
- package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
- package/dist/components/features/index.cjs +12 -6
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +11 -5
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/icons/index.cjs +3 -3
- package/dist/components/icons/index.js +2 -2
- package/dist/components/index.cjs +274 -8
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +273 -7
- package/dist/components/interactive-wrapper.d.ts +3 -3
- package/dist/components/navigation/index.cjs +12 -6
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +11 -5
- package/dist/components/resizable.d.ts +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card.d.ts +19 -12
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts +2 -4
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +13 -0
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/entity-image.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +71 -70
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +6 -5
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/hover-dropdown.d.ts +66 -0
- package/dist/components/ui/hover-dropdown.d.ts.map +1 -0
- package/dist/components/ui/index.cjs +276 -6
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +278 -8
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/components/ui/square-avatar.d.ts.map +1 -1
- package/dist/contexts/chat-runtime-context.d.ts +109 -0
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -0
- package/dist/contexts/endpoints-runtime-context.d.ts +28 -0
- package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -0
- package/dist/contexts/index.cjs +30 -0
- package/dist/contexts/index.cjs.map +1 -0
- package/dist/contexts/index.d.ts +26 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +30 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/contexts/use-outer-or-default.d.ts +29 -0
- package/dist/contexts/use-outer-or-default.d.ts.map +1 -0
- package/dist/embed-shims/index.cjs +51 -0
- package/dist/embed-shims/index.cjs.map +1 -0
- package/dist/embed-shims/index.d.ts +31 -0
- package/dist/embed-shims/index.d.ts.map +1 -0
- package/dist/embed-shims/index.js +51 -0
- package/dist/embed-shims/index.js.map +1 -0
- package/dist/embed-shims/next-dynamic.cjs +12 -0
- package/dist/embed-shims/next-dynamic.cjs.map +1 -0
- package/dist/embed-shims/next-dynamic.d.ts +47 -0
- package/dist/embed-shims/next-dynamic.d.ts.map +1 -0
- package/dist/embed-shims/next-dynamic.js +12 -0
- package/dist/embed-shims/next-dynamic.js.map +1 -0
- package/dist/embed-shims/next-image.cjs +12 -0
- package/dist/embed-shims/next-image.cjs.map +1 -0
- package/dist/embed-shims/next-image.d.ts +28 -0
- package/dist/embed-shims/next-image.d.ts.map +1 -0
- package/dist/embed-shims/next-image.js +12 -0
- package/dist/embed-shims/next-image.js.map +1 -0
- package/dist/embed-shims/next-link.cjs +14 -0
- package/dist/embed-shims/next-link.cjs.map +1 -0
- package/dist/embed-shims/next-link.d.ts +22 -0
- package/dist/embed-shims/next-link.d.ts.map +1 -0
- package/dist/embed-shims/next-link.js +14 -0
- package/dist/embed-shims/next-link.js.map +1 -0
- package/dist/embed-shims/next-navigation.cjs +30 -0
- package/dist/embed-shims/next-navigation.cjs.map +1 -0
- package/dist/embed-shims/next-navigation.d.ts +46 -0
- package/dist/embed-shims/next-navigation.d.ts.map +1 -0
- package/dist/embed-shims/next-navigation.js +30 -0
- package/dist/embed-shims/next-navigation.js.map +1 -0
- package/dist/hooks/index.cjs +10 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +9 -3
- package/dist/hooks/use-access-code-integration.d.ts +48 -0
- package/dist/hooks/use-access-code-integration.d.ts.map +1 -0
- package/dist/hooks/use-contact-submission.d.ts.map +1 -1
- package/dist/hooks/use-og-placeholder.d.ts +31 -0
- package/dist/hooks/use-og-placeholder.d.ts.map +1 -0
- package/dist/hooks/use-toast.d.ts +1 -1
- package/dist/index.cjs +367 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +378 -18
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/access-code-client.d.ts +21 -37
- package/dist/utils/access-code-client.d.ts.map +1 -1
- package/dist/utils/cn.d.ts +0 -27
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/color-analysis.d.ts +33 -0
- package/dist/utils/color-analysis.d.ts.map +1 -0
- package/dist/utils/date-formatters.d.ts +16 -5
- package/dist/utils/date-formatters.d.ts.map +1 -1
- package/dist/utils/fetch-priority.d.ts +3 -0
- package/dist/utils/fetch-priority.d.ts.map +1 -0
- package/dist/utils/format.d.ts +192 -1
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/image-proxy.d.ts +67 -2
- package/dist/utils/image-proxy.d.ts.map +1 -1
- package/dist/utils/index.cjs +1274 -155
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +19 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1200 -157
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/local-storage-adapter.d.ts +46 -0
- package/dist/utils/local-storage-adapter.d.ts.map +1 -0
- package/dist/utils/source-icons.d.ts +78 -0
- package/dist/utils/source-icons.d.ts.map +1 -0
- package/package.json +29 -2
- package/src/components/announcement-bar.tsx +26 -4
- package/src/components/categories-cart.tsx +1 -1
- package/src/components/chat/chat-attachment-bar.tsx +323 -0
- package/src/components/chat/chat-container.tsx +39 -5
- package/src/components/chat/chat-input.tsx +7 -1
- package/src/components/chat/chat-message-enhanced.tsx +32 -22
- package/src/components/chat/chat-message-list.tsx +53 -4
- package/src/components/chat/chat-panel-context.tsx +37 -0
- package/src/components/chat/chat-ticket-list.tsx +1 -1
- package/src/components/chat/embeddable-chat.tsx +1106 -0
- package/src/components/chat/entity-cards/admin-content-card.tsx +155 -0
- package/src/components/chat/entity-cards/blog-card.tsx +259 -0
- package/src/components/chat/entity-cards/blog-image-placeholder.tsx +52 -0
- package/src/components/chat/entity-cards/campaign-card-admin.tsx +113 -0
- package/src/components/chat/entity-cards/case-study-card.tsx +192 -0
- package/src/components/chat/{chat-ticket-item.tsx → entity-cards/chat-ticket-item.tsx} +2 -2
- package/src/components/chat/{chat-video-entity-card.tsx → entity-cards/chat-video-entity-card.tsx} +2 -2
- package/src/components/chat/entity-cards/customer-interview-card.tsx +211 -0
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +120 -0
- package/src/components/chat/entity-cards/dispatch.tsx +1093 -0
- package/src/components/chat/entity-cards/entity-author-card.tsx +193 -0
- package/src/components/chat/entity-cards/generic-entity-card.tsx +144 -0
- package/src/components/chat/entity-cards/github-activity-card.tsx +305 -0
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +205 -0
- package/src/components/chat/entity-cards/index.ts +125 -0
- package/src/components/chat/entity-cards/investor-update-card.tsx +150 -0
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +326 -0
- package/src/components/chat/entity-cards/product-release-card-defaults.ts +57 -0
- package/src/components/chat/entity-cards/product-release-card.tsx +19 -0
- package/src/components/chat/entity-cards/program-card-defaults.ts +62 -0
- package/src/components/chat/entity-cards/program-card.tsx +451 -0
- package/src/components/chat/entity-cards/roadmap-card.tsx +356 -0
- package/src/components/chat/entity-cards/roadmap-vote-button.tsx +54 -0
- package/src/components/chat/entity-cards/slack-message-card.tsx +182 -0
- package/src/components/chat/entity-cards/task-type-icon.tsx +60 -0
- package/src/components/chat/hooks/index.ts +22 -0
- package/src/components/chat/hooks/use-chat-attachment-image-gallery.tsx +114 -0
- package/src/components/chat/hooks/use-chat-attachments.ts +429 -0
- package/src/components/chat/hooks/use-chat-card-item.ts +102 -0
- package/src/components/chat/hooks/use-chat-identity.ts +139 -0
- package/src/components/chat/hooks/use-chat.ts +501 -0
- package/src/components/chat/hooks/use-close-on-navigation.ts +87 -0
- package/src/components/chat/hooks/use-embedded-chat.ts +1023 -0
- package/src/components/chat/hooks/use-proxied-image-url.ts +31 -0
- package/src/components/chat/hooks/use-slash-commands.ts +106 -0
- package/src/components/chat/hooks/use-sse.ts +143 -0
- package/src/components/chat/index.ts +30 -4
- package/src/components/chat/nav-link-anchor-via-runtime.tsx +72 -0
- package/src/components/chat/source-action-button.tsx +120 -0
- package/src/components/chat/types/chat.types.ts +61 -0
- package/src/components/chat/types/component.types.ts +57 -11
- package/src/components/chat/types/entities/blog.ts +27 -0
- package/src/components/chat/types/entities/case-study.ts +14 -0
- package/src/components/chat/types/entities/content-ref.ts +23 -0
- package/src/components/chat/types/entities/customer-interview.ts +15 -0
- package/src/components/chat/types/entities/data-room-doc.ts +37 -0
- package/src/components/chat/types/entities/github-activity.ts +36 -0
- package/src/components/chat/types/entities/hubspot-ticket.ts +39 -0
- package/src/components/chat/types/entities/index.ts +28 -0
- package/src/components/chat/types/entities/investor-update.ts +100 -0
- package/src/components/chat/types/entities/onboarding-guide.ts +101 -0
- package/src/components/chat/types/entities/program-types.ts +433 -0
- package/src/components/chat/types/entities/roadmap-item.ts +42 -0
- package/src/components/chat/types/entities/slack-message.ts +28 -0
- package/src/components/chat/types/index.ts +1 -0
- package/src/components/chat/utils/agent-status-message.ts +52 -0
- package/src/components/chat/utils/auto-continuation-directive.ts +70 -0
- package/src/components/chat/utils/chat-attachment-markdown.ts +190 -0
- package/src/components/chat/utils/chat-authed-fetch.ts +73 -0
- package/src/components/chat/utils/chat-nav-resolution.ts +151 -0
- package/src/components/chat/utils/chat-proxy-auth-storage.ts +148 -0
- package/src/components/chat/utils/chip-action-class.ts +19 -0
- package/src/components/chat/utils/chip-styles.ts +51 -0
- package/src/components/chat/utils/clickup-task-type-utils.ts +59 -0
- package/src/components/chat/utils/compact-card-classes.ts +97 -0
- package/src/components/chat/utils/decide-new-tab.ts +57 -0
- package/src/components/chat/utils/external-app-urls.ts +19 -0
- package/src/components/chat/utils/flatten-assistant-content.ts +35 -0
- package/src/components/chat/utils/icon-registry.ts +297 -0
- package/src/components/chat/utils/index.ts +133 -0
- package/src/components/chat/utils/is-cross-origin-url.ts +28 -0
- package/src/components/chat/utils/nav-anchor-props.ts +78 -0
- package/src/components/chat/utils/nav-click-handler.ts +81 -0
- package/src/components/chat/utils/scroll-anchor.ts +35 -0
- package/src/components/chat/utils/slash-dispatch-utils.ts +183 -0
- package/src/components/chat/utils/source-icons.ts +14 -0
- package/src/components/chat/utils/source-row-cta.ts +215 -0
- package/src/components/empty-state.tsx +1 -1
- package/src/components/features/board/ticket-card.tsx +1 -1
- package/src/components/features/figma-prototype-viewer.tsx +2 -1
- package/src/components/features/media-gallery-manager.tsx +1 -1
- package/src/components/features/parallax-image-showcase.tsx +1 -1
- package/src/components/features/release-media-manager.tsx +1 -1
- package/src/components/features/seo-editor-preview.tsx +1 -1
- package/src/components/features/video.tsx +54 -3
- package/src/components/footer-waitlist-button.tsx +1 -1
- package/src/components/navigation/header.tsx +1 -1
- package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +8 -44
- package/src/components/shared/product-release/product-release-card.tsx +31 -116
- package/src/components/shared/product-release/release-detail-page.tsx +12 -16
- package/src/components/ui/actions-menu.tsx +1 -1
- package/src/components/ui/button/button.tsx +41 -11
- package/src/components/ui/button/split-button.tsx +1 -1
- package/src/components/ui/dashboard-info-card.tsx +2 -3
- package/src/components/ui/data-table/data-table-row.tsx +1 -1
- package/src/components/ui/entity-image.tsx +2 -8
- package/src/components/ui/hover-dropdown.tsx +258 -0
- package/src/components/ui/image-gallery-modal.tsx +1 -1
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/markdown-editor.tsx +1 -1
- package/src/components/ui/more-actions-menu.tsx +1 -1
- package/src/components/ui/organization-card.tsx +1 -1
- package/src/components/ui/simple-markdown-renderer.tsx +53 -5
- package/src/components/ui/square-avatar.tsx +3 -12
- package/src/components/ui/tab-navigation.tsx +1 -1
- package/src/components/ui/table/table-row.tsx +1 -1
- package/src/components/unified-filter-logic.tsx +1 -1
- package/src/components/unified-pagination.tsx +1 -1
- package/src/components/user-summary-stub.tsx +1 -1
- package/src/components/vendor-display-button.tsx +1 -1
- package/src/components/vendor-icon.tsx +1 -1
- package/src/contexts/chat-runtime-context.tsx +163 -0
- package/src/contexts/endpoints-runtime-context.tsx +68 -0
- package/src/contexts/index.ts +38 -0
- package/src/contexts/use-outer-or-default.ts +42 -0
- package/src/embed-shims/index.ts +42 -0
- package/src/embed-shims/next-dynamic.tsx +70 -0
- package/src/embed-shims/next-image.tsx +114 -0
- package/src/embed-shims/next-link.tsx +91 -0
- package/src/embed-shims/next-navigation.tsx +201 -0
- package/src/hooks/index.ts +9 -0
- package/src/hooks/state/use-api-params.ts +1 -1
- package/src/hooks/state/use-query-params.ts +1 -1
- package/src/hooks/use-access-code-integration.ts +107 -0
- package/src/hooks/use-contact-submission.ts +7 -3
- package/src/hooks/use-og-placeholder.ts +45 -0
- package/src/stories/OnboardingStepCard.stories.tsx +140 -0
- package/src/styles/chat-animations.css +65 -0
- package/src/styles/index.css +1 -0
- package/src/utils/access-code-client.ts +32 -75
- package/src/utils/cn.ts +0 -65
- package/src/utils/color-analysis.ts +205 -0
- package/src/utils/date-formatters.ts +54 -11
- package/src/utils/fetch-priority.ts +41 -0
- package/src/utils/format.ts +525 -1
- package/src/utils/image-proxy.ts +127 -7
- package/src/utils/index.ts +145 -5
- package/src/utils/local-storage-adapter.ts +105 -0
- package/src/utils/source-icons.ts +219 -0
- package/dist/chunk-25LVV26X.cjs.map +0 -1
- package/dist/chunk-ARQ4XP64.cjs.map +0 -1
- package/dist/chunk-CPXLQ57U.js.map +0 -1
- package/dist/chunk-LY34ORX6.js.map +0 -1
- package/dist/chunk-RMB5DVED.cjs.map +0 -1
- package/dist/chunk-SZPJ5R5B.js.map +0 -1
- package/dist/chunk-UC43NICZ.cjs.map +0 -1
- package/dist/chunk-XGL5FKIK.js.map +0 -1
- package/dist/components/chat/block-card.d.ts.map +0 -1
- package/dist/components/chat/chat-ticket-item.d.ts.map +0 -1
- package/dist/components/chat/chat-video-entity-card.d.ts.map +0 -1
- package/dist/utils/dynamic-icons.d.ts +0 -26
- package/dist/utils/dynamic-icons.d.ts.map +0 -1
- package/dist/utils/format-relative-time.d.ts +0 -21
- package/dist/utils/format-relative-time.d.ts.map +0 -1
- package/src/utils/.dynamic-icons.md +0 -30
- package/src/utils/.format-relative-time.md +0 -36
- package/src/utils/dynamic-icons.tsx +0 -120
- package/src/utils/format-relative-time.ts +0 -52
- /package/dist/{chunk-N57KWHDB.js.map → chunk-CIPO6DXK.js.map} +0 -0
- /package/dist/components/chat/{block-card.d.ts → entity-cards/block-card.d.ts} +0 -0
- /package/dist/components/chat/{chat-ticket-item.d.ts → entity-cards/chat-ticket-item.d.ts} +0 -0
- /package/src/components/chat/{block-card.tsx → entity-cards/block-card.tsx} +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for "what does clicking THIS row do?" across
|
|
3
|
+
* the chat-adjacent surfaces (source chips, inline cards, search results).
|
|
4
|
+
*
|
|
5
|
+
* Lib-side refactor of the hub's `lib/utils/source-row-cta.ts`. Drops:
|
|
6
|
+
* - `currentPlatform()` — host injects via `ctx.currentPlatform`
|
|
7
|
+
* - `traceCompose()` logging — lib stays log-free; hosts can wrap
|
|
8
|
+
* - `tableIdForDocumentType` — host injects via `ctx.tableIdForDocumentType`
|
|
9
|
+
*
|
|
10
|
+
* The contract:
|
|
11
|
+
* - `icon` + `iconLabel` — for visual + a11y. Sourced from
|
|
12
|
+
* `SOURCE_ICON_NAMES` keyed by the row's `sourceRepo` (config id),
|
|
13
|
+
* resolved to a React component via `ICON_REGISTRY`.
|
|
14
|
+
* - `href` — destination URL. `null` means "no public viewer; Ask is
|
|
15
|
+
* the only action". Honors the inline card / chip / search bar's
|
|
16
|
+
* existing fallback chain (externalUrl → in-app path → null) and
|
|
17
|
+
* also runs `safeHref()` on the final value so a hostile RAG row
|
|
18
|
+
* can't land `javascript:` / `data:` in the DOM.
|
|
19
|
+
* - `askable` — whether the Ask drill-in flow can fire. Requires a
|
|
20
|
+
* non-empty `id` AND a `documentType`.
|
|
21
|
+
* - `chatRef` — pre-synthesized `ChatRef` for the Ask handler.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import React from 'react'
|
|
25
|
+
import { FileText } from 'lucide-react'
|
|
26
|
+
import { getSourceIconName } from './source-icons'
|
|
27
|
+
import { getIconComponent } from './icon-registry'
|
|
28
|
+
import { getBaseUrl } from '../../../utils/cn'
|
|
29
|
+
import { safeHref } from './compact-card-classes'
|
|
30
|
+
import type { ChatRef } from '../chat-ref.types'
|
|
31
|
+
|
|
32
|
+
/** Path sanitization — keep alphanumerics, slash, dash, dot, underscore;
|
|
33
|
+
* strip everything else. Defends against a hostile mapper returning a
|
|
34
|
+
* path with `..` traversal or query-string injection. */
|
|
35
|
+
function sanitizePath(path: string): string {
|
|
36
|
+
return (path || '').replace(/[^a-zA-Z0-9/_\-.]/g, '')
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface SourceRowInput {
|
|
40
|
+
/** RagTableConfig.id (e.g. 'blog-posts', 'financial-cap-table'). Drives
|
|
41
|
+
* icon resolution via `SOURCE_ICON_NAMES` + `ICON_REGISTRY`. */
|
|
42
|
+
sourceRepo?: string | null
|
|
43
|
+
/** The config's `documentType` (e.g. 'blog_post', 'cap_table'). Drives
|
|
44
|
+
* the Ask drill-in's `ChatRef.type`. */
|
|
45
|
+
documentType?: string | null
|
|
46
|
+
/** Primary-key value of the row (config.primaryKey). Required for Ask. */
|
|
47
|
+
id?: string | null
|
|
48
|
+
/** Display title. */
|
|
49
|
+
title: string
|
|
50
|
+
/** Resolved public URL when the row HAS a viewer. `null`/undefined when
|
|
51
|
+
* the row has no public destination — surface decides Ask-only behavior. */
|
|
52
|
+
externalUrl?: string | null
|
|
53
|
+
/** Platform that owns `externalUrl`. */
|
|
54
|
+
targetPlatform?: string | null
|
|
55
|
+
/** In-app navigator path (e.g. `legal/fundraising/.../safe`). */
|
|
56
|
+
path?: string | null
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface SourceRowContext {
|
|
60
|
+
/** Chat shell's base route — `/data-room`, `/knowledge-base`, etc. */
|
|
61
|
+
baseRoute?: string
|
|
62
|
+
/** Cross-platform target for the chip / card click. */
|
|
63
|
+
chipBasePlatform?: string
|
|
64
|
+
/**
|
|
65
|
+
* Host-supplied current-platform identifier. Used as the
|
|
66
|
+
* `targetPlatform` for path-based fallback URLs that point to the
|
|
67
|
+
* host's own surface. When omitted, path-based fallback rows get a
|
|
68
|
+
* `null` targetPlatform — consumers fall back to their legacy
|
|
69
|
+
* origin-check.
|
|
70
|
+
*/
|
|
71
|
+
currentPlatform?: string | null
|
|
72
|
+
/**
|
|
73
|
+
* Host-supplied reverse map: documentType → tableId. Used to derive
|
|
74
|
+
* `sourceRepo` from `documentType` when the caller didn't supply it
|
|
75
|
+
* (inline cards know `ref.type` but not `sourceRepo`). When omitted,
|
|
76
|
+
* the resolver falls back to the documentType reverse-map miss and
|
|
77
|
+
* keeps the FileText icon.
|
|
78
|
+
*/
|
|
79
|
+
tableIdForDocumentType?: (documentType: string) => string | null
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface SourceRowCTA {
|
|
83
|
+
/** Source icon component. Always defined — falls back to `FileText`. */
|
|
84
|
+
icon: React.ComponentType<{ className?: string }>
|
|
85
|
+
/** Human-readable label for the icon. */
|
|
86
|
+
iconLabel: string
|
|
87
|
+
/** Resolved destination URL. `null` when the row has no openable
|
|
88
|
+
* target. Already passed through `safeHref()`. */
|
|
89
|
+
href: string | null
|
|
90
|
+
/** Platform that owns the destination. `null` when the row has no
|
|
91
|
+
* openable target OR the destination is external/unknown. */
|
|
92
|
+
targetPlatform: string | null
|
|
93
|
+
/** When true, the surface can fire the Ask drill-in flow for this row. */
|
|
94
|
+
askable: boolean
|
|
95
|
+
/** Pre-synthesized `ChatRef` for the Ask handler. `null` when not askable. */
|
|
96
|
+
chatRef: ChatRef | null
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Pure icon-resolution helper — `sourceRepo` (RagTableConfig.id) →
|
|
101
|
+
* icon_name via `SOURCE_ICON_NAMES`, then icon_name → React component
|
|
102
|
+
* via `ICON_REGISTRY`.
|
|
103
|
+
*/
|
|
104
|
+
function pickSourceIcon(sourceRepo: string | null, documentType: string | null | undefined) {
|
|
105
|
+
const iconName = sourceRepo ? getSourceIconName(sourceRepo) : undefined
|
|
106
|
+
const icon = iconName ? getIconComponent(iconName) : FileText
|
|
107
|
+
const iconLabel = documentType ?? 'Source'
|
|
108
|
+
return { icon, iconLabel }
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Only certain row kinds should fall back to in-app `path` navigation
|
|
113
|
+
* when no `externalUrl` is set. Specifically: doc-tables (markdown,
|
|
114
|
+
* data-room PDFs) that the in-app doc viewer can render. Entity-table
|
|
115
|
+
* rows MUST come with an explicit `externalUrl` from the mapper.
|
|
116
|
+
*/
|
|
117
|
+
function shouldFallbackToPathNav(row: SourceRowInput): boolean {
|
|
118
|
+
const t = row.documentType
|
|
119
|
+
return t === 'markdown' || t === 'data_room_doc'
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Resolve the CTA contract for a row. Pure function — no DOM, no fetch,
|
|
124
|
+
* no logging. Call from any surface (chip, card, search result) with the
|
|
125
|
+
* same row shape and get the same answer back.
|
|
126
|
+
*/
|
|
127
|
+
export function resolveSourceRowCTA(
|
|
128
|
+
row: SourceRowInput,
|
|
129
|
+
ctx: SourceRowContext = {},
|
|
130
|
+
): SourceRowCTA {
|
|
131
|
+
// Derive sourceRepo from documentType when the caller didn't supply
|
|
132
|
+
// it. Inline cards know `ref.type` (documentType) but not `sourceRepo`;
|
|
133
|
+
// chips and search results have sourceRepo directly. The host supplies
|
|
134
|
+
// the reverse map via `ctx.tableIdForDocumentType`.
|
|
135
|
+
const sourceRepo = row.sourceRepo
|
|
136
|
+
?? (row.documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(row.documentType) : null)
|
|
137
|
+
?? null
|
|
138
|
+
|
|
139
|
+
const { icon, iconLabel } = pickSourceIcon(sourceRepo, row.documentType)
|
|
140
|
+
|
|
141
|
+
// URL resolution.
|
|
142
|
+
let href: string | null = null
|
|
143
|
+
let targetPlatform: string | null = null
|
|
144
|
+
if (row.externalUrl) {
|
|
145
|
+
href = safeHref(row.externalUrl) ?? null
|
|
146
|
+
targetPlatform = row.targetPlatform ?? null
|
|
147
|
+
} else if (ctx.baseRoute && row.path && shouldFallbackToPathNav(row)) {
|
|
148
|
+
const safePath = sanitizePath(row.path)
|
|
149
|
+
if (safePath) {
|
|
150
|
+
if (ctx.chipBasePlatform) {
|
|
151
|
+
const base = `${getBaseUrl(ctx.chipBasePlatform)}/knowledge-base/`
|
|
152
|
+
href = new URL(safePath, base).toString()
|
|
153
|
+
targetPlatform = ctx.chipBasePlatform
|
|
154
|
+
} else {
|
|
155
|
+
const synthetic = `https://_internal_.local${ctx.baseRoute.startsWith('/') ? ctx.baseRoute : '/' + ctx.baseRoute}/`
|
|
156
|
+
const absolute = new URL(safePath, synthetic).toString()
|
|
157
|
+
href = absolute.replace('https://_internal_.local', '')
|
|
158
|
+
targetPlatform = ctx.currentPlatform ?? null
|
|
159
|
+
}
|
|
160
|
+
// Final safeHref pass on the composed URL — defense-in-depth.
|
|
161
|
+
href = safeHref(href) ?? null
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Ask drill-in viability.
|
|
166
|
+
const idValue = (row.id ?? '').trim()
|
|
167
|
+
const askable = !!(idValue && row.documentType)
|
|
168
|
+
const chatRef: ChatRef | null = askable
|
|
169
|
+
? ({
|
|
170
|
+
type: row.documentType!,
|
|
171
|
+
...(sourceRepo ? { sourceRepo } : {}),
|
|
172
|
+
id: idValue,
|
|
173
|
+
title: row.title,
|
|
174
|
+
url: href,
|
|
175
|
+
targetPlatform,
|
|
176
|
+
// Carry `path` so a downstream inline card (rendered from this
|
|
177
|
+
// chatRef on a subsequent turn) gets the same doc-tree-swap
|
|
178
|
+
// routing the chip already used. Without it, the Ask drill-in
|
|
179
|
+
// would resolve to a same-tab full-page nav even when an in-app
|
|
180
|
+
// path is available.
|
|
181
|
+
...(row.path ? { metadata: { path: row.path } } : {}),
|
|
182
|
+
} as ChatRef)
|
|
183
|
+
: null
|
|
184
|
+
|
|
185
|
+
return { icon, iconLabel, href, targetPlatform, askable, chatRef }
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Convenience helper for callers that just need the source icon —
|
|
190
|
+
* inline cards' tracking strip + the search-bar dropdown row, today.
|
|
191
|
+
*
|
|
192
|
+
* Single source of truth: every consumer (chips, search results,
|
|
193
|
+
* inline cards) routes through `SOURCE_ICON_NAMES` + `ICON_REGISTRY`.
|
|
194
|
+
*
|
|
195
|
+
* Accepts a string for backward-compatibility with the single-arg call
|
|
196
|
+
* shape — treated as `documentType`.
|
|
197
|
+
*/
|
|
198
|
+
export function resolveSourceIcon(
|
|
199
|
+
input: { sourceRepo?: string | null; documentType?: string | null } | string | null | undefined,
|
|
200
|
+
ctx: { tableIdForDocumentType?: (documentType: string) => string | null } = {},
|
|
201
|
+
): {
|
|
202
|
+
Icon: React.ComponentType<{ className?: string }>
|
|
203
|
+
label: string
|
|
204
|
+
} {
|
|
205
|
+
if (!input) return { Icon: FileText, label: 'Source' }
|
|
206
|
+
const { sourceRepo, documentType } = typeof input === 'string'
|
|
207
|
+
? { sourceRepo: null, documentType: input }
|
|
208
|
+
: input
|
|
209
|
+
if (!sourceRepo && !documentType) return { Icon: FileText, label: 'Source' }
|
|
210
|
+
const resolvedRepo = sourceRepo
|
|
211
|
+
?? (documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(documentType) : null)
|
|
212
|
+
?? null
|
|
213
|
+
const { icon, iconLabel } = pickSourceIcon(resolvedRepo, documentType)
|
|
214
|
+
return { Icon: icon, label: iconLabel }
|
|
215
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { Search, FileText, Package } from "lucide-react"
|
|
4
4
|
import { Button } from "./ui/button"
|
|
5
|
-
import { useRouter } from "next
|
|
5
|
+
import { useRouter } from "../embed-shims/next-navigation"
|
|
6
6
|
|
|
7
7
|
export interface EmptyStateProps {
|
|
8
8
|
type: 'vendors' | 'posts' | 'search' | 'generic'
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useSortable } from '@dnd-kit/sortable'
|
|
4
4
|
import { CSS } from '@dnd-kit/utilities'
|
|
5
|
-
import Link from 'next
|
|
5
|
+
import Link from '../../../embed-shims/next-link'
|
|
6
6
|
import * as React from 'react'
|
|
7
7
|
import { LaptopIcon, Flag02Icon } from '../../icons-v2-generated'
|
|
8
8
|
import { SquareAvatar } from '../../ui/square-avatar'
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'
|
|
4
4
|
import { cn } from '../../utils/cn'
|
|
5
|
+
import { fetchPriorityProp } from '../../utils/fetch-priority'
|
|
5
6
|
import { Badge } from '../ui/badge'
|
|
6
7
|
import { SectionSelector, type SectionItem } from './section-selector'
|
|
7
8
|
|
|
@@ -421,7 +422,7 @@ function renderUnifiedUI(state: UnifiedState, handlers: {
|
|
|
421
422
|
sandbox="allow-scripts allow-same-origin allow-popups allow-presentation"
|
|
422
423
|
title={config.title}
|
|
423
424
|
loading="eager"
|
|
424
|
-
{...(
|
|
425
|
+
{...fetchPriorityProp('high')}
|
|
425
426
|
/>
|
|
426
427
|
|
|
427
428
|
{/* Loading Skeleton */}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState, useRef } from 'react'
|
|
4
|
-
import Image from 'next
|
|
4
|
+
import Image from '../../embed-shims/next-image'
|
|
5
5
|
import { motion, useScroll, useTransform, useMotionValue, useSpring } from 'framer-motion'
|
|
6
6
|
|
|
7
7
|
interface ParallaxImageShowcaseProps {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { useState, useRef } from 'react';
|
|
4
4
|
import { Button, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Textarea } from '../ui';
|
|
5
5
|
import { Trash2, Plus, Image as ImageIcon, Video, Upload, Loader2, GripVertical } from 'lucide-react';
|
|
6
|
-
import Image from 'next
|
|
6
|
+
import Image from '../../embed-shims/next-image';
|
|
7
7
|
|
|
8
8
|
export interface ReleaseMediaItem {
|
|
9
9
|
media_type: 'image' | 'video' | 'screenshot' | 'demo';
|
|
@@ -5,7 +5,7 @@ import { Input, Textarea, Label, Button, Badge } from '../ui';
|
|
|
5
5
|
import { ConfidenceBadge } from '../features';
|
|
6
6
|
import { Globe, ExternalLink, Upload, X, Loader2, Sparkles } from 'lucide-react';
|
|
7
7
|
import { cn } from '../../utils';
|
|
8
|
-
import Image from 'next
|
|
8
|
+
import Image from '../../embed-shims/next-image';
|
|
9
9
|
|
|
10
10
|
export interface SEOEditorPreviewProps {
|
|
11
11
|
// SEO fields - must be strings (not undefined)
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
34
34
|
import MuxPlayer from '@mux/mux-player-react';
|
|
35
35
|
import { PlayIcon } from '../icons-v2-generated/media-playback/play-icon';
|
|
36
|
+
import { fetchPriorityProp } from '../../utils/fetch-priority';
|
|
36
37
|
|
|
37
38
|
// =============================================================================
|
|
38
39
|
// Suppress Google Cast SDK loading (CSP-friendly)
|
|
@@ -64,6 +65,46 @@ if (typeof window !== 'undefined') {
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
|
|
68
|
+
// =============================================================================
|
|
69
|
+
// Suppress benign "Media Chrome: No style sheet found ..." warning.
|
|
70
|
+
// =============================================================================
|
|
71
|
+
//
|
|
72
|
+
// Why: MuxPlayer's UI is built on `media-chrome`, which uses custom
|
|
73
|
+
// elements with shadow-DOM `<style>` tags. `media-chrome`'s internal
|
|
74
|
+
// `insertCSSRule()` helper queries `style.sheet` during the element's
|
|
75
|
+
// `connectedCallback`. When the player mounts inside a React portal
|
|
76
|
+
// (the chat panel renders `<Video>` inside Radix's `<Dialog.Portal>`),
|
|
77
|
+
// the element is moved across DOM trees BEFORE the browser hydrates
|
|
78
|
+
// the shadow `<style>`'s `.sheet`. The helper then logs:
|
|
79
|
+
// "Media Chrome: No style sheet found on style tag of #shadow-root (open)"
|
|
80
|
+
// and returns a no-op style shim. The warning is purely cosmetic —
|
|
81
|
+
// playback, controls, and theming all render correctly because the
|
|
82
|
+
// shadow stylesheet does hydrate on the next paint.
|
|
83
|
+
//
|
|
84
|
+
// Until upstream `media-chrome` either retries on the next microtask
|
|
85
|
+
// or downgrades the warning (tracked in their issue tracker), patch
|
|
86
|
+
// `console.warn` once at module load to drop only THIS exact string.
|
|
87
|
+
// All other `console.warn` calls pass through unchanged.
|
|
88
|
+
//
|
|
89
|
+
// Why patch instead of opting out: `@mux/mux-player-react` exposes no
|
|
90
|
+
// prop to disable internal style queries, importing CSS explicitly
|
|
91
|
+
// doesn't seed the shadow-root stylesheets (they're per-element), and
|
|
92
|
+
// the warning fires before any consumer can intercept the element.
|
|
93
|
+
if (typeof window !== 'undefined' && typeof console !== 'undefined') {
|
|
94
|
+
const w = window as unknown as { __MEDIA_CHROME_WARN_PATCHED__?: boolean };
|
|
95
|
+
if (!w.__MEDIA_CHROME_WARN_PATCHED__) {
|
|
96
|
+
w.__MEDIA_CHROME_WARN_PATCHED__ = true;
|
|
97
|
+
const MEDIA_CHROME_NO_STYLESHEET_PREFIX = 'Media Chrome: No style sheet found on style tag of';
|
|
98
|
+
const originalWarn = console.warn.bind(console);
|
|
99
|
+
console.warn = (...args: unknown[]): void => {
|
|
100
|
+
if (typeof args[0] === 'string' && args[0].startsWith(MEDIA_CHROME_NO_STYLESHEET_PREFIX)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
originalWarn(...args);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
67
108
|
// =============================================================================
|
|
68
109
|
// URL classifiers (private — `<Video>` is the only consumer)
|
|
69
110
|
// =============================================================================
|
|
@@ -251,10 +292,16 @@ function wrapWithLayout(
|
|
|
251
292
|
// doesn't flicker tiny→full while video metadata loads. Both branches
|
|
252
293
|
// are sized to fill 100% of this container (MuxPlayer via `style`,
|
|
253
294
|
// YouTube facade via internal `paddingBottom: 56.25%` which compounds
|
|
254
|
-
// harmlessly inside an already-16:9 box).
|
|
295
|
+
// harmlessly inside an already-16:9 box). `rounded-lg overflow-hidden
|
|
296
|
+
// border border-ods-border` is on the wrapper (not the inner) so BOTH
|
|
297
|
+
// branches end up with the same rounded card look — YouTube's facade
|
|
298
|
+
// also paints its own internal rounded-lg on the button + iframe,
|
|
299
|
+
// matching the outer radius (so the corners stay sharp through the
|
|
300
|
+
// poster → iframe transition); MuxPlayer renders flat and inherits
|
|
301
|
+
// the wrapper's rounded corners via `overflow-hidden` clipping.
|
|
255
302
|
return (
|
|
256
303
|
<div className="flex justify-center w-full">
|
|
257
|
-
<div className="w-full max-w-3xl aspect-video">{inner}</div>
|
|
304
|
+
<div className="w-full max-w-3xl aspect-video rounded-lg overflow-hidden border border-ods-border">{inner}</div>
|
|
258
305
|
</div>
|
|
259
306
|
);
|
|
260
307
|
case 'fill':
|
|
@@ -564,7 +611,11 @@ function YouTubeFacadeInner({
|
|
|
564
611
|
src={posterJpg}
|
|
565
612
|
alt={title}
|
|
566
613
|
loading="lazy"
|
|
567
|
-
|
|
614
|
+
// React 18 wants lowercase (`fetchpriority` DOM attribute);
|
|
615
|
+
// React 19 wants camelCase (`fetchPriority` prop). Detect at
|
|
616
|
+
// module load and spread the right shape so both runtimes
|
|
617
|
+
// render the DOM attribute cleanly with no console warnings.
|
|
618
|
+
{...fetchPriorityProp(priority)}
|
|
568
619
|
decoding={priority ? 'sync' : 'async'}
|
|
569
620
|
className="absolute inset-0 w-full h-full object-cover"
|
|
570
621
|
/>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { usePathname, useRouter } from 'next
|
|
3
|
+
import { usePathname, useRouter } from '../embed-shims/next-navigation';
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import { OpenFrameLogo } from './icons';
|
|
6
6
|
import { Button } from './ui/button';
|
|
@@ -8,11 +8,11 @@ export interface ProductReleaseCardSkeletonProps {
|
|
|
8
8
|
className?: string
|
|
9
9
|
/** Card density. Must match the loaded card's `size` prop so the loading
|
|
10
10
|
* height matches the resolved height (no layout shift on resolve). */
|
|
11
|
-
size?: '
|
|
11
|
+
size?: 'lg' | 'sm'
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function ProductReleaseCardSkeleton({ className, size = '
|
|
15
|
-
// -----
|
|
14
|
+
export function ProductReleaseCardSkeleton({ className, size = 'lg' }: ProductReleaseCardSkeletonProps) {
|
|
15
|
+
// ----- LG branch — must match ProductReleaseCard size='lg'.
|
|
16
16
|
// Same outer frame (`bg-ods-system-greys-black border border-ods-border …
|
|
17
17
|
// p-6 gap-4`). Inner: hero (16:9 cover + version pill + title + summary),
|
|
18
18
|
// changelog strip placeholder, metadata-grid footer (4 cells via grid).
|
|
@@ -21,7 +21,7 @@ export function ProductReleaseCardSkeleton({ className, size = 'default' }: Prod
|
|
|
21
21
|
// loaded card ALSO always renders the changelog strip + a fixed 4-cell
|
|
22
22
|
// grid (with em-dash placeholders for missing values), so this
|
|
23
23
|
// skeleton's shape matches exactly with zero load-to-resolve reflow.
|
|
24
|
-
if (size === '
|
|
24
|
+
if (size === 'lg') {
|
|
25
25
|
return (
|
|
26
26
|
<div
|
|
27
27
|
className={cn(
|
|
@@ -151,44 +151,8 @@ export function ProductReleaseCardSkeleton({ className, size = 'default' }: Prod
|
|
|
151
151
|
)
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
return
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
'flex flex-col md:flex-row',
|
|
159
|
-
'items-start md:items-center',
|
|
160
|
-
'gap-3 md:gap-4',
|
|
161
|
-
'p-4',
|
|
162
|
-
'animate-pulse',
|
|
163
|
-
className
|
|
164
|
-
)}
|
|
165
|
-
>
|
|
166
|
-
{/* Left column - content */}
|
|
167
|
-
<div className="flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2">
|
|
168
|
-
{/* Title skeleton - 2 lines height */}
|
|
169
|
-
<div className="min-h-[48px] flex items-center">
|
|
170
|
-
<div className="flex flex-col gap-1 w-full">
|
|
171
|
-
<div className="h-[24px] w-3/4 bg-ods-border rounded" />
|
|
172
|
-
<div className="h-[24px] w-1/2 bg-ods-border rounded" />
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
{/* Description skeleton - 3 lines */}
|
|
176
|
-
<div className="flex flex-col gap-1">
|
|
177
|
-
<div className="h-[24px] w-full bg-ods-border rounded" />
|
|
178
|
-
<div className="h-[24px] w-full bg-ods-border rounded" />
|
|
179
|
-
<div className="h-[24px] w-2/3 bg-ods-border rounded" />
|
|
180
|
-
</div>
|
|
181
|
-
</div>
|
|
182
|
-
|
|
183
|
-
{/* Right column - version + date */}
|
|
184
|
-
<div className="flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0">
|
|
185
|
-
<div className="w-[200px] flex flex-col justify-center gap-2">
|
|
186
|
-
<div className="h-[24px] w-20 bg-ods-border rounded" />
|
|
187
|
-
<div className="h-[20px] w-32 bg-ods-border rounded" />
|
|
188
|
-
</div>
|
|
189
|
-
{/* Icon column */}
|
|
190
|
-
<div className="h-6 w-6 bg-ods-border rounded shrink-0 mx-3" />
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
)
|
|
154
|
+
// Unreachable — `size` is typed `'lg' | 'sm'` and both branches return
|
|
155
|
+
// above. Kept as a defensive throw so a future variant addition that
|
|
156
|
+
// forgets to return doesn't silently render `undefined`.
|
|
157
|
+
throw new Error(`ProductReleaseCardSkeleton: unsupported size '${size as string}'`)
|
|
194
158
|
}
|