@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
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 7a62ccb3d8f27e5378b7ce733e2d1ece -->
|
|
2
|
+
Renders rich markdown content with support for Mermaid diagrams, syntax-highlighted code blocks, social media embeds, video players, and OG link previews. Acts as the primary markdown rendering surface for the OpenFrame platform, processing both standard markdown and custom shortcodes before passing content to `react-markdown`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `RichMarkdownRenderer` | Component | Main renderer wrapping content with runtime context |
|
|
9
|
+
| `MermaidDiagram` | Component | Lazy-loads and renders Mermaid diagram SVGs with dark-mode theming |
|
|
10
|
+
| `processShortcodes` | Function | Pre-processes `{{youtube:ID}}`, `{% youtube %}`, thumbnail links, and bare URLs into embed HTML before markdown parsing |
|
|
11
|
+
|
|
12
|
+
**Plugin stack:**
|
|
13
|
+
- `remark-gfm` — GitHub Flavored Markdown (tables, task lists, strikethrough)
|
|
14
|
+
- `remark-breaks` — Newline-to-`<br>` conversion
|
|
15
|
+
- `rehype-highlight` — Syntax highlighting via highlight.js
|
|
16
|
+
- `rehype-raw` — Allows injected HTML from shortcode processing
|
|
17
|
+
|
|
18
|
+
**Supported embed types:** YouTube, Mux/MP4 video, Reddit, Twitter/X, LinkedIn, Figma, OG link previews, Mermaid diagrams, responsive images.
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { RichMarkdownRenderer } from './rich-markdown-renderer';
|
|
24
|
+
|
|
25
|
+
// Basic usage
|
|
26
|
+
<RichMarkdownRenderer content={markdownString} />
|
|
27
|
+
|
|
28
|
+
// With runtime overrides
|
|
29
|
+
<RichMarkdownRenderer
|
|
30
|
+
content={markdownString}
|
|
31
|
+
runtime={{ disableEmbeds: false }}
|
|
32
|
+
/>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Supported shortcode formats:**
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
{{youtube:dQw4w9WgXcQ}}
|
|
39
|
+
{% youtube id="dQw4w9WgXcQ" /%}
|
|
40
|
+
[](https://www.youtube.com/watch?v=dQw4w9WgXcQ)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Bare URLs on their own line are auto-detected and converted to OG preview cards or video embeds at render time.
|
|
44
|
+
|
|
45
|
+
> **Source:** [`rich-markdown-renderer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/rich-markdown-renderer.tsx)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- source-hash: 72d38f3f2a026cc157c5d6ce7d23525f -->
|
|
2
|
+
Provides a scroll-state tracking hook and edge-fade overlay component for adding "scroll shadow" indicators to scrollable containers.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useScrollFade<T>()`
|
|
7
|
+
|
|
8
|
+
Hook that observes a scrollable element and reports whether content overflows at the top or bottom edge. Uses `ResizeObserver` to detect container size changes and `MutationObserver` to detect content growth (e.g., appended list items that change `scrollHeight` without resizing the container).
|
|
9
|
+
|
|
10
|
+
**Returns:**
|
|
11
|
+
|
|
12
|
+
| Property | Type | Description |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `scrollRef` | `RefObject<T>` | Attach to the scrollable element |
|
|
15
|
+
| `fadeTop` | `boolean` | `true` when scrolled away from the top |
|
|
16
|
+
| `fadeBottom` | `boolean` | `true` when content continues below the visible area |
|
|
17
|
+
| `update` | `() => void` | Manual re-measure; wire to `onScroll` |
|
|
18
|
+
|
|
19
|
+
### `ScrollFadeOverlay`
|
|
20
|
+
|
|
21
|
+
Absolutely-positioned overlay that renders a gradient fade at a specified edge. Must be placed inside a `relative` wrapper alongside the scrollable element.
|
|
22
|
+
|
|
23
|
+
**Props:**
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| `edge` | `'top' \| 'bottom'` | — | Which edge to render the fade on |
|
|
28
|
+
| `visible` | `boolean` | — | Controls opacity via CSS transition |
|
|
29
|
+
| `color` | `string` | `var(--color-bg)` | Surface color the gradient fades into |
|
|
30
|
+
| `className` | `string` | — | Additional Tailwind classes |
|
|
31
|
+
|
|
32
|
+
## Usage Example
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { useScrollFade, ScrollFadeOverlay } from './scroll-fade'
|
|
36
|
+
|
|
37
|
+
function ChatList({ messages }: { messages: string[] }) {
|
|
38
|
+
const { scrollRef, fadeTop, fadeBottom, update } = useScrollFade<HTMLDivElement>()
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div className="relative">
|
|
42
|
+
<ScrollFadeOverlay edge="top" visible={fadeTop} />
|
|
43
|
+
|
|
44
|
+
<div ref={scrollRef} onScroll={update} className="overflow-y-auto h-96">
|
|
45
|
+
{messages.map((msg, i) => (
|
|
46
|
+
<div key={i}>{msg}</div>
|
|
47
|
+
))}
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<ScrollFadeOverlay edge="bottom" visible={fadeBottom} />
|
|
51
|
+
</div>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
> The `color` prop should match the background surface behind the list — override it when the list sits on a card or modal rather than the page background.
|
|
@@ -1,48 +1,66 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side search input component with debounced querying,
|
|
1
|
+
<!-- source-hash: 58919dce29eb76ba4f2de97d75e7c643 -->
|
|
2
|
+
A client-side search input component with debounced querying, keyboard navigation, grouped results, filter chips, and auto-limiting tag display.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
- **`SearchResult`** — Shape of
|
|
8
|
-
- **`FilterChipData`** —
|
|
9
|
-
- **`SearchInputProps`** — Full
|
|
10
|
-
|
|
11
|
-
###
|
|
12
|
-
- **`
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
### Interfaces
|
|
7
|
+
- **`SearchResult`** — Shape of each result item (`id`, `title`, `description`, `icon`, `type`, `metadata`, etc.)
|
|
8
|
+
- **`FilterChipData`** — Filter chip descriptor with `id`, `label`, and optional `variant`
|
|
9
|
+
- **`SearchInputProps`** — Full props interface for the component; see table below
|
|
10
|
+
|
|
11
|
+
### Helpers
|
|
12
|
+
- **`chipVariantToTagVariant`** — Maps `FilterChipData.variant` to the `Tag` component's `variant` prop
|
|
13
|
+
|
|
14
|
+
### Main Export
|
|
15
|
+
- **`SearchInput`** — The primary component
|
|
16
|
+
|
|
17
|
+
| Prop | Type | Default | Purpose |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| `value` / `defaultValue` | `string` | `""` | Controlled / uncontrolled input value |
|
|
20
|
+
| `debounceMs` | `number` | `300` | Debounce delay before `onChange` fires |
|
|
21
|
+
| `results` | `SearchResult[]` | `[]` | Dropdown result items |
|
|
22
|
+
| `filterChips` | `FilterChipData[]` | `[]` | Inline filter tags before the input |
|
|
23
|
+
| `limitTags` | `number \| "auto"` | `"auto"` | Max visible chips (auto-measures width) |
|
|
24
|
+
| `groupBy` | `(r) => string` | — | Groups results by a derived key |
|
|
25
|
+
| `minQueryLength` | `number` | `2` | Min chars before showing dropdown |
|
|
26
|
+
| `onResultSelect` | `(result, modifiers) => void` | — | Called on row select with modifier-key state |
|
|
21
27
|
|
|
22
28
|
## Usage Example
|
|
23
29
|
|
|
24
30
|
```typescript
|
|
25
|
-
import { SearchInput, SearchResult } from "
|
|
31
|
+
import { SearchInput, SearchResult } from "@openframe/ui"
|
|
26
32
|
|
|
27
33
|
const results: SearchResult[] = [
|
|
28
|
-
{ id: "1", title: "
|
|
29
|
-
{ id: "2", title: "
|
|
34
|
+
{ id: "1", title: "Dashboard", description: "Main view", type: "page" },
|
|
35
|
+
{ id: "2", title: "Devices", description: "All endpoints", type: "page" },
|
|
30
36
|
]
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
export function GlobalSearch() {
|
|
39
|
+
const [query, setQuery] = React.useState("")
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<SearchInput
|
|
43
|
+
value={query}
|
|
44
|
+
onChange={setQuery}
|
|
45
|
+
results={results}
|
|
46
|
+
debounceMs={300}
|
|
47
|
+
minQueryLength={2}
|
|
48
|
+
onResultSelect={(result, modifiers) => {
|
|
49
|
+
if (modifiers?.metaKey) {
|
|
50
|
+
// Open in background tab
|
|
51
|
+
window.open(`/${result.path}`, "_blank")
|
|
52
|
+
} else {
|
|
53
|
+
router.push(`/${result.path}`)
|
|
54
|
+
}
|
|
55
|
+
}}
|
|
56
|
+
filterChips={[
|
|
57
|
+
{ id: "online", label: "Online", variant: "selected" },
|
|
58
|
+
]}
|
|
59
|
+
onFilterRemove={(id) => console.log("Remove filter", id)}
|
|
60
|
+
groupBy={(r) => r.type ?? "Other"}
|
|
61
|
+
/>
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Source:** [`search-input.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/search-input.tsx)
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Accessible,
|
|
1
|
+
<!-- source-hash: e68a74e73e3bc8ce916bdb785ba7581e -->
|
|
2
|
+
Accessible, themed Select component built on Radix UI primitives, providing a fully styled dropdown with label, error, and validation state support via `FieldWrapper`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Description |
|
|
7
|
-
|
|
8
|
-
| `Select` | Root
|
|
9
|
-
| `SelectTrigger` |
|
|
10
|
-
| `SelectContent` |
|
|
11
|
-
| `SelectItem` | Individual option row
|
|
12
|
-
| `SelectGroup` | Groups related
|
|
13
|
-
| `SelectLabel` |
|
|
14
|
-
| `SelectValue` | Displays the
|
|
15
|
-
| `SelectSeparator` | Horizontal divider between
|
|
16
|
-
| `SelectScrollUpButton`
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Select` | Root component (`SelectPrimitive.Root`) — manages open/value state |
|
|
9
|
+
| `SelectTrigger` | Button that opens the dropdown; accepts `label`, `error`, and `invalid` props for form integration via `FieldWrapper` |
|
|
10
|
+
| `SelectContent` | Portal-rendered dropdown panel with enter/exit animations and scroll buttons |
|
|
11
|
+
| `SelectItem` | Individual option row; renders a `CheckIcon` accent indicator when selected |
|
|
12
|
+
| `SelectGroup` | Groups related items; pairs with `SelectLabel` |
|
|
13
|
+
| `SelectLabel` | Section heading within a group |
|
|
14
|
+
| `SelectValue` | Displays the current selected value inside the trigger |
|
|
15
|
+
| `SelectSeparator` | Horizontal divider between items or groups |
|
|
16
|
+
| `SelectScrollUpButton` | Scroll control rendered at the top of an overflowing list |
|
|
17
|
+
| `SelectScrollDownButton` | Scroll control rendered at the bottom of an overflowing list |
|
|
17
18
|
|
|
18
19
|
## Usage Example
|
|
19
20
|
|
|
@@ -28,10 +29,10 @@ import {
|
|
|
28
29
|
SelectValue,
|
|
29
30
|
} from "@/components/ui/select"
|
|
30
31
|
|
|
31
|
-
// Basic usage
|
|
32
|
+
// Basic usage
|
|
32
33
|
<Select>
|
|
33
|
-
<SelectTrigger label="Region" error={errors.region
|
|
34
|
-
<SelectValue placeholder="Select a region
|
|
34
|
+
<SelectTrigger label="Region" error={errors.region}>
|
|
35
|
+
<SelectValue placeholder="Select a region" />
|
|
35
36
|
</SelectTrigger>
|
|
36
37
|
<SelectContent>
|
|
37
38
|
<SelectGroup>
|
|
@@ -42,22 +43,20 @@ import {
|
|
|
42
43
|
</SelectContent>
|
|
43
44
|
</Select>
|
|
44
45
|
|
|
45
|
-
//
|
|
46
|
+
// With invalid state
|
|
46
47
|
<Select>
|
|
47
|
-
<SelectTrigger
|
|
48
|
-
|
|
48
|
+
<SelectTrigger
|
|
49
|
+
label="Priority"
|
|
50
|
+
error="Priority is required"
|
|
51
|
+
invalid
|
|
52
|
+
>
|
|
53
|
+
<SelectValue placeholder="Select priority" />
|
|
49
54
|
</SelectTrigger>
|
|
50
55
|
<SelectContent>
|
|
51
|
-
<SelectItem value="low">Low</SelectItem>
|
|
52
|
-
<SelectItem value="medium">Medium</SelectItem>
|
|
53
56
|
<SelectItem value="high">High</SelectItem>
|
|
57
|
+
<SelectItem value="low">Low</SelectItem>
|
|
54
58
|
</SelectContent>
|
|
55
59
|
</Select>
|
|
56
60
|
```
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- **Validation states**: Pass `error` (string) or `invalid` (boolean) to `SelectTrigger` to apply `ods-error` border and icon tinting.
|
|
61
|
-
- **ODS tokens**: All colors use `ods-*` CSS custom properties (`ods-card`, `ods-accent`, `ods-error`, etc.) for consistent theming.
|
|
62
|
-
- **Content width**: Dropdown matches trigger width via `--radix-select-trigger-width` CSS variable.
|
|
63
|
-
- **Accessibility**: Built on Radix UI — keyboard navigation, ARIA roles, and focus management are handled automatically.
|
|
62
|
+
**Validation states:** The trigger border switches to `ods-error` when `invalid` is truthy or `error` is a non-empty string, and switches to `ods-accent` on open when valid. The dropdown width automatically matches the trigger via the `--radix-select-trigger-width` CSS variable.
|
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 726aed7bdab22617295842e04fb380be -->
|
|
2
|
+
A display card component for presenting service information with labeled rows that support copy-to-clipboard, external link opening, and secret value masking/revealing.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ServiceCard` | Component | Main card with header (icon, title, subtitle, tag) and a list of data rows |
|
|
9
|
+
| `ServiceCardRowItem` | Component (internal) | Individual row with value display and action buttons |
|
|
10
|
+
| `MaskedValue` | Component (internal) | Renders a value as dots or plaintext based on reveal state |
|
|
11
|
+
| `ServiceCardProps` | Interface | Props for `ServiceCard` |
|
|
12
|
+
| `ServiceCardRow` | Type | Row data: label, value, href, secret flag, monospace flag, and per-row action overrides |
|
|
13
|
+
| `ServiceCardTag` | Type | Badge label displayed in the card header |
|
|
14
|
+
| `ServiceCardRowAction` | Type | Flags controlling which actions (`copy`, `open`, `reveal`) are available per row |
|
|
15
|
+
|
|
16
|
+
**Default row action behavior:**
|
|
17
|
+
- `copy` — always enabled
|
|
18
|
+
- `open` — enabled when `row.href` is provided
|
|
19
|
+
- `reveal` — enabled when `row.isSecret` is `true`
|
|
13
20
|
|
|
14
21
|
## Usage Example
|
|
15
22
|
|
|
16
23
|
```typescript
|
|
17
|
-
import { ServiceCard } from '@
|
|
24
|
+
import { ServiceCard } from '@openframe/ui'
|
|
18
25
|
|
|
19
26
|
<ServiceCard
|
|
20
27
|
title="PostgreSQL"
|
|
@@ -24,27 +31,26 @@ import { ServiceCard } from '@your-org/ui'
|
|
|
24
31
|
{
|
|
25
32
|
label: 'Host',
|
|
26
33
|
value: 'db.example.com',
|
|
27
|
-
actions: { copy: true },
|
|
34
|
+
actions: { copy: true, open: false },
|
|
28
35
|
},
|
|
29
36
|
{
|
|
30
37
|
label: 'Password',
|
|
31
|
-
value: '
|
|
38
|
+
value: 'super-secret-password',
|
|
32
39
|
isSecret: true,
|
|
33
|
-
|
|
40
|
+
monospace: true,
|
|
34
41
|
},
|
|
35
42
|
{
|
|
36
43
|
label: 'Console',
|
|
37
44
|
value: 'Open dashboard',
|
|
38
45
|
href: 'https://console.example.com',
|
|
39
|
-
actions: { copy: false, open: true },
|
|
40
46
|
},
|
|
41
47
|
]}
|
|
42
48
|
/>
|
|
43
49
|
```
|
|
44
50
|
|
|
45
|
-
##
|
|
51
|
+
## Notes
|
|
46
52
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
53
|
+
- Defaults to the `OpenFrameLogo` icon when no `icon` prop is supplied.
|
|
54
|
+
- Secret rows display a bullet mask (`••••••••••••`) until the eye toggle is clicked.
|
|
55
|
+
- Copy feedback uses a `CheckIcon` that reverts after a short delay via the `useCopyToClipboard` hook.
|
|
56
|
+
- External links always open with `noopener,noreferrer` for security.
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A slide-out panel component built on
|
|
1
|
+
<!-- source-hash: 907cdfd44e785932b3ad911c463d284f -->
|
|
2
|
+
A slide-out panel component built on Radix UI Dialog primitives, providing accessible sheet/drawer UI with animated entry and exit from any screen edge.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Description |
|
|
7
|
-
|
|
8
|
-
| `Sheet` | Root component wrapping Radix Dialog
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Sheet` | Root component wrapping Radix UI Dialog |
|
|
9
9
|
| `SheetTrigger` | Button/element that opens the sheet |
|
|
10
10
|
| `SheetClose` | Element that closes the sheet |
|
|
11
|
-
| `SheetPortal` | Renders sheet outside DOM hierarchy |
|
|
12
|
-
| `SheetOverlay` |
|
|
13
|
-
| `SheetContent` | Main panel container
|
|
14
|
-
| `SheetHeader` |
|
|
15
|
-
| `SheetFooter` |
|
|
16
|
-
| `SheetTitle` |
|
|
17
|
-
| `SheetDescription` |
|
|
11
|
+
| `SheetPortal` | Renders sheet content outside the DOM hierarchy |
|
|
12
|
+
| `SheetOverlay` | Dimmed backdrop rendered behind the sheet |
|
|
13
|
+
| `SheetContent` | Main panel container; accepts `side` variant (`top`, `bottom`, `left`, `right`) |
|
|
14
|
+
| `SheetHeader` | Layout wrapper for title and description at the top |
|
|
15
|
+
| `SheetFooter` | Layout wrapper for action buttons at the bottom |
|
|
16
|
+
| `SheetTitle` | Accessible title styled with `text-h3` |
|
|
17
|
+
| `SheetDescription` | Accessible description styled with `text-h6 text-muted-foreground` |
|
|
18
|
+
|
|
19
|
+
**Variants (`sheetVariants`):** `side` — `top` | `bottom` | `left` | `right` (default: `right`)
|
|
18
20
|
|
|
19
21
|
## Usage Example
|
|
20
22
|
|
|
21
23
|
```typescript
|
|
22
24
|
import {
|
|
23
25
|
Sheet,
|
|
24
|
-
SheetTrigger,
|
|
25
26
|
SheetContent,
|
|
26
27
|
SheetHeader,
|
|
27
28
|
SheetTitle,
|
|
28
29
|
SheetDescription,
|
|
29
30
|
SheetFooter,
|
|
30
|
-
|
|
31
|
-
} from "
|
|
31
|
+
SheetTrigger,
|
|
32
|
+
} from "@/components/ui/sheet"
|
|
33
|
+
import { Button } from "@/components/ui/button"
|
|
32
34
|
|
|
33
|
-
export function
|
|
35
|
+
export function SettingsSheet() {
|
|
34
36
|
return (
|
|
35
37
|
<Sheet>
|
|
36
38
|
<SheetTrigger asChild>
|
|
37
|
-
<
|
|
39
|
+
<Button variant="outline">Open Settings</Button>
|
|
38
40
|
</SheetTrigger>
|
|
39
41
|
<SheetContent side="right">
|
|
40
42
|
<SheetHeader>
|
|
41
43
|
<SheetTitle>Settings</SheetTitle>
|
|
42
|
-
<SheetDescription>Manage your preferences.</SheetDescription>
|
|
44
|
+
<SheetDescription>Manage your preferences here.</SheetDescription>
|
|
43
45
|
</SheetHeader>
|
|
44
46
|
{/* content */}
|
|
45
47
|
<SheetFooter>
|
|
46
|
-
<
|
|
47
|
-
<button>Close</button>
|
|
48
|
-
</SheetClose>
|
|
48
|
+
<Button type="submit">Save Changes</Button>
|
|
49
49
|
</SheetFooter>
|
|
50
50
|
</SheetContent>
|
|
51
51
|
</Sheet>
|
|
@@ -53,4 +53,4 @@ export function SettingsPanel() {
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
>
|
|
56
|
+
> **Source:** [`sheet.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/sheet.tsx) — Requires Radix UI (`@radix-ui/react-dialog`), `class-variance-authority`, and `lucide-react`.
|
|
@@ -1,40 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 9a47236bd9fd4f90eece958d3708b946 -->
|
|
2
|
+
A client-side React component that renders Markdown content with GFM support, syntax highlighting, raw HTML passthrough, and a layered XSS sanitization pipeline designed for safe rendering of LLM-generated output.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
- **`rehypeStripUnsafe()`** — Custom rehype plugin that strips dangerous HAST nodes after `rehype-raw` parsing. Removes `<script>`, `<style>`, `<object>`, event handler attributes (`on*`), `javascript:` / `data:` URIs, and `iframe srcdoc` vectors.
|
|
8
|
-
- **`srcsetHasUnsafeCandidate()`** — Inspects every candidate URL in `srcset` attributes (not just the first), preventing multi-candidate injection attacks.
|
|
9
|
-
- **`escapeUnknownHtmlTags()`** — Pre-processes markdown text to escape HTML tags not in the `SAFE_HTML_TAGS` allowlist, preventing LLM-emitted XML-style tags (e.g., `<ticket>`, `<their>`) from reaching React as unrecognized custom elements. Preserves code blocks and inline code spans.
|
|
10
|
-
- **`cardAwareUrlTransform()`** — Extends `react-markdown`'s default URL sanitizer to allow the internal `card://` scheme for chat-card markers while keeping all other unsafe schemes blocked.
|
|
6
|
+
### Rehype Plugins
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
| Export | Purpose |
|
|
14
|
-
|--------|---------|
|
|
15
|
-
| `SAFE_HTML_TAGS` | Allowlist of permitted HTML5 tags forwarded to React |
|
|
16
|
-
| `STRIP_ELEMENTS` | Tags removed entirely at the HAST level |
|
|
17
|
-
| `EVENT_HANDLER_ATTR_RE` | Matches `on*` attribute names |
|
|
18
|
-
| `JAVASCRIPT_URL_RE` / `DATA_URL_RE` | Detect unsafe URL schemes |
|
|
19
|
-
| `TAG_LIKE_REGEX` | Parses HTML-like tags in markdown source |
|
|
8
|
+
- **`rehypeStripUnsafe()`** — Custom HAST sanitizer that runs after `rehype-raw`. Strips dangerous elements (`<script>`, `<style>`, `<object>`, etc.), removes `on*` event handler attributes, and blocks `javascript:` / `data:` URI schemes on all URL-bearing attributes including multi-candidate `srcset`.
|
|
20
9
|
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
- **`srcsetHasUnsafeCandidate(srcset)`** — Helper that splits `srcset` attribute values by comma and validates each URL candidate individually to prevent injection via secondary candidates.
|
|
11
|
+
|
|
12
|
+
- **`escapeUnknownHtmlT...` (truncated)** — Pre-pass that escapes unrecognized HTML-like tags in raw markdown text before `rehype-raw` processes them, preventing React warnings/errors from LLM-emitted pseudo-XML tags like `<ticket>` or `<their>`.
|
|
13
|
+
|
|
14
|
+
### URL Transform
|
|
15
|
+
|
|
16
|
+
- **`cardAwareUrlTransform(url, key)`** — Extends `react-markdown`'s default URL sanitizer to allow `card://` and `mention://` internal schemes on `href` attributes only (used by `remarkCardLinks` and `remarkMentionChips` plugins), while keeping all other dangerous schemes blocked.
|
|
17
|
+
|
|
18
|
+
### Constants
|
|
19
|
+
|
|
20
|
+
- **`SAFE_HTML_TAGS`** — Allowlist of permitted HTML tag names forwarded to React. Explicitly excludes `<video>` (handled by a separate pipeline component).
|
|
21
|
+
- **`TAG_LIKE_REGEX`** — ReDoS-safe regex (CodeQL-hardened, bounded quantifiers) for matching HTML-like tags in markdown source.
|
|
23
22
|
|
|
24
23
|
## Usage Example
|
|
25
24
|
|
|
26
25
|
```typescript
|
|
27
26
|
import { SimpleMarkdownRenderer } from './simple-markdown-renderer';
|
|
28
27
|
|
|
29
|
-
// Basic
|
|
28
|
+
// Basic rendering with safe LLM output
|
|
29
|
+
<SimpleMarkdownRenderer content="## Hello\n\nThis is **markdown** with `code`." />
|
|
30
|
+
|
|
31
|
+
// With authenticated image sources and link resolution
|
|
30
32
|
<SimpleMarkdownRenderer
|
|
31
|
-
content=
|
|
33
|
+
content={llmMarkdownOutput}
|
|
34
|
+
resolveLink={(href) => ({ url: href, label: href })}
|
|
32
35
|
/>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Security Model
|
|
39
|
+
|
|
40
|
+
The sanitization runs in two layers:
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
```mermaid
|
|
43
|
+
graph TD
|
|
44
|
+
A[Raw Markdown] --> B[escapeUnknownHtmlTags pre-pass]
|
|
45
|
+
B --> C[remark-gfm / remark-breaks]
|
|
46
|
+
C --> D[rehype-raw]
|
|
47
|
+
D --> E[rehypeStripUnsafe HAST sanitizer]
|
|
48
|
+
E --> F[rehype-highlight]
|
|
49
|
+
F --> G[Safe React Output]
|
|
38
50
|
```
|
|
39
51
|
|
|
40
|
-
> **
|
|
52
|
+
> **Source:** [`simple-markdown-renderer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/simple-markdown-renderer.tsx)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: d746a22911a18c216f0712e84500c22e -->
|
|
2
|
+
Inline UI chip that renders a Slack icon alongside a channel name, optionally wrapped in a hyperlink to the channel's web deep link.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `SlackChannelChip`
|
|
7
|
+
A server-component-safe React functional component with no hooks or state. Composes a `SlackIcon` with a formatted channel label and conditionally wraps the output in an anchor tag.
|
|
8
|
+
|
|
9
|
+
### `SlackChannelChipProps`
|
|
10
|
+
| Prop | Type | Description |
|
|
11
|
+
|------|------|-------------|
|
|
12
|
+
| `name` | `string \| null` | Channel name without `#` prefix. Falls back to `"Slack"` when absent. |
|
|
13
|
+
| `href` | `string \| null` | Web deep link (e.g. `https://app.slack.com/client/T…/C…`). Omit to render unlinked. |
|
|
14
|
+
| `className` | `string` | Extra classes merged onto the chip `<span>`. |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { SlackChannelChip } from './slack-channel-chip';
|
|
20
|
+
|
|
21
|
+
// Linked chip with channel name
|
|
22
|
+
<SlackChannelChip
|
|
23
|
+
name="general"
|
|
24
|
+
href="https://app.slack.com/client/T01234/C56789"
|
|
25
|
+
/>
|
|
26
|
+
// Renders: 🔗 [<SlackIcon> #general]
|
|
27
|
+
|
|
28
|
+
// Unlinked fallback (no href)
|
|
29
|
+
<SlackChannelChip name="alerts" />
|
|
30
|
+
// Renders: <SlackIcon> #alerts
|
|
31
|
+
|
|
32
|
+
// Minimal fallback (no name, no href)
|
|
33
|
+
<SlackChannelChip />
|
|
34
|
+
// Renders: <SlackIcon> Slack
|
|
35
|
+
|
|
36
|
+
// With custom styling
|
|
37
|
+
<SlackChannelChip
|
|
38
|
+
name="incidents"
|
|
39
|
+
href="https://app.slack.com/client/T01234/C99999"
|
|
40
|
+
className="text-sm font-medium"
|
|
41
|
+
/>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Behavior Notes
|
|
45
|
+
|
|
46
|
+
- **No `href`** → renders a plain `<span>`, no anchor tag.
|
|
47
|
+
- **No `name`** → label falls back to `"Slack"` (no `#` prefix).
|
|
48
|
+
- **Linked** → opens in a new tab with `rel="noopener noreferrer"` and adds `hover:underline`.
|
|
49
|
+
- Safe to use in React Server Components — contains no client-side hooks or state.
|