@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
|
@@ -258,7 +258,7 @@ export function ContactForm({
|
|
|
258
258
|
</h2>
|
|
259
259
|
)}
|
|
260
260
|
{subtitle && (
|
|
261
|
-
<p className="text-
|
|
261
|
+
<p className="font-['DM_Sans'] font-medium text-[16px] md:text-[18px] leading-[24px] text-ods-text-primary">
|
|
262
262
|
{subtitle}
|
|
263
263
|
</p>
|
|
264
264
|
)}
|
|
@@ -320,7 +320,7 @@ export function ContactForm({
|
|
|
320
320
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary px-3 h-12"
|
|
321
321
|
/>
|
|
322
322
|
{errors.name && (
|
|
323
|
-
<span id="name-error" className="text-ods-error text-
|
|
323
|
+
<span id="name-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
324
324
|
{errors.name.message}
|
|
325
325
|
</span>
|
|
326
326
|
)}
|
|
@@ -341,7 +341,7 @@ export function ContactForm({
|
|
|
341
341
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary px-3 h-12"
|
|
342
342
|
/>
|
|
343
343
|
{errors.email && (
|
|
344
|
-
<span id="email-error" className="text-ods-error text-
|
|
344
|
+
<span id="email-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
345
345
|
{errors.email.message}
|
|
346
346
|
</span>
|
|
347
347
|
)}
|
|
@@ -378,7 +378,7 @@ export function ContactForm({
|
|
|
378
378
|
)}
|
|
379
379
|
/>
|
|
380
380
|
{errors.companySize && (
|
|
381
|
-
<span id="companySize-error" className="text-ods-error text-
|
|
381
|
+
<span id="companySize-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
382
382
|
{errors.companySize.message}
|
|
383
383
|
</span>
|
|
384
384
|
)}
|
|
@@ -410,7 +410,7 @@ export function ContactForm({
|
|
|
410
410
|
)}
|
|
411
411
|
/>
|
|
412
412
|
{errors.referralSource && (
|
|
413
|
-
<span id="referralSource-error" className="text-ods-error text-
|
|
413
|
+
<span id="referralSource-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
414
414
|
{errors.referralSource.message}
|
|
415
415
|
</span>
|
|
416
416
|
)}
|
|
@@ -447,7 +447,7 @@ export function ContactForm({
|
|
|
447
447
|
)}
|
|
448
448
|
/>
|
|
449
449
|
{errors.helpCategory && (
|
|
450
|
-
<span id="helpCategory-error" className="text-ods-error text-
|
|
450
|
+
<span id="helpCategory-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
451
451
|
{errors.helpCategory.message}
|
|
452
452
|
</span>
|
|
453
453
|
)}
|
|
@@ -468,7 +468,7 @@ export function ContactForm({
|
|
|
468
468
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary h-full flex-grow"
|
|
469
469
|
/>
|
|
470
470
|
{errors.message && (
|
|
471
|
-
<span id="message-error" className="text-ods-error text-
|
|
471
|
+
<span id="message-error" className="text-ods-error text-xs font-['DM_Sans'] mt-1">
|
|
472
472
|
{errors.message.message}
|
|
473
473
|
</span>
|
|
474
474
|
)}
|
|
@@ -494,7 +494,7 @@ export function ContactForm({
|
|
|
494
494
|
onAddFiles={attachments.addFiles}
|
|
495
495
|
disabled={isSubmitting}
|
|
496
496
|
/>
|
|
497
|
-
<span className="text-
|
|
497
|
+
<span className="text-xs text-ods-text-secondary">
|
|
498
498
|
Attach files (optional)
|
|
499
499
|
</span>
|
|
500
500
|
</div>
|
|
@@ -503,7 +503,7 @@ export function ContactForm({
|
|
|
503
503
|
|
|
504
504
|
<div className="flex flex-col md:flex-row gap-4 md:gap-6 items-center justify-end w-full pt-2 mt-auto">
|
|
505
505
|
{footerText && (
|
|
506
|
-
<p className="
|
|
506
|
+
<p className="font-['DM_Sans'] text-ods-text-secondary text-xs md:text-sm leading-relaxed text-center md:text-left">
|
|
507
507
|
{footerText}
|
|
508
508
|
</p>
|
|
509
509
|
)}
|
|
@@ -27,7 +27,7 @@ const ContextMenuSubTrigger = React.forwardRef<
|
|
|
27
27
|
<ContextMenuPrimitive.SubTrigger
|
|
28
28
|
ref={ref}
|
|
29
29
|
className={cn(
|
|
30
|
-
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-
|
|
30
|
+
"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",
|
|
31
31
|
inset && "pl-8",
|
|
32
32
|
className
|
|
33
33
|
)}
|
|
@@ -80,7 +80,7 @@ const ContextMenuItem = React.forwardRef<
|
|
|
80
80
|
<ContextMenuPrimitive.Item
|
|
81
81
|
ref={ref}
|
|
82
82
|
className={cn(
|
|
83
|
-
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-
|
|
83
|
+
"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",
|
|
84
84
|
inset && "pl-8",
|
|
85
85
|
className
|
|
86
86
|
)}
|
|
@@ -96,7 +96,7 @@ const ContextMenuCheckboxItem = React.forwardRef<
|
|
|
96
96
|
<ContextMenuPrimitive.CheckboxItem
|
|
97
97
|
ref={ref}
|
|
98
98
|
className={cn(
|
|
99
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-
|
|
99
|
+
"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",
|
|
100
100
|
className
|
|
101
101
|
)}
|
|
102
102
|
checked={checked}
|
|
@@ -120,7 +120,7 @@ const ContextMenuRadioItem = React.forwardRef<
|
|
|
120
120
|
<ContextMenuPrimitive.RadioItem
|
|
121
121
|
ref={ref}
|
|
122
122
|
className={cn(
|
|
123
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-
|
|
123
|
+
"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",
|
|
124
124
|
className
|
|
125
125
|
)}
|
|
126
126
|
{...props}
|
|
@@ -144,7 +144,7 @@ const ContextMenuLabel = React.forwardRef<
|
|
|
144
144
|
<ContextMenuPrimitive.Label
|
|
145
145
|
ref={ref}
|
|
146
146
|
className={cn(
|
|
147
|
-
"px-2 py-1.5 text-
|
|
147
|
+
"px-2 py-1.5 text-sm font-semibold text-foreground",
|
|
148
148
|
inset && "pl-8",
|
|
149
149
|
className
|
|
150
150
|
)}
|
|
@@ -25,7 +25,7 @@ const inputClassName = cn(
|
|
|
25
25
|
"disabled:cursor-not-allowed disabled:opacity-50 touch-manipulation",
|
|
26
26
|
// Admin theme colors
|
|
27
27
|
"bg-ods-card border-ods-border text-ods-text-primary",
|
|
28
|
-
"placeholder:text-
|
|
28
|
+
"placeholder:text-[#767676] focus-visible:ring-[#FFC008]",
|
|
29
29
|
"md:text-sm text-base" // Mobile zoom prevention
|
|
30
30
|
);
|
|
31
31
|
|
|
@@ -44,7 +44,7 @@ export function DateTimePicker({
|
|
|
44
44
|
return (
|
|
45
45
|
<div className={cn("space-y-2", className)}>
|
|
46
46
|
{label && (
|
|
47
|
-
<Label className="text-
|
|
47
|
+
<Label className="font-['Azeret_Mono'] text-[12px] font-semibold leading-[1em] tracking-[-0.02em] text-ods-text-secondary uppercase">
|
|
48
48
|
{label}
|
|
49
49
|
</Label>
|
|
50
50
|
)}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { X } from "lucide-react"
|
|
5
|
+
|
|
6
|
+
import { cn } from "../utils/cn"
|
|
7
|
+
|
|
8
|
+
interface DialogProps {
|
|
9
|
+
open?: boolean
|
|
10
|
+
onOpenChange?: (open: boolean) => void
|
|
11
|
+
children: React.ReactNode
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const Dialog: React.FC<DialogProps> = ({ open, onOpenChange, children }) => {
|
|
15
|
+
console.log('Dialog render - open:', open);
|
|
16
|
+
if (!open) return null
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div
|
|
20
|
+
className="fixed inset-0 z-[9999] bg-black/80 backdrop-blur-sm"
|
|
21
|
+
onClick={() => onOpenChange?.(false)}
|
|
22
|
+
style={{ position: 'fixed', top: 0, left: 0, right: 0, bottom: 0, zIndex: 9999 }}
|
|
23
|
+
>
|
|
24
|
+
{children}
|
|
25
|
+
</div>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const DialogTrigger = React.forwardRef<
|
|
30
|
+
HTMLButtonElement,
|
|
31
|
+
React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
32
|
+
>(({ children, ...props }, ref) => (
|
|
33
|
+
<button ref={ref} {...props}>
|
|
34
|
+
{children}
|
|
35
|
+
</button>
|
|
36
|
+
))
|
|
37
|
+
DialogTrigger.displayName = "DialogTrigger"
|
|
38
|
+
|
|
39
|
+
const DialogPortal: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
40
|
+
return <>{children}</>
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const DialogClose = React.forwardRef<
|
|
44
|
+
HTMLButtonElement,
|
|
45
|
+
React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
46
|
+
>(({ children, ...props }, ref) => (
|
|
47
|
+
<button ref={ref} {...props}>
|
|
48
|
+
{children}
|
|
49
|
+
</button>
|
|
50
|
+
))
|
|
51
|
+
DialogClose.displayName = "DialogClose"
|
|
52
|
+
|
|
53
|
+
const DialogOverlay = React.forwardRef<
|
|
54
|
+
HTMLDivElement,
|
|
55
|
+
React.HTMLAttributes<HTMLDivElement>
|
|
56
|
+
>(({ className, ...props }, ref) => (
|
|
57
|
+
<div
|
|
58
|
+
ref={ref}
|
|
59
|
+
className={cn(
|
|
60
|
+
"fixed inset-0 z-[9999] bg-black/80 backdrop-blur-sm",
|
|
61
|
+
className,
|
|
62
|
+
)}
|
|
63
|
+
{...props}
|
|
64
|
+
/>
|
|
65
|
+
))
|
|
66
|
+
DialogOverlay.displayName = "DialogOverlay"
|
|
67
|
+
|
|
68
|
+
interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
69
|
+
onCloseClick?: () => void
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(
|
|
73
|
+
({ className, children, onCloseClick, ...props }, ref) => {
|
|
74
|
+
console.log('DialogContent render');
|
|
75
|
+
return (
|
|
76
|
+
<div
|
|
77
|
+
ref={ref}
|
|
78
|
+
className={cn(
|
|
79
|
+
"fixed left-[50%] top-[50%] z-[10000] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-300 bg-white p-6 shadow-lg rounded-lg",
|
|
80
|
+
className,
|
|
81
|
+
)}
|
|
82
|
+
style={{
|
|
83
|
+
position: 'fixed',
|
|
84
|
+
left: '50%',
|
|
85
|
+
top: '50%',
|
|
86
|
+
transform: 'translate(-50%, -50%)',
|
|
87
|
+
zIndex: 10000,
|
|
88
|
+
backgroundColor: 'white',
|
|
89
|
+
border: '2px solid gray'
|
|
90
|
+
}}
|
|
91
|
+
onClick={(e) => e.stopPropagation()}
|
|
92
|
+
{...props}
|
|
93
|
+
>
|
|
94
|
+
{children}
|
|
95
|
+
<button
|
|
96
|
+
onClick={onCloseClick}
|
|
97
|
+
type="button"
|
|
98
|
+
className="absolute right-4 top-4 rounded-sm opacity-70 text-gray-500 transition-opacity hover:opacity-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
|
|
99
|
+
>
|
|
100
|
+
<X className="h-4 w-4" />
|
|
101
|
+
<span className="sr-only">Close</span>
|
|
102
|
+
</button>
|
|
103
|
+
</div>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
DialogContent.displayName = "DialogContent"
|
|
108
|
+
|
|
109
|
+
const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
110
|
+
<div className={cn("flex flex-col space-y-1.5 text-center md:text-left", className)} {...props} />
|
|
111
|
+
)
|
|
112
|
+
DialogHeader.displayName = "DialogHeader"
|
|
113
|
+
|
|
114
|
+
const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
115
|
+
<div className={cn("flex flex-col-reverse md:flex-row md:justify-end md:space-x-2", className)} {...props} />
|
|
116
|
+
)
|
|
117
|
+
DialogFooter.displayName = "DialogFooter"
|
|
118
|
+
|
|
119
|
+
const DialogTitle = React.forwardRef<
|
|
120
|
+
HTMLHeadingElement,
|
|
121
|
+
React.HTMLAttributes<HTMLHeadingElement>
|
|
122
|
+
>(({ className, ...props }, ref) => (
|
|
123
|
+
<h2
|
|
124
|
+
ref={ref}
|
|
125
|
+
className={cn("text-lg font-semibold leading-none tracking-tight text-black", className)}
|
|
126
|
+
{...props}
|
|
127
|
+
/>
|
|
128
|
+
))
|
|
129
|
+
DialogTitle.displayName = "DialogTitle"
|
|
130
|
+
|
|
131
|
+
const DialogDescription = React.forwardRef<
|
|
132
|
+
HTMLParagraphElement,
|
|
133
|
+
React.HTMLAttributes<HTMLParagraphElement>
|
|
134
|
+
>(({ className, ...props }, ref) => (
|
|
135
|
+
<p ref={ref} className={cn("text-sm text-gray-600", className)} {...props} />
|
|
136
|
+
))
|
|
137
|
+
DialogDescription.displayName = "DialogDescription"
|
|
138
|
+
|
|
139
|
+
export {
|
|
140
|
+
Dialog,
|
|
141
|
+
DialogPortal,
|
|
142
|
+
DialogOverlay,
|
|
143
|
+
DialogClose,
|
|
144
|
+
DialogTrigger,
|
|
145
|
+
DialogContent,
|
|
146
|
+
DialogHeader,
|
|
147
|
+
DialogFooter,
|
|
148
|
+
DialogTitle,
|
|
149
|
+
DialogDescription,
|
|
150
|
+
}
|
|
@@ -291,7 +291,7 @@ function DocViewerContent({
|
|
|
291
291
|
{error && (
|
|
292
292
|
<div className="flex justify-center">
|
|
293
293
|
<div className="rounded-lg border bg-ods-card p-8 text-center max-w-md border-ods-border">
|
|
294
|
-
<h2 className="text-
|
|
294
|
+
<h2 className="text-xl font-semibold text-ods-text-primary">
|
|
295
295
|
Error Loading Documents
|
|
296
296
|
</h2>
|
|
297
297
|
<p className="mt-2 text-ods-text-secondary">{error}. Please try again later.</p>
|
|
@@ -322,7 +322,7 @@ function DocViewerContent({
|
|
|
322
322
|
<PersistentSidebar isLoading={false}>
|
|
323
323
|
<div className="hidden lg:block">
|
|
324
324
|
<div className="space-y-4">
|
|
325
|
-
<h3 className="text-
|
|
325
|
+
<h3 className="text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em]">
|
|
326
326
|
{sidebarLabel}
|
|
327
327
|
</h3>
|
|
328
328
|
<MultiLevelNavigation
|
|
@@ -369,7 +369,7 @@ function DocViewerContent({
|
|
|
369
369
|
renderSkeleton(selectedNodeDocType)
|
|
370
370
|
) : !content ? (
|
|
371
371
|
<div className="text-center py-16">
|
|
372
|
-
<p className="text-
|
|
372
|
+
<p className="text-xl text-ods-text-secondary">{resolvedEmptyText}</p>
|
|
373
373
|
</div>
|
|
374
374
|
) : (
|
|
375
375
|
renderedContent
|
|
@@ -406,7 +406,7 @@ function DocViewerContent({
|
|
|
406
406
|
!isLoadingContent && (
|
|
407
407
|
<div className="hidden lg:block">
|
|
408
408
|
<div className="sticky top-24">
|
|
409
|
-
<h3 className="text-
|
|
409
|
+
<h3 className="text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em] mb-4">
|
|
410
410
|
ON THIS PAGE
|
|
411
411
|
</h3>
|
|
412
412
|
<StickySectionNav
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
|
|
5
|
+
import { Check, ChevronRight, Circle } from "lucide-react"
|
|
6
|
+
|
|
7
|
+
import { cn } from "../utils/cn"
|
|
8
|
+
|
|
9
|
+
const DropdownMenu = DropdownMenuPrimitive.Root
|
|
10
|
+
|
|
11
|
+
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
|
|
12
|
+
|
|
13
|
+
const DropdownMenuGroup = DropdownMenuPrimitive.Group
|
|
14
|
+
|
|
15
|
+
const DropdownMenuPortal = DropdownMenuPrimitive.Portal
|
|
16
|
+
|
|
17
|
+
const DropdownMenuSub = DropdownMenuPrimitive.Sub
|
|
18
|
+
|
|
19
|
+
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
|
|
20
|
+
|
|
21
|
+
const DropdownMenuSubTrigger = React.forwardRef<
|
|
22
|
+
React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
|
|
23
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
24
|
+
inset?: boolean
|
|
25
|
+
}
|
|
26
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
27
|
+
<DropdownMenuPrimitive.SubTrigger
|
|
28
|
+
ref={ref}
|
|
29
|
+
className={cn(
|
|
30
|
+
"flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-ods-bg-hover focus:bg-ods-bg-hover data-[state=open]:bg-ods-bg-hover [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
31
|
+
inset && "pl-8",
|
|
32
|
+
className
|
|
33
|
+
)}
|
|
34
|
+
{...props}
|
|
35
|
+
>
|
|
36
|
+
{children}
|
|
37
|
+
<ChevronRight className="ml-auto" />
|
|
38
|
+
</DropdownMenuPrimitive.SubTrigger>
|
|
39
|
+
))
|
|
40
|
+
DropdownMenuSubTrigger.displayName =
|
|
41
|
+
DropdownMenuPrimitive.SubTrigger.displayName
|
|
42
|
+
|
|
43
|
+
const DropdownMenuSubContent = React.forwardRef<
|
|
44
|
+
React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
|
|
45
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
|
|
46
|
+
>(({ className, ...props }, ref) => (
|
|
47
|
+
<DropdownMenuPrimitive.SubContent
|
|
48
|
+
ref={ref}
|
|
49
|
+
className={cn(
|
|
50
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-lg 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",
|
|
51
|
+
className
|
|
52
|
+
)}
|
|
53
|
+
{...props}
|
|
54
|
+
/>
|
|
55
|
+
))
|
|
56
|
+
DropdownMenuSubContent.displayName =
|
|
57
|
+
DropdownMenuPrimitive.SubContent.displayName
|
|
58
|
+
|
|
59
|
+
const DropdownMenuContent = React.forwardRef<
|
|
60
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
|
|
61
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
|
|
62
|
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
63
|
+
<DropdownMenuPrimitive.Portal>
|
|
64
|
+
<DropdownMenuPrimitive.Content
|
|
65
|
+
ref={ref}
|
|
66
|
+
sideOffset={sideOffset}
|
|
67
|
+
className={cn(
|
|
68
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-md 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",
|
|
69
|
+
className
|
|
70
|
+
)}
|
|
71
|
+
{...props}
|
|
72
|
+
/>
|
|
73
|
+
</DropdownMenuPrimitive.Portal>
|
|
74
|
+
))
|
|
75
|
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
|
|
76
|
+
|
|
77
|
+
const DropdownMenuItem = React.forwardRef<
|
|
78
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Item>,
|
|
79
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
|
|
80
|
+
inset?: boolean
|
|
81
|
+
}
|
|
82
|
+
>(({ className, inset, ...props }, ref) => (
|
|
83
|
+
<DropdownMenuPrimitive.Item
|
|
84
|
+
ref={ref}
|
|
85
|
+
className={cn(
|
|
86
|
+
"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
87
|
+
inset && "pl-8",
|
|
88
|
+
className
|
|
89
|
+
)}
|
|
90
|
+
{...props}
|
|
91
|
+
/>
|
|
92
|
+
))
|
|
93
|
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
|
|
94
|
+
|
|
95
|
+
const DropdownMenuCheckboxItem = React.forwardRef<
|
|
96
|
+
React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
|
|
97
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
|
|
98
|
+
>(({ className, children, checked, ...props }, ref) => (
|
|
99
|
+
<DropdownMenuPrimitive.CheckboxItem
|
|
100
|
+
ref={ref}
|
|
101
|
+
className={cn(
|
|
102
|
+
"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
103
|
+
className
|
|
104
|
+
)}
|
|
105
|
+
checked={checked}
|
|
106
|
+
{...props}
|
|
107
|
+
>
|
|
108
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
109
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
110
|
+
<Check className="h-4 w-4" />
|
|
111
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
112
|
+
</span>
|
|
113
|
+
{children}
|
|
114
|
+
</DropdownMenuPrimitive.CheckboxItem>
|
|
115
|
+
))
|
|
116
|
+
DropdownMenuCheckboxItem.displayName =
|
|
117
|
+
DropdownMenuPrimitive.CheckboxItem.displayName
|
|
118
|
+
|
|
119
|
+
const DropdownMenuRadioItem = React.forwardRef<
|
|
120
|
+
React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
|
|
121
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
|
|
122
|
+
>(({ className, children, ...props }, ref) => (
|
|
123
|
+
<DropdownMenuPrimitive.RadioItem
|
|
124
|
+
ref={ref}
|
|
125
|
+
className={cn(
|
|
126
|
+
"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
127
|
+
className
|
|
128
|
+
)}
|
|
129
|
+
{...props}
|
|
130
|
+
>
|
|
131
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
132
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
133
|
+
<Circle className="h-2 w-2 fill-ods-accent" />
|
|
134
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
135
|
+
</span>
|
|
136
|
+
{children}
|
|
137
|
+
</DropdownMenuPrimitive.RadioItem>
|
|
138
|
+
))
|
|
139
|
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
|
|
140
|
+
|
|
141
|
+
const DropdownMenuLabel = React.forwardRef<
|
|
142
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Label>,
|
|
143
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
|
144
|
+
inset?: boolean
|
|
145
|
+
}
|
|
146
|
+
>(({ className, inset, ...props }, ref) => (
|
|
147
|
+
<DropdownMenuPrimitive.Label
|
|
148
|
+
ref={ref}
|
|
149
|
+
className={cn(
|
|
150
|
+
"px-2 py-1.5 text-sm font-semibold text-ods-text-secondary",
|
|
151
|
+
inset && "pl-8",
|
|
152
|
+
className
|
|
153
|
+
)}
|
|
154
|
+
{...props}
|
|
155
|
+
/>
|
|
156
|
+
))
|
|
157
|
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
|
|
158
|
+
|
|
159
|
+
const DropdownMenuSeparator = React.forwardRef<
|
|
160
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
|
|
161
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
|
|
162
|
+
>(({ className, ...props }, ref) => (
|
|
163
|
+
<DropdownMenuPrimitive.Separator
|
|
164
|
+
ref={ref}
|
|
165
|
+
className={cn("-mx-1 my-1 h-px bg-ods-border", className)}
|
|
166
|
+
{...props}
|
|
167
|
+
/>
|
|
168
|
+
))
|
|
169
|
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
|
|
170
|
+
|
|
171
|
+
const DropdownMenuShortcut = ({
|
|
172
|
+
className,
|
|
173
|
+
...props
|
|
174
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
175
|
+
return (
|
|
176
|
+
<span
|
|
177
|
+
className={cn("ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60", className)}
|
|
178
|
+
{...props}
|
|
179
|
+
/>
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
|
|
183
|
+
|
|
184
|
+
export {
|
|
185
|
+
DropdownMenu,
|
|
186
|
+
DropdownMenuTrigger,
|
|
187
|
+
DropdownMenuContent,
|
|
188
|
+
DropdownMenuItem,
|
|
189
|
+
DropdownMenuCheckboxItem,
|
|
190
|
+
DropdownMenuRadioItem,
|
|
191
|
+
DropdownMenuLabel,
|
|
192
|
+
DropdownMenuSeparator,
|
|
193
|
+
DropdownMenuShortcut,
|
|
194
|
+
DropdownMenuGroup,
|
|
195
|
+
DropdownMenuPortal,
|
|
196
|
+
DropdownMenuSub,
|
|
197
|
+
DropdownMenuSubContent,
|
|
198
|
+
DropdownMenuSubTrigger,
|
|
199
|
+
DropdownMenuRadioGroup,
|
|
200
|
+
}
|
|
@@ -57,7 +57,7 @@ function SlidesViewToggle({
|
|
|
57
57
|
key={key}
|
|
58
58
|
value={key}
|
|
59
59
|
aria-label={label}
|
|
60
|
-
className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-
|
|
60
|
+
className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-sm font-medium transition-colors ${
|
|
61
61
|
active
|
|
62
62
|
? 'bg-ods-accent text-ods-text-on-accent'
|
|
63
63
|
: 'text-ods-text-secondary hover:text-ods-text-primary hover:bg-ods-bg-hover'
|
|
@@ -106,7 +106,7 @@ export function FigmaEmbed({ url, title, height, loading = 'lazy' }: FigmaEmbedP
|
|
|
106
106
|
<div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
|
107
107
|
<div className="flex items-center gap-2 min-w-0">
|
|
108
108
|
<FigmaIcon className="w-5 h-5 shrink-0" />
|
|
109
|
-
<span className="text-
|
|
109
|
+
<span className="font-sans text-base font-semibold text-ods-text-primary truncate">
|
|
110
110
|
{heading}
|
|
111
111
|
</span>
|
|
112
112
|
</div>
|
|
@@ -30,10 +30,10 @@ export function FileDownloadCard({
|
|
|
30
30
|
<div className="bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4">
|
|
31
31
|
<FileText className="w-16 h-16 text-ods-text-secondary mx-auto" />
|
|
32
32
|
<div>
|
|
33
|
-
<h3 className="text-
|
|
33
|
+
<h3 className="text-lg font-semibold text-ods-text-primary">
|
|
34
34
|
{fileName || 'File'}
|
|
35
35
|
</h3>
|
|
36
|
-
<div className="flex items-center justify-center gap-3 mt-2 text-
|
|
36
|
+
<div className="flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary">
|
|
37
37
|
{mimeType && <span>{mimeType}</span>}
|
|
38
38
|
{typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}
|
|
39
39
|
</div>
|
|
@@ -30,7 +30,7 @@ export function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleShee
|
|
|
30
30
|
<div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
|
31
31
|
<div className="flex items-center gap-2 min-w-0">
|
|
32
32
|
<GoogleSheetsIcon className="w-5 h-5 shrink-0" />
|
|
33
|
-
<h2 className="text-
|
|
33
|
+
<h2 className="text-xl font-semibold text-ods-text-primary truncate">{displayName}</h2>
|
|
34
34
|
</div>
|
|
35
35
|
<Button
|
|
36
36
|
variant="outline"
|
|
@@ -46,7 +46,7 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
|
|
|
46
46
|
href={url}
|
|
47
47
|
target="_blank"
|
|
48
48
|
rel="noopener noreferrer"
|
|
49
|
-
className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-card border border-ods-border text-ods-text-primary rounded-md text-
|
|
49
|
+
className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-card border border-ods-border text-ods-text-primary rounded-md text-sm font-medium hover:bg-ods-bg-secondary transition-colors"
|
|
50
50
|
>
|
|
51
51
|
<LinkedinIcon className="w-4 h-4" />
|
|
52
52
|
<span>View on LinkedIn</span>
|
|
@@ -84,12 +84,12 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
|
|
|
84
84
|
onLoad={() => setLoaded(true)}
|
|
85
85
|
/>
|
|
86
86
|
</div>
|
|
87
|
-
<div className="px-4 py-3 bg-ods-bg-
|
|
87
|
+
<div className="px-4 py-3 bg-ods-bg-secondary border-t border-ods-border">
|
|
88
88
|
<a
|
|
89
89
|
href={url}
|
|
90
90
|
target="_blank"
|
|
91
91
|
rel="noopener noreferrer"
|
|
92
|
-
className="inline-flex items-center space-x-2 text-ods-accent hover:text-ods-accent/80 transition-colors text-
|
|
92
|
+
className="inline-flex items-center space-x-2 text-ods-accent hover:text-ods-accent/80 transition-colors text-sm font-medium"
|
|
93
93
|
>
|
|
94
94
|
<ExternalLink className="w-4 h-4" />
|
|
95
95
|
<span>View on LinkedIn</span>
|