@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -1,50 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Unified page component for rendering markdown-backed legal documents (privacy policy, terms of service, etc.), replacing duplicate per-document
|
|
1
|
+
<!-- source-hash: 4d38aabccf09a05e49d7f4a234d30fbd -->
|
|
2
|
+
Unified React page component for rendering markdown-backed legal documents (privacy policy, terms of service, etc.), replacing duplicate per-document page components with a single configurable implementation.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `LegalDocumentPage`
|
|
7
|
-
Main exported component
|
|
7
|
+
Main exported component. Fetches and renders a legal document via `useLegalDocs`, handling loading skeletons, error states, and empty states. Conditionally wraps output in `PageShell` based on the `shell` prop.
|
|
8
8
|
|
|
9
9
|
### `LegalDocumentPageProps`
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
10
|
+
Full configuration interface including:
|
|
11
|
+
- `docType` — drives the default `/api/legal/<docType>` endpoint
|
|
12
|
+
- `title`, `fallbackDescription`, `contactEmail` — display copy
|
|
13
|
+
- `errorTitle`, `errorContactPrompt`, `emptyStateMessage` — state-specific messaging
|
|
14
|
+
- `initialData` / `initialLastUpdatedLabel` — SSR hydration support
|
|
15
|
+
- `MarkdownRenderer` — injectable renderer component (defaults to `RichMarkdownRenderer`)
|
|
16
|
+
- `backButton` — configurable back navigation or `false` to hide
|
|
17
|
+
- `shell` — toggle `PageShell` wrapper for embed contexts
|
|
18
18
|
|
|
19
19
|
### `LegalDocumentMarkdownRendererProps`
|
|
20
|
-
|
|
20
|
+
Interface for the pluggable `MarkdownRenderer` component contract: `content`, optional `sectionIds`, and `demoteMarkdownH1ToH2`.
|
|
21
21
|
|
|
22
22
|
## Usage Example
|
|
23
23
|
|
|
24
24
|
```typescript
|
|
25
|
-
|
|
25
|
+
import { LegalDocumentPage } from './legal-document-page';
|
|
26
|
+
|
|
27
|
+
// Basic usage (Privacy Policy)
|
|
26
28
|
<LegalDocumentPage
|
|
27
29
|
docType="privacy"
|
|
28
30
|
title="Privacy Policy"
|
|
29
|
-
fallbackDescription="Our privacy policy and data protection practices
|
|
31
|
+
fallbackDescription="Our privacy policy and data protection practices"
|
|
30
32
|
contactEmail="privacy@openframe.io"
|
|
31
33
|
errorContactPrompt="For privacy-related questions, please contact:"
|
|
32
34
|
errorTitle="Unable to load privacy policy"
|
|
33
35
|
emptyStateMessage="Privacy policy content is not available at this time."
|
|
34
36
|
initialData={ssrDocument}
|
|
35
|
-
initialLastUpdatedLabel=
|
|
37
|
+
initialLastUpdatedLabel={ssrLabel}
|
|
36
38
|
/>
|
|
37
39
|
|
|
38
|
-
//
|
|
40
|
+
// Embedded mode — host provides layout, custom renderer
|
|
39
41
|
<LegalDocumentPage
|
|
40
42
|
docType="terms"
|
|
41
43
|
title="Terms of Service"
|
|
42
|
-
fallbackDescription="
|
|
44
|
+
fallbackDescription="Our terms and conditions"
|
|
43
45
|
contactEmail="legal@openframe.io"
|
|
44
46
|
errorContactPrompt="For legal questions, please contact:"
|
|
45
47
|
errorTitle="Unable to load terms of service"
|
|
46
|
-
emptyStateMessage="Terms of service content is not available
|
|
47
|
-
|
|
48
|
+
emptyStateMessage="Terms of service content is not available."
|
|
49
|
+
shell={false}
|
|
48
50
|
backButton={false}
|
|
51
|
+
apiEndpoint="/proxy/api/legal/terms"
|
|
52
|
+
MarkdownRenderer={MyRichRenderer}
|
|
49
53
|
/>
|
|
50
|
-
```
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Source:** [`legal-document-page.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/legal-document-page.tsx)
|
|
@@ -1,42 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: ee50746d44329588b4ebfaeeb2bd0d9c -->
|
|
2
|
+
Fetches a legal document (privacy policy, terms of service, or any markdown-backed legal page) from a hub API endpoint, with SSR/RSC hydration support via optional `initialData`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `UseLegalDocsOptions` | Hook configuration — optional `initialData` for SSR hydration and `apiEndpoint` override for reverse-proxy embedders |
|
|
12
|
-
| `UseLegalDocsReturn` | Hook return value — `data`, `isLoading`, `error`, and `refetch` |
|
|
8
|
+
- **`LegalDocument`** — Shape of the fetched legal document, mirroring the hub's server-side `LegalDocument` type to avoid server-side import dependencies.
|
|
9
|
+
- **`UseLegalDocsOptions`** — Hook configuration: optional `initialData` for SSR hydration and `apiEndpoint` override for reverse-proxy embedders.
|
|
10
|
+
- **`UseLegalDocsReturn`** — Hook return shape: `data`, `isLoading`, `error`, and `refetch`.
|
|
13
11
|
|
|
14
|
-
###
|
|
12
|
+
### Hook
|
|
15
13
|
|
|
16
|
-
Core hook
|
|
17
|
-
|
|
18
|
-
- **Default endpoint:** `/api/legal/<docType>` — overridable via `apiEndpoint`
|
|
19
|
-
- **SSR-safe:** When `initialData` is provided, the initial client fetch is skipped entirely
|
|
20
|
-
- **`docType` reset guard:** When `docType` changes, stale data is cleared immediately before the new fetch resolves — prevents flash of wrong content in embedders cycling through document types
|
|
21
|
-
- **Error handling:** Propagates HTTP errors and empty-content responses as human-readable strings via the `error` state
|
|
14
|
+
- **`useLegalDocs(docType, options)`** — Core hook. Resolves the effective endpoint (`/api/legal/<docType>` by default), manages fetch lifecycle state, resets state on `docType` change, and skips the initial client fetch when `initialData` is provided.
|
|
22
15
|
|
|
23
16
|
## Usage Example
|
|
24
17
|
|
|
25
18
|
```typescript
|
|
19
|
+
import { useLegalDocs } from './use-legal-docs';
|
|
20
|
+
|
|
26
21
|
// Basic client-side fetch
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
22
|
+
function PrivacyPage() {
|
|
23
|
+
const { data, isLoading, error, refetch } = useLegalDocs('privacy');
|
|
24
|
+
|
|
25
|
+
if (isLoading) return <p>Loading…</p>;
|
|
26
|
+
if (error) return <p>Error: {error}</p>;
|
|
27
|
+
return <article>{data?.content}</article>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// With SSR-prefetched data (skips initial client fetch)
|
|
31
|
+
function TermsPage({ serverData }: { serverData: LegalDocument }) {
|
|
32
|
+
const { data } = useLegalDocs('terms', { initialData: serverData });
|
|
33
|
+
return <article>{data?.content}</article>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// With a proxied endpoint (embedder override)
|
|
37
|
+
function EmbedPrivacy() {
|
|
38
|
+
const { data } = useLegalDocs('privacy', {
|
|
39
|
+
apiEndpoint: '/proxy/legal/privacy',
|
|
40
|
+
});
|
|
41
|
+
return <article>{data?.content}</article>;
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Notes
|
|
46
|
+
|
|
47
|
+
- `docType` is treated as an opaque string and intentionally kept out of `console.error`'s format-string argument to prevent CodeQL `js/tainted-format-string` findings.
|
|
48
|
+
- State resets on `docType` change prevent stale content from briefly rendering during sequential document loads.
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React client component that renders a single onboarding step as an interactive card,
|
|
1
|
+
<!-- source-hash: 90ed7a4de133a1c00403aa5d89978252 -->
|
|
2
|
+
A React client component that renders a single onboarding step as an interactive card, displaying step metadata and contextual action buttons based on completion/skip state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `OnboardingStepCard`
|
|
7
|
-
The primary exported component. Renders a responsive card
|
|
8
|
-
|
|
9
|
-
**
|
|
7
|
+
The primary exported component. Renders a responsive card (stacked on mobile, horizontal on `md+`) with two columns:
|
|
8
|
+
- **Left column** — step title and description (truncated with tooltip)
|
|
9
|
+
- **Right column** — state-driven action area
|
|
10
10
|
|
|
11
|
+
### `OnboardingStepCardProps`
|
|
11
12
|
| Prop | Type | Description |
|
|
12
|
-
|
|
13
|
-
| `step` | `object` | Step metadata
|
|
14
|
-
| `isCompleted` | `boolean` | Shows
|
|
15
|
-
| `isSkipped` | `boolean` | Shows
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `step` | `object` | Step metadata: id, title, description, action handlers, and icon factory |
|
|
15
|
+
| `isCompleted` | `boolean` | Shows COMPLETED badge + secondary action button |
|
|
16
|
+
| `isSkipped` | `boolean` | Shows SKIPPED badge, no actions |
|
|
16
17
|
| `isCheckingCompletion` | `boolean` | Renders animated skeleton placeholders |
|
|
17
|
-
| `onAction` | `() => void \| Promise<void>` | Primary action handler
|
|
18
|
+
| `onAction` | `() => void \| Promise<void>` | Primary action handler |
|
|
18
19
|
| `onSkip` | `() => void` | Skip step handler |
|
|
19
20
|
| `className` | `string?` | Optional additional CSS classes |
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
### State Machine (Right Column)
|
|
23
|
+
| Condition | Rendered UI |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `isCheckingCompletion` | Pulsing skeleton loaders |
|
|
26
|
+
| `isCompleted` | COMPLETED badge + repeat-action button |
|
|
27
|
+
| `isSkipped` | SKIPPED badge only |
|
|
28
|
+
| default | Skip + primary action buttons |
|
|
23
29
|
|
|
24
30
|
## Usage Example
|
|
25
31
|
|
|
@@ -30,15 +36,17 @@ The primary exported component. Renders a responsive card with a title/descripti
|
|
|
30
36
|
title: 'Connect your PSA',
|
|
31
37
|
description: 'Link your ticketing system to get started',
|
|
32
38
|
actionIcon: (color) => <PlugIcon color={color} />,
|
|
33
|
-
actionText: 'Connect
|
|
39
|
+
actionText: 'Connect',
|
|
34
40
|
completedText: 'Reconnect',
|
|
35
41
|
onAction: () => router.push('/integrations/psa'),
|
|
36
|
-
onSkip: () =>
|
|
42
|
+
onSkip: () => markSkipped('connect-psa'),
|
|
37
43
|
}}
|
|
38
44
|
isCompleted={false}
|
|
39
45
|
isSkipped={false}
|
|
40
46
|
isCheckingCompletion={false}
|
|
41
47
|
onAction={() => router.push('/integrations/psa')}
|
|
42
|
-
onSkip={() =>
|
|
48
|
+
onSkip={() => markSkipped('connect-psa')}
|
|
43
49
|
/>
|
|
44
|
-
```
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> **Note:** `handleAction` uses internal `isProcessing` state to disable the button during async operations, preventing duplicate submissions. Both handlers call `e.stopPropagation()` to prevent card-level click bubbling.
|
|
@@ -1,47 +1,61 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 7a7aa5f6a5049b0fd0108b153da19ff8 -->
|
|
2
|
+
Orchestrates a multi-step onboarding walkthrough UI, managing step completion state, skip/dismiss interactions, and syncing external completion checks to persistent localStorage state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
### `OnboardingWalkthrough` (default export)
|
|
7
|
+
Main component that renders a header with dismiss/close controls and a list of `OnboardingStepCard` items.
|
|
8
|
+
|
|
9
|
+
### `OnboardingWalkthroughProps`
|
|
10
|
+
| Prop | Type | Default | Description |
|
|
11
|
+
|------|------|---------|-------------|
|
|
12
|
+
| `steps` | `OnboardingStepConfig[]` | — | Step definitions to render |
|
|
13
|
+
| `onDismiss` | `() => void` | — | Callback fired after dismissal |
|
|
14
|
+
| `storageKey` | `string` | `'openframe-onboarding-state'` | localStorage key for persisted state |
|
|
15
|
+
| `completionStatus` | `Record<string, boolean>` | — | External hook-driven completion map |
|
|
16
|
+
| `isLoadingCompletion` | `boolean` | `false` | Suppresses auto-marking while checks are in flight |
|
|
17
|
+
| `className` / `spacing` | `string` | — | Layout overrides |
|
|
18
|
+
|
|
19
|
+
### Internal Behaviors
|
|
20
|
+
- **Auto-sync** (`useEffect`): Detects changes in `completionStatus` and bulk-marks newly completed steps via `markMultipleComplete`, guarded by refs to prevent race conditions.
|
|
21
|
+
- **`handleStepAction`** (`useCallback`): Runs `step.onAction()`, then optionally calls `step.checkComplete()` to verify and mark completion; `knowledge-base` steps are auto-completed without verification.
|
|
22
|
+
- **`handleStepSkip`** / **`handleDismiss`**: Delegate to `useOnboardingState` and fire optional callbacks.
|
|
11
23
|
|
|
12
24
|
## Usage Example
|
|
13
25
|
|
|
14
26
|
```typescript
|
|
15
27
|
import { OnboardingWalkthrough } from './onboarding-walkthrough'
|
|
16
|
-
import
|
|
28
|
+
import { useOnboardingCompletion } from '../../../hooks/ui/use-onboarding-completion'
|
|
17
29
|
|
|
18
|
-
const steps
|
|
30
|
+
const steps = [
|
|
19
31
|
{
|
|
20
32
|
id: 'knowledge-base',
|
|
21
|
-
title: '
|
|
22
|
-
description: 'Upload your
|
|
23
|
-
onAction: async () =>
|
|
33
|
+
title: 'Add Knowledge Base',
|
|
34
|
+
description: 'Upload your docs.',
|
|
35
|
+
onAction: async () => router.push('/knowledge'),
|
|
24
36
|
},
|
|
25
37
|
{
|
|
26
38
|
id: 'connect-psa',
|
|
27
|
-
title: 'Connect
|
|
28
|
-
description: '
|
|
29
|
-
onAction: async () =>
|
|
30
|
-
checkComplete: async () => await
|
|
39
|
+
title: 'Connect PSA',
|
|
40
|
+
description: 'Link your ticketing system.',
|
|
41
|
+
onAction: async () => router.push('/integrations'),
|
|
42
|
+
checkComplete: async () => !!(await fetchPsaStatus()),
|
|
43
|
+
onSkip: () => console.log('PSA skipped'),
|
|
31
44
|
},
|
|
32
45
|
]
|
|
33
46
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
function Dashboard() {
|
|
48
|
+
const { completionStatus, isLoading } = useOnboardingCompletion()
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<OnboardingWalkthrough
|
|
52
|
+
steps={steps}
|
|
53
|
+
completionStatus={completionStatus}
|
|
54
|
+
isLoadingCompletion={isLoading}
|
|
55
|
+
onDismiss={() => console.log('dismissed')}
|
|
56
|
+
/>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
41
59
|
```
|
|
42
60
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- **Auto-sync**: When `completionStatus` prop changes, steps flagged `true` are automatically marked complete via `markMultipleComplete`, guarded by a JSON-stringified status key to avoid re-processing identical data.
|
|
46
|
-
- **Action deduplication**: `actionInProgressRef` tracks in-flight step actions per `step.id`, silently skipping duplicate triggers.
|
|
47
|
-
- **All hooks called unconditionally** — the `state.dismissed` early return happens *after* all hooks and refs are initialized, satisfying React's Rules of Hooks.
|
|
61
|
+
> **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/onboarding-walkthrough.tsx)
|
|
@@ -1,38 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 60b9ca8b719e2a8ed7836247d6f859d9 -->
|
|
2
|
+
Public barrel module for the product release UI component suite, marked as a client component boundary (`"use client"`).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
| Export |
|
|
7
|
-
|
|
8
|
-
| `ProductReleaseCard` |
|
|
9
|
-
| `ProductReleaseCardSkeleton` |
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `ProductReleaseCard` | Card component for displaying a single product release |
|
|
9
|
+
| `ProductReleaseCardSkeleton` | Loading skeleton for `ProductReleaseCard` |
|
|
10
|
+
| `ProductReleasesView` | List/grid view rendering multiple release cards |
|
|
11
|
+
| `ReleaseDetailPage` | Full detail page for a single release, with injectable component slots |
|
|
12
|
+
| `ReleaseDetailSkeleton` | Loading skeleton for `ReleaseDetailPage` |
|
|
13
|
+
| `DeliveryResponse` | Re-exported type from the canonical types module for downstream consumers |
|
|
14
|
+
|
|
15
|
+
### Notable Type Exports
|
|
16
|
+
|
|
17
|
+
- `ProductReleaseCardProps`, `ProductReleaseCardSkeletonProps`, `ProductReleasesViewProps`
|
|
18
|
+
- `ProductReleaseCardExtras` — extra data shape passed into release cards
|
|
19
|
+
- `ReleaseDetailPageProps`, `VideoDisplaySectionProps`, `MarkdownRendererProps`, `RoadmapItem`
|
|
20
|
+
|
|
21
|
+
> **⚠️ Intentional Omissions:** `RoadmapSectionProps` and `DeliverySectionProps` are **not** re-exported here. They conflict with identically-named prop types on `<RoadmapGrid>` and `<DeliverySection>` causing `TS2308` ambiguous re-export errors at the top-level barrel. Import them directly:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import type { RoadmapSectionProps } from '@flamingo-stack/openframe-frontend-core/components/shared/product-release/release-detail-page'
|
|
25
|
+
```
|
|
20
26
|
|
|
21
27
|
## Usage Example
|
|
22
28
|
|
|
23
29
|
```typescript
|
|
24
30
|
import {
|
|
25
|
-
|
|
26
|
-
ProductReleaseCardSkeleton,
|
|
31
|
+
ProductReleasesView,
|
|
27
32
|
ReleaseDetailPage,
|
|
28
33
|
ReleaseDetailSkeleton,
|
|
29
|
-
type
|
|
34
|
+
type ProductReleaseCardExtras,
|
|
30
35
|
type DeliveryResponse,
|
|
31
36
|
} from '@flamingo-stack/openframe-frontend-core/components/shared/product-release'
|
|
32
37
|
|
|
33
|
-
// Render a
|
|
34
|
-
<
|
|
38
|
+
// Render a list of releases
|
|
39
|
+
<ProductReleasesView releases={releases} />
|
|
35
40
|
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
// Render a full release detail page with a suspense fallback
|
|
42
|
+
<Suspense fallback={<ReleaseDetailSkeleton />}>
|
|
43
|
+
<ReleaseDetailPage release={release} />
|
|
44
|
+
</Suspense>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Source:** [`components/shared/product-release/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/shared/product-release/index.ts)
|
|
@@ -1,44 +1,38 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: c2128eeaf09cf16a3c77d41f2e6d9b86 -->
|
|
2
|
+
Animated loading skeleton for `ProductReleaseCard` that prevents layout shift by precisely matching the loaded card's dimensions in both `lg` and `sm` size variants.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `ProductReleaseCardSkeleton`
|
|
7
|
-
|
|
8
|
-
A client-side animated pulse skeleton component with two size branches:
|
|
9
|
-
|
|
10
|
-
| Branch | Matches | Structure |
|
|
11
|
-
|--------|---------|-----------|
|
|
12
|
-
| `lg` | `ProductReleaseCard size="lg"` | Hero image + version pill + title + summary + changelog strip + 4-cell metadata grid |
|
|
13
|
-
| `sm` | `ProductReleaseCard size="sm"` | Thumbnail + title row + date row + summary row |
|
|
14
|
-
|
|
15
6
|
### `ProductReleaseCardSkeletonProps`
|
|
16
7
|
|
|
17
8
|
| Prop | Type | Default | Description |
|
|
18
9
|
|------|------|---------|-------------|
|
|
19
10
|
| `className` | `string` | — | Additional CSS classes |
|
|
20
|
-
| `size` | `'lg' \| 'sm'` | `'lg'` | Must match the target
|
|
11
|
+
| `size` | `'lg' \| 'sm'` | `'lg'` | Must match the target `ProductReleaseCard` size prop |
|
|
12
|
+
|
|
13
|
+
### `ProductReleaseCardSkeleton`
|
|
14
|
+
|
|
15
|
+
The exported component renders two structurally distinct skeletons:
|
|
16
|
+
|
|
17
|
+
- **`size='lg'`** — Full card with hero section (16:9 image + version pill + title + summary), a changelog strip placeholder, and a 4-cell metadata grid (3 stat cells + 1 author avatar cell). All inner element heights are pinned to match the resolved card's `min-h` reservations.
|
|
18
|
+
- **`size='sm'`** — Compact inline card (used in chat contexts) with a square thumbnail, title row with version pill, date row, and summary row. Uses `<span>` elements to remain valid inside inline containers.
|
|
19
|
+
|
|
20
|
+
Both branches apply `animate-pulse` and throw defensively if an unsupported `size` value is passed at runtime.
|
|
21
21
|
|
|
22
22
|
## Usage Example
|
|
23
23
|
|
|
24
24
|
```typescript
|
|
25
25
|
import { ProductReleaseCardSkeleton } from './product-release-card-skeleton'
|
|
26
26
|
|
|
27
|
-
// Full release
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<ProductReleaseCardSkeleton key={i} size="lg" />
|
|
33
|
-
))}
|
|
34
|
-
</div>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Compact inline placeholder (e.g. inside a chat message)
|
|
39
|
-
function ChatReleaseLoading() {
|
|
40
|
-
return <ProductReleaseCardSkeleton size="sm" />
|
|
41
|
-
}
|
|
27
|
+
// Full card — use while fetching release data for the main releases list
|
|
28
|
+
<ProductReleaseCardSkeleton size="lg" />
|
|
29
|
+
|
|
30
|
+
// Compact card — use while fetching release data in a chat message slot
|
|
31
|
+
<ProductReleaseCardSkeleton size="sm" className="mt-2" />
|
|
42
32
|
```
|
|
43
33
|
|
|
44
|
-
> **
|
|
34
|
+
> **Layout shift note:** The `size` prop on this skeleton **must** match the `size` prop passed to the resolved `ProductReleaseCard`. Mismatching causes a measurable reflow when the skeleton is replaced because `lg` and `sm` produce different pixel heights.
|
|
35
|
+
|
|
36
|
+
## Source
|
|
37
|
+
|
|
38
|
+
[`product-release-card-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/product-release-card-skeleton.tsx)
|
|
@@ -1,56 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
React
|
|
1
|
+
<!-- source-hash: 2ffaa5e5c7023bbeed7803f954f2f327 -->
|
|
2
|
+
React component that renders product release cards in two density variants (`lg` and `sm`) for displaying software release information across OpenFrame and Flamingo MSP platform surfaces.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Types & Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `ProductReleaseCardAnchorProps` | Structural `<a>` prop bundle for consumer-controlled routing (href, target, rel, onClick) |
|
|
12
|
-
| `ProductReleaseCardProps` | Full prop surface for the card component |
|
|
8
|
+
- **`ProductReleaseCardSize`** — Union type `'lg' | 'sm'` controlling card density
|
|
9
|
+
- **`ProductReleaseCardAnchorProps`** — Structural `<a>` prop bundle (`href`, `target`, `rel`, `onClick`) for consumer-composed navigation; shape-compatible with the hub's `useNavLink` hook
|
|
10
|
+
- **`ProductReleaseCardProps`** — Full prop surface including title, summary, version, changelog counts, author, cover image, and release metadata
|
|
13
11
|
|
|
14
12
|
### `ProductReleaseCard`
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
Main export. Renders one of two layouts based on the `size` prop (defaults to `'lg'`):
|
|
17
15
|
|
|
18
|
-
- **`lg
|
|
19
|
-
- **`sm
|
|
16
|
+
- **`lg`** — Three-zone layout: hero (16:9 cover image + version pill + title + summary), changelog stats strip (feature/fix/improvement/breaking counts), and a fixed 4-cell metadata grid (Type · Status · Released · Author). Renders as an `<InteractiveCard>` with hover/focus states.
|
|
17
|
+
- **`sm`** — Compact horizontal layout (~80px tall) for inline chat and tight surfaces. Uses `<span>` elements instead of block-level tags (safe inside markdown `<p>`), 56px icon, 1-line title, and condensed meta (version · date).
|
|
18
|
+
|
|
19
|
+
Navigation is handled via `anchorProps` (preferred) or legacy `onClick` for back-compat.
|
|
20
20
|
|
|
21
21
|
## Usage Example
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
|
-
import { ProductReleaseCard } from '
|
|
24
|
+
import { ProductReleaseCard } from '@openframe/ui'
|
|
25
25
|
|
|
26
26
|
// Large catalog card with full metadata
|
|
27
27
|
<ProductReleaseCard
|
|
28
28
|
size="lg"
|
|
29
|
-
title="OpenFrame 2.
|
|
30
|
-
summary="
|
|
31
|
-
version="2.
|
|
32
|
-
formattedDate="
|
|
33
|
-
coverImage="https://cdn.
|
|
29
|
+
title="OpenFrame 2.4.0"
|
|
30
|
+
summary="Adds AI-powered ticket triage and bulk automation rules."
|
|
31
|
+
version="2.4.0"
|
|
32
|
+
formattedDate="Jun 12, 2025"
|
|
33
|
+
coverImage="https://cdn.example.com/releases/2.4.0-cover.png"
|
|
34
34
|
releaseType="minor"
|
|
35
35
|
releaseStatus="stable"
|
|
36
36
|
releaseTypeBadgeColor="success"
|
|
37
|
-
changelogCounts={{ features: 8, fixes:
|
|
38
|
-
author={{ full_name: "
|
|
39
|
-
anchorProps={{
|
|
37
|
+
changelogCounts={{ features: 8, fixes: 14, improvements: 5, breaking: 0 }}
|
|
38
|
+
author={{ full_name: "Ada Lovelace", avatar_url: "/avatars/ada.png", job_title: "Staff Engineer" }}
|
|
39
|
+
anchorProps={{
|
|
40
|
+
href: "/releases/2.4.0",
|
|
41
|
+
onClick: (e) => router.push("/releases/2.4.0"),
|
|
42
|
+
}}
|
|
40
43
|
/>
|
|
41
44
|
|
|
42
|
-
// Compact inline card
|
|
45
|
+
// Compact inline card for chat surfaces
|
|
43
46
|
<ProductReleaseCard
|
|
44
47
|
size="sm"
|
|
45
|
-
title="OpenFrame 2.
|
|
46
|
-
version="2.
|
|
47
|
-
formattedDate="
|
|
48
|
-
anchorProps={{ href: "/releases/2.
|
|
48
|
+
title="OpenFrame 2.4.0"
|
|
49
|
+
version="2.4.0"
|
|
50
|
+
formattedDate="Jun 12, 2025"
|
|
51
|
+
anchorProps={{ href: "/releases/2.4.0" }}
|
|
49
52
|
/>
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- **Routing:** Prefer `anchorProps` (from the hub's `useNavLink`) over the legacy `onClick` prop. When both are provided, `anchorProps` wins.
|
|
55
|
-
- **Author cell:** Always rendered using `effectiveAuthor` (falls back to `{ full_name: '—', avatar_url: null, job_title: 'Unknown' }`) to maintain a fixed 4-column grid and prevent skeleton reflow.
|
|
56
|
-
- **Inline duplication policy:** The `lg` metadata grid intentionally duplicates the hub's `<EntityAuthorCard>` visuals — the OSS lib carries zero hub imports by design. Keep both in lockstep when cell padding, divider styles, or avatar sizes change.
|
|
55
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/product-release-card.tsx)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: 12df6264efd81d55770e0ad3e4556641 -->
|
|
2
|
+
Self-contained list view for product releases that handles fetching, filtering, pagination, and card rendering. Designed to be embedded with minimal configuration — the host provides an API endpoint and base path; all URL param reading, data fetching, and state management are handled internally.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ProductReleasesView` (default export)
|
|
7
|
+
Main list surface. Reads search/status/page URL params written by the section chrome, fetches from the configured endpoint via `useSelfFetch`, and renders a stable slot-count layout to prevent height shifts during loading.
|
|
8
|
+
|
|
9
|
+
### `ReleaseRow`
|
|
10
|
+
Internal per-release component that isolates per-item hook calls (`useChatRuntime`, `useEntityCardLink`, `useRouter`) outside the parent `.map()` loop to comply with Rules of Hooks. Resolves the card's navigation href via `resolveContentHref` and delegates navigation to `executeNavigationImperative`.
|
|
11
|
+
|
|
12
|
+
### `ProductReleaseCardExtras`
|
|
13
|
+
Exported type describing the per-release prop bundle the `buildCardProps` callback must return — all `ProductReleaseCardProps` fields except those the view supplies directly (`title`, `summary`, `version`, `size`, `anchorProps`, `onClick`, `className`).
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Minimal — uses all defaults (endpoint, basePath, rich card builder)
|
|
19
|
+
<ProductReleasesView />
|
|
20
|
+
|
|
21
|
+
// Custom endpoint + SSR hydration
|
|
22
|
+
<ProductReleasesView
|
|
23
|
+
endpoint="/api/platform/releases"
|
|
24
|
+
initialData={serverFetchedData}
|
|
25
|
+
itemsPerPage={10}
|
|
26
|
+
basePath="/updates"
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
// Custom card props builder
|
|
30
|
+
<ProductReleasesView
|
|
31
|
+
buildCardProps={(release) => ({
|
|
32
|
+
formattedDate: formatDate(release.released_at),
|
|
33
|
+
releaseType: release.type,
|
|
34
|
+
})}
|
|
35
|
+
/>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Configuration
|
|
39
|
+
|
|
40
|
+
| Prop | Default | Description |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `endpoint` | `/api/releases` | GET endpoint; view appends `limit`, `offset`, `search`, `release_status` |
|
|
43
|
+
| `initialData` | — | SSR hydration payload; skips initial client fetch |
|
|
44
|
+
| `itemsPerPage` | `5` | Fixed slot count for stable layout |
|
|
45
|
+
| `basePath` | `/releases` | Fallback href prefix when `composeContentUrl` is not wired |
|
|
46
|
+
| `buildCardProps` | `buildProductReleaseCardProps` | Derive per-card metadata from a release object |
|
|
47
|
+
| `searchParamKey` | `'search'` | Must match the URL param written by the section chrome |
|
|
48
|
+
| `statusParamKey` | `'release_status'` | Status filter URL param key |
|
|
49
|
+
| `pageParamKey` | `'page'` | Pagination URL param key |
|