@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214-snapshot.20260528192313
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-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
- package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
- package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
- package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
- package/dist/chunk-D4MNFY67.cjs.map +1 -0
- package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
- package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
- package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
- package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
- package/dist/chunk-WQZP3JIZ.js.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/platform/ShellTypeBadge.tsx +2 -2
- 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-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
- /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
|
@@ -1,48 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 935e51d8951204b9160ca16e9245ae95 -->
|
|
2
|
+
Accessible alert dialog component built on Radix UI's `AlertDialogPrimitive`, providing a styled modal for confirmations and destructive actions that require explicit user acknowledgment.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `AlertDialog` | Root wrapper (re-export of Radix `Root`) |
|
|
9
|
+
| `AlertDialogTrigger` | Element that opens the dialog |
|
|
10
|
+
| `AlertDialogPortal` | Renders dialog outside the DOM tree |
|
|
11
|
+
| `AlertDialogOverlay` | Animated dark backdrop (`bg-black/80`) with fade in/out |
|
|
12
|
+
| `AlertDialogContent` | Centered modal panel with zoom/slide animations |
|
|
13
|
+
| `AlertDialogHeader` | Top section for title and description |
|
|
14
|
+
| `AlertDialogFooter` | Bottom action area, stacked on mobile / row on desktop |
|
|
15
|
+
| `AlertDialogTitle` | Semibold heading (`text-lg font-semibold`) |
|
|
16
|
+
| `AlertDialogDescription` | Muted supporting text (`text-sm text-muted-foreground`) |
|
|
17
|
+
| `AlertDialogAction` | Confirm button styled via `buttonVariants()` |
|
|
18
|
+
| `AlertDialogCancel` | Dismiss button using `buttonVariants({ variant: "outline" })` |
|
|
13
19
|
|
|
14
20
|
## Usage Example
|
|
15
21
|
|
|
16
22
|
```typescript
|
|
17
23
|
import {
|
|
18
24
|
AlertDialog,
|
|
19
|
-
|
|
20
|
-
AlertDialogCancel,
|
|
25
|
+
AlertDialogTrigger,
|
|
21
26
|
AlertDialogContent,
|
|
22
|
-
AlertDialogDescription,
|
|
23
|
-
AlertDialogFooter,
|
|
24
27
|
AlertDialogHeader,
|
|
25
28
|
AlertDialogTitle,
|
|
26
|
-
|
|
29
|
+
AlertDialogDescription,
|
|
30
|
+
AlertDialogFooter,
|
|
31
|
+
AlertDialogAction,
|
|
32
|
+
AlertDialogCancel,
|
|
27
33
|
} from "./alert-dialog"
|
|
28
34
|
|
|
29
|
-
function DeleteConfirmation() {
|
|
35
|
+
export function DeleteConfirmation() {
|
|
30
36
|
return (
|
|
31
37
|
<AlertDialog>
|
|
32
|
-
<AlertDialogTrigger
|
|
33
|
-
<button>Delete Item</button>
|
|
34
|
-
</AlertDialogTrigger>
|
|
38
|
+
<AlertDialogTrigger>Delete Device</AlertDialogTrigger>
|
|
35
39
|
<AlertDialogContent>
|
|
36
40
|
<AlertDialogHeader>
|
|
37
|
-
<AlertDialogTitle>Are you sure?</AlertDialogTitle>
|
|
41
|
+
<AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
|
|
38
42
|
<AlertDialogDescription>
|
|
39
|
-
This
|
|
43
|
+
This will permanently remove the device from your fleet.
|
|
40
44
|
</AlertDialogDescription>
|
|
41
45
|
</AlertDialogHeader>
|
|
42
46
|
<AlertDialogFooter>
|
|
43
47
|
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
44
|
-
<AlertDialogAction onClick={
|
|
45
|
-
|
|
48
|
+
<AlertDialogAction onClick={handleDelete}>
|
|
49
|
+
Continue
|
|
46
50
|
</AlertDialogAction>
|
|
47
51
|
</AlertDialogFooter>
|
|
48
52
|
</AlertDialogContent>
|
|
@@ -51,4 +55,4 @@ function DeleteConfirmation() {
|
|
|
51
55
|
}
|
|
52
56
|
```
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
> All animations are driven by Radix `data-[state]` attributes, ensuring accessible open/close transitions with no extra state management required.
|
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A client-side React component that
|
|
1
|
+
<!-- source-hash: cbe120bea34edef14f05fff077b0b285 -->
|
|
2
|
+
A client-side React component that renders a dismissible announcement banner, fetching active announcements from a configured API endpoint with localStorage-based caching and per-announcement dismissal persistence.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
| Export/Function | Description |
|
|
7
|
+
|----------------|-------------|
|
|
8
|
+
| `AnnouncementBar` | Main component — renders the announcement banner or `null` if hidden/dismissed |
|
|
9
|
+
| `fetchActiveAnnouncement` | Fetches the active announcement from `announcementsUrl`, updates state and localStorage cache |
|
|
10
|
+
| `handleDismiss` | Marks the current announcement as dismissed in localStorage and hides the bar |
|
|
11
|
+
| `handleCtaClick` | Navigates to the CTA URL, respecting `_blank` target for new-tab behavior |
|
|
12
|
+
| `renderIcon` | Renders either a PNG `<Image>` or an SVG icon based on `announcement.icon_type` |
|
|
13
|
+
| `getSvgIcon` | Thin wrapper around `renderSvgIcon` applying size-appropriate Tailwind classes |
|
|
14
|
+
|
|
15
|
+
## Behavior Notes
|
|
16
|
+
|
|
17
|
+
- **Instant paint**: On mount, the cached announcement from localStorage is applied synchronously before the API response arrives.
|
|
18
|
+
- **Polling**: Refreshes every 5 minutes via `setInterval`; interval restarts if `announcementsUrl` changes.
|
|
19
|
+
- **No provider fallback**: When `useEndpointsRuntime` returns no URL, polling is skipped entirely — cached data still renders.
|
|
20
|
+
- **Platform-scoped keys**: localStorage keys are prefixed with the platform type (via `getAppType()`) to prevent key collisions across apps.
|
|
21
|
+
- **Responsive CTA**: The CTA button is desktop-only; on mobile, tapping the content area triggers `handleCtaClick` directly.
|
|
12
22
|
|
|
13
23
|
## Usage Example
|
|
14
24
|
|
|
15
25
|
```typescript
|
|
16
|
-
|
|
26
|
+
// Wrap your app with the endpoints provider, then drop in the bar:
|
|
27
|
+
import { AnnouncementBar } from './announcement-bar';
|
|
28
|
+
import { EndpointsRuntimeProvider } from '../contexts/endpoints-runtime-context';
|
|
17
29
|
|
|
18
|
-
|
|
30
|
+
function AppShell() {
|
|
19
31
|
return (
|
|
20
|
-
<
|
|
32
|
+
<EndpointsRuntimeProvider announcementsUrl="/api/announcements/active">
|
|
21
33
|
<AnnouncementBar />
|
|
22
|
-
<main>{
|
|
23
|
-
</
|
|
34
|
+
<main>{/* app content */}</main>
|
|
35
|
+
</EndpointsRuntimeProvider>
|
|
24
36
|
);
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
// The component automatically:
|
|
28
|
-
// - Fetches announcements on mount
|
|
29
|
-
// - Uses cached data for instant rendering
|
|
30
|
-
// - Refreshes every 5 minutes
|
|
31
|
-
// - Handles platform-specific dismissals (OpenFrame vs Flamingo)
|
|
32
|
-
// - Provides mobile-optimized interactions
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
The component
|
|
40
|
+
> **Note:** The component renders nothing (`null`) when no active announcement exists, when the fetch URL is unconfigured, or when the user has previously dismissed the current announcement.
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 7dab09d7ecaf9eacb41a428d82640701 -->
|
|
2
|
+
Accessible breadcrumb navigation component built with Radix UI's `Slot` primitive, providing a composable set of sub-components for rendering hierarchical navigation trails.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Breadcrumb` | `nav` wrapper | Root container with `aria-label="breadcrumb"` |
|
|
9
|
+
| `BreadcrumbList` | `ol` element | Flex-wrapped ordered list of breadcrumb items |
|
|
10
|
+
| `BreadcrumbItem` | `li` element | Individual breadcrumb entry wrapper |
|
|
11
|
+
| `BreadcrumbLink` | `a` element | Clickable link with hover color transition; supports `asChild` for custom renderers |
|
|
12
|
+
| `BreadcrumbPage` | `span` element | Non-interactive current page indicator (`aria-current="page"`) |
|
|
13
|
+
| `BreadcrumbSeparator` | `li` element | Decorative separator defaulting to `ChevronRight` icon |
|
|
14
|
+
| `BreadcrumbEllipsis` | `span` element | Collapsed items indicator using `MoreHorizontal` icon |
|
|
13
15
|
|
|
14
16
|
## Usage Example
|
|
15
17
|
|
|
@@ -22,9 +24,9 @@ import {
|
|
|
22
24
|
BreadcrumbPage,
|
|
23
25
|
BreadcrumbSeparator,
|
|
24
26
|
BreadcrumbEllipsis,
|
|
25
|
-
} from "
|
|
27
|
+
} from "@/components/breadcrumb"
|
|
26
28
|
|
|
27
|
-
function
|
|
29
|
+
export function AppBreadcrumb() {
|
|
28
30
|
return (
|
|
29
31
|
<Breadcrumb>
|
|
30
32
|
<BreadcrumbList>
|
|
@@ -33,18 +35,20 @@ function Navigation() {
|
|
|
33
35
|
</BreadcrumbItem>
|
|
34
36
|
<BreadcrumbSeparator />
|
|
35
37
|
<BreadcrumbItem>
|
|
36
|
-
<
|
|
38
|
+
<BreadcrumbEllipsis />
|
|
37
39
|
</BreadcrumbItem>
|
|
38
40
|
<BreadcrumbSeparator />
|
|
39
41
|
<BreadcrumbItem>
|
|
40
|
-
<
|
|
42
|
+
<BreadcrumbLink href="/clients">Clients</BreadcrumbLink>
|
|
41
43
|
</BreadcrumbItem>
|
|
42
44
|
<BreadcrumbSeparator />
|
|
43
45
|
<BreadcrumbItem>
|
|
44
|
-
<BreadcrumbPage>
|
|
46
|
+
<BreadcrumbPage>Acme Corp</BreadcrumbPage>
|
|
45
47
|
</BreadcrumbItem>
|
|
46
48
|
</BreadcrumbList>
|
|
47
49
|
</Breadcrumb>
|
|
48
50
|
)
|
|
49
51
|
}
|
|
50
|
-
```
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> **`asChild` pattern:** Pass `asChild` to `BreadcrumbLink` to delegate rendering to a child component (e.g., a router `Link`), forwarding all props via Radix UI's `Slot`.
|
|
@@ -1,46 +1,51 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: f8ae158ddc696cfb68419e4860069278 -->
|
|
2
|
+
A styled calendar component wrapping `react-day-picker`'s `DayPicker` with Flamingo/Tailwind design tokens and accessible navigation icons.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
- **
|
|
9
|
-
- **Tailwind Classes**: Comprehensive styling for all calendar states and elements
|
|
6
|
+
- **`Calendar`** — Main export; a thin wrapper around `DayPicker` that applies consistent Tailwind class names for layout, navigation, day cells, selected/range/today states, and outside-day visibility.
|
|
7
|
+
- **`CalendarProps`** — Re-exported type alias for `React.ComponentProps<typeof DayPicker>`, allowing full passthrough of any `DayPicker` prop.
|
|
8
|
+
- **`Chevron` override** — Replaces the default DayPicker navigation icon with `lucide-react`'s `ChevronLeft` at a fixed `h-4 w-4` size.
|
|
10
9
|
|
|
11
10
|
## Usage Example
|
|
12
11
|
|
|
13
12
|
```typescript
|
|
14
|
-
import { Calendar } from "
|
|
13
|
+
import { Calendar } from "@/components/calendar"
|
|
14
|
+
import { useState } from "react"
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const [date, setDate] = React.useState<Date | undefined>(new Date())
|
|
16
|
+
export function DatePicker() {
|
|
17
|
+
const [selected, setSelected] = useState<Date>()
|
|
19
18
|
|
|
20
19
|
return (
|
|
21
20
|
<Calendar
|
|
22
21
|
mode="single"
|
|
23
|
-
selected={
|
|
24
|
-
onSelect={
|
|
25
|
-
|
|
22
|
+
selected={selected}
|
|
23
|
+
onSelect={setSelected}
|
|
24
|
+
showOutsideDays={false}
|
|
26
25
|
/>
|
|
27
26
|
)
|
|
28
27
|
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
// Date range selection
|
|
32
|
+
import { DateRange } from "react-day-picker"
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const [range, setRange] = React.useState<DateRange | undefined>()
|
|
34
|
+
export function RangePicker() {
|
|
35
|
+
const [range, setRange] = useState<DateRange>()
|
|
33
36
|
|
|
34
37
|
return (
|
|
35
38
|
<Calendar
|
|
36
39
|
mode="range"
|
|
37
40
|
selected={range}
|
|
38
41
|
onSelect={setRange}
|
|
39
|
-
numberOfMonths={2}
|
|
40
|
-
showOutsideDays={false}
|
|
41
42
|
/>
|
|
42
43
|
)
|
|
43
44
|
}
|
|
44
45
|
```
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
## Notes
|
|
48
|
+
|
|
49
|
+
- `showOutsideDays` defaults to `true`; pass `false` to hide days from adjacent months.
|
|
50
|
+
- Custom `classNames` are merged via spread (`...classNames`), so individual slot styles can be overridden per instance.
|
|
51
|
+
- The `Chevron` component override is cast with `as any` to satisfy DayPicker's internal component map typing.
|
|
@@ -1,37 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 7161864532df5559c1bd18aba5ddcb23 -->
|
|
2
|
+
A clickable card component that displays a product/vendor category with its associated vendor icons, subcategory count, and product count, linking to a filtered vendor listing page.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
6
|
+
- **`CategoriesCart`** — Main exported component accepting `RealCategoryCardProps`
|
|
7
|
+
- `category` — Category object with `slug`, `name`, and `description`
|
|
8
|
+
- `vendors` — Array of vendor objects to display as icons (default: `[]`)
|
|
9
|
+
- `vendorCount` — Total number of products in the category (default: `0`)
|
|
10
|
+
- `subcategoryCount` — Number of subcategories (default: `0`)
|
|
11
|
+
- `isLoading` — Toggles skeleton loading state (default: `false`)
|
|
12
|
+
- `className` — Optional additional CSS classes
|
|
13
|
+
|
|
14
|
+
## Key Behaviors
|
|
15
|
+
|
|
16
|
+
| State | Behavior |
|
|
17
|
+
|-------|----------|
|
|
18
|
+
| `isLoading: true` | Renders 20 animated pulse skeleton placeholders |
|
|
19
|
+
| Vendors present | Renders `VendorIcon` components in grayscale/muted style |
|
|
20
|
+
| No vendors | Renders 6 grey placeholder icon blocks |
|
|
21
|
+
|
|
22
|
+
- Navigates to `/vendors?category={slug}` on click
|
|
23
|
+
- Highlights border and arrow button in `#FFC008` (Flamingo yellow) on hover
|
|
24
|
+
- Applies left/right gradient overlays to fade the vendor icon row
|
|
11
25
|
|
|
12
26
|
## Usage Example
|
|
13
27
|
|
|
14
28
|
```typescript
|
|
15
29
|
import { CategoriesCart } from './categories-cart';
|
|
16
30
|
|
|
17
|
-
// Basic usage with category data
|
|
18
31
|
<CategoriesCart
|
|
19
32
|
category={{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
description:
|
|
33
|
+
slug: 'rmm-tools',
|
|
34
|
+
name: 'RMM Tools',
|
|
35
|
+
description: 'Remote monitoring and management platforms for MSPs.',
|
|
23
36
|
}}
|
|
24
|
-
vendors={
|
|
25
|
-
vendorCount={
|
|
26
|
-
subcategoryCount={
|
|
37
|
+
vendors={[{ id: '1', name: 'NinjaRMM', logo: '/logos/ninja.png' }]}
|
|
38
|
+
vendorCount={12}
|
|
39
|
+
subcategoryCount={3}
|
|
40
|
+
isLoading={false}
|
|
27
41
|
/>
|
|
28
|
-
|
|
29
|
-
// Loading state
|
|
30
|
-
<CategoriesCart
|
|
31
|
-
category={categoryData}
|
|
32
|
-
isLoading={true}
|
|
33
|
-
className="custom-spacing"
|
|
34
|
-
/>
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
The component creates a hover-interactive card that links to `/vendors?category={slug}`, featuring a scrolling vendor icon grid with gradient fade effects, category statistics, and a prominent call-to-action arrow that changes color on hover.
|
|
42
|
+
```
|
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: ebf5d1beb048574c71be25e85338e2db -->
|
|
2
|
+
Accessible checkbox component built on Radix UI's `CheckboxPrimitive`, styled with Tailwind CSS utility classes and a custom checkmark icon.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
- **`Checkbox`** -
|
|
7
|
-
- **`CheckboxPrimitive.Root`** - Base Radix UI checkbox primitive
|
|
8
|
-
- **`CheckboxPrimitive.Indicator`** - Visual indicator container for checked state
|
|
9
|
-
- **`Check`** - Lucide React icon for the checkmark visual
|
|
6
|
+
- **`Checkbox`** — A forwarded-ref React component wrapping `@radix-ui/react-checkbox` with Flamingo design system styles, including focus ring, disabled state, and checked state variants.
|
|
10
7
|
|
|
11
8
|
## Usage Example
|
|
12
9
|
|
|
13
10
|
```typescript
|
|
14
|
-
import { Checkbox } from "
|
|
11
|
+
import { Checkbox } from "@/components/checkbox"
|
|
15
12
|
|
|
16
13
|
// Basic usage
|
|
17
|
-
<Checkbox />
|
|
14
|
+
<Checkbox id="terms" />
|
|
18
15
|
|
|
19
|
-
// With
|
|
20
|
-
|
|
16
|
+
// With label and controlled state
|
|
17
|
+
const [checked, setChecked] = React.useState(false)
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/>
|
|
19
|
+
<div className="flex items-center gap-2">
|
|
20
|
+
<Checkbox
|
|
21
|
+
id="accept"
|
|
22
|
+
checked={checked}
|
|
23
|
+
onCheckedChange={setChecked}
|
|
24
|
+
/>
|
|
25
|
+
<label htmlFor="accept">Accept terms and conditions</label>
|
|
26
|
+
</div>
|
|
28
27
|
|
|
29
28
|
// Disabled state
|
|
30
29
|
<Checkbox disabled />
|
|
31
|
-
|
|
32
|
-
// With form integration
|
|
33
|
-
<form>
|
|
34
|
-
<div className="flex items-center space-x-2">
|
|
35
|
-
<Checkbox id="terms" />
|
|
36
|
-
<label htmlFor="terms">Accept terms and conditions</label>
|
|
37
|
-
</div>
|
|
38
|
-
</form>
|
|
39
30
|
```
|
|
40
31
|
|
|
41
|
-
|
|
32
|
+
## Styling Highlights
|
|
33
|
+
|
|
34
|
+
| State | Applied Style |
|
|
35
|
+
|---|---|
|
|
36
|
+
| Default | `border-primary`, `rounded-sm` |
|
|
37
|
+
| Checked | `bg-primary text-primary-foreground` |
|
|
38
|
+
| Focused | `ring-2 ring-ring ring-offset-2` |
|
|
39
|
+
| Disabled | `cursor-not-allowed opacity-50` |
|
|
@@ -1,41 +1,46 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A reusable
|
|
1
|
+
<!-- source-hash: b0e5b6389fabb9232cd48e08b608bcb8 -->
|
|
2
|
+
A reusable toggle button component that renders a chevron icon with animated rotation to indicate expanded/collapsed state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `ChevronButton`
|
|
7
|
+
The primary exported component. Wraps the base `Button` with a `ChevronDown` icon that rotates 180° when `isExpanded` is `true`.
|
|
8
|
+
|
|
9
|
+
### `ChevronButtonProps`
|
|
10
|
+
| Prop | Type | Default | Description |
|
|
11
|
+
|------|------|---------|-------------|
|
|
12
|
+
| `isExpanded` | `boolean` | `false` | Controls chevron rotation (0° → 180°) |
|
|
13
|
+
| `size` | `'sm' \| 'default' \| 'lg' \| 'icon'` | `'icon'` | Sets button and icon dimensions |
|
|
14
|
+
| `backgroundColor` | `string` | `'transparent'` | Custom background color (clears on hover) |
|
|
15
|
+
| `borderColor` | `string` | `'transparent'` | Custom border color and style |
|
|
16
|
+
| `className` | `string` | — | Additional Tailwind classes |
|
|
17
|
+
| `onClick` | `(e: React.MouseEvent) => void` | — | Click handler |
|
|
10
18
|
|
|
11
19
|
## Usage Example
|
|
12
20
|
|
|
13
21
|
```typescript
|
|
14
|
-
import { ChevronButton } from './
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div className="mt-4">
|
|
33
|
-
<p>Collapsible content here...</p>
|
|
34
|
-
</div>
|
|
35
|
-
)}
|
|
36
|
-
</div>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
22
|
+
import { ChevronButton } from './chevron-button';
|
|
23
|
+
|
|
24
|
+
// Basic expand/collapse toggle
|
|
25
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
26
|
+
|
|
27
|
+
<ChevronButton
|
|
28
|
+
isExpanded={isOpen}
|
|
29
|
+
onClick={() => setIsOpen(!isOpen)}
|
|
30
|
+
/>
|
|
31
|
+
|
|
32
|
+
// Custom styled with border and size
|
|
33
|
+
<ChevronButton
|
|
34
|
+
isExpanded={isOpen}
|
|
35
|
+
size="default"
|
|
36
|
+
backgroundColor="#1a1a2e"
|
|
37
|
+
borderColor="#FFC008"
|
|
38
|
+
onClick={() => setIsOpen(!isOpen)}
|
|
39
|
+
/>
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
## Behavior Notes
|
|
43
|
+
|
|
44
|
+
- **Hover state**: Background color resets to `transparent` on hover regardless of `backgroundColor` prop.
|
|
45
|
+
- **Rotation**: Chevron smoothly rotates via `transition-transform` when `isExpanded` toggles.
|
|
46
|
+
- **Border**: Border width/style are only applied when `borderColor` is not `'transparent'`.
|
|
@@ -1,72 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 0b18246ba972b704769b5c9382e327c6 -->
|
|
2
|
+
Renders a styled card for displaying a user comment, supporting both vendor-context (showing the commenter's identity) and profile-context (showing the associated vendor) views with optional delete functionality.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
### `CommentCard`
|
|
7
|
+
The primary exported component accepting a `CommentCardProps` object.
|
|
8
8
|
|
|
9
|
-
**
|
|
10
|
-
- **Dual Context Support** - Renders differently for 'profile' and 'vendor' contexts
|
|
11
|
-
- **User Authentication** - Integrates with auth system for deletion permissions
|
|
12
|
-
- **Responsive Design** - Adapts layout for different screen sizes with breakpoints
|
|
13
|
-
- **Interactive Elements** - Delete button with permission checks
|
|
14
|
-
- **Content Overflow Handling** - Text truncation and word breaking for long content
|
|
9
|
+
**Props:**
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
| Prop | Type | Description |
|
|
12
|
+
|------|------|-------------|
|
|
13
|
+
| `comment` | `object` | Comment data including content, metadata, and optional vendor/user info |
|
|
14
|
+
| `onViewProduct` | `(vendorSlug: string) => void` | Callback when vendor button is clicked |
|
|
15
|
+
| `onDeleteComment` | `(commentId: string) => void` | Callback when delete button is clicked |
|
|
16
|
+
| `showVendorInfo` | `boolean` | Whether to display vendor information (default: `true`) |
|
|
17
|
+
| `compact` | `boolean` | Reduces content area height (default: `false`) |
|
|
18
|
+
| `context` | `'profile' \| 'vendor'` | Controls header layout — vendor button or user summary |
|
|
19
|
+
|
|
20
|
+
### Delete Authorization Logic (`canUserDeleteComment`)
|
|
21
|
+
Context-aware check: in `profile` context, relies on `comment.canDelete`; in `vendor` context, compares `currentUser.id` against `comment.user.id`.
|
|
23
22
|
|
|
24
23
|
## Usage Example
|
|
25
24
|
|
|
26
25
|
```typescript
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
comment={{
|
|
44
|
-
id: "comment-1",
|
|
45
|
-
content: "This tool has been incredibly helpful for our MSP operations.",
|
|
46
|
-
title: "Great automation features",
|
|
47
|
-
type: "pro",
|
|
48
|
-
importance: "Important",
|
|
49
|
-
createdAt: "2024-01-15T10:30:00Z",
|
|
50
|
-
vendor: {
|
|
51
|
-
id: 1,
|
|
52
|
-
title: "ConnectWise",
|
|
53
|
-
slug: "connectwise",
|
|
54
|
-
logo: "/logos/connectwise.png"
|
|
55
|
-
},
|
|
56
|
-
user: {
|
|
57
|
-
id: "user-123",
|
|
58
|
-
name: "John Doe",
|
|
59
|
-
profilePicture: "/avatars/john.jpg"
|
|
60
|
-
},
|
|
61
|
-
canDelete: true
|
|
62
|
-
}}
|
|
63
|
-
context="profile"
|
|
64
|
-
onDeleteComment={handleDeleteComment}
|
|
65
|
-
onViewProduct={handleViewProduct}
|
|
66
|
-
showVendorInfo={true}
|
|
67
|
-
compact={false}
|
|
68
|
-
/>
|
|
69
|
-
</div>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
26
|
+
<CommentCard
|
|
27
|
+
comment={{
|
|
28
|
+
id: "abc123",
|
|
29
|
+
content: "Excellent ticketing integration with our existing stack.",
|
|
30
|
+
title: "Great RMM Tool",
|
|
31
|
+
type: "pro",
|
|
32
|
+
importance: "Critical",
|
|
33
|
+
createdAt: "2024-11-01T10:00:00Z",
|
|
34
|
+
vendor: { id: 1, title: "NinjaRMM", slug: "ninjarmm", logo: "/logos/ninja.png" },
|
|
35
|
+
canDelete: true,
|
|
36
|
+
}}
|
|
37
|
+
context="profile"
|
|
38
|
+
onViewProduct={(slug) => router.push(`/vendors/${slug}`)}
|
|
39
|
+
onDeleteComment={(id) => handleDelete(id)}
|
|
40
|
+
compact={false}
|
|
41
|
+
/>
|
|
72
42
|
```
|