@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482-snapshot.20260725230219
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-FP4H6Y5O.js → chunk-3VMCJK7A.js} +3 -3
- package/dist/{chunk-OWMLWJQY.cjs → chunk-5YFXUXOV.cjs} +2432 -1502
- package/dist/chunk-5YFXUXOV.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-6U7HIZSW.js} +3 -3
- package/dist/{chunk-MMCBQJKE.cjs → chunk-AZZQLEKY.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-AZZQLEKY.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-CG5OX6WF.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-CG5OX6WF.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-DYLIBE6I.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-DYLIBE6I.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-FEQW64Q5.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-FEQW64Q5.cjs.map} +1 -1
- package/dist/{chunk-66BNAFO6.js → chunk-FIRIO2NB.js} +4 -4
- package/dist/{chunk-MGKCS6KS.js → chunk-GWJNTDXR.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-DEHZ5CTC.js → chunk-HAJQWSSU.js} +2 -2
- package/dist/{chunk-JUJY3HQS.cjs → chunk-JBC5DAI5.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-JBC5DAI5.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-JKRX3JHT.js} +2 -2
- package/dist/{chunk-M7O74OWG.cjs → chunk-KDXEKD3K.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-KDXEKD3K.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-LT2PU6SK.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-RDCAJDX7.js} +5 -5
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RFMH6MLM.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RFMH6MLM.cjs.map} +1 -1
- package/dist/{chunk-BBUEY73L.js → chunk-RJ4OJWT5.js} +6269 -5339
- package/dist/chunk-RJ4OJWT5.js.map +1 -0
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-T2S7A5IU.js} +4 -4
- package/dist/{chunk-INDFIVDV.cjs → chunk-UAFJX7YV.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-UAFJX7YV.cjs.map} +1 -1
- package/dist/{chunk-H6DFCF44.cjs → chunk-UO7TF67V.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-UO7TF67V.cjs.map} +1 -1
- package/dist/{chunk-LNKWY74S.cjs → chunk-UTIW7O7R.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-UTIW7O7R.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-WIITTL5I.js} +4 -4
- package/dist/{chunk-ZRANZNEA.js → chunk-Y37XYIWA.js} +2 -2
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-ZN56E4FX.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-ZN56E4FX.cjs.map} +1 -1
- 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 +25 -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 +44 -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-FP4H6Y5O.js.map → chunk-3VMCJK7A.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-6U7HIZSW.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-FIRIO2NB.js.map} +0 -0
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-GWJNTDXR.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-HAJQWSSU.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-JKRX3JHT.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-LT2PU6SK.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-RDCAJDX7.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-T2S7A5IU.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-WIITTL5I.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-Y37XYIWA.js.map} +0 -0
|
@@ -1,55 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 64a37d9b4443b9cc418e861a38bf66ff -->
|
|
2
|
+
Interactive image cropping component built on `react-easy-crop`, supporting drag/resize, zoom, rotation, circular (avatar) mode, and PNG export with automatic downscaling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ImageCropper` | `React.FC` | Main cropper component |
|
|
9
|
+
| `ImageCropperProps` | `interface` | Component prop contract |
|
|
10
|
+
| `ImageCropperResult` | `interface` | Shape of the confirmed crop output |
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|-------|------|-------------|
|
|
11
|
-
| `dataUrl` | `string` | Cropped PNG as a data URI |
|
|
12
|
-
| `blob` | `Blob` | Corresponding PNG Blob |
|
|
13
|
-
|
|
14
|
-
### `ImageCropperProps`
|
|
12
|
+
**Props**
|
|
15
13
|
|
|
16
14
|
| Prop | Type | Default | Description |
|
|
17
|
-
|
|
15
|
+
|---|---|---|---|
|
|
18
16
|
| `src` | `string` | — | Source image URL or data URI |
|
|
19
|
-
| `onComplete` | `(result) => void` | — |
|
|
20
|
-
| `onCancel` | `() => void` | — |
|
|
21
|
-
| `aspectRatio` | `number` | free-form | Width/height ratio |
|
|
22
|
-
| `circular` | `boolean` | `false` | Circular overlay for
|
|
23
|
-
| `maxSizePx` | `number` | `512` |
|
|
17
|
+
| `onComplete` | `(result) => void` | — | Called with PNG data URL + Blob on confirm |
|
|
18
|
+
| `onCancel` | `() => void` | — | Called when user cancels |
|
|
19
|
+
| `aspectRatio` | `number` | free-form | Width / height ratio |
|
|
20
|
+
| `circular` | `boolean` | `false` | Circular overlay for avatar crops |
|
|
21
|
+
| `maxSizePx` | `number` | `512` | Maximum exported image dimension |
|
|
24
22
|
| `className` | `string` | — | Wrapper class override |
|
|
25
23
|
|
|
26
|
-
### `ImageCropper`
|
|
27
|
-
Main component. Internally manages crop position, zoom (1–3×), and rotation (0–360°). On confirm, renders the crop to an off-screen `<canvas>`, scales it to `maxSizePx`, optionally clips to a circle, then resolves a PNG `Blob` + data URL.
|
|
28
|
-
|
|
29
|
-
**Keyboard shortcuts:** `Enter` confirms, `Escape` cancels.
|
|
30
|
-
|
|
31
24
|
## Usage Example
|
|
32
25
|
|
|
33
26
|
```typescript
|
|
34
27
|
import { ImageCropper, ImageCropperResult } from "@/components/image-cropper"
|
|
35
28
|
|
|
36
|
-
function
|
|
37
|
-
const
|
|
38
|
-
// Upload the
|
|
39
|
-
console.log("
|
|
40
|
-
|
|
29
|
+
function AvatarUploader({ imageUrl }: { imageUrl: string }) {
|
|
30
|
+
const handleComplete = (result: ImageCropperResult) => {
|
|
31
|
+
// Upload the Blob or use the data URL directly
|
|
32
|
+
console.log(result.dataUrl) // "data:image/png;base64,..."
|
|
33
|
+
uploadToServer(result.blob)
|
|
41
34
|
}
|
|
42
35
|
|
|
43
36
|
return (
|
|
44
37
|
<ImageCropper
|
|
45
38
|
src={imageUrl}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
className="max-w-lg"
|
|
39
|
+
onComplete={handleComplete}
|
|
40
|
+
onCancel={() => console.log("cancelled")}
|
|
41
|
+
circular // avatar mode — circular clip mask
|
|
42
|
+
aspectRatio={1} // 1:1 square
|
|
43
|
+
maxSizePx={256} // export capped at 256×256 px
|
|
52
44
|
/>
|
|
53
45
|
)
|
|
54
46
|
}
|
|
55
|
-
```
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Keyboard shortcuts:** `Enter` confirms the crop, `Escape` triggers `onCancel`.
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- Exported images are always **PNG**; the canvas is scaled so neither dimension exceeds `maxSizePx`.
|
|
54
|
+
- The `crossOrigin="anonymous"` attribute on the internal image loader prevents canvas tainting for cross-origin sources.
|
|
55
|
+
- Depends on `react-easy-crop`, `lucide-react`, and shadcn/ui `Button` / `Slider` primitives.
|
|
56
|
+
- Source: [`components/image-cropper.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/image-cropper.tsx)
|
package/src/components/.index.md
CHANGED
|
@@ -1,42 +1,38 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Central barrel export file for the
|
|
1
|
+
<!-- source-hash: bd76de4698013e75e9f84d74a5ff3420 -->
|
|
2
|
+
Central barrel export file for the `openframe-oss-lib` component library, aggregating all client-side React components, utilities, and shared modules under a single `"use client"` boundary.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
|
9
|
-
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
| **Utilities** | `unified-filter-logic`, `unified-pagination`, `persistent-filter-controls` |
|
|
14
|
-
| **Auth & Loading** | `auth-stub`, `loading` |
|
|
15
|
-
| **Date/Time** | `date-time-picker` |
|
|
16
|
-
|
|
17
|
-
Notable named export: `DetailPageSkeleton` and its `DetailPageSkeletonProps` type are explicitly re-exported from `./shared/detail-page-skeleton`.
|
|
6
|
+
| Export Group | Source Path | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| Core UI modules | `./chat`, `./docs`, `./embeds`, `./features`, `./icons`, `./navigation`, `./platform`, `./ui` | Top-level feature category barrels |
|
|
9
|
+
| Individual components | `./announcement-bar`, `./footer`, `./pagination`, `./pricing-display`, etc. | Standalone presentational components |
|
|
10
|
+
| Shared modules | `./shared/onboarding`, `./shared/doc-search`, `./shared/dev-section`, `./shared/roadmap`, `./shared/legal-document` | Cross-host reusable feature slices |
|
|
11
|
+
| Named exports | `DetailPageSkeleton`, `ArticleAuthorByline`, `MediaGalleryStrip`, `AuthorDetailView`, `EntityIcon` | Explicit exports for disambiguation or prop-type co-location |
|
|
12
|
+
| `MediaItem` type | `../utils/media-carousel-utils-stub` | Canonical carousel item shape (overrides features barrel collision) |
|
|
18
13
|
|
|
19
14
|
## Usage Example
|
|
20
15
|
|
|
21
16
|
```typescript
|
|
22
|
-
//
|
|
23
|
-
import { VendorIcon } from '@flamingo/components/vendor-icon'
|
|
24
|
-
import { Pagination } from '@flamingo/components/pagination'
|
|
25
|
-
|
|
26
|
-
// Import everything from the single barrel:
|
|
17
|
+
// Import any component directly from the package root
|
|
27
18
|
import {
|
|
28
|
-
|
|
19
|
+
Footer,
|
|
29
20
|
Pagination,
|
|
21
|
+
EntityIcon,
|
|
22
|
+
type EntityIconValue,
|
|
23
|
+
ArticleAuthorByline,
|
|
24
|
+
type ArticleAuthorBylineProps,
|
|
25
|
+
MediaGalleryStrip,
|
|
26
|
+
type MediaGalleryStripProps,
|
|
30
27
|
DetailPageSkeleton,
|
|
31
|
-
|
|
32
|
-
MspDisplay,
|
|
33
|
-
MediaCarousel,
|
|
34
|
-
UnifiedFilterLogic,
|
|
35
|
-
} from '@flamingo/components'
|
|
28
|
+
} from '@openframe-oss-lib/components'
|
|
36
29
|
```
|
|
37
30
|
|
|
38
|
-
## Notes
|
|
31
|
+
## Important Notes
|
|
32
|
+
|
|
33
|
+
- **Client boundary**: The entire barrel is marked `"use client"` — avoid importing into React Server Components.
|
|
34
|
+
- **Server-safe JSON-LD**: For FAQ structured data in RSC contexts, import from the dedicated subpath `./components/faq/json-ld` instead of this barrel.
|
|
35
|
+
- **`MediaItem` disambiguation**: This barrel exports `MediaItem` as the carousel item shape. The gallery-manager variant remains accessible via `./components/features`.
|
|
36
|
+
- **`faq` subpath**: Also exposed as a standalone package.json subpath export, but it is equally client-only — not server-safe.
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
- `PageContainer` is intentionally not re-exported here; it is already available via `./ui/page-container`.
|
|
42
|
-
- Duplicate `chat` export exists in the file; only one is resolved at runtime.
|
|
38
|
+
**Source:** [`components/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/index.ts)
|
|
@@ -1,56 +1,60 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 40c14f07658d894c96ba17a8967af646 -->
|
|
2
|
+
Scrollable log feed component that renders a list of `LogEntry` items with severity indicators, timestamps, and optional tool icons — with loading and empty states.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
|
-
|
|
8
|
-
| `LogsList` | `React.ForwardRefExoticComponent` | Main
|
|
9
|
-
| `LogCard` | `React.FC` (internal) | Individual log row with
|
|
10
|
-
| `formatTimestamp` | `function` (internal) |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `LogsList` | `React.ForwardRefExoticComponent` | Main scrollable log list container |
|
|
9
|
+
| `LogCard` | `React.FC` (internal) | Individual log entry row with click/keyboard support |
|
|
10
|
+
| `formatTimestamp` | `function` (internal) | UTC-safe timestamp formatter preventing React hydration mismatch (#418) |
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**`LogsList` Props** (`LogsListProps`):
|
|
13
13
|
|
|
14
14
|
| Prop | Default | Description |
|
|
15
|
-
|
|
16
|
-
| `logs` | — | Array of `LogEntry` items to
|
|
17
|
-
| `maxHeight` | `'400px'` | Container max height; use `'100%'` for full-height
|
|
18
|
-
| `showConnector` | `true` |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `logs` | — | Array of `LogEntry` items to render |
|
|
17
|
+
| `maxHeight` | `'400px'` | Container max height; use `'100%'` for full-height mode |
|
|
18
|
+
| `showConnector` | `true` | Draws a vertical line connecting sequential log entries |
|
|
19
19
|
| `onLogClick` | — | Callback fired with the clicked `LogEntry` |
|
|
20
|
-
| `loading` | `false` | Shows a loading
|
|
20
|
+
| `loading` | `false` | Shows a loading placeholder when `true` |
|
|
21
21
|
| `emptyMessage` | `'No logs to display'` | Message shown when `logs` is empty |
|
|
22
|
-
| `className` | — | Additional
|
|
22
|
+
| `className` | — | Additional CSS classes for the outer container |
|
|
23
23
|
|
|
24
24
|
## Usage Example
|
|
25
25
|
|
|
26
26
|
```typescript
|
|
27
|
-
import { LogsList } from '
|
|
28
|
-
import { LogEntry } from '
|
|
27
|
+
import { LogsList } from '@openframe-oss-lib/components'
|
|
28
|
+
import type { LogEntry } from '@openframe-oss-lib/types'
|
|
29
29
|
|
|
30
30
|
const logs: LogEntry[] = [
|
|
31
31
|
{
|
|
32
32
|
id: '1',
|
|
33
|
-
title: '
|
|
33
|
+
title: 'Backup job completed',
|
|
34
34
|
severity: 'info',
|
|
35
35
|
timestamp: new Date(),
|
|
36
|
-
toolType: '
|
|
36
|
+
toolType: 'backup',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
id: '2',
|
|
40
|
-
title: '
|
|
40
|
+
title: 'Disk usage above 90%',
|
|
41
41
|
severity: 'warning',
|
|
42
|
-
timestamp: '
|
|
42
|
+
timestamp: '2025-01-15T08:30:00Z',
|
|
43
43
|
},
|
|
44
44
|
]
|
|
45
45
|
|
|
46
|
-
export default function
|
|
46
|
+
export default function AuditPanel() {
|
|
47
47
|
return (
|
|
48
48
|
<LogsList
|
|
49
49
|
logs={logs}
|
|
50
|
-
maxHeight="
|
|
51
|
-
showConnector
|
|
50
|
+
maxHeight="600px"
|
|
51
|
+
showConnector
|
|
52
52
|
onLogClick={(log) => console.log('Selected:', log.id)}
|
|
53
53
|
/>
|
|
54
54
|
)
|
|
55
55
|
}
|
|
56
|
-
```
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Hydration note:** `formatTimestamp` uses UTC getters (`getUTCFullYear`, etc.) to ensure timestamps are identical between SSR and client rendering, preventing React hydration error #418.
|
|
59
|
+
|
|
60
|
+
**Source:** [`logs-list.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/logs-list.tsx)
|
|
@@ -1,48 +1,69 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 8512b2544239a58f8faa59a6fd3794a7 -->
|
|
2
|
+
Accessible, memoized React carousel component for displaying mixed media (images, videos, YouTube embeds) with dot pagination, keyboard navigation, touch swipe support, and broken-image fallback handling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `MediaCarousel` (default export)
|
|
7
|
-
A
|
|
7
|
+
A `memo`-wrapped component implementing the canonical slide viewer used across OpenFrame homepage categories, vendor screenshots, profiles, and Reddit embeds.
|
|
8
|
+
|
|
9
|
+
**Props (`MediaCarouselProps`):**
|
|
8
10
|
|
|
9
11
|
| Prop | Type | Default | Description |
|
|
10
|
-
|
|
11
|
-
| `media` | `MediaItem[]` | — | Array of
|
|
12
|
-
| `className` | `string` | — | Additional CSS classes |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `media` | `MediaItem[]` | — | Array of slide descriptors |
|
|
13
14
|
| `aspectRatio` | `'16/9' \| '4/3' \| '3/2' \| '1/1'` | `'16/9'` | Container aspect ratio |
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
15
|
+
| `showArrows` | `boolean` | `true` | Hover-revealed prev/next arrows |
|
|
16
|
+
| `objectFit` | `'contain' \| 'cover'` | `'contain'` | Image fit within container |
|
|
17
|
+
| `posterPriority` | `boolean` | `false` | Eager-loads first slide (LCP optimization) |
|
|
18
|
+
| `transformImageSrc` | `(url: string) => string` | — | URL rewrite hook (e.g. proxy `http://` sources) |
|
|
19
|
+
| `reserveDotRow` | `boolean` | `false` | Always reserves dot-row height to prevent layout shift on media set swaps |
|
|
20
|
+
|
|
21
|
+
### Internal Helpers
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
| Function | Description |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `renderVideo` | Routes `video`/`youtube` items through the `<Video>` SSoT component |
|
|
26
|
+
| `renderImage` | Renders images with skeleton loading, opacity fade-in, and broken-URL fallback UI |
|
|
27
|
+
| `renderImageUnavailable` | Fallback UI with `ImageOffIcon` and original URL link when image 404s |
|
|
28
|
+
| `renderMainMedia` | Dispatches to `renderVideo` or `renderImage` based on `item.type` |
|
|
29
|
+
| `getAspectRatioClass` | Maps `aspectRatio` prop to Tailwind aspect-ratio class |
|
|
23
30
|
|
|
24
31
|
## Usage Example
|
|
25
32
|
|
|
26
33
|
```typescript
|
|
27
34
|
import { MediaCarousel } from './media-carousel';
|
|
28
|
-
import { MediaItem } from '../utils/media-carousel-utils-stub';
|
|
35
|
+
import type { MediaItem } from '../utils/media-carousel-utils-stub';
|
|
29
36
|
|
|
30
|
-
const
|
|
31
|
-
{ type: 'image', src: 'https://example.com/
|
|
32
|
-
{ type: 'youtube', src: 'https://youtube.com/watch?v=dQw4w9WgXcQ', alt: 'Demo' },
|
|
33
|
-
{ type: 'video', src: 'https://
|
|
37
|
+
const slides: MediaItem[] = [
|
|
38
|
+
{ type: 'image', src: 'https://cdn.example.com/screenshot.png', alt: 'Dashboard' },
|
|
39
|
+
{ type: 'youtube', src: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', alt: 'Demo' },
|
|
40
|
+
{ type: 'video', src: 'https://stream.mux.com/video.m3u8', poster: 'https://cdn.example.com/poster.jpg' },
|
|
34
41
|
];
|
|
35
42
|
|
|
43
|
+
// Vendor detail page — prioritize first image for LCP, proxy mixed content
|
|
36
44
|
<MediaCarousel
|
|
37
|
-
media={
|
|
45
|
+
media={slides}
|
|
38
46
|
aspectRatio="16/9"
|
|
39
|
-
showThumbnails={true}
|
|
40
47
|
objectFit="contain"
|
|
48
|
+
posterPriority
|
|
49
|
+
transformImageSrc={(url) => url.replace('http://', 'https://proxy.example.com/')}
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
// Categories showcase — reserve dot row so 1-vs-N-slide swap never shifts layout
|
|
53
|
+
<MediaCarousel
|
|
54
|
+
media={categorySlides}
|
|
55
|
+
reserveDotRow
|
|
56
|
+
showArrows={false}
|
|
41
57
|
/>
|
|
42
58
|
```
|
|
43
59
|
|
|
44
|
-
## Interaction
|
|
45
|
-
|
|
46
|
-
- **Touch
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
60
|
+
## Interaction Model
|
|
61
|
+
|
|
62
|
+
- **Touch:** Swipe threshold of 50px triggers `nextSlide`/`prevSlide`; edge-case `clientX === 0` handled via explicit `null` checks (not truthiness).
|
|
63
|
+
- **Keyboard:** `ArrowLeft`/`ArrowRight` when the carousel `<div>` has focus; disabled for single-slide sets.
|
|
64
|
+
- **Index safety:** `currentIndex` is clamped via `useEffect` whenever `media.length` shrinks at runtime.
|
|
65
|
+
- **Image loading:** Each image is keyed by URL (`loadedImageSrc`), preventing a late `onLoad` from a previous slide from revealing the current image prematurely.
|
|
66
|
+
|
|
67
|
+
## Source
|
|
68
|
+
|
|
69
|
+
[`media-carousel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/media-carousel.tsx)
|
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 386c4083aa6f39bec5016b7561a578c9 -->
|
|
2
|
+
Renders a styled metric display pairing a prominent primary value with a smaller secondary label, suitable for dashboards and stat blocks.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
**`MetricValue`** — Named export functional component
|
|
7
|
+
|
|
8
|
+
| Prop | Type | Required | Description |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| `value` | `string \| number` | ✅ | The primary metric to display (e.g., `30`, `"99%"`) |
|
|
11
|
+
| `label` | `string` | ✅ | Descriptive label rendered below/beside the value (e.g., `"Generation Time"`) |
|
|
12
|
+
| `className` | `string` | ❌ | Optional class overrides via `cn()` utility |
|
|
11
13
|
|
|
12
14
|
## Usage Example
|
|
13
15
|
|
|
14
16
|
```typescript
|
|
15
|
-
import { MetricValue } from '
|
|
17
|
+
import { MetricValue } from '@/components/metric-value';
|
|
16
18
|
|
|
17
|
-
//
|
|
18
|
-
<MetricValue
|
|
19
|
-
value="30s"
|
|
20
|
-
label="Generation Time"
|
|
21
|
-
/>
|
|
19
|
+
// Basic numeric stat
|
|
20
|
+
<MetricValue value={30} label="s Generation Time" />
|
|
22
21
|
|
|
23
|
-
//
|
|
24
|
-
<MetricValue
|
|
25
|
-
value=
|
|
26
|
-
label="
|
|
27
|
-
className="
|
|
22
|
+
// String percentage with custom class
|
|
23
|
+
<MetricValue
|
|
24
|
+
value="99.9%"
|
|
25
|
+
label="Uptime"
|
|
26
|
+
className="mt-4"
|
|
28
27
|
/>
|
|
29
28
|
|
|
30
|
-
//
|
|
31
|
-
<
|
|
32
|
-
value="
|
|
33
|
-
label="
|
|
34
|
-
|
|
29
|
+
// Inside a stat grid
|
|
30
|
+
<div className="flex gap-8">
|
|
31
|
+
<MetricValue value={142} label="Tickets Resolved" />
|
|
32
|
+
<MetricValue value="4.8" label="Avg CSAT Score" />
|
|
33
|
+
</div>
|
|
35
34
|
```
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
- Uses `text-h4` for the value and `text-h6 text-ods-text-secondary` for the label, following the ODS (OpenFrame Design System) typography scale.
|
|
39
|
+
- `whitespace-nowrap` prevents wrapping on tight layouts.
|
|
40
|
+
- Composes with [`cn()`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/cn.ts) for safe Tailwind class merging.
|
|
@@ -1,36 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: a699424bd0f8d631d337d18d2000076d -->
|
|
2
|
+
Renders an MSP (Managed Service Provider) identity display combining a square avatar logo with the MSP's name in a flex layout.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
### `MSPDisplay`
|
|
7
|
+
A client-side React component that displays an MSP's branding with a fallback-aware avatar and truncated name label.
|
|
8
|
+
|
|
9
|
+
**Props (`MSPDisplayProps`):**
|
|
10
|
+
|
|
11
|
+
| Prop | Type | Default | Description |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `name` | `string` | — | MSP display name (used as avatar fallback and `alt` text) |
|
|
14
|
+
| `logoUrl` | `string \| null` | `undefined` | Optional logo URL, run through the image proxy |
|
|
15
|
+
| `size` | `number` | `40` | Avatar dimensions in pixels (square) |
|
|
16
|
+
| `className` | `string` | — | Additional CSS classes for the wrapper |
|
|
17
|
+
|
|
18
|
+
**Internal dependencies:**
|
|
19
|
+
- [`SquareAvatar`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/ui/square-avatar.tsx) — renders the square avatar with fallback initials
|
|
20
|
+
- [`getProxiedImageUrl`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/image-proxy.ts) — proxies external logo URLs to avoid CORS/mixed-content issues
|
|
21
|
+
- [`cn`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/cn.ts) — utility for conditional class merging
|
|
12
22
|
|
|
13
23
|
## Usage Example
|
|
14
24
|
|
|
15
25
|
```typescript
|
|
16
|
-
import { MSPDisplay } from '
|
|
17
|
-
|
|
18
|
-
// Basic MSP display
|
|
19
|
-
<MSPDisplay name="TechCorp Solutions" />
|
|
26
|
+
import { MSPDisplay } from '@flamingo-stack/openframe-oss-lib';
|
|
20
27
|
|
|
21
|
-
// With logo
|
|
22
|
-
<MSPDisplay
|
|
23
|
-
name="Acme IT
|
|
24
|
-
logoUrl="https://example.com/logo.png"
|
|
25
|
-
size={
|
|
28
|
+
// With a logo
|
|
29
|
+
<MSPDisplay
|
|
30
|
+
name="Acme IT Solutions"
|
|
31
|
+
logoUrl="https://acme.example.com/logo.png"
|
|
32
|
+
size={48}
|
|
26
33
|
/>
|
|
27
34
|
|
|
28
|
-
//
|
|
29
|
-
<MSPDisplay
|
|
30
|
-
name="
|
|
31
|
-
|
|
32
|
-
className="bg-gray-100 p-3 rounded-lg"
|
|
35
|
+
// Name-only fallback (renders initials avatar)
|
|
36
|
+
<MSPDisplay
|
|
37
|
+
name="Acme IT Solutions"
|
|
38
|
+
className="border-b pb-4"
|
|
33
39
|
/>
|
|
34
40
|
```
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
> **Note:** If `logoUrl` is provided but `getProxiedImageUrl` returns `null` or an empty string, the component falls back to the original `logoUrl` directly. If no URL is available at all, `SquareAvatar` renders initials derived from `name`.
|
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 3a6d55ae1b91e13e9941c8273186b79b -->
|
|
2
|
+
A client-side React section component that renders a responsive grid of feature cards highlighting OpenFrame's open-source value proposition.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **`features` array** — Static data defining the four pillars: *Built on FOSS*, *Own Your Stack*, *Modular by Design*, and *Community-Powered*
|
|
9
|
-
|
|
10
|
-
## Props
|
|
11
|
-
|
|
12
|
-
### `FeatureCardProps`
|
|
6
|
+
### `FeatureCard` (internal)
|
|
7
|
+
A styled card component displaying an icon, title, and description. Accepts `FeatureCardProps`:
|
|
13
8
|
|
|
14
9
|
| Prop | Type | Description |
|
|
15
10
|
|------|------|-------------|
|
|
16
|
-
| `icon` | `React.ReactNode` | Lucide icon element
|
|
17
|
-
| `title` | `string` | Feature
|
|
18
|
-
| `description` | `string` |
|
|
11
|
+
| `icon` | `React.ReactNode` | Lucide icon element |
|
|
12
|
+
| `title` | `string` | Feature heading |
|
|
13
|
+
| `description` | `string` | Feature body text |
|
|
14
|
+
|
|
15
|
+
### `OpenSourceFeatures` (default export)
|
|
16
|
+
The main section component. Renders four hardcoded feature cards in a responsive 1→2→4 column grid:
|
|
17
|
+
|
|
18
|
+
- **Built on FOSS** — `Terminal` icon
|
|
19
|
+
- **Own Your Stack** — `DollarSign` icon
|
|
20
|
+
- **Modular by Design** — `Network` icon
|
|
21
|
+
- **Community-Powered** — `Users` icon
|
|
19
22
|
|
|
20
23
|
## Usage Example
|
|
21
24
|
|
|
22
25
|
```typescript
|
|
23
|
-
import OpenSourceFeatures from '
|
|
26
|
+
import OpenSourceFeatures from './open-source-features';
|
|
24
27
|
|
|
25
|
-
// Drop into any page layout — no props required
|
|
26
28
|
export default function LandingPage() {
|
|
27
29
|
return (
|
|
28
30
|
<main>
|
|
@@ -32,17 +34,12 @@ export default function LandingPage() {
|
|
|
32
34
|
}
|
|
33
35
|
```
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
## Notes
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
icon={<Shield className="w-6 h-6" />}
|
|
43
|
-
title="Secure by Default"
|
|
44
|
-
description="Auditable code with no vendor lock-in."
|
|
45
|
-
/>
|
|
46
|
-
```
|
|
39
|
+
- Marked `"use client"` — requires a Next.js App Router client boundary.
|
|
40
|
+
- Icons sourced from `lucide-react` (`Terminal`, `DollarSign`, `Network`, `Users`).
|
|
41
|
+
- Section heading style imported from `./layout/page-heading` via `SECTION_HEADING_CLASS`.
|
|
42
|
+
- Hover states and transitions handled via Tailwind utility classes (`hover:bg-ods-bg-hover`, `transition-colors`).
|
|
43
|
+
- Feature list is statically defined inside the component; to make it data-driven, extract the `features` array to a separate constants file.
|
|
47
44
|
|
|
48
|
-
|
|
45
|
+
**Source:** [`open-source-features.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/open-source-features.tsx)
|