@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,49 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 697a56bf02c863691fb32cd7dc26e986 -->
|
|
2
|
+
A React component that renders a square or round avatar with image support, authenticated image resolution, and an initials-based fallback when no image is available or fails to load.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `SquareAvatarProps`
|
|
7
|
-
Extends `React.HTMLAttributes<HTMLDivElement>` with:
|
|
8
7
|
|
|
9
8
|
| Prop | Type | Default | Description |
|
|
10
|
-
|
|
11
|
-
| `src` | `string` | — | Image URL |
|
|
12
|
-
| `alt` | `string` | — |
|
|
13
|
-
| `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` |
|
|
14
|
-
| `
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| `src` | `string` | — | Image URL (resolved through auth hook) |
|
|
11
|
+
| `alt` | `string` | — | Alt text; also used to derive initials fallback |
|
|
12
|
+
| `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Named size bucket |
|
|
13
|
+
| `sizePx` | `number` | — | Exact pixel size; overrides `size` |
|
|
14
|
+
| `fallback` | `string` | — | String used to derive initials (takes priority over `alt`) |
|
|
15
15
|
| `variant` | `'square' \| 'round'` | `'square'` | Border radius style |
|
|
16
|
+
| `initialsClassName` | `string` | — | Tailwind overrides for initials font/color |
|
|
16
17
|
|
|
17
|
-
###
|
|
18
|
-
A memoized, forwarded-ref component that renders an image with automatic graceful degradation to initials on load error or missing `src`.
|
|
18
|
+
### Exports
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
- **`SquareAvatar`** — Memoized, forwarded-ref `div` wrapping an authed `Image` and an initials layer.
|
|
21
21
|
|
|
22
22
|
## Usage Example
|
|
23
23
|
|
|
24
24
|
```typescript
|
|
25
|
-
|
|
25
|
+
import { SquareAvatar } from "@openframe/ui";
|
|
26
|
+
|
|
27
|
+
// Basic image avatar
|
|
26
28
|
<SquareAvatar
|
|
27
|
-
src="https://example.com/
|
|
29
|
+
src="https://cdn.example.com/user.jpg"
|
|
28
30
|
alt="Jane Doe"
|
|
29
|
-
size="
|
|
30
|
-
variant="round"
|
|
31
|
+
size="md"
|
|
31
32
|
/>
|
|
32
33
|
|
|
33
|
-
// Initials-only
|
|
34
|
+
// Initials-only fallback
|
|
34
35
|
<SquareAvatar
|
|
35
36
|
fallback="Jane Doe"
|
|
36
|
-
size="
|
|
37
|
-
variant="
|
|
37
|
+
size="sm"
|
|
38
|
+
variant="round"
|
|
38
39
|
/>
|
|
39
40
|
|
|
40
|
-
//
|
|
41
|
-
const ref = React.useRef<HTMLDivElement>(null);
|
|
41
|
+
// Exact pixel size with custom initials styling
|
|
42
42
|
<SquareAvatar
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
className="ring-2 ring-ods-flamingo-pink"
|
|
43
|
+
src={user.avatarUrl}
|
|
44
|
+
alt={user.name}
|
|
45
|
+
sizePx={28}
|
|
46
|
+
initialsClassName="text-[10px] text-white"
|
|
48
47
|
/>
|
|
49
|
-
```
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Fallback behaviour:** if `src` is absent or the image fires an `onError` event, the initials layer (derived via `getFirstLastInitials`) becomes visible. The initials color resolves through the CSS variable `--ods-avatar-initials`, falling back to `--color-text-primary`, so host themes can supply a contrast-correct value without breaking unstyled avatars.
|
|
51
|
+
|
|
52
|
+
**Source:** [`square-avatar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/square-avatar.tsx)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!-- source-hash: 4d62db34d742074664628fd26198e37d -->
|
|
2
|
+
A bordered card component that stacks rows vertically, supporting full-width title rows, multi-column data rows, and arbitrary content rows with ODS-compliant styling.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `StackedRowsPanel` | Component | Root container; renders an optional uppercase title above a bordered, rounded card |
|
|
9
|
+
| `PanelColumn` | Interface | Defines a single column cell with `value`, `label`, `icon`, `leadingIcon`, `href`, `width`, `align`, and `hideAt` |
|
|
10
|
+
| `PanelRow` | Interface | Defines a row with either `columns` (1 = full-width, N = multi-column) or arbitrary `content` |
|
|
11
|
+
| `StackedRowsPanelProps` | Interface | Props for `StackedRowsPanel`: `rows`, optional `title`, optional `className` |
|
|
12
|
+
| `PanelColumnAlign` | Type | `"left" \| "center" \| "right"` |
|
|
13
|
+
| `PanelHideAt` | Type | `"md" \| "lg" \| "xl"` — responsive column visibility breakpoints |
|
|
14
|
+
| `CellValue` | Internal | Renders the `value` (h4) + `label` (h6) pair with optional inline icon and link |
|
|
15
|
+
| `PanelCell` | Internal | Resolves layout variant: custom `content`, `leadingIcon` banner, or standard value/label stack |
|
|
16
|
+
| `PanelRowView` | Internal | Switches between full-width, multi-column, and arbitrary-content row layouts |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { StackedRowsPanel } from "@/components/stacked-rows-panel"
|
|
22
|
+
import { Tag } from "@/components/tag"
|
|
23
|
+
|
|
24
|
+
// Multi-column detail card with an optional title
|
|
25
|
+
<StackedRowsPanel
|
|
26
|
+
title="Device Summary"
|
|
27
|
+
rows={[
|
|
28
|
+
{
|
|
29
|
+
id: "header",
|
|
30
|
+
columns: [
|
|
31
|
+
{
|
|
32
|
+
key: "device-name",
|
|
33
|
+
value: "MacBook Pro 16",
|
|
34
|
+
label: "Device Name",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "details",
|
|
40
|
+
columns: [
|
|
41
|
+
{ key: "os", value: "macOS 14.4", label: "Operating System" },
|
|
42
|
+
{ key: "status", value: <Tag variant="success">Online</Tag>, label: "Status" },
|
|
43
|
+
{ key: "owner", value: "Jane Smith", label: "Assigned To", hideAt: "md" },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "external",
|
|
48
|
+
columns: [
|
|
49
|
+
{
|
|
50
|
+
key: "docs",
|
|
51
|
+
value: "View Docs",
|
|
52
|
+
label: "External Link",
|
|
53
|
+
href: "https://flamingo.run/docs",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
]}
|
|
58
|
+
/>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Source:** [`stacked-rows-panel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/stacked-rows-panel.tsx)
|
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 0935f3d6a806783b496a5b5cb096c40a -->
|
|
2
|
+
Reusable status badge component implementing the OpenFrame Design System (ODS) badge specifications, with support for multiple color schemes, density variants, and a dedicated OpenFrame generation mode.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
### `StatusBadge` (default export)
|
|
7
|
+
A polymorphic `<span>`-based badge component built with `class-variance-authority`. Supports two density variants and multiple semantic color schemes, including border-only styles for task-type badges.
|
|
8
|
+
|
|
9
|
+
### `statusBadgeVariants`
|
|
10
|
+
CVA variant configuration exposing two axes:
|
|
11
|
+
- **`variant`**: `card` (standalone, full ODS caption composite) | `button` (dense inline stamp, 10px scale)
|
|
12
|
+
- **`colorScheme`**: `cyan` | `pink` | `yellow` | `green` | `purple` | `success` | `error` | `warning` | `default` | `accentBorder` | `errorBorder` | `whiteBorder`
|
|
13
|
+
|
|
14
|
+
### `genBadgeBgOpacity(gen: number): number`
|
|
15
|
+
Returns the accent background opacity (%) for a given OpenFrame generation tier. Gen 1 is strongest (30%), fading progressively for later generations.
|
|
16
|
+
|
|
17
|
+
### `generationTierFromLabel(label: string | null | undefined): number`
|
|
18
|
+
Parses a whole-number generation tier from a ClickUp Target Version label (e.g. `"Gen1.5"` → `1`). Fractional gens share their tier's tint.
|
|
11
19
|
|
|
12
20
|
## Usage Example
|
|
13
21
|
|
|
14
22
|
```typescript
|
|
15
|
-
import { StatusBadge } from './status-badge';
|
|
23
|
+
import { StatusBadge, generationTierFromLabel } from './status-badge';
|
|
16
24
|
|
|
17
|
-
//
|
|
25
|
+
// Semantic color scheme
|
|
18
26
|
<StatusBadge text="Active" colorScheme="success" />
|
|
19
27
|
|
|
20
|
-
//
|
|
21
|
-
<StatusBadge text="TO DO" variant="button" colorScheme="
|
|
22
|
-
|
|
23
|
-
// Compact button badge, single line (inline chat context)
|
|
24
|
-
<StatusBadge text="IN PROGRESS" variant="button" colorScheme="cyan" singleLine />
|
|
25
|
-
|
|
26
|
-
// Border-only accent badge (task type)
|
|
27
|
-
<StatusBadge text="BUG" colorScheme="errorBorder" />
|
|
28
|
+
// Dense inline stamp with multi-word stacking
|
|
29
|
+
<StatusBadge text="TO DO" variant="button" colorScheme="default" />
|
|
28
30
|
|
|
29
|
-
//
|
|
30
|
-
<StatusBadge text="
|
|
31
|
-
```
|
|
31
|
+
// Inline stamp, single line (no vertical stacking)
|
|
32
|
+
<StatusBadge text="TO DO" variant="button" singleLine />
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
// Generation chip (overrides colorScheme)
|
|
35
|
+
<StatusBadge
|
|
36
|
+
text="Gen2"
|
|
37
|
+
variant="button"
|
|
38
|
+
gen={generationTierFromLabel("Gen2")}
|
|
39
|
+
/>
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
// Border-only task type badge
|
|
42
|
+
<StatusBadge text="Bug" colorScheme="errorBorder" />
|
|
43
|
+
```
|
|
@@ -1,35 +1,49 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: f8c79cfcf658780fb28170a6d9b4181f -->
|
|
2
|
+
A client-side React component that renders a colored status dot paired with a label, optionally wrapped in an external link.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
### `StatusIndicatorProps`
|
|
7
|
+
|
|
8
|
+
| Prop | Type | Required | Description |
|
|
9
|
+
|------|------|----------|-------------|
|
|
10
|
+
| `status` | `'success' \| 'pending' \| 'error' \| 'missing'` | ✅ | Determines dot and text color |
|
|
11
|
+
| `label` | `string` | ✅ | Display text next to the dot |
|
|
12
|
+
| `href` | `string` | ❌ | If provided, wraps the indicator in an external `<a>` tag |
|
|
13
|
+
|
|
14
|
+
### `StatusIndicator`
|
|
15
|
+
|
|
16
|
+
Maps each status to ODS design token classes:
|
|
17
|
+
|
|
18
|
+
| Status | Color Token |
|
|
19
|
+
|--------|-------------|
|
|
20
|
+
| `success` | `ods-success` (green) |
|
|
21
|
+
| `pending` | `ods-warning` (yellow) |
|
|
22
|
+
| `error` | `ods-error` (red) |
|
|
23
|
+
| `missing` | `ods-warning` (yellow) |
|
|
9
24
|
|
|
10
25
|
## Usage Example
|
|
11
26
|
|
|
12
27
|
```typescript
|
|
13
|
-
|
|
28
|
+
// Static status display
|
|
29
|
+
<StatusIndicator status="success" label="Connected" />
|
|
14
30
|
|
|
15
|
-
//
|
|
16
|
-
<StatusIndicator status="
|
|
31
|
+
// Error state
|
|
32
|
+
<StatusIndicator status="error" label="Service Unavailable" />
|
|
17
33
|
|
|
18
|
-
//
|
|
19
|
-
<StatusIndicator
|
|
20
|
-
status="
|
|
21
|
-
label="
|
|
22
|
-
href="https://
|
|
34
|
+
// Clickable indicator linking to an external resource
|
|
35
|
+
<StatusIndicator
|
|
36
|
+
status="pending"
|
|
37
|
+
label="Awaiting Approval"
|
|
38
|
+
href="https://dashboard.example.com/approvals/123"
|
|
23
39
|
/>
|
|
24
40
|
|
|
25
|
-
//
|
|
26
|
-
<StatusIndicator status="
|
|
27
|
-
<StatusIndicator status="missing" label="Configuration Required" />
|
|
41
|
+
// Missing configuration
|
|
42
|
+
<StatusIndicator status="missing" label="API Key Not Set" />
|
|
28
43
|
```
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
- **Success**: Green dot and text
|
|
32
|
-
- **Pending/Missing**: Orange dot and text
|
|
33
|
-
- **Error**: Red dot and text
|
|
45
|
+
## Notes
|
|
34
46
|
|
|
35
|
-
|
|
47
|
+
- Uses `"use client"` — must run in a browser context (Next.js App Router).
|
|
48
|
+
- The `href` variant opens in a new tab with `rel="noopener noreferrer"` for security.
|
|
49
|
+
- Color tokens (`ods-success`, `ods-warning`, `ods-error`) are defined in the ODS (OpenFrame Design System) Tailwind config. Ensure the theme is loaded in your Tailwind setup.
|
|
@@ -1,39 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 7db2c87fb86524e2e57b6d346f5a61f2 -->
|
|
2
|
+
Renders a dynamic tab panel by mounting a given React component or displaying a configurable empty state when no matching tab component is found.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
6
|
+
### `TabContent`
|
|
7
|
+
A client-side React component that conditionally renders a tab's content component or a fallback empty state UI.
|
|
8
|
+
|
|
9
|
+
**Props (`TabContentProps`):**
|
|
10
|
+
|
|
11
|
+
| Prop | Type | Default | Description |
|
|
12
|
+
|------|------|---------|-------------|
|
|
13
|
+
| `activeTab` | `string` | — | Name of the currently active tab (used in fallback message) |
|
|
14
|
+
| `TabComponent` | `React.ComponentType<any> \| null` | — | Component to render; `null` triggers the empty state |
|
|
15
|
+
| `componentProps` | `any` | — | Props spread into `TabComponent` when rendered |
|
|
16
|
+
| `className` | `string` | — | Additional CSS classes for the wrapper |
|
|
17
|
+
| `emptyStateTitle` | `string` | `"Tab Not Found"` | Heading shown in the empty state |
|
|
18
|
+
| `emptyStateDescription` | `string` | — | Custom message; defaults to `"The selected tab '...' could not be found."` |
|
|
19
|
+
| `minHeight` | `string` | `"min-h-[400px]"` | Tailwind min-height applied to the wrapper and empty state container |
|
|
9
20
|
|
|
10
21
|
## Usage Example
|
|
11
22
|
|
|
12
23
|
```typescript
|
|
13
24
|
import { TabContent } from './tab-content'
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
+
import { OverviewPanel } from './panels/OverviewPanel'
|
|
26
|
+
|
|
27
|
+
const TAB_MAP: Record<string, React.ComponentType<any>> = {
|
|
28
|
+
overview: OverviewPanel,
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function MyTabs({ activeTab }: { activeTab: string }) {
|
|
32
|
+
const TabComponent = TAB_MAP[activeTab] ?? null
|
|
33
|
+
|
|
25
34
|
return (
|
|
26
35
|
<TabContent
|
|
27
36
|
activeTab={activeTab}
|
|
28
|
-
TabComponent={
|
|
37
|
+
TabComponent={TabComponent}
|
|
29
38
|
componentProps={{ userId: '123' }}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
minHeight="min-h-[500px]"
|
|
39
|
+
emptyStateTitle="Panel Unavailable"
|
|
40
|
+
emptyStateDescription="Please select a valid tab from the navigation."
|
|
41
|
+
minHeight="min-h-[600px]"
|
|
34
42
|
/>
|
|
35
43
|
)
|
|
36
44
|
}
|
|
37
45
|
```
|
|
38
46
|
|
|
39
|
-
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- Marked `'use client'` — requires a Next.js App Router client boundary.
|
|
50
|
+
- Uses [`cn`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/utils/cn.ts) for conditional Tailwind class merging.
|
|
51
|
+
- The empty state is centered both vertically and horizontally within the min-height container.
|
|
@@ -1,73 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Accessible, scrollable tab navigation component with optional URL synchronization
|
|
1
|
+
<!-- source-hash: 4f81360202d7fa9875b28cdae48c29a5 -->
|
|
2
|
+
Accessible, scrollable tab navigation bar component with optional URL synchronization, overflow scroll shadows, and support for both controlled and URL-driven active tab state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `TabNavigation`
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| `
|
|
21
|
-
|
|
7
|
+
The primary exported component that renders a horizontal scrollable tab strip. Supports two operating modes:
|
|
8
|
+
- **Controlled mode** — driven by `activeTab` / `onTabChange` props
|
|
9
|
+
- **URL sync mode** — reads/writes the active tab from search params (e.g. `?tab=overview`), enabling deep linking and browser back/forward navigation
|
|
10
|
+
|
|
11
|
+
### `TabItem`
|
|
12
|
+
Interface describing each tab entry:
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required | Description |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `id` | `string` | ✅ | Unique identifier used in state and URL |
|
|
17
|
+
| `label` | `string` | ✅ | Visible tab text |
|
|
18
|
+
| `icon` | `SVGComponent` | ❌ | Icon rendered beside the label |
|
|
19
|
+
| `indicator` | `'success' \| 'warning' \| 'error'` | ❌ | Status badge dot |
|
|
20
|
+
| `component` | `ComponentType` | ❌ | Optional content component reference |
|
|
21
|
+
|
|
22
|
+
### `TabNavigationUrlSyncOptions`
|
|
23
|
+
Configuration object for URL synchronization:
|
|
24
|
+
- `paramName` — query param name (default: `'tab'`)
|
|
25
|
+
- `replaceState` — use `history.replace` instead of `push` (default: `true`)
|
|
22
26
|
|
|
23
27
|
## Usage Example
|
|
24
28
|
|
|
25
|
-
**Controlled mode (no URL sync):**
|
|
26
|
-
|
|
27
29
|
```typescript
|
|
28
|
-
|
|
29
|
-
import { HomeIcon, SettingsIcon } from 'lucide-react'
|
|
30
|
-
|
|
31
|
-
const tabs: TabItem[] = [
|
|
32
|
-
{ id: 'home', label: 'Home', icon: HomeIcon },
|
|
33
|
-
{ id: 'settings', label: 'Settings', icon: SettingsIcon, indicator: 'warning' },
|
|
34
|
-
]
|
|
35
|
-
|
|
30
|
+
// Controlled mode
|
|
36
31
|
<TabNavigation
|
|
37
|
-
tabs={
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
**URL sync mode (persists active tab in query string):**
|
|
32
|
+
tabs={[
|
|
33
|
+
{ id: 'overview', label: 'Overview' },
|
|
34
|
+
{ id: 'settings', label: 'Settings', indicator: 'warning' },
|
|
35
|
+
]}
|
|
36
|
+
activeTab={currentTab}
|
|
37
|
+
onTabChange={setCurrentTab}
|
|
38
|
+
/>
|
|
46
39
|
|
|
47
|
-
|
|
40
|
+
// URL sync mode with render prop
|
|
48
41
|
<TabNavigation
|
|
49
42
|
tabs={tabs}
|
|
50
|
-
urlSync={{ paramName: '
|
|
51
|
-
defaultTab="
|
|
43
|
+
urlSync={{ paramName: 'tab', replaceState: true }}
|
|
44
|
+
defaultTab="overview"
|
|
52
45
|
>
|
|
53
|
-
{(activeTab) => <
|
|
46
|
+
{(activeTab) => <ContentPanel tab={activeTab} />}
|
|
54
47
|
</TabNavigation>
|
|
55
|
-
```
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
49
|
+
// Stretched tabs with forced gradients
|
|
60
50
|
<TabNavigation
|
|
61
51
|
tabs={tabs}
|
|
52
|
+
stretchTabs
|
|
62
53
|
showRightGradient
|
|
63
54
|
shadowClassName="from-black"
|
|
64
|
-
urlSync
|
|
65
55
|
/>
|
|
66
56
|
```
|
|
67
57
|
|
|
68
|
-
##
|
|
58
|
+
## Notes
|
|
69
59
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
- `
|
|
60
|
+
- Horizontal mouse wheel scrolling is intercepted and normalized across deltaMode variants (pixel, line, page)
|
|
61
|
+
- On mount, the active tab snaps instantly into view (`auto`); subsequent changes scroll smoothly
|
|
62
|
+
- Left/right fade gradients appear automatically on overflow, or can be forced via `showLeftGradient` / `showRightGradient`
|
|
63
|
+
- Source: [`tab-navigation.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tab-navigation.tsx)
|
|
@@ -1,40 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 3ee9242b5f7936c8afca1ad57b705677 -->
|
|
2
|
+
A styled tab selector component that renders a group of toggle buttons for switching between named views or modes, supporting icons, badges, two visual variants, and disabled states.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
### `TabSelectorItem`
|
|
7
|
+
Configuration object for each tab button:
|
|
8
|
+
|
|
9
|
+
| Property | Type | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `id` | `string` | Unique identifier |
|
|
12
|
+
| `label` | `string?` | Display text (omit for icon-only tabs) |
|
|
13
|
+
| `ariaLabel` | `string?` | Required when `label` is omitted |
|
|
14
|
+
| `icon` | `ReactNode?` | Leading icon |
|
|
15
|
+
| `disabled` | `boolean?` | Disables this specific tab |
|
|
16
|
+
| `badge` | `ReactNode?` | Trailing badge element |
|
|
17
|
+
|
|
18
|
+
### `TabSelectorProps`
|
|
19
|
+
| Property | Type | Description |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `value` | `string` | Currently selected tab id |
|
|
22
|
+
| `onValueChange` | `(value: string) => void` | Selection change handler |
|
|
23
|
+
| `items` | `TabSelectorItem[]` | Tabs to render |
|
|
24
|
+
| `variant` | `'primary' \| 'secondary'` | Active tab highlight style (default: `'primary'`) |
|
|
25
|
+
| `label` | `string?` | Optional heading above the selector |
|
|
26
|
+
| `disabled` | `boolean?` | Disables the entire selector |
|
|
27
|
+
| `className` | `string?` | Additional root container classes |
|
|
28
|
+
|
|
29
|
+
### `TabSelector`
|
|
30
|
+
The exported component. Renders a pill-style container with flex buttons — active tab receives accent background (`primary`) or surface background (`secondary`); inactive tabs are transparent with hover state.
|
|
12
31
|
|
|
13
32
|
## Usage Example
|
|
14
33
|
|
|
15
34
|
```typescript
|
|
16
|
-
import { TabSelector } from './tab-selector'
|
|
35
|
+
import { TabSelector, TabSelectorItem } from './tab-selector'
|
|
17
36
|
import { LayoutGrid, List } from 'lucide-react'
|
|
18
37
|
|
|
19
|
-
const [
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| `disabled` | `undefined` | Disables all tabs when set; overrides per-item `disabled` |
|
|
40
|
-
| `ariaLabel` | — | Required on items where `label` is omitted (icon-only) |
|
|
38
|
+
const tabs: TabSelectorItem[] = [
|
|
39
|
+
{ id: 'grid', label: 'Grid', icon: <LayoutGrid /> },
|
|
40
|
+
{ id: 'list', label: 'List', icon: <List /> },
|
|
41
|
+
{ id: 'archive', label: 'Archive', disabled: true },
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
function ViewToggle() {
|
|
45
|
+
const [view, setView] = React.useState('grid')
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<TabSelector
|
|
49
|
+
value={view}
|
|
50
|
+
onValueChange={setView}
|
|
51
|
+
items={tabs}
|
|
52
|
+
variant="secondary"
|
|
53
|
+
label="View"
|
|
54
|
+
/>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
```
|
|
@@ -1,41 +1,54 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 41600349bb11b006dae1275c44f0e683 -->
|
|
2
|
+
A **deprecated** Radix UI-based tabs component set that wraps `@radix-ui/react-tabs` with legacy shadcn/ui styling tokens. All exports are marked for migration to `TabNavigation` from `components/ui/tab-navigation`.
|
|
3
|
+
|
|
4
|
+
> ⚠️ **Deprecated:** Do not use in new code. Migrate to [`TabNavigation`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/tab-navigation.tsx) which provides ODS tokens, URL-sync, and overflow scroll shadows.
|
|
3
5
|
|
|
4
6
|
## Key Components
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
| Export | Type | Description |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `Tabs` | Component | Root wrapper — alias for `TabsPrimitive.Root` |
|
|
11
|
+
| `TabsList` | Component | Container for tab trigger buttons; styled with `bg-muted` and `rounded-md` |
|
|
12
|
+
| `TabsTrigger` | Component | Individual tab button; applies active-state background and shadow via `data-[state=active]` |
|
|
13
|
+
| `TabsContent` | Component | Panel rendered when its associated trigger is active |
|
|
14
|
+
|
|
15
|
+
All components forward refs and accept the full props of their underlying Radix primitive.
|
|
10
16
|
|
|
11
17
|
## Usage Example
|
|
12
18
|
|
|
13
19
|
```typescript
|
|
14
|
-
import { Tabs, TabsList, TabsTrigger, TabsContent } from "./
|
|
20
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs"
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
// ⚠️ Deprecated — use TabNavigation for new code
|
|
23
|
+
export function LegacyTabExample() {
|
|
17
24
|
return (
|
|
18
|
-
<Tabs defaultValue="overview"
|
|
25
|
+
<Tabs defaultValue="overview">
|
|
19
26
|
<TabsList>
|
|
20
27
|
<TabsTrigger value="overview">Overview</TabsTrigger>
|
|
21
|
-
<TabsTrigger value="
|
|
22
|
-
<TabsTrigger value="settings">Settings</TabsTrigger>
|
|
28
|
+
<TabsTrigger value="details">Details</TabsTrigger>
|
|
23
29
|
</TabsList>
|
|
24
|
-
|
|
30
|
+
|
|
25
31
|
<TabsContent value="overview">
|
|
26
|
-
<
|
|
32
|
+
<p>Overview content</p>
|
|
27
33
|
</TabsContent>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<div>Analytics dashboard</div>
|
|
31
|
-
</TabsContent>
|
|
32
|
-
|
|
33
|
-
<TabsContent value="settings">
|
|
34
|
-
<div>Settings panel</div>
|
|
34
|
+
<TabsContent value="details">
|
|
35
|
+
<p>Details content</p>
|
|
35
36
|
</TabsContent>
|
|
36
37
|
</Tabs>
|
|
37
38
|
)
|
|
38
39
|
}
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
## Migration
|
|
43
|
+
|
|
44
|
+
Replace with `TabNavigation` from `components/ui/tab-navigation`:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// Before (deprecated)
|
|
48
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs"
|
|
49
|
+
|
|
50
|
+
// After
|
|
51
|
+
import { TabNavigation } from "components/ui/tab-navigation"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Source:** [`tabs.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/tabs.tsx)
|