@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
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-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: b340dcdf795a4dde839c90b56d635b69 -->
|
|
2
|
+
Resolves `target` and `rel` anchor attributes for entity cards by delegating the same-tab vs. new-tab decision to the `ChatRuntime` navigation callback, eliminating the need for hub-side wrapper components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useEntityCardLink(args): EntityCardLinkProps`
|
|
7
|
+
|
|
8
|
+
Primary hook that computes anchor link attributes using a two-priority resolution strategy:
|
|
9
|
+
|
|
10
|
+
1. **Explicit override** — If `target` or `rel` props are passed directly, they win immediately. A missing `rel` is auto-paired with `'noopener noreferrer'` when `target='_blank'` to prevent tabnabbing.
|
|
11
|
+
2. **Runtime decision** — Falls back to `computeIsNewTab(runtime, href, targetPlatform)`, which mirrors the click handler in `executeNavigation`, keeping the rendered anchor and the click behavior in sync. Returns `{ target: undefined, rel: undefined }` (same-tab) when no runtime is mounted.
|
|
12
|
+
|
|
13
|
+
### Interfaces
|
|
14
|
+
|
|
15
|
+
| Interface | Purpose |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `UseEntityCardLinkArgs` | Input: `href`, optional `targetPlatform`, optional explicit `target`/`rel` overrides |
|
|
18
|
+
| `EntityCardLinkProps` | Output: resolved `target` and `rel` values for spreading onto an anchor element |
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { useEntityCardLink } from './use-entity-card-link'
|
|
24
|
+
|
|
25
|
+
function BlogCard({ href, targetPlatform }: Props) {
|
|
26
|
+
const { target, rel } = useEntityCardLink({ href, targetPlatform })
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<a href={href} target={target} rel={rel}>
|
|
30
|
+
Read Post
|
|
31
|
+
</a>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Explicit override — runtime decision skipped entirely
|
|
36
|
+
function ExternalCard({ href }: Props) {
|
|
37
|
+
const { target, rel } = useEntityCardLink({
|
|
38
|
+
href,
|
|
39
|
+
target: '_blank',
|
|
40
|
+
// rel auto-paired to 'noopener noreferrer'
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return <a href={href} target={target} rel={rel}>Open</a>
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- Requires `HubRuntimeProvider` (or a compatible embed shim) to be mounted for runtime-derived decisions.
|
|
50
|
+
- Result is memoized on `[target, rel, href, targetPlatform, runtime]` — safe to call in render.
|
|
51
|
+
- Source: [`use-entity-card-link.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-entity-card-link.ts)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: 7663c5ccc0601f548ad7c5ca061e0918 -->
|
|
2
|
+
Thin wrapper around `useOgPlaceholderUrl` that resolves the correct OG placeholder URL for entity cards, allowing an explicit `placeholderUrl` prop to override the runtime-derived value.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `UseEntityCardPlaceholderArgs`
|
|
7
|
+
Interface defining hook inputs:
|
|
8
|
+
- `title` — entity title used as the placeholder label
|
|
9
|
+
- `placeholderUrl` — explicit override; when provided (including `null`), skips runtime derivation
|
|
10
|
+
- `siteName` — optional site name displayed under the title
|
|
11
|
+
- `aspect` — output aspect ratio: `'wide'` (default, catalog cards) or `'square'` (compact chat-inline cards)
|
|
12
|
+
|
|
13
|
+
### `useEntityCardPlaceholder`
|
|
14
|
+
Hook that delegates URL construction to `useOgPlaceholderUrl` but applies a priority rule: an explicitly passed `placeholderUrl` (even `null`) always wins over the derived value. Only `undefined` falls through to the runtime default.
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// Catalog card — derive URL from title at runtime
|
|
20
|
+
const placeholderSrc = useEntityCardPlaceholder({
|
|
21
|
+
title: 'Microsoft 365 Business Premium',
|
|
22
|
+
siteName: 'Flamingo',
|
|
23
|
+
aspect: 'wide',
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
// Chat-inline card — caller pre-resolves and passes explicit URL
|
|
27
|
+
const placeholderSrc = useEntityCardPlaceholder({
|
|
28
|
+
title: 'Entity Name',
|
|
29
|
+
placeholderUrl: 'https://cdn.example.com/placeholder.png',
|
|
30
|
+
aspect: 'square',
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
// Suppress placeholder entirely (e.g. real OG image already loaded)
|
|
34
|
+
const placeholderSrc = useEntityCardPlaceholder({
|
|
35
|
+
title: 'Entity Name',
|
|
36
|
+
placeholderUrl: null, // returns null; runtime default skipped
|
|
37
|
+
})
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Priority Logic
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
placeholderUrl !== undefined → return placeholderUrl (string or null)
|
|
44
|
+
placeholderUrl === undefined → return derived URL from useOgPlaceholderUrl
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Source:** [`use-entity-card-placeholder.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-entity-card-placeholder.ts)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: 87d21aee30c9242f0b77a2542d0ce5fa -->
|
|
2
|
+
Shared UI card component for rendering "What I Shipped" entries consistently across both the people-hub owner dashboard and the related-content rail, ensuring zero visual drift between surfaces.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`WhatIShippedCardData`** — Minimal data contract the card renders; satisfied by both hub dashboard entries and hydrated related-content rows.
|
|
9
|
+
- **`WhatIShippedCardProps`** — Card props including `entry`, optional OG `placeholderUrl`, owner `actions`, `anchorProps` for click-through links, and `className`.
|
|
10
|
+
|
|
11
|
+
### Exports
|
|
12
|
+
|
|
13
|
+
- **`WhatIShippedCard`** — Primary card component. Wraps `AdminContentCard` with canonical field mapping: cover image (`featured_image` → `main_video_thumbnail` fallback → OG placeholder), 140-char truncated summary, status badge, author avatar/name, and formatted reporting month. Supports two modes:
|
|
14
|
+
- **Dashboard mode** — pass `actions` for owner action row.
|
|
15
|
+
- **Related-rail mode** — pass `anchorProps` to make the entire card a clickable link. Do not combine with `actions` to avoid nested interactive elements.
|
|
16
|
+
- **`WhatIShippedCardSkeleton`** — Pulse-animated loading skeleton matching the card's `AdminContentCard` shape (3:2 cover + title/summary/meta lines). Used by the related-content rail during hydration to prevent layout shift.
|
|
17
|
+
|
|
18
|
+
### Constants
|
|
19
|
+
|
|
20
|
+
- **`STATUS_BADGE_CLASS`** — Maps `published`, `draft`, and `archived` status strings to their respective ODS color tokens.
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
// Dashboard (owner actions)
|
|
26
|
+
<WhatIShippedCard
|
|
27
|
+
entry={entry}
|
|
28
|
+
placeholderUrl={ogPlaceholderUrl}
|
|
29
|
+
actions={<button onClick={handleEdit}>Edit</button>}
|
|
30
|
+
/>
|
|
31
|
+
|
|
32
|
+
// Related-content rail (click-through link)
|
|
33
|
+
<WhatIShippedCard
|
|
34
|
+
entry={entry}
|
|
35
|
+
placeholderUrl={buildOgPlaceholderUrl(entry)}
|
|
36
|
+
anchorProps={{ href: `/shipped/${entry.id}` }}
|
|
37
|
+
/>
|
|
38
|
+
|
|
39
|
+
// Loading state
|
|
40
|
+
<WhatIShippedCardSkeleton className="col-span-1" />
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Source:** [`what-i-shipped-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/what-i-shipped-card.tsx)
|
|
@@ -1,46 +1,49 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Barrel export file
|
|
1
|
+
<!-- source-hash: 31ada6e53cd71ce93d35361e48559a56 -->
|
|
2
|
+
Barrel export file (`'use client'`) that re-exports all React hooks from the chat hooks module, providing a single import surface for consumers.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
### Streaming & Real-time Hooks
|
|
7
|
+
- **`useChunkCatchup`** — Replays missed chunks after reconnection
|
|
8
|
+
- **`useScriptedStream`** — Drives scripted/mock streaming sequences
|
|
9
|
+
- **`useRealtimeChunkProcessor`** — Processes incoming real-time message chunks
|
|
10
|
+
- **`useJetstreamDialogSubscription`** / **`useNatsDialogSubscription`** — NATS/JetStream transport subscriptions
|
|
11
|
+
- **`useCollapsible`** — Collapsible UI state management
|
|
12
|
+
|
|
13
|
+
### Chat Core Hooks
|
|
14
|
+
- **`useChat`** / **`useSSE`** — Core chat and Server-Sent Events hooks (ported from hub, without `MockChatService`/`useChatConfig`)
|
|
15
|
+
- **`useSlashCommands`** — Slash command parsing and dispatch
|
|
16
|
+
- **`useEmptyStateConfig`** — Empty state configuration
|
|
17
|
+
- **`useChatAttachments`** / **`useChatAttachmentImageGallery`** — File attachment handling and image gallery
|
|
18
|
+
- **`useChatIdentity`** — Chat user/agent identity resolution
|
|
19
|
+
- **`useChatCardItem`** — Chat card rendering state
|
|
20
|
+
- **`useCloseOnNavigation`** — Dismisses dialogs/panels on route change
|
|
21
|
+
|
|
22
|
+
### Unified Chat Surface
|
|
23
|
+
- **`useUnifiedChat`** — Primary public hook; selects transport by `activeMode`
|
|
24
|
+
- **`useSSEChatAdapter`** / **`useNatsChatAdapter`** — Transport adapters (SSE and NATS)
|
|
25
|
+
- **`useEmbeddedChat`** — Legacy SSE alias for embedded surfaces
|
|
26
|
+
|
|
27
|
+
### Utilities
|
|
28
|
+
- **`useProxiedImageUrl`** — Resolves proxied image URLs from `ChatRuntime.endpoints`
|
|
14
29
|
|
|
15
30
|
## Usage Example
|
|
16
31
|
|
|
17
32
|
```typescript
|
|
18
|
-
//
|
|
33
|
+
// Preferred: import everything from the barrel
|
|
19
34
|
import {
|
|
20
35
|
useUnifiedChat,
|
|
21
36
|
useChatAttachments,
|
|
22
|
-
|
|
23
|
-
} from '@
|
|
37
|
+
useProxiedImageUrl,
|
|
38
|
+
} from '@openframe/chat-hooks'
|
|
24
39
|
|
|
25
40
|
function ChatPanel({ modes, activeMode }) {
|
|
26
|
-
const
|
|
27
|
-
const attachments = useChatAttachments()
|
|
28
|
-
const
|
|
41
|
+
const { messages, send } = useUnifiedChat({ modes, activeMode })
|
|
42
|
+
const { attachments, addAttachment } = useChatAttachments()
|
|
43
|
+
const proxied = useProxiedImageUrl(rawImageUrl)
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Advanced: direct transport access
|
|
34
|
-
import { useNatsChatAdapter } from '@flamingo/chat-hooks'
|
|
35
|
-
|
|
36
|
-
function CustomTransportPanel() {
|
|
37
|
-
const nats = useNatsChatAdapter({ /* config */ })
|
|
38
|
-
// ...
|
|
45
|
+
return <ChatUI messages={messages} onSend={send} />
|
|
39
46
|
}
|
|
40
47
|
```
|
|
41
48
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- Marked `'use client'` — safe for React Server Component trees; hooks run only on the client.
|
|
45
|
-
- `useUnifiedChat` is the recommended entry point for new consumers; `useEmbeddedChat` is the legacy SSE alias kept for backward compatibility.
|
|
46
|
-
- `useProxiedImageUrl` reads proxy config from `ChatRuntime.endpoints`, keeping image-proxy resolution consistent between hub and embedder environments.
|
|
49
|
+
> **Note:** For standard usage, prefer `useUnifiedChat`. The adapter hooks (`useSSEChatAdapter`, `useNatsChatAdapter`) are exposed for advanced cases requiring direct transport access.
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Fetches a
|
|
1
|
+
<!-- source-hash: 00398183d82e9f61b3c8434476f51469 -->
|
|
2
|
+
Fetches and caches a single content item for inline chat card rendering by hitting the same list-API endpoints used by public pages (`/blog`, `/case-studies`, `/podcasts`, etc.), ensuring a consistent data shape with full relational joins.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `
|
|
7
|
-
|
|
6
|
+
### `UseChatCardItemResult<T>`
|
|
7
|
+
Return type interface exposing:
|
|
8
|
+
- `item: T | undefined` — the resolved content item
|
|
9
|
+
- `isLoading: boolean` — TanStack Query loading state
|
|
10
|
+
- `isError: boolean` — TanStack Query error state
|
|
8
11
|
|
|
9
|
-
### `
|
|
10
|
-
|
|
12
|
+
### `useChatCardItem<T>(type, id)`
|
|
13
|
+
Primary hook. Resolves the list URL via `runtime.endpoints.buildListUrl`, fetches through `embedAuthedFetch` (preserving auth credentials), extracts the matching item, and returns the typed result.
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
**Key behaviors:**
|
|
16
|
+
- **Deduplication** — queries are keyed by `['chat-card-item', type, id]`; multiple references to the same content in one chat message produce a single network request
|
|
17
|
+
- **Auth-aware fetching** — uses `embedAuthedFetch` (not bare `fetch`) to traverse the `EmbedAuthAdapter` (cookie/Bearer/401-retry), preventing blank cards behind a gateway
|
|
18
|
+
- **Streaming-safe caching** — `staleTime: 5min` / `gcTime: 30min` prevents skeleton flashes on every chunk as markdown re-parses during streaming assistant messages
|
|
19
|
+
- **No focus refetching** — `refetchOnWindowFocus: false` avoids wasteful re-fetches when users toggle the chat panel
|
|
17
20
|
|
|
18
21
|
## Usage Example
|
|
19
22
|
|
|
@@ -23,17 +26,27 @@ import { useChatCardItem } from './use-chat-card-item'
|
|
|
23
26
|
interface BlogPost {
|
|
24
27
|
id: string
|
|
25
28
|
title: string
|
|
26
|
-
|
|
29
|
+
slug: string
|
|
30
|
+
author: { name: string }
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
function ChatBlogCard({ id }: { id: string }) {
|
|
30
|
-
const { item, isLoading, isError } = useChatCardItem<BlogPost>('
|
|
34
|
+
const { item, isLoading, isError } = useChatCardItem<BlogPost>('blog', id)
|
|
31
35
|
|
|
32
|
-
if (isLoading) return <
|
|
33
|
-
if (isError || !item) return
|
|
36
|
+
if (isLoading) return <CardSkeleton />
|
|
37
|
+
if (isError || !item) return null
|
|
34
38
|
|
|
35
|
-
return <
|
|
39
|
+
return <BlogCard post={item} />
|
|
36
40
|
}
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
## Dependencies
|
|
44
|
+
|
|
45
|
+
| Dependency | Role |
|
|
46
|
+
|---|---|
|
|
47
|
+
| `@tanstack/react-query` | Query lifecycle, deduplication, caching |
|
|
48
|
+
| `useRequiredChatRuntime` | Provides `buildListUrl` per content type |
|
|
49
|
+
| `embedAuthedFetch` | Auth-aware fetch (cookie / Bearer / retry) |
|
|
50
|
+
| `extractItems` / `extractItemId` | Normalizes list-API response envelope |
|
|
51
|
+
|
|
52
|
+
**Source:** [`src/.../use-chat-card-item.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/hooks/use-chat-card-item.ts)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<!-- source-hash: 18f2ec0cf9ed75af0e8e8ae198973c29 -->
|
|
2
|
+
Manages the dialog-history concerns for the chat panel, including archive navigation, read-only archived conversation mode, and rename/archive/restore confirmation modals — keeping `EmbeddableChat` as a thin orchestration layer.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `UseChatDialogManagerArgs`
|
|
7
|
+
Input interface wiring adapter callbacks into the manager:
|
|
8
|
+
|
|
9
|
+
| Field | Type | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `dialogs` | `ReadonlyArray<DialogItem>` | Active (non-archived) dialogs |
|
|
12
|
+
| `activeDialogId` | `string \| null \| undefined` | Currently open dialog |
|
|
13
|
+
| `selectDialog` | `(id: string \| null) => void` | Opens a dialog by id |
|
|
14
|
+
| `clearMessages` | `() => void` | Resets active conversation |
|
|
15
|
+
| `renameDialog` | `(id, title) => Promise<void>` | Renames a dialog |
|
|
16
|
+
| `archiveDialog` | `(id) => Promise<void>` | Archives a dialog |
|
|
17
|
+
| `fetchArchivedDialogs` | `(params) => Promise<FetchDialogsResult>` | Optional; gates archive UI |
|
|
18
|
+
| `unarchiveDialog` | `(id) => Promise<void>` | Optional; gates restore UI |
|
|
19
|
+
|
|
20
|
+
### `useChatDialogManager`
|
|
21
|
+
The primary hook. Returns a flat object of state and handlers consumed directly by the chat panel JSX.
|
|
22
|
+
|
|
23
|
+
**Key return groups:**
|
|
24
|
+
|
|
25
|
+
- **Archive page** — `archiveOpen`, `archivedDialogs`, `archivedCursor`, `archivedLoading`, `archivedPending`, `openArchive`, `closeArchive`, `loadArchivedPage`, `handleArchivedSelect`
|
|
26
|
+
- **Current-chat navigation** — `handleSelectDialog`, `isOpeningDialog`, `handleBack`, `resetToNewChat`, `activeDialog`
|
|
27
|
+
- **Archived conversation mode** — `isViewingArchived`
|
|
28
|
+
- **Action modals** — `renameTarget`, `archiveTarget`, `restoreTarget` (+ setters), `handleConfirmRename`, `handleConfirmArchive`, `handleConfirmRestore`
|
|
29
|
+
|
|
30
|
+
## Usage Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const dialogManager = useChatDialogManager({
|
|
34
|
+
dialogs,
|
|
35
|
+
activeDialogId,
|
|
36
|
+
selectDialog,
|
|
37
|
+
clearMessages,
|
|
38
|
+
renameDialog,
|
|
39
|
+
archiveDialog,
|
|
40
|
+
fetchArchivedDialogs,
|
|
41
|
+
unarchiveDialog,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// Open archive page
|
|
45
|
+
dialogManager.openArchive()
|
|
46
|
+
|
|
47
|
+
// Load next page of archived dialogs
|
|
48
|
+
await dialogManager.loadArchivedPage(dialogManager.archivedCursor ?? undefined)
|
|
49
|
+
|
|
50
|
+
// Trigger archive confirmation modal
|
|
51
|
+
dialogManager.setArchiveTarget(someDialog)
|
|
52
|
+
await dialogManager.handleConfirmArchive()
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> **Note:** `loadArchivedPage` uses a monotonic request ID (`archivedRequestIdRef`) to prevent stale responses from clobbering newer results during overlapping background refresh and pagination fetches. A 120 ms skeleton delay avoids flashing the empty state on cached/fast first-page loads.
|
|
56
|
+
|
|
57
|
+
## Source
|
|
58
|
+
|
|
59
|
+
[`use-chat-dialog-manager.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-chat-dialog-manager.ts)
|
|
@@ -1,45 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 733d42822ee9220c6eefe2050f96cda5 -->
|
|
2
|
+
Provides the `ChatIdentitySurface` capability bag (`authTier`, `source`, `attachmentsEnabled`, `user`) for the current chat session, enabling client UI elements to gate on identity tiers without requiring a chat message first.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **`useChatIdentity()`** — Reads the identity endpoint URL from `useRequiredChatRuntime()`, fires an authenticated fetch via `chatAuthedFetch`, and returns identity data merged with `isLoading`. Falls back to `ANON_DEFAULTS` on errors or non-OK responses — never throws.
|
|
14
|
-
|
|
15
|
-
### Constants
|
|
16
|
-
|
|
17
|
-
- **`ANON_DEFAULTS`** — Safe fallback (`authTier: 'anon'`, `attachmentsEnabled: false`, `user: null`) used during loading and on any fetch failure.
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ChatIdentityResponse` | Interface | Wire-shape mirroring the hub's `/api/auth/identity` response |
|
|
9
|
+
| `ChatIdentitySurface` | Interface | Extends `ChatIdentityResponse` with `isLoading`; never throws |
|
|
10
|
+
| `ChatIdentityProvider` | Component | Optional context provider that resolves identity once for an entire React subtree |
|
|
11
|
+
| `useChatIdentity` | Hook | Returns the `ChatIdentitySurface` bag; reads from a parent provider when present, otherwise self-fetches |
|
|
18
12
|
|
|
19
13
|
## Usage Example
|
|
20
14
|
|
|
15
|
+
**Standalone (self-fetching):**
|
|
16
|
+
|
|
21
17
|
```typescript
|
|
22
18
|
import { useChatIdentity } from './use-chat-identity'
|
|
23
19
|
|
|
24
20
|
function AttachmentButton() {
|
|
25
21
|
const { isLoading, attachmentsEnabled, user } = useChatIdentity()
|
|
26
22
|
|
|
27
|
-
if (isLoading) return <
|
|
23
|
+
if (isLoading) return <Skeleton />
|
|
28
24
|
if (!attachmentsEnabled) return null
|
|
25
|
+
return <button>Attach file</button>
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Shared provider for independent React subtrees:**
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { ChatIdentityProvider, useChatIdentity } from './use-chat-identity'
|
|
29
33
|
|
|
34
|
+
// Mount once inside ChatRuntimeContext.Provider, near your embed root.
|
|
35
|
+
// Pass enabled={false} to defer fetching until the chat drawer opens.
|
|
36
|
+
function AppShell({ children }: { children: ReactNode }) {
|
|
30
37
|
return (
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
</
|
|
38
|
+
<ChatIdentityProvider enabled={drawerOpen}>
|
|
39
|
+
{children}
|
|
40
|
+
</ChatIdentityProvider>
|
|
34
41
|
)
|
|
35
42
|
}
|
|
43
|
+
|
|
44
|
+
// Any descendant — even in a separate router outlet — shares the
|
|
45
|
+
// single resolution instead of issuing its own request.
|
|
46
|
+
function TicketCenterAuthed() {
|
|
47
|
+
const { user } = useChatIdentity()
|
|
48
|
+
return <span>{user?.firstName ?? ''}</span>
|
|
49
|
+
}
|
|
36
50
|
```
|
|
37
51
|
|
|
38
|
-
##
|
|
52
|
+
## Behavior Notes
|
|
39
53
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
| Credential changes | Re-fetches automatically when `proxyEmail` (from `localStorage`) changes |
|
|
45
|
-
| `attachmentsEnabled` | Computed server-side; consumers read it directly without combining fields |
|
|
54
|
+
- **No client-side cache.** Uses plain `useState`/`useEffect`; refetches on credential rotation (`proxyEmail` change) and never persists stale identity.
|
|
55
|
+
- **Always safe to render.** Failures and non-OK responses fall back to `ANON_DEFAULTS` (`authTier: 'anon'`, `attachmentsEnabled: false`, `user: null`).
|
|
56
|
+
- **`attachmentsEnabled` is server-computed.** Consumers must not derive it from `authTier` + `source` themselves.
|
|
57
|
+
- Endpoint URL is read from `useRequiredChatRuntime().endpoints.identityUrl`, allowing reverse-proxy overrides per embed.
|
|
@@ -1,53 +1,70 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Manages
|
|
1
|
+
<!-- source-hash: 97d203340db2c0a0d6f8b3dc8d30c054 -->
|
|
2
|
+
Manages chunk buffering, deduplication, and ordered replay of NATS message chunks during dialog catchup, ensuring historical and live-streamed chunks are merged without gaps or duplicates.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
### Internal Helpers
|
|
7
|
+
|
|
8
|
+
- **`makeSeqKey(messageType, chunkType, sequenceId)`** — Generates a composite key for sequence-level deduplication across message types.
|
|
9
|
+
- **`makeBatchDedupKey(item)`** — Generates a broader deduplication key for batch processing, incorporating text, tool, and approval fields.
|
|
10
|
+
- **`getChatTypeMessageType(chatType)`** — Maps a `ChatType` to its corresponding `NatsMessageType` (`admin-message` or `message`).
|
|
11
|
+
|
|
12
|
+
### Hook: `useChunkCatchup`
|
|
13
|
+
|
|
14
|
+
**Parameters** (`UseChunkCatchupOptions`):
|
|
15
|
+
|
|
16
|
+
| Parameter | Description |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `dialogId` | Active dialog identifier |
|
|
19
|
+
| `onChunkReceived` | Callback fired for each processed chunk |
|
|
20
|
+
| `chatTypes` | Array of chat types to fetch (default: `[CHAT_TYPE.CLIENT]`) |
|
|
21
|
+
| `fetchChunks` | Async function to retrieve historical chunks from the API |
|
|
22
|
+
|
|
23
|
+
**Internal Refs:**
|
|
24
|
+
|
|
25
|
+
| Ref | Purpose |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `processedSequenceKeys` | Tracks already-processed sequence keys to prevent duplicates |
|
|
28
|
+
| `lastSequenceIdByType` | Per-`NatsMessageType` resume checkpoint (prevents cross-stream offset contamination) |
|
|
29
|
+
| `fetchingInProgress` | Guards against concurrent fetches |
|
|
30
|
+
| `pendingCatchupRef` | Queues a second catchup requested during an in-flight fetch |
|
|
31
|
+
| `chunkBuffer` | Buffers live NATS chunks arriving during catchup |
|
|
32
|
+
|
|
33
|
+
**Returned Callbacks** (`UseChunkCatchupReturn`):
|
|
34
|
+
|
|
35
|
+
- **`processChunk(chunk, messageType, forceProcess?)`** — Routes an incoming chunk to the buffer or directly to `onChunkReceived`, recording its sequence key.
|
|
36
|
+
- **`flushBufferedRealtimeChunks()`** — Drains the buffer after catchup, sorting chunks so id-less live chunks appear after sequenced history.
|
|
37
|
+
- **`catchUpChunks(fromSequenceId?)`** — Orchestrates the full catchup flow: fetches historical chunks per chat type using per-type checkpoints, merges with buffered live chunks, sorts, deduplicates, and processes in order up to the last complete message boundary.
|
|
24
38
|
|
|
25
39
|
## Usage Example
|
|
26
40
|
|
|
27
41
|
```typescript
|
|
28
|
-
const {
|
|
29
|
-
|
|
30
|
-
processChunk,
|
|
31
|
-
startInitialBuffering,
|
|
32
|
-
resetAndCatchUp,
|
|
33
|
-
} = useChunkCatchup({
|
|
34
|
-
dialogId: 'dialog-123',
|
|
42
|
+
const { processChunk, catchUpChunks } = useChunkCatchup({
|
|
43
|
+
dialogId: 'dialog-abc123',
|
|
35
44
|
chatTypes: [CHAT_TYPE.CLIENT, CHAT_TYPE.ADMIN],
|
|
36
45
|
fetchChunks: async (dialogId, chatType, fromSequenceId) => {
|
|
37
|
-
|
|
46
|
+
const res = await api.getChunks({ dialogId, chatType, fromSequenceId })
|
|
47
|
+
return res.chunks
|
|
38
48
|
},
|
|
39
49
|
onChunkReceived: (chunk, messageType) => {
|
|
40
|
-
|
|
50
|
+
appendChunkToTranscript(chunk, messageType)
|
|
41
51
|
},
|
|
42
52
|
})
|
|
43
53
|
|
|
44
|
-
//
|
|
45
|
-
|
|
54
|
+
// Called when a live NATS message arrives
|
|
55
|
+
natsSubscription.on('message', (chunk, messageType) => {
|
|
56
|
+
processChunk(chunk, messageType)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
// Called on dialog load or reconnect
|
|
46
60
|
await catchUpChunks()
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Notes
|
|
47
64
|
|
|
48
|
-
|
|
49
|
-
|
|
65
|
+
- Per-type sequence tracking (`lastSequenceIdByType`) prevents a faster stream's high sequence ID from skipping chunks in a slower, independently-numbered stream (legacy Redis transport behaviour).
|
|
66
|
+
- Pending catchup requests are queued rather than dropped to avoid permanent transcript gaps on double-reconnect.
|
|
67
|
+
- Chunks without a `sequenceId` are treated as the newest live events and sorted after all sequenced history.
|
|
68
|
+
- Deduplication only applies to chunks carrying a `sequenceId`; id-less streaming deltas are always preserved to avoid silent content loss.
|
|
50
69
|
|
|
51
|
-
|
|
52
|
-
await resetAndCatchUp()
|
|
53
|
-
```
|
|
70
|
+
**Source:** [`use-chunk-catchup.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-chunk-catchup.ts)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- source-hash: 36dc058eabd4b8150553ed538a51cbd3 -->
|
|
2
|
+
Provides the client-side hook and fetch helper for loading per-platform chat empty-state configuration (greeting, quick-action chips, RAG table IDs) in both host (SSR props) and cross-origin embed (REST fetch) scenarios.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
| Interface | Purpose |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `EmptyStateQuickAction` | A single quick-action chip — `id`, `label`, `prompt`, plus optional icon (glyph name, URL, or props) |
|
|
11
|
+
| `EmptyStateIcon` | Agent identity icon resolved by `<EntityIcon>` on the empty state |
|
|
12
|
+
| `EmptyStateConfig` | Wire shape of `GET /api/docs/empty-state`; fields: `name`, `icon`, `greeting`, `enabledRagTableIds`, `quickActions`, `suggestedQueries` |
|
|
13
|
+
|
|
14
|
+
### Functions
|
|
15
|
+
|
|
16
|
+
- **`fetchEmptyStateConfig(signal, emptyStateUrl)`** — Bare GET via `embedAuthedFetch`. Returns `EMPTY_STATE_FALLBACK` on any non-2xx; logs 5xx errors without surfacing toasts; re-throws `AbortError` for react-query cancellation.
|
|
17
|
+
- **`useEmptyStateConfig(emptyStateUrl, options?)`** — React hook wrapping the fetch in a react-query query. Keyed on `emptyStateUrl`; `staleTime`/`gcTime: Infinity` makes the result static per session. `enabled: false` skips the network call entirely and returns the fallback immediately.
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Embed mode — fetch config from the host's empty-state endpoint
|
|
23
|
+
const { config, loading, loaded } = useEmptyStateConfig(
|
|
24
|
+
runtime.endpoints.emptyStateUrl,
|
|
25
|
+
{ enabled: true },
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
if (loaded) {
|
|
29
|
+
console.log(config.greeting); // Admin-edited greeting or null
|
|
30
|
+
console.log(config.quickActions); // EmptyStateQuickAction[]
|
|
31
|
+
console.log(config.enabledRagTableIds); // string[]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Host mode — URL is undefined; skip the fetch, use SSR props instead
|
|
35
|
+
const { config } = useEmptyStateConfig(undefined, { enabled: false });
|
|
36
|
+
// config === EMPTY_STATE_FALLBACK, loaded === true immediately
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
> **Note:** Pass `enabled: false` in host (SSR) mode where `emptyStateUrl` is unset. The hook will never fire a network request and `loaded` will be `true` immediately, so downstream components can unconditionally read `config` without a loading guard.
|