@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214
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-3JWIJJ44.js → chunk-5OWDOFKK.js} +2 -2
- package/dist/{chunk-IK2X5YJU.js → chunk-HWY35EAK.js} +2 -2
- package/dist/{chunk-OTKJASSX.cjs → chunk-IZL2KEH6.cjs} +24 -24
- package/dist/{chunk-OTKJASSX.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
- package/dist/{chunk-35XIT2CF.cjs → chunk-KDNGUYZM.cjs} +17 -17
- package/dist/{chunk-35XIT2CF.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
- package/dist/{chunk-ZTJVRSN5.js → chunk-UKND27XC.js} +2 -2
- package/dist/chunk-UKND27XC.js.map +1 -0
- package/dist/{chunk-ZDF6F7ED.cjs → chunk-YZUUFTIK.cjs} +2 -2
- package/dist/chunk-YZUUFTIK.cjs.map +1 -0
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +49 -49
- package/dist/components/index.js +2 -2
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/tickets/index.cjs +61 -61
- package/dist/components/tickets/index.js +3 -3
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/.index.md +36 -34
- package/src/components/.alert-dialog.md +27 -23
- package/src/components/.announcement-bar.md +26 -21
- package/src/components/.breadcrumb.md +19 -15
- package/src/components/.calendar.md +24 -19
- package/src/components/.categories-cart.md +29 -24
- package/src/components/.checkbox.md +23 -25
- package/src/components/.chevron-button.md +37 -32
- package/src/components/.comment-card.md +32 -62
- package/src/components/.dialog.md +26 -26
- package/src/components/.dynamic-skeleton.md +54 -57
- package/src/components/.empty-state.md +42 -51
- package/src/components/.faq-accordion.md +27 -21
- package/src/components/.filter-chip.md +41 -24
- package/src/components/.flamingo-logo.md +20 -23
- package/src/components/.footer-waitlist-button.md +29 -22
- package/src/components/.footer.md +32 -32
- package/src/components/.icons-block.md +27 -17
- package/src/components/.image-cropper.md +41 -32
- package/src/components/.index.md +33 -39
- package/src/components/.input.md +31 -35
- package/src/components/.logs-list.md +31 -20
- package/src/components/.media-carousel.md +35 -36
- package/src/components/.open-source-features.md +33 -16
- package/src/components/.pagination.md +52 -51
- package/src/components/.provider-button.md +21 -23
- package/src/components/.select.md +31 -20
- package/src/components/.sidebar.md +34 -24
- package/src/components/.smooth-accordion.md +29 -24
- package/src/components/.social-icon-row.md +36 -32
- package/src/components/.textarea.md +25 -31
- package/src/components/.tool-icon.md +24 -26
- package/src/components/.unified-filter-logic.md +37 -30
- package/src/components/.unified-pagination.md +23 -22
- package/src/components/.user-summary-stub.md +38 -22
- package/src/components/.vendor-display-button.md +25 -25
- package/src/components/.vendor-icon.md +33 -25
- package/src/components/.why-it-matters.md +28 -25
- package/src/components/chat/.approval-batch-message.md +51 -0
- package/src/components/chat/.approval-request-message.md +35 -34
- package/src/components/chat/.chat-attachment-bar.md +64 -0
- package/src/components/chat/.chat-container.md +36 -18
- package/src/components/chat/.chat-input.md +37 -20
- package/src/components/chat/.chat-message-enhanced.md +30 -49
- package/src/components/chat/.chat-message-list.md +45 -32
- package/src/components/chat/.chat-message-skeleton.md +26 -22
- package/src/components/chat/.chat-panel-context.md +52 -0
- package/src/components/chat/.chat-ref.types.md +42 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
- package/src/components/chat/.chat-sidebar.md +31 -26
- package/src/components/chat/.chat-ticket-list.md +39 -0
- package/src/components/chat/.context-compaction-display.md +36 -0
- package/src/components/chat/.cycling-phrase.md +52 -0
- package/src/components/chat/.embeddable-chat.md +48 -0
- package/src/components/chat/.expand-chevron.md +24 -0
- package/src/components/chat/.index.md +31 -35
- package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
- package/src/components/chat/.mingo-onboarding-card.md +62 -0
- package/src/components/chat/.model-display.md +32 -30
- package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
- package/src/components/chat/.remark-card-links.md +38 -0
- package/src/components/chat/.slash-command-suggestions.md +47 -0
- package/src/components/chat/.source-action-button.md +48 -0
- package/src/components/chat/.thinking-display.md +42 -0
- package/src/components/chat/.tool-call-blocks.md +45 -0
- package/src/components/chat/.tool-execution-display.md +44 -36
- package/src/components/chat/chat-container.tsx +1 -1
- package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
- package/src/components/chat/entity-cards/.block-card.md +47 -0
- package/src/components/chat/entity-cards/.blog-card.md +52 -0
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
- package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
- package/src/components/chat/entity-cards/.case-study-card.md +58 -0
- package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
- package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
- package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
- package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
- package/src/components/chat/entity-cards/.dispatch.md +39 -0
- package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
- package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
- package/src/components/chat/entity-cards/.index.md +66 -0
- package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
- package/src/components/chat/entity-cards/.product-release-card.md +29 -0
- package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
- package/src/components/chat/entity-cards/.program-card.md +59 -0
- package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
- package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
- package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
- package/src/components/chat/hooks/.index.md +36 -21
- package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
- package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
- package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
- package/src/components/chat/hooks/.use-chat-identity.md +45 -0
- package/src/components/chat/hooks/.use-chat.md +58 -0
- package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
- package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
- package/src/components/chat/hooks/.use-collapsible.md +48 -0
- package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
- package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
- package/src/components/chat/hooks/.use-slash-commands.md +46 -0
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
- package/src/components/chat/hooks/.use-sse.md +60 -0
- package/src/components/chat/hooks/.use-unified-chat.md +57 -0
- package/src/components/chat/types/.api.types.md +52 -38
- package/src/components/chat/types/.chat.types.md +43 -34
- package/src/components/chat/types/.component.types.md +47 -48
- package/src/components/chat/types/.index.md +20 -27
- package/src/components/chat/types/.message.types.md +58 -48
- package/src/components/chat/types/.network.types.md +57 -31
- package/src/components/chat/types/.processing.types.md +49 -31
- package/src/components/chat/types/.unified-chat-state.types.md +41 -0
- package/src/components/chat/types/entities/.blog.md +43 -0
- package/src/components/chat/types/entities/.case-study.md +26 -0
- package/src/components/chat/types/entities/.content-ref.md +41 -0
- package/src/components/chat/types/entities/.customer-interview.md +28 -0
- package/src/components/chat/types/entities/.data-room-doc.md +36 -0
- package/src/components/chat/types/entities/.github-activity.md +43 -0
- package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
- package/src/components/chat/types/entities/.index.md +42 -0
- package/src/components/chat/types/entities/.investor-update.md +45 -0
- package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
- package/src/components/chat/types/entities/.program-types.md +57 -0
- package/src/components/chat/types/entities/.roadmap-item.md +58 -0
- package/src/components/chat/types/entities/.slack-message.md +35 -0
- package/src/components/chat/utils/.agent-status-message.md +45 -0
- package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
- package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
- package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
- package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
- package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
- package/src/components/chat/utils/.chip-action-class.md +34 -0
- package/src/components/chat/utils/.chip-styles.md +46 -0
- package/src/components/chat/utils/.chunk-parser.md +38 -28
- package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
- package/src/components/chat/utils/.compact-card-classes.md +62 -0
- package/src/components/chat/utils/.decide-new-tab.md +51 -0
- package/src/components/chat/utils/.external-app-urls.md +29 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
- package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
- package/src/components/chat/utils/.icon-registry.md +46 -0
- package/src/components/chat/utils/.index.md +37 -32
- package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
- package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
- package/src/components/chat/utils/.nav-anchor-props.md +44 -0
- package/src/components/chat/utils/.nav-click-handler.md +47 -0
- package/src/components/chat/utils/.onboarding-icons.md +28 -0
- package/src/components/chat/utils/.process-historical-messages.md +46 -35
- package/src/components/chat/utils/.scroll-anchor.md +40 -0
- package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
- package/src/components/chat/utils/.source-icons.md +35 -0
- package/src/components/chat/utils/.source-row-cta.md +54 -0
- package/src/components/chat/utils/.tool-call-helpers.md +42 -0
- package/src/components/contact/.contact-form.md +43 -0
- package/src/components/contact/.index.md +27 -0
- package/src/components/features/.array-entry-manager.md +36 -45
- package/src/components/features/.changelog-manager.md +47 -21
- package/src/components/features/.changelog-sections-manager.md +21 -26
- package/src/components/features/.command-box.md +31 -28
- package/src/components/features/.entity-summary-editor.md +46 -0
- package/src/components/features/.entity-video-section.md +51 -0
- package/src/components/features/.figma-prototype-viewer.md +48 -29
- package/src/components/features/.filters-dropdown.md +33 -46
- package/src/components/features/.highlight-config-section.md +42 -0
- package/src/components/features/.highlight-generation-section.md +46 -0
- package/src/components/features/.highlight-video-combined-section.md +47 -0
- package/src/components/features/.highlight-video-preview.md +44 -0
- package/src/components/features/.highlight-video-section.md +47 -0
- package/src/components/features/.index.md +40 -66
- package/src/components/features/.media-gallery-manager.md +48 -38
- package/src/components/features/.more-about-button.md +22 -19
- package/src/components/features/.og-editor-preview.md +40 -36
- package/src/components/features/.parallax-image-showcase.md +33 -26
- package/src/components/features/.paths-display.md +42 -43
- package/src/components/features/.platform-badge.md +37 -36
- package/src/components/features/.platform-filter.md +23 -16
- package/src/components/features/.policy-configuration-panel.md +48 -56
- package/src/components/features/.provider-button.md +33 -36
- package/src/components/features/.push-button-selector.md +40 -29
- package/src/components/features/.release-media-manager.md +46 -31
- package/src/components/features/.section-selector.md +26 -31
- package/src/components/features/.select-button.md +35 -25
- package/src/components/features/.seo-editor-preview.md +41 -44
- package/src/components/features/.social-links-manager.md +25 -19
- package/src/components/features/.start-with-openframe-button.md +37 -29
- package/src/components/features/.status-filter-component.md +36 -20
- package/src/components/features/.tags-selector.md +40 -24
- package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
- package/src/components/features/.transcribe-summarize-section.md +48 -0
- package/src/components/features/.transcript-summary-editor.md +53 -0
- package/src/components/features/.video-bites-display.md +46 -0
- package/src/components/features/.video-clips-section.md +41 -0
- package/src/components/features/.video-ratio-tabs.md +56 -0
- package/src/components/features/.video-source-selector.md +60 -0
- package/src/components/features/.video.md +44 -0
- package/src/components/features/.waitlist-form.md +60 -0
- package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
- package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
- package/src/components/features/board/.board-column-header.md +38 -0
- package/src/components/features/board/.board-column.md +43 -0
- package/src/components/features/board/.board.md +51 -0
- package/src/components/features/board/.color-utils.md +26 -0
- package/src/components/features/board/.index.md +56 -0
- package/src/components/features/board/.ticket-card-skeleton.md +38 -0
- package/src/components/features/board/.ticket-card.md +47 -0
- package/src/components/features/board/.types.md +45 -0
- package/src/components/features/board/.use-board-collapse.md +34 -0
- package/src/components/features/notifications/.index.md +57 -0
- package/src/components/features/notifications/.notification-drawer.md +34 -0
- package/src/components/features/notifications/.notification-tile.md +39 -0
- package/src/components/features/notifications/.notifications-context.md +73 -0
- package/src/components/features/notifications/.types.md +45 -0
- package/src/components/icons/.about-icon.md +20 -28
- package/src/components/icons/.ai-robot-icon.md +15 -17
- package/src/components/icons/.bash-icon.md +16 -23
- package/src/components/icons/.buildings-icon.md +10 -24
- package/src/components/icons/.capterra-icon.md +30 -26
- package/src/components/icons/.carta-icon.md +29 -0
- package/src/components/icons/.clickup-icon.md +26 -0
- package/src/components/icons/.cmd-icon.md +15 -22
- package/src/components/icons/.coins-icon.md +17 -25
- package/src/components/icons/.community-hub-icon.md +19 -25
- package/src/components/icons/.community-icon.md +24 -21
- package/src/components/icons/.compare-icon.md +32 -19
- package/src/components/icons/.copy-icon.md +29 -15
- package/src/components/icons/.custom-external-link-icon.md +19 -17
- package/src/components/icons/.custom-fork-icon.md +32 -21
- package/src/components/icons/.custom-license-icon.md +29 -25
- package/src/components/icons/.custom-star-icon.md +20 -28
- package/src/components/icons/.custom-time-icon.md +21 -22
- package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
- package/src/components/icons/.dashboard-icon.md +13 -18
- package/src/components/icons/.deno-icon.md +16 -23
- package/src/components/icons/.donut-icon.md +12 -23
- package/src/components/icons/.double-chevron-icon.md +28 -36
- package/src/components/icons/.elestio-logo.md +13 -23
- package/src/components/icons/.empty-vendor-icon.md +16 -18
- package/src/components/icons/.explore-categories-icon.md +18 -29
- package/src/components/icons/.eye-icon.md +16 -26
- package/src/components/icons/.facebook-icon.md +9 -20
- package/src/components/icons/.figma-icon.md +8 -17
- package/src/components/icons/.filter-icon.md +15 -17
- package/src/components/icons/.flamingo-logo.md +28 -27
- package/src/components/icons/.folder-shield-icon.md +28 -19
- package/src/components/icons/.g2-icon.md +22 -21
- package/src/components/icons/.getapp-icon.md +25 -21
- package/src/components/icons/.github-icon.md +13 -25
- package/src/components/icons/.globe-icon.md +14 -19
- package/src/components/icons/.google-gemini-icon.md +16 -19
- package/src/components/icons/.google-logo.md +15 -21
- package/src/components/icons/.grid-view-icon.md +30 -19
- package/src/components/icons/.hamburger-icon.md +22 -20
- package/src/components/icons/.hand-dollar-icon.md +24 -34
- package/src/components/icons/.hotel-icon.md +27 -21
- package/src/components/icons/.icon-utils.md +28 -29
- package/src/components/icons/.image-icon.md +15 -22
- package/src/components/icons/.index.md +25 -28
- package/src/components/icons/.info-circle-icon.md +29 -30
- package/src/components/icons/.instagram-icon.md +10 -24
- package/src/components/icons/.jump-in-icon.md +18 -18
- package/src/components/icons/.linux-icon.md +18 -18
- package/src/components/icons/.log-out-icon.md +15 -23
- package/src/components/icons/.logs-icon.md +14 -23
- package/src/components/icons/.margin-crisis-icon.md +21 -20
- package/src/components/icons/.menu-icon.md +18 -19
- package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
- package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
- package/src/components/icons/.mlg-logo.md +18 -16
- package/src/components/icons/.moon-icon.md +32 -22
- package/src/components/icons/.ms-icon.md +30 -19
- package/src/components/icons/.nushell-icon.md +7 -21
- package/src/components/icons/.open-source-icon.md +19 -23
- package/src/components/icons/.openai-icon.md +9 -24
- package/src/components/icons/.openframe-ai-icons.md +25 -26
- package/src/components/icons/.openframe-logo.md +28 -22
- package/src/components/icons/.openframe-text.md +24 -27
- package/src/components/icons/.openmsp-logo.md +26 -23
- package/src/components/icons/.pilot-icon.md +23 -0
- package/src/components/icons/.powershell-icon.md +17 -22
- package/src/components/icons/.python-icon.md +16 -23
- package/src/components/icons/.queries-icon.md +13 -21
- package/src/components/icons/.reddit-icon.md +28 -24
- package/src/components/icons/.remote-control-icon.md +13 -17
- package/src/components/icons/.script-icon.md +27 -19
- package/src/components/icons/.search-icon.md +21 -21
- package/src/components/icons/.send-icon.md +14 -16
- package/src/components/icons/.settings-icon.md +30 -19
- package/src/components/icons/.shape-circle-dash-icon.md +16 -21
- package/src/components/icons/.shell-icon.md +15 -19
- package/src/components/icons/.shield-check-icon.md +18 -31
- package/src/components/icons/.shield-key-icon.md +25 -25
- package/src/components/icons/.shield-lock-icon.md +8 -18
- package/src/components/icons/.slack-icon.md +28 -32
- package/src/components/icons/.sparkles-icon.md +18 -23
- package/src/components/icons/.sso-configuration-icon.md +29 -16
- package/src/components/icons/.sun-icon.md +20 -18
- package/src/components/icons/.table-view-icon.md +17 -19
- package/src/components/icons/.telegram-icon.md +8 -22
- package/src/components/icons/.thumbs-down-icon.md +10 -19
- package/src/components/icons/.thumbs-up-icon.md +8 -17
- package/src/components/icons/.tool-directory-icons.md +24 -28
- package/src/components/icons/.trustpilot-icon.md +25 -22
- package/src/components/icons/.user-icon.md +26 -28
- package/src/components/icons/.users-group-icon.md +28 -24
- package/src/components/icons/.vendor-showcase-icons.md +21 -29
- package/src/components/icons/.vendors-icon.md +18 -22
- package/src/components/icons/.whatsapp-icon.md +30 -14
- package/src/components/icons/.x-icon.md +18 -23
- package/src/components/icons/.x-logo.md +13 -38
- package/src/components/icons/.youtube-icon.md +8 -19
- package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
- package/src/components/icons-v2-generated/.index.md +52 -0
- package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
- package/src/components/icons-v2-generated/arrows/.index.md +39 -0
- package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
- package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
- package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
- package/src/components/icons-v2-generated/buildings/.index.md +48 -0
- package/src/components/icons-v2-generated/charts/.index.md +40 -0
- package/src/components/icons-v2-generated/clothes/.index.md +48 -0
- package/src/components/icons-v2-generated/coding/.index.md +42 -0
- package/src/components/icons-v2-generated/communication/.index.md +39 -0
- package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
- package/src/components/icons-v2-generated/design/.index.md +39 -0
- package/src/components/icons-v2-generated/devices/.index.md +38 -0
- package/src/components/icons-v2-generated/documents/.index.md +38 -0
- package/src/components/icons-v2-generated/finance/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
- package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
- package/src/components/icons-v2-generated/health/.index.md +40 -0
- package/src/components/icons-v2-generated/household/.index.md +45 -0
- package/src/components/icons-v2-generated/interface/.index.md +36 -0
- package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
- package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
- package/src/components/icons-v2-generated/number/.index.md +41 -0
- package/src/components/icons-v2-generated/school/.index.md +37 -0
- package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
- package/src/components/icons-v2-generated/security/.index.md +39 -0
- package/src/components/icons-v2-generated/shopping/.index.md +42 -0
- package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
- package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
- package/src/components/icons-v2-generated/sport/.index.md +41 -0
- package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
- package/src/components/icons-v2-generated/users/.index.md +45 -0
- package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
- package/src/components/layout/.article-detail-layout.md +43 -0
- package/src/components/layout/.back-button.md +40 -0
- package/src/components/layout/.list-page-layout.md +35 -26
- package/src/components/layout/.page-container.md +27 -38
- package/src/components/layout/.page-layout.md +50 -0
- package/src/components/layout/.title-block.md +42 -0
- package/src/components/loading/.card-skeleton.md +38 -29
- package/src/components/loading/.device-card-skeleton.md +29 -25
- package/src/components/loading/.index.md +39 -46
- package/src/components/loading/.margin-report-skeleton.md +45 -34
- package/src/components/loading/.organization-card-skeleton.md +39 -44
- package/src/components/loading/.page-layout-skeleton.md +34 -45
- package/src/components/loading/.unified-skeleton.md +62 -36
- package/src/components/navigation/.app-header.md +40 -29
- package/src/components/navigation/.app-layout.md +25 -26
- package/src/components/navigation/.header-global-search.md +34 -37
- package/src/components/navigation/.header-organization-filter.md +23 -22
- package/src/components/navigation/.header.md +31 -35
- package/src/components/navigation/.mobile-burger-menu.md +39 -47
- package/src/components/navigation/.mobile-nav-panel.md +51 -32
- package/src/components/navigation/.navigation-sidebar-header.md +36 -0
- package/src/components/navigation/.navigation-sidebar-item.md +45 -0
- package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
- package/src/components/navigation/.navigation-sidebar.md +33 -34
- package/src/components/navigation/.sliding-sidebar.md +52 -41
- package/src/components/navigation/.sticky-section-nav.md +56 -48
- package/src/components/platform/.ScriptArguments.md +39 -25
- package/src/components/platform/.ScriptInfoSection.md +30 -26
- package/src/components/platform/.ShellTypeBadge.md +18 -13
- package/src/components/platform/.SoftwareInfo.md +23 -27
- package/src/components/platform/.SoftwareSourceBadge.md +28 -19
- package/src/components/platform/.ToolBadge.md +25 -26
- package/src/components/providers/.theme-provider.md +52 -0
- package/src/components/shared/delivery/.delivery-lists.md +39 -0
- package/src/components/shared/delivery/.delivery-row.md +41 -0
- package/src/components/shared/delivery/.delivery-table.md +41 -0
- package/src/components/shared/delivery/.index.md +38 -0
- package/src/components/shared/dev-section/.dev-card-row.md +60 -0
- package/src/components/shared/dev-section/.dev-section-page.md +48 -0
- package/src/components/shared/dev-section/.dev-section-view.md +43 -0
- package/src/components/shared/dev-section/.index.md +38 -0
- package/src/components/shared/legal-document/.index.md +40 -0
- package/src/components/shared/legal-document/.legal-document-page.md +50 -0
- package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
- package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
- package/src/components/shared/product-release/.index.md +28 -30
- package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
- package/src/components/shared/product-release/.product-release-card.md +45 -27
- package/src/components/shared/product-release/.release-detail-page.md +23 -24
- package/src/components/shared/roadmap/.index.md +37 -0
- package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
- package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
- package/src/components/tickets/.help-center-card.md +51 -0
- package/src/components/tickets/.help-center-create-form.md +38 -0
- package/src/components/tickets/.help-center-list.md +40 -0
- package/src/components/tickets/.index.md +65 -0
- package/src/components/tickets/.ticket-center.md +51 -0
- package/src/components/tickets/.ticket-detail-drawer.md +48 -0
- package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
- package/src/components/tickets/.ticket-open-form.md +50 -0
- package/src/components/tickets/.ticket-row.md +30 -0
- package/src/components/tickets/.types.md +57 -0
- package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
- package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
- package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
- package/src/components/ui/.actions-menu.md +66 -41
- package/src/components/ui/.alert-dialog.md +29 -26
- package/src/components/ui/.allowed-domains-input.md +29 -21
- package/src/components/ui/.assignee-dropdown.md +45 -0
- package/src/components/ui/.autocomplete.md +47 -41
- package/src/components/ui/.benefit-card.md +51 -36
- package/src/components/ui/.brand-association-card.md +30 -27
- package/src/components/ui/.breadcrumb.md +17 -15
- package/src/components/ui/.checkbox-block.md +39 -35
- package/src/components/ui/.checkbox-with-description.md +23 -16
- package/src/components/ui/.checkbox.md +31 -23
- package/src/components/ui/.circular-progress.md +49 -19
- package/src/components/ui/.content-loader.md +32 -20
- package/src/components/ui/.cursor-pagination.md +41 -52
- package/src/components/ui/.dashboard-info-card.md +33 -26
- package/src/components/ui/.date-picker.md +27 -25
- package/src/components/ui/.device-card-compact.md +28 -29
- package/src/components/ui/.device-card.md +27 -27
- package/src/components/ui/.dialog.md +25 -16
- package/src/components/ui/.drawer.md +86 -0
- package/src/components/ui/.dropdown-button.md +45 -0
- package/src/components/ui/.entity-image.md +46 -0
- package/src/components/ui/.error-state.md +41 -28
- package/src/components/ui/.feature-card.md +35 -31
- package/src/components/ui/.feature-list.md +48 -0
- package/src/components/ui/.field-wrapper.md +47 -0
- package/src/components/ui/.file-upload.md +42 -0
- package/src/components/ui/.filter-checkbox-item.md +43 -0
- package/src/components/ui/.filter-list.md +57 -0
- package/src/components/ui/.filter-modal.md +59 -0
- package/src/components/ui/.floating-tooltip.md +43 -26
- package/src/components/ui/.hidden-tags-popup.md +49 -0
- package/src/components/ui/.hover-dropdown.md +54 -0
- package/src/components/ui/.image-gallery-modal.md +41 -34
- package/src/components/ui/.image-uploader.md +53 -0
- package/src/components/ui/.index.md +40 -34
- package/src/components/ui/.info-card.md +31 -31
- package/src/components/ui/.info-row.md +31 -27
- package/src/components/ui/.input-trigger.md +44 -0
- package/src/components/ui/.input.md +37 -31
- package/src/components/ui/.markdown-editor.md +57 -0
- package/src/components/ui/.modal-v2.md +51 -0
- package/src/components/ui/.modal.md +32 -31
- package/src/components/ui/.more-actions-menu.md +45 -38
- package/src/components/ui/.organization-card.md +31 -37
- package/src/components/ui/.page-actions.md +44 -54
- package/src/components/ui/.phone-input.md +54 -0
- package/src/components/ui/.progress-bar.md +35 -27
- package/src/components/ui/.radio-group.md +39 -27
- package/src/components/ui/.release-changelog-section.md +34 -34
- package/src/components/ui/.search-input.md +48 -0
- package/src/components/ui/.select.md +54 -34
- package/src/components/ui/.service-card.md +42 -40
- package/src/components/ui/.sheet.md +27 -18
- package/src/components/ui/.simple-markdown-renderer.md +29 -31
- package/src/components/ui/.sort-column-item.md +42 -0
- package/src/components/ui/.square-avatar.md +34 -24
- package/src/components/ui/.status-badge.md +26 -38
- package/src/components/ui/.switch.md +22 -35
- package/src/components/ui/.tab-navigation.md +56 -53
- package/src/components/ui/.tab-selector.md +40 -0
- package/src/components/ui/.tag-key-value-filter.md +56 -0
- package/src/components/ui/.tag-search-input.md +53 -0
- package/src/components/ui/.tag.md +49 -31
- package/src/components/ui/.tags-manager.md +60 -0
- package/src/components/ui/.textarea.md +44 -34
- package/src/components/ui/.ticket-attachments-list.md +45 -0
- package/src/components/ui/.ticket-detail-section.md +29 -0
- package/src/components/ui/.ticket-info-section.md +56 -0
- package/src/components/ui/.ticket-note-card.md +53 -0
- package/src/components/ui/.ticket-notes-section.md +54 -0
- package/src/components/ui/.ticket-status-tag.md +49 -0
- package/src/components/ui/.title-content-block.md +25 -26
- package/src/components/ui/.toaster.md +40 -28
- package/src/components/ui/.tooltip.md +22 -11
- package/src/components/ui/.truncate-text.md +39 -0
- package/src/components/ui/button/.button-styles.md +35 -0
- package/src/components/ui/button/.button.md +53 -0
- package/src/components/ui/button/.split-button.md +48 -0
- package/src/components/ui/data-table/.data-table-body.md +48 -0
- package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
- package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
- package/src/components/ui/data-table/.data-table-empty.md +43 -0
- package/src/components/ui/data-table/.data-table-header.md +55 -0
- package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
- package/src/components/ui/data-table/.data-table-row-count.md +43 -0
- package/src/components/ui/data-table/.data-table-row.md +47 -0
- package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
- package/src/components/ui/data-table/.data-table.md +47 -0
- package/src/components/ui/data-table/.index.md +55 -0
- package/src/components/ui/data-table/.types.md +54 -0
- package/src/components/ui/data-table/.use-data-table.md +45 -0
- package/src/components/ui/data-table/.utils.md +38 -0
- package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
- package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
- package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
- package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
- package/src/components/ui/file-manager/.file-manager.md +35 -31
- package/src/components/ui/query-report-table/.index.md +43 -0
- package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
- package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
- package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
- package/src/components/ui/query-report-table/.query-report-table.md +47 -0
- package/src/components/ui/query-report-table/.types.md +41 -0
- package/src/components/ui/query-report-table/.utils.md +35 -0
- package/src/components/ui/table/.index.md +27 -48
- package/src/components/ui/table/.table-cell.md +18 -27
- package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
- package/src/components/ui/table/.table-description-cell.md +24 -14
- package/src/components/ui/table/.table-empty-state.md +21 -22
- package/src/components/ui/table/.table-header.md +25 -40
- package/src/components/ui/table/.table-row.md +22 -40
- package/src/components/ui/table/.table-skeleton.md +33 -26
- package/src/components/ui/table/.table-timestamp-cell.md +26 -16
- package/src/components/ui/table/.table.md +39 -59
- package/src/components/ui/table/.types.md +44 -36
- package/src/components/ui/table/.utils.md +18 -20
- package/src/contexts/.chat-runtime-context.md +54 -0
- package/src/contexts/.endpoints-runtime-context.md +58 -0
- package/src/contexts/.index.md +53 -0
- package/src/contexts/.use-outer-or-default.md +36 -0
- package/src/embed-shims/.index.md +45 -0
- package/src/embed-shims/.next-dynamic.md +43 -0
- package/src/embed-shims/.next-image.md +45 -0
- package/src/embed-shims/.next-link.md +59 -0
- package/src/embed-shims/.next-navigation.md +59 -0
- package/src/hooks/.index.md +34 -29
- package/src/hooks/.use-access-code-integration.md +49 -0
- package/src/hooks/.use-contact-submission.md +37 -26
- package/src/hooks/.use-copy-to-clipboard.md +42 -0
- package/src/hooks/.use-near-viewport.md +44 -0
- package/src/hooks/.use-og-placeholder.md +51 -0
- package/src/hooks/.use-toast.md +36 -35
- package/src/hooks/state/.use-api-params.md +29 -46
- package/src/hooks/state/.use-query-params.md +37 -33
- package/src/hooks/ui/.index.md +33 -32
- package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
- package/src/hooks/ui/.use-image-edge-color.md +42 -0
- package/src/hooks/ui/.use-media-query.md +33 -25
- package/src/hooks/ui/.use-search.md +51 -0
- package/src/nats/.nats.md +49 -28
- package/src/schemas/.contact-schema.md +45 -0
- package/src/stories/.AnnouncementBar.stories.md +45 -0
- package/src/stories/.AppLayout.stories.md +20 -21
- package/src/stories/.Autocomplete.stories.md +48 -34
- package/src/stories/.Board.stories.md +35 -0
- package/src/stories/.Button.stories.md +36 -33
- package/src/stories/.ChatTicketList.stories.md +33 -0
- package/src/stories/.CheckboxBlock.stories.md +40 -28
- package/src/stories/.ContentLoader.stories.md +47 -0
- package/src/stories/.DashboardInfoCard.stories.md +57 -0
- package/src/stories/.DataTable.stories.md +41 -0
- package/src/stories/.DatePicker.stories.md +66 -52
- package/src/stories/.DeviceCard.stories.md +41 -40
- package/src/stories/.DeviceCardCompact.stories.md +41 -0
- package/src/stories/.DotsLoaderIcon.stories.md +36 -0
- package/src/stories/.Drawer.stories.md +58 -0
- package/src/stories/.EmbeddableChat.stories.md +41 -0
- package/src/stories/.FileManager.stories.md +41 -0
- package/src/stories/.FileManagerActionBar.stories.md +38 -0
- package/src/stories/.FileUpload.stories.md +53 -0
- package/src/stories/.FilterList.stories.md +54 -0
- package/src/stories/.FilterModal.stories.md +72 -0
- package/src/stories/.FiltersDropdown.stories.md +57 -0
- package/src/stories/.Header.stories.md +48 -0
- package/src/stories/.ImageUploader.stories.md +49 -0
- package/src/stories/.InfoCard.stories.md +54 -0
- package/src/stories/.Input.stories.md +48 -30
- package/src/stories/.ListPageLayout.stories.md +56 -43
- package/src/stories/.MingoOnboardingCard.stories.md +42 -0
- package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
- package/src/stories/.Modal.stories.md +40 -31
- package/src/stories/.NotificationDrawer.stories.md +55 -0
- package/src/stories/.OnboardingStepCard.stories.md +41 -0
- package/src/stories/.OrganizationCard.stories.md +61 -0
- package/src/stories/.PageActions.stories.md +52 -49
- package/src/stories/.PageContainer.stories.md +41 -35
- package/src/stories/.PageLayout.stories.md +60 -0
- package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
- package/src/stories/.PhoneInput.stories.md +53 -0
- package/src/stories/.QueryReportTable.stories.md +44 -0
- package/src/stories/.RadioGroup.stories.md +46 -0
- package/src/stories/.RadioGroupBlock.stories.md +45 -0
- package/src/stories/.Select.stories.md +29 -15
- package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
- package/src/stories/.SplitButton.stories.md +62 -0
- package/src/stories/.TabNavigation.stories.md +47 -38
- package/src/stories/.TabSelector.stories.md +65 -0
- package/src/stories/.Table.stories.md +38 -46
- package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
- package/src/stories/.Tag.stories.md +43 -32
- package/src/stories/.TagKeyValueFilter.stories.md +44 -0
- package/src/stories/.TagSearchInput.stories.md +61 -0
- package/src/stories/.Textarea.stories.md +49 -26
- package/src/stories/.Theme.stories.md +41 -0
- package/src/stories/.TicketAttachmentsList.stories.md +39 -0
- package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
- package/src/stories/.TicketInfoSection.stories.md +40 -0
- package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
- package/src/stories/.TicketNotesSection.stories.md +50 -0
- package/src/stories/.Toaster.stories.md +40 -0
- package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
- package/src/stories/.Tooltip.stories.md +41 -0
- package/src/stories/.UserSummary.stories.md +41 -0
- package/src/stories/.WaitlistForm.stories.md +42 -0
- package/src/stories/BlogCard.stories.tsx +61 -0
- package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
- package/src/stories/CaseStudyCard.stories.tsx +42 -0
- package/src/stories/ChatContainer.stories.tsx +186 -0
- package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
- package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
- package/src/stories/DataRoomDocCard.stories.tsx +52 -0
- package/src/stories/GenericEntityCard.stories.tsx +66 -0
- package/src/stories/GitHubActivityCard.stories.tsx +61 -0
- package/src/stories/HubspotTicketCard.stories.tsx +98 -0
- package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
- package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
- package/src/stories/ProductReleaseCard.stories.tsx +61 -0
- package/src/stories/ProgramCard.stories.tsx +79 -0
- package/src/stories/RoadmapCard.stories.tsx +75 -0
- package/src/stories/SlackMessageCard.stories.tsx +41 -0
- package/src/stories/__fixtures__/chat-cards.ts +604 -0
- package/src/types/.blog.md +53 -29
- package/src/types/.case-study.md +44 -27
- package/src/types/.customer-interview.md +66 -44
- package/src/types/.delivery.md +40 -0
- package/src/types/.employee.md +24 -30
- package/src/types/.index.md +33 -47
- package/src/types/.marketing.md +49 -44
- package/src/types/.navigation.md +33 -25
- package/src/types/.os.types.md +32 -27
- package/src/types/.platform.md +31 -28
- package/src/types/.product-release.md +65 -38
- package/src/types/.supabase.md +37 -29
- package/src/types/.team.md +41 -33
- package/src/types/.video-processing.md +54 -0
- package/src/types/.waitlist.md +40 -36
- package/src/utils/.access-code-client.md +37 -36
- package/src/utils/.cn.md +31 -23
- package/src/utils/.color-analysis.md +35 -0
- package/src/utils/.country-phone-utils.md +39 -0
- package/src/utils/.date-formatters.md +19 -18
- package/src/utils/.embed-authed-fetch.md +39 -0
- package/src/utils/.embed-proxy-auth-storage.md +38 -0
- package/src/utils/.fetch-priority.md +41 -0
- package/src/utils/.format.md +74 -25
- package/src/utils/.generic-domain-utils.md +42 -0
- package/src/utils/.image-proxy.md +59 -23
- package/src/utils/.index.md +42 -49
- package/src/utils/.local-storage-adapter.md +50 -0
- package/src/utils/.ods-color-utils.md +55 -38
- package/src/utils/.platform-config.md +45 -25
- package/src/utils/.scroll-into-view.md +40 -0
- package/src/utils/.source-icons.md +53 -0
- package/src/utils/.sse-decision-frame.md +46 -0
- package/src/utils/dev-sections/.index.md +34 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
- package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
- package/dist/chunk-ZTJVRSN5.js.map +0 -1
- package/src/components/.card.md +0 -42
- package/src/components/.contact-button.md +0 -30
- package/src/components/.drawer.md +0 -46
- package/src/components/.fixed-layout-container.md +0 -47
- package/src/components/.footer-waitlist-card.md +0 -29
- package/src/components/.join-waitlist-cta.md +0 -29
- package/src/components/.sheet.md +0 -47
- package/src/components/.sliding-panel.md +0 -48
- package/src/components/.tooltip.md +0 -48
- package/src/components/.use-mobile.md +0 -42
- package/src/components/.vendor-compact-card.md +0 -66
- package/src/components/.x-button.md +0 -42
- package/src/components/features/.github-repo-button.md +0 -40
- package/src/components/features/.organization-icon.md +0 -47
- package/src/components/features/.organization-selector.md +0 -45
- package/src/components/icons/.fleet-icon.md +0 -39
- package/src/components/icons/.meshcentral-icon.md +0 -35
- package/src/components/icons/.refresh-icon.md +0 -34
- package/src/components/icons/.tactical-icon.md +0 -35
- package/src/components/ui/.button.md +0 -69
- package/src/components/ui/.log-table-row.md +0 -47
- package/src/components/ui/.selectable-device-card.md +0 -46
- package/src/hooks/.api-hooks-stub.md +0 -45
- package/src/hooks/api/.use-product-releases.md +0 -53
- package/src/stories/.OrganizationSelector.stories.md +0 -42
- package/src/stories/.SelectableDeviceCard.stories.md +0 -30
- package/src/utils/.lite-youtube-embed-stub.md +0 -37
- package/src/utils/.lite-youtube-embed.md +0 -33
- /package/dist/{chunk-3JWIJJ44.js.map → chunk-5OWDOFKK.js.map} +0 -0
- /package/dist/{chunk-IK2X5YJU.js.map → chunk-HWY35EAK.js.map} +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: 9d75df8f934797fae402329b05b9e8c2 -->
|
|
2
|
+
Provides a React context for sharing API endpoint URLs across the component tree, enabling host applications (including reverse-proxy deployments) to override canonical paths consumed by `oss-lib` components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `EndpointsRuntime` | `interface` | Shape of the runtime value: `announcementsUrl`, `accessCode.validateUrl`, `accessCode.consumeUrl`, `contactUrl` |
|
|
9
|
+
| `EndpointsRuntimeContext` | `Context<EndpointsRuntime \| null>` | Raw React context — use directly only when mounting a `Provider` |
|
|
10
|
+
| `useEndpointsRuntime()` | hook | Returns `null` when no provider is mounted; safe for optional consumers |
|
|
11
|
+
| `useRequiredEndpointsRuntime()` | hook | Throws a descriptive error when no provider is mounted; use for form submissions and code validation |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Hub root — canonical paths
|
|
17
|
+
<EndpointsRuntimeContext.Provider
|
|
18
|
+
value={React.useMemo(() => ({
|
|
19
|
+
announcementsUrl: '/api/announcements/active',
|
|
20
|
+
accessCode: {
|
|
21
|
+
validateUrl: '/api/access-codes/validate',
|
|
22
|
+
consumeUrl: '/api/access-codes/consume',
|
|
23
|
+
},
|
|
24
|
+
contactUrl: '/api/contact',
|
|
25
|
+
}), [])}
|
|
26
|
+
>
|
|
27
|
+
<App />
|
|
28
|
+
</EndpointsRuntimeContext.Provider>
|
|
29
|
+
|
|
30
|
+
// Embedded app — proxied paths (e.g. user1.openframe.ai)
|
|
31
|
+
<EndpointsRuntimeContext.Provider
|
|
32
|
+
value={React.useMemo(() => ({
|
|
33
|
+
announcementsUrl: '/api/mingo-guide/announcements/active',
|
|
34
|
+
accessCode: {
|
|
35
|
+
validateUrl: '/api/mingo-guide/access-codes/validate',
|
|
36
|
+
consumeUrl: '/api/mingo-guide/access-codes/consume',
|
|
37
|
+
},
|
|
38
|
+
contactUrl: '/api/mingo-guide/contact',
|
|
39
|
+
}), [])}
|
|
40
|
+
>
|
|
41
|
+
<EmbeddedApp />
|
|
42
|
+
</EndpointsRuntimeContext.Provider>
|
|
43
|
+
|
|
44
|
+
// Optional consumer (silently skips when outside provider)
|
|
45
|
+
const endpoints = useEndpointsRuntime()
|
|
46
|
+
if (endpoints) poll(endpoints.announcementsUrl)
|
|
47
|
+
|
|
48
|
+
// Required consumer (throws outside provider)
|
|
49
|
+
const { contactUrl } = useRequiredEndpointsRuntime()
|
|
50
|
+
await fetch(contactUrl, { method: 'POST', body })
|
|
51
|
+
|
|
52
|
+
// Tests / Storybook
|
|
53
|
+
<EndpointsRuntimeContext.Provider value={mockedEndpoints}>
|
|
54
|
+
<ComponentUnderTest />
|
|
55
|
+
</EndpointsRuntimeContext.Provider>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Embedders:** always `useMemo` the value object passed to the provider. A new object reference on every render invalidates downstream `useEffect` dependency arrays and triggers unnecessary re-fetches.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 16840d639c023ac4c1efa4df208dc4be -->
|
|
2
|
+
Barrel export for runtime React contexts used by embeddable OSS-lib components, enforcing a client-only bundle boundary to prevent SSR crashes.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Source | Description |
|
|
7
|
+
|--------|--------|-------------|
|
|
8
|
+
| `EndpointsRuntimeContext` | `endpoints-runtime-context` | React context object for endpoints runtime |
|
|
9
|
+
| `useEndpointsRuntime` | `endpoints-runtime-context` | Hook returning the current endpoints runtime (nullable) |
|
|
10
|
+
| `useRequiredEndpointsRuntime` | `endpoints-runtime-context` | Hook returning the endpoints runtime, throwing if absent |
|
|
11
|
+
| `EndpointsRuntime` | `endpoints-runtime-context` | TypeScript type for the endpoints runtime shape |
|
|
12
|
+
| `ChatRuntimeContext` | `chat-runtime-context` | React context object for chat runtime |
|
|
13
|
+
| `useChatRuntime` | `chat-runtime-context` | Hook returning the current chat runtime (nullable) |
|
|
14
|
+
| `useRequiredChatRuntime` | `chat-runtime-context` | Hook returning the chat runtime, throwing if absent |
|
|
15
|
+
| `ChatRuntime` | `chat-runtime-context` | TypeScript type for the chat runtime shape |
|
|
16
|
+
| `useOuterOrDefault` | `use-outer-or-default` | Utility hook for resolving outer context or falling back to a default |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import {
|
|
22
|
+
EndpointsRuntimeContext,
|
|
23
|
+
useRequiredEndpointsRuntime,
|
|
24
|
+
useChatRuntime,
|
|
25
|
+
type ChatRuntime,
|
|
26
|
+
} from '@your-org/oss-lib/contexts'
|
|
27
|
+
|
|
28
|
+
// Provide a runtime at the tree root
|
|
29
|
+
function AppRoot() {
|
|
30
|
+
return (
|
|
31
|
+
<EndpointsRuntimeContext.Provider value={myEndpointsRuntime}>
|
|
32
|
+
<ChatPanel />
|
|
33
|
+
</EndpointsRuntimeContext.Provider>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Consume in a child component (must be a Client Component)
|
|
38
|
+
function ChatPanel() {
|
|
39
|
+
const endpoints = useRequiredEndpointsRuntime() // throws if missing
|
|
40
|
+
const chat: ChatRuntime | null = useChatRuntime() // null-safe
|
|
41
|
+
// ...
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Bundle-Split Rules
|
|
46
|
+
|
|
47
|
+
> **Never import from `src/contexts/`** inside server-bundled modules (`utils/index.ts` and its transitive exports). All contexts call `createContext()` at module top-level, which crashes SSR. See `utils/access-code-client.ts` vs `hooks/use-access-code-integration.ts` as the canonical split pattern.
|
|
48
|
+
|
|
49
|
+
| Code type | Goes in |
|
|
50
|
+
|-----------|---------|
|
|
51
|
+
| Pure functions with runtime as args | `utils/` |
|
|
52
|
+
| Hooks that read runtime via `useContext` | `hooks/` (with `'use client'`) |
|
|
53
|
+
| Context objects / providers | `contexts/` (client bundle only) |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- source-hash: d7ee3e1b5c0c5cbc9cc3e58aa144f151 -->
|
|
2
|
+
Resolves a React context value by preferring an outer provider's value when present, falling back to a memoized factory default when no outer provider exists.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useOuterOrDefault<T>(context, factory, deps)`
|
|
7
|
+
|
|
8
|
+
A generic hook that enables "outer-override" provider patterns used across hub and embedder providers.
|
|
9
|
+
|
|
10
|
+
| Parameter | Type | Description |
|
|
11
|
+
|-----------|------|-------------|
|
|
12
|
+
| `context` | `Context<T \| null>` | The React context to read from |
|
|
13
|
+
| `factory` | `() => T` | Produces the default value when no outer provider is mounted |
|
|
14
|
+
| `deps` | `ReadonlyArray<unknown>` | Memoization dependencies for `factory` (defaults to `[]`) |
|
|
15
|
+
|
|
16
|
+
**Returns:** The outer context value if available, otherwise the memoized factory result.
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// Stable default (factory runs once — safe for constant/module-scope values)
|
|
22
|
+
const runtime = useOuterOrDefault(ChatRuntimeContext, () => createDefaultRuntime())
|
|
23
|
+
|
|
24
|
+
// Reactive default (factory re-runs when callbacks change)
|
|
25
|
+
const runtime = useOuterOrDefault(
|
|
26
|
+
ChatRuntimeContext,
|
|
27
|
+
() => createChatRuntime({ navigate, decideNewTab }),
|
|
28
|
+
[navigate, decideNewTab], // must be stable refs (e.g. from useCallback)
|
|
29
|
+
)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Key Behaviors
|
|
33
|
+
|
|
34
|
+
- **Tree shape stability** — the same provider element renders at the same position regardless of whether an outer provider is mounted, preventing unnecessary consumer remounts.
|
|
35
|
+
- **Reference stability** — returns the same object reference across renders to avoid breaking downstream `useMemo` consumers. With `deps: []` this is trivially guaranteed; with reactive deps, callers must stabilize deps via `useCallback`.
|
|
36
|
+
- **Outer wins** — if an embedder mounts a matching provider above the hub provider, that outer value takes precedence unconditionally.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: a9946becafacc3106b896d97c9d39009 -->
|
|
2
|
+
Barrel export file for the `embed-shims/` module, providing environment-aware shims for Next.js primitives (`Image`, `Link`, `dynamic`, and navigation hooks) that work in any host environment (Vite, CRA, esbuild) while allowing full Next.js optimization via opt-in registration.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Source | Description |
|
|
7
|
+
|--------|--------|-------------|
|
|
8
|
+
| `Image` / `registerImage` | `./next-image` | Next.js Image Optimization shim |
|
|
9
|
+
| `Link` / `registerLink` | `./next-link` | Client-router prefetching shim |
|
|
10
|
+
| `dynamic` / `registerDynamic` | `./next-dynamic` | Dynamic import shim |
|
|
11
|
+
| `useRouter`, `usePathname`, `useSearchParams`, `useParams` | `./next-navigation` | Navigation hooks shim |
|
|
12
|
+
| `redirect`, `permanentRedirect`, `notFound`, `RedirectType` | `./next-navigation` | Navigation utilities shim |
|
|
13
|
+
| `registerNavigation` / `NavigationImpl` | `./next-navigation` | Navigation registration and type |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
**Default (non-Next host — Vite, CRA, esbuild):**
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { Link, Image, dynamic, useRouter } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
21
|
+
|
|
22
|
+
// Works out of the box with plain HTML equivalents — no config needed
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Next.js host — register real implementations once at app init:**
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { registerImage, registerLink, registerDynamic, registerNavigation } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
29
|
+
import NextImage from 'next/image'
|
|
30
|
+
import NextLink from 'next/link'
|
|
31
|
+
import * as NextNavigation from 'next/navigation'
|
|
32
|
+
|
|
33
|
+
registerImage(NextImage)
|
|
34
|
+
registerLink(NextLink)
|
|
35
|
+
registerDynamic(/* next/dynamic */)
|
|
36
|
+
registerNavigation(NextNavigation)
|
|
37
|
+
// All lib components now delegate to real Next.js primitives
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Per-shim import:**
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import Link from '@flamingo-stack/openframe-frontend-core/embed-shims/next-link'
|
|
44
|
+
import Image from '@flamingo-stack/openframe-frontend-core/embed-shims/next-image'
|
|
45
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: d56fe778d5cc9e99389a419b59c5dcc9 -->
|
|
2
|
+
Environment-aware lazy loader shim that defaults to `React.lazy` for non-Next.js hosts (Vite, esbuild, CRA) while supporting opt-in delegation to the real `next/dynamic` in Next.js environments.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `dynamic` | Default export | Drop-in lazy loader; delegates to `React.lazy` or registered `next/dynamic` |
|
|
9
|
+
| `registerDynamic` | Named export | One-time registration to swap in the real `next/dynamic` at app init |
|
|
10
|
+
| `DynamicOptions` | Interface | Subset of `next/dynamic` options (`loading`, `ssr`, `suspense`) |
|
|
11
|
+
| `DynamicLoader<P>` | Type | Loader function returning `{ default: ComponentType }` or bare component |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
**Non-Next.js host (Vite/CRA) — no setup required:**
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import dynamic from '@flamingo-stack/openframe-frontend-core/next-dynamic'
|
|
19
|
+
|
|
20
|
+
// Callers must be wrapped in a <Suspense> boundary
|
|
21
|
+
const HeavyWidget = dynamic(() => import('./HeavyWidget'))
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Next.js host — register once at app init:**
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
// lib/embed-shim-registration.ts
|
|
28
|
+
import nextDynamic from 'next/dynamic'
|
|
29
|
+
import { registerDynamic } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
30
|
+
|
|
31
|
+
registerDynamic(nextDynamic)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**With options (Next.js only — ignored on React.lazy fallback):**
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
const Chart = dynamic(() => import('./Chart'), {
|
|
38
|
+
ssr: false,
|
|
39
|
+
loading: ({ isLoading }) => isLoading ? <Spinner /> : null,
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> **Note:** `ssr` and `loading` options are silently ignored when running on the `React.lazy` fallback. Consumers relying on those options must call `registerDynamic` first. All call sites must have a `<Suspense>` boundary in the component tree.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 38660f97f3dee9cba42a817ae6b6490d -->
|
|
2
|
+
Environment-aware `next/image` shim that renders a plain `<img>` by default, delegating to the real `next/image` component only when explicitly registered — allowing library components to work across Next.js, Vite, CRA, and esbuild hosts without aliasing.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Image` | `React.ForwardRefExoticComponent` | Default export; the shim component. Renders `<img>` or delegates to registered `next/image` |
|
|
9
|
+
| `registerImage` | `(component: ComponentType) => void` | Registers the real `next/image` implementation; call once at app init in Next.js hosts |
|
|
10
|
+
| `ImageProps` | `type` | Extended image props supporting both HTML `<img>` attributes and Next.js-specific props |
|
|
11
|
+
|
|
12
|
+
### `ImageProps` Next.js-specific fields
|
|
13
|
+
|
|
14
|
+
`fill`, `sizes`, `quality`, `priority`, `placeholder`, `blurDataURL`, `unoptimized`, `loader`, `onLoadingComplete`
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
**Non-Next host (Vite/CRA)** — no setup required:
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import Image from './next-image'
|
|
22
|
+
|
|
23
|
+
// Renders a plain <img> automatically
|
|
24
|
+
<Image src="/hero.png" alt="Hero" width={800} height={400} />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Next.js host** — register once at app init:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// lib/embed-shim-registration.ts
|
|
31
|
+
import NextImage from 'next/image'
|
|
32
|
+
import { registerImage } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
33
|
+
|
|
34
|
+
registerImage(NextImage) // All shim instances now delegate to next/image
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**`fill` mode fallback behavior:**
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// When unregistered, `fill` maps to absolute positioning via inline style
|
|
41
|
+
<Image src="/bg.png" alt="Background" fill />
|
|
42
|
+
// Renders: <img style="position:absolute; inset:0; width:100%; height:100%; object-fit:cover" />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> **Note:** Next.js-only props (`priority`, `placeholder`, `blurDataURL`, `loader`, etc.) are silently dropped on the plain `<img>` fallback path — no runtime errors in non-Next environments.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<!-- source-hash: 0eb3ce12c588e5ff9c30c2f3550ce64f -->
|
|
2
|
+
Environment-aware `next/link` shim that renders a plain `<a>` tag by default, enabling use in non-Next.js hosts (Vite, CRA, esbuild), while allowing full `next/link` functionality via opt-in registration.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Link` | `ForwardRefExoticComponent` | Default export — the shim component itself |
|
|
9
|
+
| `registerLink` | `(component: ComponentType) => void` | Registers the real `next/link` at app init |
|
|
10
|
+
| `LinkProps` | `type` | Extended anchor props including Next.js-specific options (`prefetch`, `replace`, `scroll`, `locale`, etc.) |
|
|
11
|
+
|
|
12
|
+
## Behavior
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
graph TD
|
|
16
|
+
A["Link shim renders"] --> B{"impl registered?"}
|
|
17
|
+
B -- Yes --> C["Delegate to real next/link\n(all props intact)"]
|
|
18
|
+
B -- No --> D["Render plain anchor tag\n(Next-only props dropped)"]
|
|
19
|
+
D --> E["UrlObject href → pathname string"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
**Non-Next.js host (default fallback — no setup needed):**
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import Link from './next-link'
|
|
28
|
+
|
|
29
|
+
// Renders a plain <a href="/about">
|
|
30
|
+
<Link href="/about">About</Link>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Next.js host — register once at app init:**
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// lib/embed-shim-registration.ts
|
|
37
|
+
import NextLink from 'next/link'
|
|
38
|
+
import { registerLink } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
39
|
+
|
|
40
|
+
registerLink(NextLink)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**After registration — full Next.js routing features work:**
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import Link from './next-link'
|
|
47
|
+
|
|
48
|
+
// Delegates to real next/link with prefetch, replace, scroll, locale
|
|
49
|
+
<Link href="/dashboard" prefetch replace scroll={false} locale="en">
|
|
50
|
+
Dashboard
|
|
51
|
+
</Link>
|
|
52
|
+
|
|
53
|
+
// UrlObject href also supported
|
|
54
|
+
<Link href={{ pathname: '/user', query: { id: '42' } }}>
|
|
55
|
+
Profile
|
|
56
|
+
</Link>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
> **Note:** `registerLink` must be called exactly once before any shim renders. In the fallback path, Next.js-specific props (`prefetch`, `replace`, `scroll`, `shallow`, `locale`, etc.) are silently dropped to keep the plain `<a>` clean.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<!-- source-hash: 6464e6b8e81567378d067bf37a01cd1c -->
|
|
2
|
+
Environment-aware shim for `next/navigation` app-router hooks. Provides lightweight `window.location`-backed stubs by default, with an opt-in registration mechanism for full Next.js router integration in host applications.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `registerNavigation(nav)`
|
|
7
|
+
Merges real `next/navigation` exports into the internal registry. Call once at app init in a Next.js host to enable full client-router integration.
|
|
8
|
+
|
|
9
|
+
### `NavigationImpl` (interface)
|
|
10
|
+
Describes the full set of registerable hooks: `useRouter`, `usePathname`, `useSearchParams`, `useParams`, `redirect`, `permanentRedirect`, `notFound`.
|
|
11
|
+
|
|
12
|
+
### Exported Hooks & Utilities
|
|
13
|
+
|
|
14
|
+
| Export | Stub Behavior |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `useRouter()` | `push`/`replace` → `window.location`; `back`/`forward` → `history`; `refresh` → `reload` |
|
|
17
|
+
| `usePathname()` | Returns `window.location.pathname`, popstate-subscribed |
|
|
18
|
+
| `useSearchParams()` | Returns `URLSearchParams` from `window.location.search`, popstate-subscribed |
|
|
19
|
+
| `useParams<T>()` | Returns `{}` — parse params from `usePathname()` manually |
|
|
20
|
+
| `redirect(url)` | `window.location.assign(url)` + throws |
|
|
21
|
+
| `permanentRedirect(url)` | `window.location.replace(url)` + throws |
|
|
22
|
+
| `notFound()` | Throws with shim message |
|
|
23
|
+
| `RedirectType` | Mirrors Next's enum (`push` / `replace`) |
|
|
24
|
+
| `ServerInsertedHTMLContext` | `null` stub — importable, non-functional |
|
|
25
|
+
|
|
26
|
+
## Usage Example
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
// In a Next.js host — lib/embed-shim-registration.ts
|
|
30
|
+
import {
|
|
31
|
+
useRouter, usePathname, useSearchParams,
|
|
32
|
+
useParams, redirect, permanentRedirect, notFound,
|
|
33
|
+
} from 'next/navigation'
|
|
34
|
+
import { registerNavigation } from '@flamingo-stack/openframe-frontend-core/embed-shims'
|
|
35
|
+
|
|
36
|
+
// Call ONCE at app init — partial registration is safe
|
|
37
|
+
registerNavigation({
|
|
38
|
+
useRouter,
|
|
39
|
+
usePathname,
|
|
40
|
+
useSearchParams,
|
|
41
|
+
useParams,
|
|
42
|
+
redirect,
|
|
43
|
+
permanentRedirect,
|
|
44
|
+
notFound,
|
|
45
|
+
})
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// In a lib component — works in both Next.js and standalone embed
|
|
50
|
+
import { usePathname, useSearchParams } from './next-navigation'
|
|
51
|
+
|
|
52
|
+
export function ActiveRoute() {
|
|
53
|
+
const pathname = usePathname()
|
|
54
|
+
const params = useSearchParams()
|
|
55
|
+
return <span>{pathname}?{params.toString()}</span>
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
> **Note:** The fallback stubs only react to `popstate` events. Programmatic `pushState`/`replaceState` calls will **not** trigger re-renders without a registered real router.
|
package/src/hooks/.index.md
CHANGED
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 23bacbbf103fe8e3ffb15ca1d779391b -->
|
|
2
|
+
Central barrel export file for the hooks package, re-exporting all custom React hooks organized by domain.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
6
|
+
| Export Module | Description |
|
|
7
|
+
|---------------|-------------|
|
|
8
|
+
| `./ui` | UI interaction hooks |
|
|
9
|
+
| `./platform` | Platform-specific hooks |
|
|
10
|
+
| `./use-toast` | Toast notification hook |
|
|
11
|
+
| `./use-contact-submission` | Contact form submission hook |
|
|
12
|
+
| `./use-quick-action-hint` | Quick action hint display hook |
|
|
13
|
+
| `./use-copy-to-clipboard` | Clipboard write hook |
|
|
14
|
+
| `./use-batch-images` | Authenticated batch image loading |
|
|
15
|
+
| `./use-authenticated-image` | Single authenticated image hook |
|
|
16
|
+
| `./state` | URL state management hooks |
|
|
17
|
+
| `./nats/use-nats-client` | NATS messaging client hook |
|
|
18
|
+
| `./use-near-viewport` | Shared IntersectionObserver lazy-mount primitive |
|
|
19
|
+
| `./use-access-code-integration` | Access code context integration (client-only) |
|
|
20
|
+
| `./use-og-placeholder` | OG placeholder URL builder hook |
|
|
19
21
|
|
|
20
22
|
## Usage Example
|
|
21
23
|
|
|
22
24
|
```typescript
|
|
25
|
+
// Import any hook directly from the hooks package root
|
|
23
26
|
import {
|
|
24
27
|
useToast,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
} from '
|
|
28
|
+
useCopyToClipboard,
|
|
29
|
+
useNatsClient,
|
|
30
|
+
useNearViewport,
|
|
31
|
+
useAccessCodeIntegration,
|
|
32
|
+
} from '@flamingo/hooks'
|
|
30
33
|
|
|
31
34
|
function MyComponent() {
|
|
32
|
-
const {
|
|
33
|
-
const {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// Use hooks for various application features
|
|
39
|
-
return <div>...</div>
|
|
35
|
+
const { toast } = useToast()
|
|
36
|
+
const { copy } = useCopyToClipboard()
|
|
37
|
+
const nats = useNatsClient()
|
|
38
|
+
const ref = useNearViewport()
|
|
39
|
+
|
|
40
|
+
return <div ref={ref}>...</div>
|
|
40
41
|
}
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
- `use-access-code-integration` is intentionally placed in `hooks/` rather than `utils/` to keep React context dependencies out of the server-safe utilities bundle.
|
|
47
|
+
- `use-near-viewport` uses a shared `IntersectionObserver` singleton to minimize DOM overhead across lazy-mounted components.
|
|
48
|
+
- Image hooks (`use-batch-images`, `use-authenticated-image`) handle auth token injection for protected media endpoints.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: 0cad99bc77f5a6b497a57ffae290c55d -->
|
|
2
|
+
React hook that binds access-code endpoint URLs from `EndpointsRuntimeContext` to the pure `access-code-client` utilities, exposing loading-state-aware wrappers for validating and consuming access codes without requiring callers to manage endpoint plumbing.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useAccessCodeIntegration()`
|
|
7
|
+
|
|
8
|
+
The sole export. Reads endpoints from `useRequiredEndpointsRuntime()` (throws if no provider is mounted) and returns:
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `validate` | `(email, code) => Promise` | Validates the code without consuming it |
|
|
13
|
+
| `consume` | `(email, code) => Promise` | Consumes the code without re-validating |
|
|
14
|
+
| `validateAndConsume` | `(email, code) => Promise` | One-step validate-then-consume |
|
|
15
|
+
| `isValidating` | `boolean` | A validate call is in flight |
|
|
16
|
+
| `isConsuming` | `boolean` | A consume call is in flight |
|
|
17
|
+
| `isProcessing` | `boolean` | Convenience alias: `isValidating \|\| isConsuming` |
|
|
18
|
+
|
|
19
|
+
> **Note:** The returned functions and object are **not memoized** — they are re-created each render. Wrap with `useCallback` / `useMemo` at the call site if stable identities are needed in effect dependency arrays.
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
const { validate, consume, validateAndConsume, isProcessing } =
|
|
25
|
+
useAccessCodeIntegration();
|
|
26
|
+
|
|
27
|
+
const handleRegistration = async (formData: RegistrationForm) => {
|
|
28
|
+
const result = await validate(formData.email, formData.accessCode);
|
|
29
|
+
|
|
30
|
+
if (!result.valid) {
|
|
31
|
+
setError(result.message);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const registration = await registerUser(formData);
|
|
36
|
+
|
|
37
|
+
if (registration.success) {
|
|
38
|
+
await consume(formData.email, formData.accessCode);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// Or as a single atomic operation:
|
|
43
|
+
const handleInviteFlow = async (email: string, code: string) => {
|
|
44
|
+
const result = await validateAndConsume(email, code);
|
|
45
|
+
if (!result.valid) setError(result.message);
|
|
46
|
+
};
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use `isProcessing` to disable submit buttons or show spinners during any in-flight operation, and `isValidating` / `isConsuming` independently when the UI distinguishes between the two phases.
|
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 76fefb8d1dd3113ac55a32017a2a8fe1 -->
|
|
2
|
+
React hook that manages contact form submission state, API communication, toast notifications, and post-submission routing for the `/api/contact` endpoint.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
6
|
+
### `ContactSubmissionOptions`
|
|
7
|
+
Configuration interface for hook behavior:
|
|
8
|
+
- `userId` — optional authenticated user identifier appended to the payload
|
|
9
|
+
- `successRedirectUrl` — destination after successful submission (supports absolute URLs and internal paths)
|
|
10
|
+
- `successToastMessage` — appends custom text to the default success toast
|
|
11
|
+
- `onSuccess` — optional callback fired after successful submission
|
|
12
|
+
|
|
13
|
+
### `ContactFormData`
|
|
14
|
+
Mirrors the `ContactBaseSchema` Zod contract on the server. Required fields are `name`, `email`, `helpCategory`, and `message`. Includes an index signature (`[key: string]: unknown`) so tracking metadata (`utm_*`, `rdt_cid`, `referrer_url`) and A/B variant fields pass through unchanged.
|
|
15
|
+
|
|
16
|
+
### `useContactSubmission(options)`
|
|
17
|
+
The exported hook. Pulls `contactUrl` from `useRequiredEndpointsRuntime` (throws if no provider is mounted), then returns:
|
|
18
|
+
|
|
19
|
+
| Return Value | Type | Description |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `submit` | `(formData: ContactFormData) => Promise<void>` | Sends POST request; shows toast on success or error |
|
|
22
|
+
| `isSubmitting` | `boolean` | True while the fetch is in-flight |
|
|
23
|
+
| `isSuccess` | `boolean` | True after a successful response |
|
|
24
|
+
| `setIsSuccess` | `Dispatch<SetStateAction<boolean>>` | Allows caller to manually reset success state |
|
|
25
|
+
|
|
26
|
+
Redirect logic waits 1500ms after `isSuccess` before navigating — using `window.location.href` for absolute URLs and `router.push` for relative paths.
|
|
11
27
|
|
|
12
28
|
## Usage Example
|
|
13
29
|
|
|
@@ -16,33 +32,28 @@ import { useContactSubmission } from './use-contact-submission';
|
|
|
16
32
|
|
|
17
33
|
function ContactForm() {
|
|
18
34
|
const { submit, isSubmitting, isSuccess } = useContactSubmission({
|
|
19
|
-
userId:
|
|
35
|
+
userId: currentUser?.id,
|
|
20
36
|
successRedirectUrl: '/thank-you',
|
|
21
|
-
successToastMessage: '
|
|
22
|
-
onSuccess: () =>
|
|
37
|
+
successToastMessage: 'Our team will respond within 24 hours.',
|
|
38
|
+
onSuccess: () => analytics.track('contact_submitted'),
|
|
23
39
|
});
|
|
24
40
|
|
|
25
41
|
const handleSubmit = async (e: React.FormEvent) => {
|
|
26
42
|
e.preventDefault();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
await submit(formData);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
// Handle error if needed
|
|
41
|
-
}
|
|
43
|
+
await submit({
|
|
44
|
+
name: 'Jane Smith',
|
|
45
|
+
email: 'jane@acme.com',
|
|
46
|
+
helpCategory: 'billing',
|
|
47
|
+
message: 'I have a question about my invoice.',
|
|
48
|
+
// Tracking fields forwarded transparently
|
|
49
|
+
utm_source: 'homepage',
|
|
50
|
+
rdt_cid: 'abc123',
|
|
51
|
+
});
|
|
42
52
|
};
|
|
43
53
|
|
|
44
54
|
return (
|
|
45
55
|
<form onSubmit={handleSubmit}>
|
|
56
|
+
{/* form fields */}
|
|
46
57
|
<button type="submit" disabled={isSubmitting}>
|
|
47
58
|
{isSubmitting ? 'Sending...' : 'Send Message'}
|
|
48
59
|
</button>
|
|
@@ -51,4 +62,4 @@ function ContactForm() {
|
|
|
51
62
|
}
|
|
52
63
|
```
|
|
53
64
|
|
|
54
|
-
|
|
65
|
+
> **Note:** This hook requires `EndpointsRuntimeProvider` to be mounted in the component tree. The hub supplies the default contact endpoint; embedded apps provide a proxied path via the same context.
|