@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
|
@@ -1,37 +1,20 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: a4a5bd19ceba365107b95a454fcee29b -->
|
|
2
|
+
Converts raw `HistoricalMessage` records from GraphQL/API responses into display-ready `ProcessedMessage` arrays, grouping consecutive assistant turns, resolving approval states, and extracting escalated approvals.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
Main export. Iterates over historical messages, groups consecutive assistant turns into single display messages, and returns a `ProcessHistoricalMessagesResult` containing:
|
|
8
|
-
- `messages` — fully rendered `ProcessedMessage[]` ready for UI consumption
|
|
9
|
-
- `escalatedApprovals` — approvals filtered out by `displayApprovalTypes` that the consumer handles separately (e.g., admin-side approvals in a client-facing view)
|
|
6
|
+
### Exports
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
- **`processHistoricalMessages(messages, options)`** — Main entry point. Iterates over historical messages, groups assistant turns using an accumulator, flushes user/system messages inline, and returns a `ProcessHistoricalMessagesResult`.
|
|
9
|
+
- **`ProcessHistoricalMessagesResult`** — Return type containing `messages: ProcessedMessage[]` and `escalatedApprovals: Map<string, ...>`.
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|---|---|
|
|
16
|
-
| `TEXT` | `appendText` |
|
|
17
|
-
| `THINKING` | `appendThinking` |
|
|
18
|
-
| `EXECUTING_TOOL` / `EXECUTED_TOOL` | `addToolExecution` |
|
|
19
|
-
| `APPROVAL_REQUEST` | Batch or legacy approval card, or escalate |
|
|
20
|
-
| `APPROVAL_RESULT` | Resolves pending/escalated approvals |
|
|
11
|
+
### Internal Functions
|
|
21
12
|
|
|
22
|
-
|
|
23
|
-
Drains the
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export interface ProcessHistoricalMessagesResult {
|
|
28
|
-
messages: ProcessedMessage[]
|
|
29
|
-
escalatedApprovals: Map<
|
|
30
|
-
string,
|
|
31
|
-
{ command: string; explanation?: string; approvalType: string; toolCalls?: PendingToolCallData[] }
|
|
32
|
-
>
|
|
33
|
-
}
|
|
34
|
-
```
|
|
13
|
+
- **`processMessageData(data, accumulator, approvalStatuses, options, escalatedApprovals)`** — Dispatches a single `MessageData` item to the appropriate accumulator method based on `MESSAGE_TYPE` (`TEXT`, `THINKING`, `EXECUTING_TOOL`, `EXECUTED_TOOL`, `APPROVAL_REQUEST`).
|
|
14
|
+
- **`flushAssistantMessage()`** — Drains the `MessageSegmentAccumulator` into a single assistant `ProcessedMessage`, using the last message ID in the group for stable React keys. Resets all grouping state unconditionally.
|
|
15
|
+
- **`getOwnerDisplayName(owner)`** — Resolves a human-readable sender name from a `MessageOwner` (admin full name, or `'You'` for clients).
|
|
16
|
+
- **`getOwnerAvatar(owner)`** — Extracts the admin's profile image URL from the owner, if present.
|
|
17
|
+
- **`pushStandaloneMessages(processedMessages, msg, messageDataArray)`** — Emits `SYSTEM`-type messages directly as `role: 'user'` entries with `authorType: 'system'`.
|
|
35
18
|
|
|
36
19
|
## Usage Example
|
|
37
20
|
|
|
@@ -39,19 +22,32 @@ export interface ProcessHistoricalMessagesResult {
|
|
|
39
22
|
import { processHistoricalMessages } from './process-historical-messages'
|
|
40
23
|
|
|
41
24
|
const { messages, escalatedApprovals } = processHistoricalMessages(
|
|
42
|
-
|
|
25
|
+
rawHistoricalMessages,
|
|
43
26
|
{
|
|
44
27
|
assistantName: 'Fae',
|
|
45
28
|
assistantType: 'fae',
|
|
29
|
+
assistantAvatar: '/avatars/fae.png',
|
|
46
30
|
approvalStatuses: { 'req-123': 'approved' },
|
|
47
31
|
displayApprovalTypes: ['CLIENT'],
|
|
48
32
|
batchApprovalsEnabled: true,
|
|
49
|
-
onApprove: (id) =>
|
|
50
|
-
onReject: (id) =>
|
|
33
|
+
onApprove: (id) => console.log('Approved', id),
|
|
34
|
+
onReject: (id) => console.log('Rejected', id),
|
|
51
35
|
}
|
|
52
36
|
)
|
|
53
37
|
|
|
54
|
-
//
|
|
38
|
+
// Render messages
|
|
39
|
+
messages.forEach((msg) => console.log(msg.role, msg.content))
|
|
40
|
+
|
|
41
|
+
// Handle approvals that require elevated review
|
|
42
|
+
escalatedApprovals.forEach((approval, id) => {
|
|
43
|
+
console.log(`Escalated: ${id}`, approval.command)
|
|
44
|
+
})
|
|
55
45
|
```
|
|
56
46
|
|
|
57
|
-
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- `displayApprovalTypes` intentionally has **no default** on the history path — omitting it displays all approval types, preserving pre-existing history semantics and avoiding silent data loss on reload.
|
|
50
|
+
- `batchApprovalsEnabled` defaults to `true` so consumers without the flag still receive the batch approval UI.
|
|
51
|
+
- `streamSeq` is propagated via `Math.max` across rows in an assistant group, ensuring accurate history-merge coverage downstream.
|
|
52
|
+
|
|
53
|
+
**Source:** [`process-historical-messages.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/process-historical-messages.ts)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!-- source-hash: cc8f96e18729e1c4644f8e6b851866bd -->
|
|
2
|
+
Converts a stored `HistoricalMessage[]` into ordered `StreamFrame` playback frames that animate a chat surface identically to the live NATS/SSE stream — without requiring a network connection.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Types
|
|
7
|
+
|
|
8
|
+
- **`StreamFrame`** — A single rendered playback step containing the partial message list, `StreamingPhase`, `typing` indicator state, and `delayMs` hold time before advancing.
|
|
9
|
+
|
|
10
|
+
### Functions
|
|
11
|
+
|
|
12
|
+
| Function | Description |
|
|
13
|
+
|---|---|
|
|
14
|
+
| `normalizeHistoricalMessageData` | Normalizes `messageData` (single item or array) to `MessageData[]`. |
|
|
15
|
+
| `isHistoricalUserTurn` | Returns `true` when a message has an `owner` (user-authored); assistant turns have none. |
|
|
16
|
+
| `buildStreamFrames` | Core export — expands a full message list into a deterministic sequence of `StreamFrame`s. |
|
|
17
|
+
|
|
18
|
+
### Playback Cadence Constants
|
|
19
|
+
|
|
20
|
+
| Constant | Value | Role |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `THINK_MS` | 550 ms | Pause before assistant reply begins streaming |
|
|
23
|
+
| `TOKEN_MS` | 55 ms | Delay per word revealed during text streaming |
|
|
24
|
+
| `USER_MS` | 480 ms | Dwell after a user turn lands |
|
|
25
|
+
| `SEGMENT_MS` | 340 ms | Pop-in delay for tool/approval card segments |
|
|
26
|
+
| `POST_MS` | 240 ms | Dwell after a completed assistant turn |
|
|
27
|
+
|
|
28
|
+
## Usage Example
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { buildStreamFrames } from './scripted-stream'
|
|
32
|
+
import type { HistoricalMessage } from '../types'
|
|
33
|
+
|
|
34
|
+
const conversation: HistoricalMessage[] = [
|
|
35
|
+
{ owner: 'user', content: 'How do I reset a password?', messageData: null },
|
|
36
|
+
{
|
|
37
|
+
content: 'Here is how you reset a password…',
|
|
38
|
+
messageData: [{ type: 'TEXT', text: 'Here is how you reset a password…' }],
|
|
39
|
+
},
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
const frames = buildStreamFrames(conversation)
|
|
43
|
+
|
|
44
|
+
// Drive an EmbeddableChat in previewMode, e.g. inside useScriptedStream:
|
|
45
|
+
frames.forEach((frame, i) => {
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
renderChat(frame.messages, frame.phase, frame.typing)
|
|
48
|
+
}, frames.slice(0, i).reduce((sum, f) => sum + f.delayMs, 0))
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> **Note:** Frame count for any shared message prefix is deterministic — a host that appends a continuation after an approval resumes seamlessly without rebuilding earlier frames. Pair with `useScriptedStream` for the scheduling clock.
|
|
@@ -1,54 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Resolves the
|
|
1
|
+
<!-- source-hash: 6609067763f343156daece1351c3881a -->
|
|
2
|
+
Resolves the call-to-action contract for a single source row — determining its icon, destination URL, target platform, and Ask drill-in eligibility — for use across chat-adjacent surfaces (source chips, inline cards, search results).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `SourceRowContext` | Host-injected context — `baseRoute`, `chipBasePlatform`, `currentPlatform`, `tableIdForDocumentType` |
|
|
12
|
-
| `SourceRowCTA` | Resolved contract — `icon`, `iconLabel`, `href`, `targetPlatform`, `askable`, `chatRef` |
|
|
8
|
+
- **`SourceRowInput`** — Describes the raw row data: `sourceRepo`, `documentType`, `id`, `title`, `externalUrl`, `targetPlatform`, and `path`.
|
|
9
|
+
- **`SourceRowContext`** — Host-injected runtime context: `baseRoute`, `chipBasePlatform`, `currentPlatform`, `tableIdForDocumentType`, `composeContentUrl`, and `docPlatformTargets`.
|
|
10
|
+
- **`SourceRowCTA`** — The resolved output contract: `icon`, `iconLabel`, `href`, `targetPlatform`, `askable`, and `chatRef`.
|
|
13
11
|
|
|
14
|
-
###
|
|
12
|
+
### Functions
|
|
15
13
|
|
|
16
|
-
- **`resolveSourceRowCTA(row, ctx)`** —
|
|
17
|
-
- **`
|
|
14
|
+
- **`resolveSourceRowCTA(row, ctx)`** — Core pure function. Derives the icon, resolves the destination URL through a priority chain, and determines Ask drill-in viability.
|
|
15
|
+
- **`sourceRowCtxFromRuntime(runtime, surface)`** — Convenience builder that wires a `ChatRuntime` into a `SourceRowContext`, centralizing wiring shared by all call sites.
|
|
16
|
+
- **`sanitizePath(path)`** — Strips unsafe characters from path strings to prevent traversal or query-string injection.
|
|
18
17
|
|
|
19
|
-
###
|
|
18
|
+
### Constants
|
|
20
19
|
|
|
21
|
-
- **`
|
|
22
|
-
- **`shouldFallbackToPathNav(row)`** — Limits in-app path fallback to `markdown` and `data_room_doc` document types only.
|
|
23
|
-
- **`pickSourceIcon(sourceRepo, documentType)`** — Maps `sourceRepo` → icon name → React component via `SOURCE_ICON_NAMES` + `ICON_REGISTRY`; falls back to `FileText`.
|
|
20
|
+
- **`DOC_TABLE_TYPES`** — `['markdown', 'data_room_doc']` — the document types that resolve via path-based navigation rather than requiring an `externalUrl`.
|
|
24
21
|
|
|
25
22
|
## Usage Example
|
|
26
23
|
|
|
27
24
|
```typescript
|
|
28
|
-
import { resolveSourceRowCTA,
|
|
25
|
+
import { resolveSourceRowCTA, sourceRowCtxFromRuntime } from './source-row-cta'
|
|
26
|
+
|
|
27
|
+
const ctx = sourceRowCtxFromRuntime(
|
|
28
|
+
{
|
|
29
|
+
source: 'flamingo',
|
|
30
|
+
composeContentUrl: runtime.composeContentUrl,
|
|
31
|
+
docPlatformTargets: runtime.docPlatformTargets,
|
|
32
|
+
},
|
|
33
|
+
{ baseRoute: '/knowledge-base', chipBasePlatform: 'flamingo' },
|
|
34
|
+
)
|
|
29
35
|
|
|
30
|
-
// Full CTA resolution for a chip or search result
|
|
31
36
|
const cta = resolveSourceRowCTA(
|
|
32
37
|
{
|
|
33
38
|
sourceRepo: 'blog-posts',
|
|
34
39
|
documentType: 'blog_post',
|
|
35
|
-
id: '
|
|
36
|
-
title: '
|
|
37
|
-
externalUrl: 'https://
|
|
38
|
-
targetPlatform: 'hub',
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
baseRoute: '/knowledge-base',
|
|
42
|
-
currentPlatform: 'hub',
|
|
43
|
-
tableIdForDocumentType: (type) => type === 'blog_post' ? 'blog-posts' : null,
|
|
40
|
+
id: 'abc-123',
|
|
41
|
+
title: 'How we built OpenFrame',
|
|
42
|
+
externalUrl: 'https://flamingo.run/blog/abc-123',
|
|
44
43
|
},
|
|
44
|
+
ctx,
|
|
45
45
|
)
|
|
46
|
-
// cta.href → 'https://example.com/posts/42' (safeHref-validated)
|
|
47
|
-
// cta.askable → true
|
|
48
|
-
// cta.chatRef → { type: 'blog_post', sourceRepo: 'blog-posts', id: 'post-42', ... }
|
|
49
46
|
|
|
50
|
-
//
|
|
51
|
-
|
|
47
|
+
// cta.href → sanitized destination URL
|
|
48
|
+
// cta.icon → React icon component
|
|
49
|
+
// cta.askable → true (has id + documentType)
|
|
50
|
+
// cta.chatRef → pre-built ChatRef for the Ask handler
|
|
52
51
|
```
|
|
53
52
|
|
|
54
|
-
|
|
53
|
+
**URL resolution priority (doc rows):** `docPlatformTargets[documentType]` → `chipBasePlatform` → `baseRoute` → `null`. All final hrefs pass through `safeHref()` to block `javascript:` / `data:` injection.
|
|
54
|
+
|
|
55
|
+
**Source:** [`source-row-cta.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/source-row-cta.ts)
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Utility
|
|
1
|
+
<!-- source-hash: 39498ad7a2e0f9d7ad0f6c8c114b7a36 -->
|
|
2
|
+
Utility module for extracting, formatting, and rendering tool call metadata — titles, command bodies, argument values, and execution results — in a human-readable form for approval and execution cards.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Constants
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
- **`COMMAND_BODY_ARG_KEYS`** — Ordered list of argument keys (`command`, `query`, `script`, `scriptContent`, `code`) used to locate the primary command body in a tool call's argument map.
|
|
8
9
|
|
|
9
10
|
### Functions
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| `formatToolResult(value)` | Determines inline vs. block rendering for a tool execution result, stripping markdown code fences if present. |
|
|
12
|
+
- **`getToolCallTitle(opts)`** — Resolves a human-readable title for a tool call. Falls through `COMMAND_BODY_ARG_KEYS` → `title` → `name` → `'Tool call'`. Shape-agnostic; works for both `PendingToolCallData` and `ToolExecutionData`.
|
|
13
|
+
- **`getCommandText(call)`** — Thin adapter over `getToolCallTitle` for `PendingToolCallData` objects.
|
|
14
|
+
- **`getCommandBody(args)`** — Returns only the raw command body (first `COMMAND_BODY_ARG_KEYS` match), with no fallback. Used by the Fae client card's expanded view.
|
|
15
|
+
- **`expandedJsonStringify(value)`** — Pretty-prints JSON with real newlines instead of escaped `\n` sequences in multi-line strings. Optimised for human readability, not re-parsing.
|
|
16
|
+
- **`formatToolArgValue(value)`** — Determines render mode for a single argument value: JSON block, text block, or inline string.
|
|
17
|
+
- **`formatToolResult(value)`** — Determines render mode for a tool execution result. Strips markdown code fences, then applies the same JSON/block/inline logic as `formatToolArgValue`.
|
|
18
18
|
|
|
19
19
|
### Types
|
|
20
|
+
|
|
20
21
|
- **`FormattedArgValue`** — Discriminated union: `{ kind: 'inline'; text: string }` or `{ kind: 'block'; text: string; language: 'json' | 'text' }`.
|
|
21
22
|
|
|
22
23
|
## Usage Example
|
|
@@ -24,19 +25,26 @@ Utility helpers for resolving, formatting, and rendering tool call data — titl
|
|
|
24
25
|
```typescript
|
|
25
26
|
import {
|
|
26
27
|
getCommandText,
|
|
28
|
+
getCommandBody,
|
|
27
29
|
formatToolArgValue,
|
|
28
30
|
formatToolResult,
|
|
29
31
|
} from './tool-call-helpers'
|
|
30
32
|
|
|
31
|
-
// Resolve display title
|
|
32
|
-
const title = getCommandText(
|
|
33
|
-
|
|
33
|
+
// Resolve display title for an approval card
|
|
34
|
+
const title = getCommandText({
|
|
35
|
+
toolName: 'bash',
|
|
36
|
+
toolTitle: null,
|
|
37
|
+
toolCallArguments: { command: 'ls -la /var/log' },
|
|
38
|
+
})
|
|
39
|
+
// → 'ls -la /var/log'
|
|
34
40
|
|
|
35
41
|
// Render an argument value
|
|
36
|
-
const
|
|
37
|
-
// → { kind: 'block', text: '
|
|
42
|
+
const formatted = formatToolArgValue('{"key": "value\nwith newline"}')
|
|
43
|
+
// → { kind: 'block', text: '...', language: 'json' }
|
|
38
44
|
|
|
39
45
|
// Render a tool execution result (strips fences, detects JSON)
|
|
40
|
-
const result = formatToolResult('```
|
|
46
|
+
const result = formatToolResult('```bash\n{"status": "ok"}\n```')
|
|
41
47
|
// → { kind: 'block', text: '{\n "status": "ok"\n}', language: 'json' }
|
|
42
|
-
```
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Source:** [`tool-call-helpers.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool-call-helpers.ts)
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: b966a03234b6e0b13e69b8aed2a51f90 -->
|
|
2
|
+
Canonical contact form component supporting both public contact flows and internal ticket creation. Accepts configurable field visibility, custom submit handlers, file attachments, and bot-protection signals, making a single form reusable across multiple surfaces without forking.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ContactForm` | Component | Main form component with all contact/ticket functionality |
|
|
9
|
+
| `ContactFormProps` | Interface | Full prop surface for customization and embedding |
|
|
10
|
+
| `ContactFormHideableField` | Type | Union of field keys that can be suppressed from rendering |
|
|
9
11
|
|
|
10
|
-
**
|
|
11
|
-
- `
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- `useForm` (react-hook-form) + `zodResolver` against `ContactSchema`
|
|
15
|
-
- `useContactSubmission` — built-in `/api/contact` submit path with toast + redirect
|
|
16
|
-
- `useChatAttachments` — file staging shared with the chat composer
|
|
17
|
-
- `useState` — tracks in-flight state for the custom submit path
|
|
12
|
+
**Internal hooks used:**
|
|
13
|
+
- `useContactSubmission` — built-in `/api/contact` submit flow (toast + redirect)
|
|
14
|
+
- `useHumanitySignals` — honeypot + timing bot-protection signals
|
|
15
|
+
- `useChatAttachments` — file staging using the same primitives as the chat composer
|
|
18
16
|
|
|
19
17
|
## Usage Example
|
|
20
18
|
|
|
21
19
|
```typescript
|
|
22
|
-
//
|
|
20
|
+
// Basic contact page usage
|
|
23
21
|
<ContactForm
|
|
24
22
|
userId={user?.id}
|
|
25
23
|
helpCategoryOptions={appConfig.contact.contactReasons}
|
|
@@ -27,12 +25,13 @@ A self-contained, reusable contact form component that supports both standard co
|
|
|
27
25
|
onSubmitSuccess={clearStoredRedditClickId}
|
|
28
26
|
/>
|
|
29
27
|
|
|
30
|
-
// Ticket creation —
|
|
28
|
+
// Ticket creation surface — hides name/email, adds Subject field,
|
|
29
|
+
// uses a custom submit handler
|
|
31
30
|
<ContactForm
|
|
32
|
-
hideFields={['name', 'email', 'companySize', 'referralSource'
|
|
33
|
-
defaultValues={{ name: user.name, email: user.email
|
|
34
|
-
attachmentsEnabled
|
|
31
|
+
hideFields={['name', 'email', 'companySize', 'referralSource']}
|
|
32
|
+
defaultValues={{ name: user.name, email: user.email }}
|
|
35
33
|
extraTopField={<SubjectInput value={subject} onChange={setSubject} />}
|
|
34
|
+
attachmentsEnabled
|
|
36
35
|
submitLabel="Open ticket"
|
|
37
36
|
onCustomSubmit={async (data, attachments) => {
|
|
38
37
|
await actions.submitTicket({ ...data, subject, attachments })
|
|
@@ -40,4 +39,10 @@ A self-contained, reusable contact form component that supports both standard co
|
|
|
40
39
|
/>
|
|
41
40
|
```
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- `defaultValues` is **required** when hiding `name`, `email`, or `helpCategory` — Zod still validates hidden fields; missing values cause a silent submit block (a `console.warn` logs the offending fields in DevTools).
|
|
45
|
+
- `onCustomSubmit` bypasses the built-in toast/redirect chain entirely; the caller owns all success/error UX.
|
|
46
|
+
- `attachmentsEnabled` must be `true` to render the file picker; otherwise `attachments` passed to `onCustomSubmit` is always `[]`.
|
|
47
|
+
|
|
48
|
+
**Source:** [`contact-form.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/contact-form.tsx)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: 64fe296f0d441160ca77beb4bd1eaaca -->
|
|
2
|
+
React context that bridges `useDocumentTree` viewer instances to `GlobalAskAI` components, enabling programmatic document navigation without global events or URL parsing.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DocNavigator` (interface)
|
|
7
|
+
Represents a mounted document viewer with three members:
|
|
8
|
+
- `baseRoute` — the URL prefix this navigator owns (e.g., `'/knowledge-base'`)
|
|
9
|
+
- `findNodeByPath(path)` — looks up a `DocNode` by storage path
|
|
10
|
+
- `selectNode(node)` — triggers navigation as if the user clicked a sidebar item
|
|
11
|
+
|
|
12
|
+
### `DocNavigationProvider`
|
|
13
|
+
Context provider that maintains a `Map<baseRoute, DocNavigator>`. Supports multiple concurrent navigators (dual-pane, nested viewers) with longest-prefix matching to route navigation calls to the correct owner.
|
|
14
|
+
|
|
15
|
+
### `useDocNavigation()` (hook)
|
|
16
|
+
Returns the context value with three methods:
|
|
17
|
+
- `register(nav)` — registers a navigator; returns a StrictMode-safe cleanup function
|
|
18
|
+
- `navigate(path)` — resolves the owning navigator and selects the node; returns `true` if handled
|
|
19
|
+
- `isAvailable()` — returns `true` if at least one navigator is mounted
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// In a document viewer component
|
|
25
|
+
import { useDocNavigation } from './doc-navigation-context'
|
|
26
|
+
|
|
27
|
+
function DocViewer({ baseRoute }: { baseRoute: string }) {
|
|
28
|
+
const { register } = useDocNavigation()
|
|
29
|
+
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const cleanup = register({
|
|
32
|
+
baseRoute,
|
|
33
|
+
findNodeByPath: (path) => tree.find(path) ?? null,
|
|
34
|
+
selectNode: (node) => setActiveNode(node),
|
|
35
|
+
})
|
|
36
|
+
return cleanup
|
|
37
|
+
}, [baseRoute, register])
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// In GlobalAskAI — navigate to a cited document
|
|
41
|
+
function AskAI() {
|
|
42
|
+
const { navigate, isAvailable } = useDocNavigation()
|
|
43
|
+
|
|
44
|
+
const handleCitationClick = (storagePath: string) => {
|
|
45
|
+
const handled = navigate(storagePath)
|
|
46
|
+
if (!handled) window.open(storagePath, '_blank')
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!-- source-hash: cf4c252821dd0aa2c926e8dce8077256 -->
|
|
2
|
+
Renders a full-featured documentation viewer with a collapsible sidebar navigation, AI-powered search, sticky section navigation, and pluggable content/skeleton renderers for markdown and embed document types.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Exports
|
|
7
|
+
|
|
8
|
+
- **`DocViewer`** — Main component wrapping `DocViewerContent`; accepts `DocViewerProps` and wires document tree state, scroll spy, link resolution, and search into a `PageLayout` shell
|
|
9
|
+
- **`DEFAULT_DOC_VIEWER_PALETTE`** — Shared ODS color token map for the viewer chrome (background, text, border, card); intentionally uniform across knowledge-base and data-room surfaces
|
|
10
|
+
|
|
11
|
+
### Props (`DocViewerProps`)
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Description |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `sourceId` | `DocSourceId` | Registry source identifier, threaded into API calls and link resolution |
|
|
16
|
+
| `renderContent` | `fn` | Caller-supplied renderer for doc body (markdown, PDF, Figma, Sheets, etc.) |
|
|
17
|
+
| `renderSkeleton` | `fn` | Returns a typed loading skeleton based on `documentType` |
|
|
18
|
+
| `chatSource` | `string` | Server-side platform identifier for RAG search; never pass user input |
|
|
19
|
+
| `baseRoute` | `string` | Root path for URL navigation |
|
|
20
|
+
| `shell` | `boolean` | When `false`, omits the `<main>` wrapper if the host layout already provides it |
|
|
21
|
+
| `structureEndpoint` | `string?` | Override for doc tree API (defaults to `/api/docs/sources/${sourceId}/structure`) |
|
|
22
|
+
| `contentEndpoint` | `string?` | Override for doc content API |
|
|
23
|
+
| `searchEndpoint` | `string?` | Override for RAG search endpoint |
|
|
24
|
+
| `resolveLinkEndpoint` | `string?` | Override for internal link resolver (prop → runtime → `/api/docs/resolve-link`) |
|
|
25
|
+
| `backButton` | `object \| false` | Back-button config; pass `false` to hide |
|
|
26
|
+
|
|
27
|
+
### Internal Hooks
|
|
28
|
+
|
|
29
|
+
- **`useDocumentTree`** — Fetches structure + content, manages `selectedPath`, `expandedNodes`, navigation
|
|
30
|
+
- **`useScrollSpy`** — Tracks active section for sticky nav highlighting
|
|
31
|
+
- **`useDocNavigation`** — Context-based in-page navigation
|
|
32
|
+
- **`useDocsResolveLink`** — Async internal link resolver pipeline
|
|
33
|
+
- **`useDocSearch`** — RAG search bar state and navigation callbacks
|
|
34
|
+
|
|
35
|
+
## Usage Example
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { DocViewer } from "@openframe/lib"
|
|
39
|
+
import { renderDocContent } from "./my-renderer"
|
|
40
|
+
import { renderDocSkeleton } from "./my-skeleton"
|
|
41
|
+
|
|
42
|
+
export default function DocsPage({ params }: { params: { path: string[] } }) {
|
|
43
|
+
return (
|
|
44
|
+
<DocViewer
|
|
45
|
+
sourceId="openframe-docs"
|
|
46
|
+
chatSource="hub"
|
|
47
|
+
baseRoute="/docs"
|
|
48
|
+
docPath={params.path?.join("/")}
|
|
49
|
+
title="Documentation"
|
|
50
|
+
sidebarLabel="DOCUMENTATION"
|
|
51
|
+
showAIChat
|
|
52
|
+
renderContent={(content, handlers) =>
|
|
53
|
+
renderDocContent(content, handlers)
|
|
54
|
+
}
|
|
55
|
+
renderSkeleton={(documentType) =>
|
|
56
|
+
renderDocSkeleton(documentType)
|
|
57
|
+
}
|
|
58
|
+
backButton={{ label: "Back to home", href: "/" }}
|
|
59
|
+
/>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Source:** [`doc-viewer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-viewer.tsx)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: d5476a1b465d54af10c5d777aa9edbff -->
|
|
2
|
+
Embeddable docs-hub page component that wires `<DocViewer>` with sensible per-document-type rendering defaults, reducing consumer setup to a single required prop (`documentTypeRenderers.markdown`).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DocsHubPage` (default export)
|
|
7
|
+
The primary component. Accepts a renderer map and delegates to `<DocViewer>` after merging consumer-supplied renderers with built-in defaults for `pdf`, `google_sheet`, `figma`, and `file` types.
|
|
8
|
+
|
|
9
|
+
### `DocumentTypeRenderers`
|
|
10
|
+
A type-safe renderer map. `markdown` is **required**; all other document types are optional overrides. The library intentionally omits a default markdown renderer to let consumers choose their own sanitization strategy and avoid XSS exposure.
|
|
11
|
+
|
|
12
|
+
### Default renderers
|
|
13
|
+
| Type | Default behavior |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `pdf` | `<PdfViewer>` if `fileUrl` exists, else unsupported message |
|
|
16
|
+
| `google_sheet` | `<GoogleSheetsViewer>` if `externalUrl` exists, else unsupported message |
|
|
17
|
+
| `figma` | `<FigmaEmbed>` if `externalUrl` exists, else unsupported message |
|
|
18
|
+
| `file` | `<FileDownloadCard>` (handles missing URL internally) |
|
|
19
|
+
| unknown | Centered "Unsupported document type" text panel |
|
|
20
|
+
|
|
21
|
+
### `defaultRenderSkeleton`
|
|
22
|
+
Picks `<MarkdownSkeleton>` for markdown/undefined types and `<EmbedSkeleton>` (shape-aware) for all embed types.
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { DocsHubPage } from './docs-hub-page'
|
|
28
|
+
import ReactMarkdown from 'react-markdown'
|
|
29
|
+
|
|
30
|
+
export function KnowledgeBasePage() {
|
|
31
|
+
return (
|
|
32
|
+
<DocsHubPage
|
|
33
|
+
title="Knowledge Base"
|
|
34
|
+
sidebarLabel="DOCUMENTATION"
|
|
35
|
+
// markdown renderer is required — consumer owns sanitization
|
|
36
|
+
documentTypeRenderers={{
|
|
37
|
+
markdown: (content) => (
|
|
38
|
+
<ReactMarkdown>{content.markdownBody ?? ''}</ReactMarkdown>
|
|
39
|
+
),
|
|
40
|
+
// override only when you need custom props, e.g.:
|
|
41
|
+
// pdf: (content) => <PdfViewer src={content.fileUrl} showToolbar />,
|
|
42
|
+
}}
|
|
43
|
+
showAIChat={true}
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
> **Note:** This component is client-side only (`'use client'`). For SEO, the host application is responsible for server-side rendering. See `docs/EMBEDDING_DOCS_HUB.md` for full embedder setup.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: 9d7bd787c09286e0b64acbaa1eea4ea0 -->
|
|
2
|
+
Public API barrel file for the documentation viewer feature, re-exporting all components, hooks, context providers, and TypeScript types needed to build and integrate a documentation hub UI.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Source | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `DocViewer` | `./doc-viewer` | Core document rendering component |
|
|
9
|
+
| `DocsHubPage` | `./docs-hub-page` | Full documentation hub page layout |
|
|
10
|
+
| `MarkdownSkeleton`, `EmbedSkeleton` | `./skeletons` | Loading skeleton components |
|
|
11
|
+
| `useDocumentTree` | `./use-document-tree` | Hook for fetching/managing document tree structure |
|
|
12
|
+
| `useScrollSpy` | `./use-scroll-spy` | Hook for tracking scroll position within docs |
|
|
13
|
+
| `DocNavigationProvider`, `useDocNavigation` | `./doc-navigation-context` | Context provider and hook for doc navigation state |
|
|
14
|
+
|
|
15
|
+
### Re-exported Types
|
|
16
|
+
|
|
17
|
+
Types from `../../types/doc-source` define the API contract for the `/api/docs/sources/[sourceId]/{structure,content}` and `/api/docs/resolve-link` endpoints:
|
|
18
|
+
|
|
19
|
+
- `DocNode`, `DocContent`, `DocSourceId`, `DocumentType` — doc source data shapes
|
|
20
|
+
- `DocRenderHandlers`, `ResolveLinkResult` — renderer and link resolution interfaces
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import {
|
|
26
|
+
DocsHubPage,
|
|
27
|
+
useDocumentTree,
|
|
28
|
+
DocNavigationProvider,
|
|
29
|
+
type DocumentTypeRenderers,
|
|
30
|
+
type DocNode,
|
|
31
|
+
} from '@/features/docs'
|
|
32
|
+
|
|
33
|
+
const renderers: DocumentTypeRenderers = {
|
|
34
|
+
markdown: (content) => <MarkdownRenderer content={content} />,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default function DocsLayout() {
|
|
38
|
+
return (
|
|
39
|
+
<DocNavigationProvider>
|
|
40
|
+
<DocsHubPage sourceId="my-source" renderers={renderers} />
|
|
41
|
+
</DocNavigationProvider>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Notes
|
|
47
|
+
|
|
48
|
+
- Marked `"use client"` — all exports are React Client Components or client-side hooks.
|
|
49
|
+
- Consumers implementing a custom doc source must satisfy the API contract types (`DocNode`, `DocContent`, etc.) exported from this file.
|
|
50
|
+
|
|
51
|
+
**Source:** [`index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/index.ts)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: 8ab264cb863c4be18bbbf4b0df822e4c -->
|
|
2
|
+
Animated loading skeleton components for the DocsHub document viewer, providing layout-matched placeholders while document content loads.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `MarkdownSkeleton`
|
|
7
|
+
|
|
8
|
+
A text-style skeleton that mimics a rendered markdown article layout — paragraphs of pulsing bars, a heading bar, and two card-style callout blocks. Used by `<DocsHubPage>` as the default skeleton for `markdown` and unknown document types.
|
|
9
|
+
|
|
10
|
+
### `EmbedSkeleton`
|
|
11
|
+
|
|
12
|
+
A document-type-aware skeleton for iframe-based viewers (`pdf`, `google_sheet`, `figma`, `file`). Matches the header button count and body layout of the actual viewer to minimize layout shift on load.
|
|
13
|
+
|
|
14
|
+
**`EmbedSkeletonProps`**
|
|
15
|
+
|
|
16
|
+
| Prop | Type | Description |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `documentType` | `'pdf' \| 'google_sheet' \| 'figma' \| 'file' \| string` | Controls header button count and card layout |
|
|
19
|
+
|
|
20
|
+
**Layout by `documentType`:**
|
|
21
|
+
|
|
22
|
+
| Value | Layout |
|
|
23
|
+
|---|---|
|
|
24
|
+
| `pdf` | Header + icon/title + **two** buttons (Preview, Download) + iframe body |
|
|
25
|
+
| `google_sheet` / `figma` | Header + icon/title + **one** button + iframe body |
|
|
26
|
+
| `file` | Centered `FileDownloadCard`-style bordered card (icon, name, download button) |
|
|
27
|
+
| `undefined` / other | Generic one-button header + iframe body |
|
|
28
|
+
|
|
29
|
+
> **Note:** Bars use `bg-ods-border` intentionally — `--ods-skeleton` resolves to transparent in this build, which would leave large surfaces visually empty.
|
|
30
|
+
|
|
31
|
+
## Usage Example
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { MarkdownSkeleton, EmbedSkeleton } from './skeletons'
|
|
35
|
+
|
|
36
|
+
// Default markdown loading state
|
|
37
|
+
<MarkdownSkeleton />
|
|
38
|
+
|
|
39
|
+
// PDF viewer loading state (two-button header)
|
|
40
|
+
<EmbedSkeleton documentType="pdf" />
|
|
41
|
+
|
|
42
|
+
// File download card loading state
|
|
43
|
+
<EmbedSkeleton documentType="file" />
|
|
44
|
+
|
|
45
|
+
// Embedders can override entirely via renderSkeleton prop on DocsHubPage
|
|
46
|
+
<DocsHubPage renderSkeleton={() => <MyCustomSkeleton />} />
|
|
47
|
+
```
|