@flamingo-stack/openframe-frontend-core 0.0.439-snapshot.20260717095442 → 0.0.439
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-QAG357PE.js → chunk-2ELBNZJ3.js} +7 -7
- package/dist/chunk-2ELBNZJ3.js.map +1 -0
- package/dist/{chunk-IZ6A6K6N.cjs → chunk-3WJQL4DN.cjs} +25 -25
- package/dist/chunk-3WJQL4DN.cjs.map +1 -0
- package/dist/{chunk-6CITW5BD.js → chunk-4ACSUJ7Q.js} +10 -10
- package/dist/chunk-4ACSUJ7Q.js.map +1 -0
- package/dist/{chunk-JYI4R25Q.js → chunk-7WM77CSW.js} +5 -5
- package/dist/chunk-7WM77CSW.js.map +1 -0
- package/dist/{chunk-TAQMYVO6.cjs → chunk-AUJXLVXA.cjs} +42 -42
- package/dist/{chunk-TAQMYVO6.cjs.map → chunk-AUJXLVXA.cjs.map} +1 -1
- package/dist/{chunk-UFBUQO7Z.cjs → chunk-C3FH53AP.cjs} +19 -19
- package/dist/{chunk-UFBUQO7Z.cjs.map → chunk-C3FH53AP.cjs.map} +1 -1
- package/dist/{chunk-FPE3SQ5D.js → chunk-COMBYYQY.js} +13 -13
- package/dist/chunk-COMBYYQY.js.map +1 -0
- package/dist/{chunk-J5NO7PAG.cjs → chunk-EE5NH5SH.cjs} +3 -3
- package/dist/{chunk-J5NO7PAG.cjs.map → chunk-EE5NH5SH.cjs.map} +1 -1
- package/dist/{chunk-SM26C2L7.js → chunk-EGRZHR7J.js} +9 -9
- package/dist/chunk-EGRZHR7J.js.map +1 -0
- package/dist/{chunk-W3JZXLJ2.js → chunk-F7YVI54P.js} +10 -10
- package/dist/chunk-F7YVI54P.js.map +1 -0
- package/dist/{chunk-63TSTDME.js → chunk-G5FALXNO.js} +21 -21
- package/dist/chunk-G5FALXNO.js.map +1 -0
- package/dist/{chunk-DUQQEQ7G.cjs → chunk-HTVVXVJL.cjs} +1594 -1431
- package/dist/chunk-HTVVXVJL.cjs.map +1 -0
- package/dist/{chunk-JNC4LVD6.cjs → chunk-IAN7GUIV.cjs} +42 -42
- package/dist/chunk-IAN7GUIV.cjs.map +1 -0
- package/dist/{chunk-PYR4LVAF.cjs → chunk-IMK6RUEC.cjs} +10 -10
- package/dist/chunk-IMK6RUEC.cjs.map +1 -0
- package/dist/{chunk-LFWPWIAC.cjs → chunk-M3LD6DNE.cjs} +16 -16
- package/dist/{chunk-LFWPWIAC.cjs.map → chunk-M3LD6DNE.cjs.map} +1 -1
- package/dist/{chunk-KUXGQ2FQ.cjs → chunk-M6QGB6DC.cjs} +36 -36
- package/dist/chunk-M6QGB6DC.cjs.map +1 -0
- package/dist/{chunk-QO6MCQYE.cjs → chunk-N2TJ3HAM.cjs} +9 -9
- package/dist/chunk-N2TJ3HAM.cjs.map +1 -0
- package/dist/{chunk-ZQYFDYWV.js → chunk-NQQ4NLUT.js} +4461 -4298
- package/dist/chunk-NQQ4NLUT.js.map +1 -0
- package/dist/{chunk-Y3NFB6HR.js → chunk-P7PISHM5.js} +5 -5
- package/dist/chunk-P7PISHM5.js.map +1 -0
- package/dist/{chunk-YZJUHEPZ.js → chunk-PBTY7AH5.js} +95 -95
- package/dist/chunk-PBTY7AH5.js.map +1 -0
- package/dist/{chunk-7KNOHGMI.js → chunk-PEIR7D25.js} +2 -2
- package/dist/{chunk-7KDR5P23.js → chunk-QXYOGJQJ.js} +2 -2
- package/dist/{chunk-LUKRPHEW.cjs → chunk-R46QEE3R.cjs} +96 -96
- package/dist/chunk-R46QEE3R.cjs.map +1 -0
- package/dist/{chunk-IPEIOR77.cjs → chunk-RQQZF6G6.cjs} +130 -130
- package/dist/chunk-RQQZF6G6.cjs.map +1 -0
- package/dist/{chunk-2BTDPDME.js → chunk-RVWC4P3H.js} +9 -9
- package/dist/chunk-RVWC4P3H.js.map +1 -0
- package/dist/{chunk-JOH5D76X.cjs → chunk-VWGF6IFR.cjs} +108 -108
- package/dist/chunk-VWGF6IFR.cjs.map +1 -0
- package/dist/{chunk-IAZ5AN2E.js → chunk-WAGTZVQN.js} +30 -30
- package/dist/chunk-WAGTZVQN.js.map +1 -0
- package/dist/{chunk-AGV26PUR.js → chunk-WPVBTVI3.js} +6 -6
- package/dist/{chunk-AGV26PUR.js.map → chunk-WPVBTVI3.js.map} +1 -1
- package/dist/{chunk-XMCVUYKC.cjs → chunk-WZ6TCAYQ.cjs} +14 -14
- package/dist/chunk-WZ6TCAYQ.cjs.map +1 -0
- package/dist/{chunk-7QP65IE4.cjs → chunk-ZMUFTGL7.cjs} +5 -5
- package/dist/{chunk-7QP65IE4.cjs.map → chunk-ZMUFTGL7.cjs.map} +1 -1
- package/dist/components/accordion.d.ts +8 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/alert-dialog.d.ts +21 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert.d.ts +9 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/breadcrumb.d.ts +20 -0
- package/dist/components/breadcrumb.d.ts.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/chevron-button.d.ts +14 -0
- package/dist/components/chevron-button.d.ts.map +1 -0
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/dialog.d.ts +29 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/dropdown-menu.d.ts +28 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- 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 +256 -262
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +111 -117
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.d.ts +8 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/menubar.d.ts +34 -0
- package/dist/components/menubar.d.ts.map +1 -0
- 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/navigation-menu.d.ts +13 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- 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/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/sidebar.d.ts +67 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/square-avatar.d.ts +21 -0
- package/dist/components/square-avatar.d.ts.map +1 -0
- package/dist/components/table.d.ts +11 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/tabs.d.ts +18 -0
- package/dist/components/tabs.d.ts.map +1 -0
- 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/toggle.d.ts +13 -0
- package/dist/components/toggle.d.ts.map +1 -0
- 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 +0 -3
- 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 +5 -38
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +5 -38
- package/dist/tailwind.config.js.map +1 -1
- package/package.json +1 -1
- package/src/ODS_TOKEN_RULES.md +0 -5
- package/src/components/.accordion.md +42 -0
- package/src/components/.alert-dialog.md +58 -0
- package/src/components/.alert.md +43 -0
- package/src/components/.badge.md +40 -0
- package/src/components/.breadcrumb.md +54 -0
- package/src/components/.chevron-button.md +46 -0
- package/src/components/.dialog.md +60 -0
- package/src/components/.dropdown-menu.md +51 -0
- package/src/components/.footer.md +2 -2
- package/src/components/.input.md +40 -0
- package/src/components/.label.md +41 -0
- package/src/components/.menubar.md +49 -0
- package/src/components/.navigation-menu.md +44 -0
- package/src/components/.select.md +54 -0
- package/src/components/.sidebar.md +58 -0
- package/src/components/.square-avatar.md +42 -0
- package/src/components/.table.md +51 -0
- package/src/components/.tabs.md +38 -0
- package/src/components/.toggle.md +49 -0
- package/src/components/accordion.tsx +56 -0
- package/src/components/alert-dialog.tsx +141 -0
- package/src/components/alert.tsx +59 -0
- package/src/components/announcement-bar.tsx +1 -1
- package/src/components/authors/author-detail-view.tsx +3 -3
- package/src/components/badge.tsx +30 -0
- package/src/components/breadcrumb.tsx +115 -0
- 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 +5 -2
- 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 +8 -5
- 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 +5 -3
- 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/chevron-button.tsx +68 -0
- 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/dialog.tsx +150 -0
- package/src/components/docs/doc-viewer.tsx +4 -4
- package/src/components/dropdown-menu.tsx +200 -0
- 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/input.tsx +39 -0
- package/src/components/label.tsx +19 -0
- 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/menubar.tsx +236 -0
- package/src/components/metric-value.tsx +2 -2
- package/src/components/msp-display.tsx +2 -8
- 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/navigation-menu.tsx +128 -0
- 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/select.tsx +160 -0
- 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/sidebar.tsx +764 -0
- 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/square-avatar.tsx +61 -0
- package/src/components/steps.tsx +3 -3
- package/src/components/table.tsx +72 -0
- package/src/components/tabs.tsx +65 -0
- 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/toggle.tsx +45 -0
- 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 +5 -4
- 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 +5 -9
- 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 +6 -12
- 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 +10 -9
- package/src/components/yes-no-display.tsx +3 -3
- package/src/styles/ods-colors.css +0 -2
- package/tailwind.config.ts +4 -49
- package/dist/chunk-2BTDPDME.js.map +0 -1
- package/dist/chunk-63TSTDME.js.map +0 -1
- package/dist/chunk-6CITW5BD.js.map +0 -1
- package/dist/chunk-DUQQEQ7G.cjs.map +0 -1
- package/dist/chunk-FPE3SQ5D.js.map +0 -1
- package/dist/chunk-IAZ5AN2E.js.map +0 -1
- package/dist/chunk-IPEIOR77.cjs.map +0 -1
- package/dist/chunk-IZ6A6K6N.cjs.map +0 -1
- package/dist/chunk-JNC4LVD6.cjs.map +0 -1
- package/dist/chunk-JOH5D76X.cjs.map +0 -1
- package/dist/chunk-JYI4R25Q.js.map +0 -1
- package/dist/chunk-KUXGQ2FQ.cjs.map +0 -1
- package/dist/chunk-LUKRPHEW.cjs.map +0 -1
- package/dist/chunk-PYR4LVAF.cjs.map +0 -1
- package/dist/chunk-QAG357PE.js.map +0 -1
- package/dist/chunk-QO6MCQYE.cjs.map +0 -1
- package/dist/chunk-SM26C2L7.js.map +0 -1
- package/dist/chunk-W3JZXLJ2.js.map +0 -1
- package/dist/chunk-XMCVUYKC.cjs.map +0 -1
- package/dist/chunk-Y3NFB6HR.js.map +0 -1
- package/dist/chunk-YZJUHEPZ.js.map +0 -1
- package/dist/chunk-ZQYFDYWV.js.map +0 -1
- /package/dist/{chunk-7KNOHGMI.js.map → chunk-PEIR7D25.js.map} +0 -0
- /package/dist/{chunk-7KDR5P23.js.map → chunk-QXYOGJQJ.js.map} +0 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import * as MenubarPrimitive from "@radix-ui/react-menubar"
|
|
5
|
+
import { Check, ChevronRight, Circle } from "lucide-react"
|
|
6
|
+
|
|
7
|
+
import { cn } from "../utils/cn"
|
|
8
|
+
|
|
9
|
+
const MenubarMenu = MenubarPrimitive.Menu
|
|
10
|
+
|
|
11
|
+
const MenubarGroup = MenubarPrimitive.Group
|
|
12
|
+
|
|
13
|
+
const MenubarPortal = MenubarPrimitive.Portal
|
|
14
|
+
|
|
15
|
+
const MenubarSub = MenubarPrimitive.Sub
|
|
16
|
+
|
|
17
|
+
const MenubarRadioGroup = MenubarPrimitive.RadioGroup
|
|
18
|
+
|
|
19
|
+
const Menubar = React.forwardRef<
|
|
20
|
+
React.ElementRef<typeof MenubarPrimitive.Root>,
|
|
21
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>
|
|
22
|
+
>(({ className, ...props }, ref) => (
|
|
23
|
+
<MenubarPrimitive.Root
|
|
24
|
+
ref={ref}
|
|
25
|
+
className={cn(
|
|
26
|
+
"flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
|
|
27
|
+
className
|
|
28
|
+
)}
|
|
29
|
+
{...props}
|
|
30
|
+
/>
|
|
31
|
+
))
|
|
32
|
+
Menubar.displayName = MenubarPrimitive.Root.displayName
|
|
33
|
+
|
|
34
|
+
const MenubarTrigger = React.forwardRef<
|
|
35
|
+
React.ElementRef<typeof MenubarPrimitive.Trigger>,
|
|
36
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>
|
|
37
|
+
>(({ className, ...props }, ref) => (
|
|
38
|
+
<MenubarPrimitive.Trigger
|
|
39
|
+
ref={ref}
|
|
40
|
+
className={cn(
|
|
41
|
+
"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
42
|
+
className
|
|
43
|
+
)}
|
|
44
|
+
{...props}
|
|
45
|
+
/>
|
|
46
|
+
))
|
|
47
|
+
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName
|
|
48
|
+
|
|
49
|
+
const MenubarSubTrigger = React.forwardRef<
|
|
50
|
+
React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
|
|
51
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {
|
|
52
|
+
inset?: boolean
|
|
53
|
+
}
|
|
54
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
55
|
+
<MenubarPrimitive.SubTrigger
|
|
56
|
+
ref={ref}
|
|
57
|
+
className={cn(
|
|
58
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
59
|
+
inset && "pl-8",
|
|
60
|
+
className
|
|
61
|
+
)}
|
|
62
|
+
{...props}
|
|
63
|
+
>
|
|
64
|
+
{children}
|
|
65
|
+
<ChevronRight className="ml-auto h-4 w-4" />
|
|
66
|
+
</MenubarPrimitive.SubTrigger>
|
|
67
|
+
))
|
|
68
|
+
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
|
|
69
|
+
|
|
70
|
+
const MenubarSubContent = React.forwardRef<
|
|
71
|
+
React.ElementRef<typeof MenubarPrimitive.SubContent>,
|
|
72
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>
|
|
73
|
+
>(({ className, ...props }, ref) => (
|
|
74
|
+
<MenubarPrimitive.SubContent
|
|
75
|
+
ref={ref}
|
|
76
|
+
className={cn(
|
|
77
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
|
|
78
|
+
className
|
|
79
|
+
)}
|
|
80
|
+
{...props}
|
|
81
|
+
/>
|
|
82
|
+
))
|
|
83
|
+
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName
|
|
84
|
+
|
|
85
|
+
const MenubarContent = React.forwardRef<
|
|
86
|
+
React.ElementRef<typeof MenubarPrimitive.Content>,
|
|
87
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>
|
|
88
|
+
>(
|
|
89
|
+
(
|
|
90
|
+
{ className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
|
|
91
|
+
ref
|
|
92
|
+
) => (
|
|
93
|
+
<MenubarPrimitive.Portal>
|
|
94
|
+
<MenubarPrimitive.Content
|
|
95
|
+
ref={ref}
|
|
96
|
+
align={align}
|
|
97
|
+
alignOffset={alignOffset}
|
|
98
|
+
sideOffset={sideOffset}
|
|
99
|
+
className={cn(
|
|
100
|
+
"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
|
|
101
|
+
className
|
|
102
|
+
)}
|
|
103
|
+
{...props}
|
|
104
|
+
/>
|
|
105
|
+
</MenubarPrimitive.Portal>
|
|
106
|
+
)
|
|
107
|
+
)
|
|
108
|
+
MenubarContent.displayName = MenubarPrimitive.Content.displayName
|
|
109
|
+
|
|
110
|
+
const MenubarItem = React.forwardRef<
|
|
111
|
+
React.ElementRef<typeof MenubarPrimitive.Item>,
|
|
112
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {
|
|
113
|
+
inset?: boolean
|
|
114
|
+
}
|
|
115
|
+
>(({ className, inset, ...props }, ref) => (
|
|
116
|
+
<MenubarPrimitive.Item
|
|
117
|
+
ref={ref}
|
|
118
|
+
className={cn(
|
|
119
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
120
|
+
inset && "pl-8",
|
|
121
|
+
className
|
|
122
|
+
)}
|
|
123
|
+
{...props}
|
|
124
|
+
/>
|
|
125
|
+
))
|
|
126
|
+
MenubarItem.displayName = MenubarPrimitive.Item.displayName
|
|
127
|
+
|
|
128
|
+
const MenubarCheckboxItem = React.forwardRef<
|
|
129
|
+
React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
|
|
130
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>
|
|
131
|
+
>(({ className, children, checked, ...props }, ref) => (
|
|
132
|
+
<MenubarPrimitive.CheckboxItem
|
|
133
|
+
ref={ref}
|
|
134
|
+
className={cn(
|
|
135
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
136
|
+
className
|
|
137
|
+
)}
|
|
138
|
+
checked={checked}
|
|
139
|
+
{...props}
|
|
140
|
+
>
|
|
141
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
142
|
+
<MenubarPrimitive.ItemIndicator>
|
|
143
|
+
<Check className="h-4 w-4" />
|
|
144
|
+
</MenubarPrimitive.ItemIndicator>
|
|
145
|
+
</span>
|
|
146
|
+
{children}
|
|
147
|
+
</MenubarPrimitive.CheckboxItem>
|
|
148
|
+
))
|
|
149
|
+
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName
|
|
150
|
+
|
|
151
|
+
const MenubarRadioItem = React.forwardRef<
|
|
152
|
+
React.ElementRef<typeof MenubarPrimitive.RadioItem>,
|
|
153
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>
|
|
154
|
+
>(({ className, children, ...props }, ref) => (
|
|
155
|
+
<MenubarPrimitive.RadioItem
|
|
156
|
+
ref={ref}
|
|
157
|
+
className={cn(
|
|
158
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
159
|
+
className
|
|
160
|
+
)}
|
|
161
|
+
{...props}
|
|
162
|
+
>
|
|
163
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
164
|
+
<MenubarPrimitive.ItemIndicator>
|
|
165
|
+
<Circle className="h-2 w-2 fill-current" />
|
|
166
|
+
</MenubarPrimitive.ItemIndicator>
|
|
167
|
+
</span>
|
|
168
|
+
{children}
|
|
169
|
+
</MenubarPrimitive.RadioItem>
|
|
170
|
+
))
|
|
171
|
+
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName
|
|
172
|
+
|
|
173
|
+
const MenubarLabel = React.forwardRef<
|
|
174
|
+
React.ElementRef<typeof MenubarPrimitive.Label>,
|
|
175
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {
|
|
176
|
+
inset?: boolean
|
|
177
|
+
}
|
|
178
|
+
>(({ className, inset, ...props }, ref) => (
|
|
179
|
+
<MenubarPrimitive.Label
|
|
180
|
+
ref={ref}
|
|
181
|
+
className={cn(
|
|
182
|
+
"px-2 py-1.5 text-sm font-semibold",
|
|
183
|
+
inset && "pl-8",
|
|
184
|
+
className
|
|
185
|
+
)}
|
|
186
|
+
{...props}
|
|
187
|
+
/>
|
|
188
|
+
))
|
|
189
|
+
MenubarLabel.displayName = MenubarPrimitive.Label.displayName
|
|
190
|
+
|
|
191
|
+
const MenubarSeparator = React.forwardRef<
|
|
192
|
+
React.ElementRef<typeof MenubarPrimitive.Separator>,
|
|
193
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>
|
|
194
|
+
>(({ className, ...props }, ref) => (
|
|
195
|
+
<MenubarPrimitive.Separator
|
|
196
|
+
ref={ref}
|
|
197
|
+
className={cn("-mx-1 my-1 h-px bg-muted", className)}
|
|
198
|
+
{...props}
|
|
199
|
+
/>
|
|
200
|
+
))
|
|
201
|
+
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName
|
|
202
|
+
|
|
203
|
+
const MenubarShortcut = ({
|
|
204
|
+
className,
|
|
205
|
+
...props
|
|
206
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
207
|
+
return (
|
|
208
|
+
<span
|
|
209
|
+
className={cn(
|
|
210
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
211
|
+
className
|
|
212
|
+
)}
|
|
213
|
+
{...props}
|
|
214
|
+
/>
|
|
215
|
+
)
|
|
216
|
+
}
|
|
217
|
+
MenubarShortcut.displayname = "MenubarShortcut"
|
|
218
|
+
|
|
219
|
+
export {
|
|
220
|
+
Menubar,
|
|
221
|
+
MenubarMenu,
|
|
222
|
+
MenubarTrigger,
|
|
223
|
+
MenubarContent,
|
|
224
|
+
MenubarItem,
|
|
225
|
+
MenubarSeparator,
|
|
226
|
+
MenubarLabel,
|
|
227
|
+
MenubarCheckboxItem,
|
|
228
|
+
MenubarRadioGroup,
|
|
229
|
+
MenubarRadioItem,
|
|
230
|
+
MenubarPortal,
|
|
231
|
+
MenubarSubContent,
|
|
232
|
+
MenubarSubTrigger,
|
|
233
|
+
MenubarGroup,
|
|
234
|
+
MenubarSub,
|
|
235
|
+
MenubarShortcut,
|
|
236
|
+
}
|
|
@@ -15,9 +15,9 @@ interface MetricValueProps {
|
|
|
15
15
|
*/
|
|
16
16
|
export function MetricValue({ value, label, className }: MetricValueProps) {
|
|
17
17
|
return (
|
|
18
|
-
<div className={cn('flex items-end gap-2 whitespace-nowrap text-
|
|
18
|
+
<div className={cn('flex items-end gap-2 whitespace-nowrap font-["DM_Sans"] text-lg leading-[24px] text-ods-text-primary', className)}>
|
|
19
19
|
{value}
|
|
20
|
-
<span className="text-
|
|
20
|
+
<span className="text-sm text-ods-text-secondary">
|
|
21
21
|
{label}
|
|
22
22
|
</span>
|
|
23
23
|
</div>
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { cn } from "../utils/cn";
|
|
5
|
-
import {
|
|
6
|
-
import { SquareAvatar } from './ui/square-avatar';
|
|
5
|
+
import { SquareAvatar } from './square-avatar';
|
|
7
6
|
|
|
8
7
|
interface MSPDisplayProps {
|
|
9
8
|
name: string;
|
|
@@ -15,12 +14,7 @@ interface MSPDisplayProps {
|
|
|
15
14
|
export function MSPDisplay({ name, logoUrl, size = 40, className }: MSPDisplayProps) {
|
|
16
15
|
return (
|
|
17
16
|
<div className={cn('flex items-center gap-2 min-w-0', className)}>
|
|
18
|
-
<SquareAvatar
|
|
19
|
-
src={logoUrl ? getProxiedImageUrl(logoUrl) || logoUrl : undefined}
|
|
20
|
-
fallback={name}
|
|
21
|
-
alt={name}
|
|
22
|
-
sizePx={size}
|
|
23
|
-
/>
|
|
17
|
+
<SquareAvatar src={logoUrl ?? undefined} fallbackName={name} size={size} />
|
|
24
18
|
<h2 className="truncate pl-2">
|
|
25
19
|
{name}
|
|
26
20
|
</h2>
|
|
@@ -183,12 +183,12 @@ export const AppHeader = React.memo(function AppHeader({
|
|
|
183
183
|
/>
|
|
184
184
|
<div className="flex-1 min-w-0">
|
|
185
185
|
{userName && (
|
|
186
|
-
<div className="text-
|
|
186
|
+
<div className="text-[18px] font-medium text-ods-text-primary truncate leading-6">
|
|
187
187
|
{userName}
|
|
188
188
|
</div>
|
|
189
189
|
)}
|
|
190
190
|
{userEmail && (
|
|
191
|
-
<div className="text-
|
|
191
|
+
<div className="text-[14px] text-ods-text-secondary truncate leading-5">
|
|
192
192
|
{userEmail}
|
|
193
193
|
</div>
|
|
194
194
|
)}
|
|
@@ -198,21 +198,21 @@ export const AppHeader = React.memo(function AppHeader({
|
|
|
198
198
|
{/* Menu items */}
|
|
199
199
|
<DropdownMenuItem
|
|
200
200
|
onClick={onProfile}
|
|
201
|
-
className="bg-ods-card border-b border-ods-border rounded-none px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80 cursor-pointer"
|
|
201
|
+
className="bg-ods-card border-b border-ods-border rounded-none px-3 py-3 hover:bg-ods-bg-card/80 focus:bg-ods-bg-card/80 cursor-pointer"
|
|
202
202
|
>
|
|
203
203
|
<div className="flex items-center gap-2">
|
|
204
204
|
<UserIcon className="h-6 w-6 text-ods-text-primary shrink-0" />
|
|
205
|
-
<span className="text-
|
|
205
|
+
<span className="text-[18px] font-medium text-ods-text-primary">Profile Settings</span>
|
|
206
206
|
</div>
|
|
207
207
|
</DropdownMenuItem>
|
|
208
208
|
|
|
209
209
|
<DropdownMenuItem
|
|
210
210
|
onClick={onLogout}
|
|
211
|
-
className="bg-ods-card rounded-none px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80 cursor-pointer"
|
|
211
|
+
className="bg-ods-card rounded-none px-3 py-3 hover:bg-ods-bg-card/80 focus:bg-ods-bg-card/80 cursor-pointer"
|
|
212
212
|
>
|
|
213
213
|
<div className="flex items-center gap-2">
|
|
214
214
|
<LogOutIcon className="text-ods-error shrink-0" size={24} />
|
|
215
|
-
<span className="text-
|
|
215
|
+
<span className="text-[18px] font-medium text-ods-text-primary">Log Out</span>
|
|
216
216
|
</div>
|
|
217
217
|
</DropdownMenuItem>
|
|
218
218
|
</DropdownMenuContent>
|
|
@@ -48,11 +48,11 @@ export function HeaderOrganizationFilter({
|
|
|
48
48
|
>
|
|
49
49
|
<Filter02Icon className="w-4 h-4 shrink-0 text-ods-text-secondary" />
|
|
50
50
|
<div className="flex flex-col items-start justify-center min-w-0">
|
|
51
|
-
<span className="text-
|
|
51
|
+
<span className="font-mono text-sm font-medium leading-5 text-ods-text-primary uppercase tracking-tight truncate" title={displayName}>
|
|
52
52
|
{displayName}
|
|
53
53
|
</span>
|
|
54
54
|
{deviceCount !== undefined && (
|
|
55
|
-
<span className="text-
|
|
55
|
+
<span className="text-sm font-medium leading-5 text-ods-text-secondary truncate">
|
|
56
56
|
{deviceCount.toLocaleString()} Devices
|
|
57
57
|
</span>
|
|
58
58
|
)}
|
|
@@ -133,7 +133,7 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
133
133
|
}}
|
|
134
134
|
size="small-legacy"
|
|
135
135
|
className={cn(
|
|
136
|
-
"text-
|
|
136
|
+
"font-bold text-[16px] leading-none tracking-[-0.32px]",
|
|
137
137
|
item.isActive && 'bg-ods-bg-hover', // Active items get subtle gray background
|
|
138
138
|
isOpen && 'bg-ods-bg-hover', // Open dropdowns get gray background
|
|
139
139
|
item.className
|
|
@@ -189,7 +189,7 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
189
189
|
}}
|
|
190
190
|
className={cn(
|
|
191
191
|
"flex justify-start w-full",
|
|
192
|
-
"text-
|
|
192
|
+
"font-bold text-[16px] leading-none tracking-[-0.32px]",
|
|
193
193
|
index < (item.children?.length ?? 0) - 1 && "mb-1",
|
|
194
194
|
"text-ods-text-primary", // All dropdown items use primary text color
|
|
195
195
|
child.isActive && 'bg-ods-bg-hover' // Active dropdown items get gray background
|
|
@@ -225,7 +225,7 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
225
225
|
rightIcon={item.badge}
|
|
226
226
|
size="small-legacy"
|
|
227
227
|
className={cn(
|
|
228
|
-
"text-
|
|
228
|
+
"font-bold text-[16px] leading-none tracking-[-0.32px]",
|
|
229
229
|
"hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
|
|
230
230
|
"whitespace-nowrap",
|
|
231
231
|
"text-ods-text-primary", // All items use primary text color
|
|
@@ -249,7 +249,7 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
249
249
|
rightIcon={item.badge}
|
|
250
250
|
size="small-legacy"
|
|
251
251
|
className={cn(
|
|
252
|
-
"text-
|
|
252
|
+
"font-bold text-[16px] leading-none tracking-[-0.32px]",
|
|
253
253
|
"hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
|
|
254
254
|
"whitespace-nowrap",
|
|
255
255
|
"text-ods-text-primary", // All items use primary text color
|
|
@@ -81,7 +81,7 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
|
|
|
81
81
|
"flex items-center gap-1 p-3 relative",
|
|
82
82
|
"transition-colors duration-200",
|
|
83
83
|
"bg-ods-card border border-ods-border rounded-md",
|
|
84
|
-
!disabled && "hover:bg-ods-
|
|
84
|
+
!disabled && "hover:bg-ods-hover",
|
|
85
85
|
isGridItem ? "flex-1 min-w-0" : "w-full",
|
|
86
86
|
// Active state
|
|
87
87
|
isActive && !disabled && "border-ods-accent",
|
|
@@ -102,7 +102,7 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
|
|
|
102
102
|
|
|
103
103
|
{/* Label */}
|
|
104
104
|
<span className={cn(
|
|
105
|
-
"text-
|
|
105
|
+
"font-['DM_Sans'] font-medium text-sm leading-5 flex-1 text-left truncate",
|
|
106
106
|
isActive && !disabled ? "text-ods-accent" : "text-ods-text-primary"
|
|
107
107
|
)}>
|
|
108
108
|
{item.label}
|
|
@@ -204,17 +204,17 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
|
|
|
204
204
|
{/* User Info */}
|
|
205
205
|
<div className="flex-1 min-w-0 flex flex-col">
|
|
206
206
|
<div className="flex items-center gap-2">
|
|
207
|
-
<span className="text-
|
|
207
|
+
<span className="font-medium text-sm text-ods-text-primary truncate">
|
|
208
208
|
{user.userName || 'User'}
|
|
209
209
|
</span>
|
|
210
210
|
{user.userRole && (
|
|
211
|
-
<span className="shrink-0 px-2 py-0.5 bg-ods-card border border-ods-border rounded-md text-
|
|
211
|
+
<span className="shrink-0 px-2 py-0.5 bg-ods-card border border-ods-border rounded-md font-medium text-xs text-ods-text-primary uppercase tracking-tight">
|
|
212
212
|
{user.userRole}
|
|
213
213
|
</span>
|
|
214
214
|
)}
|
|
215
215
|
</div>
|
|
216
216
|
{user.userEmail && (
|
|
217
|
-
<span className="text-
|
|
217
|
+
<span className="font-medium text-xs text-ods-text-secondary truncate">
|
|
218
218
|
{user.userEmail}
|
|
219
219
|
</span>
|
|
220
220
|
)}
|
|
@@ -269,12 +269,12 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
|
|
|
269
269
|
disabled={disabled}
|
|
270
270
|
className={cn(
|
|
271
271
|
"w-full flex items-center gap-1 p-3 bg-ods-card border border-ods-border rounded-md transition-colors",
|
|
272
|
-
!disabled && "hover:bg-ods-
|
|
272
|
+
!disabled && "hover:bg-ods-hover",
|
|
273
273
|
disabled && "cursor-not-allowed opacity-50"
|
|
274
274
|
)}
|
|
275
275
|
>
|
|
276
276
|
<Logout02Icon className="size-4 text-ods-error" />
|
|
277
|
-
<span className="text-
|
|
277
|
+
<span className="font-['DM_Sans'] font-medium text-sm leading-5 flex-1 text-left text-ods-text-primary">
|
|
278
278
|
Log Out
|
|
279
279
|
</span>
|
|
280
280
|
</button>
|
|
@@ -134,7 +134,7 @@ export function MobileNavPanel({ isOpen, config }: MobileNavPanelProps) {
|
|
|
134
134
|
{config.sections.map((section, index) => (
|
|
135
135
|
<div key={index}>
|
|
136
136
|
{section.title && (
|
|
137
|
-
<div className="px-4 pt-2 pb-1 text-
|
|
137
|
+
<div className="px-4 pt-2 pb-1 text-xs font-semibold text-ods-text-secondary uppercase tracking-wide">
|
|
138
138
|
{section.title}
|
|
139
139
|
</div>
|
|
140
140
|
)}
|
|
@@ -157,8 +157,8 @@ function NavigationItem({
|
|
|
157
157
|
<div className="flex items-center relative">
|
|
158
158
|
<button
|
|
159
159
|
className={cn(
|
|
160
|
-
"w-full flex items-center h-12 px-2 rounded-lg text-
|
|
161
|
-
!isSelected && "hover:bg-ods-bg-
|
|
160
|
+
"w-full flex items-center h-12 px-2 rounded-lg text-[16px] font-medium font-['DM_Sans'] transition-all duration-150 leading-[1.33em] text-ods-text-primary",
|
|
161
|
+
!isSelected && "hover:bg-ods-bg-secondary",
|
|
162
162
|
hasChildren && "pr-12"
|
|
163
163
|
)}
|
|
164
164
|
onClick={() => onNodeClick(node)}
|
|
@@ -175,7 +175,7 @@ function NavigationItem({
|
|
|
175
175
|
{node.name.endsWith('.md') ? node.name.replace('.md', '') : node.name}
|
|
176
176
|
</span>
|
|
177
177
|
{node.type === 'folder' && node.hasReadme && (
|
|
178
|
-
<span className="text-
|
|
178
|
+
<span className="text-[10px] bg-ods-bg-secondary text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
|
|
179
179
|
README
|
|
180
180
|
</span>
|
|
181
181
|
)}
|
|
@@ -290,8 +290,8 @@ function MobileNavigationItem({
|
|
|
290
290
|
<div className="flex items-center relative">
|
|
291
291
|
<button
|
|
292
292
|
className={cn(
|
|
293
|
-
"w-full flex items-center h-11 px-2 rounded-lg text-
|
|
294
|
-
!isSelected && "hover:bg-ods-bg-
|
|
293
|
+
"w-full flex items-center h-11 px-2 rounded-lg text-[15px] font-medium font-['DM_Sans'] transition-all duration-150 leading-[1.33em] text-ods-text-primary",
|
|
294
|
+
!isSelected && "hover:bg-ods-bg-secondary",
|
|
295
295
|
hasChildren && "pr-11"
|
|
296
296
|
)}
|
|
297
297
|
onClick={() => onNodeClick(node)}
|
|
@@ -303,11 +303,11 @@ function MobileNavigationItem({
|
|
|
303
303
|
<FileText className="h-4 w-4" />
|
|
304
304
|
)}
|
|
305
305
|
</span>
|
|
306
|
-
<span className="text-left truncate flex-1 min-w-0">
|
|
306
|
+
<span className="text-left truncate flex-1 min-w-0 text-sm">
|
|
307
307
|
{node.name.endsWith('.md') ? node.name.replace('.md', '') : node.name}
|
|
308
308
|
</span>
|
|
309
309
|
{node.type === 'folder' && node.hasReadme && (
|
|
310
|
-
<span className="text-
|
|
310
|
+
<span className="text-[10px] bg-ods-bg-secondary text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
|
|
311
311
|
README
|
|
312
312
|
</span>
|
|
313
313
|
)}
|
|
@@ -113,7 +113,7 @@ export function NavigationSidebar({ config, disabled = false }: NavigationSideba
|
|
|
113
113
|
{/* Backdrop scrim — only visible on tablet while the overlay is open */}
|
|
114
114
|
<div
|
|
115
115
|
className={cn(
|
|
116
|
-
"fixed inset-0 z-[40] bg-
|
|
116
|
+
"fixed inset-0 z-[40] bg-black/50",
|
|
117
117
|
"hidden md:block lg:hidden",
|
|
118
118
|
"transition-opacity duration-300",
|
|
119
119
|
isOverlayOpen ? "opacity-100" : "opacity-0 pointer-events-none",
|
|
@@ -28,7 +28,7 @@ export function StickySectionNav({
|
|
|
28
28
|
onSectionClick,
|
|
29
29
|
className,
|
|
30
30
|
ribbonPosition = 'left',
|
|
31
|
-
ribbonColor = '
|
|
31
|
+
ribbonColor = '#FFC008'
|
|
32
32
|
}: StickySectionNavProps) {
|
|
33
33
|
const navHeight = sections.length * 40 // 40px per item (h-10)
|
|
34
34
|
|
|
@@ -71,7 +71,7 @@ export function StickySectionNav({
|
|
|
71
71
|
className="flex-1 flex items-center gap-2 px-3 py-2 cursor-pointer relative"
|
|
72
72
|
>
|
|
73
73
|
<span className={cn(
|
|
74
|
-
"text-left text-
|
|
74
|
+
"text-left font-['DM_Sans'] text-[14px] font-medium tracking-[-0.02em] leading-[1.43em] transition-all duration-200",
|
|
75
75
|
activeSection === section.id
|
|
76
76
|
? "text-ods-text-primary"
|
|
77
77
|
: "text-ods-text-secondary hover:text-ods-text-primary"
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
|
|
3
|
+
import { cva } from "class-variance-authority"
|
|
4
|
+
import { ChevronDown } from "lucide-react"
|
|
5
|
+
|
|
6
|
+
import { cn } from "../utils/cn"
|
|
7
|
+
|
|
8
|
+
const NavigationMenu = React.forwardRef<
|
|
9
|
+
React.ElementRef<typeof NavigationMenuPrimitive.Root>,
|
|
10
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>
|
|
11
|
+
>(({ className, children, ...props }, ref) => (
|
|
12
|
+
<NavigationMenuPrimitive.Root
|
|
13
|
+
ref={ref}
|
|
14
|
+
className={cn(
|
|
15
|
+
"relative z-10 flex max-w-max flex-1 items-center justify-center",
|
|
16
|
+
className
|
|
17
|
+
)}
|
|
18
|
+
{...props}
|
|
19
|
+
>
|
|
20
|
+
{children}
|
|
21
|
+
<NavigationMenuViewport />
|
|
22
|
+
</NavigationMenuPrimitive.Root>
|
|
23
|
+
))
|
|
24
|
+
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
|
|
25
|
+
|
|
26
|
+
const NavigationMenuList = React.forwardRef<
|
|
27
|
+
React.ElementRef<typeof NavigationMenuPrimitive.List>,
|
|
28
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>
|
|
29
|
+
>(({ className, ...props }, ref) => (
|
|
30
|
+
<NavigationMenuPrimitive.List
|
|
31
|
+
ref={ref}
|
|
32
|
+
className={cn(
|
|
33
|
+
"group flex flex-1 list-none items-center justify-center space-x-1",
|
|
34
|
+
className
|
|
35
|
+
)}
|
|
36
|
+
{...props}
|
|
37
|
+
/>
|
|
38
|
+
))
|
|
39
|
+
NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
|
|
40
|
+
|
|
41
|
+
const NavigationMenuItem = NavigationMenuPrimitive.Item
|
|
42
|
+
|
|
43
|
+
const navigationMenuTriggerStyle = cva(
|
|
44
|
+
"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
const NavigationMenuTrigger = React.forwardRef<
|
|
48
|
+
React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,
|
|
49
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>
|
|
50
|
+
>(({ className, children, ...props }, ref) => (
|
|
51
|
+
<NavigationMenuPrimitive.Trigger
|
|
52
|
+
ref={ref}
|
|
53
|
+
className={cn(navigationMenuTriggerStyle(), "group", className)}
|
|
54
|
+
{...props}
|
|
55
|
+
>
|
|
56
|
+
{children}{" "}
|
|
57
|
+
<ChevronDown
|
|
58
|
+
className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
|
|
59
|
+
aria-hidden="true"
|
|
60
|
+
/>
|
|
61
|
+
</NavigationMenuPrimitive.Trigger>
|
|
62
|
+
))
|
|
63
|
+
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
|
|
64
|
+
|
|
65
|
+
const NavigationMenuContent = React.forwardRef<
|
|
66
|
+
React.ElementRef<typeof NavigationMenuPrimitive.Content>,
|
|
67
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>
|
|
68
|
+
>(({ className, ...props }, ref) => (
|
|
69
|
+
<NavigationMenuPrimitive.Content
|
|
70
|
+
ref={ref}
|
|
71
|
+
className={cn(
|
|
72
|
+
"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
|
|
73
|
+
className
|
|
74
|
+
)}
|
|
75
|
+
{...props}
|
|
76
|
+
/>
|
|
77
|
+
))
|
|
78
|
+
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
|
|
79
|
+
|
|
80
|
+
const NavigationMenuLink = NavigationMenuPrimitive.Link
|
|
81
|
+
|
|
82
|
+
const NavigationMenuViewport = React.forwardRef<
|
|
83
|
+
React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,
|
|
84
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>
|
|
85
|
+
>(({ className, ...props }, ref) => (
|
|
86
|
+
<div className={cn("absolute left-0 top-full flex justify-center")}>
|
|
87
|
+
<NavigationMenuPrimitive.Viewport
|
|
88
|
+
className={cn(
|
|
89
|
+
"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
90
|
+
className
|
|
91
|
+
)}
|
|
92
|
+
ref={ref}
|
|
93
|
+
{...props}
|
|
94
|
+
/>
|
|
95
|
+
</div>
|
|
96
|
+
))
|
|
97
|
+
NavigationMenuViewport.displayName =
|
|
98
|
+
NavigationMenuPrimitive.Viewport.displayName
|
|
99
|
+
|
|
100
|
+
const NavigationMenuIndicator = React.forwardRef<
|
|
101
|
+
React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,
|
|
102
|
+
React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>
|
|
103
|
+
>(({ className, ...props }, ref) => (
|
|
104
|
+
<NavigationMenuPrimitive.Indicator
|
|
105
|
+
ref={ref}
|
|
106
|
+
className={cn(
|
|
107
|
+
"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
|
|
108
|
+
className
|
|
109
|
+
)}
|
|
110
|
+
{...props}
|
|
111
|
+
>
|
|
112
|
+
<div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
|
|
113
|
+
</NavigationMenuPrimitive.Indicator>
|
|
114
|
+
))
|
|
115
|
+
NavigationMenuIndicator.displayName =
|
|
116
|
+
NavigationMenuPrimitive.Indicator.displayName
|
|
117
|
+
|
|
118
|
+
export {
|
|
119
|
+
navigationMenuTriggerStyle,
|
|
120
|
+
NavigationMenu,
|
|
121
|
+
NavigationMenuList,
|
|
122
|
+
NavigationMenuItem,
|
|
123
|
+
NavigationMenuContent,
|
|
124
|
+
NavigationMenuTrigger,
|
|
125
|
+
NavigationMenuLink,
|
|
126
|
+
NavigationMenuIndicator,
|
|
127
|
+
NavigationMenuViewport,
|
|
128
|
+
}
|
|
@@ -206,10 +206,10 @@ export function OnboardingGuidesCatalogView({
|
|
|
206
206
|
{guides.length === 0 ? (
|
|
207
207
|
<div className="text-center py-16">
|
|
208
208
|
<GraduationCap className="h-12 w-12 text-ods-text-secondary mx-auto mb-4" />
|
|
209
|
-
<h2 className="text-ods-text-primary text-
|
|
209
|
+
<h2 className="text-ods-text-primary font-['DM_Sans'] text-[20px] font-semibold mb-2">
|
|
210
210
|
No onboarding guides found
|
|
211
211
|
</h2>
|
|
212
|
-
<p className="text-ods-text-secondary text-
|
|
212
|
+
<p className="text-ods-text-secondary font-['DM_Sans'] text-[14px]">
|
|
213
213
|
{activeSection !== 'all'
|
|
214
214
|
? 'No guides in this section yet.'
|
|
215
215
|
: "We're working on the onboarding library. Check back soon."}
|
|
@@ -219,9 +219,9 @@ export function OnboardingGuidesCatalogView({
|
|
|
219
219
|
<div className={isPending || isLoading ? 'opacity-60 transition-opacity space-y-10' : 'space-y-10'}>
|
|
220
220
|
{grouped.map((sec) => (
|
|
221
221
|
<section key={sec.section} className="space-y-4">
|
|
222
|
-
<h2 className="text-h3 text-ods-text-primary flex items-center gap-2">
|
|
222
|
+
<h2 className="text-h3 tracking-[-0.36px] text-ods-text-primary flex items-center gap-2">
|
|
223
223
|
{sec.section}
|
|
224
|
-
<span className="inline-flex items-center justify-center rounded-full bg-ods-text-secondary/20 text-ods-text-secondary text-
|
|
224
|
+
<span className="inline-flex items-center justify-center rounded-full bg-ods-text-secondary/20 text-ods-text-secondary text-xs font-medium px-2 py-0.5">
|
|
225
225
|
{sec.guides.length}
|
|
226
226
|
</span>
|
|
227
227
|
</h2>
|