@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,58 +1,65 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Responsive application header component for the OpenFrame
|
|
1
|
+
<!-- source-hash: 569a7a0949370aa9107f6c577d74779f -->
|
|
2
|
+
Responsive application header component for the OpenFrame shell, providing navigation controls, search, organization filtering, notifications, time tracking, Mingo AI access, and user account management across desktop and mobile breakpoints.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|--------|------|-------------|
|
|
8
|
-
| `AppHeader` | `React.memo` component | Main header component with full prop-driven configuration |
|
|
9
|
-
| `AppHeaderProps` | Interface | Full prop contract for the header |
|
|
10
|
-
| `NotificationsHeaderButton` | Internal component | Bell icon button with unread badge, integrates with `NotificationsContext` |
|
|
6
|
+
### `AppHeader`
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
The primary exported component — a memoized `<header>` element that composes all header controls based on feature flags passed via props.
|
|
9
|
+
|
|
10
|
+
**`AppHeaderProps`** — full prop surface:
|
|
13
11
|
|
|
14
12
|
| Prop | Type | Description |
|
|
15
|
-
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `showUser` | `boolean` | Renders user avatar
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `showSearch` | `boolean` | Renders global search (desktop) or search icon (mobile) |
|
|
15
|
+
| `showOrganizations` | `boolean` | Renders org filter dropdown (desktop only) |
|
|
16
|
+
| `showNotifications` | `boolean` | Renders notifications bell with unread badge |
|
|
17
|
+
| `showTimeTracker` | `boolean` | Renders time-tracker button; requires `<TimeTrackerProvider>` |
|
|
18
|
+
| `showMingoAI` | `boolean` | Renders Mingo AI launcher button |
|
|
19
|
+
| `isMingoAIActive` | `boolean` | Pressed state for the Mingo AI drawer toggle |
|
|
20
|
+
| `showUser` | `boolean` | Renders user avatar with profile/logout dropdown (desktop only) |
|
|
21
|
+
| `isMobileMenuOpen` | `boolean` | Controls burger icon state |
|
|
22
|
+
| `disabled` | `boolean` | Dims and disables all controls except the mobile burger toggle |
|
|
23
|
+
|
|
24
|
+
### `NotificationsHeaderButton` (internal)
|
|
25
|
+
|
|
26
|
+
Reads live state from `useOptionalNotifications()` context; falls back to `fallbackUnreadCount` when no provider is present. Toggles between a bell icon (with unread dot) and a close icon when the panel is open.
|
|
23
27
|
|
|
24
28
|
## Usage Example
|
|
25
29
|
|
|
26
30
|
```typescript
|
|
27
|
-
import { AppHeader } from '
|
|
31
|
+
import { AppHeader } from '@openframe-oss-lib/ui'
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
const [
|
|
33
|
+
function Shell() {
|
|
34
|
+
const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)
|
|
35
|
+
const [mingoOpen, setMingoOpen] = React.useState(false)
|
|
31
36
|
|
|
32
37
|
return (
|
|
33
38
|
<AppHeader
|
|
34
|
-
isMobileMenuOpen={mobileOpen}
|
|
35
|
-
onToggleMobileMenu={() => setMobileOpen(prev => !prev)}
|
|
36
39
|
showSearch
|
|
37
|
-
onSearch={(query) => console.log(query)}
|
|
38
40
|
showOrganizations
|
|
39
41
|
organizations={[{ id: 'org-1', name: 'Acme Corp' }]}
|
|
40
42
|
selectedOrgId="org-1"
|
|
41
|
-
onOrgChange={(id) => console.log(id)}
|
|
43
|
+
onOrgChange={(id) => console.log('org changed', id)}
|
|
42
44
|
showNotifications
|
|
43
45
|
unreadCount={3}
|
|
46
|
+
showTimeTracker
|
|
47
|
+
showMingoAI
|
|
48
|
+
onMingoAI={() => setMingoOpen((v) => !v)}
|
|
49
|
+
isMingoAIActive={mingoOpen}
|
|
44
50
|
showUser
|
|
45
|
-
userName="Jane
|
|
51
|
+
userName="Jane Smith"
|
|
46
52
|
userEmail="jane@acme.com"
|
|
53
|
+
userAvatarUrl={null}
|
|
47
54
|
onProfile={() => router.push('/profile')}
|
|
48
55
|
onLogout={() => signOut()}
|
|
56
|
+
isMobileMenuOpen={mobileMenuOpen}
|
|
57
|
+
onToggleMobileMenu={() => setMobileMenuOpen((v) => !v)}
|
|
49
58
|
/>
|
|
50
59
|
)
|
|
51
60
|
}
|
|
52
61
|
```
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
> **Note:** `showTimeTracker` requires wrapping your app in `<TimeTrackerProvider>`. `showMingoAI` pairs with an `AppLayoutDrawer` positioned at `z-[103]`; the user dropdown renders at `z-[104]` to stay above it.
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
- **Disabled state:** Setting `disabled={true}` applies `pointer-events-none opacity-50` to all controls except the mobile menu toggle
|
|
58
|
-
- **Notifications:** Prefers live unread count from `NotificationsContext` when available, falls back to the `unreadCount` prop; switches between `BellIcon` and `BellRingingIcon` based on count
|
|
65
|
+
**Source:** [`app-header.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/app-header.tsx)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- source-hash: 68a6be14b0f426e8391409d08ace02ec -->
|
|
2
|
+
Provides React context primitives for `AppLayout`'s drawer portal targeting and multi-panel open/close coordination, intentionally isolated to prevent circular module imports.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `AppLayoutDrawerContainerContext` | `Context<HTMLElement \| null>` | Reference to the `<main>` wrapper element used as the portal mount target for `AppLayoutDrawer` |
|
|
9
|
+
| `useAppLayoutDrawerContainer` | Hook | Consumes `AppLayoutDrawerContainerContext`; returns `null` outside of `AppLayout` |
|
|
10
|
+
| `AppLayoutDrawerHandle` | Interface | Shape each panel must expose — a single `close()` method |
|
|
11
|
+
| `AppLayoutDrawerCoordination` | Interface | Coordination contract: `notifyDrawerDidOpen` and `registerDrawer` |
|
|
12
|
+
| `AppLayoutDrawerCoordinationContext` | `Context<AppLayoutDrawerCoordination \| null>` | Shared bus enforcing the one-panel-at-a-time rule |
|
|
13
|
+
| `useAppLayoutDrawerCoordination` | Hook | Consumes `AppLayoutDrawerCoordinationContext`; returns `null` outside of `AppLayout` |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Inside a drawer panel (e.g. AppLayoutDrawer or NotificationDrawer)
|
|
19
|
+
import {
|
|
20
|
+
useAppLayoutDrawerContainer,
|
|
21
|
+
useAppLayoutDrawerCoordination,
|
|
22
|
+
type AppLayoutDrawerHandle,
|
|
23
|
+
} from './app-layout-context'
|
|
24
|
+
|
|
25
|
+
function MyDrawer() {
|
|
26
|
+
const container = useAppLayoutDrawerContainer()
|
|
27
|
+
const coordination = useAppLayoutDrawerCoordination()
|
|
28
|
+
|
|
29
|
+
const handle: AppLayoutDrawerHandle = { close: () => setOpen(false) }
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!coordination) return
|
|
33
|
+
// Register so other panels can close this one
|
|
34
|
+
return coordination.registerDrawer(handle)
|
|
35
|
+
}, [coordination])
|
|
36
|
+
|
|
37
|
+
function open() {
|
|
38
|
+
// Closes the burger menu + every other registered panel
|
|
39
|
+
coordination?.notifyDrawerDidOpen(handle)
|
|
40
|
+
setOpen(true)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (!container) return null
|
|
44
|
+
return createPortal(<div>Drawer content</div>, container)
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
> **Why a separate module?** `AppLayout` renders `AppLayoutDrawer`, `NotificationDrawer`, and `TimeTrackerHeaderButton`. If those panels imported `AppLayout` to access these contexts, a module cycle would form. Keeping contexts here breaks the cycle.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- source-hash: 1cd276668c638c6cf3605fa41bf21802 -->
|
|
2
|
+
Renders a drawer panel anchored inside the `AppLayout` main content area (rather than the viewport), keeping the header and sidebar visible and interactive while the drawer is open.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `AppLayoutDrawerRoot` | Component | Root wrapper; manages open state, coordination with other layout panels, and `DialogPrimitive.Root` in non-modal mode |
|
|
9
|
+
| `AppLayoutDrawerTrigger` | Component | Re-export of `DialogPrimitive.Trigger` |
|
|
10
|
+
| `AppLayoutDrawerClose` | Component | Re-export of `DialogPrimitive.Close` |
|
|
11
|
+
| `AppLayoutDrawerResizeHandle` | Component | Drag handle for resizing the drawer panel via pointer events |
|
|
12
|
+
| `useContainedResizableSize` | Hook | Manages panel size state with localStorage persistence and container-aware clamping |
|
|
13
|
+
| `appLayoutDrawerVariants` | CVA | Tailwind variants for the outer positioning wrapper (`side`, `flush`) |
|
|
14
|
+
| `appLayoutDrawerPanelVariants` | CVA | Tailwind variants for the inner panel surface (`side`, `flush`) |
|
|
15
|
+
| `DrawerOpenContext` | Context | Exposes the current open state to descendant components for animation control |
|
|
16
|
+
| `PERSIST_CLOSED_HOLD` | Constant | Tailwind class that pins `fill-mode: forwards` on exit animations when `forceMount` is used |
|
|
17
|
+
|
|
18
|
+
Re-exported from `ui/drawer`: `DrawerBody`, `DrawerDescription`, `DrawerFooter`, `DrawerHeader`, `DrawerTitle`.
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import {
|
|
24
|
+
AppLayoutDrawerRoot,
|
|
25
|
+
AppLayoutDrawerTrigger,
|
|
26
|
+
AppLayoutDrawerClose,
|
|
27
|
+
} from "./app-layout-drawer"
|
|
28
|
+
import { DrawerHeader, DrawerTitle, DrawerBody, DrawerFooter } from "../ui/drawer"
|
|
29
|
+
|
|
30
|
+
export function ExamplePanel() {
|
|
31
|
+
const [open, setOpen] = React.useState(false)
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<AppLayoutDrawerRoot open={open} onOpenChange={setOpen}>
|
|
35
|
+
<AppLayoutDrawerTrigger asChild>
|
|
36
|
+
<button>Open details</button>
|
|
37
|
+
</AppLayoutDrawerTrigger>
|
|
38
|
+
|
|
39
|
+
{/* Content is portalled into the AppLayout container, not document.body */}
|
|
40
|
+
<AppLayoutDrawerContent side="right" resizable storageKey="details-panel-width">
|
|
41
|
+
<DrawerHeader>
|
|
42
|
+
<DrawerTitle>Details</DrawerTitle>
|
|
43
|
+
</DrawerHeader>
|
|
44
|
+
<DrawerBody>Panel content here</DrawerBody>
|
|
45
|
+
<DrawerFooter>
|
|
46
|
+
<AppLayoutDrawerClose asChild>
|
|
47
|
+
<button>Close</button>
|
|
48
|
+
</AppLayoutDrawerClose>
|
|
49
|
+
</DrawerFooter>
|
|
50
|
+
</AppLayoutDrawerContent>
|
|
51
|
+
</AppLayoutDrawerRoot>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
> **Note:** `modal={false}` is set by default so clicks outside the drawer do not block the header or sidebar. A custom overlay div is rendered as a portal sibling to catch pointer events and prevent close-and-reopen flicker on trigger elements.
|
|
@@ -1,39 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 037ca5a09298f549d1712277264f7348 -->
|
|
2
|
+
The root shell component that composes the full application chrome — sidebar, header, mobile burger menu, notification drawer, and a drawer portal target — into a responsive, context-driven layout.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
|
-
|
|
8
|
-
| `AppLayout` | Component |
|
|
9
|
-
| `AppLayoutProps` | Interface |
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `AppLayout` | Component | Main layout shell wrapping all page chrome and content |
|
|
9
|
+
| `AppLayoutProps` | Interface | Full prop surface for `AppLayout` |
|
|
10
|
+
| `useAppLayoutDrawerContainer` | Hook (re-export) | Access the drawer portal container element |
|
|
11
|
+
| `useAppLayoutDrawerCoordination` | Hook (re-export) | Access drawer open/close coordination context |
|
|
12
|
+
| `AppLayoutDrawerHandle` | Type (re-export) | Handle type for registering a drawer with the layout |
|
|
13
|
+
|
|
14
|
+
### Notable Props
|
|
15
|
+
|
|
16
|
+
| Prop | Type | Description |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `topBar` | `ReactNode` | Optional full-width banner pinned above sidebar and header |
|
|
19
|
+
| `drawer` | `ReactNode` | Slot for an `AppLayoutDrawer` that portals into the main area |
|
|
20
|
+
| `disabled` | `boolean` | Freezes nav/header chrome while keeping `children` interactive |
|
|
21
|
+
| `loadingFallback` | `ReactNode` | `Suspense` fallback rendered inside `<main>` |
|
|
17
22
|
|
|
18
23
|
## Usage Example
|
|
19
24
|
|
|
20
25
|
```typescript
|
|
21
26
|
import { AppLayout } from './app-layout'
|
|
22
|
-
import { sidebarConfig } from '../config/navigation'
|
|
23
27
|
|
|
24
28
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
25
29
|
return (
|
|
26
30
|
<AppLayout
|
|
27
|
-
sidebarConfig={
|
|
31
|
+
sidebarConfig={navigationConfig}
|
|
28
32
|
headerProps={{
|
|
29
33
|
logo: <Logo />,
|
|
30
34
|
actions: <UserMenu />,
|
|
31
35
|
}}
|
|
32
|
-
mobileBurgerMenuProps={{
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
mainClassName="p-6"
|
|
36
|
+
mobileBurgerMenuProps={{ footer: <SupportLink /> }}
|
|
37
|
+
topBar={<OnboardingBanner />}
|
|
38
|
+
drawer={<AppLayoutDrawer />}
|
|
39
|
+
mainClassName="bg-white"
|
|
37
40
|
>
|
|
38
41
|
{children}
|
|
39
42
|
</AppLayout>
|
|
@@ -41,8 +44,6 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
41
44
|
}
|
|
42
45
|
```
|
|
43
46
|
|
|
44
|
-
##
|
|
47
|
+
## Drawer Coordination
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
- `children` are wrapped in `Suspense`, enabling async page transitions out of the box
|
|
48
|
-
- `disabled` is intended for loading or onboarding states where navigation should be temporarily locked
|
|
49
|
+
The layout enforces a **single open drawer** policy via `AppLayoutDrawerCoordinationContext`. When a drawer opens, all other registered drawers are closed programmatically. Opening the mobile burger menu also closes any active drawer (and vice versa), preventing layering conflicts where the menu would render invisibly beneath an open drawer.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 167c9c053052f1a347bb1bb0405477b2 -->
|
|
2
|
+
Accessible launcher button for the Mingo AI drawer within `AppHeader`, toggling between a branded icon+wordmark and a close affordance based on active and display state.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `HeaderMingoButton`
|
|
7
|
+
|
|
8
|
+
A styled `<button>` that integrates the Mingo AI branding into the app header. Implements the `HeaderButton` visual contract (full sticky-header height, `ods-card` rest / `ods-bg-hover` hover) and exposes open state via `aria-pressed`.
|
|
9
|
+
|
|
10
|
+
**Props (`HeaderMingoButtonProps`):**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `isActive` | `boolean` | `false` | Marks the button as pressed while the Mingo drawer is open |
|
|
15
|
+
| `iconOnly` | `boolean` | `false` | Hides the "Mingo AI" wordmark; collapses to icon-only for narrow viewports |
|
|
16
|
+
| `className` | `string` | — | Additional classes merged via `cn()` |
|
|
17
|
+
|
|
18
|
+
**Behavior:**
|
|
19
|
+
- When `iconOnly && isActive`: renders an `XmarkIcon` and sets `aria-label` to `"Close Mingo AI"`
|
|
20
|
+
- Otherwise: renders `MingoIcon` with ODS cyan accent colors
|
|
21
|
+
- When `!iconOnly`: appends the bold `"Mingo AI"` wordmark
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { HeaderMingoButton } from '@openframe/ui'
|
|
27
|
+
|
|
28
|
+
// Full button with wordmark (default)
|
|
29
|
+
<HeaderMingoButton
|
|
30
|
+
isActive={isMingoOpen}
|
|
31
|
+
onClick={() => setIsMingoOpen(prev => !prev)}
|
|
32
|
+
/>
|
|
33
|
+
|
|
34
|
+
// Icon-only mode for mobile/narrow layouts
|
|
35
|
+
<HeaderMingoButton
|
|
36
|
+
iconOnly
|
|
37
|
+
isActive={isMingoOpen}
|
|
38
|
+
onClick={() => setIsMingoOpen(prev => !prev)}
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- Designed for use inside `AppHeader`'s `divide-x` divider layout; no standalone active background is applied.
|
|
45
|
+
- Figma reference: `7532:222103 — button-full`
|
|
46
|
+
- Source: [`header-mingo-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/header-mingo-button.tsx)
|
|
@@ -1,36 +1,50 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side dropdown
|
|
1
|
+
<!-- source-hash: 6379158ce442c1637f43fff8dfba4467 -->
|
|
2
|
+
A client-side dropdown component for filtering content by organization in the OpenFrame header, displaying the selected organization name and device count.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
|
|
8
|
-
- **`
|
|
7
|
+
|
|
8
|
+
- **`HeaderOrganizationFilterOrganization`** — Shape for each organization entry (`id`, `name`, optional `deviceCount`)
|
|
9
|
+
- **`HeaderOrganizationFilterProps`** — Props for the filter component
|
|
9
10
|
|
|
10
11
|
### Component
|
|
11
|
-
|
|
12
|
+
|
|
13
|
+
- **`HeaderOrganizationFilter`** — Renders a styled trigger button with a filter icon, organization name, and device count, backed by a dropdown menu of selectable organizations
|
|
14
|
+
|
|
15
|
+
### Behavior
|
|
16
|
+
|
|
17
|
+
- Defaults to `"All Organizations"` when no `selectedOrgId` matches
|
|
18
|
+
- Shows `totalDeviceCount` when no specific org is selected; shows org-level `deviceCount` when one is selected
|
|
19
|
+
- Calls `onOrgChange('')` to reset to all organizations; calls `onOrgChange(org.id)` on selection
|
|
12
20
|
|
|
13
21
|
## Usage Example
|
|
14
22
|
|
|
15
23
|
```typescript
|
|
16
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
HeaderOrganizationFilter,
|
|
26
|
+
HeaderOrganizationFilterOrganization
|
|
27
|
+
} from './header-organization-filter'
|
|
17
28
|
|
|
18
|
-
const orgs = [
|
|
29
|
+
const orgs: HeaderOrganizationFilterOrganization[] = [
|
|
19
30
|
{ id: 'org-1', name: 'Acme Corp', deviceCount: 42 },
|
|
20
31
|
{ id: 'org-2', name: 'Globex Inc', deviceCount: 17 },
|
|
21
32
|
]
|
|
22
33
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
function Header() {
|
|
35
|
+
const [selectedOrgId, setSelectedOrgId] = useState('')
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<HeaderOrganizationFilter
|
|
39
|
+
organizations={orgs}
|
|
40
|
+
selectedOrgId={selectedOrgId}
|
|
41
|
+
onOrgChange={setSelectedOrgId}
|
|
42
|
+
totalDeviceCount={59}
|
|
43
|
+
/>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
29
46
|
```
|
|
30
47
|
|
|
31
|
-
##
|
|
48
|
+
## Source
|
|
32
49
|
|
|
33
|
-
-
|
|
34
|
-
- Selecting "All Organizations" from the dropdown calls `onOrgChange('')`
|
|
35
|
-
- Device count is formatted with `toLocaleString()` (e.g., `1,234 Devices`)
|
|
36
|
-
- Fixed width of `240px` with `border-l` separator, designed for header toolbar placement
|
|
50
|
+
[`header-organization-filter.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/header-organization-filter.tsx)
|
|
@@ -1,62 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: b45b42d2833c6191aa9bdecbae716475 -->
|
|
2
|
+
Renders a sticky, auto-hiding site header with configurable logo, navigation items, dropdown menus, and action slots for the OpenFrame platform shell.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `Header`
|
|
7
|
-
The
|
|
7
|
+
The main exported component. Accepts a `HeaderConfig` object and optional `platform` string to render a full application header with:
|
|
8
8
|
|
|
9
|
-
**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
| `platform` | `string` | Optional platform identifier |
|
|
9
|
+
- **Auto-hide on scroll** — hides when scrolling down past 50px, re-appears on scroll up (opt-in via `config.autoHide`)
|
|
10
|
+
- **Dropdown menus** — custom-built dropdowns using `inert` for accessibility-safe show/hide (avoids `aria-hidden` focus retention bugs)
|
|
11
|
+
- **Click-outside / Escape dismissal** — event listeners attached only while a dropdown is open
|
|
12
|
+
- **Navigation rendering** — `renderNavigationItem` handles four cases: custom elements, dropdown parents, link/action buttons, and plain action buttons
|
|
14
13
|
|
|
15
|
-
###
|
|
14
|
+
### Exported Types
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### Layout Zones
|
|
22
|
-
| Zone | Description |
|
|
23
|
-
|------|-------------|
|
|
24
|
-
| Left | Logo link + optional `config.actions.left` slot |
|
|
25
|
-
| Center/Right | Navigation items (positioned via `config.navigation.position`) |
|
|
26
|
-
| Right | Desktop action slot + mobile menu toggle |
|
|
16
|
+
| Export | Description |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `HeaderProps` | `{ config: HeaderConfig; platform?: string }` |
|
|
19
|
+
| `HeaderConfig` | Re-exported from `../../types/navigation` for consumer convenience |
|
|
27
20
|
|
|
28
21
|
## Usage Example
|
|
29
22
|
|
|
30
23
|
```typescript
|
|
31
|
-
import { Header
|
|
24
|
+
import { Header } from './header'
|
|
25
|
+
import type { HeaderConfig } from './header'
|
|
32
26
|
|
|
33
27
|
const config: HeaderConfig = {
|
|
34
28
|
logo: {
|
|
35
29
|
href: '/',
|
|
36
30
|
element: <img src="/logo.svg" alt="Flamingo" />,
|
|
37
31
|
},
|
|
32
|
+
autoHide: true,
|
|
33
|
+
backgroundColor: 'bg-ods-card',
|
|
38
34
|
navigation: {
|
|
39
35
|
position: 'center',
|
|
40
36
|
items: [
|
|
41
37
|
{ id: 'docs', label: 'Docs', href: '/docs' },
|
|
42
38
|
{
|
|
43
|
-
id: '
|
|
44
|
-
label: '
|
|
39
|
+
id: 'community',
|
|
40
|
+
label: 'Community',
|
|
45
41
|
children: [
|
|
46
|
-
{ id: '
|
|
47
|
-
{ id: 'mingo', label: 'Mingo AI', href: '/mingo' },
|
|
42
|
+
{ id: 'slack', label: 'Slack', href: 'https://www.openmsp.ai/', isExternal: true },
|
|
48
43
|
],
|
|
49
44
|
},
|
|
50
45
|
],
|
|
51
46
|
},
|
|
52
|
-
|
|
53
|
-
right: <Button href="/login">Sign In</Button>,
|
|
54
|
-
},
|
|
55
|
-
autoHide: true,
|
|
56
|
-
mobile: { enabled: true, onToggle: () => setMenuOpen(v => !v) },
|
|
47
|
+
mingo: { enabled: true },
|
|
57
48
|
}
|
|
58
49
|
|
|
59
50
|
export default function Layout() {
|
|
60
|
-
return <Header config={config} />
|
|
51
|
+
return <Header config={config} platform="openframe" />
|
|
61
52
|
}
|
|
62
|
-
```
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> **Accessibility note:** Dropdowns use the HTML `inert` attribute (React 19 native) instead of `aria-hidden` to fully remove hidden content from the tab order and accessibility tree simultaneously.
|
|
@@ -1,65 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: a398abbb0ec4fa945ec8435f34cfbc15 -->
|
|
2
|
+
Barrel export file for the navigation component library, aggregating all navigation-related components, hooks, constants, and TypeScript types into a single `"use client"` entry point.
|
|
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
|
-
|
|
24
|
-
- `HeaderSkeleton` - Loading placeholder for header
|
|
25
|
-
- `HeaderButton` - Styled button component for header actions
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Header` / `AppHeader` | Component | Primary and application-level header components |
|
|
9
|
+
| `ClientOnlyHeader` | Component | Header rendered exclusively on the client side |
|
|
10
|
+
| `HeaderSkeleton` | Component | Loading placeholder for the header |
|
|
11
|
+
| `AppLayout` | Component | Top-level layout wrapper with drawer support |
|
|
12
|
+
| `AppLayoutDrawer` + sub-components | Components | Composable drawer primitives (trigger, close, content, header, title, description, body, footer) |
|
|
13
|
+
| `SlidingSidebar` / `NavigationSidebar` | Components | Persistent sidebar navigation surfaces |
|
|
14
|
+
| `MobileNavPanel` | Component | Mobile slide-out navigation panel |
|
|
15
|
+
| `MobileBurgerMenu` | Component | Hamburger toggle for mobile navigation |
|
|
16
|
+
| `StickySectionNav` | Component | In-page section navigation with scroll tracking |
|
|
17
|
+
| `MultiLevelNavigation` / `MobileNavigationDropdown` | Components | Tree-shaped navigation for doc viewers and nested content |
|
|
18
|
+
| `MingoAiButton` / `HeaderMingoButton` | Components | Mingo AI access buttons in the header |
|
|
19
|
+
| `HeaderGlobalSearch` | Component | Global search trigger in the header |
|
|
20
|
+
| `HeaderOrganizationFilter` | Component | Organization switcher/filter in the header |
|
|
21
|
+
| `useAppLayoutDrawerContainer` | Hook | Accesses the drawer container context |
|
|
22
|
+
| `useSectionNavigation` | Hook | Drives active-section tracking for `StickySectionNav` |
|
|
23
|
+
| `MOBILE_NAV_PANEL_ID` | Constant | DOM ID for the mobile nav panel |
|
|
26
24
|
|
|
27
25
|
## Usage Example
|
|
28
26
|
|
|
29
27
|
```typescript
|
|
30
|
-
import {
|
|
31
|
-
AppLayout,
|
|
32
|
-
|
|
28
|
+
import {
|
|
29
|
+
AppLayout,
|
|
30
|
+
AppHeader,
|
|
33
31
|
NavigationSidebar,
|
|
32
|
+
AppLayoutDrawer,
|
|
33
|
+
AppLayoutDrawerTrigger,
|
|
34
|
+
AppLayoutDrawerContent,
|
|
35
|
+
useAppLayoutDrawerContainer,
|
|
34
36
|
type AppLayoutProps,
|
|
35
|
-
type
|
|
36
|
-
} from '
|
|
37
|
-
|
|
38
|
-
// Basic layout setup
|
|
39
|
-
function MyApp() {
|
|
40
|
-
const headerConfig: HeaderConfig = {
|
|
41
|
-
showSearch: true,
|
|
42
|
-
showOrgFilter: true
|
|
43
|
-
}
|
|
37
|
+
type NavigationSidebarConfig,
|
|
38
|
+
} from '@openframe/ui/navigation'
|
|
44
39
|
|
|
40
|
+
export function Shell({ children }: AppLayoutProps) {
|
|
45
41
|
return (
|
|
46
|
-
<AppLayout
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<main>Your app content</main>
|
|
42
|
+
<AppLayout>
|
|
43
|
+
<AppHeader />
|
|
44
|
+
<NavigationSidebar config={sidebarConfig} />
|
|
45
|
+
{children}
|
|
51
46
|
</AppLayout>
|
|
52
47
|
)
|
|
53
48
|
}
|
|
49
|
+
```
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
import { ClientOnlyHeader, MobileNavPanel } from '@/components/navigation'
|
|
57
|
-
|
|
58
|
-
function ResponsiveHeader() {
|
|
59
|
-
return (
|
|
60
|
-
<ClientOnlyHeader>
|
|
61
|
-
<MobileNavPanel items={mobileNavItems} />
|
|
62
|
-
</ClientOnlyHeader>
|
|
63
|
-
)
|
|
64
|
-
}
|
|
65
|
-
```
|
|
51
|
+
> **Source:** [`packages/ui/navigation/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/packages/ui/navigation/index.ts)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 265a30408590dca0bb0f521e12abe9bf -->
|
|
2
|
+
Stateless marketing-header launcher button for the Mingo AI chat panel. Dispatches an `ask-ai:open` CustomEvent on click, allowing the mounted `EmbeddableChat` to respond without tight coupling.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `MingoAiButton` | `React.FC` | The launcher button component |
|
|
9
|
+
| `MingoAiButtonProps` | `interface` | Extends `React.ButtonHTMLAttributes<HTMLButtonElement>` |
|
|
10
|
+
|
|
11
|
+
### Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `source` | `string` | `undefined` | Identifies the chat panel instance; coalesced to `''` when dispatching |
|
|
16
|
+
| `icon` | `React.ReactNode` | `undefined` | Custom identity glyph; falls back to the packaged `MingoIcon` |
|
|
17
|
+
| `label` | `string` | `'Mingo AI'` | Wordmark text and `aria-label`; pass the server-configured assistant name |
|
|
18
|
+
| `className` | `string` | `undefined` | Additional classes merged via `cn()` |
|
|
19
|
+
| `onClick` | `MouseEventHandler` | `undefined` | Optional callback called after the CustomEvent is dispatched |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { MingoAiButton } from '@openframe/ui'
|
|
25
|
+
|
|
26
|
+
// Basic usage — falls back to packaged MingoIcon and 'Mingo AI' label
|
|
27
|
+
<MingoAiButton source="marketing-header" />
|
|
28
|
+
|
|
29
|
+
// With server-configured identity (recommended)
|
|
30
|
+
<MingoAiButton
|
|
31
|
+
source="marketing-header"
|
|
32
|
+
icon={<EntityIcon assistantIcon={config.mingo.assistantIcon} />}
|
|
33
|
+
label={config.mingo.assistantName}
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> **Note:** This component is distinct from `HeaderMingoButton` (the dashboard `AppHeader` toggle). They serve different surfaces with different layout contracts — do not merge them.
|
|
38
|
+
|
|
39
|
+
The button fires `new CustomEvent('ask-ai:open', { detail: { source } })` on `window`. Any `EmbeddableChat` mounted with a matching `source` will open in response.
|
|
40
|
+
|
|
41
|
+
**Source:** [`mingo-ai-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mingo-ai-button.tsx)
|