@flamingo-stack/openframe-frontend-core 0.0.439 → 0.0.440
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-RVWC4P3H.js → chunk-2BTDPDME.js} +9 -9
- package/dist/chunk-2BTDPDME.js.map +1 -0
- package/dist/{chunk-G5FALXNO.js → chunk-63TSTDME.js} +21 -21
- package/dist/chunk-63TSTDME.js.map +1 -0
- package/dist/{chunk-4ACSUJ7Q.js → chunk-6CITW5BD.js} +10 -10
- package/dist/chunk-6CITW5BD.js.map +1 -0
- package/dist/{chunk-QXYOGJQJ.js → chunk-7KDR5P23.js} +2 -2
- package/dist/{chunk-PEIR7D25.js → chunk-7KNOHGMI.js} +2 -2
- package/dist/{chunk-ZMUFTGL7.cjs → chunk-7QP65IE4.cjs} +5 -5
- package/dist/{chunk-ZMUFTGL7.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
- package/dist/{chunk-WPVBTVI3.js → chunk-AGV26PUR.js} +6 -6
- package/dist/{chunk-WPVBTVI3.js.map → chunk-AGV26PUR.js.map} +1 -1
- package/dist/{chunk-HTVVXVJL.cjs → chunk-DUQQEQ7G.cjs} +1431 -1594
- package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
- package/dist/{chunk-COMBYYQY.js → chunk-FPE3SQ5D.js} +13 -13
- package/dist/chunk-FPE3SQ5D.js.map +1 -0
- package/dist/{chunk-WAGTZVQN.js → chunk-IAZ5AN2E.js} +30 -30
- package/dist/chunk-IAZ5AN2E.js.map +1 -0
- package/dist/{chunk-RQQZF6G6.cjs → chunk-IPEIOR77.cjs} +130 -130
- package/dist/chunk-IPEIOR77.cjs.map +1 -0
- package/dist/{chunk-3WJQL4DN.cjs → chunk-IZ6A6K6N.cjs} +25 -25
- package/dist/chunk-IZ6A6K6N.cjs.map +1 -0
- package/dist/{chunk-EE5NH5SH.cjs → chunk-J5NO7PAG.cjs} +3 -3
- package/dist/{chunk-EE5NH5SH.cjs.map → chunk-J5NO7PAG.cjs.map} +1 -1
- package/dist/{chunk-IAN7GUIV.cjs → chunk-JNC4LVD6.cjs} +42 -42
- package/dist/chunk-JNC4LVD6.cjs.map +1 -0
- package/dist/{chunk-VWGF6IFR.cjs → chunk-JOH5D76X.cjs} +108 -108
- package/dist/chunk-JOH5D76X.cjs.map +1 -0
- package/dist/{chunk-7WM77CSW.js → chunk-JYI4R25Q.js} +5 -5
- package/dist/chunk-JYI4R25Q.js.map +1 -0
- package/dist/{chunk-M6QGB6DC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
- package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
- package/dist/{chunk-M3LD6DNE.cjs → chunk-LFWPWIAC.cjs} +16 -16
- package/dist/{chunk-M3LD6DNE.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
- package/dist/{chunk-R46QEE3R.cjs → chunk-LUKRPHEW.cjs} +96 -96
- package/dist/chunk-LUKRPHEW.cjs.map +1 -0
- package/dist/{chunk-IMK6RUEC.cjs → chunk-PYR4LVAF.cjs} +10 -10
- package/dist/chunk-PYR4LVAF.cjs.map +1 -0
- package/dist/{chunk-2ELBNZJ3.js → chunk-QAG357PE.js} +7 -7
- package/dist/chunk-QAG357PE.js.map +1 -0
- package/dist/{chunk-N2TJ3HAM.cjs → chunk-QO6MCQYE.cjs} +9 -9
- package/dist/chunk-QO6MCQYE.cjs.map +1 -0
- package/dist/{chunk-EGRZHR7J.js → chunk-SM26C2L7.js} +9 -9
- package/dist/chunk-SM26C2L7.js.map +1 -0
- package/dist/{chunk-AUJXLVXA.cjs → chunk-TAQMYVO6.cjs} +42 -42
- package/dist/{chunk-AUJXLVXA.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
- package/dist/{chunk-C3FH53AP.cjs → chunk-UFBUQO7Z.cjs} +19 -19
- package/dist/{chunk-C3FH53AP.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
- package/dist/{chunk-F7YVI54P.js → chunk-W3JZXLJ2.js} +10 -10
- package/dist/chunk-W3JZXLJ2.js.map +1 -0
- package/dist/{chunk-WZ6TCAYQ.cjs → chunk-XMCVUYKC.cjs} +14 -14
- package/dist/chunk-XMCVUYKC.cjs.map +1 -0
- package/dist/{chunk-P7PISHM5.js → chunk-Y3NFB6HR.js} +5 -5
- package/dist/chunk-Y3NFB6HR.js.map +1 -0
- package/dist/{chunk-PBTY7AH5.js → chunk-YZJUHEPZ.js} +95 -95
- package/dist/chunk-YZJUHEPZ.js.map +1 -0
- package/dist/{chunk-NQQ4NLUT.js → chunk-ZQYFDYWV.js} +4298 -4461
- package/dist/chunk-ZQYFDYWV.js.map +1 -0
- package/dist/components/case-studies/index.cjs +15 -15
- package/dist/components/case-studies/index.cjs.map +1 -1
- package/dist/components/case-studies/index.js +9 -9
- package/dist/components/case-studies/index.js.map +1 -1
- package/dist/components/chat/approval-request-message.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +4 -4
- package/dist/components/chat/index.js +3 -3
- package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
- package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +262 -256
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +117 -111
- package/dist/components/index.js.map +1 -1
- package/dist/components/msp-display.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/pricing-display.d.ts +9 -9
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/toast/index.cjs +5 -5
- package/dist/components/toast/index.cjs.map +1 -1
- package/dist/components/toast/index.js +5 -5
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/ui/bullet-list.d.ts.map +1 -1
- package/dist/components/ui/drawer.d.ts +1 -1
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +73 -73
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +24 -24
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.js +3 -3
- package/dist/components/ui/markdown-editor.d.ts.map +1 -1
- package/dist/components/ui/square-avatar.d.ts +3 -0
- package/dist/components/ui/square-avatar.d.ts.map +1 -1
- package/dist/components/user-display.d.ts.map +1 -1
- package/dist/components/vendor-tag.d.ts.map +1 -1
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.js +3 -3
- package/dist/tailwind.config.cjs +38 -5
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +38 -5
- package/dist/tailwind.config.js.map +1 -1
- package/package.json +1 -1
- package/src/ODS_TOKEN_RULES.md +5 -0
- package/src/components/.footer.md +2 -2
- package/src/components/announcement-bar.tsx +1 -1
- package/src/components/authors/author-detail-view.tsx +3 -3
- package/src/components/calendar.tsx +2 -2
- package/src/components/case-studies/share-experience-section.tsx +5 -5
- package/src/components/categories-cart.tsx +6 -6
- package/src/components/category-card.tsx +5 -5
- package/src/components/chart.tsx +3 -3
- package/src/components/chat/approval-request-message.tsx +2 -5
- package/src/components/chat/chat-attachment-bar.tsx +3 -3
- package/src/components/chat/chat-message-enhanced.tsx +1 -1
- package/src/components/chat/chat-message-list.tsx +1 -1
- package/src/components/chat/chat-message-row.tsx +3 -3
- package/src/components/chat/chat-quick-action.tsx +1 -1
- package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
- package/src/components/chat/chat-sidebar.tsx +6 -6
- package/src/components/chat/chat-typing-indicator.tsx +1 -1
- package/src/components/chat/context-compaction-display.tsx +1 -1
- package/src/components/chat/embeddable-chat.tsx +3 -3
- package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
- package/src/components/chat/entity-cards/blog-card.tsx +5 -8
- package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
- package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
- package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
- package/src/components/chat/entity-cards/dispatch.tsx +1 -1
- package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
- package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
- package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
- package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
- package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
- package/src/components/chat/entity-cards/program-card.tsx +12 -12
- package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
- package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
- package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
- package/src/components/chat/error-message-display.tsx +2 -2
- package/src/components/chat/mingo-info-card.tsx +2 -2
- package/src/components/chat/model-display.tsx +7 -7
- package/src/components/chat/quick-action-chip.tsx +1 -1
- package/src/components/chat/source-action-button.tsx +2 -2
- package/src/components/chat/tool-call-blocks.tsx +3 -5
- package/src/components/chat/utils/.chip-action-class.md +1 -1
- package/src/components/chat/utils/.chip-styles.md +2 -2
- package/src/components/chat/utils/chip-action-class.ts +1 -1
- package/src/components/chat/utils/chip-styles.ts +2 -2
- package/src/components/chat/utils/compact-card-classes.ts +3 -3
- package/src/components/command.tsx +3 -3
- package/src/components/comment-card.tsx +1 -1
- package/src/components/contact/contact-form.tsx +9 -9
- package/src/components/context-menu.tsx +5 -5
- package/src/components/date-time-picker.tsx +2 -2
- package/src/components/docs/doc-viewer.tsx +4 -4
- package/src/components/embeds/figma-embed.tsx +2 -2
- package/src/components/embeds/file-download-card.tsx +2 -2
- package/src/components/embeds/google-sheets-viewer.tsx +1 -1
- package/src/components/embeds/linkedin-embed-client.tsx +3 -3
- package/src/components/embeds/og-link-preview.tsx +14 -14
- package/src/components/embeds/pdf-viewer.tsx +1 -1
- package/src/components/embeds/reddit-embed-client.tsx +9 -9
- package/src/components/embeds/twitter-embed-client.tsx +9 -9
- package/src/components/empty-state.tsx +5 -5
- package/src/components/faq/faq-section.tsx +1 -1
- package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
- package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
- package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
- package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
- package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
- package/src/components/features/array-entry-manager.tsx +7 -7
- package/src/components/features/auth-providers-list.tsx +1 -1
- package/src/components/features/board/ticket-card.tsx +1 -1
- package/src/components/features/changelog-manager.tsx +10 -10
- package/src/components/features/command-box.tsx +2 -2
- package/src/components/features/entity-summary-editor.tsx +3 -3
- package/src/components/features/figma-prototype-viewer.tsx +9 -9
- package/src/components/features/filters-dropdown.tsx +2 -2
- package/src/components/features/highlight-config-section.tsx +3 -3
- package/src/components/features/highlight-video-combined-section.tsx +2 -2
- package/src/components/features/highlight-video-preview.tsx +2 -2
- package/src/components/features/highlight-video-section.tsx +9 -9
- package/src/components/features/media-gallery-manager.tsx +14 -14
- package/src/components/features/og-editor-preview.tsx +4 -4
- package/src/components/features/os-type-badge-group.tsx +1 -1
- package/src/components/features/os-type-badge.tsx +2 -2
- package/src/components/features/platform-badge.tsx +4 -4
- package/src/components/features/policy-configuration-panel.tsx +6 -6
- package/src/components/features/provider-button.tsx +1 -1
- package/src/components/features/push-button-selector.tsx +21 -21
- package/src/components/features/release-media-manager.tsx +16 -16
- package/src/components/features/section-selector.tsx +8 -8
- package/src/components/features/select-button.tsx +4 -4
- package/src/components/features/seo-editor-preview.tsx +20 -20
- package/src/components/features/social-links-manager.tsx +3 -3
- package/src/components/features/start-with-openframe-button.tsx +3 -3
- package/src/components/features/status-filter-component.tsx +1 -1
- package/src/components/features/tags-selector.tsx +6 -6
- package/src/components/features/transcript-summary-editor.tsx +9 -9
- package/src/components/features/video-bites-strip.tsx +1 -1
- package/src/components/features/video-ratio-tabs.tsx +1 -1
- package/src/components/features/video-source-selector.tsx +7 -7
- package/src/components/features/video.tsx +1 -1
- package/src/components/features/waitlist-form.tsx +3 -3
- package/src/components/filter-chip.tsx +13 -13
- package/src/components/footer.tsx +3 -3
- package/src/components/form.tsx +2 -2
- package/src/components/hero-image-uploader.tsx +3 -3
- package/src/components/image-cropper.tsx +2 -2
- package/src/components/layout/page-container.tsx +6 -6
- package/src/components/layout/page-heading.tsx +1 -1
- package/src/components/loading/card-skeleton.tsx +2 -2
- package/src/components/loading/category-card-skeleton.tsx +1 -1
- package/src/components/loading/margin-report-skeleton.tsx +22 -22
- package/src/components/loading/openmsp-heartbeat.tsx +1 -1
- package/src/components/loading/page-layout-skeleton.tsx +83 -83
- package/src/components/loading/unified-skeleton.tsx +1 -1
- package/src/components/loading/users-grid-skeleton.tsx +2 -2
- package/src/components/logs-list.tsx +8 -8
- package/src/components/media-carousel.tsx +7 -7
- package/src/components/metric-value.tsx +2 -2
- package/src/components/msp-display.tsx +8 -2
- package/src/components/navigation/app-header.tsx +6 -6
- package/src/components/navigation/header-organization-filter.tsx +2 -2
- package/src/components/navigation/header.tsx +4 -4
- package/src/components/navigation/mobile-burger-menu.tsx +7 -7
- package/src/components/navigation/mobile-nav-panel.tsx +1 -1
- package/src/components/navigation/multi-level-navigation.tsx +7 -7
- package/src/components/navigation/navigation-sidebar.tsx +1 -1
- package/src/components/navigation/sticky-section-nav.tsx +2 -2
- package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
- package/src/components/pagination.tsx +2 -2
- package/src/components/persistent-filter-controls.tsx +1 -1
- package/src/components/platform/.ShellTypeBadge.md +1 -1
- package/src/components/platform/CveLink.tsx +1 -1
- package/src/components/platform/ScriptArguments.tsx +2 -2
- package/src/components/platform/ScriptInfoSection.tsx +5 -5
- package/src/components/platform/ShellTypeBadge.tsx +6 -6
- package/src/components/platform/SoftwareInfo.tsx +2 -2
- package/src/components/pricing-display.tsx +9 -9
- package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
- package/src/components/related-content/related-content-section.tsx +3 -3
- package/src/components/results-count.tsx +1 -1
- package/src/components/shared/delivery/delivery-row.tsx +1 -1
- package/src/components/shared/delivery/delivery-table.tsx +1 -1
- package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
- package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
- package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
- package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
- package/src/components/shared/product-release/product-release-card.tsx +14 -14
- package/src/components/shared/product-release/release-detail-page.tsx +16 -16
- package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
- package/src/components/smooth-accordion.tsx +1 -1
- package/src/components/social-icon-row.tsx +1 -1
- package/src/components/sonner.tsx +5 -5
- package/src/components/steps.tsx +3 -3
- package/src/components/tickets/help-center-create-form.tsx +1 -1
- package/src/components/tickets/help-center-list.tsx +1 -1
- package/src/components/tickets/ticket-center.tsx +2 -2
- package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
- package/src/components/tickets/ticket-open-form.tsx +6 -6
- package/src/components/ui/.title-content-block.md +1 -1
- package/src/components/ui/accordion.tsx +2 -2
- package/src/components/ui/actions-menu.tsx +1 -1
- package/src/components/ui/alert-dialog.tsx +3 -3
- package/src/components/ui/alert.tsx +2 -2
- package/src/components/ui/allowed-domains-input.tsx +3 -3
- package/src/components/ui/autocomplete.tsx +3 -3
- package/src/components/ui/badge.tsx +2 -2
- package/src/components/ui/brand-association-card.tsx +2 -2
- package/src/components/ui/breadcrumb.tsx +3 -3
- package/src/components/ui/bullet-list.tsx +2 -2
- package/src/components/ui/button/button.tsx +1 -1
- package/src/components/ui/card.tsx +4 -4
- package/src/components/ui/checkbox-with-description.tsx +1 -1
- package/src/components/ui/chevron-button.tsx +1 -1
- package/src/components/ui/content-loader.tsx +16 -16
- package/src/components/ui/cursor-pagination.tsx +1 -1
- package/src/components/ui/date-picker.tsx +2 -2
- package/src/components/ui/device-card-compact.tsx +2 -2
- package/src/components/ui/device-card.tsx +3 -3
- package/src/components/ui/dialog.tsx +3 -3
- package/src/components/ui/drawer.tsx +4 -4
- package/src/components/ui/dropdown-menu.tsx +6 -6
- package/src/components/ui/error-state.tsx +9 -9
- package/src/components/ui/fade-preview.tsx +1 -1
- package/src/components/ui/field-wrapper.tsx +1 -1
- package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
- package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
- package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
- package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
- package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
- package/src/components/ui/file-upload.tsx +9 -9
- package/src/components/ui/filter-pill-row.tsx +1 -1
- package/src/components/ui/floating-tooltip.tsx +1 -1
- package/src/components/ui/highlight-card.tsx +1 -1
- package/src/components/ui/hover-dropdown.tsx +1 -1
- package/src/components/ui/image-gallery-modal.tsx +1 -1
- package/src/components/ui/info-row.tsx +1 -1
- package/src/components/ui/input.tsx +1 -1
- package/src/components/ui/label.tsx +5 -5
- package/src/components/ui/markdown-editor.tsx +4 -5
- package/src/components/ui/menubar.tsx +7 -7
- package/src/components/ui/modal-v2.tsx +1 -1
- package/src/components/ui/modal.tsx +1 -1
- package/src/components/ui/more-actions-menu.tsx +1 -1
- package/src/components/ui/navigation-menu.tsx +1 -1
- package/src/components/ui/organization-card.tsx +8 -8
- package/src/components/ui/page-loader.tsx +6 -6
- package/src/components/ui/phone-input.tsx +1 -1
- package/src/components/ui/progress-bar.tsx +5 -5
- package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
- package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
- package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
- package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
- package/src/components/ui/release-changelog-section.tsx +2 -2
- package/src/components/ui/rich-markdown-renderer.tsx +6 -6
- package/src/components/ui/search-input.tsx +7 -7
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/service-card.tsx +4 -4
- package/src/components/ui/sheet.tsx +3 -3
- package/src/components/ui/simple-markdown-renderer.tsx +4 -4
- package/src/components/ui/square-avatar.tsx +9 -5
- package/src/components/ui/status-badge.tsx +11 -11
- package/src/components/ui/status-indicator.tsx +6 -6
- package/src/components/ui/tab-content.tsx +1 -1
- package/src/components/ui/tab-navigation.tsx +2 -2
- package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
- package/src/components/ui/table/table-description-cell.tsx +1 -1
- package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
- package/src/components/ui/table/table.tsx +2 -2
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/tag-search-input.tsx +1 -1
- package/src/components/ui/tag.tsx +23 -23
- package/src/components/ui/tags-input.tsx +2 -2
- package/src/components/ui/ticket-status-tag.tsx +1 -1
- package/src/components/ui/toaster.tsx +8 -8
- package/src/components/ui/toggle.tsx +1 -1
- package/src/components/ui/tooltip.tsx +1 -1
- package/src/components/user-display.tsx +12 -6
- package/src/components/user-summary-stub.tsx +4 -4
- package/src/components/vendor-display-button.tsx +2 -2
- package/src/components/vendor-icon.tsx +1 -1
- package/src/components/vendor-tag.tsx +9 -10
- package/src/components/yes-no-display.tsx +3 -3
- package/src/styles/ods-colors.css +2 -0
- package/tailwind.config.ts +49 -4
- package/dist/chunk-2ELBNZJ3.js.map +0 -1
- package/dist/chunk-3WJQL4DN.cjs.map +0 -1
- package/dist/chunk-4ACSUJ7Q.js.map +0 -1
- package/dist/chunk-7WM77CSW.js.map +0 -1
- package/dist/chunk-COMBYYQY.js.map +0 -1
- package/dist/chunk-EGRZHR7J.js.map +0 -1
- package/dist/chunk-F7YVI54P.js.map +0 -1
- package/dist/chunk-G5FALXNO.js.map +0 -1
- package/dist/chunk-HTVVXVJL.cjs.map +0 -1
- package/dist/chunk-IAN7GUIV.cjs.map +0 -1
- package/dist/chunk-IMK6RUEC.cjs.map +0 -1
- package/dist/chunk-M6QGB6DC.cjs.map +0 -1
- package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
- package/dist/chunk-NQQ4NLUT.js.map +0 -1
- package/dist/chunk-P7PISHM5.js.map +0 -1
- package/dist/chunk-PBTY7AH5.js.map +0 -1
- package/dist/chunk-R46QEE3R.cjs.map +0 -1
- package/dist/chunk-RQQZF6G6.cjs.map +0 -1
- package/dist/chunk-RVWC4P3H.js.map +0 -1
- package/dist/chunk-VWGF6IFR.cjs.map +0 -1
- package/dist/chunk-WAGTZVQN.js.map +0 -1
- package/dist/chunk-WZ6TCAYQ.cjs.map +0 -1
- package/dist/components/accordion.d.ts +0 -8
- package/dist/components/accordion.d.ts.map +0 -1
- package/dist/components/alert-dialog.d.ts +0 -21
- package/dist/components/alert-dialog.d.ts.map +0 -1
- package/dist/components/alert.d.ts +0 -9
- package/dist/components/alert.d.ts.map +0 -1
- package/dist/components/badge.d.ts +0 -10
- package/dist/components/badge.d.ts.map +0 -1
- package/dist/components/breadcrumb.d.ts +0 -20
- package/dist/components/breadcrumb.d.ts.map +0 -1
- package/dist/components/chevron-button.d.ts +0 -14
- package/dist/components/chevron-button.d.ts.map +0 -1
- package/dist/components/dialog.d.ts +0 -29
- package/dist/components/dialog.d.ts.map +0 -1
- package/dist/components/dropdown-menu.d.ts +0 -28
- package/dist/components/dropdown-menu.d.ts.map +0 -1
- package/dist/components/input.d.ts +0 -8
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/label.d.ts +0 -6
- package/dist/components/label.d.ts.map +0 -1
- package/dist/components/menubar.d.ts +0 -34
- package/dist/components/menubar.d.ts.map +0 -1
- package/dist/components/navigation-menu.d.ts +0 -13
- package/dist/components/navigation-menu.d.ts.map +0 -1
- package/dist/components/select.d.ts +0 -14
- package/dist/components/select.d.ts.map +0 -1
- package/dist/components/sidebar.d.ts +0 -67
- package/dist/components/sidebar.d.ts.map +0 -1
- package/dist/components/square-avatar.d.ts +0 -21
- package/dist/components/square-avatar.d.ts.map +0 -1
- package/dist/components/table.d.ts +0 -11
- package/dist/components/table.d.ts.map +0 -1
- package/dist/components/tabs.d.ts +0 -18
- package/dist/components/tabs.d.ts.map +0 -1
- package/dist/components/toggle.d.ts +0 -13
- package/dist/components/toggle.d.ts.map +0 -1
- package/src/components/.accordion.md +0 -42
- package/src/components/.alert-dialog.md +0 -58
- package/src/components/.alert.md +0 -43
- package/src/components/.badge.md +0 -40
- package/src/components/.breadcrumb.md +0 -54
- package/src/components/.chevron-button.md +0 -46
- package/src/components/.dialog.md +0 -60
- package/src/components/.dropdown-menu.md +0 -51
- package/src/components/.input.md +0 -40
- package/src/components/.label.md +0 -41
- package/src/components/.menubar.md +0 -49
- package/src/components/.navigation-menu.md +0 -44
- package/src/components/.select.md +0 -54
- package/src/components/.sidebar.md +0 -58
- package/src/components/.square-avatar.md +0 -42
- package/src/components/.table.md +0 -51
- package/src/components/.tabs.md +0 -38
- package/src/components/.toggle.md +0 -49
- package/src/components/accordion.tsx +0 -56
- package/src/components/alert-dialog.tsx +0 -141
- package/src/components/alert.tsx +0 -59
- package/src/components/badge.tsx +0 -30
- package/src/components/breadcrumb.tsx +0 -115
- package/src/components/chevron-button.tsx +0 -68
- package/src/components/dialog.tsx +0 -150
- package/src/components/dropdown-menu.tsx +0 -200
- package/src/components/input.tsx +0 -39
- package/src/components/label.tsx +0 -19
- package/src/components/menubar.tsx +0 -236
- package/src/components/navigation-menu.tsx +0 -128
- package/src/components/select.tsx +0 -160
- package/src/components/sidebar.tsx +0 -764
- package/src/components/square-avatar.tsx +0 -61
- package/src/components/table.tsx +0 -72
- package/src/components/tabs.tsx +0 -65
- package/src/components/toggle.tsx +0 -45
- /package/dist/{chunk-QXYOGJQJ.js.map → chunk-7KDR5P23.js.map} +0 -0
- /package/dist/{chunk-PEIR7D25.js.map → chunk-7KNOHGMI.js.map} +0 -0
|
@@ -61,14 +61,14 @@ export function ServiceCard({ title, subtitle, icon, tag, rows, className }: Ser
|
|
|
61
61
|
{resolvedIcon}
|
|
62
62
|
</div>
|
|
63
63
|
<div className="min-w-0">
|
|
64
|
-
<div className="text-
|
|
64
|
+
<div className="text-h3 text-ods-text-primary truncate" title={title}>{title}</div>
|
|
65
65
|
{subtitle && (
|
|
66
|
-
<div className="text-
|
|
66
|
+
<div className="text-h6 text-ods-text-secondary truncate" title={subtitle}>{subtitle}</div>
|
|
67
67
|
)}
|
|
68
68
|
</div>
|
|
69
69
|
</div>
|
|
70
70
|
{tag && (
|
|
71
|
-
<div className="px-3 py-1 rounded-full bg-ods-bg text-ods-text-primary text-
|
|
71
|
+
<div className="px-3 py-1 rounded-full bg-ods-bg text-ods-text-primary text-h6 font-semibold whitespace-nowrap self-start border border-ods-border">
|
|
72
72
|
{tag.label}
|
|
73
73
|
</div>
|
|
74
74
|
)}
|
|
@@ -101,7 +101,7 @@ function ServiceCardRowItem({ row }: { row: ServiceCardRow }) {
|
|
|
101
101
|
return (
|
|
102
102
|
<div className="flex items-center gap-3 min-w-0">
|
|
103
103
|
{row.label && (
|
|
104
|
-
<div className="w-20 md:w-24 shrink-0 text-
|
|
104
|
+
<div className="w-20 md:w-24 shrink-0 text-h6 text-ods-text-primary">{row.label}</div>
|
|
105
105
|
)}
|
|
106
106
|
<div className={cn('flex-1 h-12 rounded-md border border-ods-border bg-ods-bg px-3 md:px-4 flex items-center justify-between min-w-0', row.monospace ? 'font-mono' : '')}>
|
|
107
107
|
<div className="truncate text-ods-text-primary min-w-0" title={typeof row.value === 'string' ? row.value : undefined}>{displayValue}</div>
|
|
@@ -21,7 +21,7 @@ const SheetOverlay = React.forwardRef<
|
|
|
21
21
|
>(({ className, ...props }, ref) => (
|
|
22
22
|
<SheetPrimitive.Overlay
|
|
23
23
|
className={cn(
|
|
24
|
-
"fixed inset-0 z-[9997] bg-
|
|
24
|
+
"fixed inset-0 z-[9997] bg-ods-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
25
25
|
className
|
|
26
26
|
)}
|
|
27
27
|
{...props}
|
|
@@ -108,7 +108,7 @@ const SheetTitle = React.forwardRef<
|
|
|
108
108
|
>(({ className, ...props }, ref) => (
|
|
109
109
|
<SheetPrimitive.Title
|
|
110
110
|
ref={ref}
|
|
111
|
-
className={cn("text-
|
|
111
|
+
className={cn("text-h3 text-foreground", className)}
|
|
112
112
|
{...props}
|
|
113
113
|
/>
|
|
114
114
|
))
|
|
@@ -120,7 +120,7 @@ const SheetDescription = React.forwardRef<
|
|
|
120
120
|
>(({ className, ...props }, ref) => (
|
|
121
121
|
<SheetPrimitive.Description
|
|
122
122
|
ref={ref}
|
|
123
|
-
className={cn("text-
|
|
123
|
+
className={cn("text-h6 text-muted-foreground", className)}
|
|
124
124
|
{...props}
|
|
125
125
|
/>
|
|
126
126
|
))
|
|
@@ -698,7 +698,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
|
|
|
698
698
|
style={{
|
|
699
699
|
fontFamily: "JetBrains Mono', 'SF Mono', Consolas, monospace",
|
|
700
700
|
background: 'transparent',
|
|
701
|
-
color: 'var(--
|
|
701
|
+
color: 'var(--color-text-primary)',
|
|
702
702
|
}}
|
|
703
703
|
{...props}
|
|
704
704
|
>
|
|
@@ -724,7 +724,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
|
|
|
724
724
|
|
|
725
725
|
// --- blockquote ---
|
|
726
726
|
blockquote: ({ children }: any) => (
|
|
727
|
-
<blockquote className="border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-
|
|
727
|
+
<blockquote className="border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-surface">
|
|
728
728
|
<div className={cn('font-sans leading-relaxed text-ods-text-secondary', textSizes.blockquote)}>
|
|
729
729
|
{children}
|
|
730
730
|
</div>
|
|
@@ -760,7 +760,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
|
|
|
760
760
|
return (
|
|
761
761
|
<span className="text-ods-accent cursor-not-allowed">
|
|
762
762
|
{children}
|
|
763
|
-
<sup className="ml-1 text-xs font-bold text-ods-
|
|
763
|
+
<sup className="ml-1 text-xs font-bold text-ods-error">[BROKEN]</sup>
|
|
764
764
|
</span>
|
|
765
765
|
);
|
|
766
766
|
}
|
|
@@ -898,7 +898,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
|
|
|
898
898
|
</div>
|
|
899
899
|
),
|
|
900
900
|
thead: ({ children }: any) => (
|
|
901
|
-
<thead className="bg-ods-bg-
|
|
901
|
+
<thead className="bg-ods-bg-surface">{children}</thead>
|
|
902
902
|
),
|
|
903
903
|
th: ({ children }: any) => (
|
|
904
904
|
<th className={cn('px-2 md:px-4 py-3 text-left font-semibold text-ods-accent border-r last:border-r-0 break-words border-ods-border', textSizes.th)}>
|
|
@@ -9,6 +9,9 @@ interface SquareAvatarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
9
9
|
src?: string;
|
|
10
10
|
alt?: string;
|
|
11
11
|
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
12
|
+
/** Exact pixel size (width & height). Overrides the `size` bucket dimensions —
|
|
13
|
+
* for callers with a numeric-px API (e.g. UserDisplay/MSPDisplay). */
|
|
14
|
+
sizePx?: number;
|
|
12
15
|
fallback?: string;
|
|
13
16
|
variant?: 'square' | 'round';
|
|
14
17
|
/** Override the initials-fallback styling (font size/color). Merged over the
|
|
@@ -18,7 +21,7 @@ interface SquareAvatarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarProps>(
|
|
21
|
-
({ className, src, alt, size = 'md', fallback, variant = 'square', initialsClassName, ...props }, ref) => {
|
|
24
|
+
({ className, src, alt, size = 'md', sizePx, fallback, variant = 'square', initialsClassName, style, ...props }, ref) => {
|
|
22
25
|
const sizeClasses = {
|
|
23
26
|
sm: 'h-8 w-8',
|
|
24
27
|
md: 'h-10 w-10',
|
|
@@ -26,7 +29,7 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
|
|
|
26
29
|
xl: 'h-16 w-16'
|
|
27
30
|
};
|
|
28
31
|
|
|
29
|
-
const
|
|
32
|
+
const sizePxBySize = {
|
|
30
33
|
sm: 32,
|
|
31
34
|
md: 40,
|
|
32
35
|
lg: 48,
|
|
@@ -42,10 +45,11 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
|
|
|
42
45
|
<div
|
|
43
46
|
className={cn(
|
|
44
47
|
"relative flex items-center justify-center shrink-0 overflow-hidden border border-ods-border bg-ods-bg",
|
|
45
|
-
sizeClasses[size],
|
|
48
|
+
sizePx === undefined && sizeClasses[size],
|
|
46
49
|
variantClasses[variant],
|
|
47
50
|
className
|
|
48
51
|
)}
|
|
52
|
+
style={sizePx === undefined ? style : { width: sizePx, height: sizePx, ...style }}
|
|
49
53
|
ref={ref}
|
|
50
54
|
{...props}
|
|
51
55
|
>
|
|
@@ -71,8 +75,8 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
|
|
|
71
75
|
className="absolute -inset-px h-[calc(100%+2px)] w-[calc(100%+2px)] max-w-none object-cover"
|
|
72
76
|
src={src}
|
|
73
77
|
alt={alt || ''}
|
|
74
|
-
width={sizePx[size]}
|
|
75
|
-
height={sizePx[size]}
|
|
78
|
+
width={sizePx ?? sizePxBySize[size]}
|
|
79
|
+
height={sizePx ?? sizePxBySize[size]}
|
|
76
80
|
onError={(e) => {
|
|
77
81
|
e.currentTarget.style.display = 'none';
|
|
78
82
|
const el = e.currentTarget.previousElementSibling as HTMLElement;
|
|
@@ -5,26 +5,26 @@ import { cn } from '../../utils/cn';
|
|
|
5
5
|
import { cva, type VariantProps } from 'class-variance-authority';
|
|
6
6
|
|
|
7
7
|
const statusBadgeVariants = cva(
|
|
8
|
-
"inline-flex items-center justify-center rounded
|
|
8
|
+
"inline-flex items-center justify-center rounded",
|
|
9
9
|
{
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
12
|
-
card: "px-3 py-1.5 text-
|
|
13
|
-
button: "px-2 py-0.5 text-
|
|
12
|
+
card: "px-3 py-1.5 text-h5",
|
|
13
|
+
button: "px-2 py-0.5 text-h5",
|
|
14
14
|
},
|
|
15
15
|
colorScheme: {
|
|
16
16
|
cyan: "bg-[var(--ods-flamingo-cyan-base)] text-ods-text-on-accent",
|
|
17
17
|
pink: "bg-[var(--ods-flamingo-pink-base)] text-ods-text-on-accent",
|
|
18
|
-
yellow: "bg-
|
|
19
|
-
green: "bg-
|
|
20
|
-
purple: "bg-
|
|
21
|
-
success: "bg-
|
|
22
|
-
error: "bg-
|
|
23
|
-
warning: "bg-
|
|
24
|
-
default: "bg-ods-bg-
|
|
18
|
+
yellow: "bg-ods-accent text-ods-text-on-accent border border-[var(--ods-system-greys-black)]",
|
|
19
|
+
green: "bg-ods-success text-ods-text-on-accent",
|
|
20
|
+
purple: "bg-ods-flamingo-pink text-ods-text-on-accent",
|
|
21
|
+
success: "bg-ods-success-secondary text-ods-success",
|
|
22
|
+
error: "bg-ods-error-secondary text-ods-error",
|
|
23
|
+
warning: "bg-ods-warning-secondary text-ods-warning",
|
|
24
|
+
default: "bg-ods-bg-surface text-ods-text-primary",
|
|
25
25
|
// Border-only variants (no background) - for task type badges
|
|
26
26
|
accentBorder: "bg-transparent border-2 text-ods-accent border-ods-accent",
|
|
27
|
-
errorBorder: "bg-transparent border-2 text-
|
|
27
|
+
errorBorder: "bg-transparent border-2 text-ods-error border-ods-error",
|
|
28
28
|
whiteBorder: "bg-transparent border-2 text-ods-text-primary border-ods-text-primary",
|
|
29
29
|
},
|
|
30
30
|
},
|
|
@@ -10,15 +10,15 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
|
|
|
10
10
|
const getStatusColor = (status: string) => {
|
|
11
11
|
switch (status) {
|
|
12
12
|
case 'success':
|
|
13
|
-
return 'bg-
|
|
13
|
+
return 'bg-ods-success text-ods-success';
|
|
14
14
|
case 'pending':
|
|
15
|
-
return 'bg-
|
|
15
|
+
return 'bg-ods-warning text-ods-warning';
|
|
16
16
|
case 'error':
|
|
17
|
-
return 'bg-
|
|
17
|
+
return 'bg-ods-error text-ods-error';
|
|
18
18
|
case 'missing':
|
|
19
|
-
return 'bg-
|
|
19
|
+
return 'bg-ods-warning text-ods-warning';
|
|
20
20
|
default:
|
|
21
|
-
return 'bg-
|
|
21
|
+
return 'bg-ods-text-muted text-ods-text-muted';
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
|
|
@@ -28,7 +28,7 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
|
|
|
28
28
|
const content = (
|
|
29
29
|
<div className="flex items-center gap-1.5">
|
|
30
30
|
<div className={`h-3 w-3 rounded-full ${dotColor}`} />
|
|
31
|
-
<span className={`text-
|
|
31
|
+
<span className={`text-h6 ${textColor}`}>
|
|
32
32
|
{label}
|
|
33
33
|
</span>
|
|
34
34
|
</div>
|
|
@@ -31,7 +31,7 @@ export function TabContent({
|
|
|
31
31
|
) : (
|
|
32
32
|
<div className={cn(minHeight, "flex items-center justify-center")}>
|
|
33
33
|
<div className="text-center">
|
|
34
|
-
<h3 className="text-
|
|
34
|
+
<h3 className="text-h3 text-ods-text-primary mb-2">
|
|
35
35
|
{emptyStateTitle}
|
|
36
36
|
</h3>
|
|
37
37
|
<p className="text-ods-text-secondary">
|
|
@@ -247,7 +247,7 @@ export function TabNavigation({
|
|
|
247
247
|
"absolute right-0 top-[-3px] w-3 h-3 rounded-full border-2 border-ods-bg",
|
|
248
248
|
tab.indicator === 'error' && 'bg-ods-error',
|
|
249
249
|
tab.indicator === 'warning' && 'bg-ods-accent',
|
|
250
|
-
tab.indicator === 'success' && 'bg-
|
|
250
|
+
tab.indicator === 'success' && 'bg-ods-success'
|
|
251
251
|
)} />
|
|
252
252
|
)}
|
|
253
253
|
</div>
|
|
@@ -258,7 +258,7 @@ export function TabNavigation({
|
|
|
258
258
|
"w-3 h-3 shrink-0 rounded-full border-2 border-ods-bg",
|
|
259
259
|
tab.indicator === 'error' && 'bg-ods-error',
|
|
260
260
|
tab.indicator === 'warning' && 'bg-ods-accent',
|
|
261
|
-
tab.indicator === 'success' && 'bg-
|
|
261
|
+
tab.indicator === 'success' && 'bg-ods-success'
|
|
262
262
|
)} />
|
|
263
263
|
) : null}
|
|
264
264
|
|
|
@@ -42,7 +42,7 @@ export function TableColumnFilterDropdown({
|
|
|
42
42
|
className="flex items-center gap-1.5 rounded px-1 py-0.5 cursor-pointer hover:bg-ods-bg-active transition-all duration-200"
|
|
43
43
|
aria-label={`Filter by ${columnLabel}`}
|
|
44
44
|
>
|
|
45
|
-
<span className="
|
|
45
|
+
<span className="text-h5 text-ods-text-secondary select-none">
|
|
46
46
|
{columnLabel}
|
|
47
47
|
</span>
|
|
48
48
|
<Filter02Icon
|
|
@@ -33,7 +33,7 @@ export function TableDescriptionCell({
|
|
|
33
33
|
<div className="flex flex-col justify-center">
|
|
34
34
|
<span
|
|
35
35
|
className={cn(
|
|
36
|
-
"
|
|
36
|
+
"text-h6 text-ods-text-secondary break-words",
|
|
37
37
|
maxLines === 1 && "truncate",
|
|
38
38
|
maxLines === 2 && "line-clamp-2",
|
|
39
39
|
maxLines === 3 && "line-clamp-3",
|
|
@@ -74,7 +74,7 @@ export function TableTimestampCell({
|
|
|
74
74
|
<span className="text-h4 text-ods-text-primary truncate">
|
|
75
75
|
{displayTimestamp}
|
|
76
76
|
</span>
|
|
77
|
-
<span className="
|
|
77
|
+
<span className="text-h6 text-ods-text-secondary truncate">
|
|
78
78
|
{idLabel ? `${idLabel}: ${id}` : id}
|
|
79
79
|
</span>
|
|
80
80
|
</div>
|
|
@@ -203,7 +203,7 @@ export function Table<T = any>({
|
|
|
203
203
|
{/* Toolbar for bulk actions */}
|
|
204
204
|
{showToolbar && bulkActions && selectedRows.length > 0 && (
|
|
205
205
|
<div className="flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2">
|
|
206
|
-
<span className="text-ods-text-secondary text-
|
|
206
|
+
<span className="text-ods-text-secondary text-h6">
|
|
207
207
|
{selectedRows.length} item{selectedRows.length !== 1 ? 's' : ''} selected
|
|
208
208
|
</span>
|
|
209
209
|
<div className="flex gap-2">
|
|
@@ -213,7 +213,7 @@ export function Table<T = any>({
|
|
|
213
213
|
onClick={() => action.onClick(selectedRows)}
|
|
214
214
|
disabled={action.requiresSelection && selectedRows.length === 0}
|
|
215
215
|
className={cn(
|
|
216
|
-
"px-3 py-1.5 text-
|
|
216
|
+
"px-3 py-1.5 text-h6 rounded border transition-colors",
|
|
217
217
|
"bg-ods-card border-ods-border hover:bg-ods-bg-active text-ods-text-primary",
|
|
218
218
|
action.className
|
|
219
219
|
)}
|
|
@@ -39,7 +39,7 @@ const TabsTrigger = React.forwardRef<
|
|
|
39
39
|
<TabsPrimitive.Trigger
|
|
40
40
|
ref={ref}
|
|
41
41
|
className={cn(
|
|
42
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-
|
|
42
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-h6 ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
|
|
43
43
|
className
|
|
44
44
|
)}
|
|
45
45
|
{...props}
|
|
@@ -177,7 +177,7 @@ export function TagSearchInput<T = string>({
|
|
|
177
177
|
className={cn(
|
|
178
178
|
"flex items-center h-8 px-2",
|
|
179
179
|
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
180
|
-
"
|
|
180
|
+
"text-h5 text-ods-text-secondary",
|
|
181
181
|
"hover:bg-ods-bg-hover transition-colors cursor-pointer",
|
|
182
182
|
)}
|
|
183
183
|
>
|
|
@@ -16,54 +16,54 @@ const tagVariants = cva(
|
|
|
16
16
|
// is the Figma "Feature Item" chip (48px, h3 bold body label) used by
|
|
17
17
|
// chip groups acting as tabs (OpenFrame categories).
|
|
18
18
|
size: {
|
|
19
|
-
default: "text-h5 h-8 gap-[var(--spacing-system-
|
|
19
|
+
default: "text-h5 h-8 gap-[var(--spacing-system-xs)] p-[var(--spacing-system-xsf)]",
|
|
20
20
|
large: "text-h3 font-bold h-12 gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]",
|
|
21
21
|
},
|
|
22
22
|
variant: {
|
|
23
23
|
primary: [
|
|
24
|
-
"bg-
|
|
25
|
-
"hover:bg-
|
|
24
|
+
"bg-ods-accent text-ods-text-on-accent",
|
|
25
|
+
"hover:bg-ods-accent-hover active:bg-ods-accent-active",
|
|
26
26
|
],
|
|
27
27
|
outline: [
|
|
28
|
-
"bg-
|
|
29
|
-
"hover:bg-
|
|
30
|
-
"active:bg-
|
|
28
|
+
"bg-ods-card text-ods-text-primary border border-ods-border",
|
|
29
|
+
"hover:bg-ods-bg-hover hover:border-ods-border-hover",
|
|
30
|
+
"active:bg-ods-bg-active active:border-ods-border-active",
|
|
31
31
|
],
|
|
32
32
|
success: [
|
|
33
|
-
"bg-
|
|
34
|
-
"hover:bg-
|
|
33
|
+
"bg-ods-success-secondary text-ods-success",
|
|
34
|
+
"hover:bg-ods-success-secondary-hover active:bg-ods-success-secondary-active",
|
|
35
35
|
],
|
|
36
36
|
warning: [
|
|
37
|
-
"bg-
|
|
38
|
-
"hover:bg-
|
|
37
|
+
"bg-ods-warning-secondary text-ods-warning",
|
|
38
|
+
"hover:bg-ods-warning-secondary-hover active:bg-ods-warning-secondary-active",
|
|
39
39
|
],
|
|
40
40
|
error: [
|
|
41
|
-
"bg-
|
|
42
|
-
"hover:bg-
|
|
41
|
+
"bg-ods-error-secondary text-ods-error",
|
|
42
|
+
"hover:bg-ods-error-secondary-hover active:bg-ods-error-secondary-active",
|
|
43
43
|
],
|
|
44
44
|
critical: [
|
|
45
|
-
"bg-
|
|
46
|
-
"hover:bg-
|
|
45
|
+
"bg-ods-error text-ods-error-secondary",
|
|
46
|
+
"hover:bg-ods-error-hover active:bg-ods-error-active",
|
|
47
47
|
],
|
|
48
48
|
grey: [
|
|
49
|
-
"bg-
|
|
50
|
-
"hover:bg-
|
|
49
|
+
"bg-ods-bg-surface text-ods-text-secondary",
|
|
50
|
+
"hover:bg-ods-bg-surface-hover active:bg-ods-bg-surface-active",
|
|
51
51
|
],
|
|
52
52
|
// Active/selected chip state (Figma "Feature Item" active): pink
|
|
53
53
|
// border + pink-secondary fill. A dedicated variant (not appended
|
|
54
54
|
// utilities) so its own hover rules win — the outline variant's
|
|
55
55
|
// hover:bg/hover:border would otherwise repaint an active chip grey.
|
|
56
56
|
selected: [
|
|
57
|
-
"bg-
|
|
58
|
-
"hover:bg-
|
|
59
|
-
"active:bg-
|
|
57
|
+
"bg-ods-flamingo-pink-secondary text-ods-text-primary border border-ods-flamingo-pink",
|
|
58
|
+
"hover:bg-ods-flamingo-pink-secondary-hover hover:border-ods-flamingo-pink",
|
|
59
|
+
"active:bg-ods-flamingo-pink-secondary-active",
|
|
60
60
|
],
|
|
61
61
|
// Cyan twin of `selected` (Mingo's accent) — same active-chip skin in the
|
|
62
62
|
// cyan theme so agent chip groups can match their own accent.
|
|
63
63
|
selectedCyan: [
|
|
64
|
-
"bg-
|
|
65
|
-
"hover:bg-
|
|
66
|
-
"active:bg-
|
|
64
|
+
"bg-ods-flamingo-cyan-secondary text-ods-text-primary border border-ods-flamingo-cyan",
|
|
65
|
+
"hover:bg-ods-flamingo-cyan-secondary-hover hover:border-ods-flamingo-cyan",
|
|
66
|
+
"active:bg-ods-flamingo-cyan-secondary-active",
|
|
67
67
|
],
|
|
68
68
|
// Matches the EntityTagBadges / StatusBadge tag skin (ods-card + ods-border,
|
|
69
69
|
// mono uppercase) so the tag-editor chips render identically to the public
|
|
@@ -82,7 +82,7 @@ const tagVariants = cva(
|
|
|
82
82
|
)
|
|
83
83
|
|
|
84
84
|
const disabledTagClasses = [
|
|
85
|
-
"bg-
|
|
85
|
+
"bg-ods-bg-surface text-ods-text-secondary",
|
|
86
86
|
"border-transparent",
|
|
87
87
|
"cursor-not-allowed",
|
|
88
88
|
"pointer-events-none",
|
|
@@ -66,7 +66,7 @@ export function TagsInput({
|
|
|
66
66
|
return (
|
|
67
67
|
<div className={cn("space-y-2", className)}>
|
|
68
68
|
{label && (
|
|
69
|
-
<label className="
|
|
69
|
+
<label className="text-h6 text-ods-text-primary">
|
|
70
70
|
{label}
|
|
71
71
|
</label>
|
|
72
72
|
)}
|
|
@@ -121,7 +121,7 @@ export function TagsInput({
|
|
|
121
121
|
)}
|
|
122
122
|
|
|
123
123
|
{maxTags && (
|
|
124
|
-
<p className="text-
|
|
124
|
+
<p className="text-h6 text-ods-text-secondary">
|
|
125
125
|
{value.length}/{maxTags} tags
|
|
126
126
|
</p>
|
|
127
127
|
)}
|
|
@@ -42,7 +42,7 @@ const STATUS_CONFIG: Record<TicketStatus, TicketStatusConfig> = {
|
|
|
42
42
|
RESOLVED: {
|
|
43
43
|
label: 'Resolved',
|
|
44
44
|
variant: 'outline',
|
|
45
|
-
icon: <CheckCircleIcon size={16} color="var(--
|
|
45
|
+
icon: <CheckCircleIcon size={16} color="var(--color-success)" />,
|
|
46
46
|
},
|
|
47
47
|
ARCHIVED: {
|
|
48
48
|
label: 'Archived',
|
|
@@ -59,12 +59,12 @@ function ToastHeader({
|
|
|
59
59
|
<span className={cn('size-[9px] rounded-full', dotColorByVariant[variant])} />
|
|
60
60
|
</div>
|
|
61
61
|
|
|
62
|
-
<div className="flex min-w-0 flex-1 flex-col justify-center
|
|
62
|
+
<div className="flex min-w-0 flex-1 flex-col justify-center">
|
|
63
63
|
{title ? (
|
|
64
|
-
<p className="truncate pr-5 text-
|
|
64
|
+
<p className="truncate pr-5 text-h4 text-ods-text-primary" title={typeof title === 'string' ? title : undefined}>{title}</p>
|
|
65
65
|
) : null}
|
|
66
66
|
{description ? (
|
|
67
|
-
<p className="text-
|
|
67
|
+
<p className="text-h6 text-ods-text-secondary line-clamp-3" title={typeof description === 'string' ? description : undefined}>{description}</p>
|
|
68
68
|
) : null}
|
|
69
69
|
</div>
|
|
70
70
|
|
|
@@ -206,7 +206,7 @@ export function CommandApprovalToast({
|
|
|
206
206
|
>
|
|
207
207
|
<div className="overflow-hidden">
|
|
208
208
|
<div className="flex h-11 w-full items-center gap-2 border-b border-ods-border bg-ods-card px-3 py-2">
|
|
209
|
-
<p className="min-w-0 flex-1 truncate
|
|
209
|
+
<p className="min-w-0 flex-1 truncate text-h6 text-ods-text-primary" title={command}>
|
|
210
210
|
{command}
|
|
211
211
|
</p>
|
|
212
212
|
{toolType ? <ToolIcon toolType={toolType} size={16} /> : null}
|
|
@@ -214,7 +214,7 @@ export function CommandApprovalToast({
|
|
|
214
214
|
|
|
215
215
|
<div className="flex flex-col gap-2 bg-ods-bg p-3">
|
|
216
216
|
{approvalDescription ? (
|
|
217
|
-
<p className="
|
|
217
|
+
<p className="text-h6 text-ods-text-secondary">
|
|
218
218
|
{approvalDescription}
|
|
219
219
|
</p>
|
|
220
220
|
) : null}
|
|
@@ -223,7 +223,7 @@ export function CommandApprovalToast({
|
|
|
223
223
|
type="button"
|
|
224
224
|
onClick={handleApprove}
|
|
225
225
|
tabIndex={expanded ? 0 : -1}
|
|
226
|
-
className="flex flex-1 items-center justify-center rounded-md bg-ods-accent px-2 py-2
|
|
226
|
+
className="flex flex-1 items-center justify-center rounded-md bg-ods-accent px-2 py-2 text-h5 text-ods-text-on-accent transition-colors hover:bg-ods-accent-hover active:bg-ods-accent-active"
|
|
227
227
|
>
|
|
228
228
|
{approveLabel}
|
|
229
229
|
</button>
|
|
@@ -231,7 +231,7 @@ export function CommandApprovalToast({
|
|
|
231
231
|
type="button"
|
|
232
232
|
onClick={handleReject}
|
|
233
233
|
tabIndex={expanded ? 0 : -1}
|
|
234
|
-
className="flex flex-1 items-center justify-center rounded-md border border-ods-border bg-ods-card px-2 py-2
|
|
234
|
+
className="flex flex-1 items-center justify-center rounded-md border border-ods-border bg-ods-card px-2 py-2 text-h5 text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
|
|
235
235
|
>
|
|
236
236
|
{rejectLabel}
|
|
237
237
|
</button>
|
|
@@ -244,7 +244,7 @@ export function CommandApprovalToast({
|
|
|
244
244
|
<button
|
|
245
245
|
type="button"
|
|
246
246
|
onClick={() => setExpanded(true)}
|
|
247
|
-
className="flex w-full items-center gap-2 bg-ods-card px-3 py-2 text-left
|
|
247
|
+
className="flex w-full items-center gap-2 bg-ods-card px-3 py-2 text-left text-h6 text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
|
|
248
248
|
aria-expanded={false}
|
|
249
249
|
>
|
|
250
250
|
<span className="flex-1">Show Command</span>
|
|
@@ -6,7 +6,7 @@ import { cva, type VariantProps } from "class-variance-authority"
|
|
|
6
6
|
import { cn } from "../../utils/cn"
|
|
7
7
|
|
|
8
8
|
const toggleVariants = cva(
|
|
9
|
-
"inline-flex items-center justify-center rounded-md text-
|
|
9
|
+
"inline-flex items-center justify-center rounded-md text-h6 transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-ods-accent data-[state=on]:text-ods-text-on-accent",
|
|
10
10
|
{
|
|
11
11
|
variants: {
|
|
12
12
|
variant: {
|
|
@@ -26,7 +26,7 @@ const TooltipContent = React.forwardRef<
|
|
|
26
26
|
className={cn(
|
|
27
27
|
// `max-h` uses Radix's available-height var so tall content scrolls inside
|
|
28
28
|
// the tooltip instead of overflowing off-screen (only engages on overflow).
|
|
29
|
-
"z-[1400] max-h-[var(--radix-popper-available-height)] overflow-y-auto rounded-md bg-ods-card border border-ods-border px-3 py-2 text-
|
|
29
|
+
"z-[1400] max-h-[var(--radix-popper-available-height)] overflow-y-auto rounded-md bg-ods-card border border-ods-border px-3 py-2 text-h6 text-ods-text-primary shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
30
30
|
className
|
|
31
31
|
)}
|
|
32
32
|
{...props}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { cn } from "../utils/cn";
|
|
5
|
-
import {
|
|
5
|
+
import { getProxiedImageUrl } from '../utils/image-proxy';
|
|
6
|
+
import { SquareAvatar } from './ui/square-avatar';
|
|
6
7
|
|
|
7
8
|
interface UserDisplayProps {
|
|
8
9
|
name: string;
|
|
@@ -25,18 +26,23 @@ interface UserDisplayProps {
|
|
|
25
26
|
export function UserDisplay({ name, avatarUrl, subtitle, size = 32, shape = 'square', compact = false, className }: UserDisplayProps) {
|
|
26
27
|
return (
|
|
27
28
|
<div className={cn('flex items-center gap-2 min-w-0', className)}>
|
|
28
|
-
<SquareAvatar
|
|
29
|
+
<SquareAvatar
|
|
30
|
+
src={avatarUrl ? getProxiedImageUrl(avatarUrl) || avatarUrl : undefined}
|
|
31
|
+
fallback={name}
|
|
32
|
+
alt={name}
|
|
33
|
+
sizePx={size}
|
|
34
|
+
variant={shape}
|
|
35
|
+
/>
|
|
29
36
|
<div className="min-w-0 flex-1">
|
|
30
37
|
<p className={cn(
|
|
31
|
-
"
|
|
32
|
-
compact ? 'text-
|
|
38
|
+
"text-ods-text-primary truncate",
|
|
39
|
+
compact ? 'text-h6' : 'text-h4',
|
|
33
40
|
)}>
|
|
34
41
|
{name}
|
|
35
42
|
</p>
|
|
36
43
|
{subtitle && (
|
|
37
44
|
<span className={cn(
|
|
38
|
-
"
|
|
39
|
-
compact ? 'text-xs leading-4 font-medium' : 'text-md leading-[16px]',
|
|
45
|
+
"text-h6 text-ods-text-secondary truncate block",
|
|
40
46
|
)}>
|
|
41
47
|
{subtitle}
|
|
42
48
|
</span>
|
|
@@ -196,7 +196,7 @@ export function UserSummary({
|
|
|
196
196
|
{/* top part */}
|
|
197
197
|
{authProviders && authProviders.length > 0 && (
|
|
198
198
|
<div className="flex items-center gap-2">
|
|
199
|
-
<span className="text-
|
|
199
|
+
<span className="text-h6 text-ods-text-secondary whitespace-nowrap select-none">
|
|
200
200
|
Authorized by
|
|
201
201
|
</span>
|
|
202
202
|
<div className="flex items-center gap-2">
|
|
@@ -211,7 +211,7 @@ export function UserSummary({
|
|
|
211
211
|
|
|
212
212
|
{/* bottom part - Edit button would go here */}
|
|
213
213
|
{showEditButton && (
|
|
214
|
-
<div className="text-
|
|
214
|
+
<div className="text-h6 text-ods-text-secondary">Edit Profile</div>
|
|
215
215
|
)}
|
|
216
216
|
</div>
|
|
217
217
|
)}
|
|
@@ -223,7 +223,7 @@ export function UserSummary({
|
|
|
223
223
|
<div className="flex md:hidden items-center justify-between w-full gap-4">
|
|
224
224
|
{authProviders && authProviders.length > 0 && (
|
|
225
225
|
<div className="flex items-center gap-2">
|
|
226
|
-
<span className="text-
|
|
226
|
+
<span className="text-h6 text-ods-text-secondary whitespace-nowrap select-none">Authorized by</span>
|
|
227
227
|
<div className="flex items-center gap-2">
|
|
228
228
|
{authProviders.map((p) => (
|
|
229
229
|
<div key={p} className="flex items-center justify-center w-4 h-4">
|
|
@@ -235,7 +235,7 @@ export function UserSummary({
|
|
|
235
235
|
)}
|
|
236
236
|
|
|
237
237
|
{showEditButton && (
|
|
238
|
-
<div className="text-
|
|
238
|
+
<div className="text-h6 text-ods-text-secondary">Edit Profile</div>
|
|
239
239
|
)}
|
|
240
240
|
</div>
|
|
241
241
|
)}
|
|
@@ -50,7 +50,7 @@ export function VendorDisplayButton({ vendor, onClick, variant = 'default', exte
|
|
|
50
50
|
</span>
|
|
51
51
|
</div>
|
|
52
52
|
)}
|
|
53
|
-
<span className="text-
|
|
53
|
+
<span className="text-h6 text-ods-text-primary">
|
|
54
54
|
{vendor.title}
|
|
55
55
|
</span>
|
|
56
56
|
</button>
|
|
@@ -75,7 +75,7 @@ export function VendorDisplayButton({ vendor, onClick, variant = 'default', exte
|
|
|
75
75
|
</div>
|
|
76
76
|
) : (
|
|
77
77
|
<div className="w-8 h-8 bg-ods-border border border-ods-border rounded-lg flex items-center justify-center flex-shrink-0">
|
|
78
|
-
<span className="text-ods-text-primary text-
|
|
78
|
+
<span className="text-ods-text-primary text-h6">
|
|
79
79
|
{vendor.title.charAt(0)}
|
|
80
80
|
</span>
|
|
81
81
|
</div>
|
|
@@ -80,7 +80,7 @@ export function VendorIcon({
|
|
|
80
80
|
/>
|
|
81
81
|
) : (
|
|
82
82
|
<div className={cn(
|
|
83
|
-
'flex items-center justify-center text-
|
|
83
|
+
'flex items-center justify-center text-h6 uppercase',
|
|
84
84
|
backgroundStyle === 'white' ? 'text-[#333333]' : 'text-ods-text-secondary'
|
|
85
85
|
)}>
|
|
86
86
|
{vendor.title?.substring(0, 2) || '??'}
|