@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,44 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders enhanced chat
|
|
1
|
+
<!-- source-hash: e3aea36595a360e95ddef8fc94d285d3 -->
|
|
2
|
+
Renders an enhanced chat message component that supports rich content including markdown, inline entity cards, mention chips, tool execution displays, approval requests, and context-aware streaming with intelligent segment splitting.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
###
|
|
15
|
-
- `
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
6
|
+
### `ChatMessageEnhanced`
|
|
7
|
+
The primary `forwardRef` component that handles multi-role message rendering (`user`, `error`, assistant variants) with:
|
|
8
|
+
|
|
9
|
+
- **`renderingPlan`** — Memoized plan that splits text segments at `[card://type:id]` markers so block-level entity cards render at exact marker positions during streaming, not at segment end
|
|
10
|
+
- **`renderedCardNodeCache`** — `useRef`-backed cache keyed by `type:id` that preserves React element identity across stream chunks, preventing card remounts and preserving open menus/fetch state
|
|
11
|
+
- **`inlineMentionIds`** — Scans text segments for `@marker:id` tokens to exclude already-inline-rendered mentions from the chip strip
|
|
12
|
+
- **`stripContextItems`** — Filters `contextItems` to only show context NOT already rendered inline
|
|
13
|
+
|
|
14
|
+
### Regex Constants
|
|
15
|
+
- **`MENTION_MARKER_REGEX`** — Mirrors `remark-mention-chips.ts` left-boundary to avoid stripping tokens the plugin would also skip
|
|
16
|
+
- **`CARD_MARKER_REGEX`** — Mirrors `remarkCardLinks` grammar; both must stay in lockstep when the marker syntax changes
|
|
17
|
+
|
|
18
|
+
### Utilities
|
|
19
|
+
- **`formatMessageTimestamp`** — Shows time-only for today's messages; prepends locale date for older ones
|
|
20
|
+
- **`normalizeContent`** — Normalizes `MessageContent` (string or `MessageSegment[]`) to a uniform `MessageSegment[]`
|
|
20
21
|
|
|
21
22
|
## Usage Example
|
|
22
23
|
|
|
23
24
|
```typescript
|
|
25
|
+
import { ChatMessageEnhanced } from "@openframe-oss/lib"
|
|
26
|
+
|
|
24
27
|
<ChatMessageEnhanced
|
|
25
28
|
role="assistant"
|
|
26
29
|
assistantType="mingo"
|
|
27
|
-
content={[
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}}
|
|
34
|
-
renderEntityCard={(ref) => <TicketPill ref={ref} />}
|
|
35
|
-
NavLinkAnchor={({ href, children }) => <Link href={href}>{children}</Link>}
|
|
36
|
-
showAvatar
|
|
30
|
+
content={[{ type: "text", text: "Here is your device: [card://device:abc123]" }]}
|
|
31
|
+
chatRefs={{ "device:abc123": { type: "device", id: "abc123", title: "Laptop A", url: null } }}
|
|
32
|
+
renderEntityCard={(ref) => <MyEntityCard ref={ref} />}
|
|
33
|
+
renderMention={(type, id) => <MentionChip type={type} id={id} />}
|
|
34
|
+
contextItems={contextItems}
|
|
35
|
+
timestamp={new Date()}
|
|
37
36
|
/>
|
|
38
37
|
```
|
|
39
38
|
|
|
40
|
-
##
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- Three distinct fallbacks for unresolved `card://` hrefs prevent LLM hallucinations from appearing as real cards.
|
|
39
|
+
## Related Files
|
|
40
|
+
- [`remark-card-links.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/remark-card-links.ts) — Remark plugin; grammar must stay in sync with `CARD_MARKER_REGEX`
|
|
41
|
+
- [`remark-mention-chips.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/remark-mention-chips.ts) — Remark plugin; left-boundary must stay in sync with `MENTION_MARKER_REGEX`
|
|
42
|
+
- [`block-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/entity-cards/block-card.tsx) — Block-level card wrapper used in segment splitting logic
|
|
@@ -1,67 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: bcd59a730239fa164668aa97e210c356 -->
|
|
2
|
+
Renders a scrollable, auto-anchoring chat message list with streaming indicators, infinite scroll upward pagination, and stick-to-bottom physics for AI chat interfaces.
|
|
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
|
+
- **`ChatMessageList`** — Primary `forwardRef` component wrapping `useStickToBottom` for spring-physics scroll anchoring during token streaming
|
|
7
|
+
- **`STREAMING_WORDS`** — Flamingo-themed cycling phrases displayed alongside the typing/streaming indicator
|
|
8
|
+
- **`hasNonEmptyContent`** — Utility predicate that checks whether a `MessageContent` value (string or `MessageSegment[]`) contains visible text
|
|
9
|
+
- **`AnchorWatcher`** / **`disposeAnchorWatcher`** — Interface and idempotent teardown helper for the prepend-anchor `ResizeObserver` settle window
|
|
10
|
+
- **`ChatMessageEnhanced`** — Per-message renderer (avatars, approval variants, entity cards, context icons, mentions)
|
|
11
|
+
- **`ChatMessageListSkeleton`** — Placeholder skeleton shown during initial load
|
|
12
|
+
- **`CyclingPhrase`** — Animated word-cycling component used inside the streaming indicator
|
|
13
|
+
- **`DotsLoaderIcon`** — Animated dots icon displayed while `isTyping` is active
|
|
14
|
+
|
|
15
|
+
## Scroll Architecture
|
|
16
|
+
|
|
17
|
+
| Concern | Owner |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Streaming follow (spring) | `useStickToBottom` |
|
|
20
|
+
| Dialog change / first load / new user message | Force-scroll `useEffect` |
|
|
21
|
+
| Load-older prepend anchoring | `loadOlderAnchorRef` + geometry delta |
|
|
22
|
+
| Top-sentinel infinite scroll | `sentinelRef` + `IntersectionObserver` |
|
|
23
|
+
| Passive demo hard-pin | `pinBottom` prop path |
|
|
24
24
|
|
|
25
25
|
## Usage Example
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
|
-
import { ChatMessageList } from "
|
|
28
|
+
import { ChatMessageList } from "@openframe/ui"
|
|
29
|
+
import type { ChatMessage } from "@openframe/ui/types"
|
|
29
30
|
|
|
30
|
-
const messages = [
|
|
31
|
+
const messages: ChatMessage[] = [
|
|
31
32
|
{ id: "1", role: "user", content: "Hello!" },
|
|
32
33
|
{ id: "2", role: "assistant", content: "Hi there!" },
|
|
33
34
|
]
|
|
34
35
|
|
|
35
|
-
export function
|
|
36
|
-
const listRef = useRef<HTMLDivElement>(null)
|
|
37
|
-
|
|
36
|
+
export function MyChatView() {
|
|
38
37
|
return (
|
|
39
38
|
<ChatMessageList
|
|
40
|
-
ref={listRef}
|
|
41
39
|
messages={messages}
|
|
42
|
-
dialogId="
|
|
40
|
+
dialogId="dialog-abc"
|
|
43
41
|
isTyping={false}
|
|
44
|
-
autoScroll
|
|
45
|
-
showAvatars
|
|
46
|
-
hasNextPage={true}
|
|
42
|
+
autoScroll
|
|
43
|
+
showAvatars
|
|
47
44
|
onLoadMore={() => fetchOlderMessages()}
|
|
45
|
+
hasNextPage={true}
|
|
46
|
+
isFetchingNextPage={false}
|
|
48
47
|
/>
|
|
49
48
|
)
|
|
50
49
|
}
|
|
51
50
|
```
|
|
52
51
|
|
|
53
|
-
##
|
|
54
|
-
|
|
55
|
-
The component uses [`use-stick-to-bottom`](https://github.com/stackblitz-labs/use-stick-to-bottom) (same library powering bolt.new) with three additional behaviors layered on top:
|
|
52
|
+
## Notes
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
B -->|"First message"| C
|
|
62
|
-
B -->|"New user message"| C
|
|
63
|
-
B -->|"Streaming assistant"| D["Library spring physics"]
|
|
64
|
-
A --> E{"Content prepended?"}
|
|
65
|
-
E -->|"Load-older"| F["Preserve viewport via scrollTop delta"]
|
|
66
|
-
E -->|"No prepend"| G["Update scrollHeight snapshot"]
|
|
67
|
-
```
|
|
54
|
+
- Requires `use-stick-to-bottom` (StackBlitz Labs) — the same library used by Vercel AI SDK's `<Conversation>` and bolt.new
|
|
55
|
+
- `initial: false` disables mount-time auto-scroll; the dialog-change `useEffect` owns first-paint positioning
|
|
56
|
+
- Image attachments trigger a `requestAnimationFrame` follow-up scroll to handle Next.js `<Image>` progressive dimensioning
|
|
57
|
+
- `pinBottom` bypasses smart-follow for scripted demos (Fae/Mingo) where no human controls scroll
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- source-hash: 9c88cf89d89eafde809c83221cb785bc -->
|
|
2
|
+
Renders a single Slack-channel-style message row used across both the OpenMSP community feed and ticket conversation surfaces, ensuring pixel-identical layout on both.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ChatMessageRow`
|
|
7
|
+
The primary message row component with avatar, display name, relative timestamp, body text, and an optional footer slot. Handles avatar proxying via `useProxiedImageUrl` and gracefully falls back to an initials box on image load failure, keyed by URL to allow retry on src change.
|
|
8
|
+
|
|
9
|
+
### `ChatMessageRowSkeleton`
|
|
10
|
+
A loading placeholder with 1:1 structural parity to `ChatMessageRow` — matching wrapper, avatar box dimensions, and bar heights to prevent layout reflow on the loading-to-loaded transition.
|
|
11
|
+
|
|
12
|
+
### `ChatMessageRowProps`
|
|
13
|
+
```typescript
|
|
14
|
+
interface ChatMessageRowProps {
|
|
15
|
+
displayName: string // Bold name in header
|
|
16
|
+
avatarUrl?: string | null // Proxied; falls back to initials
|
|
17
|
+
timeLabel?: string | null // Pre-formatted (e.g. "2h ago"); hidden if empty
|
|
18
|
+
body: string // whitespace-pre-wrap message text
|
|
19
|
+
footer?: ReactNode // Surface-specific slot (reply badge / attachments)
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { ChatMessageRow, ChatMessageRowSkeleton } from './chat-message-row'
|
|
27
|
+
|
|
28
|
+
// Slack community feed
|
|
29
|
+
<ChatMessageRow
|
|
30
|
+
displayName="Jane Smith"
|
|
31
|
+
avatarUrl="https://cdn.example.com/avatars/jane.jpg"
|
|
32
|
+
timeLabel="2h ago"
|
|
33
|
+
body="Hey team, deployment looks good!"
|
|
34
|
+
footer={<ReplyBadge count={3} />}
|
|
35
|
+
/>
|
|
36
|
+
|
|
37
|
+
// Ticket conversation feed
|
|
38
|
+
<ChatMessageRow
|
|
39
|
+
displayName="Support Bot"
|
|
40
|
+
avatarUrl={null} // Renders initials fallback "SB"
|
|
41
|
+
timeLabel={formatRelativeTime(message.createdAt)}
|
|
42
|
+
body={message.text}
|
|
43
|
+
footer={<TicketAttachmentsList attachments={message.attachments} />}
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
// While loading
|
|
47
|
+
<ChatMessageRowSkeleton />
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Notes
|
|
51
|
+
|
|
52
|
+
- Colors use ODS theme tokens exclusively (`text-ods-text-primary`, `text-ods-text-secondary`, `bg-ods-border`) — no raw color values.
|
|
53
|
+
- Avatar sizing mirrors Slack's layout: `w-8 h-8` (32px) on mobile, `md:w-10 md:h-10` (40px) on desktop, `rounded-lg`, `object-cover`.
|
|
54
|
+
- The `footer` prop is the **only** intentional surface-level variation point; all other markup is shared verbatim.
|
|
55
|
+
|
|
56
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-message-row.tsx)
|
|
@@ -1,40 +1,46 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: a6dcb9f785576018e8095625642e2ea3 -->
|
|
2
|
+
Skeleton loading components for chat message rows and lists, mirroring the layout of `ChatMessageEnhanced` and `ChatMessageList` with pulsing placeholder elements.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ChatMessageSkeleton`
|
|
7
|
-
|
|
7
|
+
Single message-row skeleton with an inline avatar (assistant only), name/timestamp placeholders, and configurable body lines. Uses percentage-based widths so placeholders reflow correctly on panel resize.
|
|
8
8
|
|
|
9
|
+
**Props:**
|
|
9
10
|
| Prop | Type | Default | Description |
|
|
10
|
-
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| `showAvatar` | `boolean` | `true` | Show circular avatar placeholder |
|
|
13
|
+
| `isUser` | `boolean` | `false` | Hides avatar for user-side messages |
|
|
14
|
+
| `bodyLines` | `number` | `3` | Number of body line placeholders |
|
|
15
|
+
| `className` | `string` | — | Additional class names |
|
|
15
16
|
|
|
16
17
|
### `ChatMessageListSkeleton`
|
|
17
|
-
Renders a
|
|
18
|
+
Renders a configurable list of `ChatMessageSkeleton` rows. Supports two layout modes:
|
|
19
|
+
- **Default** — bottom-anchors rows with inner scroll, matching `ChatMessageList`
|
|
20
|
+
- **Fill mode** (`fill=true`) — top-anchors rows and clips overflow so the entire panel appears to be loading regardless of container height
|
|
18
21
|
|
|
22
|
+
**Props:**
|
|
19
23
|
| Prop | Type | Default | Description |
|
|
20
|
-
|
|
21
|
-
| `messageCount` | `number` | `6` | Number of skeleton
|
|
22
|
-
| `showAvatars` | `boolean` | `true` |
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `messageCount` | `number` | `6` | Number of skeleton rows |
|
|
26
|
+
| `showAvatars` | `boolean` | `true` | Forward avatar visibility to rows |
|
|
27
|
+
| `fullWidth` | `boolean` | `false` | Drops `max-w-ods-content-narrow` column |
|
|
28
|
+
| `bodyLines` | `number` | `3` | Forwarded to each `ChatMessageSkeleton` |
|
|
29
|
+
| `fill` | `boolean` | `false` | Enable fill/clip layout mode |
|
|
30
|
+
| `contentClassName` | `string` | — | Classes on the inner content column |
|
|
25
31
|
|
|
26
32
|
## Usage Example
|
|
27
33
|
|
|
28
34
|
```typescript
|
|
29
|
-
//
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
//
|
|
33
|
-
<ChatMessageListSkeleton
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
// Default paragraph-style skeleton list
|
|
36
|
+
<ChatMessageListSkeleton messageCount={5} showAvatars />
|
|
37
|
+
|
|
38
|
+
// Single-line messages (e.g. hero demo turns) — prevents oversized skeleton
|
|
39
|
+
<ChatMessageListSkeleton bodyLines={1} messageCount={8} />
|
|
40
|
+
|
|
41
|
+
// Fill mode: whole panel reads as loading
|
|
42
|
+
<ChatMessageListSkeleton fill messageCount={12} fullWidth />
|
|
43
|
+
|
|
44
|
+
// Individual row with one body line
|
|
45
|
+
<ChatMessageSkeleton isUser bodyLines={1} />
|
|
46
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: b2c65cbe56eb2aa7a9827bd4892f6e34 -->
|
|
2
|
+
Mobile-specific chat panel header component that renders a full-screen-aware header with back navigation, title, contextual actions menu, and a mandatory close button for drawer dismissal.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ChatPanelHeaderMobile`
|
|
7
|
+
|
|
8
|
+
The primary export. Renders a vertically-aligned header card with:
|
|
9
|
+
|
|
10
|
+
- **Back chevron** — conditionally shown via `showBack`; uses a 44px outlined `Button` with `Chevron02LeftIcon`
|
|
11
|
+
- **Title** — `text-h2` truncated text, bottom-aligned under a tall header via `xl` top padding
|
|
12
|
+
- **Actions menu (`⋯`)** — an `ActionsMenuDropdown` built from view-dependent items (archive, restore, rename, open archive); hidden entirely when no items apply
|
|
13
|
+
- **Close button** — `XmarkIcon` button; required on mobile since the full-screen drawer has no tappable backdrop
|
|
14
|
+
|
|
15
|
+
### `ChatPanelHeaderMobileProps`
|
|
16
|
+
|
|
17
|
+
Extends [`ChatPanelHeaderProps`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/chat/chat-panel-header.tsx) and adds an optional `className` for layout overrides.
|
|
18
|
+
|
|
19
|
+
### Menu item construction
|
|
20
|
+
|
|
21
|
+
Items are conditionally assembled based on current view state:
|
|
22
|
+
|
|
23
|
+
| Condition | Item |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `!showBack && onOpenArchive` | Chat archive |
|
|
26
|
+
| `isArchivedView && onRestore` | Unarchive chat |
|
|
27
|
+
| `!isArchivedView && onRename` | Rename chat |
|
|
28
|
+
| `!isArchivedView && onArchive` | Archive chat |
|
|
29
|
+
|
|
30
|
+
## Usage Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { ChatPanelHeaderMobile } from './chat-panel-header-mobile'
|
|
34
|
+
|
|
35
|
+
<ChatPanelHeaderMobile
|
|
36
|
+
title="Support Session"
|
|
37
|
+
showBack={false}
|
|
38
|
+
isArchivedView={false}
|
|
39
|
+
onClose={() => setDrawerOpen(false)}
|
|
40
|
+
onRename={() => openRenameDialog()}
|
|
41
|
+
onArchive={() => archiveChat(chatId)}
|
|
42
|
+
onOpenArchive={() => navigateTo('archive')}
|
|
43
|
+
/>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> The orchestrator renders `ChatPanelHeaderMobile` on mobile viewports and the desktop bar at `md+`. The close button (`onClose`) should always be provided since the full-screen drawer has no visible backdrop.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!-- source-hash: 06fbb4632d6895d92e482f4903daf830 -->
|
|
2
|
+
Responsive top-navigation bar for the chat panel, rendering the correct header layout across list, active-conversation, archived-conversation, and compose views — with adaptive mobile/desktop breakpoints and inline search support.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ChatPanelHeader` | Component | Main header bar with back navigation, title, avatar, action buttons, and close |
|
|
9
|
+
| `ChatPanelHeaderProps` | Interface | Full prop surface controlling layout, actions, search, and avatar |
|
|
10
|
+
|
|
11
|
+
## Usage Example
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// List view (no back, with search + archive entry)
|
|
15
|
+
<ChatPanelHeader
|
|
16
|
+
title="My Chats"
|
|
17
|
+
onClose={handleClose}
|
|
18
|
+
onOpenArchive={handleOpenArchive}
|
|
19
|
+
onToggleSearch={handleToggleSearch}
|
|
20
|
+
searchActive={isSearchOpen}
|
|
21
|
+
onSearchChange={handleSearchChange}
|
|
22
|
+
searchQuery={currentQuery}
|
|
23
|
+
/>
|
|
24
|
+
|
|
25
|
+
// Active conversation view
|
|
26
|
+
<ChatPanelHeader
|
|
27
|
+
showBack
|
|
28
|
+
title="Support Thread"
|
|
29
|
+
subtitle="Jane Smith"
|
|
30
|
+
avatar={{ name: "Jane Smith", avatarUrl: "/avatars/jane.png" }}
|
|
31
|
+
onBack={handleBack}
|
|
32
|
+
onClose={handleClose}
|
|
33
|
+
onRename={handleRename}
|
|
34
|
+
onArchive={handleArchive}
|
|
35
|
+
/>
|
|
36
|
+
|
|
37
|
+
// Archived conversation (read-only)
|
|
38
|
+
<ChatPanelHeader
|
|
39
|
+
showBack
|
|
40
|
+
title="Old Thread"
|
|
41
|
+
isArchivedView
|
|
42
|
+
onBack={handleBack}
|
|
43
|
+
onClose={handleClose}
|
|
44
|
+
onRestore={handleRestore}
|
|
45
|
+
/>
|
|
46
|
+
|
|
47
|
+
// Embedded/compact mode (skips mobile full-screen layout)
|
|
48
|
+
<ChatPanelHeader
|
|
49
|
+
title="Preview"
|
|
50
|
+
compact
|
|
51
|
+
onClose={handleClose}
|
|
52
|
+
/>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Layout Behavior
|
|
56
|
+
|
|
57
|
+
```mermaid
|
|
58
|
+
graph TD
|
|
59
|
+
A[ChatPanelHeader] --> B{compact?}
|
|
60
|
+
B -->|false| C[ChatPanelHeaderMobile on small screens]
|
|
61
|
+
B -->|false| D[Compact bar on md+]
|
|
62
|
+
B -->|true| E[Compact bar at ALL widths]
|
|
63
|
+
D --> F{showBack?}
|
|
64
|
+
F -->|true| G[Back chevron + title + ellipsis menu]
|
|
65
|
+
F -->|false| H[Static title + search + archive clock]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Right-hand action slots (desktop bar):**
|
|
69
|
+
|
|
70
|
+
| Condition | Rendered control |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `isArchivedView && onRestore` | Refresh/unarchive button |
|
|
73
|
+
| `showBack && !isArchivedView` | ⋯ dropdown (rename / archive) |
|
|
74
|
+
| `!showBack && onToggleSearch` | Search toggle (hidden when inline search open) |
|
|
75
|
+
| `!showBack && onOpenArchive` | Clock/archive entry button |
|
|
76
|
+
| Always | × close button |
|
|
77
|
+
|
|
78
|
+
## Source
|
|
79
|
+
|
|
80
|
+
[`chat-panel-header.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-panel-header.tsx)
|
|
@@ -1,52 +1,53 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 1a8d84383a2cc399dcbc2df528219979 -->
|
|
2
|
+
Loading state skeleton components for the chat sidebar, rendering animated placeholder UI while conversation data is being fetched.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
| `ChatSidebarSkeleton` | `React.ForwardRefExoticComponent` | Full sidebar skeleton with optional new chat button and configurable dialog count |
|
|
9
|
-
| `DialogListItemSkeleton` | `React.ForwardRefExoticComponent` | Individual chat list item skeleton with animated title, timestamp, and chevron placeholders |
|
|
6
|
+
### `DialogListItemSkeleton`
|
|
7
|
+
A single row skeleton mimicking a chat conversation list item. Renders animated pulse placeholders for the title, timestamp, and chevron icon using `animate-pulse` on `bg-ods-border` elements.
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
**Props:**
|
|
10
|
+
| Prop | Type | Description |
|
|
11
|
+
|------|------|-------------|
|
|
12
|
+
| `className` | `string?` | Additional CSS classes |
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
### `ChatSidebarSkeleton`
|
|
15
|
+
Full sidebar skeleton wrapping multiple `DialogListItemSkeleton` rows with an optional disabled "Start New Chat" button header.
|
|
14
16
|
|
|
17
|
+
**Props:**
|
|
15
18
|
| Prop | Type | Default | Description |
|
|
16
19
|
|------|------|---------|-------------|
|
|
17
|
-
| `className` | `string
|
|
18
|
-
| `dialogCount` | `number` | `8` | Number of skeleton
|
|
19
|
-
| `showNewChatButton` | `boolean` | `true` |
|
|
20
|
-
|
|
21
|
-
**`DialogListItemSkeletonProps`**
|
|
22
|
-
|
|
23
|
-
| Prop | Type | Default | Description |
|
|
24
|
-
|------|------|---------|-------------|
|
|
25
|
-
| `className` | `string` | — | Additional CSS classes |
|
|
20
|
+
| `className` | `string?` | — | Additional CSS classes |
|
|
21
|
+
| `dialogCount` | `number` | `8` | Number of skeleton rows to render |
|
|
22
|
+
| `showNewChatButton` | `boolean` | `true` | Whether to render the disabled new chat button |
|
|
26
23
|
|
|
27
24
|
## Usage Example
|
|
28
25
|
|
|
29
26
|
```typescript
|
|
30
27
|
import { ChatSidebarSkeleton, DialogListItemSkeleton } from "./chat-sidebar-skeleton"
|
|
31
28
|
|
|
32
|
-
// Full sidebar skeleton during
|
|
29
|
+
// Full sidebar skeleton during initial load
|
|
33
30
|
function ChatLayout() {
|
|
34
|
-
const {
|
|
31
|
+
const { data, isLoading } = useConversations()
|
|
35
32
|
|
|
36
33
|
if (isLoading) {
|
|
37
|
-
return
|
|
38
|
-
<ChatSidebarSkeleton
|
|
39
|
-
dialogCount={5}
|
|
40
|
-
showNewChatButton={true}
|
|
41
|
-
/>
|
|
42
|
-
)
|
|
34
|
+
return <ChatSidebarSkeleton dialogCount={6} showNewChatButton={true} />
|
|
43
35
|
}
|
|
44
36
|
|
|
45
|
-
return <ChatSidebar
|
|
37
|
+
return <ChatSidebar conversations={data} />
|
|
46
38
|
}
|
|
47
39
|
|
|
48
|
-
//
|
|
49
|
-
function
|
|
50
|
-
return
|
|
40
|
+
// Single item skeleton for partial list loading
|
|
41
|
+
function ConversationList() {
|
|
42
|
+
return (
|
|
43
|
+
<div>
|
|
44
|
+
{conversations.map(c => <ConversationItem key={c.id} {...c} />)}
|
|
45
|
+
{isFetchingMore && <DialogListItemSkeleton />}
|
|
46
|
+
</div>
|
|
47
|
+
)
|
|
51
48
|
}
|
|
52
|
-
```
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Both components use `React.forwardRef` for DOM ref forwarding and accept standard `HTMLDivElement` props via spread. Styles follow the ODS design token conventions (`ods-bg`, `ods-border`, `ods-card`).
|
|
52
|
+
|
|
53
|
+
**Source:** [`chat-sidebar-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/chat-sidebar-skeleton.tsx)
|
|
@@ -1,48 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 60628db258030b0c522169a464accc8d -->
|
|
2
|
+
Renders a collapsible chat history sidebar with a dialog list, infinite scroll pagination, skeleton loading states, and an empty state view for the OpenFrame chat interface.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ChatSidebar` | `forwardRef` component | Main sidebar container managing dialog list, loading, and empty states |
|
|
9
|
+
| `DialogListItem` | `forwardRef` component | Individual chat entry row with title, timestamp, and unread badge |
|
|
10
|
+
|
|
11
|
+
### `ChatSidebar` Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Description |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `dialogs` | `Dialog[]` | List of chat sessions to render |
|
|
16
|
+
| `activeDialogId` | `string` | Highlights the currently selected dialog |
|
|
17
|
+
| `onNewChat` | `() => void` | Callback for the "Start New Chat" button |
|
|
18
|
+
| `onDialogSelect` | `(id: string) => void` | Callback when a dialog row is clicked |
|
|
19
|
+
| `isLoading` | `boolean` | Shows full skeleton when `true` and list is empty |
|
|
20
|
+
| `isCreatingDialog` | `boolean` | Disables the new chat button during creation |
|
|
21
|
+
| `hasNextPage` | `boolean` | Enables the `IntersectionObserver`-based infinite scroll trigger |
|
|
22
|
+
| `isFetchingNextPage` | `boolean` | Shows skeleton rows at the bottom while fetching |
|
|
23
|
+
| `onLoadMore` | `() => void` | Fired when the sentinel element enters the viewport |
|
|
24
|
+
| `children` | `ReactNode` | Replaces the default dialog list with custom content |
|
|
20
25
|
|
|
21
26
|
## Usage Example
|
|
22
27
|
|
|
23
28
|
```typescript
|
|
24
|
-
import { ChatSidebar } from "
|
|
29
|
+
import { ChatSidebar } from "@openframe-oss-lib/components"
|
|
30
|
+
|
|
31
|
+
const dialogs = [
|
|
32
|
+
{ id: "1", title: "Network Issue", timestamp: new Date(), unreadMessagesCount: 3 },
|
|
33
|
+
{ id: "2", title: "Printer Setup", timestamp: new Date() },
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
export function AppLayout() {
|
|
37
|
+
const [activeId, setActiveId] = useState("1")
|
|
25
38
|
|
|
26
|
-
function App() {
|
|
27
39
|
return (
|
|
28
40
|
<ChatSidebar
|
|
29
|
-
dialogs={
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
activeDialogId="1"
|
|
34
|
-
isLoading={false}
|
|
35
|
-
isCreatingDialog={false}
|
|
41
|
+
dialogs={dialogs}
|
|
42
|
+
activeDialogId={activeId}
|
|
43
|
+
onNewChat={() => console.log("new chat")}
|
|
44
|
+
onDialogSelect={(id) => setActiveId(id)}
|
|
36
45
|
hasNextPage={true}
|
|
37
46
|
isFetchingNextPage={false}
|
|
38
|
-
onNewChat={() => console.log("New chat")}
|
|
39
|
-
onDialogSelect={(id) => console.log("Selected:", id)}
|
|
40
47
|
onLoadMore={() => fetchNextPage()}
|
|
41
48
|
/>
|
|
42
49
|
)
|
|
43
50
|
}
|
|
44
51
|
```
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
> **Infinite scroll:** A sentinel `<div>` at the bottom of the list is observed via `IntersectionObserver` with a `100px` root margin. `onLoadMore` fires automatically when it enters the scroll container's viewport, provided `hasNextPage` is `true` and a fetch isn't already in progress.
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
**Source:** [`chat-sidebar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-sidebar.tsx)
|