@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,205 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* HubSpot Ticket Card — unified visual for hubspot-tickets markers.
|
|
5
|
+
*
|
|
6
|
+
* PURE PRESENTATION (no internal nav). The card receives the structured
|
|
7
|
+
* `<a>` prop bundle via `anchorProps` (composed by the caller from a
|
|
8
|
+
* runtime hook) and renders the rest from the `HubspotTicketItem` shape
|
|
9
|
+
* directly.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import React from 'react'
|
|
13
|
+
import { ExternalLink } from 'lucide-react'
|
|
14
|
+
import { StatusBadge } from '../../ui/status-badge'
|
|
15
|
+
import {
|
|
16
|
+
COMPACT_CARD_META_ROW,
|
|
17
|
+
COMPACT_CARD_META_ROW_BOX,
|
|
18
|
+
COMPACT_CARD_OUTER,
|
|
19
|
+
COMPACT_CARD_OUTER_STATIC,
|
|
20
|
+
COMPACT_CARD_SKELETON_OUTER,
|
|
21
|
+
COMPACT_CARD_TEXT_COL,
|
|
22
|
+
COMPACT_CARD_TITLE,
|
|
23
|
+
safeHref,
|
|
24
|
+
} from '../utils/compact-card-classes'
|
|
25
|
+
import { formatDateUTC as formatDate } from '../../../utils/format'
|
|
26
|
+
import type { HubspotTicketItem } from '../types/entities/hubspot-ticket'
|
|
27
|
+
|
|
28
|
+
export interface HubspotTicketCardAnchorProps {
|
|
29
|
+
href: string
|
|
30
|
+
target?: '_blank'
|
|
31
|
+
rel?: 'noopener noreferrer'
|
|
32
|
+
onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface HubspotTicketCardProps {
|
|
36
|
+
item: HubspotTicketItem
|
|
37
|
+
variant?: 'row' | 'compact'
|
|
38
|
+
className?: string
|
|
39
|
+
anchorProps?: HubspotTicketCardAnchorProps
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function formatToken(token: string | null | undefined): string | null {
|
|
43
|
+
if (!token) return null
|
|
44
|
+
const lower = token.toLowerCase().replace(/_/g, ' ')
|
|
45
|
+
return lower.charAt(0).toUpperCase() + lower.slice(1)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type BadgeScheme = 'success' | 'error' | 'warning' | 'cyan' | 'default'
|
|
49
|
+
|
|
50
|
+
function priorityScheme(priority: string | null | undefined): BadgeScheme {
|
|
51
|
+
const p = (priority || '').toUpperCase()
|
|
52
|
+
if (p === 'URGENT') return 'error'
|
|
53
|
+
if (p === 'HIGH') return 'warning'
|
|
54
|
+
if (p === 'MEDIUM') return 'cyan'
|
|
55
|
+
return 'default'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function statusScheme(status: string | null | undefined): BadgeScheme {
|
|
59
|
+
const s = (status || '').toUpperCase()
|
|
60
|
+
if (s === 'CLOSED') return 'success'
|
|
61
|
+
if (s === 'OPEN') return 'warning'
|
|
62
|
+
return 'default'
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function HubspotTicketCard({ item, variant = 'compact', className, anchorProps }: HubspotTicketCardProps) {
|
|
66
|
+
const statusText = item.statusLabel ?? formatToken(item.status)
|
|
67
|
+
const priorityText = formatToken(item.priority)
|
|
68
|
+
const dateText = formatDate(item.dateUpdated, { fallback: '', timezone: 'local' })
|
|
69
|
+
|
|
70
|
+
if (variant === 'row') {
|
|
71
|
+
return (
|
|
72
|
+
<div className={`flex items-center gap-3 min-w-0 ${className ?? ''}`}>
|
|
73
|
+
<span className="text-ods-text-primary text-sm font-medium truncate max-w-[260px] shrink-0">{item.title}</span>
|
|
74
|
+
{item.preview ? (
|
|
75
|
+
<span className="text-ods-text-secondary text-sm flex-1 min-w-0 truncate">{item.preview}</span>
|
|
76
|
+
) : null}
|
|
77
|
+
{statusText ? (
|
|
78
|
+
<StatusBadge text={statusText} variant="button" colorScheme={statusScheme(item.status)} />
|
|
79
|
+
) : null}
|
|
80
|
+
{dateText ? (
|
|
81
|
+
<span className="text-ods-text-secondary text-xs w-24 shrink-0 text-right">{dateText}</span>
|
|
82
|
+
) : null}
|
|
83
|
+
</div>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const metaParts: React.ReactNode[] = []
|
|
88
|
+
if (item.customerCompany) {
|
|
89
|
+
metaParts.push(
|
|
90
|
+
<span key="company" className="min-w-0 truncate">{item.customerCompany}</span>,
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
if (dateText) metaParts.push(<span key="date" className="whitespace-nowrap">{dateText}</span>)
|
|
94
|
+
|
|
95
|
+
const href = safeHref(item.url)
|
|
96
|
+
const body = (
|
|
97
|
+
<>
|
|
98
|
+
<span className={COMPACT_CARD_TEXT_COL}>
|
|
99
|
+
<span className="flex flex-wrap items-center gap-1.5 min-w-0">
|
|
100
|
+
<span className={`${COMPACT_CARD_TITLE} shrink min-w-0`}>{item.title}</span>
|
|
101
|
+
{priorityText ? (
|
|
102
|
+
<StatusBadge
|
|
103
|
+
text={priorityText}
|
|
104
|
+
variant="button"
|
|
105
|
+
colorScheme={priorityScheme(item.priority)}
|
|
106
|
+
className="shrink-0"
|
|
107
|
+
/>
|
|
108
|
+
) : null}
|
|
109
|
+
{statusText ? (
|
|
110
|
+
<StatusBadge
|
|
111
|
+
text={statusText}
|
|
112
|
+
variant="button"
|
|
113
|
+
colorScheme={statusScheme(item.status)}
|
|
114
|
+
className="shrink-0"
|
|
115
|
+
/>
|
|
116
|
+
) : null}
|
|
117
|
+
</span>
|
|
118
|
+
{item.customerEmail ? (
|
|
119
|
+
<span className="flex min-w-0 items-center gap-1 text-[11px] leading-4 text-ods-text-secondary">
|
|
120
|
+
<span className="shrink-0 text-ods-text-secondary/70">From:</span>
|
|
121
|
+
<span className="min-w-0 truncate">{item.customerEmail}</span>
|
|
122
|
+
</span>
|
|
123
|
+
) : null}
|
|
124
|
+
<span className="flex min-w-0">
|
|
125
|
+
<span className="line-clamp-4 whitespace-pre-wrap break-words text-[13px] leading-5 text-ods-text-secondary">
|
|
126
|
+
{item.preview || <span className="italic text-ods-text-secondary/60">No description provided.</span>}
|
|
127
|
+
</span>
|
|
128
|
+
</span>
|
|
129
|
+
{metaParts.length > 0 ? (
|
|
130
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
131
|
+
<span className={COMPACT_CARD_META_ROW}>
|
|
132
|
+
{metaParts.map((part, i) => (
|
|
133
|
+
<React.Fragment key={i}>
|
|
134
|
+
{i > 0 ? <span className="text-ods-text-secondary/40 shrink-0">·</span> : null}
|
|
135
|
+
<span className="min-w-0 truncate">{part}</span>
|
|
136
|
+
</React.Fragment>
|
|
137
|
+
))}
|
|
138
|
+
</span>
|
|
139
|
+
</span>
|
|
140
|
+
) : null}
|
|
141
|
+
</span>
|
|
142
|
+
{href ? (
|
|
143
|
+
<span className="flex shrink-0 items-center self-start h-5 text-ods-text-secondary">
|
|
144
|
+
<ExternalLink className="w-3.5 h-3.5" />
|
|
145
|
+
</span>
|
|
146
|
+
) : null}
|
|
147
|
+
</>
|
|
148
|
+
)
|
|
149
|
+
if (anchorProps) {
|
|
150
|
+
return (
|
|
151
|
+
<a {...anchorProps} className={`${COMPACT_CARD_OUTER} ${className ?? ''}`}>
|
|
152
|
+
{body}
|
|
153
|
+
</a>
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
return href ? (
|
|
157
|
+
<a
|
|
158
|
+
href={href}
|
|
159
|
+
target="_blank"
|
|
160
|
+
rel="noopener noreferrer"
|
|
161
|
+
className={`${COMPACT_CARD_OUTER} ${className ?? ''}`}
|
|
162
|
+
>
|
|
163
|
+
{body}
|
|
164
|
+
</a>
|
|
165
|
+
) : (
|
|
166
|
+
<span className={`${COMPACT_CARD_OUTER_STATIC} ${className ?? ''}`} aria-label="No link available">{body}</span>
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function HubspotTicketCardSkeleton({ variant = 'compact', className }: { variant?: 'row' | 'compact'; className?: string }) {
|
|
171
|
+
if (variant === 'row') {
|
|
172
|
+
return (
|
|
173
|
+
<div className={`flex items-center gap-3 min-w-0 animate-pulse ${className ?? ''}`}>
|
|
174
|
+
<div className="h-3 w-40 bg-ods-bg rounded shrink-0" />
|
|
175
|
+
<div className="h-3 w-2/3 bg-ods-bg/60 rounded flex-1" />
|
|
176
|
+
<div className="h-3 w-16 bg-ods-bg/60 rounded shrink-0" />
|
|
177
|
+
<div className="h-3 w-20 bg-ods-bg/60 rounded shrink-0" />
|
|
178
|
+
</div>
|
|
179
|
+
)
|
|
180
|
+
}
|
|
181
|
+
return (
|
|
182
|
+
<span className={`${COMPACT_CARD_SKELETON_OUTER} ${className ?? ''}`}>
|
|
183
|
+
<span className={COMPACT_CARD_TEXT_COL}>
|
|
184
|
+
<span className="flex flex-wrap items-center gap-1.5 min-w-0">
|
|
185
|
+
<span className="h-3.5 w-2/3 rounded bg-ods-bg" />
|
|
186
|
+
<span className="h-4 w-12 rounded-full bg-ods-bg/60" />
|
|
187
|
+
<span className="h-4 w-16 rounded-full bg-ods-bg/60" />
|
|
188
|
+
</span>
|
|
189
|
+
<span className="h-4 w-1/2 rounded bg-ods-bg/60" />
|
|
190
|
+
<span className="flex flex-col gap-0 min-w-0">
|
|
191
|
+
<span className="h-5 w-5/6 rounded bg-ods-bg/60" />
|
|
192
|
+
<span className="h-5 w-4/6 rounded bg-ods-bg/60" />
|
|
193
|
+
<span className="h-5 w-3/4 rounded bg-ods-bg/60" />
|
|
194
|
+
<span className="h-5 w-2/5 rounded bg-ods-bg/60" />
|
|
195
|
+
</span>
|
|
196
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
197
|
+
<span className="h-3 w-1/3 rounded bg-ods-bg/70" />
|
|
198
|
+
</span>
|
|
199
|
+
</span>
|
|
200
|
+
<span className="flex shrink-0 items-center self-start h-5">
|
|
201
|
+
<span className="h-3.5 w-3.5 rounded bg-ods-bg" />
|
|
202
|
+
</span>
|
|
203
|
+
</span>
|
|
204
|
+
)
|
|
205
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity-card barrel — re-exports every chat-surface card under one path.
|
|
3
|
+
*
|
|
4
|
+
* Cards in this directory are PURE PRESENTATION: they take a pre-resolved
|
|
5
|
+
* `href`, optional `placeholderUrl`, and entity data as props. They write
|
|
6
|
+
* NO internal click logic — consumers wrap the card with their own anchor
|
|
7
|
+
* (hub's `<NavLinkAnchor>` or lib's `<NavLinkAnchorViaRuntime>`).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Existing supporting primitives
|
|
11
|
+
export {
|
|
12
|
+
EntityAuthorCard,
|
|
13
|
+
EntityMetadataValueCell,
|
|
14
|
+
EntityMetadataAuthorCell,
|
|
15
|
+
EMPTY_AUTHOR_PLACEHOLDER,
|
|
16
|
+
type EntityAuthorCardProps,
|
|
17
|
+
} from './entity-author-card'
|
|
18
|
+
export { BlogImagePlaceholder } from './blog-image-placeholder'
|
|
19
|
+
export { AdminContentCard } from './admin-content-card'
|
|
20
|
+
|
|
21
|
+
// Moved-into-subdir flat cards
|
|
22
|
+
export { BlockCard, type BlockCardProps } from './block-card'
|
|
23
|
+
export {
|
|
24
|
+
ChatTicketItem,
|
|
25
|
+
type ChatTicketItemData,
|
|
26
|
+
type ChatTicketItemProps,
|
|
27
|
+
} from './chat-ticket-item'
|
|
28
|
+
export {
|
|
29
|
+
ChatVideoEntityCard,
|
|
30
|
+
type ChatVideoEntityCardProps,
|
|
31
|
+
} from './chat-video-entity-card'
|
|
32
|
+
export {
|
|
33
|
+
ProductReleaseCard,
|
|
34
|
+
ProductReleaseCardSkeleton,
|
|
35
|
+
type ProductReleaseCardProps,
|
|
36
|
+
type ProductReleaseCardSize,
|
|
37
|
+
type ProductReleaseCardAnchorProps,
|
|
38
|
+
} from './product-release-card'
|
|
39
|
+
|
|
40
|
+
// Refactored pure-presentation cards
|
|
41
|
+
export { BlogCard, BlogCardSkeleton, type BlogCardProps } from './blog-card'
|
|
42
|
+
export {
|
|
43
|
+
CaseStudyCard,
|
|
44
|
+
CaseStudyCardSkeleton,
|
|
45
|
+
type CaseStudyCardProps,
|
|
46
|
+
} from './case-study-card'
|
|
47
|
+
export {
|
|
48
|
+
CustomerInterviewCard,
|
|
49
|
+
CustomerInterviewCardSkeleton,
|
|
50
|
+
type CustomerInterviewCardProps,
|
|
51
|
+
} from './customer-interview-card'
|
|
52
|
+
export {
|
|
53
|
+
InvestorUpdateCard,
|
|
54
|
+
InvestorUpdateCardSkeleton,
|
|
55
|
+
type InvestorUpdateCardProps,
|
|
56
|
+
} from './investor-update-card'
|
|
57
|
+
export {
|
|
58
|
+
OnboardingGuideCard,
|
|
59
|
+
OnboardingGuideCardSkeleton,
|
|
60
|
+
type OnboardingGuideCardProps,
|
|
61
|
+
} from './onboarding-guide-card'
|
|
62
|
+
export {
|
|
63
|
+
RoadmapCard,
|
|
64
|
+
RoadmapCardSkeleton,
|
|
65
|
+
type RoadmapCardProps,
|
|
66
|
+
type VoteType,
|
|
67
|
+
} from './roadmap-card'
|
|
68
|
+
export {
|
|
69
|
+
RoadmapVoteButton,
|
|
70
|
+
type RoadmapVoteButtonProps,
|
|
71
|
+
} from './roadmap-vote-button'
|
|
72
|
+
export { TaskTypeIcon, type TaskTypeIconProps } from './task-type-icon'
|
|
73
|
+
export {
|
|
74
|
+
GitHubActivityCard,
|
|
75
|
+
GitHubActivityCardSkeleton,
|
|
76
|
+
type GitHubActivityCardProps,
|
|
77
|
+
type GitHubActivityCardAnchorProps,
|
|
78
|
+
} from './github-activity-card'
|
|
79
|
+
export {
|
|
80
|
+
SlackMessageCard,
|
|
81
|
+
SlackMessageCardSkeleton,
|
|
82
|
+
type SlackMessageCardProps,
|
|
83
|
+
type SlackMessageCardAnchorProps,
|
|
84
|
+
} from './slack-message-card'
|
|
85
|
+
export {
|
|
86
|
+
HubspotTicketCard,
|
|
87
|
+
HubspotTicketCardSkeleton,
|
|
88
|
+
type HubspotTicketCardProps,
|
|
89
|
+
type HubspotTicketCardAnchorProps,
|
|
90
|
+
} from './hubspot-ticket-card'
|
|
91
|
+
export {
|
|
92
|
+
DataRoomDocCard,
|
|
93
|
+
DataRoomDocCardSkeleton,
|
|
94
|
+
type DataRoomDocCardProps,
|
|
95
|
+
type DataRoomDocCardAnchorProps,
|
|
96
|
+
} from './data-room-doc-card'
|
|
97
|
+
export {
|
|
98
|
+
ProgramCard,
|
|
99
|
+
ProgramCardSkeleton,
|
|
100
|
+
type ProgramCardProps,
|
|
101
|
+
} from './program-card'
|
|
102
|
+
export {
|
|
103
|
+
CampaignCardAdmin,
|
|
104
|
+
CampaignCardAdminSkeleton,
|
|
105
|
+
type CampaignCardItem,
|
|
106
|
+
type CampaignCardAdminProps,
|
|
107
|
+
type CampaignCardAdminAnchorProps,
|
|
108
|
+
} from './campaign-card-admin'
|
|
109
|
+
export {
|
|
110
|
+
GenericEntityCard,
|
|
111
|
+
GenericEntityCardSkeleton,
|
|
112
|
+
type GenericEntityCardItem,
|
|
113
|
+
type GenericEntityCardProps,
|
|
114
|
+
type GenericEntityCardAnchorProps,
|
|
115
|
+
} from './generic-entity-card'
|
|
116
|
+
|
|
117
|
+
// Per-type dispatch + ChatCardLoader — single switch over canonical
|
|
118
|
+
// chat cards. Adding a new card type = one entry in `CHAT_CARD_REGISTRY`
|
|
119
|
+
// inside `./dispatch.tsx`.
|
|
120
|
+
export {
|
|
121
|
+
renderChatInlineEntityCard,
|
|
122
|
+
ChatCardLoader,
|
|
123
|
+
type ChatCardRenderOptions,
|
|
124
|
+
type ChatCardDispatchExtras,
|
|
125
|
+
} from './dispatch'
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* InvestorUpdateCard (pure presentation).
|
|
5
|
+
*
|
|
6
|
+
* Two densities — `default` (uses `AdminContentCard`) and `sm` (compact
|
|
7
|
+
* horizontal). The card writes NO click logic — callers wrap with their
|
|
8
|
+
* own anchor and pass the resolved detail URL via `href`.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import React from 'react'
|
|
12
|
+
import { Calendar } from 'lucide-react'
|
|
13
|
+
import { AdminContentCard } from './admin-content-card'
|
|
14
|
+
import { formatInvestorUpdatePeriod, type InvestorUpdate } from '../types/entities/investor-update'
|
|
15
|
+
import {
|
|
16
|
+
COMPACT_CARD_IMAGE_SLOT,
|
|
17
|
+
COMPACT_CARD_META_ROW_BOX,
|
|
18
|
+
COMPACT_CARD_OUTER,
|
|
19
|
+
COMPACT_CARD_ROW_FILLER,
|
|
20
|
+
COMPACT_CARD_SKELETON_IMAGE_SLOT,
|
|
21
|
+
COMPACT_CARD_SKELETON_OUTER,
|
|
22
|
+
COMPACT_CARD_SUBTITLE,
|
|
23
|
+
COMPACT_CARD_SUMMARY,
|
|
24
|
+
COMPACT_CARD_TEXT_COL,
|
|
25
|
+
COMPACT_CARD_TITLE,
|
|
26
|
+
COMPACT_CARD_TITLE_ROW,
|
|
27
|
+
} from '../utils/compact-card-classes'
|
|
28
|
+
|
|
29
|
+
export interface InvestorUpdateCardProps {
|
|
30
|
+
update: InvestorUpdate
|
|
31
|
+
href: string
|
|
32
|
+
/** When `_blank`, opens in a new tab. Set by chat dispatch via
|
|
33
|
+
* `computeIsNewTab`. Defaults to same-tab. */
|
|
34
|
+
target?: '_blank'
|
|
35
|
+
rel?: 'noopener noreferrer'
|
|
36
|
+
targetPlatform?: string | null
|
|
37
|
+
/** OG placeholder URL used when `update.featured_image` is missing. */
|
|
38
|
+
placeholderUrl?: string | null
|
|
39
|
+
size?: 'default' | 'sm'
|
|
40
|
+
className?: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function InvestorUpdateCardSkeleton({ size = 'default' }: { size?: 'default' | 'sm' }) {
|
|
44
|
+
if (size === 'sm') {
|
|
45
|
+
return (
|
|
46
|
+
<span className={COMPACT_CARD_SKELETON_OUTER}>
|
|
47
|
+
<span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
|
|
48
|
+
<span className={COMPACT_CARD_TEXT_COL}>
|
|
49
|
+
<span className={`${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`}>
|
|
50
|
+
<span className="h-3.5 w-1/2 rounded bg-ods-bg" />
|
|
51
|
+
<span className="h-4 w-8 rounded bg-ods-bg/70 shrink-0" />
|
|
52
|
+
</span>
|
|
53
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
54
|
+
<span className="h-3 w-1/3 rounded bg-ods-bg/70" />
|
|
55
|
+
</span>
|
|
56
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
57
|
+
<span className="h-3 w-11/12 rounded bg-ods-bg/40" />
|
|
58
|
+
</span>
|
|
59
|
+
</span>
|
|
60
|
+
</span>
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
return (
|
|
64
|
+
<div className="bg-ods-card border border-ods-border rounded-lg overflow-hidden h-full animate-pulse">
|
|
65
|
+
<div className="aspect-[16/9] bg-ods-bg" />
|
|
66
|
+
<div className="p-4 space-y-3">
|
|
67
|
+
<div className="h-5 w-3/4 bg-ods-bg rounded" />
|
|
68
|
+
<div className="h-3 w-full bg-ods-bg/60 rounded" />
|
|
69
|
+
<div className="h-3 w-4/5 bg-ods-bg/60 rounded" />
|
|
70
|
+
<div className="h-4 w-1/3 bg-ods-bg/60 rounded" />
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function InvestorUpdateCard({ update, href, target, rel, placeholderUrl, size = 'default', className }: InvestorUpdateCardProps) {
|
|
77
|
+
const coverImage = update.featured_image || placeholderUrl || null
|
|
78
|
+
|
|
79
|
+
if (size === 'sm') {
|
|
80
|
+
const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end)
|
|
81
|
+
return (
|
|
82
|
+
<a href={href} target={target} rel={rel} className={`${COMPACT_CARD_OUTER} ${className ?? ''}`}>
|
|
83
|
+
<span className={COMPACT_CARD_IMAGE_SLOT}>
|
|
84
|
+
{coverImage ? (
|
|
85
|
+
<img
|
|
86
|
+
src={coverImage}
|
|
87
|
+
alt={update.title ?? 'Investor update'}
|
|
88
|
+
className="absolute inset-0 block w-full h-full object-contain"
|
|
89
|
+
onError={(e) => {
|
|
90
|
+
;(e.currentTarget as HTMLImageElement).style.display = 'none'
|
|
91
|
+
}}
|
|
92
|
+
/>
|
|
93
|
+
) : (
|
|
94
|
+
<span className="flex h-full w-full items-center justify-center text-ods-accent">
|
|
95
|
+
<Calendar className="h-4 w-4" />
|
|
96
|
+
</span>
|
|
97
|
+
)}
|
|
98
|
+
</span>
|
|
99
|
+
<span className={COMPACT_CARD_TEXT_COL}>
|
|
100
|
+
<span className={`${COMPACT_CARD_TITLE_ROW} gap-2`}>
|
|
101
|
+
<span className={`${COMPACT_CARD_TITLE} min-w-0`}>
|
|
102
|
+
{update.title || `Update #${update.update_number ?? '?'}`}
|
|
103
|
+
</span>
|
|
104
|
+
{update.update_number ? (
|
|
105
|
+
<span className="shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-[10px] font-medium text-ods-accent">
|
|
106
|
+
#{update.update_number}
|
|
107
|
+
</span>
|
|
108
|
+
) : null}
|
|
109
|
+
</span>
|
|
110
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
111
|
+
<span className={COMPACT_CARD_SUBTITLE}>
|
|
112
|
+
{periodText || 'Investor update'}
|
|
113
|
+
</span>
|
|
114
|
+
</span>
|
|
115
|
+
<span className={COMPACT_CARD_META_ROW_BOX}>
|
|
116
|
+
<span className={COMPACT_CARD_SUMMARY}>
|
|
117
|
+
{(update.strategic_update || update.content || '').slice(0, 120) || COMPACT_CARD_ROW_FILLER}
|
|
118
|
+
</span>
|
|
119
|
+
</span>
|
|
120
|
+
</span>
|
|
121
|
+
</a>
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<a href={href} target={target} rel={rel} className={`block h-full ${className ?? ''}`}>
|
|
127
|
+
<AdminContentCard
|
|
128
|
+
imageUrl={update.featured_image}
|
|
129
|
+
placeholderUrl={placeholderUrl}
|
|
130
|
+
title={update.title || `Update #${update.update_number || '?'}`}
|
|
131
|
+
summary={update.strategic_update?.slice(0, 120) || update.content?.slice(0, 120) || 'No description'}
|
|
132
|
+
badges={
|
|
133
|
+
update.update_number ? (
|
|
134
|
+
<span className="px-2 py-0.5 rounded text-xs font-medium bg-ods-accent/10 text-ods-accent">
|
|
135
|
+
#{update.update_number}
|
|
136
|
+
</span>
|
|
137
|
+
) : undefined
|
|
138
|
+
}
|
|
139
|
+
meta={
|
|
140
|
+
(update.period_start || update.period_end) ? (
|
|
141
|
+
<div className="flex items-center gap-1">
|
|
142
|
+
<Calendar className="h-3 w-3" />
|
|
143
|
+
<span>{formatInvestorUpdatePeriod(update.period_start, update.period_end)}</span>
|
|
144
|
+
</div>
|
|
145
|
+
) : undefined
|
|
146
|
+
}
|
|
147
|
+
/>
|
|
148
|
+
</a>
|
|
149
|
+
)
|
|
150
|
+
}
|