@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,43 +1,44 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React loading
|
|
1
|
+
<!-- source-hash: 562bc3a2494ee1c2637528e67f5924fc -->
|
|
2
|
+
A React skeleton loading component that renders an animated placeholder UI for profile content while data is being fetched.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- Creates animated placeholder elements mimicking profile layout
|
|
6
|
+
- **`ProfileLoadingSkeleton`** — Named export functional component that renders a two-section animated skeleton:
|
|
7
|
+
- **Header skeleton** — Circular avatar placeholder (`h-16 w-16`) alongside two text line placeholders
|
|
8
|
+
- **Content skeleton** — Three progressively narrower text line placeholders (`full`, `3/4`, `1/2` widths)
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
- **`ProfileLoadingSkeletonProps`** — Interface accepting an optional `className` string for layout customization
|
|
11
|
+
|
|
12
|
+
- **`cn`** utility — Merges Tailwind class names, allowing consumers to extend or override base styles
|
|
13
13
|
|
|
14
14
|
## Usage Example
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
17
|
import { ProfileLoadingSkeleton } from './components/ProfileLoadingSkeleton'
|
|
18
18
|
|
|
19
|
+
// Basic usage
|
|
19
20
|
function ProfilePage() {
|
|
20
|
-
const { data
|
|
21
|
-
|
|
21
|
+
const { data, isLoading } = useProfile()
|
|
22
|
+
|
|
22
23
|
if (isLoading) {
|
|
23
|
-
return
|
|
24
|
-
<div className="container mx-auto p-4">
|
|
25
|
-
<ProfileLoadingSkeleton className="max-w-md" />
|
|
26
|
-
</div>
|
|
27
|
-
)
|
|
24
|
+
return <ProfileLoadingSkeleton />
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
return <
|
|
26
|
+
|
|
27
|
+
return <ProfileCard data={data} />
|
|
31
28
|
}
|
|
32
29
|
|
|
33
|
-
//
|
|
34
|
-
function
|
|
30
|
+
// With custom className for layout overrides
|
|
31
|
+
function SidebarProfile() {
|
|
35
32
|
return (
|
|
36
|
-
<ProfileLoadingSkeleton
|
|
37
|
-
className="bg-white rounded-lg p-6 shadow-sm"
|
|
38
|
-
/>
|
|
33
|
+
<ProfileLoadingSkeleton className="max-w-sm px-4" />
|
|
39
34
|
)
|
|
40
35
|
}
|
|
41
36
|
```
|
|
42
37
|
|
|
43
|
-
|
|
38
|
+
## Notes
|
|
39
|
+
|
|
40
|
+
- Uses the `ods-skeleton` design token (via `bg-ods-skeleton`) for consistent skeleton coloring across the OpenFrame Design System
|
|
41
|
+
- Animation is handled entirely via Tailwind's `animate-pulse` — no additional animation dependencies required
|
|
42
|
+
- The `className` prop is merged at the root `div`, making it straightforward to control width, padding, or margin from the parent
|
|
43
|
+
|
|
44
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ProfileLoadingSkeleton.tsx)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 0d5d4e7429863e3d1ee5b0efa2bea571 -->
|
|
2
|
+
Barrel export file for the `related-content` component subpath, re-exporting all public API surface from the `related-content-section` module.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `RelatedContentSection` | Component | Main component for rendering a section of related content cards |
|
|
9
|
+
| `GROUP_PAGE_SIZE` | Constant | Pagination size constant for grouped content display |
|
|
10
|
+
| `RelatedContentSectionProps` | Type | Props interface for `RelatedContentSection` |
|
|
11
|
+
| `CardLinkProvider` | Type | Provider component type for card link rendering |
|
|
12
|
+
| `CardLinkProviderProps` | Type | Props interface for `CardLinkProvider` |
|
|
13
|
+
| `CardLinkAnchorProps` | Type | Props interface for anchor elements within card links |
|
|
14
|
+
| `AdminCampaignCardSlot` | Type | Slot type for admin campaign card customization |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import {
|
|
20
|
+
RelatedContentSection,
|
|
21
|
+
GROUP_PAGE_SIZE,
|
|
22
|
+
type RelatedContentSectionProps,
|
|
23
|
+
type CardLinkProvider,
|
|
24
|
+
} from '@flamingo-stack/openframe-frontend-core/components/related-content'
|
|
25
|
+
|
|
26
|
+
const linkProvider: CardLinkProvider = ({ href, children }) => (
|
|
27
|
+
<a href={href}>{children}</a>
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
const props: RelatedContentSectionProps = {
|
|
31
|
+
items: contentItems,
|
|
32
|
+
pageSize: GROUP_PAGE_SIZE,
|
|
33
|
+
cardLinkProvider: linkProvider,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
<RelatedContentSection {...props} />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Source
|
|
40
|
+
|
|
41
|
+
[`index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/index.ts)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!-- source-hash: fd0a68c39b09e2977a51c082ec62bbc0 -->
|
|
2
|
+
Renders grouped content references using canonical card components, supporting three data modes: controlled (explicit refs), suggestion (self-fetched via API), and SSR-hydrated suggestion (server-prefetched with client hydration).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Exported Types & Interfaces
|
|
7
|
+
|
|
8
|
+
- **`CardLinkAnchorProps`** — Anchor prop bundle (`href`, `target`, `rel`, `onClick`) passed to per-card link surfaces
|
|
9
|
+
- **`CardLinkProviderProps` / `CardLinkProvider`** — Render-prop component type for host-injected navigation logic (keeps hook calls inside the injected component)
|
|
10
|
+
- **`AdminCampaignCardSlot`** — Optional host-injected `{ Card, Skeleton }` pair for the admin-only `marketing_campaign` type
|
|
11
|
+
|
|
12
|
+
### Internal Functions
|
|
13
|
+
|
|
14
|
+
- **`DefaultLinkPropsProvider`** — Standalone embed default: same-tab for relative URLs, new tab for cross-origin (via `decideNewTab`, no router dependency)
|
|
15
|
+
- **`defaultResolveHref`** — Returns the ref's stored `url` and `targetPlatform` as-is; hubs override this with domain-aware recomposition
|
|
16
|
+
- **`renderSkeletonForType`** — Per-type skeleton dispatch matching each card's exact size to eliminate layout shift on data resolve
|
|
17
|
+
- **`CardForType`** — Pure function component (zero hook calls) dispatching the correct sized card per content type
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Controlled mode — render explicit refs
|
|
23
|
+
<RelatedContentSection
|
|
24
|
+
contentRefs={myRefs}
|
|
25
|
+
apiBaseUrl="https://api.example.com"
|
|
26
|
+
/>
|
|
27
|
+
|
|
28
|
+
// Suggestion mode — self-fetch from the 5-tier engine
|
|
29
|
+
<RelatedContentSection
|
|
30
|
+
entityType="blog_post_existing"
|
|
31
|
+
entityId="post-123"
|
|
32
|
+
apiBaseUrl="https://api.example.com"
|
|
33
|
+
minResults={5}
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
// SSR-hydrated — skip first client fetch
|
|
37
|
+
<RelatedContentSection
|
|
38
|
+
entityType="blog_post_existing"
|
|
39
|
+
entityId="post-123"
|
|
40
|
+
apiBaseUrl="https://api.example.com"
|
|
41
|
+
initialItems={serverFetchedRefs}
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
// Hub embed with custom link provider and campaign card
|
|
45
|
+
<RelatedContentSection
|
|
46
|
+
entityType="investor_update"
|
|
47
|
+
entityId="update-42"
|
|
48
|
+
apiBaseUrl="https://api.example.com"
|
|
49
|
+
LinkProvider={HubNavLinkProvider}
|
|
50
|
+
resolveHref={buildContentURL}
|
|
51
|
+
adminCampaignCard={{ Card: CampaignCard, Skeleton: CampaignCardSkeleton }}
|
|
52
|
+
/>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Data Flow & Architecture Notes
|
|
56
|
+
|
|
57
|
+
- **No `react-query` dependency** — uses `useSelfFetch` (plain `fetch`) so embedders need no `QueryClientProvider`
|
|
58
|
+
- **Deep card imports** (not the chat barrel) keep this component's source graph react-query-free at the import level
|
|
59
|
+
- **Group layout/card sizing** delegated entirely to `CONTENT_REF_GROUPS` — no per-type layout logic lives here
|
|
60
|
+
- **Lockstep sibling**: `CardForType` (sized cards) mirrors `CHAT_CARD_REGISTRY` in `../chat/entity-cards/dispatch.tsx` (compact `size='sm'`); register new fetch-mode types in **both** dispatchers
|
|
61
|
+
|
|
62
|
+
**Source:** [`related-content-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/related-content-section.tsx)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- source-hash: dcbaab437550f57b36728f8f0999a86c -->
|
|
2
|
+
Shared author byline card for article-shaped detail pages (blog posts, product releases, onboarding guides, investor updates). Designed for embed-readiness across multiple host apps without requiring Next.js or a `ChatRuntime` provider.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ArticleAuthorBylineProps`
|
|
7
|
+
|
|
8
|
+
| Prop | Type | Description |
|
|
9
|
+
|------|------|-------------|
|
|
10
|
+
| `author` | `string \| null` | Required display name; returns `null` when empty |
|
|
11
|
+
| `avatar` | `string \| null` | Avatar URL; falls back to a `User` icon placeholder |
|
|
12
|
+
| `bio` | `string \| null` | Bio paragraph rendered below the name |
|
|
13
|
+
| `jobTitle` | `string \| null` | Job title rendered under the author name |
|
|
14
|
+
| `publishedAt` | `string \| Date \| null` | ISO string or Date; formatted as "Month D, YYYY" (UTC-stable) |
|
|
15
|
+
| `href` | `string \| null` | Optional link wrapping the author name |
|
|
16
|
+
| `fallbackBio` | `string \| null` | Italic fallback text when `bio` is absent; hosts inject platform-specific copy |
|
|
17
|
+
| `size` | `'md' \| 'lg'` | Avatar size — `md` = 56px (default), `lg` = 64px |
|
|
18
|
+
| `proxyImageUrl` | `(url: string) => string` | Host-injected image URL mapper; takes precedence over ambient runtime proxy |
|
|
19
|
+
|
|
20
|
+
### `ArticleAuthorByline`
|
|
21
|
+
|
|
22
|
+
Main exported component. Renders an avatar, name, optional date/job title, and bio. Avatar URLs are proxied through the optional ambient `ChatRuntime` (`imageProxyUrlPrefix`) or a host-injected `proxyImageUrl` — falls back to the raw URL when neither is available.
|
|
23
|
+
|
|
24
|
+
### `formatDate` (internal)
|
|
25
|
+
|
|
26
|
+
Formats a `string | Date` to `"Month D, YYYY"` using `timeZone: 'UTC'` to prevent SSR/client hydration mismatches (React error #418) near midnight boundaries.
|
|
27
|
+
|
|
28
|
+
## Usage Example
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { ArticleAuthorByline } from 'openframe-oss-lib/components/article-author-byline'
|
|
32
|
+
|
|
33
|
+
// Basic usage
|
|
34
|
+
<ArticleAuthorByline
|
|
35
|
+
author="Jane Smith"
|
|
36
|
+
avatar="https://cdn.example.com/avatars/jane.jpg"
|
|
37
|
+
jobTitle="Senior Engineer"
|
|
38
|
+
publishedAt="2024-06-15"
|
|
39
|
+
href="/authors/jane-smith"
|
|
40
|
+
bio="Jane writes about distributed systems and developer tooling."
|
|
41
|
+
size="lg"
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
// With host-injected fallback bio (e.g. from hub app-config)
|
|
45
|
+
<ArticleAuthorByline
|
|
46
|
+
author="Jane Smith"
|
|
47
|
+
publishedAt={new Date()}
|
|
48
|
+
fallbackBio="Contributing author on the Flamingo platform."
|
|
49
|
+
proxyImageUrl={(url) => `https://img-proxy.example.com/?url=${url}`}
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
// Returns null — no card rendered
|
|
53
|
+
<ArticleAuthorByline author={null} />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Source:** [`article-author-byline.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/article-author-byline.tsx)
|
|
@@ -1,51 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 0f15139d09909f034ccba359c69226cf -->
|
|
2
|
+
Animated loading skeleton for detail/article pages, providing placeholder UI while content is being fetched.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `DetailPageSkeletonProps`
|
|
7
|
+
| Prop | Type | Default | Description |
|
|
8
|
+
|------|------|---------|-------------|
|
|
9
|
+
| `metadataColumns` | `number` | `4` | Number of metadata grid columns |
|
|
10
|
+
| `showImageGallery` | `boolean` | `true` | Toggles horizontal image gallery vs. featured image skeleton |
|
|
11
|
+
| `bare` | `boolean` | `false` | Renders skeleton blocks only, without the built-in `PageLayout` wrapper |
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
13
|
+
### `DetailPageSkeleton`
|
|
14
|
+
The main export. Renders a pulsing skeleton layout composed of:
|
|
15
|
+
- **Title block** — full-width heading placeholder
|
|
16
|
+
- **Category tags** — row of tag-shaped placeholders
|
|
17
|
+
- **Metadata grid** — dynamic column count via `metadataColumns`
|
|
18
|
+
- **Image gallery or featured image** — toggled by `showImageGallery`
|
|
19
|
+
- **Content sections** — three repeating section/paragraph blocks
|
|
20
|
+
|
|
21
|
+
When `bare = false` (default), the skeleton is wrapped in a self-contained `PageLayout` at the hub article width (`max-w-[1280px]`). Set `bare = true` when the caller already provides a page shell, ensuring the loading state inherits the same width, padding, and `min-height` as the loaded page.
|
|
17
22
|
|
|
18
23
|
## Usage Example
|
|
19
24
|
|
|
20
25
|
```typescript
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// Custom configuration for case study pages
|
|
37
|
-
function CaseStudyPage() {
|
|
38
|
-
return (
|
|
39
|
-
<div>
|
|
40
|
-
{loading ? (
|
|
41
|
-
<DetailPageSkeleton
|
|
42
|
-
metadataColumns={3}
|
|
43
|
-
showImageGallery={false} // Shows featured image instead
|
|
44
|
-
/>
|
|
45
|
-
) : (
|
|
46
|
-
<CaseStudyContent data={caseStudy} />
|
|
47
|
-
)}
|
|
48
|
-
</div>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
```
|
|
26
|
+
// Default — self-contained with PageLayout wrapper
|
|
27
|
+
<DetailPageSkeleton />
|
|
28
|
+
|
|
29
|
+
// Match a gallery-less case study page
|
|
30
|
+
<DetailPageSkeleton showImageGallery={false} metadataColumns={3} />
|
|
31
|
+
|
|
32
|
+
// Inside a caller-supplied shell (e.g. during streaming SSR)
|
|
33
|
+
<PageShell>
|
|
34
|
+
<DetailPageSkeleton bare />
|
|
35
|
+
</PageShell>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Source
|
|
39
|
+
|
|
40
|
+
[`detail-page-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/detail-page-skeleton.tsx)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: fb39f9743352e03b32dfac5b92ed2410 -->
|
|
2
|
+
Horizontal-scroll media strip that renders mixed still-image and video tiles, opening a lightbox modal for images and playing clips inline.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`MediaGalleryStripItem`** — Shape of each media item: `media_type`, `media_url`, optional `title`, and optional stable `id`
|
|
9
|
+
- **`MediaGalleryStripProps`** — Props for the strip: an `items` array and an optional `className`
|
|
10
|
+
|
|
11
|
+
### Exports
|
|
12
|
+
|
|
13
|
+
- **`MediaGalleryStrip`** — Primary component; renders a horizontally-scrollable row of 240×200 tiles
|
|
14
|
+
- **`isGalleryImage`** *(internal)* — Returns `true` for any `media_type` that is not `"video"` or `"demo"`
|
|
15
|
+
|
|
16
|
+
### Behavior
|
|
17
|
+
|
|
18
|
+
- **Image tiles** render as accessible `<button>` elements (keyboard focusable, `aria-label` included) that open `ImageGalleryModal` at the correct lightbox index, computed against image-only items (skipping video tiles to avoid off-by-one bugs)
|
|
19
|
+
- **Video tiles** render `<Video url={...} layout="native" />` inline with its own native controls
|
|
20
|
+
- Returns `null` when `items` is empty or undefined
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { MediaGalleryStrip, MediaGalleryStripItem } from './media-gallery-strip';
|
|
26
|
+
|
|
27
|
+
const media: MediaGalleryStripItem[] = [
|
|
28
|
+
{ id: 'img-1', media_type: 'screenshot', media_url: '/shots/dashboard.png', title: 'Dashboard' },
|
|
29
|
+
{ id: 'vid-1', media_type: 'video', media_url: '/clips/demo.mp4', title: 'Demo' },
|
|
30
|
+
{ id: 'img-2', media_type: 'screenshot', media_url: '/shots/settings.png', title: 'Settings' },
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
export default function ReleasePage() {
|
|
34
|
+
return (
|
|
35
|
+
<MediaGalleryStrip
|
|
36
|
+
items={media}
|
|
37
|
+
className="py-4"
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> **Note:** The lightbox index tracks only image-type items — clicking the third tile (an image) correctly opens the modal at index `1`, not index `2`, regardless of how many video tiles precede it.
|
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders the delivery section body with two
|
|
1
|
+
<!-- source-hash: ad9149ea5e08cab5bb6c603f98a042bd -->
|
|
2
|
+
Renders the delivery section body with two filtered tables — "Recently Completed" and "Active Tasks" — fetched from separate API endpoints and driven by URL search params.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Main component that orchestrates
|
|
6
|
+
**`DeliveryLists` (default export)**
|
|
7
|
+
Main component that orchestrates data fetching and rendering for both delivery buckets.
|
|
8
|
+
|
|
9
|
+
**`DeliveryListsProps`**
|
|
8
10
|
|
|
9
|
-
### `DeliveryListsProps`
|
|
10
11
|
| Prop | Type | Default | Description |
|
|
11
|
-
|
|
12
|
+
|---|---|---|---|
|
|
12
13
|
| `completedApiEndpoint` | `string` | `/api/delivery/completed` | GET endpoint for completed tasks |
|
|
13
14
|
| `inProgressApiEndpoint` | `string` | `/api/delivery/in-progress` | GET endpoint for active tasks |
|
|
14
|
-
| `searchParamKey` | `string` | `
|
|
15
|
-
| `taskTypeParamKey` | `string` | `
|
|
15
|
+
| `searchParamKey` | `string` | `DEV_SECTION_PARAM_KEYS.search` | URL param key for search input |
|
|
16
|
+
| `taskTypeParamKey` | `string` | `DEV_SECTION_PARAM_KEYS.deliveryTaskType` | URL param key for task-type filter |
|
|
17
|
+
|
|
18
|
+
**Internal behaviors**
|
|
19
|
+
- Reads `search` and `task_type` from URL params via `useSearchParams()` and passes them as query params on both outbound fetches (parallel via `Promise.all`)
|
|
20
|
+
- `useScrollToHash` — deep-link support for `?search=<id>#delivery-<id>` patterns using `STICKY_HEADER_OFFSET_PX`
|
|
21
|
+
- Renders `LoadError` on fetch failure (with reload retry), `EmptyState` (search or generic variant) when no results, or both `DeliveryTable` instances when data is present
|
|
16
22
|
|
|
17
|
-
> **Coupling constraint:** `searchParamKey`
|
|
23
|
+
> ⚠️ **Coupling constraint:** `searchParamKey` / `taskTypeParamKey` must match the consuming chrome's `section.search.paramKey` / `section.filter.paramKey` on both the URL-read side and the outbound API query string. Mismatches require proxy-level rewriting.
|
|
18
24
|
|
|
19
25
|
## Usage Example
|
|
20
26
|
|
|
21
27
|
```typescript
|
|
22
|
-
// Zero-config
|
|
28
|
+
// Zero-config — defaults match hub API routes and OpenFrame chrome param keys
|
|
23
29
|
<DeliveryLists />
|
|
24
30
|
|
|
25
|
-
// Custom endpoints
|
|
31
|
+
// Custom endpoints and param keys (must match your chrome config)
|
|
26
32
|
<DeliveryLists
|
|
27
|
-
completedApiEndpoint="/api/v2/
|
|
28
|
-
inProgressApiEndpoint="/api/v2/
|
|
33
|
+
completedApiEndpoint="/api/v2/delivery/done"
|
|
34
|
+
inProgressApiEndpoint="/api/v2/delivery/active"
|
|
29
35
|
searchParamKey="q"
|
|
30
36
|
taskTypeParamKey="type"
|
|
31
37
|
/>
|
|
32
38
|
```
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- **Parallel fetches** via `Promise.all` on both endpoints, re-triggered when URL params or endpoint props change
|
|
37
|
-
- **Empty states**: shows a "Reset Filters" CTA when active filters return no results; shows a generic message when no tasks exist
|
|
38
|
-
- **Error state**: renders `<LoadError>` with a page-reload retry on fetch failure
|
|
39
|
-
- **Loading**: passes `isLoading` to each `<DeliveryTable>` for skeleton rendering
|
|
40
|
+
**Source:** [`delivery-lists.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/delivery-lists.tsx)
|
|
@@ -1,41 +1,45 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 54319e5c90a08528d4927fa4cb24f409 -->
|
|
2
|
+
Canonical single-row presentation component for a ClickUp delivery item, serving as the shared visual primitive across the `/bug-fixes-and-enhancements` delivery table and HubSpot ticket linked-delivery cards.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `DeliveryRow` (exported component)
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
Renders a delivery item's title, subtitle, description, status badge, and task-type badge in a responsive two-column layout. Conditionally renders as a clickable `<Link>` (env-aware embed shim) or a plain `<div>` based on the `href` prop.
|
|
8
9
|
|
|
9
10
|
### `DeliveryRowProps` (exported interface)
|
|
11
|
+
|
|
10
12
|
| Prop | Type | Description |
|
|
11
|
-
|
|
12
|
-
| `item` | `DeliveryItem` |
|
|
13
|
-
| `href` | `string?` | When set,
|
|
14
|
-
| `caption` | `string?` |
|
|
15
|
-
| `
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `item` | `DeliveryItem` | The delivery data to render |
|
|
15
|
+
| `href` | `string?` | When set, wraps the row in a `<Link>` for deep-linking |
|
|
16
|
+
| `caption` | `string?` | Uppercase label above the title (e.g., `"LINKED DELIVERY"`) |
|
|
17
|
+
| `id` | `string?` | DOM id for `scrollIntoView` targeting (e.g., `delivery-<external_id>`) |
|
|
18
|
+
| `className` | `string?` | Additional Tailwind classes merged via `cn()` |
|
|
16
19
|
|
|
17
|
-
### `getRelativeTime` (internal
|
|
18
|
-
|
|
20
|
+
### `getRelativeTime` (internal)
|
|
21
|
+
|
|
22
|
+
Converts a Unix timestamp to a human-readable relative string (`"today"`, `"yesterday"`, `"3 days ago"`, etc.).
|
|
19
23
|
|
|
20
24
|
## Usage Example
|
|
21
25
|
|
|
22
26
|
```typescript
|
|
23
|
-
// Standard list
|
|
24
|
-
<DeliveryRow item={deliveryItem} />
|
|
25
|
-
|
|
26
|
-
// Clickable deep-link variant (ticket card surface)
|
|
27
|
+
// Standard list rendering (DeliveryTable)
|
|
27
28
|
<DeliveryRow
|
|
28
29
|
item={deliveryItem}
|
|
29
|
-
|
|
30
|
-
caption="LINKED DELIVERY"
|
|
30
|
+
id={`delivery-${deliveryItem.externalId}`}
|
|
31
31
|
/>
|
|
32
32
|
|
|
33
|
-
//
|
|
33
|
+
// Ticket-side linked-delivery card with deep-link and caption
|
|
34
34
|
<DeliveryRow
|
|
35
35
|
item={deliveryItem}
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
href={buildDevSectionUrl('delivery', deliveryItem.id)}
|
|
37
|
+
caption="LINKED DELIVERY"
|
|
38
|
+
id={`delivery-${deliveryItem.externalId}`}
|
|
38
39
|
/>
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
**Key behaviors:**
|
|
43
|
+
- `href` present → outer element becomes a `<Link>` (soft Next.js navigation, preserves TanStack Query state on back)
|
|
44
|
+
- `id` present → enables `useScrollToHash` targeting; `scroll-mt-24` offset is always applied
|
|
45
|
+
- Highlighted state (flash-focus pulse) is applied by the consuming component via `className`
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 93ccac2f20e75b0f16b4483fd2b33560 -->
|
|
2
|
+
Renders a bordered card containing one `DeliveryRow` per delivery item, with skeleton loading states, empty states, and deep-link anchor support via URL `?focus=<id>` params.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| `SkeletonRow` | Internal | Animated placeholder row shown during loading |
|
|
10
|
-
| `DeliveryTableProps` | Interface | `items: DeliveryItem[]`, `isLoading?: boolean` |
|
|
6
|
+
- **`DeliveryTable`** *(exported)* — Main component accepting a list of `DeliveryItem` objects. Handles three render states: skeleton loading, empty, and populated. Each row receives a DOM `id` built via `devSectionAnchorId('delivery', item.id)` (e.g. `#delivery-<external_id>`) to support scroll-to-hash deep-linking from ticket linked-cards.
|
|
7
|
+
- **`SkeletonRow`** *(internal)* — Animated pulse placeholder matching the responsive layout of a real row (title, subtitle, description, and two badge slots).
|
|
8
|
+
- **`DeliveryItem`** — Type imported from `../../../types/delivery`; the flat item shape consumed by this table and its sibling `DeliveryRow`.
|
|
11
9
|
|
|
12
|
-
##
|
|
10
|
+
## Props
|
|
13
11
|
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `items` | `DeliveryItem[]` | required | Flat list of delivery items to render |
|
|
15
|
+
| `isLoading` | `boolean` | `false` | Renders 5 skeleton rows when `true` |
|
|
16
|
+
|
|
17
|
+
> **Note:** `focusId` (the `?focus=<id>` URL param) is resolved by the parent `DeliveryLists` component; this table only applies the anchor id to each row via `devSectionAnchorId`.
|
|
19
18
|
|
|
20
19
|
## Usage Example
|
|
21
20
|
|
|
@@ -23,19 +22,18 @@ A bordered card component that renders a list of `DeliveryItem` entries, one `De
|
|
|
23
22
|
import { DeliveryTable } from './delivery-table';
|
|
24
23
|
import type { DeliveryItem } from '../../../types/delivery';
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
<DeliveryTable items={deliveryItems} />
|
|
25
|
+
const inProgressItems: DeliveryItem[] = [...];
|
|
28
26
|
|
|
29
|
-
// Loading state
|
|
27
|
+
// Loading state
|
|
30
28
|
<DeliveryTable items={[]} isLoading={true} />
|
|
31
29
|
|
|
32
|
-
//
|
|
33
|
-
<DeliveryTable items={completedItems} />
|
|
30
|
+
// Populated — parent renders two separate tables per bucket
|
|
34
31
|
<DeliveryTable items={inProgressItems} />
|
|
32
|
+
|
|
33
|
+
// Empty state (renders "No tasks available" message)
|
|
34
|
+
<DeliveryTable items={[]} />
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Source
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
- `DeliveryRow` handles all visual logic per row — `DeliveryTable` is purely a layout/state shell.
|
|
41
|
-
- Designed to be instantiated twice by the parent `DeliveryLists` component: once for completed items and once for in-progress items.
|
|
39
|
+
[`delivery-table.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/delivery-table.tsx)
|