@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,56 +1,73 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 292b6d5f3843f309d54f8359c29fda08 -->
|
|
2
|
+
A collection of composable card UI components built on `React.forwardRef`, providing a structured layout system for displaying grouped content with optional header, title, description, content, and footer sections. Also exports a specialized `CardHorizontal` component for icon-labeled feature rows.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Card` | Root container with rounded border, card background, and shadow |
|
|
9
|
+
| `CardHeader` | Flex column wrapper with vertical spacing and padding |
|
|
10
|
+
| `CardTitle` | Styled heading using `text-h2` typography token |
|
|
11
|
+
| `CardDescription` | Muted subtitle using `text-h6` and `text-muted-foreground` |
|
|
12
|
+
| `CardContent` | Main body area with padding (top padding removed) |
|
|
13
|
+
| `CardFooter` | Horizontal flex row for actions, aligned at card bottom |
|
|
14
|
+
| `CardHorizontal` | Standalone horizontal card with icon, title, and description |
|
|
15
|
+
|
|
16
|
+
All `forwardRef` components accept standard `HTMLDivElement` attributes and merge custom `className` via the `cn` utility.
|
|
13
17
|
|
|
14
18
|
## Usage Example
|
|
15
19
|
|
|
16
20
|
```typescript
|
|
17
|
-
import {
|
|
18
|
-
Card,
|
|
19
|
-
CardHeader,
|
|
20
|
-
CardTitle,
|
|
21
|
-
CardDescription,
|
|
22
|
-
CardContent,
|
|
21
|
+
import {
|
|
22
|
+
Card,
|
|
23
|
+
CardHeader,
|
|
24
|
+
CardTitle,
|
|
25
|
+
CardDescription,
|
|
26
|
+
CardContent,
|
|
23
27
|
CardFooter,
|
|
24
|
-
|
|
25
|
-
} from
|
|
28
|
+
} from "@/components/ui/card"
|
|
29
|
+
import { CardHorizontal } from "@/components/ui/card"
|
|
30
|
+
import { ShieldIcon } from "lucide-react"
|
|
26
31
|
|
|
27
|
-
//
|
|
28
|
-
function
|
|
32
|
+
// Composable vertical card
|
|
33
|
+
function FeatureCard() {
|
|
29
34
|
return (
|
|
30
|
-
<Card
|
|
35
|
+
<Card>
|
|
31
36
|
<CardHeader>
|
|
32
|
-
<CardTitle>
|
|
33
|
-
<CardDescription>
|
|
37
|
+
<CardTitle>Endpoint Management</CardTitle>
|
|
38
|
+
<CardDescription>Monitor and manage all devices</CardDescription>
|
|
34
39
|
</CardHeader>
|
|
35
40
|
<CardContent>
|
|
36
|
-
<p>
|
|
41
|
+
<p>Real-time device status and alerts.</p>
|
|
37
42
|
</CardContent>
|
|
38
43
|
<CardFooter>
|
|
39
|
-
<button>
|
|
44
|
+
<button>View Devices</button>
|
|
40
45
|
</CardFooter>
|
|
41
46
|
</Card>
|
|
42
47
|
)
|
|
43
48
|
}
|
|
44
49
|
|
|
45
|
-
// Horizontal card for category
|
|
46
|
-
function
|
|
50
|
+
// Horizontal card for feature/category lists
|
|
51
|
+
function CategoryRow() {
|
|
47
52
|
return (
|
|
48
53
|
<CardHorizontal
|
|
49
|
-
icon={<
|
|
50
|
-
title="
|
|
51
|
-
description="
|
|
54
|
+
icon={<ShieldIcon />}
|
|
55
|
+
title="Security Monitoring"
|
|
56
|
+
description="Automated threat detection and response"
|
|
52
57
|
borderLeft={true}
|
|
53
58
|
/>
|
|
54
59
|
)
|
|
55
60
|
}
|
|
56
|
-
```
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## `CardHorizontal` Props
|
|
64
|
+
|
|
65
|
+
| Prop | Type | Default | Description |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| `icon` | `React.ReactNode` | — | Icon rendered at fixed `20×20px` |
|
|
68
|
+
| `title` | `string` | — | Primary label (`text-h6`, primary color) |
|
|
69
|
+
| `description` | `string` | — | Secondary label (`text-h6`, muted color) |
|
|
70
|
+
| `className` | `string` | `''` | Additional Tailwind classes |
|
|
71
|
+
| `borderLeft` | `boolean` | `true` | Toggles left border accent |
|
|
72
|
+
|
|
73
|
+
**Source:** [`card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/card.tsx)
|
|
@@ -1,46 +1,58 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A styled checkbox component that renders as a full-width
|
|
1
|
+
<!-- source-hash: d683834a543ce22b20cc1a05b1b5edc7 -->
|
|
2
|
+
A styled checkbox component that renders as a full-width card/block layout, combining a Radix UI checkbox primitive with a label, optional description, trailing slot, and inline error display.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
### `CheckboxBlock`
|
|
7
|
+
A `forwardRef` component wrapping `@radix-ui/react-checkbox` that renders a tappable card row containing:
|
|
8
8
|
|
|
9
9
|
| Prop | Type | Description |
|
|
10
|
-
|
|
11
|
-
| `label` | `
|
|
12
|
-
| `description` | `React.ReactNode` | Optional secondary
|
|
13
|
-
| `
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `label` | `React.ReactNode` | Primary label (supports rich text/links) |
|
|
12
|
+
| `description` | `React.ReactNode` | Optional secondary line below label |
|
|
13
|
+
| `trailing` | `React.ReactNode` | Optional trailing slot (e.g. action button); must call `preventDefault` to avoid toggling |
|
|
14
|
+
| `truncateLabel` | `boolean` | Ellipsize label overflow instead of wrapping |
|
|
15
|
+
| `error` | `string` | Error message shown below the block; triggers red border |
|
|
16
|
+
| `disabled` | `boolean` | Dims and disables interaction |
|
|
14
17
|
| `checked` / `defaultChecked` | `boolean` | Controlled/uncontrolled checked state |
|
|
15
18
|
| `onCheckedChange` | `(checked: boolean) => void` | Change handler |
|
|
16
|
-
| `disabled` | `boolean` | Disables interaction and reduces opacity |
|
|
17
19
|
|
|
18
20
|
## Usage Example
|
|
19
21
|
|
|
20
22
|
```typescript
|
|
21
23
|
import { CheckboxBlock } from "./checkbox-block"
|
|
22
24
|
|
|
23
|
-
//
|
|
25
|
+
// Uncontrolled with description
|
|
24
26
|
<CheckboxBlock
|
|
25
27
|
id="terms"
|
|
26
|
-
label="Accept Terms
|
|
27
|
-
description="
|
|
28
|
+
label="Accept Terms of Service"
|
|
29
|
+
description="You agree to our privacy policy and terms."
|
|
30
|
+
defaultChecked={false}
|
|
28
31
|
onCheckedChange={(checked) => console.log(checked)}
|
|
29
32
|
/>
|
|
30
33
|
|
|
31
|
-
//
|
|
34
|
+
// Controlled with error and trailing action
|
|
32
35
|
<CheckboxBlock
|
|
33
|
-
id="
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
id="notify"
|
|
37
|
+
checked={isChecked}
|
|
38
|
+
onCheckedChange={setIsChecked}
|
|
39
|
+
label="Enable notifications"
|
|
40
|
+
trailing={<button onClick={(e) => { e.preventDefault(); openSettings() }}>Configure</button>}
|
|
41
|
+
error={!isChecked ? "This field is required" : undefined}
|
|
38
42
|
/>
|
|
39
43
|
|
|
40
|
-
//
|
|
44
|
+
// Truncated label, disabled
|
|
41
45
|
<CheckboxBlock
|
|
42
|
-
id="
|
|
43
|
-
label="
|
|
46
|
+
id="long"
|
|
47
|
+
label="A very long label that should not wrap to a second line"
|
|
48
|
+
truncateLabel
|
|
44
49
|
disabled
|
|
45
50
|
/>
|
|
46
|
-
```
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Notes
|
|
54
|
+
|
|
55
|
+
- On mobile, `trailing` content stacks full-width below the text; on `md+` it aligns inline.
|
|
56
|
+
- Minimum touch target height is `44px` (mobile) / `48px` (desktop), increasing to `60px`/`64px` when a description is present.
|
|
57
|
+
- Error text is absolutely positioned below the block to avoid layout shift.
|
|
58
|
+
- Source: [`checkbox-block.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/checkbox-block.tsx)
|
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A compound checkbox component that
|
|
1
|
+
<!-- source-hash: 59a0ae55416cf1e4d81e6e2acf777fff -->
|
|
2
|
+
A compound checkbox component that renders a labeled checkbox alongside a title and descriptive text, built on Radix UI's `CheckboxPrimitive` with ODS design tokens.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`CheckboxWithDescription`** — A `forwardRef` component combining a
|
|
7
|
-
- **`CheckboxWithDescriptionProps`** — Interface defining
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
| `id` | `string` | ✅ | Links the label `htmlFor` to the checkbox input |
|
|
14
|
-
| `checked` | `boolean` | ✅ | Controlled checked state |
|
|
15
|
-
| `onCheckedChange` | `(checked: boolean) => void` | ✅ | Change handler |
|
|
16
|
-
| `title` | `string` | ✅ | Primary label text |
|
|
17
|
-
| `description` | `string` | ✅ | Secondary descriptive text |
|
|
18
|
-
| `disabled` | `boolean` | ❌ | Disables interaction and dims the container |
|
|
19
|
-
| `className` | `string` | ❌ | Additional classes for the outer wrapper |
|
|
6
|
+
- **`CheckboxWithDescription`** — A `forwardRef` wrapper component combining a Radix UI checkbox, a `Label`, and a secondary description span into a card-style container
|
|
7
|
+
- **`CheckboxWithDescriptionProps`** — Interface defining required and optional props:
|
|
8
|
+
- `id` — Links the label to the checkbox input
|
|
9
|
+
- `checked` / `onCheckedChange` — Controlled state
|
|
10
|
+
- `title` — Primary label text
|
|
11
|
+
- `description` — Secondary helper text rendered in `ods-text-secondary`
|
|
12
|
+
- `disabled` / `className` — Optional modifiers
|
|
20
13
|
|
|
21
14
|
## Usage Example
|
|
22
15
|
|
|
23
16
|
```typescript
|
|
24
17
|
import { CheckboxWithDescription } from "@/components/ui/checkbox-with-description"
|
|
25
18
|
|
|
26
|
-
function
|
|
19
|
+
function NotificationSettings() {
|
|
27
20
|
const [enabled, setEnabled] = React.useState(false)
|
|
28
21
|
|
|
29
22
|
return (
|
|
30
23
|
<CheckboxWithDescription
|
|
31
|
-
id="notifications"
|
|
24
|
+
id="email-notifications"
|
|
32
25
|
checked={enabled}
|
|
33
26
|
onCheckedChange={setEnabled}
|
|
34
27
|
title="Email Notifications"
|
|
35
|
-
description="Receive alerts
|
|
28
|
+
description="Receive alerts and updates directly to your inbox."
|
|
36
29
|
/>
|
|
37
30
|
)
|
|
38
31
|
}
|
|
39
32
|
```
|
|
40
33
|
|
|
41
|
-
|
|
34
|
+
## Notes
|
|
35
|
+
|
|
36
|
+
- Applies `opacity-50 cursor-not-allowed` to the entire container when `disabled` is set, not just the native input
|
|
37
|
+
- Uses ODS design tokens (`ods-accent`, `ods-border`, `ods-card`) for consistent theming
|
|
38
|
+
- Checkbox indicator renders `CheckboxCheckmarkIcon` at 10px when `data-[state=checked]` is active
|
|
39
|
+
- `displayName` is set for React DevTools clarity
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 5df1a18bd1179672bf26c9b99fc30f83 -->
|
|
2
|
+
A client-side React button component that renders a chevron icon (up or down) with configurable size, direction, and expand/collapse state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `ChevronButton`
|
|
7
|
+
|
|
8
|
+
A `forwardRef` button component built on native `<button>` with the following props:
|
|
9
|
+
|
|
10
|
+
| Prop | Type | Default | Description |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| `direction` | `'up' \| 'down'` | `'down'` | Static chevron direction |
|
|
13
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Icon size (`h-4`, `h-5`, `h-6`) |
|
|
14
|
+
| `isExpanded` | `boolean` | — | When provided, overrides `direction` — `true` → up, `false` → down |
|
|
15
|
+
| `backgroundColor` | `string` | — | Inline background color |
|
|
16
|
+
| `borderColor` | `string` | — | Inline border color |
|
|
17
|
+
| `className` | `string` | — | Additional Tailwind classes via `cn()` |
|
|
18
|
+
|
|
19
|
+
> **Note:** `isExpanded` takes priority over `direction` when determining the rendered icon.
|
|
10
20
|
|
|
11
21
|
## Usage Example
|
|
12
22
|
|
|
13
23
|
```typescript
|
|
14
|
-
import { ChevronButton } from
|
|
24
|
+
import { ChevronButton } from "@/components/ui/chevron-button"
|
|
15
25
|
|
|
16
|
-
//
|
|
17
|
-
<ChevronButton onClick={
|
|
18
|
-
|
|
19
|
-
// Expandable dropdown with state control
|
|
20
|
-
<ChevronButton
|
|
21
|
-
isExpanded={isOpen}
|
|
22
|
-
onClick={() => setIsOpen(!isOpen)}
|
|
23
|
-
size="lg"
|
|
24
|
-
/>
|
|
26
|
+
// Static direction
|
|
27
|
+
<ChevronButton direction="up" size="sm" onClick={handleClick} />
|
|
25
28
|
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
direction="up"
|
|
29
|
-
size="sm"
|
|
30
|
-
backgroundColor="#f3f4f6"
|
|
31
|
-
borderColor="#d1d5db"
|
|
32
|
-
className="hover:bg-gray-200"
|
|
33
|
-
/>
|
|
29
|
+
// Controlled expand/collapse toggle
|
|
30
|
+
const [open, setOpen] = React.useState(false)
|
|
34
31
|
|
|
35
|
-
// Form integration
|
|
36
32
|
<ChevronButton
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
isExpanded={open}
|
|
34
|
+
size="lg"
|
|
35
|
+
backgroundColor="#f4f4f5"
|
|
36
|
+
borderColor="#e4e4e7"
|
|
37
|
+
onClick={() => setOpen(prev => !prev)}
|
|
40
38
|
/>
|
|
41
39
|
```
|
|
42
40
|
|
|
43
|
-
|
|
41
|
+
## Source
|
|
42
|
+
|
|
43
|
+
[`chevron-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/ui/chevron-button.tsx)
|
|
@@ -1,66 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React SVG-based circular progress ring component with
|
|
1
|
+
<!-- source-hash: b3bf4bccce844da265f752f1cb27c87b -->
|
|
2
|
+
A React SVG-based circular progress ring component with support for multiple semantic variants, configurable sizing, and overflow handling for values exceeding 100%.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Types
|
|
7
7
|
|
|
8
|
-
|
|
|
9
|
-
|
|
10
|
-
| `CircularProgressVariant` | `success` \| `warning` \| `error` \| `info` \| `accent` | Color theme for the progress ring |
|
|
11
|
-
| `CircularProgressOverflow` | `clamp` \| `wrap` | How to handle percentages exceeding 100 |
|
|
8
|
+
- **`CircularProgressVariant`** — `'success' | 'warning' | 'error' | 'info' | 'accent'`
|
|
9
|
+
- **`CircularProgressOverflow`** — `'clamp'` (default, caps ring at 100%) or `'wrap'` (ring wraps per 100 units, label shows raw value)
|
|
12
10
|
|
|
13
|
-
###
|
|
11
|
+
### `CircularProgress` Component
|
|
14
12
|
|
|
15
|
-
| Prop | Default | Description |
|
|
16
|
-
|
|
17
|
-
| `percentage` | — | Progress value (0–100 in clamp;
|
|
18
|
-
| `variant` | `'success'` |
|
|
19
|
-
| `size` | `56` |
|
|
20
|
-
| `strokeWidth` | `10` | Ring stroke thickness in pixels |
|
|
21
|
-
| `showLabel` | `true` | Renders
|
|
22
|
-
| `labelFormat` | `'percent'` | `'percent'` → `"70%"`, `'value'` → `"70"` |
|
|
23
|
-
| `overflow` | `'clamp'` |
|
|
24
|
-
|
|
25
|
-
### `CircularProgress` (exported component)
|
|
26
|
-
|
|
27
|
-
Renders a two-circle SVG (track + progress arc) rotated -90° so progress starts at the top. The progress arc is animated via `strokeDashoffset`.
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `percentage` | `number` | — | Progress value (0–100 in clamp mode; can exceed 100 in wrap mode) |
|
|
16
|
+
| `variant` | `CircularProgressVariant` | `'success'` | Controls ring and track colors via ODS tokens |
|
|
17
|
+
| `size` | `number` | `56` | Width/height in pixels |
|
|
18
|
+
| `strokeWidth` | `number` | `10` | Ring stroke thickness in pixels |
|
|
19
|
+
| `showLabel` | `boolean` | `true` | Renders centered text label |
|
|
20
|
+
| `labelFormat` | `'percent' \| 'value'` | `'percent'` | `'percent'` → `"70%"`, `'value'` → `"70"` |
|
|
21
|
+
| `overflow` | `CircularProgressOverflow` | `'clamp'` | How values > 100 are handled |
|
|
22
|
+
| `className` | `string` | — | Additional CSS classes on the wrapper |
|
|
28
23
|
|
|
29
24
|
## Usage Example
|
|
30
25
|
|
|
31
26
|
```typescript
|
|
32
|
-
//
|
|
33
|
-
<CircularProgress percentage={
|
|
27
|
+
// Default success ring at 75%
|
|
28
|
+
<CircularProgress percentage={75} />
|
|
34
29
|
|
|
35
|
-
//
|
|
30
|
+
// Warning ring with wrap overflow — ring shows 30%, label shows "130%"
|
|
36
31
|
<CircularProgress
|
|
37
32
|
percentage={130}
|
|
38
33
|
variant="warning"
|
|
39
34
|
overflow="wrap"
|
|
40
35
|
/>
|
|
41
|
-
// Ring shows 30%, label shows 130%
|
|
42
36
|
|
|
43
|
-
//
|
|
37
|
+
// Compact error ring, value-only label, no label
|
|
44
38
|
<CircularProgress
|
|
45
|
-
percentage={
|
|
46
|
-
variant="
|
|
47
|
-
size={
|
|
48
|
-
strokeWidth={
|
|
49
|
-
|
|
39
|
+
percentage={42}
|
|
40
|
+
variant="error"
|
|
41
|
+
size={40}
|
|
42
|
+
strokeWidth={6}
|
|
43
|
+
labelFormat="value"
|
|
50
44
|
/>
|
|
51
45
|
|
|
52
|
-
//
|
|
46
|
+
// Accent ring, large, no label
|
|
53
47
|
<CircularProgress
|
|
54
|
-
percentage={
|
|
55
|
-
|
|
56
|
-
|
|
48
|
+
percentage={60}
|
|
49
|
+
variant="accent"
|
|
50
|
+
size={80}
|
|
51
|
+
showLabel={false}
|
|
57
52
|
/>
|
|
58
53
|
```
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```text
|
|
63
|
-
clamp mode: percentage=130 → ring=100%, label="100%"
|
|
64
|
-
wrap mode: percentage=130 → ring=30%, label="130%"
|
|
65
|
-
wrap mode: percentage=200 → ring=100%, label="200%" (exact lap = full ring)
|
|
66
|
-
```
|
|
55
|
+
**Source:** [`circular-progress.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/circular-progress.tsx)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!-- source-hash: 8c7a0dd97bd59ac0d3df5150557e0d01 -->
|
|
2
|
+
Client-side color selection components providing both a preset-based dropdown selector and a full-featured color picker with HEX/RGB/HSL input support.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Exports & Constants
|
|
7
|
+
|
|
8
|
+
| Name | Type | Description |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `ColorPreset` | Interface | Shape for a color preset entry (`key`, `label`, `color`) |
|
|
11
|
+
| `TICKET_STATUS_COLOR_PRESETS` | `readonly ColorPreset[]` | 12-color palette for ticket status use |
|
|
12
|
+
| `CUSTOM_PRESET_KEY` | `string` | Sentinel key `'custom'` for user-defined colors |
|
|
13
|
+
| `DEFAULT_CUSTOM_STATUS_COLOR` | `string` | Fallback hex `#888888` for custom presets |
|
|
14
|
+
| `ColorPresetSelect` | Component | Dropdown to pick from named presets or switch to custom |
|
|
15
|
+
| `ColorPickerInput` | Component | Popover with a saturation/hue canvas and HEX/RGB/HSL text inputs |
|
|
16
|
+
|
|
17
|
+
### Internal Helpers
|
|
18
|
+
|
|
19
|
+
- **`HexInputs`** — controlled text input with draft state; validates against `HEX_PATTERN` on blur/Enter
|
|
20
|
+
- **`ChannelInput`** — numeric-only input clamped to `[min, max]`; used by RGB and HSL rows
|
|
21
|
+
- **`RgbInputs`** / **`HslInputs`** — three-channel rows converting to/from hex via `ods-color-utils`
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import {
|
|
27
|
+
ColorPresetSelect,
|
|
28
|
+
ColorPickerInput,
|
|
29
|
+
TICKET_STATUS_COLOR_PRESETS,
|
|
30
|
+
} from './color-preset-select'
|
|
31
|
+
|
|
32
|
+
// Preset selector (e.g. ticket status badge color)
|
|
33
|
+
<ColorPresetSelect
|
|
34
|
+
value={color}
|
|
35
|
+
presetKey={presetKey}
|
|
36
|
+
presets={TICKET_STATUS_COLOR_PRESETS}
|
|
37
|
+
onChange={({ color, preset }) => {
|
|
38
|
+
setColor(color)
|
|
39
|
+
setPresetKey(preset)
|
|
40
|
+
}}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
// Free-form color picker (always works in hex)
|
|
44
|
+
<ColorPickerInput
|
|
45
|
+
value={color} // "#5ea62e"
|
|
46
|
+
onChange={setColor} // receives hex string
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
> **Note:** Both components use `value`/`onChange` in hex (`#rrggbb`). Color space conversions (RGB ↔ HSL ↔ hex) are handled internally via `utils/ods-color-utils`.
|
|
51
|
+
|
|
52
|
+
## Source
|
|
53
|
+
|
|
54
|
+
[`color-preset-select.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/color-preset-select.tsx)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- source-hash: 2ae93287b79efdeb7690ec2709feb96f -->
|
|
2
|
+
A small presentational component that renders a square color preview swatch, used as a shared building block across color and status selector UIs.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
**`ColorSwatch`** — Default export function component.
|
|
7
|
+
|
|
8
|
+
**`ColorSwatchProps`** — Interface defining the component's props:
|
|
9
|
+
|
|
10
|
+
| Prop | Type | Required | Description |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| `color` | `string` | ✅ | Any valid CSS color value applied as `backgroundColor` |
|
|
13
|
+
| `className` | `string` | ❌ | Optional additional Tailwind/CSS classes |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { ColorSwatch } from './color-swatch'
|
|
19
|
+
|
|
20
|
+
// Basic usage
|
|
21
|
+
<ColorSwatch color="#3B82F6" />
|
|
22
|
+
|
|
23
|
+
// With custom sizing override
|
|
24
|
+
<ColorSwatch color="rgb(239, 68, 68)" className="size-6" />
|
|
25
|
+
|
|
26
|
+
// Composed inside a status selector
|
|
27
|
+
<div className="flex items-center gap-2">
|
|
28
|
+
<ColorSwatch color={selectedStatus.color} />
|
|
29
|
+
<span>{selectedStatus.label}</span>
|
|
30
|
+
</div>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
- Renders as an `aria-hidden` `<span>` — purely decorative; excluded from the accessibility tree.
|
|
36
|
+
- Default styles: `inline-block`, `16×16px` (`size-4`), `shrink-0`, `rounded-sm`.
|
|
37
|
+
- Uses the shared [`cn`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/utils/cn.ts) utility for class merging, so `className` overrides compose cleanly with Tailwind.
|
|
@@ -1,43 +1,50 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A unified skeleton loading component that
|
|
1
|
+
<!-- source-hash: 40cfee9a50603599ef7a29bb3b0234f7 -->
|
|
2
|
+
A unified skeleton loading component that renders animated placeholder UI for different content layouts using ODS design tokens, replacing duplicate loading patterns across the application.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
### `ContentLoader`
|
|
7
|
+
The primary export. Accepts a `variant` prop to switch between four skeleton layouts, with configurable item count and optional title placeholder.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
**Props (`ContentLoaderProps`):**
|
|
9
10
|
|
|
10
11
|
| Prop | Type | Default | Description |
|
|
11
|
-
|
|
12
|
+
|---|---|---|---|
|
|
12
13
|
| `variant` | `'card' \| 'form' \| 'detail' \| 'list'` | `'card'` | Skeleton layout type |
|
|
13
14
|
| `items` | `number` | `4` | Number of repeated skeleton items |
|
|
14
|
-
| `showTitle` | `boolean` | `true` |
|
|
15
|
-
| `className` | `string` | — |
|
|
16
|
-
| `containerClassName` | `string` | — |
|
|
15
|
+
| `showTitle` | `boolean` | `true` | Render a title placeholder bar |
|
|
16
|
+
| `className` | `string` | — | CSS classes for inner wrapper |
|
|
17
|
+
| `containerClassName` | `string` | — | CSS classes for outer container |
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
19
|
+
### Variant Shortcuts
|
|
20
|
+
Pre-bound convenience exports with `variant` locked:
|
|
21
|
+
|
|
22
|
+
- **`CardLoader`** — Grid of stat fields with a footer row
|
|
23
|
+
- **`FormLoader`** — Stacked label + input field rows
|
|
24
|
+
- **`DetailLoader`** — Two-column layout with a large content area and sidebar
|
|
25
|
+
- **`ListLoader`** — Row items with avatar, text lines, and action button
|
|
26
|
+
|
|
27
|
+
All variants use `bg-ods-skeleton` tokens and `animate-pulse` for consistent theming.
|
|
23
28
|
|
|
24
29
|
## Usage Example
|
|
25
30
|
|
|
26
31
|
```typescript
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
import {
|
|
33
|
+
ContentLoader,
|
|
34
|
+
CardLoader,
|
|
35
|
+
FormLoader,
|
|
36
|
+
DetailLoader,
|
|
37
|
+
ListLoader,
|
|
38
|
+
} from './content-loader';
|
|
39
|
+
|
|
40
|
+
// Generic usage with variant selection
|
|
30
41
|
<ContentLoader variant="list" items={6} showTitle={false} />
|
|
31
42
|
|
|
32
|
-
// Convenience
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
// Detail page skeleton
|
|
39
|
-
<DetailLoader containerClassName="max-w-4xl" />
|
|
43
|
+
// Convenience wrappers
|
|
44
|
+
<CardLoader items={4} />
|
|
45
|
+
<FormLoader items={5} containerClassName="max-w-lg" />
|
|
46
|
+
<DetailLoader className="mt-4" />
|
|
47
|
+
<ListLoader items={8} showTitle={false} />
|
|
48
|
+
```
|
|
40
49
|
|
|
41
|
-
|
|
42
|
-
<ListLoader items={8} showTitle={false} containerClassName="px-0" />
|
|
43
|
-
```
|
|
50
|
+
> **Note:** This is a `'use client'` component. It must be rendered in a client boundary in Next.js App Router projects.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- source-hash: 4e1e5ab4feba9a5a8cb821fcb8daa1ba -->
|
|
2
|
+
Animated tab-panel stack that keeps all panels mounted in the DOM and switches between them using an opacity/visibility crossfade, preventing layout shift.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `CrossfadePanels`
|
|
7
|
+
The main exported component. Renders all panels into a single CSS grid cell (`col-start-1 row-start-1`), stacking them so the container height is always `max(panel heights)`. The active panel fades in at `z-[1]`; inactive panels fade out and receive `inert`, `aria-hidden`, and `pointer-events-none` once settled.
|
|
8
|
+
|
|
9
|
+
### Interfaces
|
|
10
|
+
|
|
11
|
+
| Interface | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `CrossfadePanel` | `{ id, content }` — a single panel descriptor |
|
|
14
|
+
| `CrossfadePanelsProps` | Component props: `activeId`, `panels`, `durationMs`, `className`, `panelClassName` |
|
|
15
|
+
|
|
16
|
+
## Key Behaviors
|
|
17
|
+
|
|
18
|
+
- **Height lock** — CSS grid single-cell stacking prevents CLS on switch
|
|
19
|
+
- **Fade-then-hide** — `visibility` interpolates alongside `opacity` so the outgoing panel stays paintable until the fade completes
|
|
20
|
+
- **Fully dead when hidden** — `inert` + `aria-hidden` eliminates tab stops, screen-reader exposure, and click/hover leaks (WCAG compliant)
|
|
21
|
+
- **Motion respect** — `prefers-reduced-motion` collapses the crossfade to an instant swap via `motion-reduce:transition-none`
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { CrossfadePanels } from './crossfade-panels'
|
|
27
|
+
|
|
28
|
+
const panels = [
|
|
29
|
+
{ id: 'overview', content: <OverviewPanel /> },
|
|
30
|
+
{ id: 'metrics', content: <MetricsPanel /> },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
function Dashboard() {
|
|
34
|
+
const [activeId, setActiveId] = React.useState('overview')
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<>
|
|
38
|
+
<TabNavigation activeId={activeId} onChange={setActiveId} />
|
|
39
|
+
<CrossfadePanels
|
|
40
|
+
activeId={activeId}
|
|
41
|
+
panels={panels}
|
|
42
|
+
durationMs={250}
|
|
43
|
+
className="mt-4"
|
|
44
|
+
/>
|
|
45
|
+
</>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
> **When to prefer this over `<TabContent>`:** Use `CrossfadePanels` when panels are cheap to keep mounted and seamless switching matters (strips, media rails, dashboards). Use `<TabContent>` for heavy admin surfaces that should unmount when hidden.
|