@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,50 +1,67 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 96a81588a478ba85d3b042d42c4563c6 -->
|
|
2
|
+
Renders a styled, copy-enabled list of file/folder paths, and exports pre-defined OpenFrame installation paths and doctor commands for Windows, macOS, and Linux.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
6
|
+
### `PathsDisplay` (Component)
|
|
7
|
+
The primary export. Renders paths in a bordered, monospace list with optional title, description, leading icon per row, and per-path copy buttons.
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| `paths` | `string[]` | — | Paths to display |
|
|
12
|
+
| `onCopyPath` | `(path: string) => void` | — | Copy button callback |
|
|
13
|
+
| `title` | `string` | — | Heading above the list |
|
|
14
|
+
| `description` | `string` | — | Subheading below title |
|
|
15
|
+
| `showCopyButtons` | `boolean` | `true` | Show/hide copy buttons |
|
|
16
|
+
| `copyIconSize` | `string` | `'w-6 h-6'` | Tailwind size classes for the copy icon |
|
|
17
|
+
| `leadingIcon` | `React.ReactNode` | — | Icon prepended to each row (e.g. platform logo) |
|
|
18
|
+
| `className` | `string` | — | Extra classes on the container |
|
|
19
|
+
|
|
20
|
+
Returns `null` when `paths` is empty.
|
|
21
|
+
|
|
22
|
+
### `OPENFRAME_PATHS`
|
|
23
|
+
Constant record of platform-specific OpenFrame installation paths.
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
OPENFRAME_PATHS.windows // C:\Program Files\OpenFrame, etc.
|
|
27
|
+
OPENFRAME_PATHS.darwin // /Library/LaunchDaemons/..., etc.
|
|
28
|
+
OPENFRAME_PATHS.linux // /opt/openframe/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### `OPENFRAME_DOCTOR_COMMANDS`
|
|
32
|
+
Per-platform shell commands for diagnosing and repairing the OpenFrame agent.
|
|
33
|
+
|
|
34
|
+
### Helper Functions
|
|
35
|
+
- **`getOpenFramePaths(platform)`** — returns a mutable copy of `OPENFRAME_PATHS[platform]`
|
|
36
|
+
- **`getOpenFrameDoctorCommand(platform)`** — returns the doctor command string for a platform
|
|
37
|
+
|
|
38
|
+
### `OpenFramePathsPlatform` (Type)
|
|
39
|
+
`'windows' | 'darwin' | 'linux'`
|
|
13
40
|
|
|
14
41
|
## Usage Example
|
|
15
42
|
|
|
16
43
|
```typescript
|
|
17
44
|
import { PathsDisplay, getOpenFramePaths } from '@flamingo/ui-kit/components/features'
|
|
18
45
|
|
|
19
|
-
// Basic
|
|
46
|
+
// Basic antivirus exclusion list
|
|
20
47
|
<PathsDisplay
|
|
21
48
|
paths={getOpenFramePaths('windows')}
|
|
22
49
|
title="Antivirus Exclusions"
|
|
23
|
-
description="Add these folders to your antivirus
|
|
50
|
+
description="Add these folders to your antivirus exclusion list."
|
|
24
51
|
onCopyPath={(path) => {
|
|
25
52
|
navigator.clipboard.writeText(path)
|
|
26
53
|
toast({ title: 'Copied', description: 'Path copied to clipboard' })
|
|
27
54
|
}}
|
|
28
55
|
/>
|
|
29
56
|
|
|
30
|
-
//
|
|
57
|
+
// With a platform logo as a leading icon
|
|
31
58
|
<PathsDisplay
|
|
32
59
|
paths={getOpenFramePaths('linux')}
|
|
33
|
-
|
|
60
|
+
leadingIcon={<LinuxIcon className="w-5 h-5" />}
|
|
34
61
|
showCopyButtons={false}
|
|
35
62
|
/>
|
|
36
63
|
```
|
|
37
64
|
|
|
38
|
-
##
|
|
39
|
-
|
|
40
|
-
| Prop | Type | Default | Description |
|
|
41
|
-
|------|------|---------|-------------|
|
|
42
|
-
| `paths` | `string[]` | — | Array of paths to display |
|
|
43
|
-
| `onCopyPath` | `(path: string) => void` | — | Callback triggered on copy button click |
|
|
44
|
-
| `title` | `string` | — | Optional heading above the list |
|
|
45
|
-
| `description` | `string` | — | Optional subtext below the title |
|
|
46
|
-
| `showCopyButtons` | `boolean` | `true` | Toggle copy button visibility |
|
|
47
|
-
| `copyIconSize` | `string` | `'w-6 h-6'` | Tailwind size classes for the copy icon |
|
|
48
|
-
| `className` | `string` | — | Additional CSS classes for the container |
|
|
65
|
+
## Source
|
|
49
66
|
|
|
50
|
-
|
|
67
|
+
[`paths-display.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/paths-display.tsx)
|
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side React component that renders a styled badge
|
|
1
|
+
<!-- source-hash: 85b7f197fe9ccebbccd12db007ae658a -->
|
|
2
|
+
A client-side React component that renders a styled badge for various Flamingo platform identifiers, combining a platform-specific icon with optional display label and color-coded styling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **`sizeClasses`** — Size variant map (`xs`, `sm`, `md`) controlling container padding, icon dimensions, and text size
|
|
9
|
-
- **`platformColors`** — Color theme map per platform, defining background, border, and text Tailwind classes
|
|
6
|
+
### `PlatformBadge` (exported)
|
|
7
|
+
Main component accepting a `platform` object, `size`, `showLabel`, and `className` props. Returns `null` if no platform is provided.
|
|
10
8
|
|
|
11
|
-
###
|
|
9
|
+
### `PlatformIcon` (internal)
|
|
10
|
+
Maps platform IDs to their corresponding logo components (`FlamingoLogo`, `OpenmspLogo`, `OpenFrameLogo`, `MiamiCyberGangLogoFaceOnly`) or falls back to a `Globe` icon from Lucide.
|
|
11
|
+
|
|
12
|
+
### `platformColors` (internal)
|
|
13
|
+
Color map keyed by platform name, providing Tailwind-compatible `bg`, `border`, and `text` classes for each platform's brand color.
|
|
14
|
+
|
|
15
|
+
### `sizeClasses` (internal)
|
|
16
|
+
Three-tier size configuration (`xs`, `sm`, `md`) defining container padding, icon dimensions, and text sizing.
|
|
17
|
+
|
|
18
|
+
## Supported Platforms
|
|
12
19
|
|
|
13
20
|
| Platform ID | Color |
|
|
14
21
|
|---|---|
|
|
15
|
-
| `openmsp` | Yellow `#FFC008` |
|
|
16
22
|
| `flamingo` / `flamingo-teaser` | Pink `#FF006E` |
|
|
17
23
|
| `openframe` | Cyan `#00D9D9` |
|
|
18
|
-
| `
|
|
24
|
+
| `openmsp` | Amber `#FFC008` |
|
|
25
|
+
| `tmcg` | Pink `#F357BB` |
|
|
19
26
|
| `company-hub` | Red `#f36666` |
|
|
20
|
-
| `marketing-hub` | Magenta `#F357BB` |
|
|
21
27
|
| `product-hub` | Green `#5EA62E` |
|
|
22
|
-
| `revenue-hub` | Yellow `#FFC008` |
|
|
23
28
|
| `people-hub` | Teal `#5EFAF0` |
|
|
24
|
-
| `universal`
|
|
29
|
+
| `universal` | Gray (fallback) |
|
|
25
30
|
|
|
26
31
|
## Usage Example
|
|
27
32
|
|
|
28
33
|
```typescript
|
|
29
34
|
import { PlatformBadge } from './platform-badge';
|
|
30
35
|
|
|
31
|
-
// Basic usage
|
|
36
|
+
// Basic usage
|
|
32
37
|
<PlatformBadge
|
|
33
|
-
platform={{ id: '1', name: '
|
|
38
|
+
platform={{ id: '1', name: 'openframe', display_name: 'OpenFrame' }}
|
|
34
39
|
size="sm"
|
|
35
40
|
showLabel={true}
|
|
36
41
|
/>
|
|
37
42
|
|
|
38
|
-
// Icon-only,
|
|
43
|
+
// Icon-only, large
|
|
39
44
|
<PlatformBadge
|
|
40
|
-
platform={{ id: '2', name: '
|
|
45
|
+
platform={{ id: '2', name: 'flamingo', display_name: 'Flamingo' }}
|
|
41
46
|
size="md"
|
|
42
47
|
showLabel={false}
|
|
43
48
|
/>
|
|
@@ -48,4 +53,8 @@ import { PlatformBadge } from './platform-badge';
|
|
|
48
53
|
size="xs"
|
|
49
54
|
className="opacity-75"
|
|
50
55
|
/>
|
|
51
|
-
```
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Source
|
|
59
|
+
|
|
60
|
+
[`platform-badge.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/platform-badge.tsx)
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React panel component for
|
|
1
|
+
<!-- source-hash: 07366ff5d32cd4e46e8c63c7d6ad677c -->
|
|
2
|
+
A React panel component for managing permission policies grouped by category, supporting per-policy and bulk approval level configuration with expand/collapse animations and responsive layout.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `useAnimatedHeight` | Custom hook | Smooth height animation for expand/collapse transitions |
|
|
12
|
-
| `approvalLevelOptions` | Constant | Available levels: `ALLOW`, `ASK_USER`, `ASK_TECHNICIAN`, `DENY` |
|
|
13
|
-
| `getApprovalLevelLabel` | Utility fn | Resolves `ApprovalLevel` enum to display string |
|
|
6
|
+
- **`PolicyConfigurationPanel`** — Main exported component. Renders grouped permission categories with collapsible policy lists. Manages expand/collapse state and bulk approval levels internally.
|
|
7
|
+
- **`CategorySection`** — Collapsible category header with an optional bulk approval dropdown and a list of `PolicyRow` items. Uses `useCollapsible` for animated expand/collapse.
|
|
8
|
+
- **`PolicyRow`** — Renders a single permission policy with its tool icon, name, command pattern, and an approval level selector.
|
|
9
|
+
- **`ApprovalLevelDropdown`** — Reusable dropdown for selecting an `ApprovalLevel` (`ALLOW`, `ASK_USER`, `ASK_TECHNICIAN`, `DENY`). Supports an optional "Clear Global Permission" option for category-level bulk selectors.
|
|
10
|
+
- **`approvalLevelLabels`** — Display label map for each `ApprovalLevel` value.
|
|
14
11
|
|
|
15
12
|
## Usage Example
|
|
16
13
|
|
|
@@ -21,38 +18,43 @@ import { PermissionCategory, ApprovalLevel } from '../../types/permissions'
|
|
|
21
18
|
const categories: PermissionCategory[] = [
|
|
22
19
|
{
|
|
23
20
|
id: 'network',
|
|
24
|
-
name: 'Network',
|
|
25
|
-
icon: <NetworkIcon />,
|
|
26
|
-
configurationsCount: 3,
|
|
27
|
-
isExpanded: false,
|
|
28
|
-
globalPermission: 'ALLOW',
|
|
21
|
+
name: 'Network Tools',
|
|
29
22
|
policies: [
|
|
30
23
|
{
|
|
31
24
|
id: 'ping',
|
|
32
|
-
name: 'Ping
|
|
25
|
+
name: 'Ping',
|
|
26
|
+
toolName: 'ping',
|
|
33
27
|
commandPattern: 'ping *',
|
|
34
|
-
toolName: 'network',
|
|
35
28
|
approvalLevel: 'ALLOW',
|
|
36
29
|
},
|
|
37
30
|
],
|
|
38
31
|
},
|
|
39
32
|
]
|
|
40
33
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
function SettingsPage() {
|
|
35
|
+
const handlePolicyChange = (
|
|
36
|
+
categoryId: string,
|
|
37
|
+
policyId: string,
|
|
38
|
+
level: ApprovalLevel
|
|
39
|
+
) => {
|
|
40
|
+
console.log('Policy changed:', { categoryId, policyId, level })
|
|
48
41
|
}
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
|
|
43
|
+
const handleCategoryChange = (categoryId: string, level: ApprovalLevel) => {
|
|
44
|
+
console.log('Bulk category change:', { categoryId, level })
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<PolicyConfigurationPanel
|
|
49
|
+
categories={categories}
|
|
50
|
+
editMode={true}
|
|
51
|
+
onPolicyPermissionChange={handlePolicyChange}
|
|
52
|
+
onCategoryPermissionChange={handleCategoryChange}
|
|
53
|
+
/>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
51
56
|
```
|
|
52
57
|
|
|
53
|
-
|
|
58
|
+
> **Note:** Bulk approval selections reset automatically when `editMode` toggles. Expand/collapse state is preserved across data refreshes since it lives inside the panel.
|
|
54
59
|
|
|
55
|
-
|
|
56
|
-
- In **view mode**, current levels are rendered as static text
|
|
57
|
-
- `useAnimatedHeight` uses `scrollHeight` measurement + CSS transitions for smooth accordion animation
|
|
58
|
-
- Category header clicks and the chevron button both toggle expansion; dropdown clicks use `stopPropagation` to prevent conflicts
|
|
60
|
+
**Source:** [`policy-configuration-panel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/policy-configuration-panel.tsx)
|
|
@@ -1,47 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 64d6da94944d72c433e84a70e186394d -->
|
|
2
|
+
Reusable OAuth provider sign-in button component that handles loading state, click propagation, and provider-specific branding for Microsoft, Google, Slack, and GitHub authentication flows.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ProviderButtonProps`
|
|
7
7
|
| Prop | Type | Description |
|
|
8
8
|
|------|------|-------------|
|
|
9
|
-
| `provider` | `'microsoft' \| 'google' \| 'slack' \| 'github'` |
|
|
10
|
-
| `onClick` | `() => Promise<void> \| void` |
|
|
11
|
-
| `disabled` | `boolean` | Disables
|
|
9
|
+
| `provider` | `'microsoft' \| 'google' \| 'slack' \| 'github'` | Determines icon and display label |
|
|
10
|
+
| `onClick` | `() => Promise<void> \| void` | Auth handler; supports async |
|
|
11
|
+
| `disabled` | `boolean` | Disables interaction (default: `false`) |
|
|
12
12
|
| `loading` | `boolean` | External loading state override (default: `false`) |
|
|
13
13
|
|
|
14
14
|
### `PROVIDER_CONFIG`
|
|
15
|
-
Static map linking each provider key to its display name and icon component.
|
|
15
|
+
Static map linking each provider key to its display name and icon component. Extend this object to add new providers.
|
|
16
16
|
|
|
17
17
|
### `ProviderButton`
|
|
18
|
-
|
|
18
|
+
Client component that manages an internal loading state, falling back to it only when no external `loading` prop is provided. Prevents click bubbling to avoid triggering modal backdrops or parent handlers.
|
|
19
19
|
|
|
20
20
|
## Usage Example
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
|
-
import { ProviderButton } from '
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
import { ProviderButton } from '@/components/auth/provider-button';
|
|
24
|
+
|
|
25
|
+
export function LoginForm() {
|
|
26
|
+
const handleMicrosoftLogin = async () => {
|
|
27
|
+
await signIn('microsoft');
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<ProviderButton
|
|
32
|
+
provider="microsoft"
|
|
33
|
+
onClick={handleMicrosoftLogin}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
27
36
|
}
|
|
37
|
+
```
|
|
28
38
|
|
|
29
|
-
|
|
30
|
-
<ProviderButton provider="microsoft" onClick={handleMicrosoftSignIn} />
|
|
39
|
+
With external loading control:
|
|
31
40
|
|
|
32
|
-
|
|
33
|
-
const [
|
|
41
|
+
```typescript
|
|
42
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
34
43
|
|
|
35
44
|
<ProviderButton
|
|
36
45
|
provider="google"
|
|
37
46
|
onClick={async () => {
|
|
38
|
-
|
|
47
|
+
setIsLoading(true);
|
|
39
48
|
await signIn('google');
|
|
40
|
-
|
|
49
|
+
setIsLoading(false);
|
|
41
50
|
}}
|
|
42
|
-
loading={
|
|
43
|
-
disabled={
|
|
51
|
+
loading={isLoading}
|
|
52
|
+
disabled={isLoading}
|
|
44
53
|
/>
|
|
45
54
|
```
|
|
46
55
|
|
|
47
|
-
> **Note:** When `loading` is
|
|
56
|
+
> **Note:** When `loading` is passed externally, the component skips internal state management to avoid double-toggling.
|
|
@@ -1,29 +1,35 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 1b470f4e084b6cb0c7cd286c460838ca -->
|
|
2
|
+
A client-side React component that renders a list of toggleable push-button options with support for single/multi-select, section grouping, disabled states with tooltips, loading skeletons, and error handling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|--------|------|-------------|
|
|
8
|
-
| `PushButtonSelector` | Component | Main selector rendered as interactive card list |
|
|
9
|
-
| `SelectableOption` | Interface | Shape of each selectable item (id, name, icon, section, etc.) |
|
|
10
|
-
| `SectionDefinition` | Interface | Defines a named group to bucket options under |
|
|
11
|
-
| `PushButtonSelectorSkeleton` | Internal | Animated skeleton shown during `isLoading` |
|
|
12
|
-
| `PushButtonSelectorError` | Internal | Error panel using ODS error tokens |
|
|
6
|
+
### Exported Interfaces
|
|
13
7
|
|
|
14
|
-
|
|
8
|
+
| Interface | Purpose |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `SelectableOption` | Defines an individual selectable item with `id`, `name`, optional `displayName`, `icon`, `color`, `disabled`, `disabledReason`, and `section` fields |
|
|
11
|
+
| `SectionDefinition` | Defines a labeled group for organizing options with `id`, `label`, optional `icon`, and `description` |
|
|
12
|
+
|
|
13
|
+
### Exported Component
|
|
14
|
+
|
|
15
|
+
**`PushButtonSelector`** — Main component accepting `PushButtonSelectorProps`:
|
|
15
16
|
|
|
16
17
|
| Prop | Type | Default | Description |
|
|
17
|
-
|
|
18
|
-
| `options` | `SelectableOption[]` | — |
|
|
19
|
-
| `selectedIds` | `string[]` | — |
|
|
20
|
-
| `onSelectionChange` | `(ids: string[]) => void` | — |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| `options` | `SelectableOption[]` | — | Items to display |
|
|
20
|
+
| `selectedIds` | `string[]` | — | Currently selected IDs |
|
|
21
|
+
| `onSelectionChange` | `(ids: string[]) => void` | — | Callback on toggle |
|
|
21
22
|
| `multiSelect` | `boolean` | `true` | Allow multiple selections |
|
|
22
|
-
| `sections` | `SectionDefinition[]` | — |
|
|
23
|
-
| `selectionSummary` | `boolean` | `false` |
|
|
24
|
-
| `optional` | `boolean` | `false` |
|
|
25
|
-
| `isLoading` | `boolean` | `false` |
|
|
26
|
-
| `error` | `string \| null` | `null` |
|
|
23
|
+
| `sections` | `SectionDefinition[]` | — | Optional grouping definitions |
|
|
24
|
+
| `selectionSummary` | `boolean` | `false` | Show badge summary of selections |
|
|
25
|
+
| `optional` | `boolean` | `false` | Suppress empty-selection warning |
|
|
26
|
+
| `isLoading` | `boolean` | `false` | Show skeleton placeholders |
|
|
27
|
+
| `error` | `string \| null` | `null` | Show error state |
|
|
28
|
+
|
|
29
|
+
### Internal Components
|
|
30
|
+
|
|
31
|
+
- **`PushButtonSelectorSkeleton`** — Animated placeholder cards during loading
|
|
32
|
+
- **`PushButtonSelectorError`** — Error banner using ODS error tokens
|
|
27
33
|
|
|
28
34
|
## Usage Example
|
|
29
35
|
|
|
@@ -31,32 +37,24 @@ A reusable React selector component that renders options as push-button cards wi
|
|
|
31
37
|
import { PushButtonSelector, SelectableOption, SectionDefinition } from './push-button-selector';
|
|
32
38
|
|
|
33
39
|
const platforms: SelectableOption[] = [
|
|
34
|
-
{ id: '
|
|
35
|
-
{ id: '
|
|
36
|
-
{ id: 'uuid-3', name: 'ninja', displayName: 'NinjaRMM', description: 'RMM platform', section: 'rmm' },
|
|
40
|
+
{ id: 'connectwise', name: 'ConnectWise', displayName: 'ConnectWise Manage', description: 'PSA platform' },
|
|
41
|
+
{ id: 'halo', name: 'HaloPSA', disabled: true, disabledReason: 'License required' },
|
|
37
42
|
];
|
|
38
43
|
|
|
39
44
|
const sections: SectionDefinition[] = [
|
|
40
|
-
{ id: 'psa', label: 'PSA
|
|
41
|
-
{ id: 'rmm', label: 'RMM Tools' },
|
|
45
|
+
{ id: 'psa', label: 'PSA Platforms', description: 'Choose your ticketing system' },
|
|
42
46
|
];
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
helpText="Choose the platforms to connect."
|
|
55
|
-
selectionSummary
|
|
56
|
-
multiSelect
|
|
57
|
-
/>
|
|
58
|
-
);
|
|
59
|
-
}
|
|
48
|
+
<PushButtonSelector
|
|
49
|
+
options={platforms}
|
|
50
|
+
selectedIds={selected}
|
|
51
|
+
onSelectionChange={setSelected}
|
|
52
|
+
multiSelect={false}
|
|
53
|
+
title="Select Platform"
|
|
54
|
+
sections={sections}
|
|
55
|
+
selectionSummary
|
|
56
|
+
helpText="Only one PSA platform can be active at a time."
|
|
57
|
+
/>
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
> **Note:**
|
|
60
|
+
> **Note:** Disabled options that are already selected remain deselectable. A `disabledReason` surfaces via tooltip on hover using the shared `Tooltip` primitive.
|
|
@@ -1,58 +1,65 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: c12f9380c042cace30222c9c17600a89 -->
|
|
2
|
+
Manages upload, preview, reordering, and metadata editing of media items (images and videos) associated with a software release.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ReleaseMediaItem` (interface)
|
|
7
|
-
|
|
7
|
+
Describes a single media entry with the following fields:
|
|
8
8
|
|
|
9
9
|
| Field | Type | Description |
|
|
10
|
-
|
|
11
|
-
| `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Category of media |
|
|
12
|
-
| `media_url` | `string` |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Category of the media |
|
|
12
|
+
| `media_url` | `string` | Resolved URL after upload |
|
|
13
13
|
| `title` | `string?` | Optional display title |
|
|
14
14
|
| `description` | `string?` | Optional description |
|
|
15
|
-
| `display_order` | `number?` | Sort position in gallery |
|
|
16
|
-
| `_file` | `File?` | Temporary
|
|
15
|
+
| `display_order` | `number?` | Sort position in the gallery |
|
|
16
|
+
| `_file` | `File?` | Temporary local file before upload |
|
|
17
17
|
| `_uploading` | `boolean?` | Upload in-progress flag |
|
|
18
18
|
|
|
19
19
|
### `ReleaseMediaManager` (component)
|
|
20
|
+
The primary exported component. Renders:
|
|
21
|
+
- **Upload zone** — dashed drop area with a file picker (images and videos, max 50 MB)
|
|
22
|
+
- **Media grid** — 2-column responsive gallery with drag-and-drop reordering
|
|
23
|
+
- **Per-item controls** — inline type selector (`Select`), title input, delete button, and media preview via `Image` (photos) or `Video` (MuxPlayer/HLS)
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
### `ReleaseMediaManagerProps`
|
|
22
26
|
|
|
23
27
|
| Prop | Type | Description |
|
|
24
|
-
|
|
25
|
-
| `media` | `ReleaseMediaItem[]` | Controlled media
|
|
26
|
-
| `onChange` | `(media: ReleaseMediaItem[]) => void` | Called on any
|
|
27
|
-
| `onUpload` | `(file, mediaType) => Promise<string>` |
|
|
28
|
-
| `className` | `string?` |
|
|
29
|
-
|
|
30
|
-
**Internal behaviors:**
|
|
31
|
-
- `handleFileSelect` — detects file MIME type, auto-assigns `media_type`, triggers `onUpload`, rolls back on failure
|
|
32
|
-
- `removeMedia` — removes item by index
|
|
33
|
-
- `updateMedia` — updates a single field on an existing item
|
|
34
|
-
- `handleDragStart` / `handleDragOver` / `handleDrop` — native HTML5 drag-and-drop reordering, updates `display_order` on drop
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `media` | `ReleaseMediaItem[]` | Controlled list of media items |
|
|
30
|
+
| `onChange` | `(media: ReleaseMediaItem[]) => void` | Called on any mutation |
|
|
31
|
+
| `onUpload` | `(file, mediaType) => Promise<string>` | Async upload handler; returns the hosted URL |
|
|
32
|
+
| `className` | `string?` | Additional wrapper class |
|
|
35
33
|
|
|
36
34
|
## Usage Example
|
|
37
35
|
|
|
38
36
|
```typescript
|
|
39
37
|
import { ReleaseMediaManager, ReleaseMediaItem } from './release-media-manager';
|
|
38
|
+
import { useState } from 'react';
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
export function ReleaseForm() {
|
|
41
|
+
const [media, setMedia] = useState<ReleaseMediaItem[]>([]);
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
const handleUpload = async (
|
|
44
|
+
file: File,
|
|
45
|
+
mediaType: 'image' | 'video' | 'screenshot' | 'demo'
|
|
46
|
+
): Promise<string> => {
|
|
47
|
+
const formData = new FormData();
|
|
48
|
+
formData.append('file', file);
|
|
49
|
+
formData.append('type', mediaType);
|
|
50
|
+
const res = await fetch('/api/upload', { method: 'POST', body: formData });
|
|
51
|
+
const { url } = await res.json();
|
|
52
|
+
return url;
|
|
53
|
+
};
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
return (
|
|
56
|
+
<ReleaseMediaManager
|
|
57
|
+
media={media}
|
|
58
|
+
onChange={setMedia}
|
|
59
|
+
onUpload={handleUpload}
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
56
63
|
```
|
|
57
64
|
|
|
58
|
-
> **
|
|
65
|
+
> **Source:** [`release-media-manager.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/release-media-manager.tsx)
|
|
@@ -1,42 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side
|
|
1
|
+
<!-- source-hash: b566b7b57ff314adad0d7bab07a8d548 -->
|
|
2
|
+
A client-side React component that renders a group of selectable section buttons, supporting vertical and wrap layouts with optional icons, badges, numbers, and descriptions.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
8
|
- **`SectionItem`** — Defines a single section entry with `id`, `title`, optional `subtitle`, `description`, `number`, `leftIcon`, `badge`, `screenshots`, and `disabled` flag.
|
|
9
|
-
- **`SectionSelectorProps`** — Configuration for the
|
|
9
|
+
- **`SectionSelectorProps`** — Configuration for the `SectionSelector` component, including layout, width, active state, and callback.
|
|
10
10
|
|
|
11
11
|
### Components
|
|
12
12
|
|
|
13
|
-
- **`SectionButton`** *(internal)* — Renders an individual section button.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
- **`SectionButton`** *(internal)* — Renders an individual section button using the `Button` and `StatusBadge` primitives. Adapts its internal layout based on the `layout` prop (`vertical` vs `wrap`).
|
|
14
|
+
- **`SectionSelector`** *(exported)* — Orchestrates a list of `SectionButton` components. Manages container layout, button width classes, and delegates click handling via `onSectionChange`.
|
|
15
|
+
|
|
16
|
+
## Props
|
|
17
|
+
|
|
18
|
+
| Prop | Type | Default | Description |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| `sections` | `SectionItem[]` | — | List of section items to render |
|
|
21
|
+
| `activeSection` | `string` | — | ID of the currently active section |
|
|
22
|
+
| `onSectionChange` | `(id: string) => void` | — | Callback fired on section click |
|
|
23
|
+
| `layout` | `'vertical' \| 'wrap'` | `'vertical'` | Button arrangement direction |
|
|
24
|
+
| `buttonWidth` | `'auto' \| 'full' \| 'responsive'` | `'auto'` | Width behavior of each button |
|
|
25
|
+
| `showDescription` | `boolean` | `true` | Toggle description text visibility |
|
|
17
26
|
|
|
18
27
|
## Usage Example
|
|
19
28
|
|
|
20
29
|
```typescript
|
|
21
|
-
import SectionSelector,
|
|
30
|
+
import { SectionSelector, SectionItem } from './section-selector'
|
|
22
31
|
|
|
23
32
|
const sections: SectionItem[] = [
|
|
24
33
|
{
|
|
25
34
|
id: 'overview',
|
|
26
35
|
title: 'Overview',
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
description: 'High-level summary',
|
|
37
|
+
number: '01',
|
|
38
|
+
badge: { text: 'New', colorScheme: 'cyan' },
|
|
29
39
|
},
|
|
30
40
|
{
|
|
31
|
-
id: '
|
|
32
|
-
title: '
|
|
33
|
-
|
|
34
|
-
number: '02',
|
|
41
|
+
id: 'details',
|
|
42
|
+
title: 'Details',
|
|
43
|
+
subtitle: 'In-depth configuration',
|
|
35
44
|
disabled: false,
|
|
36
45
|
},
|
|
37
46
|
]
|
|
38
47
|
|
|
39
|
-
export
|
|
48
|
+
export function MyPage() {
|
|
40
49
|
const [active, setActive] = React.useState('overview')
|
|
41
50
|
|
|
42
51
|
return (
|
|
@@ -50,4 +59,6 @@ export default function Page() {
|
|
|
50
59
|
/>
|
|
51
60
|
)
|
|
52
61
|
}
|
|
53
|
-
```
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Source:** [`section-selector.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/section-selector.tsx)
|