@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
|
@@ -1,41 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: ad7aa24ce00c67388baad4341f1e3d5b -->
|
|
2
|
+
A dashboard metric card component that displays a title, value, optional percentage, circular progress indicator, and tooltip — supporting both static and navigable (linked) variants.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **Value
|
|
6
|
+
### `DashboardInfoCard`
|
|
7
|
+
Main export. Renders a styled card with:
|
|
8
|
+
- **Title** — secondary text label
|
|
9
|
+
- **Value** — formatted number (via `toLocaleString`) or string, with optional custom className
|
|
10
|
+
- **Percentage** — displayed as a `Tag` (for `warning`/`error` variants) or plain secondary text
|
|
11
|
+
- **Circular progress ring** — shown when `showProgress` and `percentage` are both provided
|
|
12
|
+
- **Tooltip** — question-mark icon trigger via `FloatingTooltip`
|
|
13
|
+
- **Link behavior** — when `href` is supplied, renders as a Next.js `Link` with hover accent styles
|
|
14
|
+
|
|
15
|
+
### `DashboardInfoCardProps`
|
|
16
|
+
Interface driving all card configuration, including `progressOverflow` which controls how the `CircularProgress` ring handles values exceeding 100 (`'clamp'` default or `'wrap'` for overflow/overage display).
|
|
10
17
|
|
|
11
18
|
## Usage Example
|
|
12
19
|
|
|
13
20
|
```typescript
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// Basic usage with navigation
|
|
21
|
+
// Static metric card
|
|
17
22
|
<DashboardInfoCard
|
|
18
|
-
title="
|
|
19
|
-
value={
|
|
20
|
-
|
|
23
|
+
title="Open Tickets"
|
|
24
|
+
value={142}
|
|
25
|
+
percentage={72}
|
|
26
|
+
showProgress
|
|
27
|
+
progressVariant="warning"
|
|
28
|
+
tooltip="Tickets currently unresolved"
|
|
21
29
|
/>
|
|
22
30
|
|
|
23
|
-
//
|
|
31
|
+
// Navigable card with overflow progress
|
|
24
32
|
<DashboardInfoCard
|
|
25
|
-
title="
|
|
26
|
-
value=
|
|
27
|
-
percentage={
|
|
28
|
-
showProgress
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
title="SLA Breaches"
|
|
34
|
+
value={18}
|
|
35
|
+
percentage={110}
|
|
36
|
+
showProgress
|
|
37
|
+
progressVariant="error"
|
|
38
|
+
progressOverflow="wrap"
|
|
39
|
+
href="/reports/sla"
|
|
31
40
|
/>
|
|
32
41
|
|
|
33
|
-
//
|
|
42
|
+
// Simple card, no progress
|
|
34
43
|
<DashboardInfoCard
|
|
35
|
-
title="
|
|
36
|
-
value=
|
|
37
|
-
|
|
44
|
+
title="Devices Online"
|
|
45
|
+
value="1,024"
|
|
46
|
+
className="col-span-2"
|
|
38
47
|
/>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
The component uses the `InteractiveCard` wrapper for consistent hover states and accessibility, with special styling for navigation-enabled cards that highlight on hover. Progress visualization is provided through the `CircularProgress` component when enabled.
|
|
48
|
+
```
|
|
@@ -1,44 +1,46 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A date picker component
|
|
1
|
+
<!-- source-hash: c8a503e7c476a61ed70475150ecd1672 -->
|
|
2
|
+
A composable date picker component supporting both single-date and date-range selection modes, built on `react-day-picker` and `@radix-ui/react-popover` with Flamingo's design system tokens.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- **`DatePickerCalendar`** - Core calendar component with month navigation and date selection
|
|
16
|
-
- **Helper functions** - `defaultFormatDate` and `formatDateRange` for date formatting
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `DatePickerProps` | Type | Union of `SingleDatePickerProps` \| `RangeDatePickerProps` |
|
|
9
|
+
| `DatePickerMode` | Type | `"single"` \| `"range"` |
|
|
10
|
+
| `DatePickerBaseProps` | Interface | Shared props: `placeholder`, `disabled`, `fromDate`, `toDate`, `label`, `error`, `invalid`, `locale` |
|
|
11
|
+
| `SingleDatePickerProps` | Interface | Extends base; `value: Date`, `onChange: (date) => void` |
|
|
12
|
+
| `RangeDatePickerProps` | Interface | Extends base; `value: DateRange`, `onChange: (range) => void` |
|
|
13
|
+
| `DatePickerCalendar` | Component | Internal calendar renderer with custom nav and range styling |
|
|
14
|
+
| `CalendarNavButton` | Component | Chevron nav button wrapping Flamingo `Button` |
|
|
17
15
|
|
|
18
16
|
## Usage Example
|
|
19
17
|
|
|
20
18
|
```typescript
|
|
21
|
-
import { DatePicker } from "./date-picker";
|
|
22
|
-
|
|
23
19
|
// Single date picker
|
|
24
20
|
<DatePicker
|
|
25
21
|
mode="single"
|
|
22
|
+
label="Start Date"
|
|
26
23
|
value={selectedDate}
|
|
27
|
-
onChange={setSelectedDate}
|
|
28
|
-
|
|
29
|
-
formatDate={(date) => date.toLocaleDateString()}
|
|
24
|
+
onChange={(date) => setSelectedDate(date)}
|
|
25
|
+
fromDate={new Date()}
|
|
30
26
|
/>
|
|
31
27
|
|
|
32
|
-
// Date range picker
|
|
28
|
+
// Date range picker (dual month)
|
|
33
29
|
<DatePicker
|
|
34
30
|
mode="range"
|
|
35
|
-
|
|
36
|
-
onChange={setSelectedRange}
|
|
31
|
+
label="Date Range"
|
|
37
32
|
numberOfMonths={2}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
value={range}
|
|
34
|
+
onChange={(range) => setRange(range)}
|
|
35
|
+
error={formError}
|
|
36
|
+
invalid={!!formError}
|
|
41
37
|
/>
|
|
42
38
|
```
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
## Key Behaviors
|
|
41
|
+
|
|
42
|
+
- **Single mode**: renders one `DayPicker` month with custom nav header
|
|
43
|
+
- **Range mode**: supports 1 or 2 simultaneous months; range start/end use accent color (`--ods-accent`), range middle uses `--ods-open-yellow-light`
|
|
44
|
+
- **Popover trigger**: displays a calendar icon with formatted date or placeholder text; applies red border when `invalid={true}`
|
|
45
|
+
- **Month navigation**: controlled internally via `useState<Date>`, independent of `DayPicker`'s built-in nav (hidden via `hideNavigation`)
|
|
46
|
+
- **Locale support**: passes `locale` prop directly to `DayPicker` for i18n formatting
|
|
@@ -1,46 +1,45 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: e2dcd0d341956fecb4817f070e40d10a -->
|
|
2
|
+
Compact React component for displaying device name and organization in a stacked layout, optimized for use within table cells.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `DeviceCardCompactProps`
|
|
7
|
+
Extends `React.HTMLAttributes<HTMLDivElement>` with two optional fields:
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Description |
|
|
10
|
+
|------|------|-------------|
|
|
11
|
+
| `deviceName` | `string \| null` | Primary label shown in larger text |
|
|
12
|
+
| `organization` | `string \| null` | Secondary label shown in smaller muted text |
|
|
13
|
+
|
|
14
|
+
### `DeviceCardCompact`
|
|
15
|
+
A display-only component that renders device info in a vertical flex column. Performs null-safety checks against `null`, `undefined`, `'-'`, and the string `'null'`. Returns an empty fragment when both values are absent.
|
|
10
16
|
|
|
11
17
|
## Usage Example
|
|
12
18
|
|
|
13
19
|
```typescript
|
|
14
|
-
import { DeviceCardCompact } from './device-card-compact'
|
|
15
|
-
|
|
16
20
|
// Basic usage in a table cell
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
organization="Engineering Team"
|
|
21
|
-
/>
|
|
22
|
-
</td>
|
|
23
|
-
|
|
24
|
-
// With custom styling
|
|
25
|
-
<DeviceCardCompact
|
|
26
|
-
deviceName="MacBook Air"
|
|
27
|
-
organization="Design Department"
|
|
28
|
-
className="border rounded p-2"
|
|
21
|
+
<DeviceCardCompact
|
|
22
|
+
deviceName="DESKTOP-ABC123"
|
|
23
|
+
organization="Acme Corp"
|
|
29
24
|
/>
|
|
30
25
|
|
|
31
|
-
// Handles missing/invalid
|
|
32
|
-
<DeviceCardCompact
|
|
26
|
+
// Handles missing/invalid values gracefully - renders nothing
|
|
27
|
+
<DeviceCardCompact
|
|
33
28
|
deviceName={null}
|
|
34
29
|
organization="-"
|
|
35
|
-
// Returns empty fragment - nothing rendered
|
|
36
30
|
/>
|
|
37
31
|
|
|
38
|
-
//
|
|
39
|
-
<DeviceCardCompact
|
|
40
|
-
deviceName=""
|
|
41
|
-
organization=
|
|
42
|
-
|
|
32
|
+
// With custom className
|
|
33
|
+
<DeviceCardCompact
|
|
34
|
+
deviceName="SERVER-01"
|
|
35
|
+
organization={null}
|
|
36
|
+
className="max-w-[200px]"
|
|
43
37
|
/>
|
|
44
38
|
```
|
|
45
39
|
|
|
46
|
-
|
|
40
|
+
## Behavior Notes
|
|
41
|
+
|
|
42
|
+
- **Empty state**: Returns `<></>` when both props are falsy, `'-'`, or `'null'`
|
|
43
|
+
- **Partial render**: Renders only the available field when one value is missing
|
|
44
|
+
- **Overflow**: Both labels use `truncate` with a `title` attribute for full text on hover
|
|
45
|
+
- **Typography**: Device name renders at `16px` (`ods-text-primary`); organization at `14px` (`ods-text-secondary`)
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A React component that renders device information
|
|
1
|
+
<!-- source-hash: c41a33e86906d6bdb122fe05e0b8b30c -->
|
|
2
|
+
A React client component that renders a styled card UI for displaying device information, including OS type, organization, status, last seen timestamp, and tags.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
6
|
+
### Interfaces
|
|
7
|
+
- **`Device`** — Core device data model with fields for `id`, `name`, `type`, `operatingSystem`, `organization`, `status`, `lastSeen`, `tags`, and network properties (`ipAddress`, `macAddress`, etc.)
|
|
8
|
+
- **`ActionButton`** — Configuration for custom action buttons with `label`, `onClick`, `variant`, and `visible` controls
|
|
9
|
+
- **`DeviceCardProps`** — Extends `HTMLAttributes<HTMLDivElement>` with `device`, `actions`, `statusTag`, and `onDeviceClick`
|
|
10
|
+
|
|
11
|
+
### Main Export
|
|
12
|
+
- **`DeviceCard`** — The primary card component rendering a two-row layout: device identity (icon, name, OS, org, action buttons) and metadata (status tag, last seen, tags)
|
|
11
13
|
|
|
12
14
|
## Usage Example
|
|
13
15
|
|
|
14
16
|
```typescript
|
|
15
|
-
import { DeviceCard
|
|
16
|
-
|
|
17
|
-
const device: Device = {
|
|
18
|
-
id: '123',
|
|
19
|
-
name: 'MacBook Pro',
|
|
20
|
-
type: 'laptop',
|
|
21
|
-
operatingSystem: 'darwin',
|
|
22
|
-
organization: 'Acme Corp',
|
|
23
|
-
status: 'active',
|
|
24
|
-
lastSeen: new Date(),
|
|
25
|
-
tags: ['development', 'remote']
|
|
26
|
-
}
|
|
17
|
+
import { DeviceCard } from './device-card'
|
|
27
18
|
|
|
28
19
|
<DeviceCard
|
|
29
|
-
device={
|
|
20
|
+
device={{
|
|
21
|
+
name: "WORKSTATION-01",
|
|
22
|
+
operatingSystem: "windows",
|
|
23
|
+
organization: "Acme Corp",
|
|
24
|
+
status: "active",
|
|
25
|
+
lastSeen: new Date(),
|
|
26
|
+
tags: ["managed", "production"],
|
|
27
|
+
}}
|
|
30
28
|
actions={{
|
|
31
|
-
moreButton: { visible: true, onClick: () => console.log(
|
|
32
|
-
detailsButton: { visible: true, component: <Button>Details</Button> },
|
|
29
|
+
moreButton: { visible: true, onClick: () => console.log("more clicked") },
|
|
33
30
|
customActions: [
|
|
34
|
-
{ label:
|
|
35
|
-
{ label: 'Restart', onClick: () => restart(device.id) }
|
|
31
|
+
{ label: "Remote", onClick: () => startRemoteSession(), visible: true }
|
|
36
32
|
]
|
|
37
33
|
}}
|
|
38
|
-
|
|
39
|
-
onDeviceClick={(device) =>
|
|
34
|
+
statusTag={{ variant: "success", label: "Online" }}
|
|
35
|
+
onDeviceClick={(device) => router.push(`/devices/${device.id}`)}
|
|
40
36
|
/>
|
|
41
37
|
```
|
|
42
38
|
|
|
43
|
-
|
|
39
|
+
## Notes
|
|
40
|
+
|
|
41
|
+
- `operatingSystem` supports both `OSPlatformId` values and legacy strings (`macos`, `ios`, `android`); `macos` is internally mapped to `darwin` for icon resolution
|
|
42
|
+
- Action buttons use `e.stopPropagation()` to prevent triggering `onDeviceClick` when interacting with controls
|
|
43
|
+
- `lastSeen` accepts either a `string` or `Date` and formats to `YYYY/MM/DD, HH:MM`
|
|
@@ -1,30 +1,36 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 1007936b4fa31192c76c72547575559a -->
|
|
2
|
+
Accessible modal dialog component built on Radix UI's `DialogPrimitive`, providing a fully composed set of dialog sub-components with enter/exit animations, backdrop blur overlay, and a built-in close button.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `Dialog` | Root component managing open/close state |
|
|
9
|
+
| `DialogTrigger` | Element that opens the dialog on interaction |
|
|
10
|
+
| `DialogContent` | Main modal container; renders via `DialogPortal` with overlay, animations, and a close (`X`) button |
|
|
11
|
+
| `DialogOverlay` | Fixed full-screen backdrop with blur and fade animations |
|
|
12
|
+
| `DialogHeader` | Layout wrapper for title/description area |
|
|
13
|
+
| `DialogFooter` | Layout wrapper for action buttons (reverses column order on mobile) |
|
|
14
|
+
| `DialogTitle` | Semibold heading with accessible binding |
|
|
15
|
+
| `DialogDescription` | Muted secondary text beneath the title |
|
|
16
|
+
| `DialogClose` | Primitive close button for custom trigger placement |
|
|
17
|
+
| `DialogPortal` | Renders dialog outside the DOM tree via a portal |
|
|
13
18
|
|
|
14
19
|
## Usage Example
|
|
15
20
|
|
|
16
21
|
```typescript
|
|
17
22
|
import {
|
|
18
23
|
Dialog,
|
|
24
|
+
DialogTrigger,
|
|
19
25
|
DialogContent,
|
|
20
|
-
DialogDescription,
|
|
21
|
-
DialogFooter,
|
|
22
26
|
DialogHeader,
|
|
23
27
|
DialogTitle,
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
DialogDescription,
|
|
29
|
+
DialogFooter,
|
|
30
|
+
DialogClose,
|
|
31
|
+
} from "@/components/ui/dialog"
|
|
26
32
|
|
|
27
|
-
function
|
|
33
|
+
export function ConfirmDialog() {
|
|
28
34
|
return (
|
|
29
35
|
<Dialog>
|
|
30
36
|
<DialogTrigger asChild>
|
|
@@ -38,7 +44,10 @@ function MyDialog() {
|
|
|
38
44
|
</DialogDescription>
|
|
39
45
|
</DialogHeader>
|
|
40
46
|
<DialogFooter>
|
|
41
|
-
<
|
|
47
|
+
<DialogClose asChild>
|
|
48
|
+
<button>Cancel</button>
|
|
49
|
+
</DialogClose>
|
|
50
|
+
<button onClick={() => console.log("confirmed")}>Confirm</button>
|
|
42
51
|
</DialogFooter>
|
|
43
52
|
</DialogContent>
|
|
44
53
|
</Dialog>
|
|
@@ -46,4 +55,4 @@ function MyDialog() {
|
|
|
46
55
|
}
|
|
47
56
|
```
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
> `DialogContent` automatically injects `DialogOverlay` and the close (`X`) button — no need to add them manually. Use `DialogClose` only for custom close triggers within the footer or body.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<!-- source-hash: 2221d7f0d18b72b3da12ead1872e85f9 -->
|
|
2
|
+
A client-side drawer component built on Radix UI's Dialog primitive, providing animated slide-in panels from any viewport edge with optional drag-to-resize and localStorage persistence.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Drawer` | Component | Root dialog primitive (alias for `DialogPrimitive.Root`) |
|
|
9
|
+
| `DrawerTrigger` | Component | Trigger element to open the drawer |
|
|
10
|
+
| `DrawerClose` | Component | Button/element to close the drawer |
|
|
11
|
+
| `DrawerPortal` | Component | Renders drawer outside the DOM tree |
|
|
12
|
+
| `DrawerOverlay` | Component | Semi-transparent backdrop with fade animations |
|
|
13
|
+
| `DrawerContent` | Component | Main panel with slide animations, resize handle, and variant support |
|
|
14
|
+
| `drawerVariants` | CVA | Wrapper positioning variants (`side`, `flush`) |
|
|
15
|
+
| `drawerPanelVariants` | CVA | Panel chrome variants (rounded corners, border, padding) |
|
|
16
|
+
| `DrawerResizeHandle` | Internal | Drag/keyboard-accessible resize handle rendered as panel sibling |
|
|
17
|
+
| `useResizableSize` | Hook | Manages clamped panel size with viewport awareness and localStorage |
|
|
18
|
+
|
|
19
|
+
**`DrawerContent` Props:**
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Default | Description |
|
|
22
|
+
|------|------|---------|-------------|
|
|
23
|
+
| `side` | `"right" \| "left" \| "top" \| "bottom"` | `"right"` | Slide-in direction |
|
|
24
|
+
| `flush` | `boolean` | `false` | Full-bleed mode (removes padding/border/rounded on mobile) |
|
|
25
|
+
| `resizable` | `boolean` | — | Enables drag-to-resize handle |
|
|
26
|
+
| `minSize` | `number` | — | Minimum resize size in px |
|
|
27
|
+
| `maxSize` | `number` | — | Maximum resize size in px (also clamped by viewport) |
|
|
28
|
+
| `defaultSize` | `number` | — | Initial size in px when no localStorage entry exists |
|
|
29
|
+
| `storageKey` | `string` | — | localStorage key for persisting size across sessions |
|
|
30
|
+
| `mobileBreakpoint` | `number` | — | Px breakpoint below which resizing is disabled |
|
|
31
|
+
| `overlayClassName` | `string` | — | Additional classes for the overlay |
|
|
32
|
+
| `resizeAriaLabel` | `string` | — | Accessible label for the resize handle |
|
|
33
|
+
|
|
34
|
+
## Usage Example
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import {
|
|
38
|
+
Drawer,
|
|
39
|
+
DrawerTrigger,
|
|
40
|
+
DrawerClose,
|
|
41
|
+
DrawerContent,
|
|
42
|
+
} from "@/components/ui/drawer"
|
|
43
|
+
|
|
44
|
+
// Basic drawer from the right
|
|
45
|
+
function BasicDrawer() {
|
|
46
|
+
return (
|
|
47
|
+
<Drawer>
|
|
48
|
+
<DrawerTrigger asChild>
|
|
49
|
+
<button>Open Panel</button>
|
|
50
|
+
</DrawerTrigger>
|
|
51
|
+
<DrawerContent side="right">
|
|
52
|
+
<p>Drawer content here</p>
|
|
53
|
+
<DrawerClose asChild>
|
|
54
|
+
<button>Close</button>
|
|
55
|
+
</DrawerClose>
|
|
56
|
+
</DrawerContent>
|
|
57
|
+
</Drawer>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Resizable flush chat panel persisted across sessions
|
|
62
|
+
function ChatDrawer() {
|
|
63
|
+
return (
|
|
64
|
+
<Drawer>
|
|
65
|
+
<DrawerTrigger asChild>
|
|
66
|
+
<button>Open Chat</button>
|
|
67
|
+
</DrawerTrigger>
|
|
68
|
+
<DrawerContent
|
|
69
|
+
side="right"
|
|
70
|
+
flush
|
|
71
|
+
resizable
|
|
72
|
+
minSize={280}
|
|
73
|
+
maxSize={800}
|
|
74
|
+
defaultSize={400}
|
|
75
|
+
storageKey="chat-panel-width"
|
|
76
|
+
mobileBreakpoint={768}
|
|
77
|
+
resizeAriaLabel="Resize chat panel"
|
|
78
|
+
>
|
|
79
|
+
<p>Chat content</p>
|
|
80
|
+
</DrawerContent>
|
|
81
|
+
</Drawer>
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> **Resize handle accessibility:** The handle supports keyboard navigation — `ArrowLeft`/`ArrowRight` (or `ArrowUp`/`ArrowDown`) resize in 16px steps; hold `Shift` for 40px steps. `Home`/`End` jump to `minSize`/`maxSize`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 755936e5a23162889a0f4b377887a066 -->
|
|
2
|
+
A styled dropdown trigger button that combines a labeled action area with a rotating chevron indicator, opening a `MoreActionsMenu` on click.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `DropdownButton` | Component | Main trigger button that wraps `MoreActionsMenu` |
|
|
9
|
+
| `DropdownButtonProps` | Interface | Props definition for the component |
|
|
10
|
+
|
|
11
|
+
### Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
|------|------|---------|-------------|
|
|
15
|
+
| `label` | `string` | — | Button label text |
|
|
16
|
+
| `icon` | `ReactNode` | — | Optional leading icon |
|
|
17
|
+
| `items` | `MoreActionsItem[]` | — | Dropdown menu items |
|
|
18
|
+
| `align` | `'start' \| 'center' \| 'end'` | `'end'` | Menu alignment |
|
|
19
|
+
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | Menu opening side |
|
|
20
|
+
| `disabled` | `boolean` | — | Disables interaction |
|
|
21
|
+
|
|
22
|
+
## Key Behaviors
|
|
23
|
+
|
|
24
|
+
- **Single click target** — label and chevron areas are visually separated by a border seam but share one `<button>` element
|
|
25
|
+
- **Open state styles** — background lightens (`ods-bg-hover`) when the menu is open or hovered
|
|
26
|
+
- **Chevron rotation** — animates 180° when the dropdown is open
|
|
27
|
+
- **Disabled guard** — blocks `onOpenChange` and prevents pointer events when `disabled` is set
|
|
28
|
+
|
|
29
|
+
## Usage Example
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { DropdownButton } from './dropdown-button'
|
|
33
|
+
import { SettingsIcon } from '../icons-v2-generated'
|
|
34
|
+
|
|
35
|
+
<DropdownButton
|
|
36
|
+
label="Actions"
|
|
37
|
+
icon={<SettingsIcon />}
|
|
38
|
+
align="end"
|
|
39
|
+
side="bottom"
|
|
40
|
+
items={[
|
|
41
|
+
{ label: 'Edit', onClick: () => console.log('edit') },
|
|
42
|
+
{ label: 'Delete', onClick: () => console.log('delete'), destructive: true },
|
|
43
|
+
]}
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 3405ab77a3bbd5f68b76564b38e7a642 -->
|
|
2
|
+
A client-side React component that renders an entity's avatar image with an automatic initials-based fallback when the image source is unavailable or fails to load.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `EntityImageProps`
|
|
7
|
+
| Prop | Type | Description |
|
|
8
|
+
|------|------|-------------|
|
|
9
|
+
| `src` | `string \| null` | Image URL to display |
|
|
10
|
+
| `alt` | `string` | Alt text for the image and fallback aria-label |
|
|
11
|
+
| `fallbackText` | `string` | Overrides `alt` as the initials source |
|
|
12
|
+
| `className` | `string` | Additional CSS classes |
|
|
13
|
+
|
|
14
|
+
### `EntityImage`
|
|
15
|
+
Main export. Renders an `<img>` tag when a valid `src` is provided and loads successfully. Falls back to a styled `<div>` showing two-letter initials (via `getFirstLastInitials`) or `?` when no initials can be derived.
|
|
16
|
+
|
|
17
|
+
**Fallback triggers:**
|
|
18
|
+
- `src` is `null` or `undefined`
|
|
19
|
+
- Image fires an `onError` event (broken URL, network failure, etc.)
|
|
20
|
+
- Image error state resets automatically when `src` changes
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { EntityImage } from './entity-image'
|
|
26
|
+
|
|
27
|
+
// Renders the avatar image
|
|
28
|
+
<EntityImage
|
|
29
|
+
src="https://cdn.example.com/avatars/acme.png"
|
|
30
|
+
alt="Acme Corp"
|
|
31
|
+
/>
|
|
32
|
+
|
|
33
|
+
// Renders initials fallback "AC" if image fails
|
|
34
|
+
<EntityImage
|
|
35
|
+
src={null}
|
|
36
|
+
alt="Acme Corp"
|
|
37
|
+
className="my-custom-class"
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Override initials source independently from alt text
|
|
41
|
+
<EntityImage
|
|
42
|
+
src="https://cdn.example.com/avatars/john.png"
|
|
43
|
+
alt="User avatar"
|
|
44
|
+
fallbackText="John Doe"
|
|
45
|
+
/>
|
|
46
|
+
```
|
|
@@ -1,44 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 147d509f918f296b0265bcdeb8f2a9c1 -->
|
|
2
|
+
Flexible error state display component for rendering contextual error, warning, and info messages with optional retry and navigation actions.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `ErrorState`
|
|
7
|
+
The core component accepting the following props:
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `title` | `string` | `'Error'` | Heading text displayed above the message |
|
|
12
|
+
| `message` | `string` | — | *(required)* Body text describing the error |
|
|
13
|
+
| `variant` | `'error' \| 'warning' \| 'info'` | `'error'` | Controls color scheme and styling |
|
|
14
|
+
| `showIcon` | `boolean` | `true` | Toggles the `AlertTriangle` icon |
|
|
15
|
+
| `showRetry` | `boolean` | `false` | Shows "Try Again" button when `onRetry` is also provided |
|
|
16
|
+
| `showHome` | `boolean` | `false` | Shows "Go Home" button when `onHome` is also provided |
|
|
17
|
+
| `onRetry` | `() => void` | — | Callback fired on retry button click |
|
|
18
|
+
| `onHome` | `() => void` | — | Callback fired on home button click |
|
|
19
|
+
| `className` | `string` | — | Applied to the inner bordered card |
|
|
20
|
+
| `containerClassName` | `string` | — | Applied to the outer wrapper `div` |
|
|
21
|
+
|
|
22
|
+
### Convenience Components
|
|
23
|
+
|
|
24
|
+
| Component | Variant | Buttons |
|
|
25
|
+
|-----------|---------|---------|
|
|
26
|
+
| `PageError` | `error` | Retry + Home |
|
|
27
|
+
| `LoadError` | `error` | Retry |
|
|
28
|
+
| `NotFoundError` | `warning` | Home |
|
|
10
29
|
|
|
11
30
|
## Usage Example
|
|
12
31
|
|
|
13
32
|
```typescript
|
|
14
33
|
import { ErrorState, PageError, LoadError, NotFoundError } from './error-state'
|
|
15
34
|
|
|
16
|
-
//
|
|
17
|
-
<ErrorState
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/>
|
|
23
|
-
|
|
24
|
-
// Page error with navigation options
|
|
25
|
-
<PageError
|
|
26
|
-
message="Failed to load the dashboard"
|
|
35
|
+
// Full control via ErrorState
|
|
36
|
+
<ErrorState
|
|
37
|
+
title="Connection Failed"
|
|
38
|
+
message="Unable to reach the server."
|
|
39
|
+
variant="warning"
|
|
40
|
+
showRetry
|
|
27
41
|
onRetry={() => refetch()}
|
|
28
|
-
onHome={() => router.push('/')}
|
|
29
42
|
/>
|
|
30
43
|
|
|
31
|
-
//
|
|
32
|
-
<
|
|
33
|
-
message="
|
|
34
|
-
onRetry={() =>
|
|
44
|
+
// Convenience wrappers
|
|
45
|
+
<PageError
|
|
46
|
+
message="Something went wrong loading this page."
|
|
47
|
+
onRetry={() => router.refresh()}
|
|
48
|
+
onHome={() => router.push('/')}
|
|
35
49
|
/>
|
|
36
50
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
onHome={() => navigate('/projects')}
|
|
51
|
+
<LoadError
|
|
52
|
+
message="Failed to load device list."
|
|
53
|
+
onRetry={() => refetch()}
|
|
41
54
|
/>
|
|
42
|
-
```
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
<NotFoundError onHome={() => router.push('/')} />
|
|
57
|
+
```
|