@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,54 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A selectable button component that supports icons, images, tags, and
|
|
1
|
+
<!-- source-hash: 74eb7379842105cc594b84564c93e6f2 -->
|
|
2
|
+
A selectable button component built with `React.forwardRef` that supports rich content including icons, images, tags, and descriptions, with distinct selected/unselected visual states.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `SelectButtonProps`
|
|
7
7
|
| Prop | Type | Description |
|
|
8
8
|
|------|------|-------------|
|
|
9
|
-
| `title` | `string` |
|
|
10
|
-
| `description` | `string` | Optional subtitle
|
|
11
|
-
| `selected` | `boolean` |
|
|
12
|
-
| `disabled` | `boolean` | Disables interaction and
|
|
9
|
+
| `title` | `string` | Required button label |
|
|
10
|
+
| `description` | `string` | Optional subtitle (visible on `md+` breakpoints) |
|
|
11
|
+
| `selected` | `boolean` | Toggles active/highlighted state |
|
|
12
|
+
| `disabled` | `boolean` | Disables interaction and dims the button |
|
|
13
13
|
| `icon` | `React.ReactNode` | Optional leading icon |
|
|
14
14
|
| `image` | `{ src, alt }` | Optional thumbnail image |
|
|
15
|
-
| `tag` | `string` | Optional badge label
|
|
16
|
-
| `tagVariant` | `TagProps['variant']` |
|
|
15
|
+
| `tag` | `string` | Optional `Tag` badge label |
|
|
16
|
+
| `tagVariant` | `TagProps['variant']` | Badge variant, defaults to `"outline"` |
|
|
17
17
|
| `onClick` | `() => void` | Click handler |
|
|
18
|
-
| `className` | `string` | Additional CSS
|
|
18
|
+
| `className` | `string` | Additional CSS overrides |
|
|
19
19
|
|
|
20
20
|
### `SelectButton`
|
|
21
|
-
A
|
|
21
|
+
A forwarded-ref `<button>` with `role="option"` and `aria-selected`, suitable for use inside listbox-style selection UIs. Renders a `CheckCircleIcon` when selected.
|
|
22
22
|
|
|
23
23
|
## Usage Example
|
|
24
24
|
|
|
25
25
|
```typescript
|
|
26
26
|
import { SelectButton } from './select-button'
|
|
27
|
-
import { ServerIcon } from '../icons
|
|
27
|
+
import { ServerIcon } from '../icons'
|
|
28
28
|
|
|
29
|
-
// Basic selectable option
|
|
30
29
|
<SelectButton
|
|
31
|
-
title="
|
|
32
|
-
description="
|
|
33
|
-
selected={selectedPlan === 'standard'}
|
|
34
|
-
onClick={() => setSelectedPlan('standard')}
|
|
35
|
-
/>
|
|
36
|
-
|
|
37
|
-
// With icon and tag
|
|
38
|
-
<SelectButton
|
|
39
|
-
title="Enterprise Plan"
|
|
40
|
-
description="Unlimited devices"
|
|
30
|
+
title="Production Server"
|
|
31
|
+
description="us-east-1 · 4 vCPU"
|
|
41
32
|
icon={<ServerIcon />}
|
|
42
|
-
|
|
33
|
+
image={{ src: "/logos/aws.png", alt: "AWS" }}
|
|
34
|
+
tag="Recommended"
|
|
43
35
|
tagVariant="solid"
|
|
44
|
-
selected={
|
|
45
|
-
onClick={() =>
|
|
36
|
+
selected={selectedId === 'prod'}
|
|
37
|
+
onClick={() => setSelectedId('prod')}
|
|
46
38
|
/>
|
|
39
|
+
```
|
|
47
40
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
image={{ src: '/logos/acme.png', alt: 'Acme Corp logo' }}
|
|
52
|
-
selected={true}
|
|
53
|
-
/>
|
|
54
|
-
```
|
|
41
|
+
> **Accessibility note:** Wrap multiple `SelectButton` instances in a container with `role="listbox"` to form a complete ARIA listbox pattern.
|
|
42
|
+
|
|
43
|
+
**Source:** [`select-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/select-button.tsx)
|
|
@@ -1,51 +1,64 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: d142e47d8c6e07ffbb045420607beaf0 -->
|
|
2
|
+
Renders a combined SEO metadata editor and live social media preview card, providing inline character-count validation and AI confidence indicators for SEO title, description, and keywords fields, plus OG image upload/display.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `SEOEditorPreview` (default export)
|
|
7
|
-
The main component rendering a two-panel layout:
|
|
8
|
-
- **Editor fields** — SEO title, description, keywords, and OG image upload
|
|
9
|
-
- **Live OG card preview** — real-time social media card simulation
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
A client-side React component that combines three responsibilities:
|
|
9
|
+
|
|
10
|
+
- **SEO field editing** — `Input`/`Textarea` fields for `seoTitle`, `seoDescription`, and `seoKeywords`, each with character-count tracking and length-limit warnings sourced from `SEO_TITLE_MAX_LENGTH` and `SEO_DESCRIPTION_MAX_LENGTH` constants.
|
|
11
|
+
- **OG image management** — upload via `onOgImageUpload`, display with hover-to-replace/remove controls, and automatic fallback to `featuredImage` when no OG image is set.
|
|
12
|
+
- **Live social preview** — a "Social Media Preview" card reflecting display fallbacks (`seoTitle → title`, `seoDescription → summary`, `ogImageUrl → featuredImage`).
|
|
13
|
+
|
|
14
|
+
### `SEOEditorPreviewProps`
|
|
15
|
+
|
|
12
16
|
| Prop | Type | Description |
|
|
13
|
-
|
|
17
|
+
|---|---|---|
|
|
14
18
|
| `seoTitle` / `seoDescription` / `seoKeywords` / `ogImageUrl` | `string` | Controlled SEO field values |
|
|
15
19
|
| `title` / `summary` / `featuredImage` | `string` | Auto-populate fallback sources |
|
|
16
|
-
| `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` |
|
|
17
|
-
| `onOgImageUpload` | `(file: File) => Promise<string>` |
|
|
18
|
-
| `aiConfidenceSeo*` | `number` (optional) |
|
|
19
|
-
| `domain` | `string` | Preview domain
|
|
20
|
-
| `disabled` | `boolean` | Disables all
|
|
21
|
-
|
|
22
|
-
### Internal State
|
|
23
|
-
- `imageError` — falls back to placeholder when OG image fails to load
|
|
24
|
-
- `isUploading` — shows `Loader2` spinner during file upload
|
|
25
|
-
- `fileInputRef` — ref to hidden `<input type="file">` for programmatic click
|
|
20
|
+
| `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` | Controlled change handlers |
|
|
21
|
+
| `onOgImageUpload` | `(file: File) => Promise<string>` | Parent-supplied upload handler |
|
|
22
|
+
| `aiConfidenceSeo*` | `number` (optional) | Triggers `AIGeneratedBadge` + `ConfidenceBadge` |
|
|
23
|
+
| `domain` | `string` | Preview domain (default: `'openmsp.ai'`) |
|
|
24
|
+
| `disabled` | `boolean` | Disables all interactive controls |
|
|
26
25
|
|
|
27
26
|
## Usage Example
|
|
28
27
|
|
|
29
28
|
```typescript
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
onOgImageUrlChange={(v) => updatePost({ ogImageUrl: v })}
|
|
42
|
-
onOgImageUpload={async (file) => {
|
|
43
|
-
const { url } = await uploadAsset(file);
|
|
29
|
+
import { SEOEditorPreview } from './seo-editor-preview';
|
|
30
|
+
|
|
31
|
+
function ArticleForm() {
|
|
32
|
+
const [seoTitle, setSeoTitle] = useState('');
|
|
33
|
+
const [seoDescription, setSeoDescription] = useState('');
|
|
34
|
+
|
|
35
|
+
const handleUpload = async (file: File): Promise<string> => {
|
|
36
|
+
const formData = new FormData();
|
|
37
|
+
formData.append('file', file);
|
|
38
|
+
const res = await fetch('/api/upload', { method: 'POST', body: formData });
|
|
39
|
+
const { url } = await res.json();
|
|
44
40
|
return url;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<SEOEditorPreview
|
|
45
|
+
seoTitle={seoTitle}
|
|
46
|
+
seoDescription={seoDescription}
|
|
47
|
+
seoKeywords=""
|
|
48
|
+
ogImageUrl=""
|
|
49
|
+
title="Getting Started with OpenFrame"
|
|
50
|
+
summary="A guide to the unified MSP platform."
|
|
51
|
+
featuredImage="/images/hero.png"
|
|
52
|
+
onSeoTitleChange={setSeoTitle}
|
|
53
|
+
onSeoDescriptionChange={setSeoDescription}
|
|
54
|
+
onSeoKeywordsChange={() => {}}
|
|
55
|
+
onOgImageUrlChange={() => {}}
|
|
56
|
+
onOgImageUpload={handleUpload}
|
|
57
|
+
aiConfidenceSeoTitle={0.87}
|
|
58
|
+
domain="flamingo.run"
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
49
62
|
```
|
|
50
63
|
|
|
51
|
-
>
|
|
64
|
+
> **Source:** [`seo-editor-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/seo-editor-preview.tsx)
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side React component for managing a dynamic list of social media profile links, supporting
|
|
1
|
+
<!-- source-hash: 590a86864f3606344569842b53130fe9 -->
|
|
2
|
+
A client-side React component for managing a dynamic list of social media profile links, supporting platform selection, URL input, and visibility controls.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### Interfaces
|
|
6
|
+
### Exported Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
| `SocialLink` | Represents a single link entry with `platform`, `url`, and optional `username` |
|
|
11
|
-
| `SocialPlatform` | Describes a platform definition sourced from dynamic data (e.g., database), including `icon_name`, `url_pattern`, and `placeholder` |
|
|
12
|
-
| `SocialLinksManagerProps` | Component props: `links`, `onChange` callback, optional `platforms` array, and optional `className` |
|
|
8
|
+
- **`SocialLink`** — Represents a single social link entry with `platform`, `url`, optional `username`, and `visibility` (`'external' | 'internal'`).
|
|
9
|
+
- **`SocialPlatform`** — Describes a platform definition (typically fetched from a database) with fields like `id`, `name`, `display_name`, `icon_name`, `url_pattern`, `placeholder`, and `enabled`.
|
|
13
10
|
|
|
14
|
-
###
|
|
11
|
+
### Component
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
13
|
+
- **`SocialLinksManager`** — Main component accepting:
|
|
14
|
+
- `links` — Current array of `SocialLink` entries
|
|
15
|
+
- `onChange` — Callback invoked with the updated links array on any mutation
|
|
16
|
+
- `platforms` — Optional array of `SocialPlatform` definitions (defaults to empty; pass dynamic data from your API)
|
|
17
|
+
- `className` — Optional CSS class override
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
### Internal Helpers
|
|
20
|
+
|
|
21
|
+
- **`addLink`** — Appends a new empty link defaulting to the first available platform.
|
|
22
|
+
- **`removeLink(index)`** — Removes the link at the given index.
|
|
23
|
+
- **`updateLink(index, field, value)`** — Mutates a specific field on a link entry immutably.
|
|
24
|
+
- **`getIcon(link, platform?)`** — Resolves the correct icon component from `iconMap` using `platform.icon_name` or `link.platform` as a fallback.
|
|
25
|
+
|
|
26
|
+
### `iconMap`
|
|
27
|
+
|
|
28
|
+
A static mapping from platform key strings to icon components, covering: `linkedin`, `github`, `twitter`, `reddit`, `slack`, `whatsapp`, `website`, `youtube`, `instagram`, `facebook`, `discord`, `telegram`, `tiktok`, `email`/`mail`.
|
|
23
29
|
|
|
24
30
|
## Usage Example
|
|
25
31
|
|
|
@@ -27,8 +33,22 @@ Supported icon keys in `iconMap`: `linkedin`, `github`, `twitter`, `reddit`, `sl
|
|
|
27
33
|
import { SocialLinksManager, SocialLink, SocialPlatform } from './social-links-manager';
|
|
28
34
|
|
|
29
35
|
const platforms: SocialPlatform[] = [
|
|
30
|
-
{
|
|
31
|
-
|
|
36
|
+
{
|
|
37
|
+
id: '1',
|
|
38
|
+
name: 'linkedin',
|
|
39
|
+
display_name: 'LinkedIn',
|
|
40
|
+
icon_name: 'linkedin',
|
|
41
|
+
placeholder: 'https://linkedin.com/in/username',
|
|
42
|
+
enabled: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: '2',
|
|
46
|
+
name: 'github',
|
|
47
|
+
display_name: 'GitHub',
|
|
48
|
+
icon_name: 'github',
|
|
49
|
+
placeholder: 'https://github.com/username',
|
|
50
|
+
enabled: true,
|
|
51
|
+
},
|
|
32
52
|
];
|
|
33
53
|
|
|
34
54
|
function ProfileEditor() {
|
|
@@ -44,4 +64,6 @@ function ProfileEditor() {
|
|
|
44
64
|
}
|
|
45
65
|
```
|
|
46
66
|
|
|
47
|
-
|
|
67
|
+
**Visibility note:** Links with `visibility: 'internal'` are intended for company-hub rendering only and should be filtered server-side before exposing to external consumers.
|
|
68
|
+
|
|
69
|
+
**Source:** [`social-links-manager.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/social-links-manager.tsx)
|
|
@@ -1,53 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: e7990b46fb9187b4eebc186c31d83f16 -->
|
|
2
|
+
A branded CTA button component for the OpenFrame platform, rendering the OpenFrame logo icon alongside customizable label text and a "Beta" status badge.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
| `StartWithOpenFrameButton` | `React.ForwardRefExoticComponent` | Main button component with OpenFrame branding |
|
|
9
|
-
| `StartWithOpenFrameButtonProps` | `interface` | Extends `ButtonProps`, omitting `variant`, `size`, and `leftIcon` |
|
|
10
|
-
|
|
11
|
-
### Props
|
|
6
|
+
### `StartWithOpenFrameButtonProps`
|
|
7
|
+
Extends `ButtonProps` (omitting `variant`, `size`, and `leftIcon`) with:
|
|
12
8
|
|
|
13
9
|
| Prop | Type | Default | Description |
|
|
14
|
-
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
|
|
22
|
-
###
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
| `pink` / `purple` | `accent` | `--ods-flamingo-pink-base` |
|
|
29
|
-
| `cyan` | `accent` | `--ods-flamingo-cyan-base` |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| `children` | `React.ReactNode` | `'Start Free Trial'` | Button label text |
|
|
12
|
+
| `mode` | `'outline' \| 'yellow' \| 'pink' \| 'purple' \| 'cyan'` | `'outline'` | Visual style theme |
|
|
13
|
+
| `buttonSize` | `'sm' \| 'md' \| 'lg'` | — | Maps to internal Button size values |
|
|
14
|
+
| `loading` | `boolean` | `false` | Shows loading state; hides logo icon |
|
|
15
|
+
| `buttonBackgroundColor` | `string` | — | Custom background (cyan mode only) |
|
|
16
|
+
| `buttonTextColor` | `string` | — | Custom text color (cyan mode only) |
|
|
17
|
+
|
|
18
|
+
### `StartWithOpenFrameButton`
|
|
19
|
+
A `React.forwardRef` component that:
|
|
20
|
+
- Maps `mode` to `Button` variant (`outline` or `accent`) and ODS Tailwind classes
|
|
21
|
+
- Adjusts `OpenFrameLogo` icon colors for contrast per mode
|
|
22
|
+
- Injects a fixed `StatusBadge` ("Beta") as `rightIcon`
|
|
23
|
+
- Supports inline style overrides for the `cyan` mode
|
|
30
24
|
|
|
31
25
|
## Usage Example
|
|
32
26
|
|
|
33
27
|
```typescript
|
|
34
28
|
import { StartWithOpenFrameButton } from './start-with-openframe-button';
|
|
35
29
|
|
|
36
|
-
// Default outline
|
|
37
|
-
<StartWithOpenFrameButton
|
|
30
|
+
// Default outline style
|
|
31
|
+
<StartWithOpenFrameButton />
|
|
38
32
|
|
|
39
|
-
// Yellow accent
|
|
33
|
+
// Yellow accent variant with large size
|
|
40
34
|
<StartWithOpenFrameButton mode="yellow" buttonSize="lg">
|
|
41
35
|
Get Started
|
|
42
36
|
</StartWithOpenFrameButton>
|
|
43
37
|
|
|
44
|
-
// Cyan with custom brand colors
|
|
38
|
+
// Cyan mode with custom brand colors
|
|
45
39
|
<StartWithOpenFrameButton
|
|
46
40
|
mode="cyan"
|
|
47
|
-
buttonBackgroundColor="#
|
|
41
|
+
buttonBackgroundColor="#00BFA5"
|
|
48
42
|
buttonTextColor="#000000"
|
|
49
|
-
|
|
43
|
+
>
|
|
44
|
+
Launch OpenFrame
|
|
45
|
+
</StartWithOpenFrameButton>
|
|
50
46
|
|
|
51
47
|
// Loading state
|
|
52
|
-
<StartWithOpenFrameButton loading={
|
|
53
|
-
```
|
|
48
|
+
<StartWithOpenFrameButton loading={true} />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
> **Source:** [`start-with-openframe-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/start-with-openframe-button.tsx)
|
|
@@ -1,56 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: edc07c45893f37b235057e00e9d58942 -->
|
|
2
|
+
A reusable React client component that renders a row of status filter buttons for admin dashboards, supporting role-based selective disabling of individual status options.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
| `StatusOption` | Defines a filter option with `value` and `label` strings |
|
|
11
|
-
| `StatusFilterComponentProps` | Full props contract for the component |
|
|
8
|
+
- **`StatusOption`** — Shape for each filter option: `{ value: string; label: string }`
|
|
9
|
+
- **`StatusFilterComponentProps`** — Full prop contract for the component:
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
| Prop | Type | Description |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `selectedStatus` | `string` | Currently active filter value |
|
|
14
|
+
| `onStatusChange` | `(status: string) => void` | Callback fired on button click |
|
|
15
|
+
| `statusOptions` | `StatusOption[]` | List of available filter options |
|
|
16
|
+
| `showCount` | `boolean?` | Toggles item count display (default: `false`) |
|
|
17
|
+
| `count` | `number?` | Number to display when `showCount` is true |
|
|
18
|
+
| `className` | `string?` | Additional CSS classes for the wrapper |
|
|
19
|
+
| `disabledValues` | `string[]?` | Status values to render but disable (e.g. for role-gating) |
|
|
14
20
|
|
|
15
|
-
|
|
16
|
-
|------|------|---------|-------------|
|
|
17
|
-
| `selectedStatus` | `string` | — | Currently active filter value |
|
|
18
|
-
| `onStatusChange` | `(status: string) => void` | — | Callback fired on filter selection |
|
|
19
|
-
| `statusOptions` | `StatusOption[]` | — | Array of filter options to render |
|
|
20
|
-
| `showCount` | `boolean` | `false` | Toggles item count display |
|
|
21
|
-
| `count` | `number` | `0` | Number shown when `showCount` is enabled |
|
|
22
|
-
| `className` | `string` | `''` | Additional CSS classes for the wrapper |
|
|
21
|
+
### Component
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- `StatusFilterComponent` — named export, main component
|
|
27
|
-
- `StatusOption` — exported interface
|
|
28
|
-
- `StatusFilterComponentProps` — exported interface
|
|
23
|
+
- **`StatusFilterComponent`** — Renders an "All" button followed by individual status buttons. Active status uses the `accent` variant; inactive uses `outline`. Disabled buttons remain visible but non-interactive — useful for exposing a full status set while restricting which values a viewer may select.
|
|
29
24
|
|
|
30
25
|
## Usage Example
|
|
31
26
|
|
|
32
27
|
```typescript
|
|
33
28
|
import { StatusFilterComponent, StatusOption } from './status-filter-component';
|
|
34
29
|
|
|
35
|
-
const
|
|
36
|
-
{ value: '
|
|
37
|
-
{ value: '
|
|
38
|
-
{ value: '
|
|
30
|
+
const statusOptions: StatusOption[] = [
|
|
31
|
+
{ value: 'published', label: 'Published' },
|
|
32
|
+
{ value: 'draft', label: 'Draft' },
|
|
33
|
+
{ value: 'archived', label: 'Archived' },
|
|
39
34
|
];
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
count={42}
|
|
51
|
-
/>
|
|
52
|
-
);
|
|
53
|
-
}
|
|
36
|
+
// Non-management users can only switch to 'published'
|
|
37
|
+
<StatusFilterComponent
|
|
38
|
+
selectedStatus={currentStatus}
|
|
39
|
+
onStatusChange={setCurrentStatus}
|
|
40
|
+
statusOptions={statusOptions}
|
|
41
|
+
showCount={true}
|
|
42
|
+
count={42}
|
|
43
|
+
disabledValues={['draft', 'archived']}
|
|
44
|
+
/>
|
|
54
45
|
```
|
|
55
46
|
|
|
56
|
-
> **
|
|
47
|
+
> **Source:** [`status-filter-component.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/status-filter-component.tsx)
|
|
@@ -1,61 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 8568bb28ffc1ce07d2d726b7322e39a7 -->
|
|
2
|
+
Reusable React component for selecting and managing tags with search autocomplete, chip display, and optional tag creation.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
Main exported component that renders a search input with inline tag chips, an autocomplete dropdown, and a tag counter.
|
|
6
|
+
### Interfaces
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
- **`Tag`** — Shape of a tag object: `id`, `name`, `slug`
|
|
9
|
+
- **`TagsSelectorProps`** — Component props:
|
|
10
10
|
|
|
11
11
|
| Prop | Type | Default | Description |
|
|
12
|
-
|
|
13
|
-
| `availableTags` | `Tag[]` | — | Pool of tags
|
|
14
|
-
| `selectedTagIds` | `number[]` | — |
|
|
15
|
-
| `onTagsChange` | `(
|
|
16
|
-
| `onCreateTag` | `(name: string) => Promise<Tag \| null>` | — |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `availableTags` | `Tag[]` | — | Pool of selectable tags |
|
|
14
|
+
| `selectedTagIds` | `number[]` | — | Controlled list of selected tag IDs |
|
|
15
|
+
| `onTagsChange` | `(ids: number[]) => void` | — | Fires when selection changes |
|
|
16
|
+
| `onCreateTag` | `(name: string) => Promise<Tag \| null>` | — | Async handler to create a new tag |
|
|
17
17
|
| `maxTags` | `number` | `10` | Maximum selectable tags |
|
|
18
|
-
| `allowCreate` | `boolean` | `true` |
|
|
19
|
-
| `disabled` | `boolean` | `false` | Disables all
|
|
18
|
+
| `allowCreate` | `boolean` | `true` | Show "Create tag" option in dropdown |
|
|
19
|
+
| `disabled` | `boolean` | `false` | Disables all interaction |
|
|
20
20
|
|
|
21
|
-
###
|
|
21
|
+
### Exported Component
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
- `handleTagRemove` — Removes a tag chip from selection
|
|
25
|
-
- `handleCreateTag` — Calls `onCreateTag`, auto-selects the result, manages loading state
|
|
26
|
-
- `getFilteredTagsForAutocomplete` — Filters available tags by search query, excluding already selected
|
|
27
|
-
- `tagExistsWithName` — Case-insensitive duplicate check before showing "Create" option
|
|
23
|
+
- **`TagsSelector`** — Main component rendering the search input, tag chips, autocomplete dropdown, and tag counter
|
|
28
24
|
|
|
29
25
|
## Usage Example
|
|
30
26
|
|
|
31
27
|
```typescript
|
|
32
28
|
import { TagsSelector } from './tags-selector';
|
|
33
29
|
|
|
34
|
-
function
|
|
35
|
-
const [
|
|
30
|
+
function MyForm() {
|
|
31
|
+
const [selectedIds, setSelectedIds] = useState<number[]>([]);
|
|
36
32
|
|
|
37
|
-
const
|
|
33
|
+
const handleCreate = async (name: string) => {
|
|
38
34
|
const res = await fetch('/api/tags', {
|
|
39
35
|
method: 'POST',
|
|
40
36
|
body: JSON.stringify({ name }),
|
|
41
37
|
});
|
|
42
|
-
return res.json(); //
|
|
38
|
+
return res.json(); // returns Tag | null
|
|
43
39
|
};
|
|
44
40
|
|
|
45
41
|
return (
|
|
46
42
|
<TagsSelector
|
|
47
43
|
availableTags={[
|
|
48
|
-
{ id: 1, name: '
|
|
49
|
-
{ id: 2, name: '
|
|
44
|
+
{ id: 1, name: 'TypeScript', slug: 'typescript' },
|
|
45
|
+
{ id: 2, name: 'React', slug: 'react' },
|
|
50
46
|
]}
|
|
51
|
-
selectedTagIds={
|
|
52
|
-
onTagsChange={
|
|
53
|
-
onCreateTag={
|
|
47
|
+
selectedTagIds={selectedIds}
|
|
48
|
+
onTagsChange={setSelectedIds}
|
|
49
|
+
onCreateTag={handleCreate}
|
|
54
50
|
maxTags={5}
|
|
55
|
-
placeholder="Search tags..."
|
|
51
|
+
placeholder="Search or create tags..."
|
|
56
52
|
/>
|
|
57
53
|
);
|
|
58
54
|
}
|
|
59
55
|
```
|
|
60
56
|
|
|
61
|
-
|
|
57
|
+
**Source:** [`tags-selector.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tags-selector.tsx)
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 861a257f5441c2c79974b0bc1518d8c1 -->
|
|
2
|
+
Reusable React component that renders editable textarea fields for video summary, transcript, and optional SRT subtitles, with AI generation badges and confidence score indicators.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `TranscriptSummaryEditor`
|
|
7
|
-
The default export. Renders up to three labeled textarea sections:
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|---|---|
|
|
11
|
-
| **Video Summary** | Always |
|
|
12
|
-
| **Transcript** | Always |
|
|
13
|
-
| **Subtitles (SRT)** | `subtitles` content exists OR `onSubtitlesChange` is provided |
|
|
8
|
+
Main exported component rendering up to three editor sections:
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
- `isAIGenerated` badge (Sparkles icon / CC icon for subtitles)
|
|
19
|
-
- `ConfidenceBadge` for AI confidence scores (video summary and transcript only)
|
|
20
|
-
- `disabled` state propagated to all textareas
|
|
10
|
+
- **Video Summary** — always visible; supports Markdown input
|
|
11
|
+
- **Transcript** — always visible; supports speaker diarization format
|
|
12
|
+
- **Subtitles (SRT)** — conditionally rendered when `subtitles` content or `onSubtitlesChange` handler is provided
|
|
21
13
|
|
|
22
14
|
### `TranscriptSummaryEditorProps`
|
|
23
|
-
|
|
15
|
+
|
|
16
|
+
Full interface with sensible defaults for all optional props:
|
|
17
|
+
|
|
18
|
+
| Prop | Type | Default |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| `videoSummary` | `string` | `''` |
|
|
21
|
+
| `transcript` | `string` | `''` |
|
|
22
|
+
| `isAIGenerated` | `boolean` | `false` |
|
|
23
|
+
| `videoSummaryConfidence` | `number \| null` | — |
|
|
24
|
+
| `transcriptConfidence` | `number \| null` | — |
|
|
25
|
+
| `disabled` | `boolean` | `false` |
|
|
26
|
+
| `subtitles` | `string` | — |
|
|
27
|
+
| `onSubtitlesChange` | `(value: string) => void` | — |
|
|
28
|
+
|
|
29
|
+
All label, helper text, placeholder, and `minHeight` props are customizable per field.
|
|
24
30
|
|
|
25
31
|
## Usage Example
|
|
26
32
|
|
|
@@ -38,11 +44,11 @@ function InterviewEditor() {
|
|
|
38
44
|
onVideoSummaryChange={setSummary}
|
|
39
45
|
transcript={transcript}
|
|
40
46
|
onTranscriptChange={setTranscript}
|
|
47
|
+
subtitles={subtitles}
|
|
48
|
+
onSubtitlesChange={setSubtitles}
|
|
41
49
|
isAIGenerated={true}
|
|
42
50
|
videoSummaryConfidence={87}
|
|
43
51
|
transcriptConfidence={92}
|
|
44
|
-
subtitles={subtitles}
|
|
45
|
-
onSubtitlesChange={setSubtitles}
|
|
46
52
|
videoSummaryMinHeight={250}
|
|
47
53
|
transcriptMinHeight={400}
|
|
48
54
|
/>
|
|
@@ -50,4 +56,4 @@ function InterviewEditor() {
|
|
|
50
56
|
}
|
|
51
57
|
```
|
|
52
58
|
|
|
53
|
-
|
|
59
|
+
**Source:** [`transcript-summary-editor.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/transcript-summary-editor.tsx)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: f3f269920014c6536db44dfc2792eefe -->
|
|
2
|
+
Provides React hooks for warming the network path to video origins, reducing click-to-first-frame latency via preconnects and IntersectionObserver-gated preloads.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `saveDataEnabled` | `function` | Detects metered connections via `navigator.connection?.saveData`; SSR-safe |
|
|
9
|
+
| `useVideoOriginPreconnect` | `hook` | Fires TCP/TLS preconnects to Mux and Supabase Storage origins without IO subscription |
|
|
10
|
+
| `useVideoWarmup` | `hook` | Full warmup — preconnects on every render + IO-gated `<link rel="preload" as="video">` for Supabase-hosted MP4s |
|
|
11
|
+
| `MUX_STREAM_ORIGIN` | `const` | Re-exported from `mux-origins.ts` (server-safe module) |
|
|
12
|
+
| `MUX_IMAGE_ORIGIN` | `const` | Re-exported from `mux-origins.ts` (server-safe module) |
|
|
13
|
+
|
|
14
|
+
**Origin resolution priority:** explicit `supabaseStorageOrigin` arg → `ChatRuntime.endpoints.supabaseStorageOrigin` → preload skipped (Mux preconnects still fire).
|
|
15
|
+
|
|
16
|
+
**Preload gates (all must pass):**
|
|
17
|
+
1. Container is within `nearMargin` of viewport (default `1000px`)
|
|
18
|
+
2. `saveDataEnabled()` returns `false`
|
|
19
|
+
3. `videoUrl` origin matches `supabaseStorageOrigin` (Mux HLS and YouTube are intentional no-ops)
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Full warmup — owns the video container ref
|
|
25
|
+
function VideoCard({ videoUrl }: { videoUrl: string }) {
|
|
26
|
+
const { ref, isNear } = useVideoWarmup<HTMLDivElement>({
|
|
27
|
+
videoUrl,
|
|
28
|
+
nearMargin: '800px',
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<div ref={ref}>
|
|
33
|
+
{isNear && <MuxPlayer src={videoUrl} />}
|
|
34
|
+
</div>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Preconnect-only — no container ref available
|
|
39
|
+
function ReleasePage() {
|
|
40
|
+
useVideoOriginPreconnect()
|
|
41
|
+
return <SiblingVideoPlayer />
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> **`useVideoOriginPreconnect` vs `useVideoWarmup`:** Use `useVideoOriginPreconnect` when you cannot attach a `ref` to the video container (e.g. a page that delegates rendering to a sibling). Use `useVideoWarmup` when you own the container.
|
|
46
|
+
|
|
47
|
+
**Source:** [`hooks/use-video-warmup.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hooks/use-video-warmup.ts)
|