@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,48 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders the body of a `DataTable` component, handling three states: loading skeleton, empty state, and populated rows with optional padding
|
|
1
|
+
<!-- source-hash: 101c8dc656e99322ce64f23baac27a3e -->
|
|
2
|
+
Renders the body of a `DataTable` component, handling three states: loading skeleton, empty state, and populated rows — with optional row padding to maintain stable table height.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
| `DataTableBody` | Component | Main body renderer consuming `DataTableContext` |
|
|
9
|
-
| `DataTableBodyProps` | Interface | Props interface with generic row type `T` |
|
|
6
|
+
### `DataTableBody<T>`
|
|
7
|
+
The primary export. Consumes `DataTableContext` via `useDataTableContext` and conditionally renders one of three views:
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
- **Loading:** Displays `DataTableSkeleton` when `loading={true}` and rows are empty
|
|
10
|
+
- **Empty:** Renders `DataTableEmpty` using `emptyState` props (or falls back to deprecated `emptyMessage`)
|
|
11
|
+
- **Rows:** Maps each row to a `DataTableRow`, with optional sub-row expansion via `renderSubRow`
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
13
|
+
### `DataTableBodyProps<T>`
|
|
14
|
+
Full interface for configuring body behavior including:
|
|
15
|
+
|
|
16
|
+
| Prop | Purpose |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `loading` | Triggers skeleton display when data is empty |
|
|
19
|
+
| `emptyState` | `NoDataProps` for rich empty state UI |
|
|
20
|
+
| `emptyMessage` | ⚠️ Deprecated — use `emptyState` instead |
|
|
21
|
+
| `skeletonRows` | Number of skeleton rows (default: `10`) |
|
|
22
|
+
| `rowClassName` | Static string or per-row function |
|
|
23
|
+
| `onRowClick` | Row click handler (memoize with `useCallback`) |
|
|
24
|
+
| `rowHref` | Converts rows to Next.js links (ignored if `onRowClick` set) |
|
|
25
|
+
| `minRows` | Pads with invisible rows to stabilize table height |
|
|
26
|
+
| `renderSubRow` | Returns expandable content rendered below a row |
|
|
23
27
|
|
|
24
28
|
## Usage Example
|
|
25
29
|
|
|
26
30
|
```typescript
|
|
27
31
|
import { DataTable } from './data-table'
|
|
28
32
|
import { DataTableBody } from './data-table-body'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
import { DataTableColumn } from './data-table-column'
|
|
34
|
+
import { useCallback } from 'react'
|
|
35
|
+
|
|
36
|
+
function UserTable({ users, isLoading }) {
|
|
37
|
+
const handleRowClick = useCallback((user) => {
|
|
38
|
+
router.push(`/users/${user.id}`)
|
|
39
|
+
}, [])
|
|
40
|
+
|
|
41
|
+
const rowClassName = useCallback(
|
|
42
|
+
(user, index) => (index % 2 === 0 ? 'bg-muted/30' : ''),
|
|
43
|
+
[]
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<DataTable data={users} columns={columns}>
|
|
48
|
+
<DataTableBody<User>
|
|
49
|
+
loading={isLoading}
|
|
50
|
+
skeletonRows={8}
|
|
51
|
+
minRows={8}
|
|
52
|
+
compact
|
|
53
|
+
onRowClick={handleRowClick}
|
|
54
|
+
rowClassName={rowClassName}
|
|
55
|
+
emptyState={{ title: 'No users found', description: 'Try adjusting your filters.' }}
|
|
56
|
+
renderSubRow={(user) => user.notes ? <UserNotes notes={user.notes} /> : null}
|
|
57
|
+
/>
|
|
58
|
+
</DataTable>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
46
61
|
```
|
|
47
62
|
|
|
48
|
-
> **Performance
|
|
63
|
+
> **Performance note:** Always memoize `onRowClick`, `rowHref`, and function-form `rowClassName` with `useCallback` to preserve `React.memo` optimizations on `DataTableRow`.
|
|
@@ -1,47 +1,31 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 163304355d3ebe8ec3a835034f1a3713 -->
|
|
2
|
+
Renders the empty state for `DataTable.Body` when no rows are present, delegating to the shared `NoData` component with "no search results" defaults.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| Prop | Type | Default | Description |
|
|
10
|
-
|------|------|---------|-------------|
|
|
11
|
-
| `icon` | `ReactNode` | `<SearchIcon />` | Leading glyph |
|
|
12
|
-
| `title` | `ReactNode` | `'No results found'` | Primary line |
|
|
13
|
-
| `description` | `ReactNode` | `'Try adjusting your search or filters'` | Secondary line |
|
|
14
|
-
| `actions` | `NoDataActionProps[]` | — | Optional info blocks |
|
|
15
|
-
| `buttonLabel` / `button` | `ReactNode` | — | Optional footer button |
|
|
16
|
-
| `className` | `string` | — | Merged onto the `NoData` wrapper |
|
|
17
|
-
|
|
18
|
-
### `DataTableEmpty`
|
|
19
|
-
A client component that renders `NoData` with the defaults above. Pass any field to override it.
|
|
6
|
+
- **`DataTableEmpty`** — Client component that wraps `NoData`, pre-configured with a `SearchIcon`, title `"No results found"`, and description `"Try adjusting your search or filters"`. Applies `py-[var(--spacing-system-xxl)]` vertical padding by default.
|
|
7
|
+
- **`DataTableEmptyProps`** — Re-exports all `NoDataProps` fields, making every visual element overridable.
|
|
20
8
|
|
|
21
9
|
## Usage Example
|
|
22
10
|
|
|
23
11
|
```typescript
|
|
24
|
-
// Default
|
|
12
|
+
// Default empty state (search icon + default copy)
|
|
25
13
|
<DataTableEmpty />
|
|
26
14
|
|
|
27
|
-
// Override
|
|
28
|
-
<DataTableEmpty
|
|
15
|
+
// Override title and description only
|
|
16
|
+
<DataTableEmpty
|
|
17
|
+
title="No devices found"
|
|
18
|
+
description="Add a device to get started"
|
|
19
|
+
/>
|
|
29
20
|
|
|
30
|
-
// Full
|
|
21
|
+
// Full override with custom icon and action
|
|
31
22
|
<DataTableEmpty
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
icon={<ServerIcon />}
|
|
24
|
+
title="No servers available"
|
|
25
|
+
description="Provision a server to see it here"
|
|
26
|
+
buttonLabel="Add Server"
|
|
27
|
+
onButtonClick={handleAdd}
|
|
36
28
|
/>
|
|
37
29
|
```
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
// New: pass any NoData props via `emptyState`
|
|
43
|
-
<DataTable.Body emptyState={{ title: 'No devices yet', description: 'Add your first device' }} />
|
|
44
|
-
|
|
45
|
-
// Legacy (deprecated): `emptyMessage` maps to the empty state's title
|
|
46
|
-
<DataTable.Body emptyMessage="No devices match your filters" />
|
|
47
|
-
```
|
|
31
|
+
All props are passed through to [`NoData`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/no-data), so any `NoDataProps` field (`icon`, `title`, `description`, `actions`, `buttonLabel`, etc.) can be used to fully customise the empty state. The `className` prop merges with the default padding class via `cn`.
|
|
@@ -1,55 +1,58 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders the
|
|
1
|
+
<!-- source-hash: 979b80e9c2663735843d09def1e09d24 -->
|
|
2
|
+
Renders the column header row for a TanStack React Table data table, handling sorting indicators, column filters, responsive visibility, sticky positioning, and an optional right-side slot.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
Main exported component. Reads the table instance from context, renders a single header group row, and handles:
|
|
8
|
-
- **Sticky positioning** via `stickyHeader` / `stickyHeaderOffset` props
|
|
9
|
-
- **Responsive visibility** — hidden on mobile, shown from `md` breakpoint up
|
|
10
|
-
- **Right slot** — absolutely positioned when visible header cells exist, inline otherwise
|
|
6
|
+
### Interfaces
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
Stateless descriptor — the consumer owns the sort cycle and passes the current state down.
|
|
8
|
+
- **`DataTableSortState`** — Sort descriptor `{ id: string, desc: boolean }` consumed by the header to render directional icons.
|
|
9
|
+
- **`DataTableHeaderProps`** — Props for the public `DataTableHeader` component.
|
|
10
|
+
|
|
11
|
+
### Exports
|
|
12
|
+
|
|
13
|
+
- **`DataTableHeader`** — Main header component. Reads table state via `useDataTableContext`, maps header groups to `HeaderCell` instances, and handles sticky positioning and the `rightSlot`.
|
|
20
14
|
|
|
21
15
|
### Internal Components
|
|
22
16
|
|
|
23
|
-
| Component |
|
|
24
|
-
|
|
25
|
-
| `HeaderCell` | Renders
|
|
26
|
-
| `HeaderLabel` | Renders string headers with ODS typography
|
|
27
|
-
| `SortIcon` |
|
|
17
|
+
| Component | Role |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `HeaderCell` | Renders a single column header — either a `DataTableColumnFilter` (filterable columns) or a clickable sort label. Handles tablet breakpoint visibility via `meta.filter` and `meta.alwaysShowHeader`. |
|
|
20
|
+
| `HeaderLabel` | Renders string headers with ODS typography styles, or delegates to `flexRender` for render-function/ReactNode headers. |
|
|
21
|
+
| `SortIcon` | Renders `Arrow01UpIcon`, `Arrow01DownIcon`, or `SwitchVrIcon` based on current sort direction. |
|
|
22
|
+
| `resolveHeaderLabel` | Utility that extracts a plain string label from a column definition for filter placement. |
|
|
28
23
|
|
|
29
24
|
## Usage Example
|
|
30
25
|
|
|
31
26
|
```typescript
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
function
|
|
36
|
-
setSort(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
27
|
+
import { DataTableHeader } from './data-table-header'
|
|
28
|
+
import { useState } from 'react'
|
|
29
|
+
|
|
30
|
+
function MyTable() {
|
|
31
|
+
const [sort, setSort] = useState<{ id: string; desc: boolean } | null>(null)
|
|
32
|
+
|
|
33
|
+
function handleSortChange(columnId: string) {
|
|
34
|
+
setSort(prev =>
|
|
35
|
+
prev?.id === columnId
|
|
36
|
+
? prev.desc
|
|
37
|
+
? null // none → asc → desc → none cycle
|
|
38
|
+
: { id: columnId, desc: true }
|
|
39
|
+
: { id: columnId, desc: false }
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<DataTable data={rows} columns={columns}>
|
|
45
|
+
<DataTableHeader
|
|
46
|
+
stickyHeader
|
|
47
|
+
stickyHeaderOffset="top-[56px]"
|
|
48
|
+
sort={sort}
|
|
49
|
+
onSortChange={handleSortChange}
|
|
50
|
+
rightSlot={<DataTable.RowCount itemName="device" />}
|
|
51
|
+
/>
|
|
52
|
+
<DataTableBody />
|
|
53
|
+
</DataTable>
|
|
40
54
|
)
|
|
41
55
|
}
|
|
42
|
-
|
|
43
|
-
<DataTable table={table}>
|
|
44
|
-
<DataTable.Header
|
|
45
|
-
stickyHeader
|
|
46
|
-
stickyHeaderOffset="top-[56px]"
|
|
47
|
-
sort={sort}
|
|
48
|
-
onSortChange={handleSortChange}
|
|
49
|
-
rightSlot={<DataTable.RowCount itemName="device" />}
|
|
50
|
-
/>
|
|
51
|
-
<DataTable.Body />
|
|
52
|
-
</DataTable>
|
|
53
56
|
```
|
|
54
57
|
|
|
55
|
-
> **Note:** Sorting
|
|
58
|
+
> **Note:** Sorting state and cycle logic are fully consumer-owned. The header renders sort indicators from the `sort` prop and fires `onSortChange` on click — it does not call TanStack's internal sort APIs.
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders a single data table row as
|
|
1
|
+
<!-- source-hash: 3180bdfee27f541cd2cbf5aafc31dc6b -->
|
|
2
|
+
Renders a single data table row as a styled card, supporting click handlers, link navigation, compact/auto-height sizing, and optional expandable sub-row content.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
| `CellContent` | Internal component | Wraps primitive string/number values in default truncated text styling |
|
|
6
|
+
- **`DataTableRow`** — Memoized row component (wraps `DataTableRowImpl`) that renders TanStack Table cells inside a rounded card. Exported as `memo`-wrapped but typed as the original generic function.
|
|
7
|
+
- **`DataTableRowProps<T>`** — Props interface supporting `row`, `onClick`, `href`, `compact`, `autoHeight`, `className`, and `subRow`.
|
|
8
|
+
- **`CellContent`** — Internal helper that wraps primitive (`string` | `number`) cell values in truncated, styled `<span>` elements; passes React node children through unchanged.
|
|
9
|
+
- **`handleClick`** — Memoized click handler implementing the click-bubbling protocol: ignores events from portaled descendants outside the row DOM subtree and short-circuits on `[data-no-row-click]` elements.
|
|
11
10
|
|
|
12
11
|
## Click-Bubbling Protocol
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```tsx
|
|
17
|
-
// Column definition with opt-out buttons
|
|
18
|
-
{
|
|
19
|
-
id: 'actions',
|
|
20
|
-
cell: ({ row }) => (
|
|
21
|
-
<div data-no-row-click className="flex gap-2 justify-end">
|
|
22
|
-
<Button onClick={() => edit(row.original)}>Edit</Button>
|
|
23
|
-
</div>
|
|
24
|
-
),
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Portaled descendants (tooltips, dropdowns via `FloatingPortal`) are also safely ignored — clicks whose DOM target falls outside the row's `containerRef` are suppressed without needing `stopPropagation` at the source.
|
|
13
|
+
Any interactive element inside a cell that should not trigger row navigation or `onClick` must carry the `data-no-row-click` attribute.
|
|
29
14
|
|
|
30
15
|
## Usage Example
|
|
31
16
|
|
|
32
17
|
```typescript
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
18
|
+
import { DataTableRow } from './data-table-row'
|
|
19
|
+
|
|
20
|
+
// Basic click handler
|
|
21
|
+
<DataTableRow row={row} onClick={(item) => console.log(item)} />
|
|
22
|
+
|
|
23
|
+
// Link mode (full-card anchor)
|
|
24
|
+
<DataTableRow row={row} href={`/items/${row.original.id}`} />
|
|
39
25
|
|
|
40
|
-
// Link mode
|
|
26
|
+
// Link mode with sub-row (link wraps cells only)
|
|
41
27
|
<DataTableRow
|
|
42
28
|
row={row}
|
|
43
|
-
href={`/
|
|
29
|
+
href={`/items/${row.original.id}`}
|
|
30
|
+
subRow={<ExpandedDetail item={row.original} />}
|
|
44
31
|
/>
|
|
32
|
+
|
|
33
|
+
// Column with action buttons (opt out of row click)
|
|
34
|
+
const columns = [{
|
|
35
|
+
id: 'actions',
|
|
36
|
+
cell: ({ row }) => (
|
|
37
|
+
<div data-no-row-click className="flex gap-2 justify-end">
|
|
38
|
+
<Button onClick={() => edit(row.original)}>Edit</Button>
|
|
39
|
+
</div>
|
|
40
|
+
),
|
|
41
|
+
meta: { width: 'w-[160px] shrink-0', align: 'right' },
|
|
42
|
+
}]
|
|
45
43
|
```
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
## Source
|
|
46
|
+
|
|
47
|
+
[`data-table-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/data-table-row.tsx)
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 6efeba8f22609f4cc9f714e98d390080 -->
|
|
2
|
+
Extends TanStack Table's `ColumnMeta` interface with Flamingo-specific column configuration options, and exports shared filter/breakpoint types used across the data table system.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|--------|------|-------------|
|
|
8
|
-
| `TailwindBreakpoint` | Type alias | Union of responsive breakpoints: `'md' \| 'lg' \| 'xl' \| '2xl'` |
|
|
9
|
-
| `DataTableFilterOption` | Interface | Shape for individual filter dropdown options (`id`, `label`, `value`) |
|
|
10
|
-
| `ColumnMeta` (module augmentation) | Interface extension | Adds Flamingo-specific metadata fields to TanStack Table's `ColumnMeta` |
|
|
6
|
+
### Types & Interfaces
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
- **`TailwindBreakpoint`** — Union type of supported responsive breakpoints: `'md' | 'lg' | 'xl' | '2xl'`
|
|
9
|
+
- **`DataTableFilterOption`** — Shape for individual filter dropdown options, containing `id`, `label`, and `value` fields
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
### `ColumnMeta` Module Augmentation
|
|
12
|
+
|
|
13
|
+
Extends `@tanstack/react-table`'s `ColumnMeta` with:
|
|
14
|
+
|
|
15
|
+
| Property | Type | Description |
|
|
16
|
+
|---|---|---|
|
|
16
17
|
| `width` | `string` | Tailwind width class (e.g. `'w-40'`, `'flex-1 min-w-0'`) |
|
|
17
|
-
| `align` | `'left' \| 'center' \| 'right'` |
|
|
18
|
-
| `hideAt` | `TailwindBreakpoint \| TailwindBreakpoint[]` |
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
18
|
+
| `align` | `'left' \| 'center' \| 'right'` | Cell/header horizontal alignment |
|
|
19
|
+
| `hideAt` | `TailwindBreakpoint \| TailwindBreakpoint[]` | Hide column at/below specified breakpoints |
|
|
20
|
+
| `alwaysShowHeader` | `boolean` | Keep header visible on tablet even without a filter |
|
|
21
|
+
| `filter` | `{ options, placement? }` | Renders a filter dropdown with provided options |
|
|
22
|
+
| `sortable` | `boolean` | Opt-in sort indicator on header (default `false`) |
|
|
23
|
+
| `cellClassName` | `string` | Extra classes on the body cell wrapper |
|
|
24
|
+
| `headerClassName` | `string` | Extra classes on the header cell wrapper |
|
|
23
25
|
|
|
24
26
|
## Usage Example
|
|
25
27
|
|
|
@@ -32,22 +34,15 @@ const statusOptions: DataTableFilterOption[] = [
|
|
|
32
34
|
{ id: 'inactive', label: 'Inactive', value: 'inactive' },
|
|
33
35
|
]
|
|
34
36
|
|
|
35
|
-
const columns: ColumnDef<
|
|
36
|
-
{
|
|
37
|
-
accessorKey: 'name',
|
|
38
|
-
meta: {
|
|
39
|
-
width: 'flex-1 min-w-0',
|
|
40
|
-
align: 'left',
|
|
41
|
-
sortable: true,
|
|
42
|
-
hideAt: ['md', 'lg'],
|
|
43
|
-
},
|
|
44
|
-
},
|
|
37
|
+
const columns: ColumnDef<MyRow>[] = [
|
|
45
38
|
{
|
|
46
39
|
accessorKey: 'status',
|
|
47
40
|
meta: {
|
|
48
|
-
width: 'w-
|
|
41
|
+
width: 'w-32',
|
|
42
|
+
align: 'center',
|
|
43
|
+
hideAt: 'md',
|
|
44
|
+
sortable: true,
|
|
49
45
|
filter: { options: statusOptions, placement: 'bottom-start' },
|
|
50
|
-
cellClassName: 'font-medium',
|
|
51
46
|
},
|
|
52
47
|
},
|
|
53
48
|
]
|
|
@@ -1,40 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders a navigable breadcrumb trail for
|
|
1
|
+
<!-- source-hash: 9574783e479f4ebba0f4fa88058e32c3 -->
|
|
2
|
+
Renders a navigable breadcrumb trail for the file manager, displaying hierarchical path segments as clickable buttons separated by chevron icons.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`FileManagerBreadcrumb`** — Main
|
|
7
|
-
- **`
|
|
8
|
-
- **`cn`** — Utility for conditional class merging
|
|
9
|
-
|
|
10
|
-
## Props (`FileManagerBreadcrumbProps`)
|
|
11
|
-
|
|
12
|
-
| Prop | Description |
|
|
13
|
-
|------|-------------|
|
|
14
|
-
| `items` | Array of breadcrumb segments, each with a `label` and `path` |
|
|
15
|
-
| `onItemClick` | Optional callback invoked with the segment's `path` on click |
|
|
16
|
-
| `className` | Optional additional class names applied to the `<nav>` element |
|
|
17
|
-
|
|
18
|
-
## Behavior Notes
|
|
19
|
-
|
|
20
|
-
- The **last item** receives `font-medium` styling to visually indicate the current location
|
|
21
|
-
- All items use `break-all` to handle long path strings gracefully within wrapped layouts
|
|
22
|
-
- Separators use `flex-shrink-0` to prevent chevrons from collapsing in tight spaces
|
|
6
|
+
- **`FileManagerBreadcrumb`** — Main export; a `<nav>`-based breadcrumb component that maps over `items` to render path segments with `ChevronRight` separators.
|
|
7
|
+
- **`FileManagerBreadcrumbProps`** — Type contract imported from `./types`, defining `items`, `onItemClick`, and `className` props.
|
|
23
8
|
|
|
24
9
|
## Usage Example
|
|
25
10
|
|
|
26
11
|
```typescript
|
|
27
12
|
import { FileManagerBreadcrumb } from './file-manager-breadcrumb'
|
|
28
13
|
|
|
29
|
-
const
|
|
30
|
-
{ label: '
|
|
14
|
+
const breadcrumbItems = [
|
|
15
|
+
{ label: 'Root', path: '/' },
|
|
31
16
|
{ label: 'Documents', path: '/documents' },
|
|
32
17
|
{ label: 'Reports', path: '/documents/reports' },
|
|
33
18
|
]
|
|
34
19
|
|
|
35
20
|
<FileManagerBreadcrumb
|
|
36
|
-
items={
|
|
21
|
+
items={breadcrumbItems}
|
|
37
22
|
onItemClick={(path) => console.log('Navigate to:', path)}
|
|
38
|
-
className="
|
|
23
|
+
className="my-2"
|
|
39
24
|
/>
|
|
40
|
-
```
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Behavior Notes
|
|
28
|
+
|
|
29
|
+
- The **last item** receives `font-medium` styling to visually indicate the current location.
|
|
30
|
+
- `onItemClick` is optional (`?.`), so the component renders safely without a click handler.
|
|
31
|
+
- Chevron separators are suppressed for the first item (`index > 0` guard).
|
|
32
|
+
- Layout uses `flex-wrap` with `break-words`/`break-all` to handle long paths gracefully on narrow viewports.
|
|
@@ -1,35 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Empty state component for the
|
|
1
|
+
<!-- source-hash: c654fe192ed6ffc14cb84c82b7282c99 -->
|
|
2
|
+
Empty state component for the FileManager, displayed when a folder contains no files or folders.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`FileManagerEmpty`** —
|
|
6
|
+
- **`FileManagerEmpty`** — A centered empty state UI with an icon, heading, description text, and an optional call-to-action button.
|
|
7
7
|
|
|
8
8
|
### Props (`FileManagerEmptyProps`)
|
|
9
9
|
|
|
10
|
-
| Prop | Default | Description |
|
|
11
|
-
|
|
12
|
-
| `message` | `'No files or folders found'` | Primary heading text |
|
|
13
|
-
| `description` | `'This folder is empty...'` | Secondary descriptive text |
|
|
14
|
-
| `action` | `
|
|
15
|
-
| `className` | `
|
|
10
|
+
| Prop | Type | Default | Description |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| `message` | `string` | `'No files or folders found'` | Primary heading text |
|
|
13
|
+
| `description` | `string` | `'This folder is empty...'` | Secondary descriptive text |
|
|
14
|
+
| `action` | `{ label: string; onClick: () => void }` | — | Optional CTA button |
|
|
15
|
+
| `className` | `string` | — | Additional CSS classes |
|
|
16
16
|
|
|
17
17
|
## Usage Example
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
20
|
import { FileManagerEmpty } from './file-manager-empty'
|
|
21
21
|
|
|
22
|
-
// Basic usage
|
|
22
|
+
// Basic usage (defaults only)
|
|
23
23
|
<FileManagerEmpty />
|
|
24
24
|
|
|
25
25
|
// With custom message and action
|
|
26
26
|
<FileManagerEmpty
|
|
27
|
-
message="No
|
|
28
|
-
description="
|
|
27
|
+
message="No results found"
|
|
28
|
+
description="Try adjusting your search or filters."
|
|
29
29
|
action={{
|
|
30
|
-
label: 'Upload
|
|
31
|
-
onClick: () =>
|
|
30
|
+
label: 'Upload Files',
|
|
31
|
+
onClick: () => handleUpload(),
|
|
32
32
|
}}
|
|
33
33
|
className="min-h-[400px]"
|
|
34
34
|
/>
|
|
35
|
-
```
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
|
|
39
|
+
- Renders a `FolderOpen` icon (Lucide) inside a circular surface background.
|
|
40
|
+
- The `action` button uses the `accent` variant — omit the `action` prop to render a read-only empty state.
|
|
41
|
+
- Styled with ODS design tokens (`ods-bg-surface`, `ods-text-primary`, etc.) ensuring theme consistency.
|
|
42
|
+
|
|
43
|
+
**Source:** [`src/.../file-manager-empty.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/file-manager/file-manager-empty.tsx)
|
|
@@ -1,48 +1,46 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 8a43f94f3fffd8913ecdd7156f0dd6c9 -->
|
|
2
|
+
Loading state skeleton component for a file manager UI, rendering placeholder shimmer elements that mirror the layout of breadcrumbs, search bar, table headers, and file rows.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
- **FileManagerSkeletonProps** - Interface defining customization options:
|
|
8
|
-
- `rows` - Number of file rows to display (default: 8)
|
|
9
|
-
- `showSearch` - Whether to show search bar skeleton (default: true)
|
|
10
|
-
- `showActions` - Whether to show action buttons skeleton (default: true)
|
|
6
|
+
### `FileManagerSkeleton`
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
Main exported component that composes multiple `Skeleton` primitives into a full file manager loading state.
|
|
9
|
+
|
|
10
|
+
**Props (`FileManagerSkeletonProps`):**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|------|------|---------|-------------|
|
|
14
|
+
| `rows` | `number` | `8` | Number of placeholder file rows to render |
|
|
15
|
+
| `showSearch` | `boolean` | `true` | Toggles the search bar skeleton |
|
|
16
|
+
| `showActions` | `boolean` | `true` | Toggles the action buttons skeleton in the toolbar |
|
|
17
|
+
|
|
18
|
+
**Rendered regions:**
|
|
19
|
+
- **Breadcrumb bar** — three path segment skeletons with separator dots
|
|
20
|
+
- **Action buttons** — four button-sized skeletons (conditionally rendered)
|
|
21
|
+
- **Search bar** — full-width rounded input skeleton (conditionally rendered)
|
|
22
|
+
- **Table header** — checkbox, NAME, SIZE, and EDITED column labels
|
|
23
|
+
- **Table rows** — `rows` × row with checkbox, file icon, name, size, modified date, and two icon-button skeletons
|
|
18
24
|
|
|
19
25
|
## Usage Example
|
|
20
26
|
|
|
21
27
|
```typescript
|
|
22
|
-
import { FileManagerSkeleton } from '
|
|
28
|
+
import { FileManagerSkeleton } from '@/components/file-manager-skeleton'
|
|
23
29
|
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
return <FileManagerSkeleton />
|
|
27
|
-
}
|
|
30
|
+
// Default: 8 rows, search and actions visible
|
|
31
|
+
<FileManagerSkeleton />
|
|
28
32
|
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<FileManagerSkeleton
|
|
33
|
-
rows={12}
|
|
34
|
-
showSearch={false}
|
|
35
|
-
showActions={true}
|
|
36
|
-
/>
|
|
37
|
-
)
|
|
38
|
-
}
|
|
33
|
+
// Minimal: 5 rows, no search bar, no action buttons
|
|
34
|
+
<FileManagerSkeleton rows={5} showSearch={false} showActions={false} />
|
|
39
35
|
|
|
40
|
-
//
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return <FileManager files={files} />
|
|
36
|
+
// Typically used inside a Suspense boundary or conditional render
|
|
37
|
+
function FileManagerPage() {
|
|
38
|
+
return isLoading
|
|
39
|
+
? <FileManagerSkeleton rows={10} />
|
|
40
|
+
: <FileManager files={files} />
|
|
47
41
|
}
|
|
48
|
-
```
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Source
|
|
45
|
+
|
|
46
|
+
[`file-manager-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/file-manager-skeleton.tsx)
|