@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,60 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Shared
|
|
1
|
+
<!-- source-hash: 0c00c0d0fde761ce69fdbcdde8644ab9 -->
|
|
2
|
+
Shared layout component for `DevSectionPage` list rows, providing a consistent two-column structure (title/subtitle/description left, badges right) with matching skeleton states to prevent layout shift during loading.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
|
-
|
|
8
|
-
| `DevCardRowContent` | Component |
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `ConversationCardRowSkeletonList` | Component | Multi-row skeleton list (default: 2 rows) for conversation timeline loading state |
|
|
13
|
-
| `DevCardRowContentProps` | Interface | Props for `DevCardRowContent` |
|
|
14
|
-
| `ConversationCardRowProps` | Interface | Props for `ConversationCardRow` |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `DevCardRowContent` | Component | Main row layout with fixed min-height blocks for title, subtitle, and description columns |
|
|
9
|
+
| `DevCardRowContentProps` | Interface | Props contract for `DevCardRowContent` |
|
|
10
|
+
| `DevCardRowSkeleton` | Component | Single animated skeleton row mirroring `DevCardRowContent` min-heights |
|
|
11
|
+
| `DevCardRowSkeletonList` | Component | Bordered card wrapping `n` skeleton rows (default: 5); used by delivery and tickets list shells |
|
|
15
12
|
|
|
16
13
|
## Usage Example
|
|
17
14
|
|
|
18
15
|
```typescript
|
|
19
|
-
// Static
|
|
20
|
-
<div
|
|
16
|
+
// Static row (e.g. delivery surface)
|
|
17
|
+
<div>
|
|
21
18
|
<DevCardRowContent
|
|
22
|
-
title="Deploy
|
|
19
|
+
title="Deploy to production"
|
|
23
20
|
subtitle="UPDATED today, #4271, Code review"
|
|
24
|
-
description="
|
|
21
|
+
description="Automated deployment pipeline triggered by merge to main."
|
|
22
|
+
emptyDescription="No deployment notes available."
|
|
25
23
|
rightBadges={
|
|
26
24
|
<>
|
|
27
25
|
<StatusBadge status="in-progress" />
|
|
28
|
-
<
|
|
26
|
+
<EnvironmentBadge env="production" />
|
|
29
27
|
</>
|
|
30
28
|
}
|
|
31
29
|
/>
|
|
32
30
|
</div>
|
|
33
31
|
|
|
34
|
-
// Clickable
|
|
35
|
-
<button onClick={
|
|
32
|
+
// Clickable row (e.g. tickets surface)
|
|
33
|
+
<button onClick={handleSelect}>
|
|
36
34
|
<DevCardRowContent
|
|
37
|
-
title="Login page
|
|
38
|
-
subtitle="OPEN
|
|
39
|
-
description=""
|
|
40
|
-
|
|
41
|
-
rightBadges={<SeverityBadge level="critical" />}
|
|
35
|
+
title="Login page broken on Safari"
|
|
36
|
+
subtitle="OPEN, #1042, Bug"
|
|
37
|
+
description="Users on Safari 17 cannot submit the login form."
|
|
38
|
+
rightBadges={<PriorityBadge level="high" />}
|
|
42
39
|
/>
|
|
43
40
|
</button>
|
|
44
41
|
|
|
45
|
-
//
|
|
46
|
-
<
|
|
47
|
-
author="Jane Smith"
|
|
48
|
-
role="Resolution"
|
|
49
|
-
avatarSrc="https://cdn.example.com/avatars/jane.png"
|
|
50
|
-
timestamp="2026-01-15T14:32:00Z"
|
|
51
|
-
body="The issue has been resolved by restarting the gateway service."
|
|
52
|
-
attachments={[{ name: "fix-log.txt", url: "/files/fix-log.txt" }]}
|
|
53
|
-
variant="support"
|
|
54
|
-
/>
|
|
55
|
-
|
|
56
|
-
// Loading state
|
|
57
|
-
<ConversationCardRowSkeletonList rows={3} />
|
|
42
|
+
// Loading state — swap in before data arrives
|
|
43
|
+
<DevCardRowSkeletonList rows={5} />
|
|
58
44
|
```
|
|
59
45
|
|
|
60
|
-
|
|
46
|
+
## Notes
|
|
47
|
+
|
|
48
|
+
- `rightBadges` accepts any `ReactNode` — the caller controls badge count and type; no badge logic is embedded here.
|
|
49
|
+
- Ticket conversation rows are intentionally excluded; they use the shared `<ChatMessageRow>` component (`components/chat/chat-message-row.tsx`).
|
|
50
|
+
- Skeleton min-heights mirror content min-heights exactly to prevent reflow on data load.
|
|
51
|
+
|
|
52
|
+
**Source:** [`dev-card-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dev-card-row.tsx)
|
|
@@ -1,48 +1,59 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Full-page wrapper component for dev-center sections (`/roadmap`, `/bug-fixes-and-enhancements`, `/releases`) in the OpenFrame
|
|
1
|
+
<!-- source-hash: 74cc123810f84748ea66fdf5666e6ad6 -->
|
|
2
|
+
Full-page wrapper component for dev-center sections (`/roadmap`, `/bug-fixes-and-enhancements`, `/releases`) in the OpenFrame lib, composing `PageShell → PageLayout → DevSectionView → list body` into a single reusable factory.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|--------|------|-------------|
|
|
8
|
-
| `DevSectionPage` | Component | Main page wrapper factory for any `OpenframeDevSectionKey` section |
|
|
9
|
-
| `DevSectionPageProps` | Interface | Props contract for `sectionKey`, `children`, `preControls`, and `backButton` |
|
|
10
|
-
| `SECTION_HERO_ICON_CLASS` | Constant | Tailwind class applied uniformly to all section hero icons |
|
|
6
|
+
### `DevSectionPage` (default export)
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
The primary component. Resolves section metadata from `OPENFRAME_DEV_SECTIONS` by `sectionKey`, wires the back-button navigation, and renders the page hierarchy.
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
10
|
+
### `DevSectionPageProps`
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `sectionKey` | `OpenframeDevSectionKey` | required | Key into `OPENFRAME_DEV_SECTIONS` config |
|
|
15
|
+
| `children` | `ReactNode` | required | List body (e.g. `<RoadmapList />`) |
|
|
16
|
+
| `preControls` | `ReactNode` | — | Slot rendered between hero and search/filter controls |
|
|
17
|
+
| `backButton` | `{ label?, href? } \| false` | `{ label: 'Back to home', href: '/' }` | Back-button config; `false` hides it |
|
|
18
|
+
| `title` | `string` | section hero title | Override hero title for non-OpenFrame embeds |
|
|
19
|
+
| `subtitle` | `string` | section hero description | Override hero subtitle |
|
|
20
|
+
| `shell` | `boolean` | `true` | Wraps in `<PageShell>` (`<main>`); set `false` when host layout already provides the container |
|
|
20
21
|
|
|
21
22
|
## Usage Example
|
|
22
23
|
|
|
23
24
|
```typescript
|
|
24
|
-
//
|
|
25
|
-
import { DevSectionPage } from '@/components/dev-
|
|
25
|
+
// Standard standalone page (e.g. app/roadmap/page.tsx)
|
|
26
|
+
import { DevSectionPage } from '@/components/dev-sections/dev-section-page';
|
|
27
|
+
import { RoadmapList } from '@/components/roadmap/roadmap-list';
|
|
26
28
|
|
|
27
29
|
export default function RoadmapPage() {
|
|
28
30
|
return (
|
|
29
|
-
<DevSectionPage
|
|
30
|
-
sectionKey="roadmap"
|
|
31
|
-
backButton={{ label: 'Back to home', href: '/' }}
|
|
32
|
-
>
|
|
31
|
+
<DevSectionPage sectionKey="roadmap">
|
|
33
32
|
<RoadmapList />
|
|
34
33
|
</DevSectionPage>
|
|
35
34
|
);
|
|
36
35
|
}
|
|
37
36
|
|
|
38
|
-
//
|
|
37
|
+
// Embedded inside a host app that already provides <main>
|
|
39
38
|
<DevSectionPage
|
|
40
|
-
sectionKey="
|
|
39
|
+
sectionKey="releases"
|
|
40
|
+
shell={false}
|
|
41
|
+
backButton={{ label: 'Back to dashboard', href: '/dashboard' }}
|
|
41
42
|
preControls={<OpenTicketForm />}
|
|
42
|
-
backButton={false} // hide back button
|
|
43
43
|
>
|
|
44
|
-
<
|
|
44
|
+
<ReleasesList />
|
|
45
|
+
</DevSectionPage>
|
|
46
|
+
|
|
47
|
+
// Hide back button entirely
|
|
48
|
+
<DevSectionPage sectionKey="bug-fixes-and-enhancements" backButton={false}>
|
|
49
|
+
<BugFixList />
|
|
45
50
|
</DevSectionPage>
|
|
46
51
|
```
|
|
47
52
|
|
|
48
|
-
|
|
53
|
+
## Adding a New Section
|
|
54
|
+
|
|
55
|
+
Register one entry in `OPENFRAME_DEV_SECTIONS` with the new key, then create a single-line page file mounting `DevSectionPage` with that key — no changes to this component required.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib)
|
|
@@ -1,43 +1,53 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Canonical chrome wrapper for dev-center sections (Roadmap, Delivery, Releases)
|
|
1
|
+
<!-- source-hash: 688a1a5f1e7d29524e457ab234690ffe -->
|
|
2
|
+
Canonical chrome wrapper for dev-center sections (Roadmap, Delivery, Releases) that owns title rendering, inline search input, filter pill row, and URL parameter wiring. Designed for dual-mode use: tabbed compact headings or full-page hero layouts.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `DevSectionView`
|
|
7
|
-
The single shared layout shell consumed by every dev-center section page. Supports two display modes:
|
|
8
|
-
- **Hero mode** — full-page layout with icon, `<h1>`, and description (pass `hero` prop)
|
|
9
|
-
- **Compact mode** — tab-context `<h2>` heading only (omit `hero`)
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
The primary export. A client component that renders section-level chrome and delegates list rendering to `children`.
|
|
9
|
+
|
|
10
|
+
**Props (`DevSectionViewProps`):**
|
|
11
|
+
|
|
12
12
|
| Prop | Type | Description |
|
|
13
|
-
|
|
14
|
-
| `sectionKey` | `OpenframeDevSectionKey` |
|
|
15
|
-
| `hero` | `{ icon
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `sectionKey` | `OpenframeDevSectionKey` | Drives title, search, and filter config via the registry |
|
|
15
|
+
| `hero` | `{ icon, title?, description }` | Enables full-page hero mode with icon + h1 + description |
|
|
16
16
|
| `preControls` | `ReactNode` | Optional slot between hero and search/filter controls |
|
|
17
|
-
| `children` | `ReactNode` |
|
|
17
|
+
| `children` | `ReactNode` | List body; reads URL params set by this component |
|
|
18
|
+
| `showHeading` | `boolean` | Defaults `true`; pass `false` when host renders the title elsewhere |
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
20
|
+
**Internal behavior:**
|
|
21
|
+
|
|
22
|
+
- Search input is **controlled** — commits to URL only on Enter (not every keystroke), preventing excessive navigation events
|
|
23
|
+
- Filter changes write immediately to URL params via `router.replace` with `scroll: false`
|
|
24
|
+
- Default filter value removes the param from the URL entirely (clean URLs)
|
|
25
|
+
- `useEffect` syncs controlled search state from URL on param changes (e.g., tab switches)
|
|
24
26
|
|
|
25
27
|
## Usage Example
|
|
26
28
|
|
|
27
29
|
```typescript
|
|
28
|
-
//
|
|
30
|
+
// Full-page hero mode (e.g. /roadmap route)
|
|
29
31
|
<DevSectionView
|
|
30
32
|
sectionKey="roadmap"
|
|
31
|
-
hero={{
|
|
32
|
-
|
|
33
|
+
hero={{
|
|
34
|
+
icon: <RoadmapIcon />,
|
|
35
|
+
title: "Product Roadmap",
|
|
36
|
+
description: "See what's coming next across the platform.",
|
|
37
|
+
}}
|
|
33
38
|
>
|
|
34
39
|
<RoadmapList />
|
|
35
40
|
</DevSectionView>
|
|
36
41
|
|
|
37
|
-
// Compact (tabbed)
|
|
38
|
-
<DevSectionView
|
|
39
|
-
|
|
42
|
+
// Compact tab mode (e.g. inside /roadmap-and-releases tabbed view)
|
|
43
|
+
<DevSectionView
|
|
44
|
+
sectionKey="roadmap"
|
|
45
|
+
showHeading={false}
|
|
46
|
+
>
|
|
47
|
+
<RoadmapList />
|
|
40
48
|
</DevSectionView>
|
|
41
49
|
```
|
|
42
50
|
|
|
43
|
-
|
|
51
|
+
## Source
|
|
52
|
+
|
|
53
|
+
[`dev-section-view.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dev-section-view.tsx)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: 07409d514305754ffc933394824594aa -->
|
|
2
|
+
A presentation-layer wrapper that connects `<SearchInput>` with `<DocSearchResultRow>` to deliver a consistent RAG-search dropdown across all doc-search surfaces (data-room sidebar, onboarding guide catalog, etc.).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DocSearchBar` (default export)
|
|
7
|
+
|
|
8
|
+
A controlled, stateless component that delegates data-fetching entirely to the caller's hook (`useDocSearch`, hub-side). Renders `<SearchInput>` pre-wired with the standard `<DocSearchResultRow>` so the dropdown UI stays identical across every consumer.
|
|
9
|
+
|
|
10
|
+
### `DocSearchBarProps`
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `placeholder` | `string` | — | Input placeholder text |
|
|
15
|
+
| `query` | `string` | — | Controlled query value |
|
|
16
|
+
| `onQueryChange` | `(value: string) => void` | — | Query change handler |
|
|
17
|
+
| `results` | `SearchResult[]` | — | Hook-fetched results |
|
|
18
|
+
| `isLoading` | `boolean` | — | Loading state |
|
|
19
|
+
| `onResultSelect` | `(result, modifiers?) => void` | — | Selection handler; preserves `cmd/ctrl/shift/alt` click modifiers for new-tab behavior |
|
|
20
|
+
| `showDropdown` | `boolean \| undefined` | `undefined` | Force dropdown open after internal navigation |
|
|
21
|
+
| `minQueryLength` | `number` | `2` | Minimum chars before search fires |
|
|
22
|
+
| `debounceMs` | `number` | `0` | Debounce delay (consumers typically debounce in the hook) |
|
|
23
|
+
| `className` | `string` | `"w-full"` | Root element class |
|
|
24
|
+
| `renderResult` | `(result, isHighlighted) => ReactNode` | `<DocSearchResultRow>` | Custom row renderer override |
|
|
25
|
+
|
|
26
|
+
## Usage Example
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
// Minimal usage — hub hook provides data, component handles display
|
|
30
|
+
function DocSidebarSearch() {
|
|
31
|
+
const { query, setQuery, results, isLoading, handleSelect } = useDocSearch()
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<DocSearchBar
|
|
35
|
+
placeholder="Search docs..."
|
|
36
|
+
query={query}
|
|
37
|
+
onQueryChange={setQuery}
|
|
38
|
+
results={results}
|
|
39
|
+
isLoading={isLoading}
|
|
40
|
+
onResultSelect={handleSelect}
|
|
41
|
+
/>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// With custom row renderer override
|
|
46
|
+
<DocSearchBar
|
|
47
|
+
{...searchProps}
|
|
48
|
+
renderResult={(result, isHighlighted) => (
|
|
49
|
+
<MyCustomRow result={result} highlighted={isHighlighted} />
|
|
50
|
+
)}
|
|
51
|
+
/>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Design Notes
|
|
55
|
+
|
|
56
|
+
The hook (`useDocSearch`) intentionally lives hub-side — it depends on hub-only context (`useDocNavigation`, the RAG-table-config registry, `decideNewTab`). This component accepts hook output as plain props, keeping both consumers to ~5 lines while the dropdown chrome stays canonical.
|
|
57
|
+
|
|
58
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-search-bar.tsx)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- source-hash: fcada161400f637c1d8ff032c7fc20dd -->
|
|
2
|
+
Renders a single search result row inside `<SearchInput>` dropdowns, providing a consistent visual layout for all doc-search surfaces (data-room sidebar, onboarding-guide catalog, etc.).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`DocSearchResultRowEntry`** — Minimal result shape; compatible with any `useDocSearch` hook result exposing `{ title?, path?, metadata? }`.
|
|
9
|
+
- **`DocSearchResultRowProps`** — Props for the row: a `DocSearchResultRowEntry` and a boolean `isHighlighted` flag.
|
|
10
|
+
|
|
11
|
+
### Component
|
|
12
|
+
|
|
13
|
+
- **`DocSearchResultRow`** — Renders a flex row with:
|
|
14
|
+
- A source icon resolved via `resolveSourceIcon()` (same registry used by inline chat-card refs, preventing cross-surface icon drift).
|
|
15
|
+
- A truncating title/path label styled with `text-ods-accent` when highlighted.
|
|
16
|
+
- An optional relative path subtitle (hidden for group entries or single-segment paths), formatted via `formatRelativePath()`.
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { DocSearchResultRow } from './doc-search-result-row'
|
|
22
|
+
|
|
23
|
+
// Inside a SearchInput dropdown list:
|
|
24
|
+
results.map((result, index) => (
|
|
25
|
+
<DocSearchResultRow
|
|
26
|
+
key={result.path}
|
|
27
|
+
result={result}
|
|
28
|
+
isHighlighted={index === highlightedIndex}
|
|
29
|
+
/>
|
|
30
|
+
))
|
|
31
|
+
|
|
32
|
+
// Result shape — satisfied by useDocSearch hook output:
|
|
33
|
+
const result = {
|
|
34
|
+
title: 'Getting Started Guide',
|
|
35
|
+
path: 'onboarding/getting-started',
|
|
36
|
+
metadata: {
|
|
37
|
+
documentType: 'onboarding-guide',
|
|
38
|
+
sourceRepo: 'internal-docs',
|
|
39
|
+
isGroup: false,
|
|
40
|
+
},
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
- **Single source of truth** — centralises row appearance so all search dropdowns are visually identical.
|
|
47
|
+
- Icon resolution is shared with the chat-card ref system via `resolveSourceIcon()`, ensuring glyph consistency (e.g. `<GraduationCap>` for onboarding guides) across every surface.
|
|
48
|
+
- Group entries (`metadata.isGroup === true`) suppress the path subtitle.
|
|
49
|
+
|
|
50
|
+
**Source:** [`doc-search-result-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-search-result-row.tsx)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- source-hash: ab6e8805ed4afb72f4daaf8533fb546d -->
|
|
2
|
+
Formats a full document path into a human-readable breadcrumb trail, showing only parent folder segments (excluding the filename).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`formatRelativePath(fullPath: string): string`** — Strips the `.md` extension, splits on `/`, drops the last segment (filename), then capitalizes and hyphen-decodes each folder name before joining with ` / `.
|
|
7
|
+
|
|
8
|
+
## Usage Example
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { formatRelativePath } from './format-relative-path'
|
|
12
|
+
|
|
13
|
+
formatRelativePath('openframe-oss-tenant/architecture/api-controllers.md')
|
|
14
|
+
// → 'Openframe oss tenant / Architecture'
|
|
15
|
+
|
|
16
|
+
formatRelativePath('getting-started.md')
|
|
17
|
+
// → 'Getting started'
|
|
18
|
+
|
|
19
|
+
formatRelativePath('')
|
|
20
|
+
// → ''
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Behavior Notes
|
|
24
|
+
|
|
25
|
+
| Input | Output |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Multi-segment path | Parent folders only, title-cased, hyphens → spaces |
|
|
28
|
+
| Single segment (no `/`) | That segment formatted (no parent to strip) |
|
|
29
|
+
| Empty string | Returns `''` immediately |
|
|
30
|
+
| `.md` extension | Stripped before processing |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 1a3cdf4f2baf4c14c3068d549bbbc83a -->
|
|
2
|
+
Public API barrel file for the `doc-search` package, re-exporting all components, hooks, utilities, and types needed to embed document search functionality in consuming applications.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Source | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `DocSearchBar` / `DocSearchBarProps` | `./doc-search-bar` | Search input component |
|
|
9
|
+
| `DocSearchResultRow` / props + entry types | `./doc-search-result-row` | Renders a single search result |
|
|
10
|
+
| `formatRelativePath` | `./format-relative-path` | Path formatting utility |
|
|
11
|
+
| `useDocSearch` / `UseDocSearchConfig` | `./use-doc-search` | Debounced fetch + result navigation hook |
|
|
12
|
+
| `resolveSearchResultAction` / `SearchResultAction` | `./resolve-search-result-action` | Determines the action for a given result |
|
|
13
|
+
| `mapDocSearchResults` | `./map-doc-search-results` | Transforms raw API results into UI-ready shape |
|
|
14
|
+
| `DocSearchResult` | `./types` | Shared result type |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import {
|
|
20
|
+
DocSearchBar,
|
|
21
|
+
DocSearchResultRow,
|
|
22
|
+
useDocSearch,
|
|
23
|
+
type UseDocSearchConfig,
|
|
24
|
+
type DocSearchResult,
|
|
25
|
+
} from '@openframe/doc-search'
|
|
26
|
+
|
|
27
|
+
const config: UseDocSearchConfig = {
|
|
28
|
+
endpoint: '/api/docs/search',
|
|
29
|
+
debounceMs: 300,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function MySearchPanel() {
|
|
33
|
+
const { query, setQuery, results, navigate } = useDocSearch(config)
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<>
|
|
37
|
+
<DocSearchBar query={query} onChange={setQuery} />
|
|
38
|
+
{results.map((result: DocSearchResult) => (
|
|
39
|
+
<DocSearchResultRow key={result.id} entry={result} onSelect={navigate} />
|
|
40
|
+
))}
|
|
41
|
+
</>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> **Note for embedders:** `useDocSearch` bundles the debounced fetch and result navigation logic previously in `hub/hooks/use-docs.ts`, so you do not need to re-implement it when mounting `DocSearchBar` outside the hub.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- source-hash: 0432b27945c1f7d64624ec15662b0110 -->
|
|
2
|
+
Transforms raw RAG `/api/docs/search` API results into typed `SearchResult` rows for the `<DocSearchBar>` dropdown, collapsing multiple financial entity-table rows into a single grouped result.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Constants
|
|
7
|
+
|
|
8
|
+
- **`SEARCH_GROUP_REPOS`** — `Set<string>` of source repos whose rows should be collapsed into grouped results (financial tables only: cap table, KPIs, P&L, balance sheet, cash flow)
|
|
9
|
+
- **`ENTITY_LABELS`** — Display label map from `sourceRepo` key to human-readable string (e.g. `'financial-cap-table'` → `'Cap Table'`)
|
|
10
|
+
|
|
11
|
+
### Exports
|
|
12
|
+
|
|
13
|
+
- **`mapDocSearchResults(docs: DocSearchResult[]): SearchResult[]`** — Pure transform function; groups financial entity rows by `sourceRepo` while preserving insertion order, then maps each entry to the dropdown's `SearchResult` shape
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { mapDocSearchResults } from './map-doc-search-results'
|
|
19
|
+
|
|
20
|
+
const rawResults = await fetchDocSearch(query)
|
|
21
|
+
const dropdownRows = mapDocSearchResults(rawResults)
|
|
22
|
+
|
|
23
|
+
// Financial table rows are collapsed:
|
|
24
|
+
// 12 cap-table rows → { title: "Cap Table (12 records)", metadata: { isGroup: true, items: [...] } }
|
|
25
|
+
|
|
26
|
+
// Regular docs remain individual:
|
|
27
|
+
// { id: '/docs/setup.md', title: 'Setup Guide', description: '...snippet...' }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Grouping Behavior
|
|
31
|
+
|
|
32
|
+
| Source repo | Behavior |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `financial-*` repos | Collapsed → single group row with record count |
|
|
35
|
+
| `blog-posts`, `webinars`, etc. | Individual rows (each has a unique URL) |
|
|
36
|
+
| All other docs | Individual rows with snippet as description |
|
|
37
|
+
|
|
38
|
+
Grouped results carry a `metadata.isGroup: true` flag and a `metadata.items` array of the collapsed records. Non-markdown individual results use `doc.name` as description instead of the snippet.
|
|
39
|
+
|
|
40
|
+
> **Note:** This is a pure transform with no side effects. Callers that need telemetry or navigation should wrap this function rather than importing hub-specific logic.
|
|
41
|
+
|
|
42
|
+
## Source
|
|
43
|
+
|
|
44
|
+
[`map-doc-search-results.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/map-doc-search-results.ts)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!-- source-hash: f287f0ffda0699577d87fde5f21130f1 -->
|
|
2
|
+
Resolves what action to take when a user selects a search result, returning one of five typed discriminated union variants for the caller to handle via a single `switch`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `SearchResultAction` (type)
|
|
7
|
+
|
|
8
|
+
Discriminated union with five variants:
|
|
9
|
+
|
|
10
|
+
| Kind | Payload | Triggered when |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `navigate-same-tab` | `href: string` | External URL, same-platform navigation |
|
|
13
|
+
| `navigate-new-tab` | `href: string` | External URL, cross-platform navigation |
|
|
14
|
+
| `ask-ai` | `{ source, ref: ChatRef }` | Row has `id`, `sourceRepo`, and `documentType` |
|
|
15
|
+
| `route` | `path: string` | Row has only a `path` (legacy fallback) |
|
|
16
|
+
| `noop` | — | Nothing actionable found |
|
|
17
|
+
|
|
18
|
+
### `resolveSearchResultAction(result, source, runtimeMode?)` (function)
|
|
19
|
+
|
|
20
|
+
Pure function — no React, no side effects, no telemetry. Evaluates `result.metadata` in priority order:
|
|
21
|
+
|
|
22
|
+
1. **`externalUrl`** → delegates to `decideNewTab` using `targetPlatform`, `runtimeMode`, and `source` as `currentSource`
|
|
23
|
+
2. **`id` + `sourceRepo` + `documentType`** → returns `ask-ai` with a `ChatRef` entity reference
|
|
24
|
+
3. **`result.path`** → returns `route` for legacy path-based navigation
|
|
25
|
+
4. **Fallthrough** → returns `noop`
|
|
26
|
+
|
|
27
|
+
## Usage Example
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { resolveSearchResultAction } from './resolve-search-result-action'
|
|
31
|
+
|
|
32
|
+
const action = resolveSearchResultAction(searchResult, 'my-source', 'host')
|
|
33
|
+
|
|
34
|
+
switch (action.kind) {
|
|
35
|
+
case 'navigate-same-tab':
|
|
36
|
+
router.push(action.href)
|
|
37
|
+
break
|
|
38
|
+
case 'navigate-new-tab':
|
|
39
|
+
window.open(action.href, '_blank')
|
|
40
|
+
break
|
|
41
|
+
case 'ask-ai':
|
|
42
|
+
chat.openWithRef(action.detail.ref)
|
|
43
|
+
break
|
|
44
|
+
case 'route':
|
|
45
|
+
router.push(action.path)
|
|
46
|
+
break
|
|
47
|
+
case 'noop':
|
|
48
|
+
break
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> **Source:** [`resolve-search-result-action.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/resolve-search-result-action.ts) — lifted from the hub's `hooks/use-docs.ts` and extracted as a standalone pure utility.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: 537733be76caba7ce3819410ae7e37fd -->
|
|
2
|
+
Wire type for a single search result row returned by `/api/docs/search`, shared between the hub's RAG layer and the lib's search hook.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DocSearchResult` Interface
|
|
7
|
+
|
|
8
|
+
| Field | Type | Description |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `path` | `string` | Document path identifier |
|
|
11
|
+
| `name` | `string` | Display name of the result |
|
|
12
|
+
| `type` | `'file' \| 'folder'` | Whether the result is a file or folder |
|
|
13
|
+
| `snippet` | `string` | Short excerpt from the matched content |
|
|
14
|
+
| `matchType` | `'title' \| 'content'` | Whether the match occurred in title or body |
|
|
15
|
+
| `documentType` | `string?` | Optional content type classification |
|
|
16
|
+
| `externalUrl` | `string?` | External URL when result links outside the hub |
|
|
17
|
+
| `targetPlatform` | `string \| null \| undefined` | Platform owning `externalUrl`; drives same-tab vs. new-tab logic via `decideNewTab` |
|
|
18
|
+
| `sourceRepo` | `string?` | Repository the document originates from |
|
|
19
|
+
| `entityId` | `string?` | Primary key value for RAG table rows; enables chat panel drill-in via `entityIdFilter` for entities with no public viewer |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import type { DocSearchResult } from '@openframe-oss-lib/types'
|
|
25
|
+
|
|
26
|
+
const result: DocSearchResult = {
|
|
27
|
+
path: '/docs/billing/cap-table',
|
|
28
|
+
name: 'Cap Table Overview',
|
|
29
|
+
type: 'file',
|
|
30
|
+
snippet: '...equity breakdown by shareholder...',
|
|
31
|
+
matchType: 'content',
|
|
32
|
+
documentType: 'financial',
|
|
33
|
+
entityId: 'row_abc123',
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Use entityId to open chat panel instead of navigating to a URL
|
|
37
|
+
if (result.entityId && !result.externalUrl) {
|
|
38
|
+
openChatPanel({ entityIdFilter: result.entityId })
|
|
39
|
+
} else {
|
|
40
|
+
navigate(result.externalUrl, { newTab: decideNewTab(result.targetPlatform) })
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
- Must remain **field-for-field identical** with `lib/data/doc-search-utils.ts:DocSearchResult` in the hub — changes to either side must be mirrored.
|
|
47
|
+
- `entityId` is specifically intended for RAG table rows (e.g. `cap_table`, `financial-kpis`) that have no public viewer URL; consumers should prefer chat-panel drill-in over synthesizing a potentially invalid path URL.
|
|
48
|
+
|
|
49
|
+
**Source:** [`types.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/types.ts)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!-- source-hash: ae4b7ed4a0dc9b425085be368f8c0a0e -->
|
|
2
|
+
Debounced RAG-powered search hook that queries `/api/docs/search` and resolves result navigation across hub, embed, and bare-embedder contexts.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `UseDocSearchConfig`
|
|
7
|
+
|
|
8
|
+
Configuration interface with the following fields:
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `source` | `string` | Discriminator forwarded as `?source=` to the search endpoint |
|
|
13
|
+
| `baseRoute` | `string` | Route prefix used to detect in-page swappable results |
|
|
14
|
+
| `onNavigate` | `(path: string) => void` | Imperative fallback navigation (e.g. `router.push`) |
|
|
15
|
+
| `tableIds` | `string[]` | Optional RAG table IDs to narrow the search scope |
|
|
16
|
+
| `onInPageSwap` | `(path: string) => boolean` | Optional callback for in-page doc-tree swaps |
|
|
17
|
+
| `searchEndpoint` | `string` | Endpoint override; defaults to `/api/docs/search` |
|
|
18
|
+
|
|
19
|
+
### `useDocSearch(config)`
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
|
|
23
|
+
| Return | Description |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `query` / `setQuery` | Controlled input state |
|
|
26
|
+
| `results` | Mapped `SearchResult[]` from the API |
|
|
27
|
+
| `isLoading` | True while debounce is pending or fetch is in-flight |
|
|
28
|
+
| `handleResultSelect` | Click/keyboard handler resolving one of four action kinds: `navigate-same-tab`, `navigate-new-tab`, `ask-ai`, or `route` |
|
|
29
|
+
| `keepDropdownOpen` | Stays `true` after new-tab navigations so the user can pick another result |
|
|
30
|
+
|
|
31
|
+
## Usage Example
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { useDocSearch } from './use-doc-search'
|
|
35
|
+
import { useRouter } from 'next/navigation'
|
|
36
|
+
|
|
37
|
+
function DocsSearchBar() {
|
|
38
|
+
const router = useRouter()
|
|
39
|
+
|
|
40
|
+
const { query, setQuery, results, isLoading, handleResultSelect } =
|
|
41
|
+
useDocSearch({
|
|
42
|
+
source: 'openframe',
|
|
43
|
+
baseRoute: '/onboarding-guides',
|
|
44
|
+
tableIds: ['onboarding-guides'],
|
|
45
|
+
onNavigate: (path) => router.push(path),
|
|
46
|
+
onInPageSwap: (path) => {
|
|
47
|
+
// Return true if handled in-page; false to fall through to router.push
|
|
48
|
+
return docTreeNavigate(path)
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<SearchInput
|
|
54
|
+
value={query}
|
|
55
|
+
onChange={setQuery}
|
|
56
|
+
results={results}
|
|
57
|
+
isLoading={isLoading}
|
|
58
|
+
onSelect={handleResultSelect}
|
|
59
|
+
/>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Navigation Resolution
|
|
65
|
+
|
|
66
|
+
The `handleResultSelect` handler respects modifier keys (`metaKey`, `ctrlKey`, `shiftKey`, middle-click) to force new-tab behavior, mirroring native anchor semantics on non-anchor rows. In `embed` mode, all same-tab results are routed through `resolveExternalNavigation` instead.
|