@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
package/src/types/.case-study.md
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Defines TypeScript interfaces
|
|
1
|
+
<!-- source-hash: 214619bf625ae18d6ede7c3a67ec6b5b -->
|
|
2
|
+
Defines TypeScript interfaces for case study content entities in the OpenFrame platform, covering the full lifecycle from creation to publishing with video processing, SEO, and relational data support.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
7
|
|--------|------|-------------|
|
|
8
|
-
| `CaseStudy` | `interface` | Full case study record with all fields, relations, and
|
|
8
|
+
| `CaseStudy` | `interface` | Full case study record with all fields, relations, and video pipeline data |
|
|
9
9
|
| `CreateCaseStudyData` | `interface` | Payload shape for creating a new case study |
|
|
10
|
-
| `UpdateCaseStudyData` | `type` | Partial version of `CreateCaseStudyData` for
|
|
10
|
+
| `UpdateCaseStudyData` | `type` | Partial version of `CreateCaseStudyData` for PATCH operations |
|
|
11
11
|
| `CaseStudyFilters` | `interface` | Query filter options for listing/searching case studies |
|
|
12
12
|
| `CaseStudyListResponse` | `interface` | Paginated response wrapper for case study arrays |
|
|
13
13
|
|
|
14
|
+
## Field Groups (CaseStudy)
|
|
15
|
+
|
|
16
|
+
- **Story structure** — `challenge`, `solution`, `results`
|
|
17
|
+
- **Video** — `testimonial_video_url` (YouTube preferred), `main_video_url` (uploaded fallback), `video_bites`, `main_video_thumbnail`
|
|
18
|
+
- **Video processing pipeline** — `transcript`, `srt_content`, `video_summary`, `highlight_video_url`, `config` (full parity with `customer_interviews`)
|
|
19
|
+
- **SEO** — `seo_title`, `seo_description`, `seo_keywords`, `og_image_url`
|
|
20
|
+
- **Publishing** — `status` (`draft` | `ai_drafted` | `published` | `scheduled` | `archived`), `published_at`
|
|
21
|
+
- **Relations** — `msp`, `user`, `platforms`, `tags`, `customer_interview`
|
|
22
|
+
|
|
14
23
|
## Usage Example
|
|
15
24
|
|
|
16
25
|
```typescript
|
|
@@ -23,33 +32,38 @@ import type {
|
|
|
23
32
|
|
|
24
33
|
// Create a new case study
|
|
25
34
|
const payload: CreateCaseStudyData = {
|
|
26
|
-
title: 'How Acme
|
|
27
|
-
slug: 'acme-
|
|
35
|
+
title: 'How Acme MSP Cut Ticket Resolution by 40%',
|
|
36
|
+
slug: 'acme-msp-ticket-resolution',
|
|
28
37
|
status: 'draft',
|
|
29
38
|
author_id: 'uuid-author',
|
|
30
39
|
platforms: ['uuid-platform-1'],
|
|
31
|
-
tags: [
|
|
40
|
+
tags: [12, 34],
|
|
32
41
|
challenge: 'High volume of repetitive L1 tickets...',
|
|
33
|
-
solution: 'Deployed Mingo AI
|
|
34
|
-
results: '40% reduction in
|
|
35
|
-
testimonial_video_url: 'https://www.youtube.com/watch?v=
|
|
42
|
+
solution: 'Deployed Mingo AI triage automation...',
|
|
43
|
+
results: '40% reduction in mean time to resolve...',
|
|
44
|
+
testimonial_video_url: 'https://www.youtube.com/watch?v=example',
|
|
36
45
|
}
|
|
37
46
|
|
|
38
|
-
// Filter published case studies by industry
|
|
47
|
+
// Filter for published case studies by industry
|
|
39
48
|
const filters: CaseStudyFilters = {
|
|
40
|
-
industry: 'healthcare',
|
|
41
49
|
status: 'published',
|
|
50
|
+
industry: 'healthcare',
|
|
42
51
|
limit: 10,
|
|
43
52
|
offset: 0,
|
|
44
53
|
}
|
|
45
54
|
|
|
46
|
-
// Typed
|
|
55
|
+
// Typed response
|
|
47
56
|
const response: CaseStudyListResponse = await fetchCaseStudies(filters)
|
|
48
|
-
console.log(
|
|
57
|
+
response.data.forEach((cs: CaseStudy) => console.log(cs.title))
|
|
49
58
|
```
|
|
50
59
|
|
|
51
60
|
## Notes
|
|
52
61
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
- `
|
|
62
|
+
- `video_source_type` is **deprecated**; prefer URL-based detection via `testimonial_video_url` vs `main_video_url`
|
|
63
|
+
- `transcript_words_data` is intentionally omitted — server-only field
|
|
64
|
+
- `main_video_thumbnail` is optional for backward compatibility with existing consumers
|
|
65
|
+
- MSP company/industry/testimonial data is accessed through the `msp` relation, resolved via `user.msp_id`
|
|
66
|
+
|
|
67
|
+
## Source
|
|
68
|
+
|
|
69
|
+
[`case-study.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/case-study.ts)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- source-hash: 134dd81f40b3ecbbabb4fde92ba7a6a4 -->
|
|
2
|
+
Defines the canonical `ContentRef` interface — the unified shape for link/embed metadata stored in JSONB columns across investor updates, performance baselines, and other entities that surface "related content" rails. This is the single package-wide definition; all other paths (including chat components) re-export from here.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`ContentRef`** — Core interface describing a linked or embedded content item, including identity fields (`type`, `id`, `slug`, `url`), display metadata (`title`, `summary`, `image_url`, `image_bg_color`), visibility scope (`'public' | 'internal'`), and optional `targetPlatform`.
|
|
7
|
+
- **`ContentRefWithReason`** — Extension of `ContentRef` that appends a `reason: string` field, representing the placement rationale returned by the suggestion service (`/api/related-content`). Used for data transport only; never rendered by the rail.
|
|
8
|
+
|
|
9
|
+
## Usage Example
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import type { ContentRef, ContentRefWithReason } from '@openframe-oss-lib/content-ref';
|
|
13
|
+
|
|
14
|
+
// Persisting a content reference in a JSONB column
|
|
15
|
+
const ref: ContentRef = {
|
|
16
|
+
type: 'article',
|
|
17
|
+
id: 'abc-123',
|
|
18
|
+
slug: 'q1-performance-review',
|
|
19
|
+
url: 'https://example.com/q1-performance-review',
|
|
20
|
+
title: 'Q1 Performance Review',
|
|
21
|
+
summary: 'A breakdown of Q1 metrics.',
|
|
22
|
+
visibility: 'internal',
|
|
23
|
+
display_order: 1,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Consuming a suggestion-service response
|
|
27
|
+
const suggested: ContentRefWithReason = {
|
|
28
|
+
...ref,
|
|
29
|
+
reason: 'top_performer',
|
|
30
|
+
};
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
- `ContentRef` is safe for server-side use; it carries no rendering dependencies.
|
|
36
|
+
- `reason` on `ContentRefWithReason` is typed as `string` (not a narrow union) intentionally — the narrow vocabulary is hub-server only.
|
|
37
|
+
- Source: [`content-ref.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/content-ref.ts)
|
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 95f69519f0878413e2b796e8c36607d2 -->
|
|
2
|
+
Customer interview domain types defining the full data model for video-based customer testimonial interviews, including AI processing pipelines, video content management, and publishing workflows.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`CustomerInterview`** — Core entity with fields for video content, AI processing status/results, SEO metadata, speaker identification, and relational joins to users, MSPs, platforms, and case studies
|
|
9
|
+
- **`CustomerInterviewConfig`** — Per-interview configuration for AI highlight video generation (target duration, subtitle burning)
|
|
10
|
+
- **`CreateCustomerInterviewData`** — Input shape for creating new interviews; requires `title`, `slug`, `status`, `author_id`, and `platforms`
|
|
11
|
+
- **`UpdateCustomerInterviewData`** — Partial of `CreateCustomerInterviewData` for patch operations
|
|
12
|
+
- **`CustomerInterviewFilters`** — Query filter parameters including platform, industry, company size, search, status, and pagination
|
|
13
|
+
- **`CustomerInterviewListResponse`** — Paginated list wrapper with `data` array and `count`
|
|
14
|
+
|
|
15
|
+
### Re-exports
|
|
16
|
+
|
|
17
|
+
Re-exports `VideoTeaser`, `Speaker`, `VideoClip`, `TranscriptWord`, `SpeakerMapping`, and `ExcludedRange` from `./video-processing` for backwards compatibility.
|
|
18
|
+
|
|
19
|
+
### Status Enums
|
|
20
|
+
|
|
21
|
+
- **Publishing:** `'draft' | 'completed'`
|
|
22
|
+
- **AI pipeline stages** (`ai_transcript_status`, `ai_summary_status`, `ai_clips_status`): `'pending' | 'processing' | 'completed' | 'failed'`
|
|
23
|
+
- **Highlight video source:** `'manual' | 'ai_generated'`
|
|
15
24
|
|
|
16
25
|
## Usage Example
|
|
17
26
|
|
|
@@ -20,43 +29,31 @@ import type {
|
|
|
20
29
|
CustomerInterview,
|
|
21
30
|
CreateCustomerInterviewData,
|
|
22
31
|
CustomerInterviewFilters,
|
|
23
|
-
CustomerInterviewListResponse
|
|
24
32
|
} from './customer-interview'
|
|
25
33
|
|
|
26
|
-
//
|
|
34
|
+
// Create a new interview record
|
|
27
35
|
const payload: CreateCustomerInterviewData = {
|
|
28
|
-
title: 'How Acme IT
|
|
29
|
-
slug: 'acme-it-
|
|
36
|
+
title: 'How Acme IT Reduced Ticket Volume by 40%',
|
|
37
|
+
slug: 'acme-it-ticket-reduction',
|
|
30
38
|
status: 'draft',
|
|
31
|
-
author_id: '
|
|
32
|
-
platforms: ['
|
|
33
|
-
user_id: 'customer-uuid-456',
|
|
39
|
+
author_id: 'usr_abc123',
|
|
40
|
+
platforms: ['plt_uuid_1', 'plt_uuid_2'],
|
|
34
41
|
main_video_url: 'https://cdn.example.com/interviews/acme.mp4',
|
|
35
42
|
config: {
|
|
36
43
|
highlight_target_duration_seconds: 120,
|
|
37
|
-
skipSubtitleBurning: false
|
|
44
|
+
skipSubtitleBurning: false,
|
|
38
45
|
},
|
|
39
|
-
custom_instructions: 'Focus on ROI and ticket volume reduction metrics.'
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
//
|
|
48
|
+
// Filter published interviews by platform
|
|
43
49
|
const filters: CustomerInterviewFilters = {
|
|
44
|
-
platform: '
|
|
50
|
+
platform: 'plt_uuid_1',
|
|
45
51
|
status: 'completed',
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
offset: 0
|
|
52
|
+
limit: 10,
|
|
53
|
+
offset: 0,
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
//
|
|
52
|
-
async function fetchInterviews(
|
|
53
|
-
filters: CustomerInterviewFilters
|
|
54
|
-
): Promise<CustomerInterviewListResponse> {
|
|
55
|
-
const response = await api.get('/interviews', { params: filters })
|
|
56
|
-
return response.data
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Checking AI processing state
|
|
56
|
+
// Access AI pipeline status on a fetched record
|
|
60
57
|
function isReadyToPublish(interview: CustomerInterview): boolean {
|
|
61
58
|
return (
|
|
62
59
|
interview.ai_transcript_status === 'completed' &&
|
|
@@ -68,7 +65,10 @@ function isReadyToPublish(interview: CustomerInterview): boolean {
|
|
|
68
65
|
|
|
69
66
|
## Notes
|
|
70
67
|
|
|
71
|
-
-
|
|
72
|
-
- `
|
|
73
|
-
- `
|
|
74
|
-
|
|
68
|
+
- External transcript/video APIs are tracked via `assemblyai_transcript_id` and `twelvelabs_video_id`
|
|
69
|
+
- `incentive_excluded_ranges` and `speaker_mapping` are computed during transcription and stored as JSONB
|
|
70
|
+
- `custom_instructions` steers AI prompts for both case study generation and video processing
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
**Source:** [`customer-interview.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/customer-interview.ts)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<!-- source-hash: 37a4c2cdf765511c217fb40ef3c7ec1e -->
|
|
2
|
+
Canonical type definitions for the doc-source system, providing a unified tree structure, content payload, and data-access contract for all doc-viewer consumers (knowledge base, data room, and future sources).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Kind | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `DocNode` | `interface` | Single node in a doc-source tree; discriminates folders vs. files and supports rich content types via `documentType` |
|
|
9
|
+
| `DocumentType` | `type` | Non-nullable alias for `DocNode['documentType']`; use as renderer-map key |
|
|
10
|
+
| `DocContent` | `interface` | Content payload from a DAL's `getContent` call; covers both markdown and rich-content (PDF, Google Sheet, Figma) fields |
|
|
11
|
+
| `DocSourceDal<Client>` | `interface` | Generic DAL contract each doc source must satisfy; `Client` defaults to `unknown` to avoid pulling in `@supabase/supabase-js` |
|
|
12
|
+
| `DocSourceId` | `type` | Registry discriminator union (`'openframe-docs' \| 'data-room-docs'`); type-narrowing handle only — no runtime registry |
|
|
13
|
+
| `ResolveLinkResult` | `interface` | Discriminator-style result from the resolve-link endpoint; drives navigate / expand-folder / broken-link behaviour |
|
|
14
|
+
| `DocRenderHandlers` | `interface` | Callbacks and context passed into a consumer's `renderContent`; includes optional async link resolver |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import type {
|
|
20
|
+
DocNode,
|
|
21
|
+
DocContent,
|
|
22
|
+
DocSourceDal,
|
|
23
|
+
DocSourceId,
|
|
24
|
+
DocRenderHandlers,
|
|
25
|
+
DocumentType,
|
|
26
|
+
} from '@openframe-oss-lib/doc-source'
|
|
27
|
+
|
|
28
|
+
// Implement a DAL for a new doc source
|
|
29
|
+
class MyDocsDal implements DocSourceDal<SupabaseClient> {
|
|
30
|
+
async getStructure(client: SupabaseClient): Promise<DocNode[]> {
|
|
31
|
+
// Return the full nav tree
|
|
32
|
+
return [
|
|
33
|
+
{
|
|
34
|
+
id: 'intro',
|
|
35
|
+
name: 'Introduction',
|
|
36
|
+
slug: 'introduction',
|
|
37
|
+
path: 'docs/introduction',
|
|
38
|
+
type: 'file',
|
|
39
|
+
documentType: 'markdown',
|
|
40
|
+
},
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async getContent(
|
|
45
|
+
client: SupabaseClient,
|
|
46
|
+
path: string,
|
|
47
|
+
): Promise<DocContent | null> {
|
|
48
|
+
return {
|
|
49
|
+
content: '# Hello world',
|
|
50
|
+
sections: [{ id: 'hello-world', title: 'Hello world', level: 1 }],
|
|
51
|
+
path,
|
|
52
|
+
documentType: 'markdown',
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Build a renderer map keyed by DocumentType
|
|
58
|
+
const renderers: Record<DocumentType, React.FC<{ content: DocContent }>> = {
|
|
59
|
+
markdown: MarkdownRenderer,
|
|
60
|
+
pdf: PdfRenderer,
|
|
61
|
+
google_sheet: SheetRenderer,
|
|
62
|
+
figma: FigmaRenderer,
|
|
63
|
+
file: FileRenderer,
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Wire render handlers from DocViewer into a page shell
|
|
67
|
+
const handlers: DocRenderHandlers = {
|
|
68
|
+
currentPath: 'docs/introduction',
|
|
69
|
+
sourceId: 'openframe-docs' satisfies DocSourceId,
|
|
70
|
+
onInternalLinkClick: (path, opts) => router.push(path),
|
|
71
|
+
onResolveLink: async (href, currentPath) => {
|
|
72
|
+
const res = await fetch('/api/docs/resolve-link', {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
body: JSON.stringify({ href, currentPath, sourceId: 'openframe-docs' }),
|
|
75
|
+
})
|
|
76
|
+
return res.json()
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Notes
|
|
82
|
+
|
|
83
|
+
- `documentType` is optional on both `DocNode` and `DocContent`; `undefined` is treated as `'markdown'` by all consumers.
|
|
84
|
+
- `DocSourceDal<Client>` is intentionally generic — hub callers tighten `Client` to `SupabaseClient`; the lib itself never imports Supabase.
|
|
85
|
+
- Adding a new source requires both adding its id to `DocSourceId` **and** registering it in the hub's `DOC_SOURCES` registry.
|
|
86
|
+
|
|
87
|
+
**Source:** [`doc-source.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-source.ts)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 18b303f8d0b4bb28e8b6346d79dc5665 -->
|
|
2
|
+
Shared TypeScript interfaces defining the author data shapes used across content surfaces — detail pages, bylines, metadata grids, and author profile pages.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `EntityAuthor`
|
|
7
|
+
The universal author shape attached to content entities (product releases, onboarding guides, etc.) by the hub's `hydrateAuthor`. Powers metadata-grid author cells, bylines, and `/authors/[slug]` links.
|
|
8
|
+
|
|
9
|
+
| Field | Notes |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `full_name` | Display name, nullable |
|
|
12
|
+
| `avatar_url` | Profile image, nullable |
|
|
13
|
+
| `about` | Bio paragraph fed to `<ArticleAuthorByline bio>` |
|
|
14
|
+
| `slug` | Present only when `is_real` profile gate passes |
|
|
15
|
+
| `email` | Server/admin payloads only — stripped by public DALs |
|
|
16
|
+
|
|
17
|
+
### `AuthorSocialLink`
|
|
18
|
+
A single curated social link from the `profile_social_links` junction, ordered by `display_order`. The `platform` key (e.g. `'linkedin'`, `'x'`) feeds directly into `SocialIconRow`.
|
|
19
|
+
|
|
20
|
+
### `AuthorProfile`
|
|
21
|
+
Public author-page view model rendered by `<AuthorDetailView>`. Uses camelCase fields (contrast with `EntityAuthor`'s snake_case). The hub's `PublicAuthor` extends this with server-side extras like `updatedAt`.
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import type { EntityAuthor, AuthorProfile, AuthorSocialLink } from './entity-author'
|
|
27
|
+
|
|
28
|
+
// Attach to a content entity (hub hydrateAuthor output)
|
|
29
|
+
const author: EntityAuthor = {
|
|
30
|
+
id: 'usr_123',
|
|
31
|
+
full_name: 'Jane Smith',
|
|
32
|
+
avatar_url: 'https://cdn.example.com/avatars/jane.webp',
|
|
33
|
+
about: 'Infrastructure engineer focused on MSP automation.',
|
|
34
|
+
slug: 'jane-smith',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Construct a public author-page view model
|
|
38
|
+
const profile: AuthorProfile = {
|
|
39
|
+
id: 'usr_123',
|
|
40
|
+
slug: 'jane-smith',
|
|
41
|
+
fullName: 'Jane Smith',
|
|
42
|
+
avatarUrl: author.avatar_url,
|
|
43
|
+
about: author.about ?? null,
|
|
44
|
+
jobTitle: 'Infrastructure Engineer',
|
|
45
|
+
company: 'Flamingo',
|
|
46
|
+
knowsAbout: ['MSP', 'AI Automation'],
|
|
47
|
+
socialLinks: [
|
|
48
|
+
{ platform: 'linkedin', url: 'https://linkedin.com/in/janesmith', username: 'janesmith' },
|
|
49
|
+
],
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
> **Note:** `EntityAuthor` uses snake_case (database-aligned); `AuthorProfile` uses camelCase (view-model aligned). Keep this distinction in mind when mapping between DAL output and UI components.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- source-hash: d81e612913b63836481c6fd2b114b7ae -->
|
|
2
|
+
Defines the shared `EntityPlatformAssoc` interface representing a hydrated `entity_platforms` junction row, used by all per-entity platform association types to ensure a consistent shape across the codebase.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `EntityPlatformAssoc`
|
|
7
|
+
A single interface describing the shape that `attachPlatformsToRows` places on every `<entity>_platforms[]` array (e.g. `case_study_platforms`, `blog_post_platforms`, `customer_interview_platforms`).
|
|
8
|
+
|
|
9
|
+
| Field | Type | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `platform_id` | `string` | Required platform identifier |
|
|
12
|
+
| `is_featured` | `boolean` | Whether the platform is featured |
|
|
13
|
+
| `featured_order` | `number \| null` | Optional ordering for featured platforms |
|
|
14
|
+
| `name` | `string` | Platform name, spread from the platform record; used by `composeContentUrlFromPlatforms` |
|
|
15
|
+
| `display_name` | `string` | Optional display-friendly name |
|
|
16
|
+
| `platform_name` | `string` | Alias added by some admin fetches (e.g. `getCaseStudyForAdmin`) |
|
|
17
|
+
| `id` | `string` | Optional platform record ID |
|
|
18
|
+
| `created_at` | `string` | Optional creation timestamp |
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import type { EntityPlatformAssoc } from './entity-platform'
|
|
24
|
+
|
|
25
|
+
// Typed per-entity association reusing the shared interface
|
|
26
|
+
type CaseStudyPlatform = EntityPlatformAssoc
|
|
27
|
+
|
|
28
|
+
function getFeaturedPlatforms(platforms: EntityPlatformAssoc[]): EntityPlatformAssoc[] {
|
|
29
|
+
return platforms
|
|
30
|
+
.filter(p => p.is_featured)
|
|
31
|
+
.sort((a, b) => (a.featured_order ?? 0) - (b.featured_order ?? 0))
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Notes
|
|
36
|
+
|
|
37
|
+
- All per-entity platform types reference this single interface, preventing shape drift across entity types.
|
|
38
|
+
- Fields spread from the platform record (via `PLATFORM_EMBED`) allow URL composition without casting.
|
|
39
|
+
|
|
40
|
+
**Source:** [`entity-platform.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/entity-platform.ts)
|
package/src/types/.index.md
CHANGED
|
@@ -1,41 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Centralized barrel export file for
|
|
1
|
+
<!-- source-hash: 803ae4425b112973a12ba40c193e0cdc -->
|
|
2
|
+
Centralized barrel export file for the `@flamingo/ui-kit` package, re-exporting all platform, application, and domain types from a single entry point.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
| Export Group | Modules |
|
|
6
|
+
| Export Group | Source Modules |
|
|
7
7
|
|---|---|
|
|
8
|
-
| **Core Platform** | `announcement`, `categories`, `category`, `media`, `platform` |
|
|
8
|
+
| **Core Platform** | `announcement`, `doc-source`, `categories`, `category`, `media`, `platform` |
|
|
9
9
|
| **Database & API** | `supabase` |
|
|
10
10
|
| **Authentication** | `auth` |
|
|
11
|
-
| **Content** | `blog`, `case-study`, `customer-interview`, `luma`, `product-release`, `delivery`, `vendor`, `video-processing` |
|
|
11
|
+
| **Content** | `blog`, `entity-author`, `case-study`, `customer-interview`, `luma`, `product-release`, `delivery`, `vendor`, `video-processing` |
|
|
12
12
|
| **User & Profile** | `employee`, `profile`, `team`, `user` |
|
|
13
13
|
| **Communication** | `slack`, `waitlist` |
|
|
14
|
-
| **Business Logic** | `faq`, `report`, `stack` |
|
|
14
|
+
| **Business Logic** | `faq`, `content-ref`, `report`, `stack` |
|
|
15
15
|
| **Navigation** | `navigation` |
|
|
16
|
-
| **
|
|
16
|
+
| **Shell / OS / Tools** | `shell.types`, `os.types`, `tool.types` |
|
|
17
17
|
| **Marketing & Access** | `marketing`, `access-code-cohorts`, `icons`, `permissions`, `tmcg` |
|
|
18
18
|
|
|
19
|
-
> **Note:** `platform`
|
|
19
|
+
> **Note:** `categories` and `platform` use named-only exports (`export type { ... }`) to avoid conflicts with overlapping identifiers from sibling modules.
|
|
20
20
|
|
|
21
21
|
## Usage Example
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
|
-
// Import any type directly from the package root
|
|
24
|
+
// Import any type directly from the package root — no deep imports needed
|
|
25
25
|
import type {
|
|
26
26
|
PlatformSettings,
|
|
27
|
+
PlatformName,
|
|
27
28
|
Category,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
NavigationItem,
|
|
29
|
+
DocNode,
|
|
30
|
+
DocContent,
|
|
31
31
|
} from '@flamingo/ui-kit'
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
const config: PlatformSettings = {
|
|
34
|
+
name: 'openframe' as PlatformName,
|
|
35
|
+
// ...
|
|
36
|
+
}
|
|
36
37
|
```
|
|
37
38
|
|
|
38
39
|
## Notes
|
|
39
40
|
|
|
40
|
-
-
|
|
41
|
-
- `
|
|
41
|
+
- **Single import surface:** consumers never need to reach into sub-paths like `@flamingo/ui-kit/platform`.
|
|
42
|
+
- **`doc-source` types** (`DocNode`, `DocContent`, `DocSourceDal`, `DocRenderHandlers`) are shared across knowledge-base, data-room, and future doc-source viewers.
|
|
43
|
+
- **Selective re-exports** on `categories` and `platform` prevent name collisions while still exposing the most-used public types.
|
|
44
|
+
|
|
45
|
+
## Source
|
|
46
|
+
|
|
47
|
+
[`index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/index.ts)
|
package/src/types/.marketing.md
CHANGED
|
@@ -1,39 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 772ae04d34add00764dbf442ea4f82dc -->
|
|
2
|
+
Defines the complete TypeScript type system for the Marketing AI module, covering campaigns, AI-generated content and media, social accounts, scheduled posts, approvals, and usage tracking.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Campaign Types
|
|
7
7
|
- **`MarketingCampaign`** — Core campaign entity with content seed fields (`content_source_type`, `content_source_id`, `custom_instructions`)
|
|
8
|
-
- **`CreateCampaignInput`** / **`UpdateCampaignInput`** —
|
|
8
|
+
- **`CreateCampaignInput`** / **`UpdateCampaignInput`** — Mutation payloads for campaign management
|
|
9
|
+
- **`CampaignWithDetails`** — Aggregate type combining campaign, content, and media
|
|
10
|
+
- **`CampaignStats`** — Counters for draft, active, and completed campaigns
|
|
9
11
|
|
|
10
|
-
### Content Types
|
|
11
|
-
- **`
|
|
12
|
-
- **`
|
|
13
|
-
- **`AIContent`** — Generated text content with publishing, override, and URL injection fields
|
|
14
|
-
- **`CreateAIContentInput`** — Input for creating AI-generated content records
|
|
15
|
-
|
|
16
|
-
### Media Types
|
|
17
|
-
- **`MediaType`** — `'image' | 'video' | 'figma_export'`
|
|
18
|
-
- **`MediaProvider`** — Supported AI providers: `dalle`, `flux-pro`, `kling-v2.5`, `luma-ray2`, and more
|
|
19
|
-
- **`AIMedia`** — Media asset entity including storage paths, dimensions, Figma integration, and publish overrides
|
|
12
|
+
### AI Content & Media Types
|
|
13
|
+
- **`AIContent`** — Generated text assets (`blog_post`, `social_post`, `ad_copy`, `email`) with approval workflow and URL injection fields
|
|
14
|
+
- **`AIMedia`** — Generated image/video assets with provider tracking (`dalle-3`, `flux-pro`, `kling-v2.5`, etc.) and Figma export support
|
|
20
15
|
- **`MediaDimensions`** — Width, height, and aspect ratio descriptor
|
|
16
|
+
- **`ContentStatus`** / **`MediaStatus`** — Lifecycle enums from `draft` through `published`
|
|
21
17
|
|
|
22
18
|
### Social & Scheduling Types
|
|
23
|
-
- **`
|
|
24
|
-
- **`
|
|
25
|
-
- **`
|
|
19
|
+
- **`SocialAccount`** — OAuth-connected social channel (`slack`, `linkedin`, `facebook`, `instagram`, `twitter`, `youtube`)
|
|
20
|
+
- **`ScheduledPost`** — Post scheduling with retry tracking and external post URL reference
|
|
21
|
+
- **`SocialChannel`** / **`SocialAccountType`** — Channel and account classification enums
|
|
26
22
|
|
|
27
|
-
### Approval & Usage
|
|
28
|
-
- **`ContentApproval`** —
|
|
29
|
-
- **`AIUsage`** / **`TrackAIUsageInput`** —
|
|
30
|
-
- **`
|
|
23
|
+
### Approval & Usage Tracking
|
|
24
|
+
- **`ContentApproval`** — Review workflow for content and media items
|
|
25
|
+
- **`AIUsage`** / **`TrackAIUsageInput`** — Token and cost tracking per service (`anthropic`, `openai`, `replicate`, `figma`, `google`)
|
|
26
|
+
- **`AIUsageSummary`** — Aggregated cost and token totals broken down by service
|
|
31
27
|
|
|
32
|
-
###
|
|
33
|
-
- **`
|
|
34
|
-
- **`CampaignStats`** / **`AIUsageSummary`** — Dashboard-level rollup statistics
|
|
35
|
-
- **`ContentSourceType`** — Union of 11 seed content origins (`product_release`, `blog_post_seed`, `event`, `podcast`, etc.)
|
|
36
|
-
- **`URLInjectionPreference`** — `'none' | 'in_post' | 'as_comment'`
|
|
28
|
+
### Content Source Types
|
|
29
|
+
- **`ContentSourceType`** — Union type covering 13 content origin strategies (`product_release`, `blog_post_seed`, `event`, `podcast`, `faq`, etc.)
|
|
37
30
|
|
|
38
31
|
## Usage Example
|
|
39
32
|
|
|
@@ -41,25 +34,29 @@ Brief description: Defines all TypeScript interfaces, types, and enums for the F
|
|
|
41
34
|
import type {
|
|
42
35
|
CreateCampaignInput,
|
|
43
36
|
AIContent,
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
ContentSourceType,
|
|
38
|
+
MediaProvider,
|
|
46
39
|
} from './marketing';
|
|
47
40
|
|
|
48
|
-
// Create a campaign seeded from a product release
|
|
49
41
|
const newCampaign: CreateCampaignInput = {
|
|
50
42
|
name: 'Q3 Product Launch',
|
|
51
43
|
content_source_type: 'product_release',
|
|
52
44
|
content_source_id: 42,
|
|
53
|
-
custom_instructions: 'Emphasize enterprise features and
|
|
54
|
-
start_date: '2025-
|
|
45
|
+
custom_instructions: 'Emphasize enterprise features and security compliance.',
|
|
46
|
+
start_date: '2025-08-01',
|
|
55
47
|
};
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
content_type: 'social_post' as ContentType,
|
|
49
|
+
const generatedPost: Partial<AIContent> = {
|
|
50
|
+
content_type: 'social_post',
|
|
60
51
|
status: 'draft',
|
|
61
52
|
social_account_id: 7,
|
|
62
|
-
url_injection_preference: 'as_comment'
|
|
53
|
+
url_injection_preference: 'as_comment',
|
|
63
54
|
selected_for_publish: false,
|
|
64
55
|
};
|
|
65
|
-
|
|
56
|
+
|
|
57
|
+
const provider: MediaProvider = 'flux-pro';
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Source
|
|
61
|
+
|
|
62
|
+
[`marketing.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/marketing.ts)
|