@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -1,45 +1,64 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 3ad90c81666a2fe9bcd98d333ec8d564 -->
|
|
2
|
+
A client-side React component that renders a styled card UI for displaying MSP organization details, supporting optional navigation links, action buttons, device counts, and configurable footer stats.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
- **`Organization`** — Data model for an organization entity (id, name, imageUrl, industry, tier, devices, MRR, etc.)
|
|
8
|
-
- **`OrganizationCardProps`** — Full prop interface including optional `href`, `actionButton`, `footerStats`, `customFooter`, and `deviceCount`
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
- **`
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
8
|
+
- **`Organization`** — Data model for an MSP organization, including `id`, `name`, `imageUrl`, `industry`, `tier`, `totalDevices`, `activeDevices`, `mrrUsd`, and an index signature for custom fields.
|
|
9
|
+
- **`OrganizationCardProps`** — Props contract for the card, supporting:
|
|
10
|
+
- `organization` — Required organization data object
|
|
11
|
+
- `fetchedImageUrl` — Optional externally resolved image URL (overrides `organization.imageUrl`)
|
|
12
|
+
- `href` — Makes the card a navigable `Link`
|
|
13
|
+
- `actionButton` — Configurable icon button with `ghost` or `primary` variant (mutually exclusive with `deviceCount`)
|
|
14
|
+
- `footerStats` — Array of `{ icon, value, label }` stat items rendered in the card footer
|
|
15
|
+
- `customFooter` — Fully custom footer `ReactNode` override
|
|
16
|
+
- `deviceCount` — Displays a `Monitor` icon + count badge in the top-right corner
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
### Exported Function
|
|
19
|
+
|
|
20
|
+
- **`OrganizationCard`** — Main card component. Renders a bordered, rounded card with an `EntityImage`, name, subtitle (industry/tier/website), optional description, and footer. Wraps in a `<Link>` when `href` is provided.
|
|
18
21
|
|
|
19
22
|
## Usage Example
|
|
20
23
|
|
|
21
24
|
```typescript
|
|
25
|
+
import { OrganizationCard } from "@openframe-oss-lib/ui"
|
|
26
|
+
import { Trash2 } from "lucide-react"
|
|
27
|
+
|
|
28
|
+
const org = {
|
|
29
|
+
id: "org_123",
|
|
30
|
+
name: "Acme Corp",
|
|
31
|
+
industry: "Healthcare",
|
|
32
|
+
description: "A leading healthcare provider.",
|
|
33
|
+
totalDevices: 42,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Linkable card with device count
|
|
22
37
|
<OrganizationCard
|
|
23
|
-
organization={
|
|
24
|
-
id: "org_123",
|
|
25
|
-
name: "Acme Corp",
|
|
26
|
-
industry: "Manufacturing",
|
|
27
|
-
description: "A leading widget manufacturer.",
|
|
28
|
-
totalDevices: 42,
|
|
29
|
-
}}
|
|
38
|
+
organization={org}
|
|
30
39
|
href="/organizations/org_123"
|
|
31
|
-
deviceCount={
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
deviceCount={org.totalDevices}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
// Card with action button and footer stats
|
|
44
|
+
<OrganizationCard
|
|
45
|
+
organization={org}
|
|
46
|
+
showActionButton
|
|
35
47
|
actionButton={{
|
|
36
|
-
icon: <Trash2
|
|
37
|
-
label: "Remove",
|
|
48
|
+
icon: <Trash2 size={16} />,
|
|
49
|
+
label: "Remove organization",
|
|
38
50
|
variant: "ghost",
|
|
39
|
-
onClick: (org, e) =>
|
|
51
|
+
onClick: (org, e) => console.log("Remove", org.id),
|
|
40
52
|
}}
|
|
41
|
-
|
|
53
|
+
footerStats={[
|
|
54
|
+
{ value: 42, label: "devices" },
|
|
55
|
+
{ value: "$1,200", label: "MRR" },
|
|
56
|
+
]}
|
|
42
57
|
/>
|
|
43
58
|
```
|
|
44
59
|
|
|
45
|
-
|
|
60
|
+
## Notes
|
|
61
|
+
|
|
62
|
+
- `deviceCount` and `actionButton` are mutually exclusive — the action button only renders when `deviceCount` is `undefined`.
|
|
63
|
+
- `customFooter` takes precedence over `footerStats` when both are provided.
|
|
64
|
+
- Source: [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/organization-card.tsx)
|
|
@@ -1,52 +1,66 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Responsive page-level action bar component that renders
|
|
1
|
+
<!-- source-hash: 1ccbc3cff6ac7ff27e1641c46c70275a -->
|
|
2
|
+
Responsive page-level action bar component that renders buttons, split-buttons, icon-only buttons, and dropdown submenus — adapting layout between desktop (inline buttons) and mobile (icon, "…" menu, or fixed bottom bar) based on the selected variant.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Types
|
|
7
|
-
- **`PageActionButton`** — Action descriptor supporting labels, icons, links (`href`), submenus, split-button icon actions, and visibility/rendering flags like `showOnlyMobile` and `iconOnlyOnDesktop`
|
|
8
|
-
- **`PageActionsProps`** — Props for the main `PageActions` component
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
- **`
|
|
12
|
-
- **`IconButtonsVariant`** — Desktop: icon buttons + optional overflow menu. Mobile: single icon or merged `...` dropdown
|
|
13
|
-
- **`PrimaryButtonsVariant`** — Desktop: labeled buttons sorted by variant. Mobile: fixed bottom bar
|
|
14
|
-
- **`MenuPrimaryVariant`** — Desktop: `...` menu + accent-styled primary buttons. Mobile: all actions in a single `...` dropdown
|
|
8
|
+
- **`PageActionButton`** — Configuration object for a single action. Supports labels, icons, variants, href links, tooltips, submenus (`ActionsMenuItem[]`), and split-button `iconAction`. Key flags: `showOnlyMobile`, `iconOnlyOnDesktop`, `mainDisabled`.
|
|
9
|
+
- **`PageActionsProps`** — Props for the main `PageActions` export. Accepts `variant`, `actions`, `menuActions`, `selector`, and `className`.
|
|
15
10
|
|
|
16
|
-
###
|
|
17
|
-
|
|
18
|
-
- **`
|
|
19
|
-
|
|
11
|
+
### Exports
|
|
12
|
+
|
|
13
|
+
- **`PageActions`** — Top-level component. Delegates to one of three layout variants based on the `variant` prop.
|
|
14
|
+
|
|
15
|
+
### Internal Variants
|
|
16
|
+
|
|
17
|
+
| Component | Desktop | Mobile |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `IconButtonsVariant` (default) | Icon buttons + optional overflow menu | Single icon or "…" dropdown |
|
|
20
|
+
| `PrimaryButtonsVariant` | Labeled/accent buttons | Fixed bottom bar |
|
|
21
|
+
| `MenuPrimaryVariant` | "…" menu + accent buttons | "…" dropdown only |
|
|
22
|
+
|
|
23
|
+
### Internal Helpers
|
|
24
|
+
|
|
25
|
+
- **`renderActionButton`** — Wraps `renderRawActionButton` with an optional tooltip.
|
|
26
|
+
- **`renderRawActionButton`** — Resolves the correct button type: `SplitButton`, chevron `ActionsMenuDropdown`, icon-only `Button`, or labeled `Button`.
|
|
27
|
+
- **`actionToMenuItems`** — Converts a `PageActionButton` into `ActionsMenuItem[]` for mobile menus; flattens submenu children with parent label prefixes.
|
|
28
|
+
- **`MobileBottomActions`** — Fixed `bottom-0` bar for the `primary-buttons` variant.
|
|
20
29
|
|
|
21
30
|
## Usage Example
|
|
22
31
|
|
|
23
32
|
```typescript
|
|
24
|
-
import { PageActions,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
33
|
+
import { PageActions, type PageActionButton } from './page-actions'
|
|
34
|
+
import { PlusIcon, TrashIcon } from '../icons'
|
|
35
|
+
|
|
36
|
+
const actions: PageActionButton[] = [
|
|
37
|
+
{
|
|
38
|
+
label: 'New Item',
|
|
39
|
+
icon: <PlusIcon />,
|
|
40
|
+
variant: 'accent',
|
|
41
|
+
onClick: () => console.log('create'),
|
|
42
|
+
tooltip: 'Create a new item',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: 'Delete',
|
|
46
|
+
icon: <TrashIcon />,
|
|
47
|
+
variant: 'outline',
|
|
48
|
+
iconOnlyOnDesktop: true,
|
|
49
|
+
onClick: () => console.log('delete'),
|
|
50
|
+
},
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
// icon-buttons (default): icon buttons on desktop, "..." menu on mobile
|
|
54
|
+
<PageActions actions={actions} />
|
|
55
|
+
|
|
56
|
+
// primary-buttons: full buttons on desktop, fixed bottom bar on mobile
|
|
57
|
+
<PageActions variant="primary-buttons" actions={actions} />
|
|
58
|
+
|
|
59
|
+
// menu-primary: overflow menu + accent buttons on desktop, "..." on mobile
|
|
60
|
+
<PageActions
|
|
61
|
+
variant="menu-primary"
|
|
62
|
+
actions={actions}
|
|
63
|
+
menuActions={[{ items: [{ id: 'export', label: 'Export', onClick: () => {} }] }]}
|
|
64
|
+
selector={<TabSelector />}
|
|
65
|
+
/>
|
|
52
66
|
```
|
|
@@ -1,45 +1,62 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 069900935088b57e5ca42bc2d323e014 -->
|
|
2
|
+
Full-page and compact loading state components that display an animated OpenFrame logo with customizable title and description text.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `PageLoader` | Component | Full viewport loading overlay with centered content |
|
|
9
|
+
| `CompactPageLoader` | Component | Smaller loading indicator for inline containers |
|
|
10
|
+
| `PageLoaderProps` | Interface | Shared props interface for both components |
|
|
11
|
+
|
|
12
|
+
### `PageLoaderProps`
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Default | Description |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `title` | `string` | `'Loading'` | Primary loading message |
|
|
17
|
+
| `description` | `string` | `'Getting your data ready'` | Secondary descriptive text |
|
|
18
|
+
| `className` | `string` | — | Additional CSS classes for the container |
|
|
19
|
+
| `showIcon` | `boolean` | `true` | Toggles the animated OpenFrame logo |
|
|
9
20
|
|
|
10
21
|
## Usage Example
|
|
11
22
|
|
|
12
23
|
```typescript
|
|
13
|
-
import { PageLoader, CompactPageLoader } from '
|
|
24
|
+
import { PageLoader, CompactPageLoader } from '@openframe-oss-lib/ui'
|
|
14
25
|
|
|
15
|
-
// Full
|
|
26
|
+
// Full-screen loader during initial data fetch
|
|
16
27
|
function App() {
|
|
17
|
-
const [isLoading, setIsLoading] = useState(true)
|
|
18
|
-
|
|
19
28
|
if (isLoading) {
|
|
20
29
|
return (
|
|
21
|
-
<PageLoader
|
|
22
|
-
title="
|
|
23
|
-
description="Fetching your data
|
|
24
|
-
className="bg-gray-50"
|
|
30
|
+
<PageLoader
|
|
31
|
+
title="Connecting"
|
|
32
|
+
description="Fetching your workspace data"
|
|
25
33
|
/>
|
|
26
34
|
)
|
|
27
35
|
}
|
|
28
|
-
|
|
29
36
|
return <Dashboard />
|
|
30
37
|
}
|
|
31
38
|
|
|
32
|
-
// Compact loader
|
|
33
|
-
function
|
|
39
|
+
// Compact loader inside a panel or widget
|
|
40
|
+
function DataPanel() {
|
|
34
41
|
return (
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
</div>
|
|
42
|
+
<CompactPageLoader
|
|
43
|
+
title="Refreshing"
|
|
44
|
+
description="Syncing latest records"
|
|
45
|
+
showIcon={true}
|
|
46
|
+
/>
|
|
41
47
|
)
|
|
42
48
|
}
|
|
49
|
+
|
|
50
|
+
// Icon-free loader with custom styling
|
|
51
|
+
<PageLoader
|
|
52
|
+
title="Please wait"
|
|
53
|
+
showIcon={false}
|
|
54
|
+
className="bg-ods-surface"
|
|
55
|
+
/>
|
|
43
56
|
```
|
|
44
57
|
|
|
45
|
-
|
|
58
|
+
**Key differences:** `PageLoader` uses `min-h-screen` to fill the viewport and always shows `description`; `CompactPageLoader` uses `p-12` padding and renders `description` only when provided.
|
|
59
|
+
|
|
60
|
+
## Source
|
|
61
|
+
|
|
62
|
+
[`page-loader.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/page-loader.tsx)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- source-hash: 81c75ceb63c114f45f4ca4dd6b9f21f4 -->
|
|
2
|
+
A password input component that extends the base `Input` with a show/hide toggle button, rendering an eye icon to reveal or conceal the entered value.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`PasswordInput`** — A `forwardRef` component wrapping the base `Input`, managing visibility state and injecting an icon toggle as `endAdornment`.
|
|
7
|
+
- **`PasswordInputProps`** — Extends `InputProps`, omitting `type` and `endAdornment` (both are controlled internally).
|
|
8
|
+
|
|
9
|
+
## Usage Example
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { PasswordInput } from "./password-input"
|
|
13
|
+
|
|
14
|
+
function LoginForm() {
|
|
15
|
+
return (
|
|
16
|
+
<PasswordInput
|
|
17
|
+
placeholder="Enter your password"
|
|
18
|
+
disabled={false}
|
|
19
|
+
className="w-full"
|
|
20
|
+
/>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Behavior Notes
|
|
26
|
+
|
|
27
|
+
- Toggles between `type="password"` and `type="text"` based on internal `visible` state.
|
|
28
|
+
- The toggle button uses `tabIndex={-1}` to keep it out of the tab order and `aria-label` for accessibility (`"Show password"` / `"Hide password"`).
|
|
29
|
+
- Applies `text-ellipsis` via `className` to truncate long values when the field is not focused.
|
|
30
|
+
- The toggle button is automatically disabled when the `disabled` prop is passed to the component.
|
|
@@ -1,44 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A composite phone
|
|
1
|
+
<!-- source-hash: 32581c5a8247511ad64b8ad45ce014af -->
|
|
2
|
+
A composite phone input component combining a country code selector with a phone number text field, featuring debounced validation using `libphonenumber-js`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `PhoneInput` (main export)
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
A controlled input component that renders a country dial-code `Select` alongside a `tel` input. Validates the phone number against the selected country after a 300ms debounce on change, and immediately on blur.
|
|
8
9
|
|
|
9
10
|
**Props (`PhoneInputProps`):**
|
|
10
11
|
|
|
11
12
|
| Prop | Type | Description |
|
|
12
|
-
|
|
13
|
-
| `value` | `string` | Current phone number
|
|
14
|
-
| `countryCode` | `CountryCode` |
|
|
15
|
-
| `onPhoneChange` | `(phone: string) => void` | Called
|
|
16
|
-
| `onCountryChange` | `(country: CountryCode) => void` | Called
|
|
17
|
-
| `onValidationChange` | `(isInvalid: boolean) => void` | Optional validation state
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `value` | `string` | Current phone number string |
|
|
15
|
+
| `countryCode` | `CountryCode` | ISO country code (from `libphonenumber-js`) |
|
|
16
|
+
| `onPhoneChange` | `(phone: string) => void` | Called when phone input changes |
|
|
17
|
+
| `onCountryChange` | `(country: CountryCode) => void` | Called when country selection changes |
|
|
18
|
+
| `onValidationChange` | `(isInvalid: boolean) => void` | Optional callback for validation state |
|
|
18
19
|
| `disabled` | `boolean` | Disables both inputs |
|
|
19
|
-
| `placeholder` | `string` | Input placeholder
|
|
20
|
-
| `onKeyDown` | `React.
|
|
20
|
+
| `placeholder` | `string` | Input placeholder (default: `"Phone Number (optional)"`) |
|
|
21
|
+
| `onKeyDown` | `React.KeyboardEventHandler` | Key event passthrough |
|
|
21
22
|
|
|
22
23
|
### `CountryOption` (internal)
|
|
23
|
-
Renders a single country row inside the dropdown showing flag, dial code, and country name.
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
- Input is restricted to digits, spaces, hyphens, and parentheses
|
|
27
|
-
- Validation triggers via debounce (300ms) after 4+ digits are entered
|
|
28
|
-
- Immediate validation fires on input blur
|
|
29
|
-
- Empty input clears any invalid state without triggering validation
|
|
25
|
+
Renders a single `SelectItem` with the country's flag emoji, dial code, and name with overflow truncation.
|
|
30
26
|
|
|
31
27
|
## Usage Example
|
|
32
28
|
|
|
33
29
|
```typescript
|
|
34
|
-
import { PhoneInput } from '
|
|
30
|
+
import { PhoneInput } from '@/components/ui/phone-input'
|
|
35
31
|
import { useState } from 'react'
|
|
36
32
|
import type { CountryCode } from 'libphonenumber-js'
|
|
37
33
|
|
|
38
34
|
function ContactForm() {
|
|
39
35
|
const [phone, setPhone] = useState('')
|
|
40
36
|
const [country, setCountry] = useState<CountryCode>('US')
|
|
41
|
-
const [
|
|
37
|
+
const [phoneInvalid, setPhoneInvalid] = useState(false)
|
|
42
38
|
|
|
43
39
|
return (
|
|
44
40
|
<PhoneInput
|
|
@@ -46,9 +42,11 @@ function ContactForm() {
|
|
|
46
42
|
countryCode={country}
|
|
47
43
|
onPhoneChange={setPhone}
|
|
48
44
|
onCountryChange={setCountry}
|
|
49
|
-
onValidationChange={
|
|
50
|
-
placeholder="
|
|
45
|
+
onValidationChange={setPhoneInvalid}
|
|
46
|
+
placeholder="Enter phone number"
|
|
51
47
|
/>
|
|
52
48
|
)
|
|
53
49
|
}
|
|
54
|
-
```
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Validation behaviour:** Empty fields are treated as valid. Validation fires after 4+ digits are entered (debounced) or on blur, and highlights the input with `!border-ods-warning` when invalid.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: cd6ef482a4e9898cb3090a6c0ba0b8ae -->
|
|
2
|
+
Provides a React context and hook for controlling where Radix UI overlay components (dropdowns, tooltips, etc.) are portaled, enabling stacking-context-aware positioning without z-index escalation.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`PortalContainerContext`** — React context holding an `HTMLElement | null` value. When `null`, Radix falls back to its default `document.body` portal target. When set to a specific DOM node, overlays portal into that node and naturally inherit its stacking context.
|
|
7
|
+
- **`usePortalContainer()`** — Convenience hook that reads the current portal container from context.
|
|
8
|
+
|
|
9
|
+
## Usage Example
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// Wrap a high-z surface (e.g. a chat drawer) with a provider pointing
|
|
13
|
+
// at a ref inside that same surface, then consume it in overlay components.
|
|
14
|
+
|
|
15
|
+
function ChatDrawer() {
|
|
16
|
+
const [container, setContainer] = React.useState<HTMLElement | null>(null)
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div ref={setContainer} className="drawer">
|
|
20
|
+
<PortalContainerContext.Provider value={container}>
|
|
21
|
+
<DrawerContent />
|
|
22
|
+
</PortalContainerContext.Provider>
|
|
23
|
+
</div>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Inside DrawerContent — pass the container to Radix portal props:
|
|
28
|
+
function DropdownExample() {
|
|
29
|
+
const portalContainer = usePortalContainer()
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<DropdownMenu.Portal container={portalContainer}>
|
|
33
|
+
<DropdownMenu.Content>...</DropdownMenu.Content>
|
|
34
|
+
</DropdownMenu.Portal>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Notes
|
|
40
|
+
|
|
41
|
+
- Radix uses `position: fixed` internally, so portaling into a nested node does **not** re-introduce `overflow: hidden` clipping — content still escapes ancestor scroll containers.
|
|
42
|
+
- Providing `null` (the default) leaves Radix behavior unchanged everywhere a provider is absent.
|
|
43
|
+
- Source: [`portal-container.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/portal-container.tsx)
|
|
@@ -1,50 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Segmented progress bar component
|
|
1
|
+
<!-- source-hash: f0113fcceed7014d22166d2c03afc5d5 -->
|
|
2
|
+
Segmented progress bar component with responsive sizing, threshold-based color states, and support for both normal and inverted value semantics.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `
|
|
6
|
+
### `ProgressBar` (exported component)
|
|
7
|
+
|
|
8
|
+
A responsive, segmented progress bar that dynamically calculates the number of segments based on container width using a `ResizeObserver`. Color state is driven by configurable thresholds and ODS design tokens.
|
|
9
|
+
|
|
10
|
+
**Props:**
|
|
11
|
+
|
|
7
12
|
| Prop | Type | Default | Description |
|
|
8
|
-
|
|
9
|
-
| `progress` | `number` | — |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `progress` | `number` | — | Current value (0–100) |
|
|
10
15
|
| `warningThreshold` | `number` | `75` | Threshold for warning color |
|
|
11
16
|
| `criticalThreshold` | `number` | `90` | Threshold for critical color |
|
|
12
|
-
| `segmentWidth` | `number` | `3.
|
|
13
|
-
| `mobileSegmentWidth` | `number` | `
|
|
14
|
-
| `segmentGap` | `number` | `
|
|
15
|
-
| `height` | `number` | `
|
|
16
|
-
| `mobileHeight` | `number` | `
|
|
17
|
-
| `inverted` | `boolean` | `false` |
|
|
17
|
+
| `segmentWidth` | `number` | `3.43` | Desktop segment width (px) |
|
|
18
|
+
| `mobileSegmentWidth` | `number` | `5` | Mobile segment width (px) |
|
|
19
|
+
| `segmentGap` | `number` | `2` | Gap between segments (px) |
|
|
20
|
+
| `height` | `number` | `24` | Desktop segment height (px) |
|
|
21
|
+
| `mobileHeight` | `number` | `8` | Mobile segment height (px) |
|
|
22
|
+
| `inverted` | `boolean` | `false` | Reverses color semantics (high = green, low = red) |
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
24
|
+
**Color mapping (normal mode):**
|
|
25
|
+
- `≥ criticalThreshold` → `--color-error` (red)
|
|
26
|
+
- `≥ warningThreshold` → `--color-warning` (yellow)
|
|
27
|
+
- Below both → `--color-success` (green)
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
Uses `useMdUp()` hook to switch between desktop and mobile segment dimensions. A `ResizeObserver` dynamically recalculates segment count based on container width, ensuring pixel-perfect fills on any layout.
|
|
29
|
+
**Inverted mode** reverses this — useful for metrics like battery health where higher is better.
|
|
26
30
|
|
|
27
31
|
## Usage Example
|
|
28
32
|
|
|
29
33
|
```typescript
|
|
30
|
-
//
|
|
34
|
+
// Disk usage — high values are bad (normal mode)
|
|
31
35
|
<ProgressBar progress={85} warningThreshold={70} criticalThreshold={90} />
|
|
32
36
|
|
|
33
|
-
//
|
|
37
|
+
// Battery health — high values are good (inverted mode)
|
|
34
38
|
<ProgressBar
|
|
35
|
-
progress={
|
|
36
|
-
warningThreshold={
|
|
39
|
+
progress={45}
|
|
40
|
+
warningThreshold={30}
|
|
37
41
|
criticalThreshold={80}
|
|
38
|
-
inverted
|
|
42
|
+
inverted
|
|
39
43
|
/>
|
|
40
44
|
|
|
41
45
|
// Custom sizing
|
|
42
46
|
<ProgressBar
|
|
43
47
|
progress={60}
|
|
44
|
-
segmentWidth={
|
|
45
|
-
mobileSegmentWidth={
|
|
46
|
-
height={
|
|
47
|
-
mobileHeight={
|
|
48
|
+
segmentWidth={4}
|
|
49
|
+
mobileSegmentWidth={6}
|
|
50
|
+
height={16}
|
|
51
|
+
mobileHeight={6}
|
|
48
52
|
segmentGap={3}
|
|
49
53
|
/>
|
|
50
|
-
```
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Uses `useMdUp` hook to switch between desktop and mobile dimensions
|
|
59
|
+
- Segment count recalculates automatically on container resize via `ResizeObserver`
|
|
60
|
+
- Unfilled segments render with `--color-bg-surface-active`
|
|
61
|
+
- Requires a Client Component context (`'use client'`)
|
|
62
|
+
|
|
63
|
+
**Source:** [`progress-bar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/progress-bar.tsx)
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Renders a collapsible/expandable changelog section for product releases,
|
|
1
|
+
<!-- source-hash: 911c333ce08edfbeee406277154d07b8 -->
|
|
2
|
+
Renders a collapsible/expandable changelog section for product releases, displaying a titled list of `ChangelogEntry` items with optional progressive disclosure and rich markdown support.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Main component accepting these key props:
|
|
6
|
+
**`ReleaseChangelogSection`** — Primary export. Accepts a `title`, array of `ChangelogEntry` items, and several display-mode flags:
|
|
8
7
|
|
|
9
8
|
| Prop | Type | Description |
|
|
10
|
-
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `collapsible` | `boolean` | Toggle section open/closed via title row button |
|
|
11
|
+
| `defaultCollapsed` | `boolean` | Initial collapsed state (default: `true`) |
|
|
12
|
+
| `previewFirst` | `boolean` | Shows first entry in full, fades remaining entries behind a "Show N more" toggle |
|
|
13
|
+
| `isBreaking` | `boolean` | Renders title in error color for breaking changes |
|
|
14
|
+
| `icon` | `ReactNode` | Lucide icon rendered inline before the title |
|
|
15
|
+
| `MarkdownRenderer` | `ComponentType` | Defaults to `RichMarkdownRenderer`; swap for custom implementations |
|
|
16
|
+
| `hideTitle` | `boolean` | Suppresses the title row entirely |
|
|
17
|
+
|
|
18
|
+
> **Note:** When both `collapsible` and `previewFirst` are passed, `collapsible` takes precedence.
|
|
19
|
+
|
|
20
|
+
**`ChangelogEntryList`** *(internal)* — Renders a `<ul>` of bordered entries, each with a bold markdown-rendered `title` and optional `description` body. Typography is pinned via Tailwind `[&_p]:!` overrides to ODS token scales (`text-h3`/`text-h4`) so the `MarkdownRenderer`'s default paragraph styles don't override responsive breakpoints.
|
|
22
21
|
|
|
23
22
|
## Usage Example
|
|
24
23
|
|
|
@@ -26,26 +25,33 @@ Shared list renderer used by both default and preview-first branches. Renders ea
|
|
|
26
25
|
import { ReleaseChangelogSection } from './release-changelog-section';
|
|
27
26
|
import { Sparkles } from 'lucide-react';
|
|
28
27
|
|
|
28
|
+
// Default collapsible section
|
|
29
29
|
<ReleaseChangelogSection
|
|
30
30
|
title="New Features"
|
|
31
31
|
entries={[
|
|
32
|
-
{ title: "AI
|
|
33
|
-
{ title: "
|
|
32
|
+
{ title: "AI-powered ticket routing", description: "Routes tickets to the right queue automatically." },
|
|
33
|
+
{ title: "[Dashboard redesign](https://example.com)", description: "Faster load times and improved layout." },
|
|
34
34
|
]}
|
|
35
|
-
icon={<Sparkles className="
|
|
35
|
+
icon={<Sparkles className="h-4 w-4" />}
|
|
36
|
+
collapsible
|
|
37
|
+
defaultCollapsed={false}
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Preview-first mode (fades entries after the first)
|
|
41
|
+
<ReleaseChangelogSection
|
|
42
|
+
title="Bug Fixes"
|
|
43
|
+
entries={fixes}
|
|
36
44
|
previewFirst
|
|
37
|
-
SimpleMarkdownRenderer={MyMarkdownRenderer}
|
|
38
45
|
/>
|
|
39
46
|
|
|
40
|
-
//
|
|
47
|
+
// Breaking changes section
|
|
41
48
|
<ReleaseChangelogSection
|
|
42
49
|
title="Breaking Changes"
|
|
43
|
-
entries={
|
|
50
|
+
entries={breaking}
|
|
44
51
|
isBreaking
|
|
45
|
-
collapsible
|
|
46
|
-
defaultCollapsed={false}
|
|
47
|
-
SimpleMarkdownRenderer={MyMarkdownRenderer}
|
|
48
52
|
/>
|
|
49
53
|
```
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
## Source
|
|
56
|
+
|
|
57
|
+
[`release-changelog-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/release-changelog-section.tsx)
|