@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
package/src/components/.steps.md
CHANGED
|
@@ -1,44 +1,58 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React component for
|
|
1
|
+
<!-- source-hash: 061e3bda4b366c5ccd3858bef10b0bc5 -->
|
|
2
|
+
A client-side React component pair for rendering a vertical step-by-step progress indicator, automatically tracking active, completed, and pending states.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`Steps
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
- **`Steps`** — Container component that manages step state. Accepts `currentStep` (1-based index) and automatically injects `stepNumber`, `isActive`, `isCompleted`, and `isLast` props into child `Step` components.
|
|
7
|
+
- **`Step`** — Individual step item displaying a numbered circle indicator, title, optional description, and a connecting vertical line. Renders a checkmark SVG when completed.
|
|
8
|
+
|
|
9
|
+
### Props
|
|
10
|
+
|
|
11
|
+
**`Steps`**
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Description |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `currentStep` | `number` | 1-based index of the currently active step |
|
|
16
|
+
| `className` | `string` | Optional additional CSS classes |
|
|
17
|
+
|
|
18
|
+
**`Step`**
|
|
19
|
+
|
|
20
|
+
| Prop | Type | Description |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `title` | `string` | Step label (required) |
|
|
23
|
+
| `description` | `string` | Optional subtitle text |
|
|
24
|
+
| `stepNumber` | `number` | Auto-injected by `Steps` |
|
|
25
|
+
| `isActive` | `boolean` | Auto-injected by `Steps` |
|
|
26
|
+
| `isCompleted` | `boolean` | Auto-injected by `Steps` |
|
|
27
|
+
| `isLast` | `boolean` | Auto-injected by `Steps`; suppresses connecting line |
|
|
12
28
|
|
|
13
29
|
## Usage Example
|
|
14
30
|
|
|
15
31
|
```typescript
|
|
16
|
-
import { Steps, Step } from "
|
|
32
|
+
import { Steps, Step } from "@/components/steps"
|
|
17
33
|
|
|
18
|
-
function
|
|
19
|
-
const [currentStep, setCurrentStep] = useState(2)
|
|
34
|
+
export function OnboardingFlow() {
|
|
35
|
+
const [currentStep, setCurrentStep] = React.useState(2)
|
|
20
36
|
|
|
21
37
|
return (
|
|
22
38
|
<Steps currentStep={currentStep}>
|
|
23
|
-
<Step
|
|
24
|
-
title="Account
|
|
25
|
-
description="
|
|
26
|
-
/>
|
|
27
|
-
<Step
|
|
28
|
-
title="Profile Information"
|
|
29
|
-
description="Add your personal details"
|
|
39
|
+
<Step
|
|
40
|
+
title="Create Account"
|
|
41
|
+
description="Enter your email and password"
|
|
30
42
|
/>
|
|
31
|
-
<Step
|
|
32
|
-
title="
|
|
33
|
-
description="
|
|
43
|
+
<Step
|
|
44
|
+
title="Verify Email"
|
|
45
|
+
description="Check your inbox for a confirmation link"
|
|
34
46
|
/>
|
|
35
|
-
<Step
|
|
36
|
-
title="
|
|
37
|
-
description="
|
|
47
|
+
<Step
|
|
48
|
+
title="Set Up Profile"
|
|
49
|
+
description="Add your name and preferences"
|
|
38
50
|
/>
|
|
39
51
|
</Steps>
|
|
40
52
|
)
|
|
41
53
|
}
|
|
42
54
|
```
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
> **Note:** Only direct `Step` children are enhanced with state props — other elements pass through unchanged. `stepNumber`, `isActive`, `isCompleted`, and `isLast` are injected automatically; do not pass them manually.
|
|
57
|
+
|
|
58
|
+
**Source:** [`steps.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/steps.tsx)
|
|
@@ -1,20 +1,37 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders the appropriate logo icon for a given MSP tool type
|
|
1
|
+
<!-- source-hash: 4b8b44919fa215934fa2f582b48d9c94 -->
|
|
2
|
+
Renders the appropriate logo icon for a given MSP tool type, mapping each `ToolType` to its corresponding icon component.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
+
### `ToolIcon` (`React.FC<ToolIconProps>`)
|
|
7
|
+
The primary exported component. Looks up the correct icon renderer from `toolIconMap` using the provided `toolType` and delegates rendering with `size` and `className`.
|
|
8
|
+
|
|
6
9
|
### `toolIconMap`
|
|
7
|
-
Internal mapping
|
|
10
|
+
Internal mapping of every `ToolType` value to a render function returning a `React.ReactNode`. All OpenFrame variants share `renderOpenFrameLogo`; `SYSTEM` renders `null`.
|
|
11
|
+
|
|
12
|
+
### `renderOpenFrameLogo`
|
|
13
|
+
Private helper that renders the `OpenFrameLogo` with themed CSS variable colors (`--color-accent-primary`, `--color-text-primary`).
|
|
14
|
+
|
|
15
|
+
## Supported Tool Types
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
17
|
+
| Tool Type | Icon Component |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `FLEET_MDM` | `FleetMdmLogoGreyIcon` |
|
|
20
|
+
| `MESHCENTRAL` | `MeshcentralLogoGreyIcon` |
|
|
21
|
+
| `OPENFRAME` / `OPENFRAME_CHAT` / `OPENFRAME_CLIENT` / `OPENFRAME_RMM` | `OpenFrameLogo` |
|
|
22
|
+
| `AUTHENTIK` | `AuthentikLogoGreyIcon` |
|
|
23
|
+
| `OSQUERY` | `OsqueryLogoGreyIcon` |
|
|
24
|
+
| `SYSTEM` | *(none — renders `null`)* |
|
|
15
25
|
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
## Props
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
interface ToolIconProps {
|
|
30
|
+
toolType: ToolType; // Required — determines which icon to render
|
|
31
|
+
size?: number; // Icon size in px (default: 16)
|
|
32
|
+
className?: string; // Optional CSS class override
|
|
33
|
+
}
|
|
34
|
+
```
|
|
18
35
|
|
|
19
36
|
## Usage Example
|
|
20
37
|
|
|
@@ -22,16 +39,12 @@ A functional React component that looks up the icon renderer from `toolIconMap`
|
|
|
22
39
|
import { ToolIcon } from "./tool-icon";
|
|
23
40
|
import { ToolTypeValues } from "../types/tool.types";
|
|
24
41
|
|
|
25
|
-
// Render a Fleet MDM icon at
|
|
26
|
-
<ToolIcon toolType={ToolTypeValues.FLEET_MDM} />
|
|
42
|
+
// Render a Fleet MDM icon at 24px
|
|
43
|
+
<ToolIcon toolType={ToolTypeValues.FLEET_MDM} size={24} />
|
|
27
44
|
|
|
28
|
-
// Render
|
|
29
|
-
<ToolIcon
|
|
30
|
-
toolType={ToolTypeValues.MESHCENTRAL}
|
|
31
|
-
size={24}
|
|
32
|
-
className="h-6 w-6 text-accent"
|
|
33
|
-
/>
|
|
45
|
+
// Render an OpenFrame icon with a custom class
|
|
46
|
+
<ToolIcon toolType={ToolTypeValues.OPENFRAME} className="h-6 w-auto" />
|
|
34
47
|
|
|
35
|
-
//
|
|
36
|
-
<ToolIcon toolType={ToolTypeValues.SYSTEM} />
|
|
48
|
+
// SYSTEM type renders nothing
|
|
49
|
+
<ToolIcon toolType={ToolTypeValues.SYSTEM} /> // → null
|
|
37
50
|
```
|
|
@@ -1,27 +1,33 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Provides
|
|
1
|
+
<!-- source-hash: 1f118a5b523ee85acc9c21e5793f2dea -->
|
|
2
|
+
Provides unified AND-based filter logic for URL-driven filtering across different content types (vendors, blog, etc.), managing filter state via search parameters.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
|
|
8
|
-
- **`
|
|
7
|
+
|
|
8
|
+
- **`FilterState`** — Shape of the active filter state: `search`, `categories`, `subcategories`, `tags`, `filters`, `pricing`, `page`
|
|
9
|
+
- **`FilterConfig`** — Per-route configuration declaring `basePath` and which filter types are supported
|
|
9
10
|
|
|
10
11
|
### Hook
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
|
|
13
|
+
**`useUnifiedFiltering(config: FilterConfig)`** — Core hook that reads/writes filter state from URL search params. Returns:
|
|
14
|
+
|
|
15
|
+
| Method | Description |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `getCurrentFilterState()` | Parses current URL params into a `FilterState` object |
|
|
18
|
+
| `updateFilters(partial, preserveScroll?)` | Merges new filters into state and pushes updated URL |
|
|
19
|
+
| `addFilter(type, value, preserveScroll?)` | Appends a value to a multi-select filter |
|
|
20
|
+
| `removeFilter(type, value?, preserveScroll?)` | Removes a specific value or clears a filter type |
|
|
21
|
+
| `toggleFilter(type, value, preserveScroll?)` | Adds if absent, removes if present |
|
|
22
|
+
| `clearAllFilters()` | Navigates to `basePath` with no params |
|
|
23
|
+
| `getFilterChips(categories?, tags?)` | Returns display-ready chip objects for active filters |
|
|
24
|
+
| `handleFilterChipRemove(chipId)` | Parses chip ID and dispatches the correct `removeFilter` call |
|
|
25
|
+
| `isPending` | React transition pending state |
|
|
21
26
|
|
|
22
27
|
### Pre-built Configs
|
|
23
|
-
|
|
24
|
-
- **`
|
|
28
|
+
|
|
29
|
+
- **`vendorFilterConfig`** — `/vendors` route; enables categories, subcategories, filters, pricing, and search
|
|
30
|
+
- **`blogFilterConfig`** — `/blog` route; enables categories, tags, and search
|
|
25
31
|
|
|
26
32
|
## Usage Example
|
|
27
33
|
|
|
@@ -29,35 +35,25 @@ Provides a unified, URL-driven AND-based filtering system for Next.js pages, exp
|
|
|
29
35
|
import { useUnifiedFiltering, vendorFilterConfig } from './unified-filter-logic'
|
|
30
36
|
|
|
31
37
|
function VendorFilters() {
|
|
32
|
-
const {
|
|
33
|
-
|
|
34
|
-
toggleFilter,
|
|
35
|
-
clearAllFilters,
|
|
36
|
-
getFilterChips,
|
|
37
|
-
handleFilterChipRemove,
|
|
38
|
-
isPending
|
|
39
|
-
} = useUnifiedFiltering(vendorFilterConfig)
|
|
38
|
+
const { getCurrentFilterState, toggleFilter, clearAllFilters, isPending } =
|
|
39
|
+
useUnifiedFiltering(vendorFilterConfig)
|
|
40
40
|
|
|
41
41
|
const state = getCurrentFilterState()
|
|
42
42
|
|
|
43
43
|
return (
|
|
44
44
|
<div>
|
|
45
45
|
<button onClick={() => toggleFilter('categories', 'security')}>
|
|
46
|
-
|
|
46
|
+
Security
|
|
47
47
|
</button>
|
|
48
48
|
<button onClick={() => toggleFilter('pricing', 'free')}>
|
|
49
|
-
|
|
49
|
+
Free
|
|
50
|
+
</button>
|
|
51
|
+
<button onClick={clearAllFilters} disabled={isPending}>
|
|
52
|
+
Clear All
|
|
50
53
|
</button>
|
|
51
|
-
<button onClick={clearAllFilters}>Clear All</button>
|
|
52
|
-
|
|
53
|
-
{getFilterChips().map(chip => (
|
|
54
|
-
<span key={chip.id} onClick={() => handleFilterChipRemove(chip.id)}>
|
|
55
|
-
{chip.label} ✕
|
|
56
|
-
</span>
|
|
57
|
-
))}
|
|
58
|
-
|
|
59
|
-
{isPending && <span>Loading...</span>}
|
|
60
54
|
</div>
|
|
61
55
|
)
|
|
62
56
|
}
|
|
63
|
-
```
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
> **AND semantics:** All active filters must match simultaneously. Selecting two categories returns only items that belong to both.
|
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: f339cfe147ff6ce0d04d2438b39e4c5e -->
|
|
2
|
+
Reusable horizontal layout component that renders a user's avatar alongside their name and an optional subtitle, following the visual pattern established by `CommentCard` headers.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
- **`UserDisplayProps`** - TypeScript interface defining component props including name, avatar URL, subtitle, size, and styling options
|
|
8
|
-
- **`SquareAvatar`** - Imported avatar component for displaying user profile images
|
|
9
|
-
- **`cn`** - Utility function for conditional class name merging
|
|
6
|
+
### `UserDisplay` (exported function component)
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
Composes a `SquareAvatar` with a text column for user identity display.
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
import { UserDisplay } from './user-display';
|
|
10
|
+
**Props (`UserDisplayProps`):**
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `name` | `string` | — | Display name; also used as avatar fallback initials |
|
|
15
|
+
| `avatarUrl` | `string \| null` | — | Optional avatar image URL; routed through the image proxy |
|
|
16
|
+
| `subtitle` | `string \| null` | — | Secondary text (e.g., relative timestamp) |
|
|
17
|
+
| `size` | `number` | `32` | Avatar size in pixels |
|
|
18
|
+
| `shape` | `'square' \| 'round'` | `'square'` | Corner treatment forwarded to `SquareAvatar` |
|
|
19
|
+
| `compact` | `boolean` | `false` | Switches to smaller typography (`text-h6`) for dense overlays |
|
|
20
|
+
| `className` | `string` | — | Additional CSS classes on the root element |
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
```typescript
|
|
25
|
+
// Standard header row
|
|
26
|
+
<UserDisplay
|
|
21
27
|
name="Jane Smith"
|
|
22
|
-
avatarUrl="/
|
|
28
|
+
avatarUrl="https://example.com/jane.jpg"
|
|
23
29
|
subtitle="2 hours ago"
|
|
24
30
|
/>
|
|
25
31
|
|
|
26
|
-
//
|
|
27
|
-
<UserDisplay
|
|
28
|
-
name="
|
|
29
|
-
avatarUrl=
|
|
30
|
-
subtitle="
|
|
31
|
-
size={
|
|
32
|
-
|
|
32
|
+
// Compact rounded avatar for video-bite overlays
|
|
33
|
+
<UserDisplay
|
|
34
|
+
name="Alex Rivera"
|
|
35
|
+
avatarUrl={user.avatarUrl}
|
|
36
|
+
subtitle="Just now"
|
|
37
|
+
size={24}
|
|
38
|
+
shape="round"
|
|
39
|
+
compact
|
|
33
40
|
/>
|
|
34
41
|
|
|
35
|
-
//
|
|
36
|
-
<UserDisplay
|
|
37
|
-
name="Anonymous User"
|
|
38
|
-
avatarUrl={null}
|
|
39
|
-
subtitle={undefined}
|
|
40
|
-
/>
|
|
42
|
+
// Name-only, no avatar URL (falls back to initials)
|
|
43
|
+
<UserDisplay name="Bob Chen" />
|
|
41
44
|
```
|
|
42
45
|
|
|
43
|
-
|
|
46
|
+
> **Image proxying:** `avatarUrl` is automatically passed through `getProxiedImageUrl`; the original URL is used as a fallback if the proxy returns `null`.
|
|
47
|
+
|
|
48
|
+
**Source:** [`user-display.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/user-display.tsx)
|
|
@@ -1,57 +1,64 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side React component that renders a user profile summary card with avatar, name, email/subtitle, auth provider icons, and optional MSP organization preview
|
|
1
|
+
<!-- source-hash: a3840a17be72a89053bcafc4a27bfd01 -->
|
|
2
|
+
A client-side React component that renders a user profile summary card with avatar, name, email/subtitle, auth provider icons, and optional MSP organization preview — supporting both full and compact display modes.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `UserSummary` (
|
|
7
|
-
The primary
|
|
8
|
-
- **Compact mode** (`compact=true`): Horizontal row with small avatar, name, and subtitle — intended for comment headers or inline contexts.
|
|
9
|
-
- **Full mode** (default): Vertical card with large avatar, name, email, MSP info row, and auth provider badges. Responsive with a separate mobile row for auth/edit controls.
|
|
10
|
-
|
|
11
|
-
### `getAuthProviderIcon(provider)`
|
|
12
|
-
Internal helper that maps provider strings (`"google"`, `"microsoft"`, `"azure"`, `"slack"`) to icon elements.
|
|
13
|
-
|
|
14
|
-
### `formatNumber(n)`
|
|
15
|
-
Internal utility that abbreviates large numbers (e.g., `1200 → 1.2K`, `2000000 → 2M`, `1500000000 → 1.5B`).
|
|
16
|
-
|
|
17
|
-
## Key Props
|
|
6
|
+
### `UserSummary` (default export)
|
|
7
|
+
The primary component accepting the following props:
|
|
18
8
|
|
|
19
9
|
| Prop | Type | Description |
|
|
20
10
|
|---|---|---|
|
|
21
|
-
| `name`
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `authProviders` | `string[]` |
|
|
26
|
-
| `
|
|
11
|
+
| `name` | `string` | User's display name |
|
|
12
|
+
| `email` | `string` | User's email address |
|
|
13
|
+
| `avatarUrl` | `string \| null` | Optional avatar image URL (proxied) |
|
|
14
|
+
| `subtitle` | `string \| null` | Replaces the email line when provided |
|
|
15
|
+
| `authProviders` | `string[]` | Provider names (e.g. `"google"`, `"microsoft"`) |
|
|
16
|
+
| `mspPreview` | `object \| null` | MSP org info: name, logo, seat/technician count, revenue |
|
|
17
|
+
| `compact` | `boolean` | Horizontal mini-row mode for comment headers |
|
|
18
|
+
| `avatarSize` | `number` | Avatar px size in compact mode (default `40`) |
|
|
19
|
+
| `showEditButton` | `boolean` | Renders an Edit Profile placeholder |
|
|
20
|
+
| `editablePhoto` | `boolean` | Swaps static avatar for an upload widget |
|
|
21
|
+
| `onPhotoChange` | `(url) => void` | Callback when photo is updated |
|
|
22
|
+
|
|
23
|
+
### Internal Helpers
|
|
24
|
+
|
|
25
|
+
- **`getAuthProviderIcon(provider)`** — returns an `<Image>` or fallback `<div>` for Google, Microsoft/Azure, and Slack providers.
|
|
26
|
+
- **`formatNumber(n)`** — abbreviates large numbers to `K`, `M`, or `B` suffixes (e.g. `15000 → 15K`).
|
|
27
27
|
|
|
28
28
|
## Usage Example
|
|
29
29
|
|
|
30
30
|
```typescript
|
|
31
31
|
import { UserSummary } from "./user-summary-stub";
|
|
32
32
|
|
|
33
|
-
// Full card
|
|
33
|
+
// Full card
|
|
34
34
|
<UserSummary
|
|
35
|
-
name="Jane
|
|
35
|
+
name="Jane Doe"
|
|
36
36
|
email="jane@example.com"
|
|
37
|
-
avatarUrl="https://cdn.example.com/
|
|
37
|
+
avatarUrl="https://cdn.example.com/avatar.png"
|
|
38
38
|
authProviders={["google"]}
|
|
39
|
-
showEditButton
|
|
40
39
|
mspPreview={{
|
|
41
|
-
name: "Acme
|
|
42
|
-
seatCount:
|
|
43
|
-
technicianCount:
|
|
44
|
-
annualRevenue:
|
|
45
|
-
logoUrl: "https://cdn.example.com/
|
|
40
|
+
name: "Acme IT",
|
|
41
|
+
seatCount: 1200,
|
|
42
|
+
technicianCount: 8,
|
|
43
|
+
annualRevenue: 2500000,
|
|
44
|
+
logoUrl: "https://cdn.example.com/msp-logo.png",
|
|
46
45
|
}}
|
|
46
|
+
showEditButton
|
|
47
47
|
/>
|
|
48
48
|
|
|
49
|
-
// Compact mode
|
|
49
|
+
// Compact mode (e.g. comment header)
|
|
50
50
|
<UserSummary
|
|
51
|
-
name="Jane
|
|
51
|
+
name="Jane Doe"
|
|
52
52
|
email="jane@example.com"
|
|
53
|
+
subtitle="2 hours ago"
|
|
53
54
|
compact
|
|
54
55
|
avatarSize={32}
|
|
55
|
-
subtitle="2 hours ago"
|
|
56
56
|
/>
|
|
57
|
-
```
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Notes
|
|
60
|
+
|
|
61
|
+
- Avatar images are routed through `getProxiedImageUrl` to avoid CORS/hotlinking issues.
|
|
62
|
+
- Falls back to initials (up to 2 characters in compact, 1 character in full mode) when no `avatarUrl` is provided.
|
|
63
|
+
- Auth provider icons and the Edit button are rendered in a responsive layout — stacked on mobile, inline on `md+` screens.
|
|
64
|
+
- Source: [`user-summary-stub.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/user-summary-stub.tsx)
|
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: e35b5566a5ac5d477a67495f201ffd48 -->
|
|
2
|
+
A React client component that renders a clickable vendor button with logo and title, supporting two visual variants (`default` and `compact`) and two navigation modes (external URL or callback).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `VendorDisplayButtonProps`
|
|
7
|
+
|
|
7
8
|
| Prop | Type | Description |
|
|
8
9
|
|------|------|-------------|
|
|
9
10
|
| `vendor` | `VendorWithMedia` | Vendor data including slug, title, and media |
|
|
10
|
-
| `onClick` | `(vendorSlug: string) => void` |
|
|
11
|
-
| `variant` | `'default' \| 'compact'` |
|
|
12
|
-
| `externalUrl` | `string` |
|
|
11
|
+
| `onClick` | `(vendorSlug: string) => void` | Callback invoked with the vendor slug (used when no `externalUrl`) |
|
|
12
|
+
| `variant` | `'default' \| 'compact'` | Visual size variant; defaults to `'default'` |
|
|
13
|
+
| `externalUrl` | `string` | Caller-resolved platform base URL; opens `{externalUrl}/vendor/{slug}` in a new tab |
|
|
13
14
|
|
|
14
15
|
### `VendorDisplayButton`
|
|
15
|
-
Main export. Renders one of two button variants:
|
|
16
|
-
- **`default`** — Card-style button with an 8×8 logo container, used in standard listings
|
|
17
|
-
- **`compact`** — Pill-shaped button with a smaller 5×5 logo, designed for teaser/inline contexts (e.g. `flamingo-teaser`)
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
Exported named component. Renders either:
|
|
18
|
+
- **`compact`** — pill-shaped button (`rounded-full`) with a 20×20px logo, suited for inline teaser contexts.
|
|
19
|
+
- **`default`** — card-style button (`rounded-lg`) with a 24×24px logo in an 8×8 container, suited for list or grid layouts.
|
|
20
|
+
|
|
21
|
+
Both variants fall back to an uppercase initial letter when no logo is available, and route clicks through a shared `handleClick` that prefers `externalUrl` over the `onClick` callback.
|
|
20
22
|
|
|
21
23
|
## Usage Example
|
|
22
24
|
|
|
23
25
|
```typescript
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// Default variant — navigates externally
|
|
26
|
+
// External URL navigation (opens OpenMSP vendor page in new tab)
|
|
27
27
|
<VendorDisplayButton
|
|
28
28
|
vendor={vendorWithMedia}
|
|
29
|
-
externalUrl="https://
|
|
29
|
+
externalUrl="https://openmsp.ai"
|
|
30
30
|
/>
|
|
31
31
|
|
|
32
|
-
// Compact variant
|
|
32
|
+
// Compact variant with local callback
|
|
33
33
|
<VendorDisplayButton
|
|
34
34
|
vendor={vendorWithMedia}
|
|
35
35
|
variant="compact"
|
|
36
36
|
onClick={(slug) => router.push(`/vendors/${slug}`)}
|
|
37
37
|
/>
|
|
38
|
-
```
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> **Note:** `externalUrl` should be a fully-qualified, scheme-normalized URL (e.g. `https://openmsp.ai`) — not a scheme-less string — to avoid the relative `window.open()` bug that existed with the removed `NEXT_PUBLIC_OPENMSP_URL` environment variable.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders a vendor logo
|
|
1
|
+
<!-- source-hash: 0675587ecef66c442db7c41fb0de799a -->
|
|
2
|
+
Renders a vendor logo image with configurable size, background style, and fallback initials display for use across comparison tables, dropdowns, and other UI contexts.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
@@ -7,46 +7,38 @@ Renders a vendor logo icon with configurable size, background style, and fallbac
|
|
|
7
7
|
| Prop | Type | Default | Description |
|
|
8
8
|
|------|------|---------|-------------|
|
|
9
9
|
| `vendor` | `VendorWithMedia & { id?, title, slug?, logo? }` | — | Vendor data including logo URL |
|
|
10
|
-
| `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'l' \| 'xl'` | `'md'` |
|
|
10
|
+
| `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'l' \| 'xl'` | `'md'` | Controls container and image dimensions |
|
|
11
11
|
| `className` | `string` | `''` | Additional CSS classes |
|
|
12
|
-
| `showBackground` | `boolean` | `true` | Toggles
|
|
13
|
-
| `backgroundStyle` | `'dark' \| 'light' \| 'white'` | `'dark'` |
|
|
12
|
+
| `showBackground` | `boolean` | `true` | Toggles rounded background container |
|
|
13
|
+
| `backgroundStyle` | `'dark' \| 'light' \| 'white'` | `'dark'` | Background and border color theme |
|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-
|
|
17
|
-
|------|-----------|------------|
|
|
18
|
-
| `xs` | 24×24 | 16×16 |
|
|
19
|
-
| `sm` | 32×32 | 20×20 |
|
|
20
|
-
| `md` | 40×40 | 32×32 |
|
|
21
|
-
| `lg` | 48×48 | 40×40 |
|
|
22
|
-
| `xl` | 64×64 | 40×40 |
|
|
23
|
-
|
|
24
|
-
### `VendorIcon` (named export)
|
|
25
|
-
The primary export. Resolves the logo via `getVendorLogo`, proxies the URL via `getProxiedImageUrl`, and falls back to a two-character uppercase initials placeholder when no logo is found.
|
|
15
|
+
### `VendorIcon` (exported component)
|
|
16
|
+
Resolves the logo URL via `getVendorLogo`, proxies it through `getProxiedImageUrl`, and renders an `Image` element. Falls back to a two-character uppercase initials placeholder when no logo is available.
|
|
26
17
|
|
|
27
18
|
## Usage Example
|
|
28
19
|
|
|
29
20
|
```typescript
|
|
30
21
|
import { VendorIcon } from './vendor-icon'
|
|
31
22
|
|
|
32
|
-
//
|
|
33
|
-
<VendorIcon vendor={
|
|
23
|
+
// Basic usage with defaults
|
|
24
|
+
<VendorIcon vendor={{ title: 'Acme Corp', logo: 'https://cdn.example.com/acme.png' }} />
|
|
34
25
|
|
|
35
|
-
//
|
|
26
|
+
// Large icon with white background, no border
|
|
36
27
|
<VendorIcon
|
|
37
|
-
vendor={
|
|
38
|
-
size="
|
|
28
|
+
vendor={{ title: 'Acme Corp', logo: 'https://cdn.example.com/acme.png' }}
|
|
29
|
+
size="xl"
|
|
39
30
|
backgroundStyle="white"
|
|
40
|
-
showBackground={true}
|
|
41
31
|
/>
|
|
42
32
|
|
|
43
|
-
//
|
|
33
|
+
// No background — fills parent container directly
|
|
44
34
|
<VendorIcon
|
|
45
|
-
vendor={
|
|
35
|
+
vendor={{ title: 'Unknown Vendor' }}
|
|
46
36
|
size="sm"
|
|
47
37
|
showBackground={false}
|
|
48
38
|
className="rounded-full"
|
|
49
39
|
/>
|
|
50
40
|
```
|
|
51
41
|
|
|
52
|
-
|
|
42
|
+
When `logo` is absent or resolves to falsy, the component renders the first two characters of `vendor.title` (e.g. `"AC"`) as a text placeholder, respecting the active `backgroundStyle` for text color.
|
|
43
|
+
|
|
44
|
+
**Source:** [`vendor-icon.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/vendor-icon.tsx)
|