@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,5 +1,5 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Reusable React component for displaying and managing highlight video previews with support for manual upload, AI-generated badges, and
|
|
1
|
+
<!-- source-hash: 9b2a25dc6109c28a9059e614c7b4ad28 -->
|
|
2
|
+
Reusable React component for displaying and managing highlight video previews with support for manual file upload, AI-generated badges, and customizable video rendering.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
@@ -7,16 +7,18 @@ Reusable React component for displaying and managing highlight video previews wi
|
|
|
7
7
|
| Prop | Type | Description |
|
|
8
8
|
|------|------|-------------|
|
|
9
9
|
| `highlightVideoUrl` | `string \| null` | URL of the highlight video |
|
|
10
|
-
| `highlightVideoThumbnail` | `string \| null` |
|
|
10
|
+
| `highlightVideoThumbnail` | `string \| null` | Video thumbnail URL |
|
|
11
11
|
| `highlightVideoDurationMs` | `number \| null` | Duration in milliseconds |
|
|
12
|
-
| `highlightVideoSource` | `'manual' \| 'ai_generated' \| null` |
|
|
13
|
-
| `onUpload` | `(file: File) => Promise<string>` |
|
|
12
|
+
| `highlightVideoSource` | `'manual' \| 'ai_generated' \| null` | Origin of the video |
|
|
13
|
+
| `onUpload` | `(file: File) => Promise<string>` | Upload handler returning new URL |
|
|
14
14
|
| `onDelete` | `() => Promise<void>` | Delete handler |
|
|
15
15
|
| `renderVideoPreview` | `(props) => ReactNode` | Render prop for custom video player |
|
|
16
16
|
| `uploadProgressComponent` | `ReactNode` | Optional upload progress UI |
|
|
17
17
|
|
|
18
18
|
### `HighlightVideoPreview`
|
|
19
|
-
|
|
19
|
+
The primary exported component. Renders a label row with optional `AIGeneratedBadge` and duration badge, an upload button, optional progress indicator, and either the video preview (via render prop) or an empty state message.
|
|
20
|
+
|
|
21
|
+
**Internal helper:** `formatDuration(ms)` converts milliseconds to `M:SS` display format.
|
|
20
22
|
|
|
21
23
|
## Usage Example
|
|
22
24
|
|
|
@@ -24,16 +26,16 @@ Main exported component rendering the label row, badges, upload button, and dele
|
|
|
24
26
|
import { HighlightVideoPreview } from './highlight-video-preview';
|
|
25
27
|
|
|
26
28
|
<HighlightVideoPreview
|
|
27
|
-
highlightVideoUrl=
|
|
28
|
-
highlightVideoThumbnail=
|
|
29
|
-
highlightVideoDurationMs={
|
|
29
|
+
highlightVideoUrl={interview.highlightVideoUrl}
|
|
30
|
+
highlightVideoThumbnail={interview.thumbnailUrl}
|
|
31
|
+
highlightVideoDurationMs={interview.durationMs}
|
|
30
32
|
highlightVideoSource="ai_generated"
|
|
31
33
|
onUpload={async (file) => {
|
|
32
34
|
const url = await uploadToStorage(file);
|
|
33
35
|
return url;
|
|
34
36
|
}}
|
|
35
37
|
onDelete={async () => {
|
|
36
|
-
await
|
|
38
|
+
await deleteHighlightVideo(interview.id);
|
|
37
39
|
}}
|
|
38
40
|
renderVideoPreview={({ videoUrl, thumbnailUrl, onDelete }) => (
|
|
39
41
|
<VideoPlayer src={videoUrl} poster={thumbnailUrl} onDelete={onDelete} />
|
|
@@ -41,4 +43,4 @@ import { HighlightVideoPreview } from './highlight-video-preview';
|
|
|
41
43
|
/>
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
> **Note:**
|
|
46
|
+
> **Note:** The `renderVideoPreview` render prop pattern keeps this component entity-agnostic, making it reusable across `CustomerInterview` and `ProductRelease` entities without coupling to a specific player implementation.
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Unified React component for managing highlight video generation and
|
|
1
|
+
<!-- source-hash: 3352f684fadb713012ab77b57ce2cf6a -->
|
|
2
|
+
Unified React component for managing highlight video generation and playback, combining AI-powered generation controls, manual upload, and video preview into a single configurable UI.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `HighlightVideoSection`
|
|
7
|
-
Main exported component that renders three logical sections:
|
|
6
|
+
### `HighlightVideoSection` (default export)
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- **
|
|
8
|
+
The primary component rendering three distinct sections:
|
|
9
|
+
|
|
10
|
+
- **Configuration panel** — Target duration selector (1–5 minutes) and subtitle-burning toggle
|
|
11
|
+
- **AI generation panel** — Wraps `AIEnrichSection` with Claude AI + Shotstack integration, progress reporting, and optional cancel support
|
|
12
|
+
- **Preview/upload panel** — Displays the current highlight video (via a custom `VideoPreviewComponent` or the built-in `Video` component), upload trigger, AI-generated badge, duration badge, and delete control
|
|
12
13
|
|
|
13
14
|
### `HighlightVideoSectionProps`
|
|
14
|
-
Full TypeScript interface exposing all configuration and callback props. Notable props:
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
16
|
+
Full TypeScript interface controlling all behavior. Key prop groups:
|
|
17
|
+
|
|
18
|
+
| Group | Props |
|
|
19
|
+
|---|---|
|
|
20
|
+
| Current video state | `highlightVideoUrl`, `highlightVideoThumbnail`, `highlightVideoDurationMs`, `highlightVideoSource` |
|
|
21
|
+
| AI generation | `onGenerateHighlight`, `isGenerating`, `generationProgress`, `generationStatus`, `generationStatusMessage` |
|
|
22
|
+
| Upload | `onUploadHighlight`, `isUploading` |
|
|
23
|
+
| Cancellation | `onCancelGeneration`, `isCancelling` |
|
|
24
|
+
| Extensibility | `VideoPreviewComponent`, `disabled`, `className` |
|
|
23
25
|
|
|
24
26
|
## Usage Example
|
|
25
27
|
|
|
@@ -28,20 +30,22 @@ import { HighlightVideoSection } from './highlight-video-section';
|
|
|
28
30
|
|
|
29
31
|
<HighlightVideoSection
|
|
30
32
|
highlightVideoUrl={interview.highlightUrl}
|
|
33
|
+
highlightVideoThumbnail={interview.highlightThumbnail}
|
|
31
34
|
highlightVideoSource="ai_generated"
|
|
32
|
-
highlightVideoDurationMs={180000}
|
|
33
35
|
targetDurationSeconds={180}
|
|
34
36
|
onTargetDurationChange={(secs) => setTargetDuration(secs)}
|
|
35
37
|
skipSubtitleBurning={false}
|
|
36
|
-
onSkipSubtitleBurningChange={(skip) =>
|
|
37
|
-
onGenerateHighlight={
|
|
38
|
+
onSkipSubtitleBurningChange={(skip) => setSkipSubtitles(skip)}
|
|
39
|
+
onGenerateHighlight={handleGenerateHighlight}
|
|
38
40
|
isGenerating={isGenerating}
|
|
39
41
|
generationProgress={progress}
|
|
40
42
|
generationStatus={status}
|
|
41
43
|
canGenerateHighlight={!!interview.transcriptId}
|
|
42
|
-
requiredFields={[{
|
|
43
|
-
onUploadHighlight={async (file) =>
|
|
44
|
-
onDeleteHighlight={
|
|
44
|
+
requiredFields={[{ label: 'Transcript', fulfilled: !!interview.transcriptId }]}
|
|
45
|
+
onUploadHighlight={async (file) => uploadHighlight(file)}
|
|
46
|
+
onDeleteHighlight={handleDeleteHighlight}
|
|
45
47
|
onCancelGeneration={handleCancel}
|
|
46
48
|
/>
|
|
47
|
-
```
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Source:** [`highlight-video-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/highlight-video-section.tsx)
|
|
@@ -1,50 +1,54 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Central barrel export file for the feature components
|
|
1
|
+
<!-- source-hash: b2ac5c8b15e9d1863c76fff129a5c8e4 -->
|
|
2
|
+
Central barrel export file for the OpenFrame OSS library's feature components, re-exporting all public UI components, hooks, providers, and utilities from their respective module directories.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Theme System
|
|
7
|
-
-
|
|
8
|
-
- `
|
|
9
|
-
- `THEME_STORAGE_KEY`, `THEME_ATTRIBUTE`, `DEFAULT_THEME` — Theme configuration constants
|
|
10
|
-
- `Theme`, `ThemeProviderProps`, `UseThemeToggleResult` — TypeScript types
|
|
7
|
+
- **`DynamicThemeProvider`** / **`useDynamicTheme`** — Dynamic runtime theming
|
|
8
|
+
- **`ThemeProvider`** / **`useTheme`** / **`useThemeToggle`** — Canonical ODS theme system (thin wrapper over `next-themes`), headless by design with constants `THEME_STORAGE_KEY`, `THEME_ATTRIBUTE`, `DEFAULT_THEME` and types `Theme`, `ThemeProviderProps`, `UseThemeToggleResult`
|
|
11
9
|
|
|
12
10
|
### Video Primitives
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- `
|
|
21
|
-
- `
|
|
22
|
-
- `
|
|
23
|
-
- `
|
|
24
|
-
|
|
25
|
-
### Manager Components
|
|
26
|
-
- `array-entry-manager`, `changelog-manager`, `changelog-sections-manager`
|
|
27
|
-
- `clickup-tasks-manager`, `github-releases-manager`, `media-gallery-manager`
|
|
28
|
-
- `release-media-manager`
|
|
11
|
+
- **`<Video>`** — Unified video component replacing legacy `<VideoPlayer>` + `<YouTubeEmbed>`
|
|
12
|
+
- **`<CardsStrip>`** — Horizontal card-strip engine (render-prop or organic `children` mode)
|
|
13
|
+
- **`<EntityVideoSection>`** / **`<VideoBitesStrip>`** — Public detail-page wrappers
|
|
14
|
+
- **`<VideoBitesDisplay>`** — Deprecated shim over the strip
|
|
15
|
+
- **`video-bites-shared`** — Server-safe leaf, also published as its own subpath
|
|
16
|
+
|
|
17
|
+
### Feature Components (selected)
|
|
18
|
+
- `auth`, `auth-providers-list`, `command-box`, `error-boundary`
|
|
19
|
+
- `filters-dropdown`, `loading-provider`, `media-gallery-manager`
|
|
20
|
+
- `ai-enrich`, `board`, `notifications`, `time-tracker`
|
|
21
|
+
- `seo-editor-preview`, `tags-selector`, `social-links-manager`
|
|
22
|
+
- `changelog-manager`, `github-releases-manager`, `knowledge-base-links-manager`
|
|
29
23
|
|
|
30
24
|
## Usage Example
|
|
31
25
|
|
|
32
26
|
```typescript
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
import {
|
|
28
|
+
ThemeProvider,
|
|
29
|
+
useThemeToggle,
|
|
30
|
+
Video,
|
|
31
|
+
CardsStrip,
|
|
32
|
+
CommandBox,
|
|
33
|
+
ErrorBoundary,
|
|
34
|
+
} from '@openframe-oss-lib/features'
|
|
35
|
+
|
|
36
|
+
function App() {
|
|
41
37
|
const { toggle, theme } = useThemeToggle()
|
|
42
|
-
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<ThemeProvider>
|
|
41
|
+
<ErrorBoundary>
|
|
42
|
+
<Video src="https://example.com/video.mp4" />
|
|
43
|
+
<button onClick={toggle}>Current: {theme}</button>
|
|
44
|
+
</ErrorBoundary>
|
|
45
|
+
</ThemeProvider>
|
|
46
|
+
)
|
|
43
47
|
}
|
|
48
|
+
```
|
|
44
49
|
|
|
45
|
-
|
|
46
|
-
import { Video, EntityVideoSection, VideoBitesDisplay } from '@/features'
|
|
50
|
+
## Notes
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
- Marked `"use client"` — all exports are client-side React components/hooks
|
|
53
|
+
- Acts as the single public API surface for consumers; internal module paths should not be imported directly
|
|
54
|
+
- Source: [`src/features/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/features/index.ts)
|
|
@@ -1,60 +1,62 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Reusable React component for managing a media gallery
|
|
1
|
+
<!-- source-hash: c88990c646ac00bc2153738bb81e7d24 -->
|
|
2
|
+
Reusable React component for managing a media gallery — supports image and video upload, drag-to-reorder, and deletion with an optional modal wrapper.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `MediaItem`
|
|
7
|
-
|
|
6
|
+
### `MediaItem` (interface)
|
|
7
|
+
Data shape for a single gallery entry:
|
|
8
8
|
|
|
9
|
-
| Field | Type |
|
|
10
|
-
|
|
11
|
-
| `id` | `string \| number` | Optional
|
|
12
|
-
| `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` |
|
|
13
|
-
| `media_url` | `string` | URL
|
|
14
|
-
| `title` | `string` |
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `_uploading` | `boolean` | Internal upload state flag |
|
|
9
|
+
| Field | Type | Notes |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `id` | `string \| number` | Optional; omitted for new items |
|
|
12
|
+
| `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Controls render path |
|
|
13
|
+
| `media_url` | `string` | Resolved URL after upload |
|
|
14
|
+
| `title` | `string` | Displayed below the thumbnail |
|
|
15
|
+
| `display_order` | `number` | Updated automatically on reorder |
|
|
16
|
+
| `_uploading` | `boolean` | Optimistic upload state flag |
|
|
18
17
|
|
|
19
|
-
### `MediaGalleryManager`
|
|
20
|
-
Primary export. Renders upload zone, media grid, drag-and-drop controls, and delete actions.
|
|
21
|
-
|
|
22
|
-
**Props:**
|
|
18
|
+
### `MediaGalleryManager` (component)
|
|
23
19
|
|
|
24
20
|
| Prop | Type | Default | Description |
|
|
25
|
-
|
|
26
|
-
| `media` | `MediaItem[]` | — |
|
|
27
|
-
| `onChange` | `(media: MediaItem[]) => void` | — | Called on
|
|
28
|
-
| `onUpload` | `(file, mediaType) => Promise<string>` | — |
|
|
29
|
-
| `isUploading` | `boolean` | `false` |
|
|
30
|
-
| `showInModal` | `boolean` | `false` | Reserved for modal rendering |
|
|
31
|
-
| `modalTitle` | `string` | `'Media Gallery'` |
|
|
32
|
-
| `className` | `string` | `''` | Additional
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| `media` | `MediaItem[]` | — | Controlled list of media items |
|
|
23
|
+
| `onChange` | `(media: MediaItem[]) => void` | — | Called on add, delete, or reorder |
|
|
24
|
+
| `onUpload` | `(file, mediaType) => Promise<string>` | — | Async upload handler; returns resolved URL |
|
|
25
|
+
| `isUploading` | `boolean` | `false` | Shows spinner and disables controls |
|
|
26
|
+
| `showInModal` | `boolean` | `false` | Reserved for modal rendering mode |
|
|
27
|
+
| `modalTitle` | `string` | `'Media Gallery'` | Title when rendered in a modal |
|
|
28
|
+
| `className` | `string` | `''` | Additional wrapper classes |
|
|
29
|
+
|
|
30
|
+
**Internal behaviors:**
|
|
31
|
+
- `handleFileSelect` — detects MIME type, calls `onUpload`, appends new `MediaItem`
|
|
32
|
+
- `handleDeleteMedia` — filters item by index, updates order
|
|
33
|
+
- `handleDragStart / handleDrop` — HTML5 drag-and-drop reorder; recalculates `display_order` on drop
|
|
33
34
|
|
|
34
35
|
## Usage Example
|
|
35
36
|
|
|
36
37
|
```typescript
|
|
37
38
|
import { MediaGalleryManager, MediaItem } from './media-gallery-manager';
|
|
38
39
|
|
|
39
|
-
const [
|
|
40
|
-
const [uploading, setUploading] = useState(false);
|
|
40
|
+
const [gallery, setGallery] = useState<MediaItem[]>([]);
|
|
41
41
|
|
|
42
|
-
async function
|
|
43
|
-
setUploading(true);
|
|
42
|
+
async function uploadToStorage(file: File, mediaType: 'image' | 'video') {
|
|
44
43
|
const formData = new FormData();
|
|
45
44
|
formData.append('file', file);
|
|
46
45
|
const res = await fetch('/api/upload', { method: 'POST', body: formData });
|
|
47
46
|
const { url } = await res.json();
|
|
48
|
-
setUploading(false);
|
|
49
47
|
return url;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
<MediaGalleryManager
|
|
53
|
-
media={
|
|
54
|
-
onChange={
|
|
55
|
-
onUpload={
|
|
56
|
-
isUploading={
|
|
51
|
+
media={gallery}
|
|
52
|
+
onChange={setGallery}
|
|
53
|
+
onUpload={uploadToStorage}
|
|
54
|
+
isUploading={false}
|
|
57
55
|
/>
|
|
58
56
|
```
|
|
59
57
|
|
|
60
|
-
|
|
58
|
+
## Notes
|
|
59
|
+
|
|
60
|
+
- Videos (`video`, `demo`) render via the internal `<Video>` component (MuxPlayer/HLS); images use Next.js `<Image>` with `fill` + `object-cover`.
|
|
61
|
+
- `display_order` is recalculated as array index on every reorder or delete — keep it as the source of truth for server persistence.
|
|
62
|
+
- The `showInModal` prop is wired to props but the modal rendering path is not yet implemented in this file.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 4b4394b8492af21f51a0eb384983e584 -->
|
|
2
|
+
Provides Mux CDN origin constants and playback URL utilities in a server-safe (non-`'use client'`) module, enabling both server-side and client-side code to import Mux configuration without triggering Next.js client-reference poisoning.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `MUX_STREAM_ORIGIN` | `const string` | Base URL for Mux HLS playback and MP4 renditions (`https://stream.mux.com`) |
|
|
9
|
+
| `MUX_IMAGE_ORIGIN` | `const string` | Base URL for Mux server-generated thumbnails (`https://image.mux.com`) |
|
|
10
|
+
| `MuxMaxResolution` | `type` | Union of valid Mux `max_resolution` modifier values: `'720p' \| '1080p' \| '1440p' \| '2160p'` |
|
|
11
|
+
| `toMuxPreviewUrl` | `function` | Appends a `max_resolution` query param to Mux HLS URLs for bandwidth-capped preview players |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { MUX_STREAM_ORIGIN, MUX_IMAGE_ORIGIN, toMuxPreviewUrl } from './mux-origins'
|
|
17
|
+
|
|
18
|
+
// Server-side hostname comparison (safe — no client stubs)
|
|
19
|
+
const streamHost = new URL(MUX_STREAM_ORIGIN).hostname // 'stream.mux.com'
|
|
20
|
+
|
|
21
|
+
// Cap renditions for a small hover-card preview player
|
|
22
|
+
const rawUrl = 'https://stream.mux.com/abc123.m3u8'
|
|
23
|
+
const previewUrl = toMuxPreviewUrl(rawUrl, '720p')
|
|
24
|
+
// → 'https://stream.mux.com/abc123.m3u8?max_resolution=720p'
|
|
25
|
+
|
|
26
|
+
// Pass-through cases (no modification)
|
|
27
|
+
toMuxPreviewUrl('https://example.supabase.co/clip.mp4') // non-Mux host
|
|
28
|
+
toMuxPreviewUrl('https://stream.mux.com/abc123.mp4') // non-.m3u8 path
|
|
29
|
+
toMuxPreviewUrl('https://stream.mux.com/abc123.m3u8?token=xyz') // signed URL
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Pass-Through Conditions
|
|
33
|
+
|
|
34
|
+
`toMuxPreviewUrl` returns the original URL unchanged when:
|
|
35
|
+
|
|
36
|
+
- Host is not `stream.mux.com` (e.g. Supabase MP4s, YouTube)
|
|
37
|
+
- Path does not end in `.m3u8` (e.g. MP4 renditions)
|
|
38
|
+
- URL already contains a `?token=` param (Mux prohibits loose modifiers alongside JWT tokens)
|
|
39
|
+
- URL string is unparseable
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- **Server safety:** Intentionally omits `'use client'` so server modules (webhook handlers, Next.js middleware, `lib/config/mux-config.ts`) can import without crashing at Vercel build time. Re-exported from `use-video-warmup.ts` for backward compatibility.
|
|
44
|
+
- **Safari compatibility:** The `max_resolution` param works at the HLS manifest level, which is the only effective rendition cap on Safari's native HLS player where `hls.js` is unavailable.
|
|
45
|
+
|
|
46
|
+
**Source:** [`mux-origins.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mux-origins.ts)
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Unified SEO
|
|
1
|
+
<!-- source-hash: 01d000415365defb1a9149173d637f01 -->
|
|
2
|
+
Unified SEO and Open Graph editor component that combines meta fields, OG image upload, and a live preview panel into a single composable UI block. Designed for reuse across blog posts, case studies, and product releases.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `OGEditorPreview`
|
|
7
|
-
|
|
8
|
-
- **SEO Title
|
|
9
|
-
- **SEO Description
|
|
10
|
-
- **OG Preview**
|
|
7
|
+
The primary exported function component. Renders a card-style panel containing:
|
|
8
|
+
- **SEO Title** and **SEO Keywords** inputs (side-by-side on large screens)
|
|
9
|
+
- **SEO Description** textarea and **OG Image** upload slot (side-by-side on large screens)
|
|
10
|
+
- **OG Preview** section rendered below a divider
|
|
11
11
|
|
|
12
12
|
### `OGEditorPreviewProps`
|
|
13
|
-
|
|
13
|
+
Interface defining all accepted props:
|
|
14
14
|
|
|
15
15
|
| Prop | Type | Description |
|
|
16
|
-
|
|
17
|
-
| `seoTitle`
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `seoTitle` | `string` | Controlled SEO title value |
|
|
18
|
+
| `seoDescription` | `string` | Controlled meta description value |
|
|
19
|
+
| `seoKeywords` | `string` | Controlled keywords value |
|
|
18
20
|
| `ogImageUrl` | `string` | Current OG image URL |
|
|
19
21
|
| `title` / `summary` / `featuredImage` | `string` | Auto-populate sources from parent content |
|
|
20
|
-
| `categories` | `Array<{name, slug}>` | Optional category
|
|
21
|
-
| `OGImageUploadComponent` | `React.ReactNode` | Upload
|
|
22
|
-
| `OGPreviewComponent` | `React.ReactNode` | Preview
|
|
23
|
-
| `disabled` | `boolean` | Disables all inputs |
|
|
22
|
+
| `categories` | `Array<{name, slug}>` | Optional category list for auto-population |
|
|
23
|
+
| `OGImageUploadComponent` | `React.ReactNode` | Upload UI injected from parent |
|
|
24
|
+
| `OGPreviewComponent` | `React.ReactNode` | Preview UI injected from parent |
|
|
25
|
+
| `disabled` | `boolean` | Disables all inputs (default: `false`) |
|
|
26
|
+
| `className` | `string` | Additional CSS classes |
|
|
24
27
|
|
|
25
28
|
## Usage Example
|
|
26
29
|
|
|
@@ -28,20 +31,22 @@ Full interface defining:
|
|
|
28
31
|
import { OGEditorPreview } from './og-editor-preview';
|
|
29
32
|
|
|
30
33
|
<OGEditorPreview
|
|
31
|
-
seoTitle={
|
|
32
|
-
seoDescription={
|
|
33
|
-
seoKeywords={
|
|
34
|
-
ogImageUrl={
|
|
34
|
+
seoTitle={form.seoTitle}
|
|
35
|
+
seoDescription={form.seoDescription}
|
|
36
|
+
seoKeywords={form.seoKeywords}
|
|
37
|
+
ogImageUrl={form.ogImageUrl}
|
|
35
38
|
title={post.title}
|
|
36
39
|
summary={post.summary}
|
|
37
40
|
featuredImage={post.featuredImage}
|
|
38
|
-
onSeoTitleChange={(
|
|
39
|
-
onSeoDescriptionChange={(
|
|
40
|
-
onSeoKeywordsChange={(
|
|
41
|
-
onOgImageUrlChange={(
|
|
42
|
-
OGImageUploadComponent={<
|
|
43
|
-
OGPreviewComponent={<OGPreview
|
|
41
|
+
onSeoTitleChange={(v) => setForm({ ...form, seoTitle: v })}
|
|
42
|
+
onSeoDescriptionChange={(v) => setForm({ ...form, seoDescription: v })}
|
|
43
|
+
onSeoKeywordsChange={(v) => setForm({ ...form, seoKeywords: v })}
|
|
44
|
+
onOgImageUrlChange={(v) => setForm({ ...form, ogImageUrl: v })}
|
|
45
|
+
OGImageUploadComponent={<ImageUploader onUpload={handleUpload} />}
|
|
46
|
+
OGPreviewComponent={<OGPreview url={previewUrl} title={form.seoTitle} />}
|
|
44
47
|
/>
|
|
45
48
|
```
|
|
46
49
|
|
|
47
|
-
>
|
|
50
|
+
> **Note:** `OGImageUploadComponent` and `OGPreviewComponent` are injected as render props (`React.ReactNode`), keeping upload and preview logic decoupled from this component. `ogImageUrl` and `onOgImageUrlChange` are declared in the interface but not consumed internally — they are intended for use by the injected child components via the parent's closure.
|
|
51
|
+
|
|
52
|
+
**Source:** [`og-editor-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/og-editor-preview.tsx)
|
|
@@ -1,31 +1,39 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: cd5e91e4f786cf7bf20df7ec3e71c11d -->
|
|
2
|
+
Renders a horizontal group of OS type icons, optionally truncating to a maximum count with a "+N more" overflow indicator.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `OSTypeBadgeGroup`
|
|
7
|
+
|
|
8
|
+
The primary export. Iterates over an array of OS type strings and renders an [`OSTypeBadge`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/os-type-badge/os-type-badge.tsx) (icon-only mode) for each entry. Returns `null` when `osTypes` is empty or undefined.
|
|
9
|
+
|
|
10
|
+
### `OSTypeBadgeGroupProps`
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `osTypes` | `string[]` | — | OS type strings (case-insensitive, alias-aware) |
|
|
15
|
+
| `className` | `string` | `''` | Additional CSS classes for the wrapper |
|
|
16
|
+
| `iconSize` | `string` | `'w-5 h-5'` | Tailwind size classes applied to each icon |
|
|
17
|
+
| `maxDisplay` | `number` | — | Cap on visible badges; excess shown as `+N more` |
|
|
10
18
|
|
|
11
19
|
## Usage Example
|
|
12
20
|
|
|
13
21
|
```typescript
|
|
14
22
|
import { OSTypeBadgeGroup } from './os-type-badge-group'
|
|
15
23
|
|
|
16
|
-
//
|
|
24
|
+
// Show all three platform icons
|
|
17
25
|
<OSTypeBadgeGroup osTypes={['windows', 'darwin', 'linux']} />
|
|
18
26
|
|
|
19
|
-
//
|
|
20
|
-
<OSTypeBadgeGroup
|
|
21
|
-
osTypes={['
|
|
22
|
-
maxDisplay={
|
|
23
|
-
iconSize="w-
|
|
24
|
-
className="my-4"
|
|
27
|
+
// Cap at 2, renders "+1 more" for the third
|
|
28
|
+
<OSTypeBadgeGroup
|
|
29
|
+
osTypes={['windows', 'macos', 'linux']}
|
|
30
|
+
maxDisplay={2}
|
|
31
|
+
iconSize="w-4 h-4"
|
|
25
32
|
/>
|
|
26
33
|
|
|
27
|
-
//
|
|
28
|
-
<OSTypeBadgeGroup
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
// Custom wrapper styling
|
|
35
|
+
<OSTypeBadgeGroup
|
|
36
|
+
osTypes={['linux']}
|
|
37
|
+
className="mt-2"
|
|
38
|
+
/>
|
|
39
|
+
```
|
|
@@ -1,38 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: abfd76b408caa3d26e7e71712dadbe88 -->
|
|
2
|
+
Displays operating system type with an icon and label, automatically normalizing OS type strings from various formats and aliases. Exports three focused sub-components for flexible rendering.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `OSTypeBadge` | `React.FC` | Full badge with icon + label (default), icon-only, or label-only rendering |
|
|
9
|
+
| `OSTypeIcon` | `React.FC` | Convenience wrapper — renders only the OS icon |
|
|
10
|
+
| `OSTypeLabel` | `React.FC` | Convenience wrapper — renders only the OS label text |
|
|
11
|
+
| `OSTypeBadgeProps` | `interface` | Props interface for `OSTypeBadge` |
|
|
12
|
+
|
|
13
|
+
### `OSTypeBadgeProps`
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `osType` | `string` | — | OS type string (case-insensitive, handles aliases) |
|
|
18
|
+
| `className` | `string` | `''` | Additional CSS classes |
|
|
19
|
+
| `iconOnly` | `boolean` | `false` | Render icon only, no label |
|
|
20
|
+
| `labelOnly` | `boolean` | `false` | Render label only, no icon |
|
|
21
|
+
| `iconSize` | `string` | `'w-4 h-4'` | Tailwind size classes for the icon |
|
|
22
|
+
| `iconColor` | `string` | `var(--color-text-secondary)` | Icon fill/stroke color |
|
|
23
|
+
| `rightIcon` | `React.ReactNode` | `null` | Optional trailing icon element |
|
|
10
24
|
|
|
11
25
|
## Usage Example
|
|
12
26
|
|
|
13
27
|
```typescript
|
|
14
28
|
import { OSTypeBadge, OSTypeIcon, OSTypeLabel } from './os-type-badge'
|
|
15
29
|
|
|
16
|
-
// Full badge
|
|
30
|
+
// Full badge: icon + label
|
|
17
31
|
<OSTypeBadge osType="windows" />
|
|
18
32
|
<OSTypeBadge osType="Darwin" />
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<OSTypeBadge
|
|
31
|
-
osType="windows"
|
|
32
|
-
className="bg-blue-100"
|
|
33
|
-
iconColor="#0078d4"
|
|
34
|
-
rightIcon={<ChevronRight />}
|
|
33
|
+
|
|
34
|
+
// Icon only (e.g. compact table cell)
|
|
35
|
+
<OSTypeIcon osType="Ubuntu" size="w-5 h-5" />
|
|
36
|
+
|
|
37
|
+
// Label only (e.g. plain text context)
|
|
38
|
+
<OSTypeLabel osType="linux" className="font-medium" />
|
|
39
|
+
|
|
40
|
+
// Badge with trailing action icon
|
|
41
|
+
<OSTypeBadge
|
|
42
|
+
osType="windows"
|
|
43
|
+
rightIcon={<ChevronRightIcon className="w-3 h-3" />}
|
|
35
44
|
/>
|
|
45
|
+
|
|
46
|
+
// Unknown / missing OS type
|
|
47
|
+
<OSTypeBadge osType={undefined} labelOnly /> // renders "Unknown"
|
|
48
|
+
<OSTypeBadge osType={undefined} /> // renders null
|
|
36
49
|
```
|
|
37
50
|
|
|
38
|
-
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- OS type strings are normalized via `normalizeOSType` from [`os-utils`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/os-utils.ts), so values like `"Darwin"`, `"ubuntu"`, or `"win32"` resolve correctly.
|
|
54
|
+
- When `osType` is missing and `labelOnly` is `false`, the component returns `null` (safe for conditional rendering).
|
|
55
|
+
- All three exports set a `displayName` for clear identification in React DevTools.
|