@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,35 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A reusable React component for managing a
|
|
1
|
+
<!-- source-hash: e6737cc6f4757d68e83c3688abe95603 -->
|
|
2
|
+
A reusable React client component for managing a list of collapsible changelog entries, supporting add, remove, expand/collapse, field editing, and optional per-entry public/internal visibility toggling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ChangelogManager` (default export)
|
|
7
7
|
|
|
8
|
-
A controlled
|
|
8
|
+
A controlled component that renders a titled list of `ChangelogEntry` items with accordion-style expand/collapse behavior.
|
|
9
9
|
|
|
10
10
|
**Props (`ChangelogManagerProps`):**
|
|
11
11
|
|
|
12
12
|
| Prop | Type | Description |
|
|
13
|
-
|
|
13
|
+
|---|---|---|
|
|
14
14
|
| `title` | `string` | Section label displayed above the entry list |
|
|
15
15
|
| `entries` | `ChangelogEntry[]` | Controlled array of changelog entries |
|
|
16
16
|
| `onChange` | `(entries: ChangelogEntry[]) => void` | Callback fired on any mutation |
|
|
17
|
-
| `className` | `string?` | Optional
|
|
18
|
-
| `expandAll` | `boolean?` | When `true`, expands all
|
|
19
|
-
| `showVisibilityToggle` | `boolean?` |
|
|
17
|
+
| `className` | `string?` | Optional CSS class override |
|
|
18
|
+
| `expandAll` | `boolean?` | When `true`, expands all entries (e.g., after AI enrichment) |
|
|
19
|
+
| `showVisibilityToggle` | `boolean?` | Enables per-entry Eye/EyeOff toggle for investor update flows |
|
|
20
20
|
|
|
21
21
|
**Internal state:**
|
|
22
|
-
- `expandedIndices` — `Set<number>` tracking which
|
|
22
|
+
- `expandedIndices` — `Set<number>` tracking which entries are currently expanded
|
|
23
23
|
|
|
24
|
-
**Key
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
| `updateEntry(index, field, value)` | Immutably updates a single field on an entry |
|
|
31
|
-
| `toggleExpanded(index)` | Toggles accordion open/close state |
|
|
32
|
-
| `toggleVisibility(index)` | Flips `visibility` between `'public'` and `'internal'` |
|
|
24
|
+
**Key handlers:**
|
|
25
|
+
- `addEntry` — appends a blank entry and auto-expands it; defaults `visibility` to `'public'` when `showVisibilityToggle` is enabled
|
|
26
|
+
- `removeEntry` — filters out the entry and re-indexes `expandedIndices`
|
|
27
|
+
- `updateEntry` — immutably patches a single field on an entry
|
|
28
|
+
- `toggleExpanded` — toggles an index in the expanded set
|
|
29
|
+
- `toggleVisibility` — flips an entry between `'public'` and `'internal'`
|
|
33
30
|
|
|
34
31
|
## Usage Example
|
|
35
32
|
|
|
@@ -39,14 +36,14 @@ import type { ChangelogEntry } from '../../types/product-release';
|
|
|
39
36
|
|
|
40
37
|
const [entries, setEntries] = useState<ChangelogEntry[]>([]);
|
|
41
38
|
|
|
42
|
-
// Basic product release
|
|
39
|
+
// Basic product release usage
|
|
43
40
|
<ChangelogManager
|
|
44
41
|
title="What's New"
|
|
45
42
|
entries={entries}
|
|
46
43
|
onChange={setEntries}
|
|
47
44
|
/>
|
|
48
45
|
|
|
49
|
-
// Investor update with visibility
|
|
46
|
+
// Investor update usage with visibility controls
|
|
50
47
|
<ChangelogManager
|
|
51
48
|
title="Highlights"
|
|
52
49
|
entries={entries}
|
|
@@ -56,4 +53,4 @@ const [entries, setEntries] = useState<ChangelogEntry[]>([]);
|
|
|
56
53
|
/>
|
|
57
54
|
```
|
|
58
55
|
|
|
59
|
-
> **
|
|
56
|
+
> **Source:** [`changelog-manager.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/changelog-manager.tsx)
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 7694600bf3dea6d86fe13d3363d55f23 -->
|
|
2
|
+
A unified React component for displaying command strings with optional action buttons, monospace formatting, and configurable line clamping.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
|
9
|
-
|
|
10
|
-
| `CommandBoxAction` | Defines a button with `label`, `onClick`, optional `variant`, `icon`, `disabled`, and `loading` states |
|
|
11
|
-
| `CommandBoxProps` | Component props including `command` (required), `title`, `primaryAction`, `secondaryAction`, layout classes, and `maxLines` |
|
|
8
|
+
- **`CommandBoxAction`** — Defines a button's `label`, `onClick` handler, optional `variant` (`accent` | `outline` | `transparent` | `destructive`), `icon`, `disabled`, and `loading` states.
|
|
9
|
+
- **`CommandBoxProps`** — Component props including `command` (required), `title`, `primaryAction`, `secondaryAction`, `className`, `commandClassName`, and `maxLines`.
|
|
12
10
|
|
|
13
11
|
### Exports
|
|
14
12
|
|
|
15
|
-
- **`CommandBox`** — Main component rendering
|
|
16
|
-
- **`CommandBoxAction`** — Interface for action button configuration
|
|
17
|
-
- **`CommandBoxProps`** — Interface for component props
|
|
13
|
+
- **`CommandBox`** — Main component rendering a styled command display area with up to two action buttons (primary stacked right, secondary before primary). Supports responsive flex layout (`flex-col` → `md:flex-row`).
|
|
18
14
|
|
|
19
15
|
## Usage Example
|
|
20
16
|
|
|
@@ -30,21 +26,20 @@ import { Copy, Play } from 'lucide-react'
|
|
|
30
26
|
label: 'Copy Command',
|
|
31
27
|
onClick: () => navigator.clipboard.writeText(command),
|
|
32
28
|
icon: <Copy className="w-5 h-5" />,
|
|
33
|
-
variant: 'accent'
|
|
29
|
+
variant: 'accent',
|
|
34
30
|
}}
|
|
35
31
|
secondaryAction={{
|
|
36
|
-
label: 'Run on Machine',
|
|
32
|
+
label: 'Run on Current Machine',
|
|
37
33
|
onClick: handleRun,
|
|
38
34
|
icon: <Play className="w-5 h-5" />,
|
|
39
35
|
variant: 'outline',
|
|
40
|
-
loading: isRunning
|
|
36
|
+
loading: isRunning,
|
|
41
37
|
}}
|
|
42
38
|
/>
|
|
43
39
|
```
|
|
44
40
|
|
|
45
41
|
## Notes
|
|
46
42
|
|
|
47
|
-
- **Line clamping** uses a static `lineClampClasses` map (`1
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- `variant` defaults to `'accent'` for primary and `'outline'` for secondary if not specified.
|
|
43
|
+
- **Line clamping** uses a static `lineClampClasses` map (`1`–`6`) to satisfy Tailwind's build-time static class requirement. Set `maxLines={0}` (default) for unlimited display.
|
|
44
|
+
- Button variants default to `accent` for primary and `outline` for secondary if not specified.
|
|
45
|
+
- Source: [`command-box.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/command-box.tsx)
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: e1202aba2fe24c4e9ad695931c0b8d92 -->
|
|
2
|
+
A reusable React component for editing entity summaries (e.g., Release Summary, Interview Summary) with built-in support for AI generation badges and confidence score display.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
### `EntitySummaryEditor`
|
|
7
|
+
The primary exported component rendering a labeled textarea with optional AI metadata indicators.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
### `EntitySummaryEditorProps`
|
|
10
|
+
TypeScript interface defining the component's configuration:
|
|
9
11
|
|
|
10
12
|
| Prop | Type | Default | Description |
|
|
11
|
-
|
|
12
|
-
| `summary` | `string` | `''` |
|
|
13
|
-
| `onSummaryChange` | `(value: string) => void` |
|
|
14
|
-
| `isAIGenerated` | `boolean` | `false` | Shows
|
|
15
|
-
| `summaryConfidence` | `number \| null` | — | Confidence score (0–100) |
|
|
16
|
-
| `label` | `string` | `'Summary (Markdown supported)'` | Field label |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `summary` | `string` | `''` | Current summary text value |
|
|
15
|
+
| `onSummaryChange` | `(value: string) => void` | — | Change handler callback |
|
|
16
|
+
| `isAIGenerated` | `boolean` | `false` | Shows `AIGeneratedBadge` when `true` |
|
|
17
|
+
| `summaryConfidence` | `number \| null` | — | Confidence score (0–100) shown via `ConfidenceBadge` |
|
|
18
|
+
| `label` | `string` | `'Summary (Markdown supported)'` | Field label text |
|
|
17
19
|
| `helperText` | `string` | `'Entity summary...'` | Subtext below label |
|
|
18
20
|
| `placeholder` | `string` | `'Brief summary...'` | Textarea placeholder |
|
|
19
|
-
| `minHeight` | `number` | `200` | Minimum height in
|
|
21
|
+
| `minHeight` | `number` | `200` | Minimum textarea height in pixels |
|
|
20
22
|
| `disabled` | `boolean` | `false` | Disables the textarea |
|
|
21
|
-
| `className` | `string` | `''` |
|
|
23
|
+
| `className` | `string` | `''` | Additional CSS classes on the container |
|
|
22
24
|
|
|
23
25
|
## Usage Example
|
|
24
26
|
|
|
@@ -35,12 +37,15 @@ function ReleaseForm() {
|
|
|
35
37
|
isAIGenerated={true}
|
|
36
38
|
summaryConfidence={87}
|
|
37
39
|
label="Release Summary (Markdown supported)"
|
|
38
|
-
helperText="Displayed on release cards and detail page."
|
|
39
40
|
placeholder="Describe this release..."
|
|
40
|
-
minHeight={
|
|
41
|
+
minHeight={250}
|
|
41
42
|
/>
|
|
42
43
|
);
|
|
43
44
|
}
|
|
44
45
|
```
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- Markdown is supported in the textarea value but rendering is handled upstream by the consumer.
|
|
50
|
+
- `ConfidenceBadge` only renders when `summaryConfidence` is a non-null, non-undefined number.
|
|
51
|
+
- Uses ODS design tokens (`ods-text-primary`, `ods-border`, `ods-card`) for theming consistency.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: 5f96942688ffceb3aba7f0e1cb5d04a5 -->
|
|
2
|
+
Renders a row of OpenFrame-styled tag badges from a flat entity-tags association array, with optional click-through filtering and overflow collapsing.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `EntityTagBadges` (exported component)
|
|
7
|
+
The single canonical tag-badge renderer for the entire product. Accepts a `TagAssoc[]` array and maps each entry to a `StatusBadge` chip. Returns `null` when the tag list is empty.
|
|
8
|
+
|
|
9
|
+
### `TAG_BADGE_CLASS` (exported constant)
|
|
10
|
+
The shared CSS class string (`bg-ods-card border border-ods-border`) that defines the OpenFrame tag chip skin. Exported so other components (e.g. `FaqAccordion` section badges) can reuse the identical appearance without duplicating styles.
|
|
11
|
+
|
|
12
|
+
### Props
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Description |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `tags` | `TagAssoc[] \| null` | Flat association array from entity hydration |
|
|
17
|
+
| `basePath` | `string` | When set, wraps each slugged badge in a `next/link` to `${basePath}?tags=${slug}` |
|
|
18
|
+
| `max` | `number` | Cap on visible badges; extras collapse into a `+N` overflow badge |
|
|
19
|
+
| `className` | `string` | Extra classes on the wrapper `div` |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Non-interactive display
|
|
25
|
+
<EntityTagBadges tags={article.article_tags} />
|
|
26
|
+
|
|
27
|
+
// Clickable badges linking to filtered list
|
|
28
|
+
<EntityTagBadges
|
|
29
|
+
tags={article.article_tags}
|
|
30
|
+
basePath="/blog"
|
|
31
|
+
max={5}
|
|
32
|
+
className="mt-2"
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
// Reuse the tag skin on a custom chip
|
|
36
|
+
import { TAG_BADGE_CLASS } from './entity-tag-badges'
|
|
37
|
+
|
|
38
|
+
<StatusBadge text="SECTION" variant="card" className={TAG_BADGE_CLASS} />
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Overflow behavior:** `max={0}` shows no badges; `max={null | undefined}` shows all. Tags without a `slug` render as non-interactive even when `basePath` is provided.
|
|
42
|
+
|
|
43
|
+
> **Source:** [`entity-tag-badges.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/entity-tag-badges.tsx)
|
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders the video block for entity detail
|
|
1
|
+
<!-- source-hash: 995d46df2c0fb31513779a266d32e0e3 -->
|
|
2
|
+
Renders the video block for a public entity detail page, combining a full video, AI-generated highlights, markdown summary, and video bites strip into a single composable section.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
### `EntityVideoSectionProps`
|
|
15
|
-
Full interface for controlling content and behavior:
|
|
16
|
-
|
|
17
|
-
| Prop | Type | Description |
|
|
18
|
-
|------|------|-------------|
|
|
19
|
-
| `youtubeUrl` | `string \| null` | YouTube URL (takes priority over `mainVideoUrl`) |
|
|
20
|
-
| `mainVideoUrl` | `string \| null` | Uploaded video URL |
|
|
21
|
-
| `highlightVideoUrl` | `string \| null` | AI-generated highlight clip |
|
|
22
|
-
| `captionsUrl` | `string \| null` | HTTPS URL to a VTT captions file |
|
|
23
|
-
| `MarkdownRenderer` | `ComponentType` | Injected renderer for summary markdown |
|
|
24
|
-
| `priority` | `boolean` | LCP hint for eager poster loading |
|
|
25
|
-
| `srtContent` | `string \| null` | Deprecated — use `captionsUrl` |
|
|
6
|
+
**`EntityVideoSection`** — Primary export. Orchestrates three sub-sections:
|
|
7
|
+
- **Tabbed video player** — shows "Full Video" / "Highlights" tabs when both exist; falls back to a single `<Video>` if only one is available. YouTube URL takes precedence over `mainVideoUrl` when both are provided.
|
|
8
|
+
- **Markdown summary** — Rendered via an injected `MarkdownRenderer` component when `videoSummary` is present.
|
|
9
|
+
- **Video bites strip** — Scrollable `<VideoBitesStrip>` rendered when `videoBites` array is non-empty.
|
|
10
|
+
|
|
11
|
+
Returns `null` when no video, summary, or bites are available.
|
|
12
|
+
|
|
13
|
+
**`EntityVideoSectionProps`** — Full prop interface covering video URLs, captions, poster images, bites configuration, and the injected markdown renderer.
|
|
26
14
|
|
|
27
15
|
## Usage Example
|
|
28
16
|
|
|
@@ -30,22 +18,24 @@ Full interface for controlling content and behavior:
|
|
|
30
18
|
import { EntityVideoSection } from './entity-video-section';
|
|
31
19
|
import { MarkdownRenderer } from '@/components/markdown-renderer';
|
|
32
20
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
21
|
+
<EntityVideoSection
|
|
22
|
+
youtubeUrl="https://www.youtube.com/watch?v=abc123"
|
|
23
|
+
highlightVideoUrl="https://cdn.example.com/highlight.mp4"
|
|
24
|
+
highlightVideoThumbnail="https://cdn.example.com/thumb.jpg"
|
|
25
|
+
title="Product Demo"
|
|
26
|
+
videoSummary="**Overview:** This video covers..."
|
|
27
|
+
videoBites={bites}
|
|
28
|
+
bitesTitle="Key Moments"
|
|
29
|
+
bitesProfile={speakerProfile}
|
|
30
|
+
bitesHref="/events/product-demo"
|
|
31
|
+
filterPublishedBites
|
|
32
|
+
priority
|
|
33
|
+
MarkdownRenderer={MarkdownRenderer}
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
|
|
39
|
+
- `youtubeUrl` always wins over `mainVideoUrl` when both are set — resolved at the section level to keep `<Video>` single-source-per-render.
|
|
40
|
+
- `srtContent` is deprecated; use `captionsUrl` (VTT) instead.
|
|
41
|
+
- `priority` forwards an LCP hint to the full-video tab's poster image.
|
|
@@ -1,37 +1,34 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders an interactive Figma prototype viewer
|
|
1
|
+
<!-- source-hash: 498b200b8dc21bf9ce26af638e0ae002 -->
|
|
2
|
+
Renders an interactive Figma prototype viewer with responsive scaling, section navigation, and multi-device support (desktop, mobile, touch). Integrates directly with the Figma Embed API and manages iframe lifecycle states.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### Interfaces
|
|
7
|
-
- **`
|
|
8
|
-
- **`
|
|
9
|
-
- **`
|
|
10
|
-
- **`ViewMode`** — `'DESKTOP' | 'MOBILE' | 'MOBILE_TOUCH'`
|
|
11
|
-
- **`IframeState`** — `'INITIAL' | 'LOADING' | 'READY' | 'RELOADING' | 'SLEEP_RECOVERY'`
|
|
6
|
+
### Exported Interfaces
|
|
7
|
+
- **`FigmaPrototypeSection`** — Defines a navigable section with `id`, `number`, `title`, optional `description`, and per-device starting node IDs
|
|
8
|
+
- **`FigmaPrototypeViewerConfig`** — Full viewer configuration including file keys (mobile/desktop/legacy), section list, dimension overrides, and CSS class customization
|
|
9
|
+
- **`FigmaPrototypeViewerProps`** — Component props wrapping config with optional external section control
|
|
12
10
|
|
|
13
|
-
###
|
|
14
|
-
- **`
|
|
15
|
-
- **`
|
|
16
|
-
- **`
|
|
17
|
-
- **`resolveStartingPoint(config, viewMode, section?)`** — Resolves the initial prototype node via env vars → config → first section fallback
|
|
18
|
-
- **`generateEmbedUrl(...)`** — Builds the `embed.figma.com/proto` URL with all required query parameters
|
|
19
|
-
- **`renderUnifiedUI(state, handlers, config, iframeRef)`** — Pure render function producing the full component JSX from state
|
|
11
|
+
### Internal Types
|
|
12
|
+
- **`ViewMode`** — `'DESKTOP' | 'MOBILE' | 'MOBILE_TOUCH'` — determined by screen width and touch capability
|
|
13
|
+
- **`IframeState`** — Lifecycle states: `INITIAL → LOADING → READY`, plus `RELOADING` and `SLEEP_RECOVERY`
|
|
14
|
+
- **`UnifiedState`** — Single source of truth for all rendering decisions (scaling, visibility flags, navigation)
|
|
20
15
|
|
|
21
|
-
###
|
|
22
|
-
Content dimensions and file keys can be set at the environment level:
|
|
16
|
+
### Core Utility Functions
|
|
23
17
|
|
|
18
|
+
| Function | Purpose |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `getViewMode` | Classifies device based on screen width and touch support |
|
|
21
|
+
| `calculateScaling` | Computes `scale`, `marginX`, `marginY` to fit content without upscaling |
|
|
22
|
+
| `resolveFileKey` | Priority chain: env var → config field → legacy `fileKey` |
|
|
23
|
+
| `resolveStartingPoint` | Priority chain: section node → env var → config → first section |
|
|
24
|
+
| `generateEmbedUrl` | Builds Figma embed URL with correct params for device mode |
|
|
25
|
+
| `renderUnifiedUI` | Renders full UI from declarative `UnifiedState` (section selector + iframe container) |
|
|
26
|
+
|
|
27
|
+
### Configuration Priority (highest → lowest)
|
|
24
28
|
```text
|
|
25
|
-
|
|
26
|
-
NEXT_PUBLIC_FIGMA_DESKTOP_FILE_KEY
|
|
27
|
-
NEXT_PUBLIC_FIGMA_MOBILE_STARTING_POINT
|
|
28
|
-
NEXT_PUBLIC_FIGMA_DESKTOP_STARTING_POINT
|
|
29
|
-
NEXT_PUBLIC_FIGMA_MOBILE_WIDTH / _HEIGHT
|
|
30
|
-
NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH / _HEIGHT
|
|
29
|
+
NEXT_PUBLIC_FIGMA_* env vars → config props → defaults
|
|
31
30
|
```
|
|
32
31
|
|
|
33
|
-
Priority order: **env vars → config props → defaults**
|
|
34
|
-
|
|
35
32
|
## Usage Example
|
|
36
33
|
|
|
37
34
|
```typescript
|
|
@@ -40,25 +37,46 @@ import type { FigmaPrototypeViewerConfig } from './figma-prototype-viewer'
|
|
|
40
37
|
|
|
41
38
|
const config: FigmaPrototypeViewerConfig = {
|
|
42
39
|
title: 'Onboarding Flow',
|
|
43
|
-
desktopFileKey: '
|
|
44
|
-
mobileFileKey: '
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
desktopFileKey: 'abc123desktop',
|
|
41
|
+
mobileFileKey: 'abc123mobile',
|
|
42
|
+
desktopContentDimensions: { width: 1280, height: 720 },
|
|
43
|
+
mobileContentDimensions: { width: 390, height: 844 },
|
|
47
44
|
sections: [
|
|
48
45
|
{
|
|
49
|
-
id: '
|
|
46
|
+
id: 'welcome',
|
|
50
47
|
number: '01',
|
|
51
|
-
title: '
|
|
52
|
-
description: 'New user registration flow',
|
|
48
|
+
title: 'Welcome Screen',
|
|
53
49
|
startingNodeId: '1:23',
|
|
54
|
-
mobileStartingNodeId: '
|
|
50
|
+
mobileStartingNodeId: '1:45'
|
|
55
51
|
},
|
|
52
|
+
{
|
|
53
|
+
id: 'setup',
|
|
54
|
+
number: '02',
|
|
55
|
+
title: 'Account Setup',
|
|
56
|
+
startingNodeId: '2:10'
|
|
57
|
+
}
|
|
56
58
|
],
|
|
57
|
-
|
|
58
|
-
desktopContentDimensions: { width: 944, height: 600 },
|
|
59
|
+
defaultSectionId: 'welcome'
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
export default function PrototypePage() {
|
|
62
|
-
return
|
|
63
|
+
return (
|
|
64
|
+
<FigmaPrototypeViewer
|
|
65
|
+
config={config}
|
|
66
|
+
onSectionClick={(id) => console.log('Navigated to:', id)}
|
|
67
|
+
/>
|
|
68
|
+
)
|
|
63
69
|
}
|
|
64
|
-
```
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Environment variable overrides** (`.env.local`):
|
|
73
|
+
```bash
|
|
74
|
+
NEXT_PUBLIC_FIGMA_DESKTOP_FILE_KEY=your_desktop_key
|
|
75
|
+
NEXT_PUBLIC_FIGMA_MOBILE_FILE_KEY=your_mobile_key
|
|
76
|
+
NEXT_PUBLIC_FIGMA_DESKTOP_STARTING_POINT=1:23
|
|
77
|
+
NEXT_PUBLIC_FIGMA_MOBILE_STARTING_POINT=1:45
|
|
78
|
+
NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH=1280
|
|
79
|
+
NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT=720
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Source:** [`figma-prototype-viewer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/figma-prototype-viewer.tsx)
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: d381c68a67f3266ee8051c01fe38ea1d -->
|
|
2
|
+
Accessible, animated filter dropdown component with support for checkbox, radio, and multi-section filter configurations.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
- **`FilterOption`** —
|
|
8
|
-
- **`FilterSection`** —
|
|
9
|
-
- **`FiltersDropdownProps`** — Full component props including
|
|
7
|
+
- **`FilterOption`** — Defines individual filter items with `id`, `label`, `value`, optional `count`, and `type` (`'option' | 'separator'`)
|
|
8
|
+
- **`FilterSection`** — Groups related filter options with a `type` (`"checkbox" | "radio" | "select"`), optional `allowSelectAll`, and `defaultSelected`
|
|
9
|
+
- **`FiltersDropdownProps`** — Full component props including custom trigger, section definitions, callbacks, placement, and `currentFilters` for controlled state
|
|
10
10
|
|
|
11
11
|
### Internal Components
|
|
12
|
-
- **`FilterCheckbox`** —
|
|
12
|
+
- **`FilterCheckbox`** — Custom styled checkbox with accent fill and checkmark icon when selected
|
|
13
13
|
|
|
14
|
-
### Main
|
|
15
|
-
|
|
14
|
+
### Main Component: `FiltersDropdown`
|
|
15
|
+
Manages open/close animation (mount/unmount split via `shouldRender`/`isVisible`), viewport-aware placement, mobile responsiveness, outside-click and Escape-key dismissal, per-section selection state, and filter application/reset.
|
|
16
16
|
|
|
17
17
|
## Usage Example
|
|
18
18
|
|
|
@@ -25,7 +25,7 @@ const sections: FilterSection[] = [
|
|
|
25
25
|
allowSelectAll: true,
|
|
26
26
|
options: [
|
|
27
27
|
{ id: "open", label: "Open", value: "open", count: 12 },
|
|
28
|
-
{ id: "closed", label: "Closed", value: "closed", count:
|
|
28
|
+
{ id: "closed", label: "Closed", value: "closed", count: 5 },
|
|
29
29
|
],
|
|
30
30
|
},
|
|
31
31
|
]
|
|
@@ -42,7 +42,8 @@ const [appliedFilters, setAppliedFilters] = useState<Record<string, string[]>>({
|
|
|
42
42
|
/>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
45
|
+
## Notes
|
|
46
|
+
|
|
47
|
+
- **Animation**: Uses a double `requestAnimationFrame` pattern to ensure CSS transitions fire correctly on mount; `shouldRender`/`isVisible` are intentionally separate to allow smooth enter/exit without `@keyframes`.
|
|
48
|
+
- **Placement auto-correction**: Dynamically overrides the `placement` prop if the dropdown would overflow the viewport.
|
|
49
|
+
- **`currentFilters` sync**: Serialized to a JSON string for stable `useEffect` dependency comparison, avoiding infinite re-render loops.
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Reusable configuration
|
|
1
|
+
<!-- source-hash: 3a44a8796eef8d6a87cab9dd243384f5 -->
|
|
2
|
+
Reusable React configuration panel for highlight video generation settings, providing duration selection and subtitle burning controls in a unified horizontal layout.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `HighlightConfigSection`
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
A client-side React component that renders two controls side-by-side:
|
|
9
|
+
|
|
10
|
+
- **Target Duration Select** — dropdown offering 1–5 minute presets (3 minutes recommended) via a controlled `<Select>` component
|
|
11
|
+
- **Skip Subtitle Burning Checkbox** — toggle to bypass subtitle burn-in during video processing
|
|
8
12
|
|
|
9
13
|
### `HighlightConfigSectionProps`
|
|
10
|
-
| Prop | Type | Description |
|
|
11
|
-
|------|------|-------------|
|
|
12
|
-
| `targetDurationSeconds` | `number` | Current selected duration in seconds |
|
|
13
|
-
| `onTargetDurationChange` | `(seconds: number) => void` | Callback fired on duration change |
|
|
14
|
-
| `skipSubtitleBurning` | `boolean` | Whether subtitle burning is skipped |
|
|
15
|
-
| `onSkipSubtitleBurningChange` | `(skip: boolean) => void` | Callback fired on subtitle toggle |
|
|
16
|
-
| `disabled` | `boolean?` | Disables all controls (default: `false`) |
|
|
17
|
-
| `className` | `string?` | Additional CSS class override |
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
| Prop | Type | Description |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `targetDurationSeconds` | `number` | Current duration value in seconds |
|
|
18
|
+
| `onTargetDurationChange` | `(seconds: number) => void` | Fires on duration selection change |
|
|
19
|
+
| `skipSubtitleBurning` | `boolean` | Current subtitle skip state |
|
|
20
|
+
| `onSkipSubtitleBurningChange` | `(skip: boolean) => void` | Fires on checkbox toggle |
|
|
21
|
+
| `disabled` | `boolean` | Disables all controls (default: `false`) |
|
|
22
|
+
| `className` | `string` | Optional extra CSS classes |
|
|
20
23
|
|
|
21
24
|
## Usage Example
|
|
22
25
|
|
|
23
26
|
```typescript
|
|
24
27
|
import { HighlightConfigSection } from './highlight-config-section';
|
|
25
28
|
|
|
26
|
-
function
|
|
27
|
-
const [duration, setDuration] = useState(180);
|
|
28
|
-
const [skipSubs, setSkipSubs] = useState(false);
|
|
29
|
+
function MyHighlightForm() {
|
|
30
|
+
const [duration, setDuration] = React.useState(180); // 3 minutes default
|
|
31
|
+
const [skipSubs, setSkipSubs] = React.useState(false);
|
|
29
32
|
|
|
30
33
|
return (
|
|
31
34
|
<HighlightConfigSection
|
|
@@ -39,4 +42,4 @@ function VideoEditor() {
|
|
|
39
42
|
}
|
|
40
43
|
```
|
|
41
44
|
|
|
42
|
-
> **Note:**
|
|
45
|
+
> **Note:** This component is designed to be shared across `CustomerInterview` and `ProductRelease` entity flows. View the source at [`highlight-config-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/highlight-config-section.tsx).
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Unified
|
|
1
|
+
<!-- source-hash: 3e63796e9b4bf8c671743bc94b9dd017 -->
|
|
2
|
+
Unified section component that combines highlight video configuration, AI-powered generation, and video preview/upload into a single composable UI block.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `HighlightVideoCombinedSection`
|
|
7
|
-
The primary export.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
The primary export. Orchestrates three sub-sections in a vertical stack:
|
|
8
|
+
|
|
9
|
+
1. **`HighlightConfigSection`** — Duration and subtitle burn settings
|
|
10
|
+
2. **`AIEnrichSection`** — Generation trigger button with status feedback and cancel support
|
|
11
|
+
3. **Preview + Upload Panel** — Displays the current highlight video or an empty state, with a manual upload button
|
|
11
12
|
|
|
12
13
|
### `HighlightVideoCombinedSectionProps`
|
|
13
|
-
Full interface grouping props into
|
|
14
|
+
Full interface grouping props into three logical namespaces:
|
|
14
15
|
- **Config** — `targetDurationSeconds`, `skipSubtitleBurning`, `configDisabled`
|
|
15
|
-
- **Generation** — `onGenerateHighlight`, `isProcessing`, `canEnrich`, `requiredFields`, `status`
|
|
16
|
-
- **Preview** — `highlightVideoUrl`, `
|
|
17
|
-
- **Common** — `className`, `title`, `description`, `buttonLabel`
|
|
16
|
+
- **Generation** — `onGenerateHighlight`, `isProcessing`, `canEnrich`, `requiredFields`, `status`, `hasResult`
|
|
17
|
+
- **Preview** — `highlightVideoUrl`, `highlightVideoSource`, `onUpload`, `onDelete`, `renderVideoPreview`
|
|
18
18
|
|
|
19
19
|
## Usage Example
|
|
20
20
|
|
|
@@ -25,23 +25,32 @@ Full interface grouping props into four logical namespaces:
|
|
|
25
25
|
onTargetDurationChange={(s) => setDuration(s)}
|
|
26
26
|
skipSubtitleBurning={false}
|
|
27
27
|
onSkipSubtitleBurningChange={(v) => setSkipSubs(v)}
|
|
28
|
+
|
|
28
29
|
// Generation
|
|
29
30
|
onGenerateHighlight={handleGenerate}
|
|
30
31
|
isProcessing={isGenerating}
|
|
31
|
-
canEnrich={
|
|
32
|
-
requiredFields={[{
|
|
33
|
-
status={
|
|
34
|
-
statusMessage={jobMessage}
|
|
35
|
-
onCancel={handleCancel}
|
|
32
|
+
canEnrich={hasTranscription}
|
|
33
|
+
requiredFields={[{ field: 'transcription', label: 'Transcription' }]}
|
|
34
|
+
status={generationStatus}
|
|
36
35
|
hasResult={!!highlightUrl}
|
|
36
|
+
showCancel
|
|
37
|
+
onCancel={handleCancel}
|
|
38
|
+
|
|
37
39
|
// Preview
|
|
38
40
|
highlightVideoUrl={highlightUrl}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
highlightVideoSource="ai_generated"
|
|
42
|
+
highlightVideoDurationMs={118000}
|
|
43
|
+
onUpload={async (file) => uploadToStorage(file)}
|
|
44
|
+
onDelete={async () => deleteHighlight()}
|
|
41
45
|
renderVideoPreview={({ videoUrl, title, thumbnailUrl, onDelete }) => (
|
|
42
|
-
<VideoPlayer url={videoUrl} thumbnail={thumbnailUrl} onDelete={onDelete} />
|
|
46
|
+
<VideoPlayer url={videoUrl} title={title} thumbnail={thumbnailUrl} onDelete={onDelete} />
|
|
43
47
|
)}
|
|
44
48
|
/>
|
|
45
49
|
```
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- `renderVideoPreview` follows a render-prop pattern, giving callers full control over the player UI.
|
|
54
|
+
- The upload button creates a hidden `<input type="file">` via `document.createElement` — no DOM ref required.
|
|
55
|
+
- Button label auto-toggles between `"Generate Highlight"` and `"Regenerate Highlight"` based on `hasResult`.
|
|
56
|
+
- Default description is derived from `targetDurationSeconds`: `"Generate a N-minute summary video using Claude AI + Shotstack"`.
|