@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,26 +1,29 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 239259ec2e61e6f79f54306c82df0784 -->
|
|
2
|
+
Accessible mobile navigation drawer that slides down from the app header, rendering primary nav items in a 2-column grid, secondary items full-width, a user profile card, and an optional logout button.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
- Locks body scroll and traps `Escape` key while open
|
|
8
|
-
- Renders a blur backdrop and animated slide-down panel below the fixed header (`48px` offset)
|
|
9
|
-
- Splits `config.items` into **primary** (2-column grid) and **secondary** (full-width list) sections
|
|
10
|
-
- Supports a `disabled` prop that freezes all interactive items while keeping close/backdrop functional
|
|
6
|
+
### `MobileBurgerMenu`
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
A memoized React component that manages the full mobile menu overlay. Key behaviors:
|
|
9
|
+
|
|
10
|
+
- **Scroll lock** — uses `usePreventScroll` (react-aria) to block body scroll on iOS and Android while open
|
|
11
|
+
- **Focus trap** — `useFocusTrap` contains Tab focus within the panel, supports Escape-to-close, and restores focus on dismiss
|
|
12
|
+
- **Animation** — slide-down + fade via Tailwind transition classes; `inert` attribute removes closed items from the tab order without unmounting
|
|
13
|
+
- **Layout anchoring** — backdrop and panel use `absolute` (not `fixed`) so they position relative to the app row below any top banner, with `top: 48px` clearing the header
|
|
14
|
+
|
|
15
|
+
### `MobileBurgerMenuProps`
|
|
13
16
|
|
|
14
17
|
| Prop | Type | Description |
|
|
15
|
-
|
|
16
|
-
| `isOpen` | `boolean` | Controls
|
|
17
|
-
| `onClose` | `() => void` |
|
|
18
|
-
| `config` | `NavigationSidebarConfig` | Nav items and `onNavigate`
|
|
19
|
-
| `user` | `object` |
|
|
20
|
-
| `onSearchUser` | `() => void` | Optional search
|
|
21
|
-
| `onEditProfile` | `() => void` | Optional edit
|
|
22
|
-
| `onLogout` | `() => void` |
|
|
23
|
-
| `disabled` | `boolean` | Disables all interactive items |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `isOpen` | `boolean` | Controls open/closed state |
|
|
20
|
+
| `onClose` | `() => void` | Called on backdrop click or Escape |
|
|
21
|
+
| `config` | `NavigationSidebarConfig` | Nav items and `onNavigate` handler |
|
|
22
|
+
| `user` | `object` | Avatar, name, email, role for the header card |
|
|
23
|
+
| `onSearchUser` | `() => void` | Optional search-user action button |
|
|
24
|
+
| `onEditProfile` | `() => void` | Optional edit-profile action button |
|
|
25
|
+
| `onLogout` | `() => void` | Renders logout row when provided |
|
|
26
|
+
| `disabled` | `boolean` | Disables all interactive items; backdrop/close still work |
|
|
24
27
|
|
|
25
28
|
## Usage Example
|
|
26
29
|
|
|
@@ -32,19 +35,16 @@ const [menuOpen, setMenuOpen] = useState(false)
|
|
|
32
35
|
<MobileBurgerMenu
|
|
33
36
|
isOpen={menuOpen}
|
|
34
37
|
onClose={() => setMenuOpen(false)}
|
|
35
|
-
config={
|
|
36
|
-
items: [
|
|
37
|
-
{ id: 'dashboard', label: 'Dashboard', path: '/dashboard', isActive: true },
|
|
38
|
-
{ id: 'settings', label: 'Settings', section: 'secondary', path: '/settings' },
|
|
39
|
-
],
|
|
40
|
-
onNavigate: (path) => router.push(path),
|
|
41
|
-
}}
|
|
38
|
+
config={sidebarConfig}
|
|
42
39
|
user={{
|
|
43
|
-
userName: '
|
|
44
|
-
userEmail: '
|
|
45
|
-
|
|
40
|
+
userName: 'Alice Smith',
|
|
41
|
+
userEmail: 'alice@example.com',
|
|
42
|
+
userAvatarUrl: '/avatars/alice.png',
|
|
43
|
+
userRole: 'admin',
|
|
46
44
|
}}
|
|
47
|
-
onLogout={() => signOut()}
|
|
48
45
|
onEditProfile={() => router.push('/profile')}
|
|
46
|
+
onLogout={handleLogout}
|
|
49
47
|
/>
|
|
50
|
-
```
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Source:** [`mobile-burger-menu.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mobile-burger-menu.tsx)
|
|
@@ -1,64 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: f440873b10ff8a3b76d3a4ca0faf8299 -->
|
|
2
|
+
Accessible mobile navigation panel component that renders a floating dialog with scroll lock, focus trapping, and backdrop dismissal for responsive navigation menus.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
The primary export — a modal-style slide-in navigation panel controlled by `isOpen`.
|
|
6
|
+
### Exports
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
| Export | Type | Description |
|
|
9
|
+
|--------|------|-------------|
|
|
10
|
+
| `MOBILE_NAV_PANEL_ID` | `string` | DOM id (`'mobile-nav-panel'`) referenced by the header hamburger's `aria-controls` attribute |
|
|
11
|
+
| `MobileNavPanelProps` | `interface` | Props shape: `isOpen: boolean`, `config: MobileNavConfig` |
|
|
12
|
+
| `MobileNavPanel` | Component | Main panel component |
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|------|------|-------------|
|
|
13
|
-
| `isOpen` | `boolean` | Controls panel visibility |
|
|
14
|
-
| `config` | `MobileNavConfig` | Navigation structure and callbacks |
|
|
14
|
+
### Accessibility & Behavior Hooks
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
| Hook | Purpose |
|
|
17
|
+
|------|---------|
|
|
18
|
+
| `usePreventScroll` | iOS-aware, ref-counted body scroll lock (shared counter with modals/chat overlays) |
|
|
19
|
+
| `useFocusTrap` | Initial focus, Tab containment, Escape-to-close, and guarded focus restore |
|
|
20
|
+
| `useHeaderHeight` | Measures live header height so the panel anchors correctly below it |
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
- **Backdrop** — full-screen overlay (`z-[9998]`) that closes the panel on click
|
|
24
|
-
- **Panel** — floating card (`z-[9999]`), full-width on mobile / `400px` on `md+`, anchored top-right with scroll-locked content area
|
|
25
|
-
- **Header** — fixed close (`X`) button
|
|
26
|
-
- **Body** — scrollable section list with optional section titles and nav items
|
|
27
|
-
- **Footer** — optional sticky footer from `config.footer`
|
|
22
|
+
### Internal: `renderNavigationItem`
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
3. **Action** — `<Button onClick=...>` with inline badge support
|
|
24
|
+
Renders each `NavigationItem` in one of three modes:
|
|
25
|
+
- **Custom element** — renders `item.element` directly
|
|
26
|
+
- **Link item** — renders a `Button` with `href`, `leftIcon`, and `rightIcon` (badge)
|
|
27
|
+
- **Button item** — renders a `Button` with `onClick`, with badge appended via `ml-auto` span
|
|
34
28
|
|
|
35
29
|
## Usage Example
|
|
36
30
|
|
|
37
31
|
```typescript
|
|
38
32
|
import { MobileNavPanel } from './mobile-nav-panel'
|
|
39
|
-
import { useState } from 'react'
|
|
40
|
-
import { Home, Settings } from 'lucide-react'
|
|
41
33
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{ id: 'home', label: 'Home', href: '/', icon: <Home />, isActive: true },
|
|
55
|
-
{ id: 'settings', label: 'Settings', href: '/settings', icon: <Settings /> },
|
|
56
|
-
],
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
footer: <button onClick={() => setMenuOpen(false)}>Sign Out</button>,
|
|
60
|
-
}}
|
|
61
|
-
/>
|
|
62
|
-
)
|
|
34
|
+
const navConfig: MobileNavConfig = {
|
|
35
|
+
onClose: () => setOpen(false),
|
|
36
|
+
sections: [
|
|
37
|
+
{
|
|
38
|
+
title: 'Main',
|
|
39
|
+
items: [
|
|
40
|
+
{ id: 'home', label: 'Home', href: '/', isActive: true },
|
|
41
|
+
{ id: 'settings', label: 'Settings', onClick: openSettings },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
footer: <UserAccountWidget />,
|
|
63
46
|
}
|
|
64
|
-
|
|
47
|
+
|
|
48
|
+
<MobileNavPanel isOpen={isNavOpen} config={navConfig} />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- The panel is **layout-mounted on every page** but returns `null` when closed; observers activate only while open.
|
|
54
|
+
- Positioning uses a CSS custom property `--mobile-nav-top` derived from the measured header height, avoiding overflow under mobile browser chrome.
|
|
55
|
+
- The footer respects iOS safe-area insets via `env(safe-area-inset-bottom)`.
|
|
56
|
+
- Source: [`src/components/navigation/mobile-nav-panel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/navigation/mobile-nav-panel.tsx)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<!-- source-hash: eda7ac7f37238cf41917334033d772b6 -->
|
|
2
|
+
Renders a recursive, multi-level document tree navigation UI with support for both desktop sidebar and mobile dropdown layouts, handling folder/file selection state with a folder-index (README) convention.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Exports
|
|
7
|
+
|
|
8
|
+
| Name | Type | Description |
|
|
9
|
+
|------|------|-------------|
|
|
10
|
+
| `NavigationNode` | Interface | Tree node shape (file or folder) compatible with `DocNode` for type-safe assignment |
|
|
11
|
+
| `MultiLevelNavigation` | Component | Desktop sidebar navigation with recursive expand/collapse and visual selection ribbon |
|
|
12
|
+
| `MobileNavigationDropdown` | Component | Compact mobile variant of the navigation tree |
|
|
13
|
+
|
|
14
|
+
### Internal
|
|
15
|
+
|
|
16
|
+
| Name | Description |
|
|
17
|
+
|------|-------------|
|
|
18
|
+
| `isNodeVisuallySelected` | Pure function implementing the folder-with-README selection convention — the folder node is never visually selected; its README child is |
|
|
19
|
+
| `NavigationItem` | Recursive desktop tree node (file icon, folder icon, expand chevron, selection ribbon) |
|
|
20
|
+
| `MobileNavigationItem` | Recursive mobile tree node (slightly smaller hit targets) |
|
|
21
|
+
|
|
22
|
+
### Props (`MultiLevelNavigationProps`)
|
|
23
|
+
|
|
24
|
+
| Prop | Type | Description |
|
|
25
|
+
|------|------|-------------|
|
|
26
|
+
| `nodes` | `NavigationNode[]` | Root-level tree nodes |
|
|
27
|
+
| `selectedPath` | `string` | Currently active document path |
|
|
28
|
+
| `expandedNodes` | `Set<string>` | Set of expanded folder node IDs |
|
|
29
|
+
| `onNodeClick` | `(node) => void` | Called on node selection |
|
|
30
|
+
| `onToggleExpand` | `(nodeId) => void` | Optional separate expand handler |
|
|
31
|
+
| `folderIndexFile` | `string` | Folder-index filename, defaults to `'README.md'` |
|
|
32
|
+
|
|
33
|
+
## Usage Example
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { MultiLevelNavigation, MobileNavigationDropdown } from './multi-level-navigation'
|
|
37
|
+
import type { NavigationNode } from './multi-level-navigation'
|
|
38
|
+
import { useState } from 'react'
|
|
39
|
+
|
|
40
|
+
const tree: NavigationNode[] = [
|
|
41
|
+
{
|
|
42
|
+
id: 'docs',
|
|
43
|
+
name: 'Docs',
|
|
44
|
+
path: 'docs',
|
|
45
|
+
type: 'folder',
|
|
46
|
+
hasReadme: true,
|
|
47
|
+
children: [
|
|
48
|
+
{ id: 'docs/README.md', name: 'README', path: 'docs/README.md', type: 'file' },
|
|
49
|
+
{ id: 'docs/setup.md', name: 'Setup', path: 'docs/setup.md', type: 'file' },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
export function Sidebar() {
|
|
55
|
+
const [selectedPath, setSelectedPath] = useState('')
|
|
56
|
+
const [expandedNodes, setExpandedNodes] = useState<Set<string>>(new Set(['docs']))
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<MultiLevelNavigation
|
|
60
|
+
nodes={tree}
|
|
61
|
+
selectedPath={selectedPath}
|
|
62
|
+
expandedNodes={expandedNodes}
|
|
63
|
+
onNodeClick={(node) => setSelectedPath(node.path)}
|
|
64
|
+
onToggleExpand={(id) =>
|
|
65
|
+
setExpandedNodes(prev => {
|
|
66
|
+
const next = new Set(prev)
|
|
67
|
+
next.has(id) ? next.delete(id) : next.add(id)
|
|
68
|
+
return next
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
/>
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
> **Folder-index convention:** When `selectedPath` points to a folder that has a README, the visual selection ribbon renders on the README child, not the folder row itself.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders an
|
|
1
|
+
<!-- source-hash: 6877367e58f856ff5bd01b0038abbc1d -->
|
|
2
|
+
Renders an accessible, stateful sidebar navigation button that supports active, disabled, and unread notification states with animated label visibility.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `NavigationSidebarItemButtonProps`
|
|
7
7
|
| Prop | Type | Description |
|
|
8
8
|
|------|------|-------------|
|
|
9
|
-
| `item` | `NavigationSidebarItem` | Navigation item data (label, icon,
|
|
10
|
-
| `showLabel` | `boolean` |
|
|
11
|
-
| `disabled` | `boolean` | Disables interaction and applies
|
|
9
|
+
| `item` | `NavigationSidebarItem` | Navigation item data (label, icon, active state, unread count) |
|
|
10
|
+
| `showLabel` | `boolean` | Toggles label/unread badge visibility (collapsed vs. expanded sidebar) |
|
|
11
|
+
| `disabled` | `boolean` | Disables interaction and applies muted styling |
|
|
12
12
|
| `onClick` | `(item, event?) => void` | Click handler receiving the item and optional mouse event |
|
|
13
13
|
|
|
14
14
|
### `NavigationSidebarItemButton`
|
|
15
|
-
The primary
|
|
15
|
+
The primary export. Renders a `<button>` with four visual states driven by `isActive` and `disabled` combinations:
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
- **Default** — hover background, secondary text/icon colors
|
|
18
|
+
- **Active** — yellow-light background, accent left border, accent text/icon
|
|
19
|
+
- **Disabled** — reduced opacity, `cursor-not-allowed`, secondary colors
|
|
20
|
+
- **Active + Disabled** — secondary colors, no accent styling
|
|
21
|
+
|
|
22
|
+
Unread count renders as a small dot badge on the icon when collapsed, or a numbered pill (capped at `99+`) beside the label when expanded.
|
|
23
23
|
|
|
24
24
|
## Usage Example
|
|
25
25
|
|
|
@@ -31,7 +31,7 @@ const item = {
|
|
|
31
31
|
label: 'Dashboard',
|
|
32
32
|
icon: <HomeIcon />,
|
|
33
33
|
isActive: true,
|
|
34
|
-
|
|
34
|
+
unreadCount: 5,
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
<NavigationSidebarItemButton
|
|
@@ -42,4 +42,4 @@ const item = {
|
|
|
42
42
|
/>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
> **Note:**
|
|
45
|
+
> **Note:** Icon color is injected via `cloneElement`, so icons must accept a `color` prop to respond to active/disabled state changes.
|
|
@@ -1,30 +1,22 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: c0bb51dff21ce2a1f2d328b688a856a9 -->
|
|
2
|
+
A responsive, collapsible navigation sidebar component that adapts between desktop (persistent, width-animating) and tablet (overlay/drawer) layouts, persisting the desktop minimize state to `localStorage`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
7
|
|--------|------|-------------|
|
|
8
|
-
| `NavigationSidebar` | Component | Main sidebar component with responsive
|
|
8
|
+
| `NavigationSidebar` | Component | Main sidebar component with responsive behavior |
|
|
9
9
|
| `NavigationSidebarProps` | Interface | Props: `config: NavigationSidebarConfig`, `disabled?: boolean` |
|
|
10
|
-
| `MINIMIZED_WIDTH` | Constant | Collapsed width
|
|
11
|
-
| `EXPANDED_WIDTH` | Constant | Expanded width
|
|
12
|
-
| `STORAGE_KEY` | Constant | localStorage key
|
|
10
|
+
| `MINIMIZED_WIDTH` | Constant | Collapsed width — `56px` |
|
|
11
|
+
| `EXPANDED_WIDTH` | Constant | Expanded width — `224px` |
|
|
12
|
+
| `STORAGE_KEY` | Constant | `localStorage` key: `of.navigationSidebar.minimized` |
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
**Internal behavior:**
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
| `≥ lg` (desktop) | Push layout | localStorage |
|
|
21
|
-
|
|
22
|
-
### Key Internal Logic
|
|
23
|
-
|
|
24
|
-
- **`minimized`** — resolves to `tabletMinimized` or `desktopMinimized` based on viewport
|
|
25
|
-
- **`transitionsEnabled`** — deferred via `requestAnimationFrame` to prevent flash of wrong width on hydration
|
|
26
|
-
- **`isOverlayOpen`** — drives backdrop scrim visibility and `Escape` key dismissal
|
|
27
|
-
- **`primaryItems` / `secondaryItems`** — items split by `section !== 'secondary'` filter
|
|
16
|
+
- **Desktop (`lg+`)** — sidebar pushes content; minimize state persists via `localStorage`
|
|
17
|
+
- **Tablet (`md` only)** — sidebar floats as an overlay; always starts minimized (in-memory state only); backdrop scrim + `Escape` key close it
|
|
18
|
+
- **Transitions** — enabled after first hydrated paint via `useLayoutEffect` + `requestAnimationFrame` to prevent flash on load
|
|
19
|
+
- Items split into `primaryItems` and `secondaryItems` (filtered by `item.section === 'secondary'`)
|
|
28
20
|
|
|
29
21
|
## Usage Example
|
|
30
22
|
|
|
@@ -34,13 +26,28 @@ import { NavigationSidebarConfig } from '../../types/navigation'
|
|
|
34
26
|
|
|
35
27
|
const config: NavigationSidebarConfig = {
|
|
36
28
|
minimized: false,
|
|
29
|
+
onNavigate: (path) => router.push(path),
|
|
30
|
+
onToggleMinimized: () => console.log('toggled'),
|
|
37
31
|
items: [
|
|
38
32
|
{ id: 'dashboard', label: 'Dashboard', path: '/dashboard', icon: HomeIcon },
|
|
39
33
|
{ id: 'settings', label: 'Settings', path: '/settings', icon: SettingsIcon, section: 'secondary' },
|
|
40
34
|
],
|
|
41
|
-
onNavigate: (path) => router.push(path),
|
|
42
|
-
onToggleMinimized: () => console.log('toggled'),
|
|
43
35
|
}
|
|
44
36
|
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
export default function AppLayout() {
|
|
38
|
+
return (
|
|
39
|
+
<div className="relative flex h-screen">
|
|
40
|
+
<NavigationSidebar config={config} disabled={false} />
|
|
41
|
+
<main className="flex-1 overflow-auto">
|
|
42
|
+
{/* page content */}
|
|
43
|
+
</main>
|
|
44
|
+
</div>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Notes
|
|
50
|
+
|
|
51
|
+
- The parent layout container must be `position: relative` for the tablet overlay anchor to work correctly.
|
|
52
|
+
- The `disabled` prop dims all nav items but leaves the collapse toggle interactive.
|
|
53
|
+
- Source: [`navigation-sidebar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/navigation-sidebar.tsx)
|
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 9eba798cffb073c1e0f63ba366c6bd59 -->
|
|
2
|
+
Accessible animated sidebar component that slides in from the left or right edge of the viewport, with focus management, scroll locking, and nested navigation support.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
+
### `SlidingSidebar`
|
|
7
|
+
|
|
8
|
+
The primary export. Accepts a `SlidingSidebarConfig` object to control open state, position, navigation items, and lifecycle callbacks.
|
|
9
|
+
|
|
6
10
|
### `SlidingSidebarProps`
|
|
7
|
-
| Prop | Type | Description |
|
|
8
|
-
|------|------|-------------|
|
|
9
|
-
| `config` | `SlidingSidebarConfig` | Full sidebar configuration including `isOpen`, `position`, `items`, `onClose`, `footer`, and `className` |
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
```typescript
|
|
13
|
+
interface SlidingSidebarProps {
|
|
14
|
+
config: SlidingSidebarConfig // position, isOpen, onClose, items, footer, className
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Internal Helpers
|
|
19
|
+
|
|
20
|
+
- **`renderMenuItem`** — Recursively renders `NavigationItem` nodes as expandable groups (with animated `AnimatePresence` children) or leaf buttons/links. Supports custom `element` overrides, badges, icons, and active state styling.
|
|
21
|
+
- **`toggleExpanded`** — Manages a `Set<string>` of expanded parent item IDs.
|
|
17
22
|
|
|
18
|
-
###
|
|
19
|
-
Recursive renderer that handles three item variants:
|
|
20
|
-
- **Custom element** — renders `item.element` directly
|
|
21
|
-
- **Parent node** — renders a toggle button with animated `AnimatePresence` child list
|
|
22
|
-
- **Leaf node** — renders a `Button` that calls `item.onClick?.()` then `config.onClose()`
|
|
23
|
+
### Accessibility & UX Hooks
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
| Hook | Purpose |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `usePreventScroll` | Locks body scroll while the sidebar is open |
|
|
28
|
+
| `useFocusTrap` | Traps/restores focus; fires `onClose` on Escape. Non-modal (`contain: false`) so the z-50 header stays reachable |
|
|
29
|
+
| `useReducedMotion` | Collapses spring animation to instant when the OS prefers reduced motion |
|
|
30
|
+
| `useHeaderHeight` | Inserts a dynamic spacer so the panel clears the app header |
|
|
26
31
|
|
|
27
32
|
## Usage Example
|
|
28
33
|
|
|
29
34
|
```typescript
|
|
30
|
-
import { SlidingSidebar } from '
|
|
35
|
+
import { SlidingSidebar } from '@openframe/ui'
|
|
31
36
|
import { useState } from 'react'
|
|
32
37
|
|
|
33
|
-
function AppShell() {
|
|
34
|
-
const [
|
|
38
|
+
export function AppShell() {
|
|
39
|
+
const [open, setOpen] = useState(false)
|
|
35
40
|
|
|
36
41
|
return (
|
|
37
42
|
<SlidingSidebar
|
|
38
43
|
config={{
|
|
39
|
-
isOpen,
|
|
40
|
-
onClose: () =>
|
|
44
|
+
isOpen: open,
|
|
45
|
+
onClose: () => setOpen(false),
|
|
41
46
|
position: 'left',
|
|
42
47
|
items: [
|
|
43
48
|
{
|
|
@@ -55,11 +60,11 @@ function AppShell() {
|
|
|
55
60
|
],
|
|
56
61
|
},
|
|
57
62
|
],
|
|
58
|
-
footer: <
|
|
63
|
+
footer: <p className="text-sm text-ods-text-secondary">v1.0.0</p>,
|
|
59
64
|
}}
|
|
60
65
|
/>
|
|
61
66
|
)
|
|
62
67
|
}
|
|
63
68
|
```
|
|
64
69
|
|
|
65
|
-
> **
|
|
70
|
+
> **Z-index note:** The overlay sits at `z-[45]` and the panel at `z-[46]`, keeping both above the footer (`z-[44]`) but below the app header (`z-[50]`) and any modals (`z-50+`). See `ODS_TOKEN_RULES.md` for the full z-index hierarchy.
|
|
@@ -1,42 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 06a508edb80b9bce20fd7344ee3e0962 -->
|
|
2
|
+
Reusable sticky navigation component and scroll-spy hook for section-based page navigation, commonly used in vendor detail pages, knowledge base articles, and documentation layouts.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `StickySectionNav`
|
|
7
|
-
A `<nav>` component that renders a vertical list of section
|
|
7
|
+
A controlled `<nav>` component that renders a vertical list of section links with an animated active-state ribbon indicator.
|
|
8
8
|
|
|
9
9
|
**Props:**
|
|
10
10
|
|
|
11
11
|
| Prop | Type | Default | Description |
|
|
12
|
-
|
|
12
|
+
|---|---|---|---|
|
|
13
13
|
| `sections` | `StickyNavSection[]` | — | Array of `{ id, label }` nav items |
|
|
14
14
|
| `activeSection` | `string` | — | ID of the currently active section |
|
|
15
15
|
| `onSectionClick` | `(id: string) => void` | — | Click handler for nav items |
|
|
16
16
|
| `ribbonPosition` | `'left' \| 'right'` | `'left'` | Side the active ribbon renders on |
|
|
17
|
-
| `ribbonColor` | `string` | `
|
|
18
|
-
| `className` | `string` | — | Optional
|
|
17
|
+
| `ribbonColor` | `string` | `var(--color-accent-primary)` | CSS color for the active ribbon |
|
|
18
|
+
| `className` | `string` | — | Optional class override |
|
|
19
19
|
|
|
20
20
|
### `useSectionNavigation`
|
|
21
|
-
A hook that wires up scroll-spy and
|
|
21
|
+
A React hook that wires up scroll-spy detection and smooth scrolling for a set of section refs. Uses `scrollElementIntoView` internally and suppresses scroll-spy during programmatic scrolls.
|
|
22
22
|
|
|
23
|
-
**
|
|
23
|
+
**Parameters:**
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
| Param | Type | Description |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| `sections` | `{ id: string; ref: RefObject<HTMLElement> }[]` | Sections to track |
|
|
28
|
+
| `options.offset` | `number` | Scroll offset for sticky chrome (default: `100`) |
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|--------|------|---------|-------------|
|
|
29
|
-
| `offset` | `number` | `100` | Header offset in px passed to `scrollElementIntoView` |
|
|
30
|
+
**Returns:** `{ activeSection: string, handleSectionClick: (id: string) => void }`
|
|
30
31
|
|
|
31
32
|
## Usage Example
|
|
32
33
|
|
|
33
34
|
```typescript
|
|
34
|
-
const
|
|
35
|
-
const detailsRef
|
|
35
|
+
const overviewRef = useRef<HTMLElement>(null)
|
|
36
|
+
const detailsRef = useRef<HTMLElement>(null)
|
|
36
37
|
|
|
37
38
|
const sections = [
|
|
38
|
-
{ id: '
|
|
39
|
-
{ id: 'details',
|
|
39
|
+
{ id: 'overview', ref: overviewRef },
|
|
40
|
+
{ id: 'details', ref: detailsRef },
|
|
40
41
|
]
|
|
41
42
|
|
|
42
43
|
const { activeSection, handleSectionClick } = useSectionNavigation(sections, {
|
|
@@ -47,17 +48,18 @@ return (
|
|
|
47
48
|
<>
|
|
48
49
|
<StickySectionNav
|
|
49
50
|
sections={[
|
|
50
|
-
{ id: '
|
|
51
|
-
{ id: 'details',
|
|
51
|
+
{ id: 'overview', label: 'Overview' },
|
|
52
|
+
{ id: 'details', label: 'Details' },
|
|
52
53
|
]}
|
|
53
54
|
activeSection={activeSection}
|
|
54
55
|
onSectionClick={handleSectionClick}
|
|
55
56
|
ribbonPosition="left"
|
|
56
57
|
/>
|
|
57
|
-
|
|
58
|
-
<section id="
|
|
58
|
+
|
|
59
|
+
<section id="overview" ref={overviewRef}>...</section>
|
|
60
|
+
<section id="details" ref={detailsRef}>...</section>
|
|
59
61
|
</>
|
|
60
62
|
)
|
|
61
63
|
```
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
**Source:** [`sticky-section-nav.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/sticky-section-nav.tsx)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- source-hash: 32d8ecb25777faace2a4b5a46e28428a -->
|
|
2
|
+
Barrel export file for the **Onboarding Guides** product surface, scoped to the `openframe` route. Aggregates view components, skeleton loaders, and query hooks for consuming applications.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `OnboardingGuidesCatalogView` | Component | Full catalog/list view for onboarding guides |
|
|
9
|
+
| `OnboardingGuidesCatalogViewProps` | Type | Props interface for the catalog view |
|
|
10
|
+
| `OnboardingGuideDetailView` | Component | Detail/single-guide view |
|
|
11
|
+
| `OnboardingGuideDetailViewProps` | Type | Props interface for the detail view |
|
|
12
|
+
| `OnboardingGuidesCatalogSkeleton` | Component | Loading skeleton for the catalog view |
|
|
13
|
+
| `useOnboardingGuides` | Hook | Fetches a paginated list of onboarding guides |
|
|
14
|
+
| `useOnboardingGuide` | Hook | Fetches a single onboarding guide by ID |
|
|
15
|
+
| `useOnboardingGuideSections` | Hook | Fetches sections for a given guide |
|
|
16
|
+
| `onboardingGuideKeys` | Object | TanStack Query key factory for cache management |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import {
|
|
22
|
+
OnboardingGuidesCatalogView,
|
|
23
|
+
OnboardingGuideDetailView,
|
|
24
|
+
OnboardingGuidesCatalogSkeleton,
|
|
25
|
+
useOnboardingGuides,
|
|
26
|
+
} from '@flamingo-stack/openframe-oss-lib/components/onboarding-guides'
|
|
27
|
+
|
|
28
|
+
// If you need the OnboardingGuide row type, import from the chat surface:
|
|
29
|
+
import type { OnboardingGuide } from
|
|
30
|
+
'@flamingo-stack/openframe-frontend-core/components/chat'
|
|
31
|
+
|
|
32
|
+
function GuidesPage() {
|
|
33
|
+
const { data, isLoading } = useOnboardingGuides()
|
|
34
|
+
|
|
35
|
+
if (isLoading) return <OnboardingGuidesCatalogSkeleton />
|
|
36
|
+
return <OnboardingGuidesCatalogView guides={data} />
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> **⚠️ Ambiguous re-export warning:** Do **not** re-export `OnboardingGuide`, `OnboardingGuideFilters`, `OnboardingGuideListResponse`, or `OnboardingGuideSectionSummary` from this barrel. These types are already exported via `components/chat` — duplicating them causes **TS2308** at the top-level `components/index.ts` barrel. See [`shared/roadmap/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/shared/roadmap/index.ts) for the same pattern applied to `RoadmapItem`.
|