@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
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
3
|
import React from 'react'
|
|
4
|
-
import Image from 'next
|
|
4
|
+
import Image from '../../../embed-shims/next-image'
|
|
5
5
|
import { InteractiveCard } from '../../ui/interactive-card'
|
|
6
6
|
import { StatusBadge } from '../../ui/status-badge'
|
|
7
7
|
import { SquareAvatar } from '../../ui/square-avatar'
|
|
8
8
|
import {
|
|
9
9
|
AlertTriangle,
|
|
10
|
-
ChevronRight,
|
|
11
10
|
Eye,
|
|
12
11
|
Package,
|
|
13
12
|
Play,
|
|
@@ -18,21 +17,28 @@ import {
|
|
|
18
17
|
import { cn } from '../../../utils/cn'
|
|
19
18
|
|
|
20
19
|
/**
|
|
21
|
-
* Card density
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* - `
|
|
25
|
-
*
|
|
20
|
+
* Card density. Two variants, both actively used across openframe + flamingo
|
|
21
|
+
* apps and the related-content rail:
|
|
22
|
+
*
|
|
23
|
+
* - `lg`: rich large card used everywhere a product release is the focal
|
|
24
|
+
* item — openframe's `/releases` catalog row, flamingo's DevCenter tab,
|
|
25
|
+
* investor-update related-content section. Three zones — hero (16:9 cover
|
|
26
|
+
* + version pill + title + summary), changelog stats strip (icons +
|
|
27
|
+
* counts), metadata grid footer (Type · Status · Released · Author). The
|
|
28
|
+
* grid mirrors the hub's `<EntityAuthorCard>` byte-for-byte (see lg
|
|
29
|
+
* branch comment).
|
|
30
|
+
*
|
|
31
|
+
* - `sm`: compact horizontal layout (~80px tall) for inline rendering inside
|
|
32
|
+
* chat messages and other tight surfaces. Drops `<h3>` (block-only,
|
|
26
33
|
* illegal inside markdown `<p>`) for `<span>` text, swaps the outer
|
|
27
34
|
* `InteractiveCard` for a `<span>`-anchored link, and collapses to:
|
|
28
35
|
* 56px icon + 1-line title + 1-line meta (version · date).
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* branch comment).
|
|
36
|
+
*
|
|
37
|
+
* A previous `default` variant (vertical title+description / version+date
|
|
38
|
+
* column) was deleted in the 2026-05 DRY pass — it had a single consumer
|
|
39
|
+
* (the hub's RelatedContentSection) that has since moved to `lg`.
|
|
34
40
|
*/
|
|
35
|
-
export type ProductReleaseCardSize = '
|
|
41
|
+
export type ProductReleaseCardSize = 'lg' | 'sm'
|
|
36
42
|
|
|
37
43
|
/**
|
|
38
44
|
* Minimal structural `<a>` prop bundle the consumer composes (typically
|
|
@@ -80,7 +86,7 @@ export interface ProductReleaseCardProps {
|
|
|
80
86
|
anchorProps?: ProductReleaseCardAnchorProps
|
|
81
87
|
/** Additional CSS classes */
|
|
82
88
|
className?: string
|
|
83
|
-
/** Card density. Defaults to `'
|
|
89
|
+
/** Card density. Defaults to `'lg'` (the canonical large card). */
|
|
84
90
|
size?: ProductReleaseCardSize
|
|
85
91
|
|
|
86
92
|
// ─── Catalog-only props (ignored by `default` / `sm` branches) ─────────
|
|
@@ -125,7 +131,7 @@ export function ProductReleaseCard({
|
|
|
125
131
|
onClick,
|
|
126
132
|
anchorProps,
|
|
127
133
|
className,
|
|
128
|
-
size = '
|
|
134
|
+
size = 'lg',
|
|
129
135
|
coverImage,
|
|
130
136
|
hasVideoCover,
|
|
131
137
|
releaseType,
|
|
@@ -135,7 +141,7 @@ export function ProductReleaseCard({
|
|
|
135
141
|
author,
|
|
136
142
|
changelogCounts,
|
|
137
143
|
}: ProductReleaseCardProps) {
|
|
138
|
-
// -----
|
|
144
|
+
// ----- LG branch (rich /releases catalog row + related-content rail) -----
|
|
139
145
|
// The card has THREE zones:
|
|
140
146
|
// 1. Hero — cover image LEFT, version pill + title + summary RIGHT.
|
|
141
147
|
// 2. Changelog strip — icons + counts (hidden when total === 0).
|
|
@@ -145,11 +151,11 @@ export function ProductReleaseCard({
|
|
|
145
151
|
// author-cell shapes, byte-for-byte). The OSS lib has zero hub
|
|
146
152
|
// coupling by design; we cannot import the hub's
|
|
147
153
|
// <EntityAuthorCard>. This is the SAME inline-duplication policy
|
|
148
|
-
// documented for the COMPACT_CARD_* string set
|
|
149
|
-
// If the hub's <EntityAuthorCard> visual changes (cell
|
|
150
|
-
// divider styles, avatar size, etc.), update this branch
|
|
151
|
-
// lockstep.
|
|
152
|
-
if (size === '
|
|
154
|
+
// documented for the COMPACT_CARD_* string set in the chat-card
|
|
155
|
+
// file. If the hub's <EntityAuthorCard> visual changes (cell
|
|
156
|
+
// padding, divider styles, avatar size, etc.), update this branch
|
|
157
|
+
// in lockstep.
|
|
158
|
+
if (size === 'lg') {
|
|
153
159
|
const totalChangelog =
|
|
154
160
|
(changelogCounts?.features ?? 0) +
|
|
155
161
|
(changelogCounts?.fixes ?? 0) +
|
|
@@ -556,99 +562,8 @@ export function ProductReleaseCard({
|
|
|
556
562
|
)
|
|
557
563
|
}
|
|
558
564
|
|
|
559
|
-
//
|
|
560
|
-
//
|
|
561
|
-
//
|
|
562
|
-
|
|
563
|
-
// → soft RSC nav, modifier-click → browser default). The
|
|
564
|
-
// `<InteractiveCard onClick>` form remains the back-compat path for
|
|
565
|
-
// the public `/releases` tab caller which still routes via
|
|
566
|
-
// `router.push()` directly.
|
|
567
|
-
if (anchorProps) {
|
|
568
|
-
return (
|
|
569
|
-
<a
|
|
570
|
-
{...anchorProps}
|
|
571
|
-
className={cn(
|
|
572
|
-
'bg-ods-card border border-ods-border rounded-[6px]',
|
|
573
|
-
'flex flex-col md:flex-row',
|
|
574
|
-
'items-start md:items-center',
|
|
575
|
-
'gap-3 md:gap-4',
|
|
576
|
-
'p-4 no-underline',
|
|
577
|
-
'transition-colors hover:border-ods-text-secondary/40',
|
|
578
|
-
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card',
|
|
579
|
-
className,
|
|
580
|
-
)}
|
|
581
|
-
>
|
|
582
|
-
{/* Left column - content */}
|
|
583
|
-
<div className="flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2">
|
|
584
|
-
<div className="min-h-[48px] flex items-center">
|
|
585
|
-
<h3 className="text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2" title={title}>
|
|
586
|
-
{title}
|
|
587
|
-
</h3>
|
|
588
|
-
</div>
|
|
589
|
-
<p className="text-h4 text-ods-text-secondary line-clamp-3" title={summary || ' '}>
|
|
590
|
-
{summary || ' '}
|
|
591
|
-
</p>
|
|
592
|
-
</div>
|
|
593
|
-
<div className="flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0">
|
|
594
|
-
<div className="w-[200px] flex flex-col justify-center gap-2">
|
|
595
|
-
<p className="text-h3 text-ods-text-primary tracking-[-0.36px] truncate">
|
|
596
|
-
{version}
|
|
597
|
-
</p>
|
|
598
|
-
<p className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate">
|
|
599
|
-
{formattedDate}
|
|
600
|
-
</p>
|
|
601
|
-
</div>
|
|
602
|
-
<div className="flex items-center justify-center p-3 shrink-0">
|
|
603
|
-
<ChevronRight className="h-6 w-6 text-ods-text-primary" />
|
|
604
|
-
</div>
|
|
605
|
-
</div>
|
|
606
|
-
</a>
|
|
607
|
-
)
|
|
608
|
-
}
|
|
609
|
-
return (
|
|
610
|
-
<InteractiveCard
|
|
611
|
-
clickable={true}
|
|
612
|
-
onClick={onClick}
|
|
613
|
-
className={cn(
|
|
614
|
-
'bg-ods-card border border-ods-border rounded-[6px]',
|
|
615
|
-
'flex flex-col md:flex-row',
|
|
616
|
-
'items-start md:items-center',
|
|
617
|
-
'gap-3 md:gap-4',
|
|
618
|
-
'p-4',
|
|
619
|
-
className
|
|
620
|
-
)}
|
|
621
|
-
>
|
|
622
|
-
{/* Left column - content */}
|
|
623
|
-
<div className="flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2">
|
|
624
|
-
<div className="min-h-[48px] flex items-center">
|
|
625
|
-
<h3 className="text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2" title={title}>
|
|
626
|
-
{title}
|
|
627
|
-
</h3>
|
|
628
|
-
</div>
|
|
629
|
-
<p className="text-h4 text-ods-text-secondary line-clamp-3" title={summary || ' '}>
|
|
630
|
-
{summary || ' '}
|
|
631
|
-
</p>
|
|
632
|
-
</div>
|
|
633
|
-
|
|
634
|
-
{/* Right column - version + date */}
|
|
635
|
-
<div
|
|
636
|
-
className="flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0"
|
|
637
|
-
onClick={(e) => e.stopPropagation()}
|
|
638
|
-
>
|
|
639
|
-
<div className="w-[200px] flex flex-col justify-center gap-2">
|
|
640
|
-
<p className="text-h3 text-ods-text-primary tracking-[-0.36px] truncate">
|
|
641
|
-
{version}
|
|
642
|
-
</p>
|
|
643
|
-
<p className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate">
|
|
644
|
-
{formattedDate}
|
|
645
|
-
</p>
|
|
646
|
-
</div>
|
|
647
|
-
{/* Icon column */}
|
|
648
|
-
<div className="flex items-center justify-center p-3 shrink-0">
|
|
649
|
-
<ChevronRight className="h-6 w-6 text-ods-text-primary" />
|
|
650
|
-
</div>
|
|
651
|
-
</div>
|
|
652
|
-
</InteractiveCard>
|
|
653
|
-
)
|
|
565
|
+
// Unreachable — `size` is typed `'lg' | 'sm'` and both branches return
|
|
566
|
+
// above. Kept as a defensive throw so a future variant addition that
|
|
567
|
+
// forgets to return doesn't silently render `undefined`.
|
|
568
|
+
throw new Error(`ProductReleaseCard: unsupported size '${size as string}'`)
|
|
654
569
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect, ComponentType } from 'react';
|
|
4
|
-
import Link from 'next
|
|
4
|
+
import Link from '../../../embed-shims/next-link';
|
|
5
5
|
import { Card, CardContent } from '../../ui/card';
|
|
6
6
|
import { ArticleDetailLayout } from '../../layout/article-detail-layout';
|
|
7
7
|
import { ReleaseChangelogSection } from '../../ui/release-changelog-section';
|
|
@@ -11,6 +11,7 @@ import { ImageGalleryModal } from '../../ui/image-gallery-modal';
|
|
|
11
11
|
import { GitHubIcon } from '../../icons/github-icon';
|
|
12
12
|
import { AlertTriangle, ExternalLink, BookMarked, Sparkles, TrendingUp, Wrench } from 'lucide-react';
|
|
13
13
|
import { formatReleaseDate } from '../../../utils/date-formatters';
|
|
14
|
+
import { nameInitials } from '../../../utils/format';
|
|
14
15
|
import { Video } from '../../features/video';
|
|
15
16
|
import { DetailPageSkeleton } from '../detail-page-skeleton';
|
|
16
17
|
import type { ChangelogEntry } from '../../../types/product-release';
|
|
@@ -21,10 +22,15 @@ export interface MarkdownRendererProps {
|
|
|
21
22
|
content: string;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
25
|
+
// Canonical RoadmapItem shape lives in chat entity types — see
|
|
26
|
+
// `src/components/chat/types/entities/roadmap-item.ts`. The product-release
|
|
27
|
+
// detail page previously declared a structural placeholder
|
|
28
|
+
// (`{ id; [k: string]: unknown }`) that conflicted with the canonical
|
|
29
|
+
// shape once the entities barrel was added; re-exporting the canonical
|
|
30
|
+
// type fixes the collision while keeping the same import path for
|
|
31
|
+
// downstream consumers of `./release-detail-page`.
|
|
32
|
+
export type { RoadmapItem } from '../../chat/types/entities/roadmap-item';
|
|
33
|
+
import type { RoadmapItem } from '../../chat/types/entities/roadmap-item';
|
|
28
34
|
|
|
29
35
|
export interface DeliveryResponse {
|
|
30
36
|
completed: unknown[];
|
|
@@ -168,16 +174,6 @@ export function ReleaseDetailPage({
|
|
|
168
174
|
|
|
169
175
|
const hasBreakingChanges = Array.isArray(release.breaking_changes) && release.breaking_changes.length > 0;
|
|
170
176
|
|
|
171
|
-
// Get initials from full name
|
|
172
|
-
const getInitials = (name: string) => {
|
|
173
|
-
return name
|
|
174
|
-
.split(' ')
|
|
175
|
-
.map(n => n[0])
|
|
176
|
-
.join('')
|
|
177
|
-
.toUpperCase()
|
|
178
|
-
.slice(0, 2);
|
|
179
|
-
};
|
|
180
|
-
|
|
181
177
|
// Type assertions for release data
|
|
182
178
|
const releaseTitle = release.title as string;
|
|
183
179
|
const releaseVersion = release.version as string;
|
|
@@ -277,7 +273,7 @@ export function ReleaseDetailPage({
|
|
|
277
273
|
<SquareAvatar
|
|
278
274
|
src={author?.avatar_url || ''}
|
|
279
275
|
alt={author?.full_name || 'Author'}
|
|
280
|
-
fallback={
|
|
276
|
+
fallback={nameInitials(author?.full_name || 'Unknown', '')}
|
|
281
277
|
size="md"
|
|
282
278
|
variant="round"
|
|
283
279
|
/>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
4
4
|
import { Check } from "lucide-react";
|
|
5
|
-
import Link from "next
|
|
5
|
+
import Link from "../../embed-shims/next-link";
|
|
6
6
|
import React, { useCallback, useState } from "react";
|
|
7
7
|
import { Chevron02RightIcon, Ellipsis01Icon } from "../icons-v2-generated";
|
|
8
8
|
import { cn } from "../../utils/cn";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { Slot } from "@radix-ui/react-slot"
|
|
4
4
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
5
|
-
import Link from "next
|
|
5
|
+
import Link from "../../../embed-shims/next-link"
|
|
6
6
|
import React from "react"
|
|
7
7
|
|
|
8
8
|
import { cn } from "../../../utils/cn"
|
|
@@ -123,6 +123,19 @@ interface ButtonProps
|
|
|
123
123
|
href?: string
|
|
124
124
|
openInNewTab?: boolean
|
|
125
125
|
prefetch?: boolean
|
|
126
|
+
/**
|
|
127
|
+
* Pre-resolved anchor bundle (from `useNavLink({ href, targetPlatform })`).
|
|
128
|
+
* When set, renders the Button as `<Link>` with `href` / `target` / `rel`
|
|
129
|
+
* / `onClick` spread from this object. Lets callers thread the unified
|
|
130
|
+
* nav decision directly without `<Button asChild><a {...linkProps}/>`
|
|
131
|
+
* gymnastics. Wins over the separate `href` / `openInNewTab` props.
|
|
132
|
+
*/
|
|
133
|
+
linkProps?: {
|
|
134
|
+
href: string
|
|
135
|
+
target?: '_blank'
|
|
136
|
+
rel?: 'noopener noreferrer'
|
|
137
|
+
onClick?: React.MouseEventHandler<HTMLAnchorElement>
|
|
138
|
+
} | null
|
|
126
139
|
leftIcon?: React.ReactNode
|
|
127
140
|
rightIcon?: React.ReactNode
|
|
128
141
|
/**
|
|
@@ -158,6 +171,7 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
|
158
171
|
href,
|
|
159
172
|
openInNewTab,
|
|
160
173
|
prefetch,
|
|
174
|
+
linkProps,
|
|
161
175
|
leftIcon,
|
|
162
176
|
rightIcon,
|
|
163
177
|
splitIcon,
|
|
@@ -205,17 +219,26 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
|
205
219
|
</>
|
|
206
220
|
)
|
|
207
221
|
|
|
208
|
-
|
|
222
|
+
// `linkProps` (the pre-resolved bundle from `useNavLink({ href, targetPlatform })`)
|
|
223
|
+
// wins over the legacy `href` + `openInNewTab` props so callers can thread
|
|
224
|
+
// the unified nav decision directly. Either path produces the same `<Link>`.
|
|
225
|
+
const splitAnchor = linkProps ?? (href ? {
|
|
226
|
+
href,
|
|
227
|
+
target: openInNewTab ? '_blank' as const : undefined,
|
|
228
|
+
rel: openInNewTab ? 'noopener noreferrer' as const : undefined,
|
|
229
|
+
onClick: onClick as unknown as React.MouseEventHandler<HTMLAnchorElement> | undefined,
|
|
230
|
+
} : null)
|
|
231
|
+
if (splitAnchor) {
|
|
209
232
|
return (
|
|
210
233
|
<Link
|
|
211
|
-
href={href}
|
|
234
|
+
href={splitAnchor.href}
|
|
212
235
|
prefetch={prefetch}
|
|
213
|
-
target={
|
|
214
|
-
rel={
|
|
236
|
+
target={splitAnchor.target}
|
|
237
|
+
rel={splitAnchor.rel}
|
|
215
238
|
aria-disabled={isDisabled || undefined}
|
|
216
239
|
tabIndex={isDisabled ? -1 : undefined}
|
|
217
240
|
className={cn(shellClasses, isDisabled && "pointer-events-none")}
|
|
218
|
-
onClick={onClick
|
|
241
|
+
onClick={splitAnchor.onClick}
|
|
219
242
|
>
|
|
220
243
|
{splitContent}
|
|
221
244
|
</Link>
|
|
@@ -263,17 +286,24 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
|
263
286
|
</>
|
|
264
287
|
)
|
|
265
288
|
|
|
266
|
-
|
|
289
|
+
// Same `linkProps`-wins-over-href resolution as the splitIcon branch.
|
|
290
|
+
const anchor = linkProps ?? (href ? {
|
|
291
|
+
href,
|
|
292
|
+
target: openInNewTab ? '_blank' as const : undefined,
|
|
293
|
+
rel: openInNewTab ? 'noopener noreferrer' as const : undefined,
|
|
294
|
+
onClick: onClick as unknown as React.MouseEventHandler<HTMLAnchorElement> | undefined,
|
|
295
|
+
} : null)
|
|
296
|
+
if (anchor) {
|
|
267
297
|
return (
|
|
268
298
|
<Link
|
|
269
|
-
href={href}
|
|
299
|
+
href={anchor.href}
|
|
270
300
|
prefetch={prefetch}
|
|
271
|
-
target={
|
|
272
|
-
rel={
|
|
301
|
+
target={anchor.target}
|
|
302
|
+
rel={anchor.rel}
|
|
273
303
|
aria-disabled={isDisabled || undefined}
|
|
274
304
|
tabIndex={isDisabled ? -1 : undefined}
|
|
275
305
|
className={cn(classes, isDisabled && "pointer-events-none")}
|
|
276
|
-
onClick={onClick
|
|
306
|
+
onClick={anchor.onClick}
|
|
277
307
|
>
|
|
278
308
|
{content}
|
|
279
309
|
</Link>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as React from 'react'
|
|
2
|
-
import Link from 'next
|
|
2
|
+
import Link from '../../embed-shims/next-link'
|
|
3
3
|
import { cn } from '../../utils/cn'
|
|
4
4
|
import { QuestionCircleIcon } from '../icons-v2-generated/signs-and-symbols/question-circle-icon'
|
|
5
5
|
import { CircularProgress, type CircularProgressOverflow, type CircularProgressVariant } from './circular-progress'
|
|
@@ -100,8 +100,7 @@ export function DashboardInfoCard({
|
|
|
100
100
|
className={cn(
|
|
101
101
|
baseClassName,
|
|
102
102
|
'cursor-pointer group',
|
|
103
|
-
'hover:border-ods-
|
|
104
|
-
'[&:hover_.text-ods-text-primary]:text-ods-accent',
|
|
103
|
+
'hover:border-ods-border-hover hover:bg-ods-card-hover',
|
|
105
104
|
className
|
|
106
105
|
)}
|
|
107
106
|
>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import Link from 'next
|
|
3
|
+
import Link from '../../../embed-shims/next-link'
|
|
4
4
|
import React, { memo, useCallback, useRef, type ReactNode } from 'react'
|
|
5
5
|
import { flexRender, type Row } from '@tanstack/react-table'
|
|
6
6
|
import { cn } from '../../../utils/cn'
|
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import { cn } from '../../utils/cn'
|
|
5
|
-
|
|
6
|
-
function getInitials(name?: string): string {
|
|
7
|
-
if (!name) return ''
|
|
8
|
-
const words = name.trim().split(/\s+/)
|
|
9
|
-
if (words.length === 1) return words[0].charAt(0).toUpperCase()
|
|
10
|
-
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase()
|
|
11
|
-
}
|
|
5
|
+
import { getFirstLastInitials } from '../../utils/format'
|
|
12
6
|
|
|
13
7
|
export interface EntityImageProps {
|
|
14
8
|
src?: string | null
|
|
@@ -26,7 +20,7 @@ export function EntityImage({ src, alt, fallbackText, className }: EntityImagePr
|
|
|
26
20
|
}, [src])
|
|
27
21
|
|
|
28
22
|
const showFallback = imageFailed || !src
|
|
29
|
-
const initials =
|
|
23
|
+
const initials = getFirstLastInitials(fallbackText ?? alt)
|
|
30
24
|
|
|
31
25
|
if (showFallback) {
|
|
32
26
|
return (
|