@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/.supabase.md
CHANGED
|
@@ -1,31 +1,45 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Auto-generated type definitions for the
|
|
1
|
+
<!-- source-hash: 23455e458da538aa93f78c3bc682573d -->
|
|
2
|
+
Auto-generated Supabase database type definitions for the OpenFrame OSS library, providing strongly-typed interfaces for all public schema tables including announcements, Slack data, podcast episodes, webinars, and Luma events.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `Json` Type
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
A recursive union type representing any valid JSON value — primitives, objects, arrays, or `null`.
|
|
8
9
|
|
|
9
10
|
### `Database` Type
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
The root type describing the full Supabase public schema. Each table is represented with three operation shapes:
|
|
13
|
+
|
|
14
|
+
| Shape | Purpose |
|
|
15
|
+
|-------|---------|
|
|
16
|
+
| `Row` | Full record returned from `SELECT` queries |
|
|
17
|
+
| `Insert` | Required + optional fields for `INSERT` |
|
|
18
|
+
| `Update` | All fields optional for `PATCH`/`UPDATE` |
|
|
19
|
+
|
|
20
|
+
### Tables
|
|
11
21
|
|
|
12
22
|
| Table | Description |
|
|
13
|
-
|
|
14
|
-
| `announcement_assets` | File attachments
|
|
15
|
-
| `announcements` | Platform announcements with
|
|
23
|
+
|-------|-------------|
|
|
24
|
+
| `announcement_assets` | File attachments linked to announcements |
|
|
25
|
+
| `announcements` | Platform announcements with icons and styling |
|
|
16
26
|
| `slack_channels` | Synced Slack workspace channels |
|
|
17
|
-
| `slack_messages` | Slack messages with threading and
|
|
18
|
-
| `slack_users` | Slack workspace
|
|
19
|
-
| `podcast_episodes` | Podbean podcast
|
|
20
|
-
| `webinars` | Livestorm webinar events
|
|
27
|
+
| `slack_messages` | Slack messages with threading and metadata |
|
|
28
|
+
| `slack_users` | Slack workspace member profiles |
|
|
29
|
+
| `podcast_episodes` | Podbean-synced podcast episode records |
|
|
30
|
+
| `webinars` | Livestorm-synced webinar events |
|
|
31
|
+
| `luma_events` | Luma-synced community events |
|
|
32
|
+
|
|
33
|
+
### Relationships
|
|
21
34
|
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- **`Update`** — shape for `UPDATE` (all fields optional)
|
|
35
|
+
- `announcement_assets.announcement_id` → `announcements.id`
|
|
36
|
+
- `slack_messages.channel_id` → `slack_channels.channel_id`
|
|
37
|
+
- `slack_messages.user_id` → `slack_users.user_id`
|
|
26
38
|
|
|
27
39
|
## Usage Example
|
|
28
40
|
|
|
41
|
+
Pass the `Database` type to the Supabase client for full end-to-end type safety:
|
|
42
|
+
|
|
29
43
|
```typescript
|
|
30
44
|
import { createClient } from '@supabase/supabase-js'
|
|
31
45
|
import type { Database } from './supabase'
|
|
@@ -35,18 +49,18 @@ const supabase = createClient<Database>(
|
|
|
35
49
|
process.env.SUPABASE_ANON_KEY!
|
|
36
50
|
)
|
|
37
51
|
|
|
38
|
-
// Fully typed
|
|
39
|
-
const { data:
|
|
40
|
-
.from('podcast_episodes')
|
|
41
|
-
.select('id, title, audio_url, published_at')
|
|
42
|
-
.eq('platform_id', 'abc-123')
|
|
43
|
-
|
|
44
|
-
// Typed insert
|
|
45
|
-
const { error } = await supabase
|
|
52
|
+
// Fully typed — Row shape inferred automatically
|
|
53
|
+
const { data: announcements } = await supabase
|
|
46
54
|
.from('announcements')
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
.select('id, title, description, is_active')
|
|
56
|
+
.eq('is_active', true)
|
|
57
|
+
|
|
58
|
+
// Type-safe insert — Insert shape enforced
|
|
59
|
+
await supabase.from('slack_users').insert({
|
|
60
|
+
user_id: 'U12345',
|
|
61
|
+
username: 'jane.doe',
|
|
62
|
+
display_name: 'Jane Doe',
|
|
63
|
+
})
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Source:** [`supabase.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/supabase.ts)
|
package/src/types/.tool.types.md
CHANGED
|
@@ -1,36 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: f34afe24b605fb7d34139a1142319f18 -->
|
|
2
|
+
Defines the centralized type system for all MSP tool integrations in the OpenFrame platform, serving as the single source of truth for tool type identifiers and display labels.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `ToolTypeValues` | `const object` | Enum-like constant map of all supported tool type string literals |
|
|
9
|
+
| `ToolType` | `type` | Union type derived from `ToolTypeValues` values |
|
|
10
|
+
| `toolLabels` | `Record<ToolType, string>` | Maps each `ToolType` to its human-readable display label |
|
|
11
|
+
|
|
12
|
+
### Supported Tool Types
|
|
13
|
+
|
|
14
|
+
| Key | Value | Label |
|
|
15
|
+
|-----|-------|-------|
|
|
16
|
+
| `FLEET_MDM` | `'FLEET_MDM'` | Fleet |
|
|
17
|
+
| `MESHCENTRAL` | `'MESHCENTRAL'` | MeshCentral |
|
|
18
|
+
| `AUTHENTIK` | `'AUTHENTIK'` | Authentik |
|
|
19
|
+
| `OPENFRAME` | `'OPENFRAME'` | OpenFrame |
|
|
20
|
+
| `OPENFRAME_CHAT` | `'OPENFRAME_CHAT'` | OpenFrame Chat |
|
|
21
|
+
| `OPENFRAME_CLIENT` | `'OPENFRAME_CLIENT'` | OpenFrame Client |
|
|
22
|
+
| `OPENFRAME_RMM` | `'OPENFRAME_RMM'` | RMM |
|
|
23
|
+
| `OSQUERY` | `'OSQUERY'` | Osquery |
|
|
24
|
+
| `SYSTEM` | `'SYSTEM'` | System |
|
|
9
25
|
|
|
10
26
|
## Usage Example
|
|
11
27
|
|
|
12
28
|
```typescript
|
|
13
29
|
import { ToolType, ToolTypeValues, toolLabels } from './tool.types'
|
|
14
30
|
|
|
15
|
-
// Type-safe tool type
|
|
16
|
-
const currentTool: ToolType = ToolTypeValues.
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
// Type-safe tool type reference
|
|
32
|
+
const currentTool: ToolType = ToolTypeValues.FLEET_MDM
|
|
33
|
+
|
|
34
|
+
// Resolve display label for UI rendering (e.g. ToolBadge, ToolIcon)
|
|
35
|
+
const label = toolLabels[currentTool] // → 'Fleet'
|
|
36
|
+
|
|
37
|
+
// Narrow by tool type in a switch
|
|
38
|
+
function handleTool(tool: ToolType) {
|
|
39
|
+
switch (tool) {
|
|
40
|
+
case ToolTypeValues.MESHCENTRAL:
|
|
41
|
+
// handle MeshCentral
|
|
42
|
+
break
|
|
43
|
+
case ToolTypeValues.OPENFRAME_RMM:
|
|
44
|
+
// handle RMM
|
|
45
|
+
break
|
|
46
|
+
}
|
|
25
47
|
}
|
|
48
|
+
```
|
|
26
49
|
|
|
27
|
-
|
|
28
|
-
const defaultLabel = toolLabels[type]
|
|
29
|
-
return <span>{label || defaultLabel}</span>
|
|
30
|
-
}
|
|
50
|
+
## Notes
|
|
31
51
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
52
|
+
- Prefer `ToolTypeValues.X` over raw string literals to ensure compile-time safety.
|
|
53
|
+
- `ToolType` is a strict union — TypeScript will error on unrecognized values.
|
|
54
|
+
- Consumed by `ToolBadge`, `ToolIcon`, and any component requiring tool metadata.
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
**Source:** [`tool.types.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool.types.ts)
|
|
@@ -1,54 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Shared type definitions for video processing functionality used across
|
|
1
|
+
<!-- source-hash: 6ec3f18beb42e1d118dec17403060310 -->
|
|
2
|
+
Shared TypeScript type definitions for video processing functionality, providing the canonical data shapes used across video-enabled entities such as customer interviews, product releases, and marketing campaigns.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
| Export |
|
|
7
|
-
|
|
8
|
-
| `VideoTeaser` | Interface |
|
|
9
|
-
| `Speaker` | Interface | Speaker identification metadata
|
|
10
|
-
| `VideoClip` | Interface | AI-identified video segment
|
|
11
|
-
| `TranscriptWord` | Interface | Word-level transcript
|
|
12
|
-
| `SpeakerMapping` | Interface | Maps AssemblyAI speaker labels (
|
|
13
|
-
| `ExcludedRange` | Interface | Time range
|
|
14
|
-
| `VideoProcessingFields` | Interface | Base fields shared across all video-
|
|
15
|
-
| `VideoProcessingEntityType` | Union
|
|
6
|
+
| Export | Kind | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `VideoTeaser` | Interface | Canonical persistence shape for short video clips/bites stored in `video_bites`/`teasers` JSONB columns |
|
|
9
|
+
| `Speaker` | Interface | Speaker identification metadata for transcription workflows |
|
|
10
|
+
| `VideoClip` | Interface | AI-identified video segment from Twelve Labs analysis |
|
|
11
|
+
| `TranscriptWord` | Interface | Word-level transcript data with millisecond-precision timing |
|
|
12
|
+
| `SpeakerMapping` | Interface | Maps AssemblyAI speaker labels (`"A"`, `"B"`) to named participant info |
|
|
13
|
+
| `ExcludedRange` | Interface | Time range exclusions (e.g., incentive mentions) in seconds |
|
|
14
|
+
| `VideoProcessingFields` | Interface | Base set of video fields shared across all video-capable entities |
|
|
15
|
+
| `VideoProcessingEntityType` | Type Union | Discriminator for agent routing across all supported entity types |
|
|
16
16
|
|
|
17
17
|
## Usage Example
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
20
|
import type {
|
|
21
|
+
VideoTeaser,
|
|
21
22
|
VideoProcessingFields,
|
|
22
23
|
SpeakerMapping,
|
|
23
|
-
|
|
24
|
-
VideoProcessingEntityType
|
|
24
|
+
VideoProcessingEntityType,
|
|
25
25
|
} from './video-processing'
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
// Composing a video-enabled entity record
|
|
28
|
+
const speakerMap: SpeakerMapping = {
|
|
29
|
+
A: { name: 'Jane Doe', role: 'interviewer' },
|
|
30
|
+
B: { name: 'John Smith', role: 'interviewee', userId: 'usr_abc123' },
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
const
|
|
33
|
-
main_video_url: 'https://
|
|
33
|
+
const fields: VideoProcessingFields = {
|
|
34
|
+
main_video_url: 'https://stream.mux.com/abc123.m3u8',
|
|
34
35
|
transcript: 'Full transcript text...',
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
speaker_mapping: speakerMapping,
|
|
39
|
-
ai_confidence_transcript: 0.95,
|
|
40
|
-
ai_confidence_summary: 0.88,
|
|
36
|
+
speaker_mapping: speakerMap,
|
|
37
|
+
ai_confidence_transcript: 0.94,
|
|
38
|
+
ai_confidence_summary: 0.87,
|
|
41
39
|
}
|
|
42
40
|
|
|
41
|
+
const entityType: VideoProcessingEntityType = 'customer_interview'
|
|
42
|
+
|
|
43
|
+
// Constructing a teaser bite (canonical shape)
|
|
43
44
|
const teaser: VideoTeaser = {
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
id: 'a1b2c3d4',
|
|
46
|
+
url: 'https://stream.mux.com/bite_xyz.m3u8',
|
|
47
|
+
title: 'Key product insight moment',
|
|
48
|
+
start_time_ms: 134000,
|
|
49
|
+
end_time_ms: 162000,
|
|
46
50
|
published: true,
|
|
51
|
+
featured: false,
|
|
47
52
|
source: 'ai_generated',
|
|
48
|
-
|
|
53
|
+
confidence: 87,
|
|
49
54
|
}
|
|
50
|
-
|
|
51
|
-
const entityType: VideoProcessingEntityType = 'customer_interview'
|
|
52
55
|
```
|
|
53
56
|
|
|
54
|
-
|
|
57
|
+
## Notes
|
|
58
|
+
|
|
59
|
+
- `VideoTeaser` is the **true superset** for persistence — downstream display types (e.g., `VideoTeaserWithRatio`) extend it rather than diverging from it.
|
|
60
|
+
- `VideoClip` intentionally remains a separate shape from `VideoTeaser`; it represents AI extraction candidates, not persisted bites.
|
|
61
|
+
- `id` on `VideoTeaser` is a stable 8-char lowercase-hex identity key used by the Mux transcode pipeline — never derived from `url`.
|
|
62
|
+
|
|
63
|
+
**Source:** [`video-processing.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/video-processing.ts)
|
package/src/types/supabase.ts
CHANGED
|
@@ -389,6 +389,86 @@ export type Database = {
|
|
|
389
389
|
Relationships: [
|
|
390
390
|
]
|
|
391
391
|
}
|
|
392
|
+
walkthrough_videos: {
|
|
393
|
+
Row: {
|
|
394
|
+
id: number
|
|
395
|
+
platform_id: string
|
|
396
|
+
title: string
|
|
397
|
+
status: string
|
|
398
|
+
youtube_url: string | null
|
|
399
|
+
main_video_url: string | null
|
|
400
|
+
main_video_thumbnail: string | null
|
|
401
|
+
video_summary: string | null
|
|
402
|
+
transcript: string | null
|
|
403
|
+
srt_content: string | null
|
|
404
|
+
transcript_words_data: Json | null
|
|
405
|
+
video_bites: Json
|
|
406
|
+
config: Json | null
|
|
407
|
+
custom_instructions: string | null
|
|
408
|
+
highlight_video_url: string | null
|
|
409
|
+
highlight_video_source: string | null
|
|
410
|
+
highlight_video_thumbnail: string | null
|
|
411
|
+
highlight_video_duration_ms: number | null
|
|
412
|
+
author_id: string | null
|
|
413
|
+
created_at: string
|
|
414
|
+
updated_at: string
|
|
415
|
+
}
|
|
416
|
+
Insert: {
|
|
417
|
+
id?: never
|
|
418
|
+
platform_id: string
|
|
419
|
+
title: string
|
|
420
|
+
status?: string
|
|
421
|
+
youtube_url?: string | null
|
|
422
|
+
main_video_url?: string | null
|
|
423
|
+
main_video_thumbnail?: string | null
|
|
424
|
+
video_summary?: string | null
|
|
425
|
+
transcript?: string | null
|
|
426
|
+
srt_content?: string | null
|
|
427
|
+
transcript_words_data?: Json | null
|
|
428
|
+
video_bites?: Json
|
|
429
|
+
config?: Json | null
|
|
430
|
+
custom_instructions?: string | null
|
|
431
|
+
highlight_video_url?: string | null
|
|
432
|
+
highlight_video_source?: string | null
|
|
433
|
+
highlight_video_thumbnail?: string | null
|
|
434
|
+
highlight_video_duration_ms?: number | null
|
|
435
|
+
author_id?: string | null
|
|
436
|
+
created_at?: string
|
|
437
|
+
updated_at?: string
|
|
438
|
+
}
|
|
439
|
+
Update: {
|
|
440
|
+
id?: never
|
|
441
|
+
platform_id?: string
|
|
442
|
+
title?: string
|
|
443
|
+
status?: string
|
|
444
|
+
youtube_url?: string | null
|
|
445
|
+
main_video_url?: string | null
|
|
446
|
+
main_video_thumbnail?: string | null
|
|
447
|
+
video_summary?: string | null
|
|
448
|
+
transcript?: string | null
|
|
449
|
+
srt_content?: string | null
|
|
450
|
+
transcript_words_data?: Json | null
|
|
451
|
+
video_bites?: Json
|
|
452
|
+
config?: Json | null
|
|
453
|
+
custom_instructions?: string | null
|
|
454
|
+
highlight_video_url?: string | null
|
|
455
|
+
highlight_video_source?: string | null
|
|
456
|
+
highlight_video_thumbnail?: string | null
|
|
457
|
+
highlight_video_duration_ms?: number | null
|
|
458
|
+
author_id?: string | null
|
|
459
|
+
created_at?: string
|
|
460
|
+
updated_at?: string
|
|
461
|
+
}
|
|
462
|
+
Relationships: [
|
|
463
|
+
{
|
|
464
|
+
foreignKeyName: "walkthrough_videos_platform_id_fkey"
|
|
465
|
+
columns: ["platform_id"]
|
|
466
|
+
isOneToOne: true
|
|
467
|
+
referencedRelation: "platforms"
|
|
468
|
+
referencedColumns: ["id"]
|
|
469
|
+
}
|
|
470
|
+
]
|
|
471
|
+
}
|
|
392
472
|
luma_events: {
|
|
393
473
|
Row: {
|
|
394
474
|
id: string
|
|
@@ -1,31 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: eaaab09af79a45c05efef4de2c5f0db6 -->
|
|
2
|
+
Manages announcement dismissal state using a cookie-first strategy, enabling SSR-safe dismissal detection and seamless migration from a legacy localStorage approach.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `announcementDismissCookieName` | `function` | Returns the canonical cookie name for a platform's dismissed announcement ID |
|
|
9
|
+
| `isDismissedCookieValue` | `function` | Pure/isomorphic ID-match check shared across server and client boundaries |
|
|
10
|
+
| `dismissAnnouncement` | `function` | Persists a dismissal to cookie only (1-year `max-age`); intentionally skips localStorage |
|
|
11
|
+
| `isAnnouncementDismissed` | `function` | Cookie-first client-side check, with legacy localStorage fallback when no cookie exists |
|
|
12
|
+
| `clearAnnouncementDismissals` | `function` | Removes all dismissal state (cookie + legacy localStorage keys) — for tests/stories |
|
|
13
|
+
| `clearLegacyAnnouncementCache` | `function` | One-time cleanup of the pre-refactor announcement cache blob from localStorage |
|
|
14
|
+
|
|
15
|
+
## Storage Architecture
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
graph TD
|
|
19
|
+
SSR["SSR Layout (server)"] -->|reads cookie| Cookie["platform-announcement-dismissed cookie"]
|
|
20
|
+
Client["Client Mount Effect"] -->|reads cookie first| Cookie
|
|
21
|
+
Client -->|fallback, read-only| LS["Legacy localStorage key"]
|
|
22
|
+
Client -->|backfills on migration| Cookie
|
|
23
|
+
Dismiss["dismissAnnouncement()"] -->|writes| Cookie
|
|
24
|
+
Dismiss -. never writes .-> LS
|
|
25
|
+
```
|
|
11
26
|
|
|
12
27
|
## Usage Example
|
|
13
28
|
|
|
14
29
|
```typescript
|
|
15
30
|
import {
|
|
16
|
-
dismissAnnouncement,
|
|
17
|
-
isAnnouncementDismissed,
|
|
18
31
|
announcementDismissCookieName,
|
|
19
32
|
isDismissedCookieValue,
|
|
20
|
-
|
|
33
|
+
dismissAnnouncement,
|
|
34
|
+
isAnnouncementDismissed,
|
|
35
|
+
clearAnnouncementDismissals,
|
|
36
|
+
} from './announcement-storage'
|
|
37
|
+
|
|
38
|
+
// Server-side (Next.js layout): check if already dismissed via cookie
|
|
39
|
+
const cookieValue = cookies().get(announcementDismissCookieName('hub'))?.value
|
|
40
|
+
const shouldSeedBar = !isDismissedCookieValue(cookieValue, activeAnnouncement.id)
|
|
41
|
+
|
|
42
|
+
// Client-side: check dismissal from an effect (never during render)
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (isAnnouncementDismissed('hub', announcement.id)) {
|
|
45
|
+
setVisible(false)
|
|
46
|
+
}
|
|
47
|
+
}, [announcement.id])
|
|
21
48
|
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
dismissAnnouncement('
|
|
49
|
+
// On user dismiss
|
|
50
|
+
function handleDismiss() {
|
|
51
|
+
dismissAnnouncement('hub', announcement.id)
|
|
52
|
+
setVisible(false)
|
|
53
|
+
}
|
|
25
54
|
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
const dismissed = isDismissedCookieValue(cookieValue, announcement?.id);
|
|
55
|
+
// In tests/Storybook: reset state between stories
|
|
56
|
+
afterEach(() => clearAnnouncementDismissals('hub'))
|
|
29
57
|
```
|
|
30
58
|
|
|
31
|
-
|
|
59
|
+
> **Note:** `isAnnouncementDismissed` reads browser storage and must only be called from effects — never during render — to avoid SSR/hydration mismatches.
|
|
60
|
+
|
|
61
|
+
## Source
|
|
62
|
+
|
|
63
|
+
[`announcement-storage.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/announcement-storage.ts)
|
package/src/utils/.app-config.md
CHANGED
|
@@ -1,32 +1,36 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 74f778fe6f21ac592b390d0c7e37584e -->
|
|
2
|
+
Provides static application configuration and runtime app-type resolution for the OpenMSP platform, with safe fallbacks for non-Next.js host environments.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`APP_CONFIG`**
|
|
7
|
-
- **`getAppConfig()`**
|
|
8
|
-
- **`getAppType()`**
|
|
6
|
+
- **`APP_CONFIG`** — Immutable (`as const`) config object containing app identity (`type`, `name`, `domain`) and feature flags (`announcements`, `notifications`).
|
|
7
|
+
- **`getAppConfig()`** — Returns the full `APP_CONFIG` object.
|
|
8
|
+
- **`getAppType()`** — Resolves the active app type at runtime, reading `process.env.NEXT_PUBLIC_APP_TYPE` for Next.js/webpack static inlining, with a `try/catch` guard that returns `'openmsp'` in environments where `process` is unavailable (e.g., Vite, CRA embeds).
|
|
9
9
|
|
|
10
10
|
## Usage Example
|
|
11
11
|
|
|
12
12
|
```typescript
|
|
13
|
-
import {
|
|
13
|
+
import { getAppConfig, getAppType } from './app-config';
|
|
14
14
|
|
|
15
|
-
// Access
|
|
16
|
-
console.log(APP_CONFIG.app.name); // 'OpenMSP'
|
|
17
|
-
console.log(APP_CONFIG.features.announcements); // true
|
|
18
|
-
|
|
19
|
-
// Get configuration dynamically
|
|
15
|
+
// Access full config
|
|
20
16
|
const config = getAppConfig();
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
17
|
+
console.log(config.app.name); // 'OpenMSP'
|
|
18
|
+
console.log(config.features.announcements); // true
|
|
24
19
|
|
|
25
|
-
//
|
|
20
|
+
// Resolve app type at runtime (safe in Next.js and Vite/CRA embeds)
|
|
26
21
|
const appType = getAppType();
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
console.log(appType); // 'openmsp' (or value of NEXT_PUBLIC_APP_TYPE)
|
|
23
|
+
|
|
24
|
+
// Feature-flag guard
|
|
25
|
+
if (getAppConfig().features.notifications) {
|
|
26
|
+
// initialize notification system
|
|
29
27
|
}
|
|
30
28
|
```
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
## Notes
|
|
31
|
+
|
|
32
|
+
- `NEXT_PUBLIC_APP_TYPE` must be set at **build time** in Next.js for webpack to statically inline it; runtime assignment has no effect.
|
|
33
|
+
- The `try/catch` in `getAppType()` ensures embed hosts (Vite, CRA) that lack a global `process` object receive the `'openmsp'` fallback without throwing.
|
|
34
|
+
- Dismissal cookies for announcements are domain-scoped, so the `'openmsp'` fallback is safe for single-platform embed deployments.
|
|
35
|
+
|
|
36
|
+
**Source:** [`app-config.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/app-config.ts)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: d68a2227a3551e27e65a194850078361 -->
|
|
2
|
+
Centralized repository of monochrome SVG brand mark silhouettes, keyed by lowercase brand name, intended for use with CSS `mask-image` tinting.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
**`BRAND_MARK_SVGS`** — `Record<string, string>`
|
|
7
|
+
|
|
8
|
+
A constant map of brand name strings to raw SVG markup. Each SVG uses `role="img"` and a `<title>` element for accessibility. Current entries include:
|
|
9
|
+
|
|
10
|
+
| Key | Brand |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `amazonwebservices` | Amazon Web Services |
|
|
13
|
+
| `datadog` | Datadog |
|
|
14
|
+
| `git` | Git |
|
|
15
|
+
| `github` | GitHub |
|
|
16
|
+
| `gnubash` | GNU Bash |
|
|
17
|
+
| `googlecloud` | Google Cloud |
|
|
18
|
+
| `grafana` | Grafana |
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { BRAND_MARK_SVGS } from './brand-marks';
|
|
24
|
+
|
|
25
|
+
// Render an inline SVG
|
|
26
|
+
const svgMarkup = BRAND_MARK_SVGS['github'];
|
|
27
|
+
element.innerHTML = svgMarkup;
|
|
28
|
+
|
|
29
|
+
// Use as a CSS mask for tinted icons
|
|
30
|
+
const maskStyle = {
|
|
31
|
+
maskImage: `url("data:image/svg+xml,${encodeURIComponent(BRAND_MARK_SVGS['github'])}")`,
|
|
32
|
+
maskRepeat: 'no-repeat',
|
|
33
|
+
maskSize: 'contain',
|
|
34
|
+
backgroundColor: 'currentColor',
|
|
35
|
+
};
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Notes
|
|
39
|
+
|
|
40
|
+
- All SVGs are monochrome (single `<path>`) to support CSS `mask-image` tinting — applying color via `background-color` or `color` without modifying the SVG source.
|
|
41
|
+
- Centralizing these assets prevents consumers from bundling duplicate copies.
|
|
42
|
+
- Lookup keys are always **lowercase** with no spaces or hyphens (e.g., `amazonwebservices`, `googlecloud`).
|
|
43
|
+
|
|
44
|
+
## Source
|
|
45
|
+
|
|
46
|
+
[`brand-marks.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/brand-marks.ts)
|
package/src/utils/.cn.md
CHANGED
|
@@ -1,44 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Utility module providing class name
|
|
1
|
+
<!-- source-hash: 700d6c65ebfb65630e665b437acf4e83 -->
|
|
2
|
+
Utility module providing two core helpers: a Tailwind-aware class name merger (`cn`) that correctly handles custom ODS typography utilities, and an environment-aware base URL resolver (`getBaseUrl`) that delegates platform canonical URLs to the SSOT in `platform-domains.ts`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
7
|
|--------|------|-------------|
|
|
8
|
-
| `cn` |
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
|
|
8
|
+
| `cn` | `function` | Combines class names using `clsx` + a custom `tailwind-merge` instance |
|
|
9
|
+
| `getBaseUrl` | `function` | Returns the application base URL for the current environment |
|
|
10
|
+
| `twMerge` | internal | Extended `tailwind-merge` instance with the `ods-typography` class group |
|
|
11
|
+
|
|
12
|
+
### `ods-typography` Class Group
|
|
13
|
+
|
|
14
|
+
Custom Tailwind text-size utilities registered to prevent silent conflicts with `text-color` utilities:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
text-h1 · text-h2 · text-h3 · text-h4 · text-h5 · text-h6 · text-code · text-badge
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Without this registration, `cn('text-badge', 'text-ods-text-on-accent')` would drop `text-badge` — only the colour survives.
|
|
12
21
|
|
|
13
22
|
## Usage Example
|
|
14
23
|
|
|
15
24
|
```typescript
|
|
16
|
-
import { cn, getBaseUrl
|
|
17
|
-
|
|
18
|
-
// Merge Tailwind classes (including custom ODS typography)
|
|
19
|
-
const className = cn('text-h1 font-bold', isActive && 'text-yellow-400')
|
|
25
|
+
import { cn, getBaseUrl } from '@/lib/cn'
|
|
20
26
|
|
|
21
|
-
//
|
|
22
|
-
const
|
|
23
|
-
|
|
27
|
+
// Merge conditional classes safely — typography and colour both survive
|
|
28
|
+
const className = cn(
|
|
29
|
+
'text-badge',
|
|
30
|
+
'text-ods-text-on-accent',
|
|
31
|
+
isActive && 'bg-accent',
|
|
32
|
+
)
|
|
24
33
|
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
const openframeUrl = getPlatformProductionUrl('openframe') // https://openframe.ai
|
|
34
|
+
// Current deployment URL (dev → localhost, prod → Vercel/canonical domain)
|
|
35
|
+
const currentUrl = getBaseUrl()
|
|
28
36
|
|
|
29
|
-
//
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
// Vercel preview: ['.vercel.app', 'vercel.app']
|
|
33
|
-
// Localhost: []
|
|
37
|
+
// Specific platform URL (respects env override, falls back to canonical)
|
|
38
|
+
const flamingoUrl = getBaseUrl('flamingo') // https://www.flamingo.run
|
|
39
|
+
const openMspUrl = getBaseUrl('openmsp') // https://www.openmsp.ai
|
|
34
40
|
```
|
|
35
41
|
|
|
36
|
-
##
|
|
42
|
+
## `getBaseUrl` Resolution Order
|
|
43
|
+
|
|
44
|
+
```mermaid
|
|
45
|
+
graph TD
|
|
46
|
+
A[getBaseUrl called] --> B{NODE_ENV !== production?}
|
|
47
|
+
B -->|Yes| C[NEXT_PUBLIC_DEV_URL or localhost:3000]
|
|
48
|
+
B -->|No| D{platform arg provided?}
|
|
49
|
+
D -->|Yes| E[getPlatformProductionUrl from SSOT]
|
|
50
|
+
D -->|No| F{VERCEL_PROJECT_PRODUCTION_URL set?}
|
|
51
|
+
F -->|Yes| G[https://vercel-domain]
|
|
52
|
+
F -->|No| H[getPlatformProductionUrl via NEXT_PUBLIC_APP_TYPE]
|
|
53
|
+
```
|
|
37
54
|
|
|
38
|
-
|
|
39
|
-
|----------|----------|---------|
|
|
40
|
-
| `NEXT_PUBLIC_FLAMINGO_URL` | `flamingo`, `universal` | `https://www.flamingo.run` |
|
|
41
|
-
| `NEXT_PUBLIC_OPENMSP_URL` | `openmsp` | `https://www.openmsp.ai` |
|
|
42
|
-
| `NEXT_PUBLIC_OPENFRAME_URL` | `openframe` | `https://openframe.ai` |
|
|
43
|
-
| `NEXT_PUBLIC_MARKETING_HUB_URL` | `marketing-hub` | `https://marketing-hub.flamingo.so` |
|
|
44
|
-
| `NEXT_PUBLIC_DEV_URL` | all (dev only) | `http://localhost:3000` |
|
|
55
|
+
> Platform canonical URLs and their `NEXT_PUBLIC_*_URL` environment overrides are defined exclusively in [`src/platform-domains.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/platform-domains.ts).
|