@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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: 565bab727ed764f8f2e7853cc222b4d8 -->
|
|
2
|
+
Converts Markdown source to plain text with two output modes: structured article text (preserving paragraph breaks) and collapsed single-line preview text.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `MarkdownToPlainOptions`
|
|
7
|
+
Configuration interface with two optional properties:
|
|
8
|
+
- `mode`: `'article'` (default) preserves `\n\n` paragraph structure; `'preview'` collapses all whitespace to a single line
|
|
9
|
+
- `maxChars`: Optional character cap — truncates without ellipsis (caller decides truncation presentation)
|
|
10
|
+
|
|
11
|
+
### `stripInlineMarkdown(s: string): string`
|
|
12
|
+
Shared utility that strips inline Markdown markers from a string:
|
|
13
|
+
- `[text](url)` → `text`
|
|
14
|
+
- `**bold**` → `bold`
|
|
15
|
+
- `*italic*` → `italic`
|
|
16
|
+
- `` `inline code` `` → `inline code`
|
|
17
|
+
|
|
18
|
+
All patterns use negated character classes to avoid catastrophic backtracking.
|
|
19
|
+
|
|
20
|
+
### `markdownToPlainText(markdown, options): string`
|
|
21
|
+
Main conversion function. Processing order matters — fenced code blocks and images are stripped first (before inline backtick stripping could interfere), then `stripInlineMarkdown` runs, followed by heading markers and list bullets. Final pass applies mode-specific whitespace normalization and optional character truncation.
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { markdownToPlainText, stripInlineMarkdown } from './markdown-to-plain'
|
|
27
|
+
|
|
28
|
+
// Article mode — preserves paragraph breaks (e.g. JSON-LD body echo)
|
|
29
|
+
const articleText = markdownToPlainText(`
|
|
30
|
+
# Getting Started
|
|
31
|
+
Install with **npm** or \`yarn\`.
|
|
32
|
+
|
|
33
|
+
- Clone the repo
|
|
34
|
+
- Run \`npm install\`
|
|
35
|
+
`)
|
|
36
|
+
// → "Getting Started\nInstall with npm or yarn.\n\nClone the repo\nRun npm install"
|
|
37
|
+
|
|
38
|
+
// Preview mode — single line for chat cards / OG snippets
|
|
39
|
+
const preview = markdownToPlainText(markdownSource, {
|
|
40
|
+
mode: 'preview',
|
|
41
|
+
maxChars: 160,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// Standalone inline strip (e.g. inside extractSections)
|
|
45
|
+
const clean = stripInlineMarkdown('**Bold** and [a link](https://example.com)')
|
|
46
|
+
// → "Bold and a link"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Source
|
|
50
|
+
|
|
51
|
+
[`markdown-to-plain.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/markdown-to-plain.ts)
|
|
@@ -1,38 +1,49 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: f4d365e1aafe7c4342c44a64be1e2e6e -->
|
|
2
|
+
Defines the shared `MediaItem` data contract and lightweight accessor utilities used by media carousel components across the OpenFrame platform.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `MediaItem` Interface
|
|
7
|
+
|
|
8
|
+
Core data shape for a single carousel slide. Supports three media types:
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `id` | `string?` | Optional stable key (omitted by most vendor/profile/category converters) |
|
|
13
|
+
| `type` | `'image' \| 'video' \| 'youtube'` | Media kind — drives rendering strategy |
|
|
14
|
+
| `src` | `string` | Media source URL |
|
|
15
|
+
| `alt` | `string?` | Accessibility alt text |
|
|
16
|
+
| `title` | `string?` | Display title |
|
|
17
|
+
| `caption` | `string?` | Slide caption |
|
|
18
|
+
| `poster` | `string?` | Video poster/placeholder image |
|
|
19
|
+
| `thumbnail` | `string?` | Thumbnail URL |
|
|
20
|
+
| `width` / `height` | `number?` | Intrinsic dimensions |
|
|
21
|
+
| `duration` | `number?` | Video duration in seconds |
|
|
22
|
+
|
|
23
|
+
### Accessor Functions
|
|
24
|
+
|
|
25
|
+
| Function | Returns | Description |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| `getMediaType(item)` | `'image' \| 'video' \| 'youtube'` | Extracts the media type from an item |
|
|
28
|
+
| `getMediaSrc(item)` | `string` | Extracts the source URL |
|
|
29
|
+
| `getMediaPoster(item)` | `string \| undefined` | Extracts the video poster image URL |
|
|
10
30
|
|
|
11
31
|
## Usage Example
|
|
12
32
|
|
|
13
33
|
```typescript
|
|
14
|
-
import { MediaItem, getMediaType, getMediaSrc } from './media-carousel-utils-stub';
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
duration: 120
|
|
31
|
-
}
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
// Get media type and source
|
|
35
|
-
const firstItem = mediaItems[0];
|
|
36
|
-
const type = getMediaType(firstItem); // 'image'
|
|
37
|
-
const src = getMediaSrc(firstItem); // '/images/photo.jpg'
|
|
38
|
-
```
|
|
34
|
+
import { MediaItem, getMediaType, getMediaSrc, getMediaPoster } from './media-carousel-utils-stub';
|
|
35
|
+
|
|
36
|
+
const slide: MediaItem = {
|
|
37
|
+
type: 'video',
|
|
38
|
+
src: 'https://cdn.example.com/clip.mp4',
|
|
39
|
+
poster: 'https://cdn.example.com/thumb.jpg',
|
|
40
|
+
title: 'Product Demo',
|
|
41
|
+
duration: 120,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const type = getMediaType(slide); // 'video'
|
|
45
|
+
const src = getMediaSrc(slide); // 'https://cdn.example.com/clip.mp4'
|
|
46
|
+
const poster = getMediaPoster(slide); // 'https://cdn.example.com/thumb.jpg'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
> **Note:** The carousel keys slides by array index rather than `item.id`. Converters (hub vendor, profile, and category) conventionally omit the `id` field.
|
|
@@ -1,27 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Runtime
|
|
1
|
+
<!-- source-hash: 67651d104f2d85ae6efdf60affb29813 -->
|
|
2
|
+
Runtime utilities for working with ODS (OpenFrame Design System) color tokens, providing platform-aware color resolution, CSS custom property management, and color math helpers for the `openmsp`, `openframe`, and `flamingo` platforms.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
|
9
|
-
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
6
|
+
### Types
|
|
7
|
+
|
|
8
|
+
| Type | Values |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `Platform` | `'openmsp'` \| `'openframe'` \| `'flamingo'` |
|
|
11
|
+
| `ColorCategory` | `'open'` \| `'flamingo'` \| `'system'` \| `'attention'` |
|
|
12
|
+
| `ColorVariant` | `'base'` \| `'hover'` \| `'active'` \| `'focus'` \| `'disabled'` |
|
|
13
|
+
|
|
14
|
+
### Token Lookup
|
|
15
|
+
|
|
16
|
+
- **`getODSToken(category, color, variant?)`** — Resolves a raw token value by composing the key as `{category}-{color}-{variant}`.
|
|
17
|
+
- **`getTokensByCategory(category)`** — Returns all tokens matching a category prefix.
|
|
18
|
+
- **`isValidODSToken(tokenKey)`** — Validates token existence in the ODS registry.
|
|
19
|
+
|
|
20
|
+
### Platform & Theme
|
|
21
|
+
|
|
22
|
+
- **`getCurrentPlatform()`** — Resolves the active platform from `data-app-type` DOM attribute or `NEXT_PUBLIC_APP_TYPE` env var (SSR-safe).
|
|
23
|
+
- **`getPlatformAccentColor(platform?)`** — Returns the CSS variable for the platform accent color.
|
|
24
|
+
- **`getPlatformConfig(platform?)`** — Returns a config object with accent color, theme mode, and brand name.
|
|
25
|
+
- **`switchPlatformTheme(platform)`** — Updates `data-app-type` on `<html>` and dispatches a `platformThemeChanged` custom event.
|
|
26
|
+
- **`generatePlatformCSS(platform)`** — Generates a CSS block with platform-scoped custom property overrides.
|
|
27
|
+
|
|
28
|
+
### Color Math
|
|
29
|
+
|
|
30
|
+
- **`hexToRgb(hex)`** / **`rgbToHex(r, g, b)`** — Hex ↔ RGB conversion with clamping. `hexToRgb` returns `null` on invalid input.
|
|
31
|
+
- **`rgbToHsl(r, g, b)`** / **`hslToRgb(h, s, l)`** — RGB ↔ HSL conversion.
|
|
32
|
+
- **`deriveHoverColor(hex)`** — Darkens each channel by 10.
|
|
33
|
+
- **`deriveActiveColor(hex)`** — Darkens each channel by 20.
|
|
34
|
+
- **`interpolateColors(startToken, endToken, progress)`** — Linear hex interpolation between two token values.
|
|
35
|
+
- **`getReadableTextColor(hex)`** — Returns `'#212121'` (dark) or `'#fafafa'` (light) based on WCAG luminance via `pickReadableTextColor`.
|
|
36
|
+
|
|
37
|
+
### Tailwind & DOM Helpers
|
|
38
|
+
|
|
39
|
+
- **`tokenToTailwindClass(tokenKey, type?)`** — Maps a semantic token name to a Tailwind class (e.g., `bg-ods-accent`).
|
|
40
|
+
- **`applyColorToken(element, property, tokenKey)`** — Sets a CSS custom property directly on an element.
|
|
41
|
+
- **`getSemanticColor(semanticName, platform?)`** — Reads a computed `--color-{name}` value from the live DOM.
|
|
42
|
+
|
|
43
|
+
### React Hook
|
|
44
|
+
|
|
45
|
+
- **`usePlatformColors(platform?)`** — Returns a platform config object plus convenience methods (`getToken`, `switchTheme`, `getSemanticColor`) suitable for use in React components.
|
|
25
46
|
|
|
26
47
|
## Usage Example
|
|
27
48
|
|
|
@@ -30,42 +51,62 @@ import {
|
|
|
30
51
|
getCurrentPlatform,
|
|
31
52
|
getPlatformConfig,
|
|
32
53
|
getODSToken,
|
|
33
|
-
|
|
34
|
-
interpolateColors,
|
|
54
|
+
deriveHoverColor,
|
|
35
55
|
getReadableTextColor,
|
|
36
|
-
|
|
37
|
-
|
|
56
|
+
tokenToTailwindClass,
|
|
57
|
+
hexToRgb,
|
|
58
|
+
rgbToHex,
|
|
38
59
|
} from './ods-color-utils';
|
|
39
60
|
|
|
40
|
-
// Resolve
|
|
61
|
+
// Resolve active platform and config
|
|
41
62
|
const platform = getCurrentPlatform(); // 'openframe'
|
|
42
|
-
|
|
43
|
-
// Get full platform configuration
|
|
44
63
|
const config = getPlatformConfig(platform);
|
|
45
|
-
// {
|
|
46
|
-
//
|
|
64
|
+
// {
|
|
65
|
+
// platform: 'openframe',
|
|
66
|
+
// accentColor: 'var(--ods-open-yellow-base)',
|
|
67
|
+
// isDarkTheme: true,
|
|
68
|
+
// isLightTheme: false,
|
|
69
|
+
// brandName: 'OpenFrame'
|
|
70
|
+
// }
|
|
71
|
+
|
|
72
|
+
// Look up a raw ODS token
|
|
73
|
+
const yellowBase = getODSToken('open', 'yellow', 'base'); // '#f5c518'
|
|
47
74
|
|
|
48
|
-
//
|
|
49
|
-
const
|
|
75
|
+
// Derive interaction states from a custom hex color
|
|
76
|
+
const customBg = '#3a7bd5';
|
|
77
|
+
const hoverBg = deriveHoverColor(customBg); // '#306bcb' (–10 per channel)
|
|
78
|
+
const activeBg = deriveActiveColor(customBg); // '#275bb5' (–20 per channel)
|
|
50
79
|
|
|
51
|
-
//
|
|
52
|
-
const
|
|
53
|
-
// → 'text-ods-text-primary'
|
|
80
|
+
// Pick accessible text color over a background
|
|
81
|
+
const textColor = getReadableTextColor(customBg); // '#fafafa'
|
|
54
82
|
|
|
55
|
-
//
|
|
56
|
-
const
|
|
83
|
+
// Map a semantic token to a Tailwind utility class
|
|
84
|
+
const bgClass = tokenToTailwindClass('accent-primary', 'bg'); // 'bg-ods-accent'
|
|
57
85
|
|
|
58
|
-
//
|
|
59
|
-
const
|
|
86
|
+
// Low-level color math
|
|
87
|
+
const rgb = hexToRgb('#ff6600'); // { r: 255, g: 102, b: 0 }
|
|
88
|
+
const hex = rgbToHex(255, 102, 0); // '#ff6600'
|
|
60
89
|
|
|
61
|
-
// Switch platform at runtime (
|
|
62
|
-
switchPlatformTheme
|
|
90
|
+
// Switch platform theme at runtime (client-side only)
|
|
91
|
+
import { switchPlatformTheme } from './ods-color-utils';
|
|
92
|
+
switchPlatformTheme('flamingo'); // sets data-app-type="flamingo", dispatches event
|
|
93
|
+
|
|
94
|
+
// React usage
|
|
95
|
+
import { usePlatformColors } from './ods-color-utils';
|
|
63
96
|
|
|
64
|
-
// React component usage
|
|
65
97
|
function MyComponent() {
|
|
66
98
|
const { accentColor, isDarkTheme, getToken, switchTheme } = usePlatformColors();
|
|
67
99
|
return <div style={{ color: accentColor }}>{isDarkTheme ? 'Dark' : 'Light'}</div>;
|
|
68
100
|
}
|
|
69
101
|
```
|
|
70
102
|
|
|
71
|
-
|
|
103
|
+
## Notes
|
|
104
|
+
|
|
105
|
+
- **SSR-safe**: Functions that touch `window` or `document` guard with `typeof window === 'undefined'` checks.
|
|
106
|
+
- **`HEX_PATTERN`** (`/^#[0-9a-fA-F]{6}$/`) is exported for external validation.
|
|
107
|
+
- Hover/active darken steps (`10` / `20` per RGB channel) mirror the design system's preset interaction states, keeping custom colors consistent with system tokens.
|
|
108
|
+
- `getSemanticColor` temporarily switches the platform theme to read computed styles — avoid calling it in hot paths.
|
|
109
|
+
|
|
110
|
+
## Source
|
|
111
|
+
|
|
112
|
+
[`ods-color-utils.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ods-color-utils.ts)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 89ad4456d6f452acc2ba185db7b6f3b5 -->
|
|
2
|
+
Constructs branded fallback cover-image URLs for entity cards (onboarding guides, blog posts, releases, etc.) that have no image, centralizing all URL-building logic so consumers never concatenate og-placeholder URLs themselves.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`OgPlaceholderEndpoints`** — Slice of `ChatRuntime.endpoints` needed for base URL resolution; accepts `ogPlaceholderUrl` (explicit) or `imageProxyUrlPrefix` (derived fallback).
|
|
9
|
+
- **`BuildOgPlaceholderOptions`** — Options for `site` label, `aspect` ratio (`'wide'` | `'square'`), and explicit `width`/`height` pixel overrides.
|
|
10
|
+
|
|
11
|
+
### Functions
|
|
12
|
+
|
|
13
|
+
- **`resolveOgPlaceholderBase(endpoints?)`** *(internal)* — Resolves the route base via three-tier priority: explicit `ogPlaceholderUrl` → derived from `imageProxyUrlPrefix` (swaps `/image-proxy` for `/og-placeholder`) → same-origin relative `/api/og-placeholder`.
|
|
14
|
+
- **`buildOgPlaceholderUrl(endpoints, title, options?)`** — Primary entry point. Resolves the base URL, preserves any pre-existing query params, and appends `title`, `site`, and dimension params. SSR- and browser-safe; always returns a usable URL.
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { buildOgPlaceholderUrl } from './og-placeholder'
|
|
20
|
+
|
|
21
|
+
const endpoints = {
|
|
22
|
+
imageProxyUrlPrefix: 'https://api.example.com/image-proxy',
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Wide fallback (1200×630, route default)
|
|
26
|
+
const wideUrl = buildOgPlaceholderUrl(endpoints, 'Getting Started Guide', {
|
|
27
|
+
site: 'Docs',
|
|
28
|
+
aspect: 'wide',
|
|
29
|
+
})
|
|
30
|
+
// → https://api.example.com/og-placeholder?title=Getting+Started+Guide&site=Docs
|
|
31
|
+
|
|
32
|
+
// Square fallback for compact chat-inline slots (1024×1024)
|
|
33
|
+
const squareUrl = buildOgPlaceholderUrl(endpoints, 'Release v2.0', {
|
|
34
|
+
aspect: 'square',
|
|
35
|
+
})
|
|
36
|
+
// → https://api.example.com/og-placeholder?title=Release+v2.0&w=1024&h=1024
|
|
37
|
+
|
|
38
|
+
// Explicit dimensions win over aspect
|
|
39
|
+
const customUrl = buildOgPlaceholderUrl(endpoints, 'Case Study', {
|
|
40
|
+
width: 800,
|
|
41
|
+
height: 400,
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Base resolution priority:** `ogPlaceholderUrl` → derived from `imageProxyUrlPrefix` → `/api/og-placeholder` (same-origin fallback). Per-platform brand colors are resolved server-side — never baked into the URL.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!-- source-hash: 9edb965a12c9dd5942bb4987087d4fed -->
|
|
2
|
+
Exports a single Tailwind class string used to standardize icon styling across all section-hero and page-header components in the library. Intentionally placed in `utils/` as a plain server-safe module (no `'use client'` directive) to prevent Next.js client-reference proxy issues when the constant is consumed by server components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`SECTION_HERO_ICON_CLASS`** — Tailwind class string (`'h-10 w-10 text-ods-accent'`) applied uniformly to every section-hero icon (Roadmap, Releases, Knowledge Hub, Data Room, etc.)
|
|
7
|
+
|
|
8
|
+
## Usage Example
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { SECTION_HERO_ICON_CLASS } from './page-header-constants'
|
|
12
|
+
import { BookOpen } from 'lucide-react'
|
|
13
|
+
|
|
14
|
+
// Server component — safe to import directly
|
|
15
|
+
export function KnowledgeHubHero() {
|
|
16
|
+
return <BookOpen className={SECTION_HERO_ICON_CLASS} />
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Why Not `'use client'`?
|
|
21
|
+
|
|
22
|
+
Importing this constant from a `'use client'` module causes Next.js to wrap it in a **client-reference proxy** when consumed in a server context. Lucide's internal `mergeClasses` then calls `.trim()` on that proxy object instead of a plain string, resulting in a runtime crash. Keeping this file in `utils/` with no client directive ensures it always resolves to a raw string in all rendering contexts.
|
|
23
|
+
|
|
24
|
+
## Source
|
|
25
|
+
|
|
26
|
+
[`page-header-constants.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/page-header-constants.ts)
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Centralized configuration module for all platform branding assets
|
|
1
|
+
<!-- source-hash: 760045cd91c218f69a16fe3966013d41 -->
|
|
2
|
+
Centralized configuration module for all platform branding assets — icons, colors, display names, descriptions, and slogans — across the OpenFrame OSS library's supported platforms.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### Lookup Maps
|
|
6
|
+
### Static Lookup Maps
|
|
7
7
|
|
|
8
|
-
| Export |
|
|
9
|
-
|
|
10
|
-
| `platformIcons` | React icon
|
|
8
|
+
| Export | Description |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `platformIcons` | React icon nodes (5×5) per platform |
|
|
11
11
|
| `platformColors` | Tailwind `bg-*` class strings per platform |
|
|
12
|
-
| `platformDisplayNames` | Human-readable names (e.g
|
|
12
|
+
| `platformDisplayNames` | Human-readable names (e.g. `"OpenFrame"`) |
|
|
13
13
|
| `platformDescriptions` | Full marketing copy per platform |
|
|
14
|
-
| `platformSlogans` | Short taglines
|
|
15
|
-
| `platformHexColors` | Raw hex
|
|
16
|
-
| `platformIconNames` | String icon identifiers for config
|
|
14
|
+
| `platformSlogans` | Short taglines per platform |
|
|
15
|
+
| `platformHexColors` | Raw hex strings for dynamic styling |
|
|
16
|
+
| `platformIconNames` | String icon identifiers for config payloads |
|
|
17
17
|
|
|
18
|
-
Supported
|
|
18
|
+
**Supported platforms:** `openframe`, `openmsp`, `flamingo`, `flamingo-teaser`, `marketing-hub`, `product-hub`, `revenue-hub`, `people-hub`, `company-hub`, `tmcg`, `universal`
|
|
19
19
|
|
|
20
20
|
### Utility Functions
|
|
21
21
|
|
|
22
22
|
| Function | Returns | Notes |
|
|
23
|
-
|
|
24
|
-
| `getPlatformIcon(name)` | `React.ReactNode` |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `getPlatformIcon(name)` | `React.ReactNode` | 5×5 icon, falls back to `universal` |
|
|
25
|
+
| `getSmallPlatformIcon(name)` | `React.ReactNode` | 4×4 icon for filter buttons, white-optimized |
|
|
26
|
+
| `getPlatformIconComponent(name, className?)` | `React.ReactNode` | 6×6 default, customizable via `className` |
|
|
25
27
|
| `getPlatformColor(name)` | `string` | Tailwind `bg-*` class |
|
|
26
|
-
| `getPlatformDisplayName(name)` | `string` | Falls back to raw name |
|
|
27
|
-
| `getPlatformDescription(name)` | `string` | Falls back to raw name |
|
|
28
|
-
| `getPlatformSlogan(name)` | `string` | Falls back to raw name |
|
|
29
|
-
| `getDefaultColorForPlatform(name)` | `string` | Hex
|
|
30
|
-
| `getDefaultIconForPlatform(name)` | `string` | Icon name string,
|
|
31
|
-
| `
|
|
32
|
-
| `getPlatformIconComponent(name, className?)` | `React.ReactNode` | 6×6 default, accepts custom `className` |
|
|
33
|
-
| `transformPlatformConfigsToOptions(configs)` | `SelectableOption[]` | Maps `PlatformConfig[]` to UI-selectable options with icon and color |
|
|
28
|
+
| `getPlatformDisplayName(name)` | `string` | Falls back to raw `name` |
|
|
29
|
+
| `getPlatformDescription(name)` | `string` | Falls back to raw `name` |
|
|
30
|
+
| `getPlatformSlogan(name)` | `string` | Falls back to raw `name` |
|
|
31
|
+
| `getDefaultColorForPlatform(name)` | `string` | Hex color, defaults to `universal` |
|
|
32
|
+
| `getDefaultIconForPlatform(name)` | `string` | Icon name string, defaults to `universal` |
|
|
33
|
+
| `transformPlatformConfigsToOptions(configs)` | `SelectableOption[]` | Maps `PlatformConfig[]` from DB to UI-ready options |
|
|
34
34
|
|
|
35
35
|
## Usage Example
|
|
36
36
|
|
|
37
37
|
```typescript
|
|
38
38
|
import {
|
|
39
|
+
getPlatformIcon,
|
|
39
40
|
getPlatformDisplayName,
|
|
40
41
|
getPlatformColor,
|
|
41
42
|
getSmallPlatformIcon,
|
|
42
|
-
transformPlatformConfigsToOptions
|
|
43
|
-
} from './platform-config';
|
|
43
|
+
transformPlatformConfigsToOptions,
|
|
44
|
+
} from './config/platform-config';
|
|
44
45
|
|
|
45
46
|
// Render a platform badge
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
// Populate a platform selector dropdown
|
|
54
|
-
const options = transformPlatformConfigsToOptions(platformConfigs);
|
|
55
|
-
```
|
|
47
|
+
const icon = getPlatformIcon('openframe'); // OpenFrame SVG node
|
|
48
|
+
const label = getPlatformDisplayName('openframe'); // "OpenFrame"
|
|
49
|
+
const bg = getPlatformColor('openframe'); // "bg-[#8B5CF6]"
|
|
50
|
+
|
|
51
|
+
// Small icon for filter chips
|
|
52
|
+
const smallIcon = getSmallPlatformIcon('flamingo'); // 4×4 pink flamingo
|
|
56
53
|
|
|
57
|
-
|
|
54
|
+
// Transform DB records into dropdown options
|
|
55
|
+
const options = transformPlatformConfigsToOptions(platformConfigs);
|
|
56
|
+
// [{ id, name, displayName, description, icon, color }, ...]
|
|
57
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: 47a64824b89a260db77220062bb3aaf7 -->
|
|
2
|
+
Maps product release types to their corresponding `StatusBadge` color schemes for use in `ProductReleaseCard` (lg variant) metadata rendering.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Types
|
|
7
|
+
|
|
8
|
+
- **`ReleaseType`** — Union type: `'major' | 'minor' | 'patch' | 'beta' | 'alpha'`
|
|
9
|
+
- **`ReleaseTypeBadgeColor`** — Union type: `'error' | 'cyan' | 'success' | 'warning'`
|
|
10
|
+
|
|
11
|
+
### Functions
|
|
12
|
+
|
|
13
|
+
- **`releaseTypeToBadgeColor(t)`** — Converts a release type string to its badge color. Accepts `ReleaseType | string | null | undefined` to handle legacy API values gracefully. Returns `undefined` for unknown inputs (badge hidden, no crash).
|
|
14
|
+
|
|
15
|
+
### Color Mapping
|
|
16
|
+
|
|
17
|
+
| Release Type | Color | Semantic |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `major` | `error` (red) | Breaking change |
|
|
20
|
+
| `minor` | `cyan` | New feature |
|
|
21
|
+
| `patch` | `success` (green) | Safe bump |
|
|
22
|
+
| `beta` / `alpha` | `warning` (yellow) | Preview |
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { releaseTypeToBadgeColor } from './release-badge'
|
|
28
|
+
|
|
29
|
+
// Standard usage in ProductReleaseCard
|
|
30
|
+
const badgeColor = releaseTypeToBadgeColor(release.release_type)
|
|
31
|
+
|
|
32
|
+
// badgeColor is passed alongside releaseType — both are required for the
|
|
33
|
+
// card to render a colored badge; undefined falls back to '—' placeholder
|
|
34
|
+
<ProductReleaseCard
|
|
35
|
+
size="lg"
|
|
36
|
+
releaseType={release.release_type}
|
|
37
|
+
releaseTypeBadgeColor={badgeColor}
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Handles unknown/legacy values safely
|
|
41
|
+
releaseTypeToBadgeColor('rc') // → undefined (badge hidden)
|
|
42
|
+
releaseTypeToBadgeColor(null) // → undefined (badge hidden)
|
|
43
|
+
releaseTypeToBadgeColor('patch') // → 'success'
|
|
44
|
+
releaseTypeToBadgeColor('major') // → 'error'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> **Note:** The color vocabulary here is specific to `StatusBadge` / `ProductReleaseCard`. The admin form's `releaseTypeOptions.color` array uses a separate vocabulary — these two mappings are intentionally kept distinct.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 90922d1a0fba270fdb0d92bc58406d0e -->
|
|
2
|
+
Resolves the cover image for a `ProductReleaseCard` using a deterministic priority chain, serving as the single source of truth for all surfaces that render release covers.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ReleaseCoverSource`
|
|
7
|
+
Input interface describing the available image candidates on a release entity:
|
|
8
|
+
|
|
9
|
+
| Field | Description |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `featured_image` | Editor-curated cover — highest priority |
|
|
12
|
+
| `highlight_video_thumbnail` | AI-generated highlight reel thumbnail |
|
|
13
|
+
| `main_video_thumbnail` | Full-release video thumbnail |
|
|
14
|
+
| `og_image_url` | SEO/OG fallback image |
|
|
15
|
+
|
|
16
|
+
### `ReleaseCoverResult`
|
|
17
|
+
Output interface returned by the resolver:
|
|
18
|
+
|
|
19
|
+
| Field | Description |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `cover` | Resolved image URL, or `null` if none available |
|
|
22
|
+
| `hasVideoCover` | `true` only when the active cover is a video thumbnail (priorities 2–3) |
|
|
23
|
+
|
|
24
|
+
### `resolveReleaseCover(r: ReleaseCoverSource): ReleaseCoverResult`
|
|
25
|
+
Applies the priority chain using `||` (not `??`) so empty strings fall through rather than rendering a broken `<Image src="">`. `hasVideoCover` is suppressed when `featured_image` is set, preventing a misleading Play overlay on still images.
|
|
26
|
+
|
|
27
|
+
## Usage Example
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { resolveReleaseCover } from './release-cover'
|
|
31
|
+
|
|
32
|
+
const { cover, hasVideoCover } = resolveReleaseCover({
|
|
33
|
+
featured_image: null,
|
|
34
|
+
highlight_video_thumbnail: 'https://cdn.example.com/highlight.jpg',
|
|
35
|
+
main_video_thumbnail: 'https://cdn.example.com/main.jpg',
|
|
36
|
+
og_image_url: 'https://cdn.example.com/og.jpg',
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// cover → 'https://cdn.example.com/highlight.jpg'
|
|
40
|
+
// hasVideoCover → true
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> **Adding a new fallback source?** Edit only `ReleaseCoverSource`, `ReleaseCoverResult`, and the chain in `resolveReleaseCover` — all rendering surfaces pick up the change automatically.
|
|
44
|
+
|
|
45
|
+
**Source:** [`release-cover.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/release-cover.ts)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 67a0df770f7417b847b731191fc01a80 -->
|
|
2
|
+
Handles same-page hash navigation by combining `history.pushState`, synthetic `hashchange` events, and smooth scrolling — working around Next.js limitations that suppress smooth scroll during navigation and treat same-URL `router.push` as a no-op.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Constants
|
|
7
|
+
|
|
8
|
+
| Constant | Value | Purpose |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `STICKY_HEADER_OFFSET_PX` | `96` | Offset for pages with both a section-nav strip and the global hub header |
|
|
11
|
+
| `HUB_HEADER_OFFSET_PX` | `80` | Offset for pages with only the global hub header (docs, blog, vendor detail) |
|
|
12
|
+
|
|
13
|
+
### Functions & Interfaces
|
|
14
|
+
|
|
15
|
+
- **`normalizeHashFragment(hash)`** — Strips any extra `#` segments from a fragment string (e.g., `'#a#b'` → `'#a'`), keeping the URL bar and `getElementById` in sync.
|
|
16
|
+
- **`NavigateSamePageHashOptions`** — Interface with optional `headerOffset` (pixels to subtract for sticky chrome) and `history` mode (`'push'` or `'replace'`).
|
|
17
|
+
- **`navigateSamePageHash(target, options)`** — Core primitive that validates the target is same-origin/pathname/search, normalizes malformed fragments, updates history, fires a synthetic `hashchange` event, and smooth-scrolls to the anchor. Returns `true` if the navigation was claimed, `false` for cross-page targets.
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import {
|
|
23
|
+
navigateSamePageHash,
|
|
24
|
+
HUB_HEADER_OFFSET_PX,
|
|
25
|
+
STICKY_HEADER_OFFSET_PX,
|
|
26
|
+
} from './same-page-hash-nav'
|
|
27
|
+
|
|
28
|
+
// In a TOC link click handler (replaces history entry instead of pushing)
|
|
29
|
+
function handleTocClick(href: string) {
|
|
30
|
+
const claimed = navigateSamePageHash(href, {
|
|
31
|
+
headerOffset: HUB_HEADER_OFFSET_PX,
|
|
32
|
+
history: 'replace',
|
|
33
|
+
})
|
|
34
|
+
if (!claimed) {
|
|
35
|
+
router.push(href) // fall through for cross-page targets
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Bare-hash shorthand — no need to reconstruct pathname + search
|
|
40
|
+
navigateSamePageHash('#features', {
|
|
41
|
+
headerOffset: STICKY_HEADER_OFFSET_PX,
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> **Dev-mode warnings:** In development, `navigateSamePageHash` logs to the console when it detects a malformed multi-fragment hash or a missing anchor element, pointing to the upstream composer as the source.
|