@datarecce/ui 0.1.41 → 0.2.1-nightly.20260402
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/README.md +28 -133
- package/dist/AuthModal-B38pWD3T.js +7 -0
- package/dist/AuthModal-B38pWD3T.js.map +1 -0
- package/dist/RouteConfigContext-DWFg6bll.d.ts +171 -0
- package/dist/RouteConfigContext-DWFg6bll.d.ts.map +1 -0
- package/dist/RunProgress-BCFXvUsE.d.ts +429 -0
- package/dist/RunProgress-BCFXvUsE.d.ts.map +1 -0
- package/dist/ScreenshotDataGrid-BAsPWcde.d.ts +63 -0
- package/dist/ScreenshotDataGrid-BAsPWcde.d.ts.map +1 -0
- package/dist/SplitPane-g8w-XF2_.d.ts +1607 -0
- package/dist/SplitPane-g8w-XF2_.d.ts.map +1 -0
- package/dist/advanced.d.ts +17 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +3 -0
- package/dist/advanced.js.map +1 -0
- package/dist/api-BwiRz6pD.d.ts +254 -0
- package/dist/api-BwiRz6pD.d.ts.map +1 -0
- package/dist/api-CbzeUNef.js +3 -0
- package/dist/api-CbzeUNef.js.map +1 -0
- package/dist/api.d.ts +3 -2
- package/dist/api.js +2 -100
- package/dist/colors-BbPSDR1X.js +3 -0
- package/dist/colors-BbPSDR1X.js.map +1 -0
- package/dist/components-run.d.ts +5 -0
- package/dist/components-run.js +2 -0
- package/dist/components.d.ts +9 -2
- package/dist/components.js +2 -86
- package/dist/constants-D-hOGDbU.js +3 -0
- package/dist/constants-D-hOGDbU.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +2 -0
- package/dist/contexts.d.ts +6 -0
- package/dist/contexts.js +2 -0
- package/dist/fetchClient-Bqjx8inP.js +3 -0
- package/dist/fetchClient-Bqjx8inP.js.map +1 -0
- package/dist/fetchClient-CTnJ39EA.d.ts +19 -0
- package/dist/fetchClient-CTnJ39EA.d.ts.map +1 -0
- package/dist/hooks.d.ts +3 -2
- package/dist/hooks.js +2 -43
- package/dist/index-B1IyNkDA.d.ts +472 -0
- package/dist/index-B1IyNkDA.d.ts.map +1 -0
- package/dist/index-BJOCIgE1.d.ts +148 -0
- package/dist/index-BJOCIgE1.d.ts.map +1 -0
- package/dist/index-C9nBECPv.d.ts +212 -0
- package/dist/index-C9nBECPv.d.ts.map +1 -0
- package/dist/index-CHJ0PCEg.d.ts +380 -0
- package/dist/index-CHJ0PCEg.d.ts.map +1 -0
- package/dist/index-CZ7gueQV.d.ts +13 -0
- package/dist/index-CZ7gueQV.d.ts.map +1 -0
- package/dist/index-CaKcjGJC.d.ts +1536 -0
- package/dist/index-CaKcjGJC.d.ts.map +1 -0
- package/dist/index-D-H3NTdf.d.ts +744 -0
- package/dist/index-D-H3NTdf.d.ts.map +1 -0
- package/dist/index-Dh6gw0NG.d.ts +351 -0
- package/dist/index-Dh6gw0NG.d.ts.map +1 -0
- package/dist/index-Dp-BUtpt.d.ts +704 -0
- package/dist/index-Dp-BUtpt.d.ts.map +1 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +2 -198
- package/dist/instanceInfo-DNLFhkK8.d.ts +909 -0
- package/dist/instanceInfo-DNLFhkK8.d.ts.map +1 -0
- package/dist/keepAlive-Dj0q3fC9.js +3 -0
- package/dist/keepAlive-Dj0q3fC9.js.map +1 -0
- package/dist/lib/api/queryClient.d.ts +8 -0
- package/dist/lib/api/queryClient.d.ts.map +1 -0
- package/dist/lib/api/queryClient.js +3 -0
- package/dist/lib/api/queryClient.js.map +1 -0
- package/dist/lib/api/track.d.ts +137 -0
- package/dist/lib/api/track.d.ts.map +1 -0
- package/dist/lib/api/track.js +3 -0
- package/dist/lib/api/track.js.map +1 -0
- package/dist/lib/api/user.d.ts +16 -0
- package/dist/lib/api/user.d.ts.map +1 -0
- package/dist/lib/api/user.js +3 -0
- package/dist/lib/api/user.js.map +1 -0
- package/dist/lib/const.d.ts +8 -0
- package/dist/lib/const.d.ts.map +1 -0
- package/dist/lib/const.js +3 -0
- package/dist/lib/const.js.map +1 -0
- package/dist/lib/result/ResultErrorFallback.d.ts +8 -0
- package/dist/lib/result/ResultErrorFallback.d.ts.map +1 -0
- package/dist/lib/result/ResultErrorFallback.js +3 -0
- package/dist/lib/result/ResultErrorFallback.js.map +1 -0
- package/dist/lineage-DsKqx9yh.d.ts +1299 -0
- package/dist/lineage-DsKqx9yh.d.ts.map +1 -0
- package/dist/primitives-D8s_Rs5T.d.ts +1089 -0
- package/dist/primitives-D8s_Rs5T.d.ts.map +1 -0
- package/dist/primitives.d.ts +8 -0
- package/dist/primitives.js +2 -0
- package/dist/result.d.ts +3 -0
- package/dist/result.js +2 -0
- package/dist/src-BH-TT0Mt.js +12 -0
- package/dist/src-BH-TT0Mt.js.map +1 -0
- package/dist/style.css +290 -0
- package/dist/styles.css +478 -4
- package/dist/theme-B_XT39eO.js +3 -0
- package/dist/theme-B_XT39eO.js.map +1 -0
- package/dist/theme.d.ts +2 -2
- package/dist/theme.js +2 -9
- package/dist/types-DLRfpcrV.d.ts +234 -0
- package/dist/types-DLRfpcrV.d.ts.map +1 -0
- package/dist/types-qpgIe7MT.d.ts +171 -0
- package/dist/types-qpgIe7MT.d.ts.map +1 -0
- package/dist/types.d.ts +10 -2
- package/dist/types.js +3 -9
- package/dist/types.js.map +1 -0
- package/dist/useThemeColors-OwCMwSrx.d.ts +79 -0
- package/dist/useThemeColors-OwCMwSrx.d.ts.map +1 -0
- package/dist/utils-BwEuAiEd.js +3 -0
- package/dist/utils-BwEuAiEd.js.map +1 -0
- package/dist/utils-Crcz1Rb5.js +6 -0
- package/dist/utils-Crcz1Rb5.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +2 -0
- package/package.json +142 -108
- package/LICENSE +0 -201
- package/dist/RecceCheckContext-BJprb2xR.js +0 -7968
- package/dist/RecceCheckContext-BJprb2xR.js.map +0 -1
- package/dist/RecceCheckContext-DPnWB_aU.css +0 -215
- package/dist/RecceCheckContext-DPnWB_aU.css.map +0 -1
- package/dist/RecceCheckContext-DbZ7BdRy.mjs +0 -7426
- package/dist/RecceCheckContext-DbZ7BdRy.mjs.map +0 -1
- package/dist/RecceCheckContext-DyxOeUsX.css +0 -215
- package/dist/RecceCheckContext-DyxOeUsX.css.map +0 -1
- package/dist/api.d.mts +0 -3
- package/dist/api.js.map +0 -1
- package/dist/api.mjs +0 -46
- package/dist/api.mjs.map +0 -1
- package/dist/components-BeAjVBV3.css +0 -70
- package/dist/components-BeAjVBV3.css.map +0 -1
- package/dist/components-DfXnN1Hx.js +0 -14689
- package/dist/components-DfXnN1Hx.js.map +0 -1
- package/dist/components-iUxcqtUB.css +0 -70
- package/dist/components-iUxcqtUB.css.map +0 -1
- package/dist/components-jh6r4tQn.mjs +0 -12348
- package/dist/components-jh6r4tQn.mjs.map +0 -1
- package/dist/components.d.mts +0 -3
- package/dist/components.mjs +0 -9
- package/dist/const-CaIm1Z8g.mjs +0 -12
- package/dist/const-CaIm1Z8g.mjs.map +0 -1
- package/dist/const-CvdZO0FN.js +0 -24
- package/dist/const-CvdZO0FN.js.map +0 -1
- package/dist/hooks-cQsBXBd1.js +0 -40
- package/dist/hooks-cQsBXBd1.js.map +0 -1
- package/dist/hooks-eaHm_yEp.mjs +0 -33
- package/dist/hooks-eaHm_yEp.mjs.map +0 -1
- package/dist/hooks.d.mts +0 -3
- package/dist/hooks.mjs +0 -8
- package/dist/html2canvas-pro.esm-CsuSOHXp.js +0 -7250
- package/dist/html2canvas-pro.esm-CsuSOHXp.js.map +0 -1
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs +0 -7249
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs.map +0 -1
- package/dist/index-B5bpmv0i.d.mts +0 -2172
- package/dist/index-B5bpmv0i.d.mts.map +0 -1
- package/dist/index-B9lSPJTi.d.ts +0 -2170
- package/dist/index-B9lSPJTi.d.ts.map +0 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -20
- package/dist/index.mjs.map +0 -1
- package/dist/mui-theme-CUhybmBq.mjs +0 -696
- package/dist/mui-theme-CUhybmBq.mjs.map +0 -1
- package/dist/mui-theme-iBHkjXJq.js +0 -732
- package/dist/mui-theme-iBHkjXJq.js.map +0 -1
- package/dist/state-CTITyT0R.js +0 -795
- package/dist/state-CTITyT0R.js.map +0 -1
- package/dist/state-Sc2b4jri.mjs +0 -382
- package/dist/state-Sc2b4jri.mjs.map +0 -1
- package/dist/theme.d.mts +0 -3
- package/dist/theme.mjs +0 -4
- package/dist/tooltipMessage-BC5W7H3X.js +0 -13
- package/dist/tooltipMessage-BC5W7H3X.js.map +0 -1
- package/dist/tooltipMessage-B_xMIKWL.mjs +0 -7
- package/dist/tooltipMessage-B_xMIKWL.mjs.map +0 -1
- package/dist/types.d.mts +0 -3
- package/dist/types.mjs +0 -6
- package/dist/urls-BQW5wjg-.js +0 -13
- package/dist/urls-BQW5wjg-.js.map +0 -1
- package/dist/urls-DT7FVEcS.mjs +0 -7
- package/dist/urls-DT7FVEcS.mjs.map +0 -1
- package/dist/version-B9s8yne-.js +0 -300
- package/dist/version-B9s8yne-.js.map +0 -1
- package/dist/version-DP1kU_7v.mjs +0 -162
- package/dist/version-DP1kU_7v.mjs.map +0 -1
- package/recce-source/.editorconfig +0 -26
- package/recce-source/.flake8 +0 -37
- package/recce-source/.github/ISSUE_TEMPLATE/bug_report.yml +0 -67
- package/recce-source/.github/ISSUE_TEMPLATE/custom.md +0 -10
- package/recce-source/.github/ISSUE_TEMPLATE/feature_request.yml +0 -42
- package/recce-source/.github/PULL_REQUEST_TEMPLATE.md +0 -21
- package/recce-source/.github/copilot-instructions.md +0 -331
- package/recce-source/.github/instructions/backend-instructions.md +0 -541
- package/recce-source/.github/instructions/frontend-instructions.md +0 -317
- package/recce-source/.github/workflows/build-statics.yaml +0 -72
- package/recce-source/.github/workflows/bump.yaml +0 -48
- package/recce-source/.github/workflows/integration-tests-cloud.yaml +0 -92
- package/recce-source/.github/workflows/integration-tests-sqlmesh.yaml +0 -33
- package/recce-source/.github/workflows/integration-tests.yaml +0 -52
- package/recce-source/.github/workflows/nightly.yaml +0 -246
- package/recce-source/.github/workflows/release.yaml +0 -196
- package/recce-source/.github/workflows/tests-js.yaml +0 -58
- package/recce-source/.github/workflows/tests-python.yaml +0 -128
- package/recce-source/.pre-commit-config.yaml +0 -26
- package/recce-source/CLAUDE.md +0 -483
- package/recce-source/CODE_OF_CONDUCT.md +0 -128
- package/recce-source/CONTRIBUTING.md +0 -107
- package/recce-source/LICENSE +0 -201
- package/recce-source/Makefile +0 -126
- package/recce-source/README.md +0 -182
- package/recce-source/RECCE_CLOUD.md +0 -81
- package/recce-source/SECURITY.md +0 -25
- package/recce-source/docs/PACKAGING.md +0 -340
- package/recce-source/docs/README.md +0 -1
- package/recce-source/docs/plans/2024-12-31-csv-download-design.md +0 -121
- package/recce-source/docs/plans/2024-12-31-csv-download-implementation.md +0 -930
- package/recce-source/integration_tests/dbt/dbt_project.yml +0 -26
- package/recce-source/integration_tests/dbt/models/customers.sql +0 -69
- package/recce-source/integration_tests/dbt/models/docs.md +0 -14
- package/recce-source/integration_tests/dbt/models/orders.sql +0 -56
- package/recce-source/integration_tests/dbt/models/schema.yml +0 -82
- package/recce-source/integration_tests/dbt/models/staging/schema.yml +0 -31
- package/recce-source/integration_tests/dbt/models/staging/stg_customers.sql +0 -22
- package/recce-source/integration_tests/dbt/models/staging/stg_orders.sql +0 -23
- package/recce-source/integration_tests/dbt/models/staging/stg_payments.sql +0 -25
- package/recce-source/integration_tests/dbt/packages.yml +0 -7
- package/recce-source/integration_tests/dbt/profiles.yml +0 -8
- package/recce-source/integration_tests/dbt/seeds/raw_customers.csv +0 -101
- package/recce-source/integration_tests/dbt/seeds/raw_orders.csv +0 -100
- package/recce-source/integration_tests/dbt/seeds/raw_payments.csv +0 -114
- package/recce-source/integration_tests/dbt/seeds/raw_statuses.csv +0 -5
- package/recce-source/integration_tests/dbt/smoke_test.sh +0 -72
- package/recce-source/integration_tests/dbt/smoke_test_cloud.sh +0 -71
- package/recce-source/integration_tests/sqlmesh/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +0 -9
- package/recce-source/integration_tests/sqlmesh/audits/items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/audits/order_items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/config.py +0 -171
- package/recce-source/integration_tests/sqlmesh/helper.py +0 -20
- package/recce-source/integration_tests/sqlmesh/hooks/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/macros.py +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/macros.sql +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/utils.py +0 -11
- package/recce-source/integration_tests/sqlmesh/metrics/metrics.sql +0 -25
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +0 -41
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +0 -60
- package/recce-source/integration_tests/sqlmesh/models/customers.sql +0 -32
- package/recce-source/integration_tests/sqlmesh/models/items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/marketing.sql +0 -15
- package/recce-source/integration_tests/sqlmesh/models/order_items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/orders.py +0 -70
- package/recce-source/integration_tests/sqlmesh/models/raw_marketing.py +0 -62
- package/recce-source/integration_tests/sqlmesh/models/top_waiters.sql +0 -23
- package/recce-source/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiter_names.sql +0 -10
- package/recce-source/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiters.py +0 -62
- package/recce-source/integration_tests/sqlmesh/prep_env.sh +0 -16
- package/recce-source/integration_tests/sqlmesh/schema.yaml +0 -5
- package/recce-source/integration_tests/sqlmesh/seeds/waiter_names.csv +0 -11
- package/recce-source/integration_tests/sqlmesh/test_server.sh +0 -29
- package/recce-source/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +0 -63
- package/recce-source/integration_tests/sqlmesh/tests/test_order_items.yaml +0 -72
- package/recce-source/js/.editorconfig +0 -27
- package/recce-source/js/.env.development +0 -5
- package/recce-source/js/.husky/pre-commit +0 -29
- package/recce-source/js/.nvmrc +0 -1
- package/recce-source/js/README.md +0 -39
- package/recce-source/js/app/(mainComponents)/DisplayModeToggle.tsx +0 -65
- package/recce-source/js/app/(mainComponents)/NavBar.tsx +0 -228
- package/recce-source/js/app/(mainComponents)/RecceVersionBadge.tsx +0 -107
- package/recce-source/js/app/(mainComponents)/TopBar.tsx +0 -252
- package/recce-source/js/app/@lineage/default.tsx +0 -20
- package/recce-source/js/app/@lineage/page.tsx +0 -14
- package/recce-source/js/app/MainLayout.tsx +0 -170
- package/recce-source/js/app/Providers.tsx +0 -49
- package/recce-source/js/app/checks/page.tsx +0 -296
- package/recce-source/js/app/error.tsx +0 -93
- package/recce-source/js/app/favicon.ico +0 -0
- package/recce-source/js/app/global-error.tsx +0 -115
- package/recce-source/js/app/global.css +0 -82
- package/recce-source/js/app/layout.tsx +0 -48
- package/recce-source/js/app/lineage/page.tsx +0 -15
- package/recce-source/js/app/page.tsx +0 -12
- package/recce-source/js/app/query/page.tsx +0 -8
- package/recce-source/js/biome.json +0 -313
- package/recce-source/js/jest.config.js +0 -34
- package/recce-source/js/jest.globals.d.ts +0 -32
- package/recce-source/js/jest.setup.js +0 -91
- package/recce-source/js/next.config.js +0 -16
- package/recce-source/js/package-lock.json +0 -13843
- package/recce-source/js/package.json +0 -123
- package/recce-source/js/pnpm-lock.yaml +0 -9235
- package/recce-source/js/pnpm-workspace.yaml +0 -6
- package/recce-source/js/postcss.config.js +0 -5
- package/recce-source/js/public/auth_callback.html +0 -68
- package/recce-source/js/public/imgs/feedback/thumbs-down.png +0 -0
- package/recce-source/js/public/imgs/feedback/thumbs-up.png +0 -0
- package/recce-source/js/public/imgs/reload-image.svg +0 -4
- package/recce-source/js/public/logo/recce-logo-white.png +0 -0
- package/recce-source/js/src/components/AuthModal/AuthModal.tsx +0 -202
- package/recce-source/js/src/components/app/AvatarDropdown.tsx +0 -159
- package/recce-source/js/src/components/app/EnvInfo.tsx +0 -357
- package/recce-source/js/src/components/app/Filename.tsx +0 -388
- package/recce-source/js/src/components/app/SetupConnectionPopover.tsx +0 -91
- package/recce-source/js/src/components/app/StateExporter.tsx +0 -57
- package/recce-source/js/src/components/app/StateImporter.tsx +0 -198
- package/recce-source/js/src/components/app/StateSharing.tsx +0 -145
- package/recce-source/js/src/components/app/StateSynchronizer.tsx +0 -205
- package/recce-source/js/src/components/charts/HistogramChart.tsx +0 -291
- package/recce-source/js/src/components/charts/SquareIcon.tsx +0 -51
- package/recce-source/js/src/components/charts/TopKSummaryList.tsx +0 -457
- package/recce-source/js/src/components/charts/chartTheme.ts +0 -74
- package/recce-source/js/src/components/check/CheckBreadcrumb.tsx +0 -97
- package/recce-source/js/src/components/check/CheckDescription.tsx +0 -134
- package/recce-source/js/src/components/check/CheckDetail.tsx +0 -797
- package/recce-source/js/src/components/check/CheckEmptyState.tsx +0 -84
- package/recce-source/js/src/components/check/CheckList.tsx +0 -320
- package/recce-source/js/src/components/check/LineageDiffView.tsx +0 -32
- package/recce-source/js/src/components/check/PresetCheckTemplateView.tsx +0 -48
- package/recce-source/js/src/components/check/SchemaDiffView.tsx +0 -290
- package/recce-source/js/src/components/check/check.ts +0 -25
- package/recce-source/js/src/components/check/timeline/CheckTimeline.tsx +0 -163
- package/recce-source/js/src/components/check/timeline/CommentInput.tsx +0 -84
- package/recce-source/js/src/components/check/timeline/TimelineEvent.tsx +0 -468
- package/recce-source/js/src/components/check/timeline/index.ts +0 -12
- package/recce-source/js/src/components/check/utils.ts +0 -12
- package/recce-source/js/src/components/data-grid/ScreenshotDataGrid.tsx +0 -333
- package/recce-source/js/src/components/data-grid/agGridStyles.css +0 -55
- package/recce-source/js/src/components/data-grid/agGridTheme.ts +0 -43
- package/recce-source/js/src/components/editor/CodeEditor.tsx +0 -107
- package/recce-source/js/src/components/editor/DiffEditor.tsx +0 -162
- package/recce-source/js/src/components/editor/index.ts +0 -12
- package/recce-source/js/src/components/errorboundary/ErrorBoundary.tsx +0 -87
- package/recce-source/js/src/components/histogram/HistogramDiffForm.tsx +0 -147
- package/recce-source/js/src/components/histogram/HistogramDiffResultView.tsx +0 -63
- package/recce-source/js/src/components/icons/index.tsx +0 -142
- package/recce-source/js/src/components/lineage/ActionControl.tsx +0 -63
- package/recce-source/js/src/components/lineage/ActionTag.tsx +0 -141
- package/recce-source/js/src/components/lineage/ChangeStatusLegend.tsx +0 -46
- package/recce-source/js/src/components/lineage/ColumnLevelLineageControl.tsx +0 -327
- package/recce-source/js/src/components/lineage/ColumnLevelLineageLegend.tsx +0 -57
- package/recce-source/js/src/components/lineage/GraphColumnNode.tsx +0 -199
- package/recce-source/js/src/components/lineage/GraphEdge.tsx +0 -59
- package/recce-source/js/src/components/lineage/GraphNode.tsx +0 -555
- package/recce-source/js/src/components/lineage/LineagePage.tsx +0 -10
- package/recce-source/js/src/components/lineage/LineageView.tsx +0 -1384
- package/recce-source/js/src/components/lineage/LineageViewContext.tsx +0 -86
- package/recce-source/js/src/components/lineage/LineageViewContextMenu.tsx +0 -637
- package/recce-source/js/src/components/lineage/LineageViewNotification.tsx +0 -64
- package/recce-source/js/src/components/lineage/LineageViewTopBar.tsx +0 -596
- package/recce-source/js/src/components/lineage/NodeSqlView.tsx +0 -136
- package/recce-source/js/src/components/lineage/NodeTag.tsx +0 -278
- package/recce-source/js/src/components/lineage/NodeView.tsx +0 -642
- package/recce-source/js/src/components/lineage/SandboxView.tsx +0 -436
- package/recce-source/js/src/components/lineage/ServerDisconnectedModalContent.tsx +0 -105
- package/recce-source/js/src/components/lineage/SetupConnectionBanner.tsx +0 -52
- package/recce-source/js/src/components/lineage/SingleEnvironmentQueryView.tsx +0 -152
- package/recce-source/js/src/components/lineage/graph.test.ts +0 -31
- package/recce-source/js/src/components/lineage/graph.ts +0 -58
- package/recce-source/js/src/components/lineage/lineage.test.ts +0 -169
- package/recce-source/js/src/components/lineage/lineage.ts +0 -521
- package/recce-source/js/src/components/lineage/styles.css +0 -42
- package/recce-source/js/src/components/lineage/styles.tsx +0 -165
- package/recce-source/js/src/components/lineage/useMultiNodesAction.ts +0 -352
- package/recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx +0 -108
- package/recce-source/js/src/components/onboarding-guide/Notification.tsx +0 -62
- package/recce-source/js/src/components/profile/ProfileDiffForm.tsx +0 -134
- package/recce-source/js/src/components/profile/ProfileDiffResultView.tsx +0 -243
- package/recce-source/js/src/components/query/ChangedOnlyCheckbox.tsx +0 -29
- package/recce-source/js/src/components/query/DiffText.tsx +0 -120
- package/recce-source/js/src/components/query/QueryDiffResultView.tsx +0 -468
- package/recce-source/js/src/components/query/QueryForm.tsx +0 -80
- package/recce-source/js/src/components/query/QueryPage.tsx +0 -282
- package/recce-source/js/src/components/query/QueryResultView.tsx +0 -180
- package/recce-source/js/src/components/query/SetupConnectionGuide.tsx +0 -57
- package/recce-source/js/src/components/query/SqlEditor.tsx +0 -245
- package/recce-source/js/src/components/query/ToggleSwitch.tsx +0 -84
- package/recce-source/js/src/components/query/styles.css +0 -21
- package/recce-source/js/src/components/routing/DirectUrlAccess.test.tsx +0 -428
- package/recce-source/js/src/components/routing/LineageStatePreservation.test.tsx +0 -311
- package/recce-source/js/src/components/routing/Navigation.test.tsx +0 -256
- package/recce-source/js/src/components/rowcount/RowCountDiffResultView.tsx +0 -108
- package/recce-source/js/src/components/rowcount/delta.test.ts +0 -51
- package/recce-source/js/src/components/rowcount/delta.ts +0 -16
- package/recce-source/js/src/components/run/RunList.tsx +0 -303
- package/recce-source/js/src/components/run/RunModal.tsx +0 -191
- package/recce-source/js/src/components/run/RunPage.tsx +0 -26
- package/recce-source/js/src/components/run/RunResultPane.tsx +0 -578
- package/recce-source/js/src/components/run/RunStatusAndDate.tsx +0 -106
- package/recce-source/js/src/components/run/RunToolbar.tsx +0 -70
- package/recce-source/js/src/components/run/RunView.tsx +0 -196
- package/recce-source/js/src/components/run/registry.ts +0 -214
- package/recce-source/js/src/components/run/types.ts +0 -14
- package/recce-source/js/src/components/schema/ColumnNameCell.test.tsx +0 -169
- package/recce-source/js/src/components/schema/ColumnNameCell.tsx +0 -198
- package/recce-source/js/src/components/schema/SchemaView.tsx +0 -336
- package/recce-source/js/src/components/schema/schemaDiff.ts +0 -32
- package/recce-source/js/src/components/schema/style.css +0 -134
- package/recce-source/js/src/components/screenshot/ScreenshotBox.tsx +0 -39
- package/recce-source/js/src/components/shared/HistoryToggle.tsx +0 -35
- package/recce-source/js/src/components/split/Split.tsx +0 -40
- package/recce-source/js/src/components/split/styles.css +0 -24
- package/recce-source/js/src/components/summary/ChangeSummary.tsx +0 -264
- package/recce-source/js/src/components/summary/SchemaSummary.tsx +0 -123
- package/recce-source/js/src/components/summary/SummaryView.tsx +0 -29
- package/recce-source/js/src/components/timeout/IdleTimeoutBadge.tsx +0 -48
- package/recce-source/js/src/components/top-k/TopKDiffForm.tsx +0 -58
- package/recce-source/js/src/components/top-k/TopKDiffResultView.tsx +0 -73
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnGroupHeader.tsx +0 -228
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnHeader.tsx +0 -113
- package/recce-source/js/src/components/ui/dataGrid/defaultRenderCell.tsx +0 -72
- package/recce-source/js/src/components/ui/dataGrid/index.ts +0 -23
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.test.tsx +0 -607
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.tsx +0 -211
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.test.tsx +0 -452
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.tsx +0 -142
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.test.tsx +0 -178
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.tsx +0 -275
- package/recce-source/js/src/components/ui/markdown/ExternalLinkConfirmDialog.tsx +0 -134
- package/recce-source/js/src/components/ui/markdown/MarkdownContent.tsx +0 -364
- package/recce-source/js/src/components/ui/mui/index.ts +0 -13
- package/recce-source/js/src/components/ui/mui-provider.tsx +0 -67
- package/recce-source/js/src/components/ui/mui-theme.ts +0 -1039
- package/recce-source/js/src/components/ui/mui-utils.ts +0 -113
- package/recce-source/js/src/components/ui/toaster.tsx +0 -288
- package/recce-source/js/src/components/valuediff/ValueDiffDetailResultView.tsx +0 -216
- package/recce-source/js/src/components/valuediff/ValueDiffForm.tsx +0 -246
- package/recce-source/js/src/components/valuediff/ValueDiffResultView.tsx +0 -81
- package/recce-source/js/src/components/valuediff/shared.ts +0 -33
- package/recce-source/js/src/constants/tooltipMessage.ts +0 -3
- package/recce-source/js/src/constants/urls.ts +0 -1
- package/recce-source/js/src/lib/UrlHash.ts +0 -12
- package/recce-source/js/src/lib/api/adhocQuery.ts +0 -70
- package/recce-source/js/src/lib/api/axiosClient.ts +0 -9
- package/recce-source/js/src/lib/api/cacheKeys.ts +0 -13
- package/recce-source/js/src/lib/api/checkEvents.ts +0 -252
- package/recce-source/js/src/lib/api/checks.ts +0 -129
- package/recce-source/js/src/lib/api/cll.ts +0 -53
- package/recce-source/js/src/lib/api/connectToCloud.ts +0 -13
- package/recce-source/js/src/lib/api/flag.ts +0 -37
- package/recce-source/js/src/lib/api/info.ts +0 -198
- package/recce-source/js/src/lib/api/instanceInfo.ts +0 -25
- package/recce-source/js/src/lib/api/keepAlive.ts +0 -108
- package/recce-source/js/src/lib/api/lineagecheck.ts +0 -35
- package/recce-source/js/src/lib/api/localStorageKeys.ts +0 -7
- package/recce-source/js/src/lib/api/models.ts +0 -59
- package/recce-source/js/src/lib/api/profile.ts +0 -65
- package/recce-source/js/src/lib/api/rowcount.ts +0 -19
- package/recce-source/js/src/lib/api/runs.ts +0 -174
- package/recce-source/js/src/lib/api/schemacheck.ts +0 -31
- package/recce-source/js/src/lib/api/select.ts +0 -25
- package/recce-source/js/src/lib/api/sessionStorageKeys.ts +0 -8
- package/recce-source/js/src/lib/api/state.ts +0 -117
- package/recce-source/js/src/lib/api/track.ts +0 -281
- package/recce-source/js/src/lib/api/types.ts +0 -284
- package/recce-source/js/src/lib/api/user.ts +0 -42
- package/recce-source/js/src/lib/api/valuediff.ts +0 -46
- package/recce-source/js/src/lib/api/version.ts +0 -40
- package/recce-source/js/src/lib/const.ts +0 -9
- package/recce-source/js/src/lib/csv/extractors.test.ts +0 -456
- package/recce-source/js/src/lib/csv/extractors.ts +0 -468
- package/recce-source/js/src/lib/csv/format.test.ts +0 -211
- package/recce-source/js/src/lib/csv/format.ts +0 -44
- package/recce-source/js/src/lib/csv/index.test.ts +0 -155
- package/recce-source/js/src/lib/csv/index.ts +0 -109
- package/recce-source/js/src/lib/dataGrid/crossFunctionConsistency.test.ts +0 -626
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.test.ts +0 -2140
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.ts +0 -397
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.test.ts +0 -132
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.ts +0 -126
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.test.ts +0 -1627
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.ts +0 -140
- package/recce-source/js/src/lib/dataGrid/generators/toDataGrid.ts +0 -67
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.test.ts +0 -142
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.ts +0 -71
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.test.ts +0 -258
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.ts +0 -153
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.test.ts +0 -951
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts +0 -221
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.test.ts +0 -395
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.ts +0 -184
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.test.ts +0 -884
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.ts +0 -113
- package/recce-source/js/src/lib/dataGrid/index.ts +0 -51
- package/recce-source/js/src/lib/dataGrid/propertyBased.test.ts +0 -858
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.test.ts +0 -482
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.ts +0 -345
- package/recce-source/js/src/lib/dataGrid/shared/dataTypeEdgeCases.test.ts +0 -698
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.test.tsx +0 -820
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.tsx +0 -277
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.test.ts +0 -785
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.ts +0 -370
- package/recce-source/js/src/lib/dataGrid/shared/index.ts +0 -81
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.test.ts +0 -909
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.ts +0 -325
- package/recce-source/js/src/lib/dataGrid/shared/simpleColumnBuilder.tsx +0 -240
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.test.tsx +0 -719
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.tsx +0 -231
- package/recce-source/js/src/lib/dataGrid/shared/validation.test.ts +0 -559
- package/recce-source/js/src/lib/dataGrid/shared/validation.ts +0 -367
- package/recce-source/js/src/lib/dataGrid/warehouseNamingConventions.test.ts +0 -1117
- package/recce-source/js/src/lib/formatSelect.ts +0 -50
- package/recce-source/js/src/lib/hooks/ApiConfigContext.tsx +0 -181
- package/recce-source/js/src/lib/hooks/IdleTimeoutContext.tsx +0 -177
- package/recce-source/js/src/lib/hooks/LineageGraphContext.tsx +0 -512
- package/recce-source/js/src/lib/hooks/RecceActionContext.tsx +0 -269
- package/recce-source/js/src/lib/hooks/RecceCheckContext.tsx +0 -33
- package/recce-source/js/src/lib/hooks/RecceContextProvider.tsx +0 -54
- package/recce-source/js/src/lib/hooks/RecceInstanceContext.tsx +0 -129
- package/recce-source/js/src/lib/hooks/RecceQueryContext.tsx +0 -98
- package/recce-source/js/src/lib/hooks/RecceShareStateContext.tsx +0 -59
- package/recce-source/js/src/lib/hooks/ScreenShot.tsx +0 -399
- package/recce-source/js/src/lib/hooks/useAppRouter.test.ts +0 -211
- package/recce-source/js/src/lib/hooks/useAppRouter.ts +0 -200
- package/recce-source/js/src/lib/hooks/useCSVExport.ts +0 -136
- package/recce-source/js/src/lib/hooks/useCheckEvents.ts +0 -99
- package/recce-source/js/src/lib/hooks/useCheckToast.tsx +0 -14
- package/recce-source/js/src/lib/hooks/useClipBoardToast.tsx +0 -27
- package/recce-source/js/src/lib/hooks/useCountdownToast.tsx +0 -102
- package/recce-source/js/src/lib/hooks/useFeedbackCollectionToast.tsx +0 -130
- package/recce-source/js/src/lib/hooks/useGuideToast.tsx +0 -45
- package/recce-source/js/src/lib/hooks/useIdleDetection.tsx +0 -185
- package/recce-source/js/src/lib/hooks/useModelColumns.tsx +0 -113
- package/recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRecceServerFlag.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRun.tsx +0 -89
- package/recce-source/js/src/lib/hooks/useThemeColors.ts +0 -115
- package/recce-source/js/src/lib/mergeKeys.test.ts +0 -89
- package/recce-source/js/src/lib/mergeKeys.ts +0 -86
- package/recce-source/js/src/lib/result/ResultErrorFallback.tsx +0 -9
- package/recce-source/js/src/lib/utils/formatTime.ts +0 -84
- package/recce-source/js/src/lib/utils/urls.ts +0 -16
- package/recce-source/js/src/utils/DropdownValuesInput.tsx +0 -297
- package/recce-source/js/src/utils/formatters.tsx +0 -237
- package/recce-source/js/src/utils/transforms.ts +0 -81
- package/recce-source/js/tsconfig.json +0 -47
- package/recce-source/macros/README.md +0 -8
- package/recce-source/macros/recce_athena.sql +0 -73
- package/recce-source/pyproject.toml +0 -109
- package/recce-source/recce/VERSION +0 -1
- package/recce-source/recce/__init__.py +0 -84
- package/recce-source/recce/adapter/__init__.py +0 -0
- package/recce-source/recce/adapter/base.py +0 -109
- package/recce-source/recce/adapter/dbt_adapter/__init__.py +0 -1699
- package/recce-source/recce/adapter/dbt_adapter/dbt_version.py +0 -42
- package/recce-source/recce/adapter/sqlmesh_adapter.py +0 -141
- package/recce-source/recce/apis/__init__.py +0 -0
- package/recce-source/recce/apis/check_api.py +0 -203
- package/recce-source/recce/apis/check_events_api.py +0 -353
- package/recce-source/recce/apis/check_func.py +0 -130
- package/recce-source/recce/apis/run_api.py +0 -130
- package/recce-source/recce/apis/run_func.py +0 -258
- package/recce-source/recce/artifact.py +0 -266
- package/recce-source/recce/cli.py +0 -1846
- package/recce-source/recce/config.py +0 -127
- package/recce-source/recce/connect_to_cloud.py +0 -138
- package/recce-source/recce/core.py +0 -334
- package/recce-source/recce/diff.py +0 -26
- package/recce-source/recce/event/CONFIG +0 -1
- package/recce-source/recce/event/SENTRY_DNS +0 -1
- package/recce-source/recce/event/__init__.py +0 -304
- package/recce-source/recce/event/collector.py +0 -184
- package/recce-source/recce/event/track.py +0 -158
- package/recce-source/recce/exceptions.py +0 -21
- package/recce-source/recce/git.py +0 -77
- package/recce-source/recce/github.py +0 -222
- package/recce-source/recce/mcp_server.py +0 -885
- package/recce-source/recce/models/__init__.py +0 -6
- package/recce-source/recce/models/check.py +0 -481
- package/recce-source/recce/models/run.py +0 -46
- package/recce-source/recce/models/types.py +0 -218
- package/recce-source/recce/pull_request.py +0 -124
- package/recce-source/recce/run.py +0 -390
- package/recce-source/recce/server.py +0 -877
- package/recce-source/recce/state/__init__.py +0 -31
- package/recce-source/recce/state/cloud.py +0 -644
- package/recce-source/recce/state/const.py +0 -26
- package/recce-source/recce/state/local.py +0 -56
- package/recce-source/recce/state/state.py +0 -119
- package/recce-source/recce/state/state_loader.py +0 -174
- package/recce-source/recce/summary.py +0 -575
- package/recce-source/recce/tasks/__init__.py +0 -23
- package/recce-source/recce/tasks/core.py +0 -134
- package/recce-source/recce/tasks/dataframe.py +0 -170
- package/recce-source/recce/tasks/histogram.py +0 -433
- package/recce-source/recce/tasks/lineage.py +0 -19
- package/recce-source/recce/tasks/profile.py +0 -298
- package/recce-source/recce/tasks/query.py +0 -450
- package/recce-source/recce/tasks/rowcount.py +0 -277
- package/recce-source/recce/tasks/schema.py +0 -65
- package/recce-source/recce/tasks/top_k.py +0 -172
- package/recce-source/recce/tasks/utils.py +0 -147
- package/recce-source/recce/tasks/valuediff.py +0 -497
- package/recce-source/recce/util/__init__.py +0 -4
- package/recce-source/recce/util/api_token.py +0 -80
- package/recce-source/recce/util/breaking.py +0 -330
- package/recce-source/recce/util/cache.py +0 -25
- package/recce-source/recce/util/cll.py +0 -355
- package/recce-source/recce/util/cloud/__init__.py +0 -15
- package/recce-source/recce/util/cloud/base.py +0 -115
- package/recce-source/recce/util/cloud/check_events.py +0 -190
- package/recce-source/recce/util/cloud/checks.py +0 -242
- package/recce-source/recce/util/io.py +0 -120
- package/recce-source/recce/util/lineage.py +0 -83
- package/recce-source/recce/util/logger.py +0 -25
- package/recce-source/recce/util/onboarding_state.py +0 -45
- package/recce-source/recce/util/perf_tracking.py +0 -85
- package/recce-source/recce/util/pydantic_model.py +0 -22
- package/recce-source/recce/util/recce_cloud.py +0 -454
- package/recce-source/recce/util/singleton.py +0 -18
- package/recce-source/recce/util/startup_perf.py +0 -121
- package/recce-source/recce/yaml/__init__.py +0 -58
- package/recce-source/recce_cloud/README.md +0 -780
- package/recce-source/recce_cloud/VERSION +0 -1
- package/recce-source/recce_cloud/__init__.py +0 -24
- package/recce-source/recce_cloud/api/__init__.py +0 -17
- package/recce-source/recce_cloud/api/base.py +0 -132
- package/recce-source/recce_cloud/api/client.py +0 -186
- package/recce-source/recce_cloud/api/exceptions.py +0 -26
- package/recce-source/recce_cloud/api/factory.py +0 -63
- package/recce-source/recce_cloud/api/github.py +0 -106
- package/recce-source/recce_cloud/api/gitlab.py +0 -111
- package/recce-source/recce_cloud/artifact.py +0 -57
- package/recce-source/recce_cloud/ci_providers/__init__.py +0 -9
- package/recce-source/recce_cloud/ci_providers/base.py +0 -82
- package/recce-source/recce_cloud/ci_providers/detector.py +0 -147
- package/recce-source/recce_cloud/ci_providers/github_actions.py +0 -136
- package/recce-source/recce_cloud/ci_providers/gitlab_ci.py +0 -130
- package/recce-source/recce_cloud/cli.py +0 -434
- package/recce-source/recce_cloud/download.py +0 -230
- package/recce-source/recce_cloud/hatch_build.py +0 -20
- package/recce-source/recce_cloud/pyproject.toml +0 -49
- package/recce-source/recce_cloud/upload.py +0 -214
- package/recce-source/test.py +0 -0
- package/recce-source/tests/__init__.py +0 -0
- package/recce-source/tests/adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/conftest.py +0 -17
- package/recce-source/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -298
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -25
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -717
- package/recce-source/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +0 -4
- package/recce-source/tests/adapter/dbt_adapter/test_proj/manifest.json +0 -1
- package/recce-source/tests/adapter/dbt_adapter/test_proj/package-lock.yml +0 -8
- package/recce-source/tests/adapter/dbt_adapter/test_proj/packages.yml +0 -7
- package/recce-source/tests/adapter/dbt_adapter/test_proj/profiles.yml +0 -6
- package/recce-source/tests/adapter/dbt_adapter/test_selector.py +0 -205
- package/recce-source/tests/apis/__init__.py +0 -0
- package/recce-source/tests/apis/row_count_diff.json +0 -59
- package/recce-source/tests/apis/test_check_events_api.py +0 -615
- package/recce-source/tests/apis/test_run_func.py +0 -433
- package/recce-source/tests/catalog.json +0 -527
- package/recce-source/tests/data/manifest/base/catalog.json +0 -1
- package/recce-source/tests/data/manifest/base/manifest.json +0 -1
- package/recce-source/tests/data/manifest/pr2/catalog.json +0 -1
- package/recce-source/tests/data/manifest/pr2/manifest.json +0 -1
- package/recce-source/tests/manifest.json +0 -10655
- package/recce-source/tests/models/__init__.py +0 -0
- package/recce-source/tests/models/test_check.py +0 -731
- package/recce-source/tests/models/test_run_models.py +0 -295
- package/recce-source/tests/recce_cloud/__init__.py +0 -0
- package/recce-source/tests/recce_cloud/test_ci_providers.py +0 -351
- package/recce-source/tests/recce_cloud/test_cli.py +0 -735
- package/recce-source/tests/recce_cloud/test_client.py +0 -379
- package/recce-source/tests/recce_cloud/test_platform_clients.py +0 -483
- package/recce-source/tests/recce_state.json +0 -1
- package/recce-source/tests/state/test_cloud.py +0 -719
- package/recce-source/tests/state/test_local.py +0 -164
- package/recce-source/tests/state/test_state_loader.py +0 -211
- package/recce-source/tests/tasks/__init__.py +0 -0
- package/recce-source/tests/tasks/conftest.py +0 -4
- package/recce-source/tests/tasks/test_histogram.py +0 -129
- package/recce-source/tests/tasks/test_lineage.py +0 -55
- package/recce-source/tests/tasks/test_preset_checks.py +0 -64
- package/recce-source/tests/tasks/test_profile.py +0 -397
- package/recce-source/tests/tasks/test_query.py +0 -528
- package/recce-source/tests/tasks/test_row_count.py +0 -133
- package/recce-source/tests/tasks/test_schema.py +0 -122
- package/recce-source/tests/tasks/test_top_k.py +0 -77
- package/recce-source/tests/tasks/test_utils.py +0 -439
- package/recce-source/tests/tasks/test_valuediff.py +0 -361
- package/recce-source/tests/test_cli.py +0 -236
- package/recce-source/tests/test_cli_mcp_optional.py +0 -45
- package/recce-source/tests/test_cloud_listing_cli.py +0 -324
- package/recce-source/tests/test_config.py +0 -43
- package/recce-source/tests/test_connect_to_cloud.py +0 -82
- package/recce-source/tests/test_core.py +0 -174
- package/recce-source/tests/test_dbt.py +0 -36
- package/recce-source/tests/test_mcp_server.py +0 -505
- package/recce-source/tests/test_pull_request.py +0 -130
- package/recce-source/tests/test_server.py +0 -202
- package/recce-source/tests/test_server_lifespan.py +0 -138
- package/recce-source/tests/test_summary.py +0 -73
- package/recce-source/tests/util/__init__.py +0 -0
- package/recce-source/tests/util/cloud/__init__.py +0 -0
- package/recce-source/tests/util/cloud/test_check_events.py +0 -255
- package/recce-source/tests/util/cloud/test_checks.py +0 -204
- package/recce-source/tests/util/test_api_token.py +0 -119
- package/recce-source/tests/util/test_breaking.py +0 -1427
- package/recce-source/tests/util/test_cll.py +0 -706
- package/recce-source/tests/util/test_lineage.py +0 -122
- package/recce-source/tests/util/test_onboarding_state.py +0 -84
- package/recce-source/tests/util/test_recce_cloud.py +0 -231
- package/recce-source/tox.ini +0 -40
- package/recce-source/uv.lock +0 -3928
- package/src/api/index.ts +0 -32
- package/src/components/index.ts +0 -154
- package/src/global.d.ts +0 -14
- package/src/hooks/index.ts +0 -56
- package/src/index.ts +0 -17
- package/src/lib/hooks/RouteConfigContext.ts +0 -139
- package/src/lib/hooks/useAppRouter.ts +0 -240
- package/src/mui-augmentation.d.ts +0 -139
- package/src/theme/index.ts +0 -13
- package/src/theme.ts +0 -23
- package/src/types/index.ts +0 -23
package/dist/styles.css
CHANGED
|
@@ -1,4 +1,478 @@
|
|
|
1
|
-
|
|
2
|
-
@
|
|
3
|
-
|
|
4
|
-
@
|
|
1
|
+
/**
|
|
2
|
+
* @datarecce/ui - Bundled Styles
|
|
3
|
+
*
|
|
4
|
+
* This file contains all CSS for @datarecce/ui components including:
|
|
5
|
+
* - Tailwind CSS utilities
|
|
6
|
+
* - CSS custom properties for theming
|
|
7
|
+
* - React Flow styles
|
|
8
|
+
* - Third-party component overrides (ag-Grid, CodeMirror, etc.)
|
|
9
|
+
*
|
|
10
|
+
* Usage: import '@datarecce/ui/styles';
|
|
11
|
+
*
|
|
12
|
+
* @license MIT
|
|
13
|
+
*/
|
|
14
|
+
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
15
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:#fee2e2;--color-red-300:#fca5a5;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-700:#b91c1c;--color-red-900:#7f1d1d;--color-amber-100:#fef3c7;--color-amber-300:#fcd34d;--color-amber-400:#fbbf24;--color-amber-500:#f59e0b;--color-amber-600:#d97706;--color-amber-700:#b45309;--color-amber-800:#92400e;--color-amber-900:#78350f;--color-green-100:#dcfce7;--color-green-300:#86efac;--color-green-400:#4ade80;--color-green-500:#22c55e;--color-green-700:#15803d;--color-green-900:#14532d;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#22d3ee;--color-blue-50:oklch(97% .014 254.604);--color-fuchsia-300:#f0abfc;--color-fuchsia-400:#e879f9;--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-400:#a3a3a3;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#0a0a0a;--spacing:.25rem;--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-light:300;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-brand-50:#ffded5;--color-brand-200:#ffa58c;--color-brand-400:#ff6e42;--color-brand-500:#fd541e;--color-brand-600:#f04104;--color-brand-700:#c93a06;--color-brand-800:#a23206;--color-brand-900:#7c2906;--color-brand-950:#571e05;--color-iochmara-100:#c4ddf3;--color-iochmara-300:#79b0e2;--color-iochmara-400:#5599d8;--color-iochmara-500:#3182ce;--color-iochmara-600:#2a6ca7;--color-iochmara-700:#225581;--color-iochmara-900:#102638}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-10{top:calc(var(--spacing) * 10)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-2{margin:calc(var(--spacing) * 2)}.ml-1{margin-left:calc(var(--spacing) * 1)}.box-content{box-sizing:content-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.\!size-4{width:calc(var(--spacing) * 4)!important;height:calc(var(--spacing) * 4)!important}.size-6\!{width:calc(var(--spacing) * 6)!important;height:calc(var(--spacing) * 6)!important}.h-full{height:100%}.max-h-dvh{max-height:100dvh}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-4\/5{width:80%}.max-w-72{max-width:calc(var(--spacing) * 72)}.\!min-w-4{min-width:calc(var(--spacing) * 4)!important}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.justify-center{justify-content:center}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-blue-50{background-color:var(--color-blue-50)}.p-4{padding:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.break-all{word-break:break-all}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}:root{--recce-bg-default:var(--color-neutral-50);--recce-bg-paper:#fff;--recce-bg-elevated:#fff;--recce-bg-subtle:var(--color-neutral-100);--recce-text-primary:var(--color-neutral-900);--recce-text-secondary:var(--color-neutral-600);--recce-text-muted:var(--color-neutral-400);--recce-border:var(--color-neutral-200);--recce-border-subtle:var(--color-neutral-100);--recce-brand:var(--color-brand-500);--recce-brand-hover:var(--color-brand-600);--recce-brand-active:var(--color-brand-700);--recce-secondary:var(--color-iochmara-500);--recce-secondary-hover:var(--color-iochmara-600);--recce-secondary-active:var(--color-iochmara-700);--recce-success:var(--color-green-500);--recce-warning:var(--color-amber-500);--recce-error:var(--color-red-500);--recce-info:var(--color-iochmara-500);--recce-shadow-sm:0 1px 2px 0 #0000000d;--recce-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--recce-shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--recce-shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a}.dark{--recce-bg-default:var(--color-neutral-950);--recce-bg-paper:var(--color-neutral-900);--recce-bg-elevated:var(--color-neutral-800);--recce-bg-subtle:var(--color-neutral-800);--recce-text-primary:var(--color-neutral-50);--recce-text-secondary:var(--color-neutral-400);--recce-text-muted:var(--color-neutral-600);--recce-border:var(--color-neutral-800);--recce-border-subtle:var(--color-neutral-700);--recce-brand:var(--color-brand-400);--recce-brand-hover:var(--color-brand-500);--recce-brand-active:var(--color-brand-600);--recce-secondary:var(--color-iochmara-400);--recce-secondary-hover:var(--color-iochmara-500);--recce-secondary-active:var(--color-iochmara-600);--recce-success:var(--color-green-400);--recce-warning:var(--color-amber-400);--recce-error:var(--color-red-400);--recce-info:var(--color-iochmara-400);--recce-shadow-sm:0 1px 2px 0 #0000004d;--recce-shadow:0 1px 3px 0 #0006, 0 1px 2px -1px #0000004d;--recce-shadow-md:0 4px 6px -1px #0006, 0 2px 4px -2px #0000004d;--recce-shadow-lg:0 10px 15px -3px #0006, 0 4px 6px -4px #0000004d}.dark .react-flow__controls{background-color:var(--recce-bg-paper);border-color:var(--recce-border)}.dark .react-flow__controls button{background-color:var(--recce-bg-paper);border-color:var(--recce-border);color:var(--recce-text-primary);fill:var(--recce-text-primary)}.dark .react-flow__controls button:hover{background-color:var(--recce-bg-elevated)}.dark .react-flow__controls button svg{fill:var(--recce-text-primary)}.dark .react-flow__minimap{background-color:var(--recce-bg-paper)}.dark .react-flow__minimap-mask{fill:var(--recce-bg-default);opacity:.6}.dark .react-flow__minimap-node{fill:var(--recce-text-muted)}.dark .react-flow__background{background-color:var(--recce-bg-default)}.dark .react-flow__background pattern circle,.dark .react-flow__background pattern line{stroke:var(--recce-border)}.dark .react-flow__attribution{background-color:var(--recce-bg-paper)}.dark .react-flow__attribution a{color:var(--recce-text-secondary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--recce-bg-subtle);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--recce-text-muted);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--recce-text-secondary)}*{scrollbar-width:thin;scrollbar-color:var(--recce-text-muted) var(--recce-bg-subtle)}.dark ::-webkit-scrollbar-track{background:var(--recce-bg-paper)}.dark ::-webkit-scrollbar-thumb{background:var(--recce-border)}.dark ::-webkit-scrollbar-thumb:hover{background:var(--recce-text-muted)}::selection{background-color:var(--color-brand-200);color:var(--color-brand-950)}.dark ::selection{background-color:var(--color-brand-700);color:var(--color-brand-50)}:focus-visible{outline:2px solid var(--recce-brand);outline-offset:2px}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
16
|
+
/* Third-party component overrides */
|
|
17
|
+
/**
|
|
18
|
+
* @datarecce/ui - Third-party component style overrides
|
|
19
|
+
*
|
|
20
|
+
* This file contains style overrides for third-party libraries
|
|
21
|
+
* to ensure they respect the Recce theme and dark mode.
|
|
22
|
+
*
|
|
23
|
+
* Included:
|
|
24
|
+
* - ag-Grid dark mode
|
|
25
|
+
* - CodeMirror dark mode
|
|
26
|
+
* - Split pane styling
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/* ========================================
|
|
30
|
+
* ag-Grid Dark Mode Overrides
|
|
31
|
+
* Styles for ag-Grid data tables in dark mode
|
|
32
|
+
* ======================================== */
|
|
33
|
+
.dark .ag-theme-alpine,
|
|
34
|
+
.dark .ag-theme-quartz {
|
|
35
|
+
--ag-background-color: var(--recce-bg-paper);
|
|
36
|
+
--ag-foreground-color: var(--recce-text-primary);
|
|
37
|
+
--ag-secondary-foreground-color: var(--recce-text-secondary);
|
|
38
|
+
--ag-header-background-color: var(--recce-bg-elevated);
|
|
39
|
+
--ag-header-foreground-color: var(--recce-text-primary);
|
|
40
|
+
--ag-odd-row-background-color: var(--recce-bg-paper);
|
|
41
|
+
--ag-row-hover-color: var(--recce-bg-subtle);
|
|
42
|
+
--ag-border-color: var(--recce-border);
|
|
43
|
+
--ag-selected-row-background-color: var(--color-brand-900);
|
|
44
|
+
--ag-range-selection-border-color: var(--recce-brand);
|
|
45
|
+
--ag-input-focus-border-color: var(--recce-brand);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.dark .ag-theme-alpine .ag-row-selected,
|
|
49
|
+
.dark .ag-theme-quartz .ag-row-selected {
|
|
50
|
+
background-color: var(--color-brand-900);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.dark .ag-theme-alpine .ag-row-hover:not(.ag-row-selected),
|
|
54
|
+
.dark .ag-theme-quartz .ag-row-hover:not(.ag-row-selected) {
|
|
55
|
+
background-color: var(--recce-bg-elevated);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.dark .ag-theme-alpine .ag-cell-focus,
|
|
59
|
+
.dark .ag-theme-quartz .ag-cell-focus {
|
|
60
|
+
border-color: var(--recce-brand);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.dark .ag-theme-alpine .ag-header-cell,
|
|
64
|
+
.dark .ag-theme-quartz .ag-header-cell {
|
|
65
|
+
border-bottom-color: var(--recce-border);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.dark .ag-theme-alpine .ag-cell,
|
|
69
|
+
.dark .ag-theme-quartz .ag-cell {
|
|
70
|
+
border-right-color: var(--recce-border-subtle);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.dark .ag-theme-alpine .ag-paging-panel,
|
|
74
|
+
.dark .ag-theme-quartz .ag-paging-panel {
|
|
75
|
+
border-top-color: var(--recce-border);
|
|
76
|
+
color: var(--recce-text-secondary);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* ========================================
|
|
80
|
+
* CodeMirror Dark Mode Overrides
|
|
81
|
+
* Styles for CodeMirror editors in dark mode
|
|
82
|
+
* ======================================== */
|
|
83
|
+
.dark .cm-editor {
|
|
84
|
+
background-color: var(--recce-bg-paper);
|
|
85
|
+
color: var(--recce-text-primary);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.dark .cm-editor .cm-gutters {
|
|
89
|
+
background-color: var(--recce-bg-elevated);
|
|
90
|
+
color: var(--recce-text-muted);
|
|
91
|
+
border-right-color: var(--recce-border);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.dark .cm-editor .cm-activeLineGutter {
|
|
95
|
+
background-color: var(--recce-bg-subtle);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.dark .cm-editor .cm-activeLine {
|
|
99
|
+
background-color: var(--recce-bg-subtle);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.dark .cm-editor .cm-selectionBackground,
|
|
103
|
+
.dark .cm-editor .cm-content ::selection {
|
|
104
|
+
background-color: var(--color-brand-900) !important;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.dark .cm-editor .cm-cursor {
|
|
108
|
+
border-left-color: var(--recce-text-primary);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.dark .cm-editor .cm-matchingBracket {
|
|
112
|
+
background-color: var(--color-brand-800);
|
|
113
|
+
color: var(--recce-text-primary);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.dark .cm-editor .cm-searchMatch {
|
|
117
|
+
background-color: var(--color-amber-800);
|
|
118
|
+
color: var(--color-amber-100);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.dark .cm-editor .cm-searchMatch.cm-searchMatch-selected {
|
|
122
|
+
background-color: var(--color-amber-600);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.dark .cm-editor .cm-tooltip {
|
|
126
|
+
background-color: var(--recce-bg-elevated);
|
|
127
|
+
border-color: var(--recce-border);
|
|
128
|
+
color: var(--recce-text-primary);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.dark .cm-editor .cm-tooltip-autocomplete {
|
|
132
|
+
background-color: var(--recce-bg-elevated);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.dark .cm-editor .cm-tooltip-autocomplete > ul > li {
|
|
136
|
+
color: var(--recce-text-primary);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.dark .cm-editor .cm-tooltip-autocomplete > ul > li[aria-selected] {
|
|
140
|
+
background-color: var(--color-brand-800);
|
|
141
|
+
color: var(--recce-text-primary);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* CodeMirror syntax highlighting for dark mode */
|
|
145
|
+
.dark .cm-editor .cm-keyword {
|
|
146
|
+
color: var(--color-fuchsia-400);
|
|
147
|
+
}
|
|
148
|
+
.dark .cm-editor .cm-operator {
|
|
149
|
+
color: var(--recce-text-primary);
|
|
150
|
+
}
|
|
151
|
+
.dark .cm-editor .cm-variable {
|
|
152
|
+
color: var(--color-cyan-400);
|
|
153
|
+
}
|
|
154
|
+
.dark .cm-editor .cm-variable-2 {
|
|
155
|
+
color: var(--color-cyan-300);
|
|
156
|
+
}
|
|
157
|
+
.dark .cm-editor .cm-variable-3 {
|
|
158
|
+
color: var(--color-cyan-200);
|
|
159
|
+
}
|
|
160
|
+
.dark .cm-editor .cm-builtin {
|
|
161
|
+
color: var(--color-fuchsia-300);
|
|
162
|
+
}
|
|
163
|
+
.dark .cm-editor .cm-atom {
|
|
164
|
+
color: var(--color-amber-400);
|
|
165
|
+
}
|
|
166
|
+
.dark .cm-editor .cm-number {
|
|
167
|
+
color: var(--color-amber-400);
|
|
168
|
+
}
|
|
169
|
+
.dark .cm-editor .cm-def {
|
|
170
|
+
color: var(--color-iochmara-400);
|
|
171
|
+
}
|
|
172
|
+
.dark .cm-editor .cm-string {
|
|
173
|
+
color: var(--color-green-400);
|
|
174
|
+
}
|
|
175
|
+
.dark .cm-editor .cm-string-2 {
|
|
176
|
+
color: var(--color-green-300);
|
|
177
|
+
}
|
|
178
|
+
.dark .cm-editor .cm-comment {
|
|
179
|
+
color: var(--recce-text-muted);
|
|
180
|
+
}
|
|
181
|
+
.dark .cm-editor .cm-tag {
|
|
182
|
+
color: var(--color-red-400);
|
|
183
|
+
}
|
|
184
|
+
.dark .cm-editor .cm-meta {
|
|
185
|
+
color: var(--recce-text-secondary);
|
|
186
|
+
}
|
|
187
|
+
.dark .cm-editor .cm-attribute {
|
|
188
|
+
color: var(--color-cyan-400);
|
|
189
|
+
}
|
|
190
|
+
.dark .cm-editor .cm-property {
|
|
191
|
+
color: var(--color-cyan-400);
|
|
192
|
+
}
|
|
193
|
+
.dark .cm-editor .cm-qualifier {
|
|
194
|
+
color: var(--color-iochmara-400);
|
|
195
|
+
}
|
|
196
|
+
.dark .cm-editor .cm-type {
|
|
197
|
+
color: var(--color-amber-300);
|
|
198
|
+
}
|
|
199
|
+
.dark .cm-editor .cm-error {
|
|
200
|
+
color: var(--color-red-400);
|
|
201
|
+
}
|
|
202
|
+
.dark .cm-editor .cm-link {
|
|
203
|
+
color: var(--color-iochmara-400);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* ========================================
|
|
207
|
+
* Split Pane Styling
|
|
208
|
+
* Styles for resizable split pane components
|
|
209
|
+
* ======================================== */
|
|
210
|
+
.recce-split-pane {
|
|
211
|
+
display: flex;
|
|
212
|
+
height: 100%;
|
|
213
|
+
width: 100%;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.recce-split-pane-horizontal {
|
|
217
|
+
flex-direction: row;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.recce-split-pane-vertical {
|
|
221
|
+
flex-direction: column;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.recce-split-pane-resizer {
|
|
225
|
+
background-color: var(--recce-border);
|
|
226
|
+
flex-shrink: 0;
|
|
227
|
+
transition: background-color 0.15s ease;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.recce-split-pane-resizer:hover {
|
|
231
|
+
background-color: var(--recce-brand);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.recce-split-pane-resizer-horizontal {
|
|
235
|
+
width: 4px;
|
|
236
|
+
cursor: col-resize;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.recce-split-pane-resizer-vertical {
|
|
240
|
+
height: 4px;
|
|
241
|
+
cursor: row-resize;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.dark .recce-split-pane-resizer {
|
|
245
|
+
background-color: var(--recce-border);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.dark .recce-split-pane-resizer:hover {
|
|
249
|
+
background-color: var(--recce-brand);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* ========================================
|
|
253
|
+
* Panel and Card Styling
|
|
254
|
+
* Common panel and card component styles
|
|
255
|
+
* ======================================== */
|
|
256
|
+
.recce-panel {
|
|
257
|
+
background-color: var(--recce-bg-paper);
|
|
258
|
+
border: 1px solid var(--recce-border);
|
|
259
|
+
border-radius: 8px;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.recce-panel-elevated {
|
|
263
|
+
background-color: var(--recce-bg-elevated);
|
|
264
|
+
box-shadow: var(--recce-shadow);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.recce-card {
|
|
268
|
+
background-color: var(--recce-bg-paper);
|
|
269
|
+
border: 1px solid var(--recce-border);
|
|
270
|
+
border-radius: 8px;
|
|
271
|
+
padding: 16px;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.recce-card:hover {
|
|
275
|
+
border-color: var(--recce-brand);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* ========================================
|
|
279
|
+
* Button Base Styling
|
|
280
|
+
* Base button styles that work with MUI
|
|
281
|
+
* ======================================== */
|
|
282
|
+
.recce-btn {
|
|
283
|
+
display: inline-flex;
|
|
284
|
+
align-items: center;
|
|
285
|
+
justify-content: center;
|
|
286
|
+
gap: 8px;
|
|
287
|
+
padding: 8px 16px;
|
|
288
|
+
font-weight: 500;
|
|
289
|
+
border-radius: 6px;
|
|
290
|
+
transition: all 0.15s ease;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.recce-btn-primary {
|
|
294
|
+
background-color: var(--recce-brand);
|
|
295
|
+
color: white;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.recce-btn-primary:hover {
|
|
299
|
+
background-color: var(--recce-brand-hover);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.recce-btn-primary:active {
|
|
303
|
+
background-color: var(--recce-brand-active);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.recce-btn-secondary {
|
|
307
|
+
background-color: transparent;
|
|
308
|
+
color: var(--recce-text-primary);
|
|
309
|
+
border: 1px solid var(--recce-border);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.recce-btn-secondary:hover {
|
|
313
|
+
background-color: var(--recce-bg-subtle);
|
|
314
|
+
border-color: var(--recce-text-muted);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* ========================================
|
|
318
|
+
* Loading States
|
|
319
|
+
* Styles for loading indicators
|
|
320
|
+
* ======================================== */
|
|
321
|
+
.recce-skeleton {
|
|
322
|
+
background: linear-gradient(
|
|
323
|
+
90deg,
|
|
324
|
+
var(--recce-bg-subtle) 25%,
|
|
325
|
+
var(--recce-bg-elevated) 50%,
|
|
326
|
+
var(--recce-bg-subtle) 75%
|
|
327
|
+
);
|
|
328
|
+
background-size: 200% 100%;
|
|
329
|
+
animation: recce-skeleton-shimmer 1.5s infinite;
|
|
330
|
+
border-radius: 4px;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@keyframes recce-skeleton-shimmer {
|
|
334
|
+
0% {
|
|
335
|
+
background-position: 200% 0;
|
|
336
|
+
}
|
|
337
|
+
100% {
|
|
338
|
+
background-position: -200% 0;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/* ========================================
|
|
343
|
+
* Tooltip Styling
|
|
344
|
+
* Consistent tooltip appearance
|
|
345
|
+
* ======================================== */
|
|
346
|
+
.recce-tooltip {
|
|
347
|
+
background-color: var(--color-neutral-800);
|
|
348
|
+
color: var(--color-neutral-50);
|
|
349
|
+
padding: 6px 12px;
|
|
350
|
+
border-radius: 4px;
|
|
351
|
+
font-size: 12px;
|
|
352
|
+
box-shadow: var(--recce-shadow-md);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.dark .recce-tooltip {
|
|
356
|
+
background-color: var(--color-neutral-200);
|
|
357
|
+
color: var(--color-neutral-900);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* ========================================
|
|
361
|
+
* Badge Styling
|
|
362
|
+
* Status badges and labels
|
|
363
|
+
* ======================================== */
|
|
364
|
+
.recce-badge {
|
|
365
|
+
display: inline-flex;
|
|
366
|
+
align-items: center;
|
|
367
|
+
padding: 2px 8px;
|
|
368
|
+
font-size: 12px;
|
|
369
|
+
font-weight: 500;
|
|
370
|
+
border-radius: 9999px;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.recce-badge-success {
|
|
374
|
+
background-color: var(--color-green-100);
|
|
375
|
+
color: var(--color-green-700);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.dark .recce-badge-success {
|
|
379
|
+
background-color: var(--color-green-900);
|
|
380
|
+
color: var(--color-green-300);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.recce-badge-warning {
|
|
384
|
+
background-color: var(--color-amber-100);
|
|
385
|
+
color: var(--color-amber-700);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.dark .recce-badge-warning {
|
|
389
|
+
background-color: var(--color-amber-900);
|
|
390
|
+
color: var(--color-amber-300);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.recce-badge-error {
|
|
394
|
+
background-color: var(--color-red-100);
|
|
395
|
+
color: var(--color-red-700);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.dark .recce-badge-error {
|
|
399
|
+
background-color: var(--color-red-900);
|
|
400
|
+
color: var(--color-red-300);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.recce-badge-info {
|
|
404
|
+
background-color: var(--color-iochmara-100);
|
|
405
|
+
color: var(--color-iochmara-700);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.dark .recce-badge-info {
|
|
409
|
+
background-color: var(--color-iochmara-900);
|
|
410
|
+
color: var(--color-iochmara-300);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/* ========================================
|
|
414
|
+
* Transition Utilities
|
|
415
|
+
* Common transition classes
|
|
416
|
+
* ======================================== */
|
|
417
|
+
.recce-transition-colors {
|
|
418
|
+
transition:
|
|
419
|
+
color 0.15s ease,
|
|
420
|
+
background-color 0.15s ease,
|
|
421
|
+
border-color 0.15s ease;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.recce-transition-all {
|
|
425
|
+
transition: all 0.15s ease;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.recce-transition-opacity {
|
|
429
|
+
transition: opacity 0.15s ease;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.recce-transition-transform {
|
|
433
|
+
transition: transform 0.15s ease;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/* ========================================
|
|
437
|
+
* React Flow Controls
|
|
438
|
+
* Theme-aware colors for React Flow controls
|
|
439
|
+
* Uses CSS custom properties that map to the Recce theme
|
|
440
|
+
* ======================================== */
|
|
441
|
+
|
|
442
|
+
/* Light mode (default) */
|
|
443
|
+
:root,
|
|
444
|
+
.light {
|
|
445
|
+
--rf-controls-bg: #fafafa; /* neutral[50] */
|
|
446
|
+
--rf-controls-border: #e5e5e5; /* neutral[200] */
|
|
447
|
+
--rf-controls-text: #404040; /* neutral[700] */
|
|
448
|
+
--rf-controls-hover-bg: #e5e5e5; /* neutral[200] */
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/* Dark mode */
|
|
452
|
+
.dark {
|
|
453
|
+
--rf-controls-bg: #404040; /* neutral[700] */
|
|
454
|
+
--rf-controls-border: #525252; /* neutral[600] */
|
|
455
|
+
--rf-controls-text: #e5e5e5; /* neutral[200] */
|
|
456
|
+
--rf-controls-hover-bg: #525252; /* neutral[600] */
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/* React Flow Controls container */
|
|
460
|
+
.react-flow__controls {
|
|
461
|
+
background-color: var(--rf-controls-bg);
|
|
462
|
+
border-color: var(--rf-controls-border);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/* React Flow Controls buttons */
|
|
466
|
+
.react-flow__controls-button {
|
|
467
|
+
background-color: var(--rf-controls-bg);
|
|
468
|
+
color: var(--rf-controls-text);
|
|
469
|
+
border-bottom-color: var(--rf-controls-border);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.react-flow__controls-button:hover {
|
|
473
|
+
background-color: var(--rf-controls-hover-bg);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.react-flow__controls-button svg {
|
|
477
|
+
fill: var(--rf-controls-text);
|
|
478
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{n as e}from"./colors-BbPSDR1X.js";import{createTheme as t}from"@mui/material/styles";import{themeQuartz as n}from"ag-grid-community";const r=`system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,i=n.withParams({backgroundColor:`#ffffff`,headerBackgroundColor:`#f5f5f5`,rowHoverColor:`#ffffff`,borderColor:`#e0e0e0`,foregroundColor:`#1e1e1e`,fontFamily:`monospace`,fontSize:13,headerFontFamily:r,headerFontSize:13,headerFontWeight:700,cellHorizontalPadding:8,wrapperBorderRadius:0}),a=n.withParams({backgroundColor:`#1e1e1e`,headerBackgroundColor:`#383838`,rowHoverColor:`#1e1e1e`,borderColor:`#4a4a4a`,foregroundColor:`#e0e0e0`,fontFamily:`monospace`,fontSize:13,headerFontFamily:r,headerFontSize:13,headerFontWeight:700,cellHorizontalPadding:8,wrapperBorderRadius:0});function o(e){return{gridColor:e?`#4b5563`:`#d1d5db`,textColor:e?`#e5e7eb`:`#374151`,borderColor:e?`#6b7280`:`#9ca3af`,tooltipBackgroundColor:e?`#1f2937`:`#ffffff`,tooltipTextColor:e?`#e5e7eb`:`#111827`}}function s(e,t=!0){let n=o(e);return{grid:{color:t?n.gridColor:void 0,display:t},ticks:{color:n.textColor},border:{color:n.borderColor}}}function c(e){let t=o(e);return{legend:{labels:{color:t.textColor}},title:{color:t.textColor},tooltip:{backgroundColor:t.tooltipBackgroundColor,titleColor:t.tooltipTextColor,bodyColor:t.tooltipTextColor,borderColor:t.borderColor,borderWidth:1}}}const l=`#63B3ED`,u=`#F6AD55`,d=`${l}A5`,f=`${u}A5`,p=`#90CDF4`,m=`#FBD38D`,h=`${p}A5`,g=`${m}A5`,_=`#63B3ED`,v=`#90CDF4`;function y(e){return{current:e?p:l,base:e?m:u,currentWithAlpha:e?h:d,baseWithAlpha:e?g:f,info:e?v:_}}function b(e,t){return[{props:{color:e,variant:`contained`},style:{backgroundColor:`var(--mui-palette-${e}-main, ${t[500]})`,color:`var(--mui-palette-${e}-contrastText, #ffffff)`,"&:hover":{backgroundColor:`var(--mui-palette-${e}-dark, ${t[600]})`}}},{props:{color:e,variant:`outlined`},style:{"&&":{borderColor:`var(--mui-palette-${e}-main, ${t[500]})`,color:`var(--mui-palette-${e}-dark, ${t[600]})`},"&:hover":{borderColor:`var(--mui-palette-${e}-dark, ${t[600]})`,backgroundColor:`color-mix(in srgb, var(--mui-palette-${e}-light, ${t[50]}) 30%, transparent)`}}},{props:{color:e,variant:`text`},style:{"&&":{color:`var(--mui-palette-${e}-dark, ${t[600]})`},"&:hover":{backgroundColor:`color-mix(in srgb, var(--mui-palette-${e}-light, ${t[50]}) 30%, transparent)`}}}]}function x(e,t){return[{props:{color:e,variant:`filled`},style:{backgroundColor:`var(--mui-palette-${e}-main, ${t[500]})`,color:`var(--mui-palette-${e}-contrastText, #ffffff)`,"&:hover":{backgroundColor:`var(--mui-palette-${e}-dark, ${t[600]})`},"&.MuiChip-clickable:hover":{backgroundColor:`var(--mui-palette-${e}-dark, ${t[600]})`}}},{props:{color:e,variant:`outlined`},style:{"&&":{borderColor:`var(--mui-palette-${e}-main, ${t[500]})`,color:`var(--mui-palette-${e}-dark, ${t[600]})`},"&:hover":{backgroundColor:`color-mix(in srgb, var(--mui-palette-${e}-light, ${t[50]}) 25%, transparent)`}}}]}function S(e,t){return[{props:{color:e},style:{"& .MuiBadge-badge":{backgroundColor:`var(--mui-palette-${e}-main, ${t[500]})`,color:`var(--mui-palette-${e}-contrastText, #ffffff)`}}}]}function C(e,t){return[{props:{color:e},style:{color:`var(--mui-palette-${e}-main, ${t[500]})`}}]}const w=[...b(`brand`,e.brand),...b(`iochmara`,e.iochmara),...b(`cyan`,e.cyan),...b(`amber`,e.amber),...b(`green`,e.green),...b(`red`,e.red),...b(`rose`,e.rose),...b(`fuchsia`,e.fuchsia),...b(`neutral`,e.neutral)],T=[...x(`brand`,e.brand),...x(`iochmara`,e.iochmara),...x(`cyan`,e.cyan),...x(`amber`,e.amber),...x(`green`,e.green),...x(`red`,e.red),...x(`rose`,e.rose),...x(`fuchsia`,e.fuchsia),...x(`neutral`,e.neutral)],E=[...S(`brand`,e.brand),...S(`iochmara`,e.iochmara)],D=[...C(`brand`,e.brand),...C(`iochmara`,e.iochmara)],O={typography:{fontFamily:[`-apple-system`,`BlinkMacSystemFont`,`"Segoe UI"`,`Roboto`,`"Helvetica Neue"`,`Arial`,`sans-serif`,`"Apple Color Emoji"`,`"Segoe UI Emoji"`,`"Segoe UI Symbol"`].join(`,`),fontSize:14,h1:{fontWeight:600},h2:{fontWeight:600},h3:{fontWeight:600},h4:{fontWeight:600},h5:{fontWeight:600},h6:{fontWeight:600},button:{textTransform:`none`,fontWeight:500}},shape:{borderRadius:8},components:{MuiButton:{defaultProps:{disableElevation:!0},styleOverrides:{root:{borderRadius:6,boxShadow:`none`,textTransform:`none`,fontWeight:500,"&:hover":{boxShadow:`none`}},sizeSmall:{fontSize:`0.8125rem`,padding:`4px 10px`},sizeMedium:{padding:`0.5rem 1rem`,fontSize:`1rem`},sizeLarge:{padding:`0.75rem 1.5rem`,fontSize:`1.125rem`},contained:{"&:hover":{boxShadow:`none`}},outlined:{borderWidth:`1px`,"&:hover":{borderWidth:`1px`}}},variants:[{props:{size:`xsmall`},style:{fontSize:`0.75rem`,padding:`2px 8px`,minHeight:24}},...w]},MuiChip:{styleOverrides:{root:{borderRadius:6,fontWeight:500},sizeSmall:{fontSize:`0.75rem`,height:24},sizeMedium:{height:32,fontSize:`0.875rem`}},variants:[{props:{size:`xsmall`},style:{fontSize:`0.6875rem`,height:20,"& .MuiChip-label":{padding:`0 6px`}}},...T]},MuiBadge:{variants:[...E],styleOverrides:{badge:{fontWeight:500,fontSize:`0.75rem`}}},MuiAlert:{styleOverrides:{root:{borderRadius:6},standardSuccess:{backgroundColor:`var(--mui-palette-success-light)`,color:`var(--mui-palette-success-dark)`,"& .MuiAlert-icon":{color:`var(--mui-palette-success-dark)`}},standardWarning:{backgroundColor:`var(--mui-palette-warning-light)`,color:`var(--mui-palette-warning-dark)`,"& .MuiAlert-icon":{color:`var(--mui-palette-warning-dark)`}},standardError:{backgroundColor:`var(--mui-palette-error-light)`,color:`var(--mui-palette-error-dark)`,"& .MuiAlert-icon":{color:`var(--mui-palette-error-dark)`}},standardInfo:{backgroundColor:`var(--mui-palette-info-light)`,color:`var(--mui-palette-info-dark)`,"& .MuiAlert-icon":{color:`var(--mui-palette-info-dark)`}}}},MuiTabs:{styleOverrides:{indicator:{height:2}}},MuiTab:{styleOverrides:{root:{textTransform:`none`,fontWeight:500,minHeight:48}}},MuiAvatar:{styleOverrides:{root:{fontWeight:500}}},MuiCircularProgress:{defaultProps:{color:`primary`},variants:[...D]},MuiLink:{defaultProps:{underline:`hover`},styleOverrides:{root:{fontWeight:500,color:`var(--mui-palette-secondary-main)`,textDecorationColor:`var(--mui-palette-secondary-light)`,"&:hover":{color:`var(--mui-palette-secondary-dark)`}}}},MuiPopover:{styleOverrides:{paper:{borderRadius:8,boxShadow:`0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)`}}},MuiDivider:{styleOverrides:{root:{borderColor:`var(--mui-palette-divider)`}}},MuiBreadcrumbs:{styleOverrides:{separator:{color:`var(--mui-palette-text-secondary)`}}},MuiCard:{styleOverrides:{root:{borderRadius:8,boxShadow:`0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)`}}},MuiPaper:{styleOverrides:{root:{backgroundImage:`none`}}},MuiTooltip:{styleOverrides:{tooltip:{fontSize:`0.75rem`}}},MuiIconButton:{styleOverrides:{root:{borderRadius:6},sizeSmall:{padding:4},sizeMedium:{padding:8},sizeLarge:{padding:12}}},MuiTextField:{defaultProps:{variant:`outlined`,size:`small`},styleOverrides:{root:{"& .MuiOutlinedInput-root":{borderRadius:6}}}},MuiOutlinedInput:{styleOverrides:{root:{borderRadius:6,"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:`var(--mui-palette-secondary-light)`},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:`var(--mui-palette-secondary-main)`,borderWidth:2}},notchedOutline:{borderColor:`var(--mui-palette-divider)`}}},MuiCheckbox:{defaultProps:{color:`primary`},styleOverrides:{root:{borderRadius:4}}},MuiSwitch:{defaultProps:{color:`primary`}},MuiDialog:{styleOverrides:{paper:{borderRadius:8}}},MuiDialogTitle:{styleOverrides:{root:{fontWeight:600,fontSize:`1.125rem`}}},MuiMenu:{styleOverrides:{paper:{borderRadius:8,boxShadow:`0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)`}}},MuiMenuItem:{styleOverrides:{root:{fontSize:`0.875rem`,padding:`0.5rem 0.75rem`,"&:hover":{backgroundColor:`var(--mui-palette-action-hover)`},"&.Mui-selected":{backgroundColor:`var(--mui-palette-action-selected)`,"&:hover":{backgroundColor:`var(--mui-palette-action-selected)`}}}}},MuiAutocomplete:{styleOverrides:{paper:{borderRadius:6,boxShadow:`0 4px 6px -1px rgba(0, 0, 0, 0.15), 0 2px 4px -2px rgba(0, 0, 0, 0.1)`,backgroundColor:e.neutral[200],".dark &":{backgroundColor:e.neutral[700]}},listbox:{padding:`4px 0`},option:{fontSize:`0.875rem`,padding:`0.5rem 0.75rem`,'&[aria-selected="true"]':{backgroundColor:`var(--mui-palette-action-selected)`},"&.Mui-focused":{backgroundColor:`var(--mui-palette-action-hover)`}}}}}},k=t({cssVariables:{colorSchemeSelector:`class`},colorSchemes:{light:{palette:{mode:`light`,primary:{main:e.iochmara[500],light:e.iochmara[300],dark:e.iochmara[600],contrastText:`#ffffff`},secondary:{main:e.cyan[500],light:e.cyan[400],dark:e.cyan[600],contrastText:`#ffffff`},brand:{light:e.brand[400],main:e.brand[500],dark:e.brand[600],contrastText:`#ffffff`},iochmara:{light:e.iochmara[400],main:e.iochmara[500],dark:e.iochmara[600],contrastText:`#ffffff`},cyan:{main:e.cyan[500],light:e.cyan[300],dark:e.cyan[600],contrastText:`#ffffff`},amber:{main:e.amber[500],light:e.amber[300],dark:e.amber[600],contrastText:`#ffffff`},green:{main:e.green[500],light:e.green[300],dark:e.green[600],contrastText:`#ffffff`},red:{main:e.red[500],light:e.red[300],dark:e.red[600],contrastText:`#ffffff`},rose:{main:e.rose[500],light:e.rose[300],dark:e.rose[600],contrastText:`#ffffff`},fuchsia:{main:e.fuchsia[500],light:e.fuchsia[300],dark:e.fuchsia[600],contrastText:`#ffffff`},neutral:{main:e.neutral[600],light:e.neutral[300],dark:e.neutral[700],contrastText:`#ffffff`},grey:e.neutral,success:e.success,warning:e.warning,error:e.error,info:e.info,background:{default:`#ffffff`,paper:e.neutral[50]},text:{primary:e.neutral[900],secondary:e.neutral[600],disabled:e.neutral[400]},divider:e.neutral[200]}},dark:{palette:{mode:`dark`,primary:{main:e.iochmara[500],light:e.iochmara[300],dark:e.iochmara[600],contrastText:`#ffffff`},secondary:{main:e.cyan[500],light:e.cyan[400],dark:e.cyan[600],contrastText:`#ffffff`},brand:{light:e.brand[300],main:e.brand[400],dark:e.brand[600],contrastText:`#ffffff`},iochmara:{light:e.iochmara[300],main:e.iochmara[400],dark:e.iochmara[600],contrastText:`#ffffff`},cyan:{main:e.cyan[400],light:e.cyan[300],dark:e.cyan[600],contrastText:`#ffffff`},amber:{main:e.amber[400],light:e.amber[300],dark:e.amber[600],contrastText:`#000000`},green:{main:e.green[400],light:e.green[300],dark:e.green[600],contrastText:`#ffffff`},red:{main:e.red[400],light:e.red[300],dark:e.red[600],contrastText:`#ffffff`},rose:{main:e.rose[400],light:e.rose[300],dark:e.rose[600],contrastText:`#ffffff`},fuchsia:{main:e.fuchsia[400],light:e.fuchsia[300],dark:e.fuchsia[600],contrastText:`#ffffff`},neutral:{main:e.neutral[400],light:e.neutral[300],dark:e.neutral[200],contrastText:e.neutral[900]},grey:e.neutral,success:{light:e.success.light,main:e.success.main,dark:e.success.dark,contrastText:`#000000`},warning:{light:e.warning.light,main:e.warning.main,dark:e.warning.dark,contrastText:`#000000`},error:{light:e.error.light,main:e.error.main,dark:e.error.dark,contrastText:`#ffffff`},info:{light:e.info.light,main:e.info.main,dark:e.info.dark,contrastText:`#ffffff`},background:{default:e.neutral[900],paper:e.neutral[800]},text:{primary:e.neutral[50],secondary:e.neutral[400],disabled:e.neutral[600]},divider:e.neutral[700]}}},...O});export{i as _,f as a,h as c,v as d,y as f,a as g,s as h,g as i,d as l,c as m,u as n,l as o,o as p,m as r,p as s,k as t,_ as u};
|
|
3
|
+
//# sourceMappingURL=theme-B_XT39eO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-B_XT39eO.js","names":[],"sources":["../src/components/data/agGridTheme.ts","../src/theme/chartTheme.ts","../src/theme/theme.ts"],"sourcesContent":["\"use client\";\n\n/**\n * @file agGridTheme.ts\n * @description AG Grid theme configuration for data grids\n *\n * Provides light and dark themes using AG Grid's themeQuartz as a base.\n */\n\nimport { themeQuartz } from \"ag-grid-community\";\n\n// System font stack for headers\nconst systemFontStack =\n 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif';\n\n/**\n * Light theme for AG Grid data grids\n */\nexport const dataGridThemeLight = themeQuartz.withParams({\n backgroundColor: \"#ffffff\",\n headerBackgroundColor: \"#f5f5f5\",\n rowHoverColor: \"#ffffff\",\n borderColor: \"#e0e0e0\",\n foregroundColor: \"#1e1e1e\",\n fontFamily: \"monospace\",\n fontSize: 13,\n headerFontFamily: systemFontStack,\n headerFontSize: 13,\n headerFontWeight: 700,\n cellHorizontalPadding: 8,\n wrapperBorderRadius: 0,\n});\n\n/**\n * Dark theme for AG Grid data grids\n */\nexport const dataGridThemeDark = themeQuartz.withParams({\n backgroundColor: \"#1e1e1e\",\n headerBackgroundColor: \"#383838\",\n rowHoverColor: \"#1e1e1e\",\n borderColor: \"#4a4a4a\",\n foregroundColor: \"#e0e0e0\",\n fontFamily: \"monospace\",\n fontSize: 13,\n headerFontFamily: systemFontStack,\n headerFontSize: 13,\n headerFontWeight: 700,\n cellHorizontalPadding: 8,\n wrapperBorderRadius: 0,\n});\n","/**\n * Shared Chart.js theme utilities for dark mode support\n */\n\nexport interface ChartThemeColors {\n gridColor: string;\n textColor: string;\n borderColor: string;\n tooltipBackgroundColor: string;\n tooltipTextColor: string;\n}\n\n/**\n * Get theme-aware colors for Chart.js charts\n * @param isDark - Whether dark mode is active\n * @returns Theme colors for Chart.js configuration\n */\nexport function getChartThemeColors(isDark: boolean): ChartThemeColors {\n return {\n gridColor: isDark ? \"#4b5563\" : \"#d1d5db\",\n textColor: isDark ? \"#e5e7eb\" : \"#374151\",\n borderColor: isDark ? \"#6b7280\" : \"#9ca3af\",\n tooltipBackgroundColor: isDark ? \"#1f2937\" : \"#ffffff\",\n tooltipTextColor: isDark ? \"#e5e7eb\" : \"#111827\",\n };\n}\n\n/**\n * Get Chart.js scale options with theme-aware colors\n * @param isDark - Whether dark mode is active\n * @param showGrid - Whether to show grid lines\n * @returns Partial scale options for Chart.js\n */\nexport function getThemedScaleOptions(isDark: boolean, showGrid = true) {\n const colors = getChartThemeColors(isDark);\n return {\n grid: {\n color: showGrid ? colors.gridColor : undefined,\n display: showGrid,\n },\n ticks: {\n color: colors.textColor,\n },\n border: {\n color: colors.borderColor,\n },\n };\n}\n\n/**\n * Get Chart.js plugin options with theme-aware colors\n * @param isDark - Whether dark mode is active\n * @returns Plugin options for Chart.js (legend, title, tooltip)\n */\nexport function getThemedPluginOptions(isDark: boolean) {\n const colors = getChartThemeColors(isDark);\n return {\n legend: {\n labels: {\n color: colors.textColor,\n },\n },\n title: {\n color: colors.textColor,\n },\n tooltip: {\n backgroundColor: colors.tooltipBackgroundColor,\n titleColor: colors.tooltipTextColor,\n bodyColor: colors.tooltipTextColor,\n borderColor: colors.borderColor,\n borderWidth: 1,\n },\n };\n}\n\n// Bar color constants - Light mode\nexport const CURRENT_BAR_COLOR = \"#63B3ED\";\nexport const BASE_BAR_COLOR = \"#F6AD55\";\nexport const CURRENT_BAR_COLOR_WITH_ALPHA = `${CURRENT_BAR_COLOR}A5`;\nexport const BASE_BAR_COLOR_WITH_ALPHA = `${BASE_BAR_COLOR}A5`;\n\n// Bar color constants - Dark mode (slightly brighter for better visibility)\nexport const CURRENT_BAR_COLOR_DARK = \"#90CDF4\";\nexport const BASE_BAR_COLOR_DARK = \"#FBD38D\";\nexport const CURRENT_BAR_COLOR_DARK_WITH_ALPHA = `${CURRENT_BAR_COLOR_DARK}A5`;\nexport const BASE_BAR_COLOR_DARK_WITH_ALPHA = `${BASE_BAR_COLOR_DARK}A5`;\n\n// Info color\nexport const INFO_VAL_COLOR = \"#63B3ED\";\nexport const INFO_VAL_COLOR_DARK = \"#90CDF4\";\n\n/**\n * Get theme-aware bar colors for charts\n * @param isDark - Whether dark mode is active\n * @returns Object with current and base bar colors\n */\nexport function getBarColors(isDark: boolean) {\n return {\n current: isDark ? CURRENT_BAR_COLOR_DARK : CURRENT_BAR_COLOR,\n base: isDark ? BASE_BAR_COLOR_DARK : BASE_BAR_COLOR,\n currentWithAlpha: isDark\n ? CURRENT_BAR_COLOR_DARK_WITH_ALPHA\n : CURRENT_BAR_COLOR_WITH_ALPHA,\n baseWithAlpha: isDark\n ? BASE_BAR_COLOR_DARK_WITH_ALPHA\n : BASE_BAR_COLOR_WITH_ALPHA,\n info: isDark ? INFO_VAL_COLOR_DARK : INFO_VAL_COLOR,\n };\n}\n","/**\n * MUI Theme configuration with CSS Variables mode\n *\n * This theme uses MUI 7's CSS Variables mode with `colorSchemeSelector: 'class'`\n * to toggle between light and dark modes using the `.dark` class on the document.\n * This integrates with the ThemeContext which manages the class toggle.\n *\n * Color values and component variants are aligned with the main Recce theme at\n * ui/src/components/ui/mui-theme.ts for consistency.\n */\n\nimport { createTheme, type ThemeOptions } from \"@mui/material/styles\";\n\nimport { colors } from \"./colors\";\n\n// Custom color names type for variant generation\ntype CustomColorName =\n | \"brand\"\n | \"iochmara\"\n | \"cyan\"\n | \"amber\"\n | \"green\"\n | \"red\"\n | \"rose\"\n | \"fuchsia\"\n | \"neutral\";\n\n// Type for color scales with numeric keys (50, 100, 200, etc.)\ninterface ColorScale {\n readonly [key: number]: string;\n readonly 50: string;\n readonly 100: string;\n readonly 200: string;\n readonly 300: string;\n readonly 400: string;\n readonly 500: string;\n readonly 600: string;\n readonly 700: string;\n readonly 800: string;\n readonly 900: string;\n readonly 950: string;\n}\n\n/**\n * Helper to generate button color variants for a given color\n * Creates contained, outlined, and text variant styles\n *\n * Uses the `&&` selector pattern to increase CSS specificity, ensuring our\n * custom color variant styles override MUI's default outlined/text button styles.\n * MUI's default styles have high specificity that would otherwise win the cascade.\n *\n * @see https://mui.com/material-ui/customization/theme-components/#specificity\n */\nfunction createButtonColorVariants<T extends CustomColorName>(\n colorName: T,\n colorScale: ColorScale,\n) {\n return [\n // Contained variant (solid) - uses CSS variables for light/dark mode\n {\n props: { color: colorName, variant: \"contained\" as const },\n style: {\n backgroundColor: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n color: `var(--mui-palette-${colorName}-contrastText, #ffffff)`,\n \"&:hover\": {\n backgroundColor: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n },\n },\n // Outlined variant - uses && for higher specificity over MUI defaults\n {\n props: { color: colorName, variant: \"outlined\" as const },\n style: {\n // && increases specificity to override MUI's default outlined styles\n \"&&\": {\n borderColor: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n color: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n \"&:hover\": {\n borderColor: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n backgroundColor: `color-mix(in srgb, var(--mui-palette-${colorName}-light, ${colorScale[50]}) 30%, transparent)`,\n },\n },\n },\n // Text variant (ghost) - uses && for higher specificity over MUI defaults\n {\n props: { color: colorName, variant: \"text\" as const },\n style: {\n // && increases specificity to override MUI's default text styles\n \"&&\": {\n color: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n \"&:hover\": {\n backgroundColor: `color-mix(in srgb, var(--mui-palette-${colorName}-light, ${colorScale[50]}) 30%, transparent)`,\n },\n },\n },\n ];\n}\n\n/**\n * Helper to generate Chip color variants\n * Uses CSS variables for automatic light/dark mode support\n *\n * Uses the `&&` selector pattern for outlined variant to ensure our custom\n * color styles override MUI's default chip outlined styles.\n */\nfunction createChipColorVariants<T extends CustomColorName>(\n colorName: T,\n colorScale: ColorScale,\n) {\n return [\n // Filled variant - uses CSS variables for light/dark mode\n {\n props: { color: colorName, variant: \"filled\" as const },\n style: {\n backgroundColor: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n color: `var(--mui-palette-${colorName}-contrastText, #ffffff)`,\n \"&:hover\": {\n backgroundColor: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n \"&.MuiChip-clickable:hover\": {\n backgroundColor: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n },\n },\n // Outlined variant - uses && for higher specificity over MUI defaults\n {\n props: { color: colorName, variant: \"outlined\" as const },\n style: {\n // && increases specificity to override MUI's default outlined styles\n \"&&\": {\n borderColor: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n color: `var(--mui-palette-${colorName}-dark, ${colorScale[600]})`,\n },\n \"&:hover\": {\n backgroundColor: `color-mix(in srgb, var(--mui-palette-${colorName}-light, ${colorScale[50]}) 25%, transparent)`,\n },\n },\n },\n ];\n}\n\n/**\n * Helper to generate Badge color variants\n * Uses CSS variables for automatic light/dark mode support\n */\nfunction createBadgeColorVariant<T extends CustomColorName>(\n colorName: T,\n colorScale: ColorScale,\n) {\n return [\n {\n props: { color: colorName },\n style: {\n \"& .MuiBadge-badge\": {\n backgroundColor: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n color: `var(--mui-palette-${colorName}-contrastText, #ffffff)`,\n },\n },\n },\n ];\n}\n\n/**\n * Helper to generate CircularProgress color variants\n * Uses CSS variables for automatic light/dark mode support\n */\nfunction createProgressColorVariant<T extends CustomColorName>(\n colorName: T,\n colorScale: ColorScale,\n) {\n return [\n {\n props: { color: colorName },\n style: {\n color: `var(--mui-palette-${colorName}-main, ${colorScale[500]})`,\n },\n },\n ];\n}\n\n// Generate all button color variants\nconst buttonColorVariants = [\n ...createButtonColorVariants(\"brand\", colors.brand),\n ...createButtonColorVariants(\"iochmara\", colors.iochmara),\n ...createButtonColorVariants(\"cyan\", colors.cyan),\n ...createButtonColorVariants(\"amber\", colors.amber),\n ...createButtonColorVariants(\"green\", colors.green),\n ...createButtonColorVariants(\"red\", colors.red),\n ...createButtonColorVariants(\"rose\", colors.rose),\n ...createButtonColorVariants(\"fuchsia\", colors.fuchsia),\n ...createButtonColorVariants(\"neutral\", colors.neutral),\n];\n\n// Generate all chip color variants\nconst chipColorVariants = [\n ...createChipColorVariants(\"brand\", colors.brand),\n ...createChipColorVariants(\"iochmara\", colors.iochmara),\n ...createChipColorVariants(\"cyan\", colors.cyan),\n ...createChipColorVariants(\"amber\", colors.amber),\n ...createChipColorVariants(\"green\", colors.green),\n ...createChipColorVariants(\"red\", colors.red),\n ...createChipColorVariants(\"rose\", colors.rose),\n ...createChipColorVariants(\"fuchsia\", colors.fuchsia),\n ...createChipColorVariants(\"neutral\", colors.neutral),\n];\n\n// Generate all badge color variants\nconst badgeColorVariants = [\n ...createBadgeColorVariant(\"brand\", colors.brand),\n ...createBadgeColorVariant(\"iochmara\", colors.iochmara),\n];\n\n// Generate all progress color variants\nconst progressColorVariants = [\n ...createProgressColorVariant(\"brand\", colors.brand),\n ...createProgressColorVariant(\"iochmara\", colors.iochmara),\n];\n\n// Module augmentations are in js/mui-augmentations.d.ts (included via tsconfig)\n\n/**\n * System font stack for optimal cross-platform rendering\n */\nconst systemFontStack = [\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n '\"Segoe UI\"',\n \"Roboto\",\n '\"Helvetica Neue\"',\n \"Arial\",\n \"sans-serif\",\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n].join(\",\");\n\n/**\n * Shared theme options for both light and dark modes\n */\nconst sharedThemeOptions: ThemeOptions = {\n typography: {\n fontFamily: systemFontStack,\n // Slightly smaller default sizes for data-dense UIs\n fontSize: 14,\n h1: { fontWeight: 600 },\n h2: { fontWeight: 600 },\n h3: { fontWeight: 600 },\n h4: { fontWeight: 600 },\n h5: { fontWeight: 600 },\n h6: { fontWeight: 600 },\n button: {\n textTransform: \"none\", // No uppercase for buttons\n fontWeight: 500,\n },\n },\n shape: {\n borderRadius: 8, // Rounded corners\n },\n components: {\n MuiButton: {\n defaultProps: {\n disableElevation: true, // Match Chakra's flat button style\n },\n styleOverrides: {\n root: {\n borderRadius: 6,\n boxShadow: \"none\",\n textTransform: \"none\",\n fontWeight: 500,\n \"&:hover\": {\n boxShadow: \"none\",\n },\n },\n sizeSmall: {\n fontSize: \"0.8125rem\",\n padding: \"4px 10px\",\n },\n sizeMedium: {\n padding: \"0.5rem 1rem\",\n fontSize: \"1rem\",\n },\n sizeLarge: {\n padding: \"0.75rem 1.5rem\",\n fontSize: \"1.125rem\",\n },\n contained: {\n \"&:hover\": {\n boxShadow: \"none\",\n },\n },\n outlined: {\n borderWidth: \"1px\",\n \"&:hover\": {\n borderWidth: \"1px\",\n },\n },\n },\n variants: [\n // Size variant: xsmall\n {\n props: { size: \"xsmall\" },\n style: {\n fontSize: \"0.75rem\",\n padding: \"2px 8px\",\n minHeight: 24,\n },\n },\n // Color variants for brand and iochmara\n ...buttonColorVariants,\n ],\n },\n MuiChip: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n fontWeight: 500,\n },\n sizeSmall: {\n fontSize: \"0.75rem\",\n height: 24,\n },\n sizeMedium: {\n height: 32,\n fontSize: \"0.875rem\",\n },\n },\n variants: [\n // Size variant: xsmall\n {\n props: { size: \"xsmall\" },\n style: {\n fontSize: \"0.6875rem\",\n height: 20,\n \"& .MuiChip-label\": {\n padding: \"0 6px\",\n },\n },\n },\n // Color variants for brand and iochmara\n ...chipColorVariants,\n ],\n },\n MuiBadge: {\n variants: [\n // Color variants for brand and iochmara\n ...badgeColorVariants,\n ],\n styleOverrides: {\n badge: {\n fontWeight: 500,\n fontSize: \"0.75rem\",\n },\n },\n },\n // Alert overrides\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n },\n standardSuccess: {\n backgroundColor: \"var(--mui-palette-success-light)\",\n color: \"var(--mui-palette-success-dark)\",\n \"& .MuiAlert-icon\": {\n color: \"var(--mui-palette-success-dark)\",\n },\n },\n standardWarning: {\n backgroundColor: \"var(--mui-palette-warning-light)\",\n color: \"var(--mui-palette-warning-dark)\",\n \"& .MuiAlert-icon\": {\n color: \"var(--mui-palette-warning-dark)\",\n },\n },\n standardError: {\n backgroundColor: \"var(--mui-palette-error-light)\",\n color: \"var(--mui-palette-error-dark)\",\n \"& .MuiAlert-icon\": {\n color: \"var(--mui-palette-error-dark)\",\n },\n },\n standardInfo: {\n backgroundColor: \"var(--mui-palette-info-light)\",\n color: \"var(--mui-palette-info-dark)\",\n \"& .MuiAlert-icon\": {\n color: \"var(--mui-palette-info-dark)\",\n },\n },\n },\n },\n // Tabs overrides\n MuiTabs: {\n styleOverrides: {\n indicator: {\n height: 2,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: \"none\",\n fontWeight: 500,\n minHeight: 48,\n },\n },\n },\n // Avatar overrides\n MuiAvatar: {\n styleOverrides: {\n root: {\n fontWeight: 500,\n },\n },\n },\n MuiCircularProgress: {\n defaultProps: {\n color: \"primary\",\n },\n variants: [\n // Color variants for brand and iochmara\n ...progressColorVariants,\n ],\n },\n // Link overrides\n MuiLink: {\n defaultProps: {\n underline: \"hover\",\n },\n styleOverrides: {\n root: {\n fontWeight: 500,\n color: \"var(--mui-palette-secondary-main)\",\n textDecorationColor: \"var(--mui-palette-secondary-light)\",\n \"&:hover\": {\n color: \"var(--mui-palette-secondary-dark)\",\n },\n },\n },\n },\n // Popover overrides\n MuiPopover: {\n styleOverrides: {\n paper: {\n borderRadius: 8,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n },\n },\n // Divider overrides\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: \"var(--mui-palette-divider)\",\n },\n },\n },\n // Breadcrumbs overrides\n MuiBreadcrumbs: {\n styleOverrides: {\n separator: {\n color: \"var(--mui-palette-text-secondary)\",\n },\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n boxShadow:\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)\",\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: \"none\", // Remove default gradient\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: \"0.75rem\",\n },\n },\n },\n // IconButton overrides\n MuiIconButton: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n },\n sizeSmall: {\n padding: 4,\n },\n sizeMedium: {\n padding: 8,\n },\n sizeLarge: {\n padding: 12,\n },\n },\n },\n // TextField overrides\n MuiTextField: {\n defaultProps: {\n variant: \"outlined\",\n size: \"small\",\n },\n styleOverrides: {\n root: {\n \"& .MuiOutlinedInput-root\": {\n borderRadius: 6,\n },\n },\n },\n },\n // OutlinedInput overrides\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"var(--mui-palette-secondary-light)\",\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"var(--mui-palette-secondary-main)\",\n borderWidth: 2,\n },\n },\n notchedOutline: {\n borderColor: \"var(--mui-palette-divider)\",\n },\n },\n },\n // Checkbox overrides\n MuiCheckbox: {\n defaultProps: {\n color: \"primary\",\n },\n styleOverrides: {\n root: {\n borderRadius: 4,\n },\n },\n },\n // Switch overrides\n MuiSwitch: {\n defaultProps: {\n color: \"primary\",\n },\n },\n // Dialog overrides\n MuiDialog: {\n styleOverrides: {\n paper: {\n borderRadius: 8,\n },\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: {\n fontWeight: 600,\n fontSize: \"1.125rem\",\n },\n },\n },\n // Menu overrides\n MuiMenu: {\n styleOverrides: {\n paper: {\n borderRadius: 8,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n fontSize: \"0.875rem\",\n padding: \"0.5rem 0.75rem\",\n \"&:hover\": {\n backgroundColor: \"var(--mui-palette-action-hover)\",\n },\n \"&.Mui-selected\": {\n backgroundColor: \"var(--mui-palette-action-selected)\",\n \"&:hover\": {\n backgroundColor: \"var(--mui-palette-action-selected)\",\n },\n },\n },\n },\n },\n // Autocomplete overrides\n MuiAutocomplete: {\n styleOverrides: {\n paper: {\n borderRadius: 6,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.15), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n backgroundColor: colors.neutral[200],\n \".dark &\": {\n backgroundColor: colors.neutral[700],\n },\n },\n listbox: {\n padding: \"4px 0\",\n },\n option: {\n fontSize: \"0.875rem\",\n padding: \"0.5rem 0.75rem\",\n '&[aria-selected=\"true\"]': {\n backgroundColor: \"var(--mui-palette-action-selected)\",\n },\n \"&.Mui-focused\": {\n backgroundColor: \"var(--mui-palette-action-hover)\",\n },\n },\n },\n },\n },\n};\n\n/**\n * MUI Theme with CSS Variables mode enabled\n *\n * Uses `colorSchemeSelector: 'class'` to switch themes via `.dark` class,\n * which is toggled by the ThemeContext provider.\n *\n * Usage:\n * ```tsx\n * import { ThemeProvider } from '@mui/material/styles';\n * import { theme } from '@datarecce/ui/theme';\n *\n * <ThemeProvider theme={theme}>\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const theme = createTheme({\n cssVariables: {\n colorSchemeSelector: \"class\", // Use .dark class for dark mode\n },\n colorSchemes: {\n light: {\n palette: {\n mode: \"light\",\n primary: {\n main: colors.iochmara[500],\n light: colors.iochmara[300],\n dark: colors.iochmara[600],\n contrastText: \"#ffffff\",\n },\n secondary: {\n main: colors.cyan[500],\n light: colors.cyan[400],\n dark: colors.cyan[600],\n contrastText: \"#ffffff\",\n },\n brand: {\n light: colors.brand[400],\n main: colors.brand[500],\n dark: colors.brand[600],\n contrastText: \"#ffffff\",\n },\n iochmara: {\n light: colors.iochmara[400],\n main: colors.iochmara[500],\n dark: colors.iochmara[600],\n contrastText: \"#ffffff\",\n },\n cyan: {\n main: colors.cyan[500],\n light: colors.cyan[300],\n dark: colors.cyan[600],\n contrastText: \"#ffffff\",\n },\n amber: {\n main: colors.amber[500],\n light: colors.amber[300],\n dark: colors.amber[600],\n contrastText: \"#ffffff\",\n },\n green: {\n main: colors.green[500],\n light: colors.green[300],\n dark: colors.green[600],\n contrastText: \"#ffffff\",\n },\n red: {\n main: colors.red[500],\n light: colors.red[300],\n dark: colors.red[600],\n contrastText: \"#ffffff\",\n },\n rose: {\n main: colors.rose[500],\n light: colors.rose[300],\n dark: colors.rose[600],\n contrastText: \"#ffffff\",\n },\n fuchsia: {\n main: colors.fuchsia[500],\n light: colors.fuchsia[300],\n dark: colors.fuchsia[600],\n contrastText: \"#ffffff\",\n },\n neutral: {\n main: colors.neutral[600],\n light: colors.neutral[300],\n dark: colors.neutral[700],\n contrastText: \"#ffffff\",\n },\n grey: colors.neutral, // Color scale (50, 100, etc.) - MUI's built-in grey\n success: colors.success,\n warning: colors.warning,\n error: colors.error,\n info: colors.info,\n background: {\n default: \"#ffffff\",\n paper: colors.neutral[50],\n },\n text: {\n primary: colors.neutral[900],\n secondary: colors.neutral[600],\n disabled: colors.neutral[400],\n },\n divider: colors.neutral[200],\n },\n },\n dark: {\n palette: {\n mode: \"dark\",\n primary: {\n main: colors.iochmara[500],\n light: colors.iochmara[300],\n dark: colors.iochmara[600],\n contrastText: \"#ffffff\",\n },\n secondary: {\n main: colors.cyan[500],\n light: colors.cyan[400],\n dark: colors.cyan[600],\n contrastText: \"#ffffff\",\n },\n brand: {\n light: colors.brand[300],\n main: colors.brand[400],\n dark: colors.brand[600],\n contrastText: \"#ffffff\",\n },\n iochmara: {\n light: colors.iochmara[300],\n main: colors.iochmara[400],\n dark: colors.iochmara[600],\n contrastText: \"#ffffff\",\n },\n cyan: {\n main: colors.cyan[400],\n light: colors.cyan[300],\n dark: colors.cyan[600],\n contrastText: \"#ffffff\",\n },\n amber: {\n main: colors.amber[400],\n light: colors.amber[300],\n dark: colors.amber[600],\n contrastText: \"#000000\",\n },\n green: {\n main: colors.green[400],\n light: colors.green[300],\n dark: colors.green[600],\n contrastText: \"#ffffff\",\n },\n red: {\n main: colors.red[400],\n light: colors.red[300],\n dark: colors.red[600],\n contrastText: \"#ffffff\",\n },\n rose: {\n main: colors.rose[400],\n light: colors.rose[300],\n dark: colors.rose[600],\n contrastText: \"#ffffff\",\n },\n fuchsia: {\n main: colors.fuchsia[400],\n light: colors.fuchsia[300],\n dark: colors.fuchsia[600],\n contrastText: \"#ffffff\",\n },\n neutral: {\n main: colors.neutral[400],\n light: colors.neutral[300],\n dark: colors.neutral[200],\n contrastText: colors.neutral[900],\n },\n grey: colors.neutral, // Color scale (50, 100, etc.) - MUI's built-in grey\n success: {\n light: colors.success.light,\n main: colors.success.main,\n dark: colors.success.dark,\n contrastText: \"#000000\",\n },\n warning: {\n light: colors.warning.light,\n main: colors.warning.main,\n dark: colors.warning.dark,\n contrastText: \"#000000\",\n },\n error: {\n light: colors.error.light,\n main: colors.error.main,\n dark: colors.error.dark,\n contrastText: \"#ffffff\",\n },\n info: {\n light: colors.info.light,\n main: colors.info.main,\n dark: colors.info.dark,\n contrastText: \"#ffffff\",\n },\n background: {\n default: colors.neutral[900],\n paper: colors.neutral[800],\n },\n text: {\n primary: colors.neutral[50],\n secondary: colors.neutral[400],\n disabled: colors.neutral[600],\n },\n divider: colors.neutral[700],\n },\n },\n },\n ...sharedThemeOptions,\n});\n\n/**\n * Theme type export for consumers who need to type their theme\n */\nexport type RecceTheme = typeof theme;\n"],"mappings":";4IAYA,MAAM,EACJ,+EAKW,EAAqB,EAAY,WAAW,CACvD,gBAAiB,UACjB,sBAAuB,UACvB,cAAe,UACf,YAAa,UACb,gBAAiB,UACjB,WAAY,YACZ,SAAU,GACV,iBAAkB,EAClB,eAAgB,GAChB,iBAAkB,IAClB,sBAAuB,EACvB,oBAAqB,EACtB,CAAC,CAKW,EAAoB,EAAY,WAAW,CACtD,gBAAiB,UACjB,sBAAuB,UACvB,cAAe,UACf,YAAa,UACb,gBAAiB,UACjB,WAAY,YACZ,SAAU,GACV,iBAAkB,EAClB,eAAgB,GAChB,iBAAkB,IAClB,sBAAuB,EACvB,oBAAqB,EACtB,CAAC,CChCF,SAAgB,EAAoB,EAAmC,CACrE,MAAO,CACL,UAAW,EAAS,UAAY,UAChC,UAAW,EAAS,UAAY,UAChC,YAAa,EAAS,UAAY,UAClC,uBAAwB,EAAS,UAAY,UAC7C,iBAAkB,EAAS,UAAY,UACxC,CASH,SAAgB,EAAsB,EAAiB,EAAW,GAAM,CACtE,IAAM,EAAS,EAAoB,EAAO,CAC1C,MAAO,CACL,KAAM,CACJ,MAAO,EAAW,EAAO,UAAY,IAAA,GACrC,QAAS,EACV,CACD,MAAO,CACL,MAAO,EAAO,UACf,CACD,OAAQ,CACN,MAAO,EAAO,YACf,CACF,CAQH,SAAgB,EAAuB,EAAiB,CACtD,IAAM,EAAS,EAAoB,EAAO,CAC1C,MAAO,CACL,OAAQ,CACN,OAAQ,CACN,MAAO,EAAO,UACf,CACF,CACD,MAAO,CACL,MAAO,EAAO,UACf,CACD,QAAS,CACP,gBAAiB,EAAO,uBACxB,WAAY,EAAO,iBACnB,UAAW,EAAO,iBAClB,YAAa,EAAO,YACpB,YAAa,EACd,CACF,CAIH,MAAa,EAAoB,UACpB,EAAiB,UACjB,EAA+B,GAAG,EAAkB,IACpD,EAA4B,GAAG,EAAe,IAG9C,EAAyB,UACzB,EAAsB,UACtB,EAAoC,GAAG,EAAuB,IAC9D,EAAiC,GAAG,EAAoB,IAGxD,EAAiB,UACjB,EAAsB,UAOnC,SAAgB,EAAa,EAAiB,CAC5C,MAAO,CACL,QAAS,EAAS,EAAyB,EAC3C,KAAM,EAAS,EAAsB,EACrC,iBAAkB,EACd,EACA,EACJ,cAAe,EACX,EACA,EACJ,KAAM,EAAS,EAAsB,EACtC,CCtDH,SAAS,EACP,EACA,EACA,CACA,MAAO,CAEL,CACE,MAAO,CAAE,MAAO,EAAW,QAAS,YAAsB,CAC1D,MAAO,CACL,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACzE,MAAO,qBAAqB,EAAU,yBACtC,UAAW,CACT,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAC1E,CACF,CACF,CAED,CACE,MAAO,CAAE,MAAO,EAAW,QAAS,WAAqB,CACzD,MAAO,CAEL,KAAM,CACJ,YAAa,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACrE,MAAO,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAChE,CACD,UAAW,CACT,YAAa,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACrE,gBAAiB,wCAAwC,EAAU,UAAU,EAAW,IAAI,qBAC7F,CACF,CACF,CAED,CACE,MAAO,CAAE,MAAO,EAAW,QAAS,OAAiB,CACrD,MAAO,CAEL,KAAM,CACJ,MAAO,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAChE,CACD,UAAW,CACT,gBAAiB,wCAAwC,EAAU,UAAU,EAAW,IAAI,qBAC7F,CACF,CACF,CACF,CAUH,SAAS,EACP,EACA,EACA,CACA,MAAO,CAEL,CACE,MAAO,CAAE,MAAO,EAAW,QAAS,SAAmB,CACvD,MAAO,CACL,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACzE,MAAO,qBAAqB,EAAU,yBACtC,UAAW,CACT,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAC1E,CACD,4BAA6B,CAC3B,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAC1E,CACF,CACF,CAED,CACE,MAAO,CAAE,MAAO,EAAW,QAAS,WAAqB,CACzD,MAAO,CAEL,KAAM,CACJ,YAAa,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACrE,MAAO,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAChE,CACD,UAAW,CACT,gBAAiB,wCAAwC,EAAU,UAAU,EAAW,IAAI,qBAC7F,CACF,CACF,CACF,CAOH,SAAS,EACP,EACA,EACA,CACA,MAAO,CACL,CACE,MAAO,CAAE,MAAO,EAAW,CAC3B,MAAO,CACL,oBAAqB,CACnB,gBAAiB,qBAAqB,EAAU,SAAS,EAAW,KAAK,GACzE,MAAO,qBAAqB,EAAU,yBACvC,CACF,CACF,CACF,CAOH,SAAS,EACP,EACA,EACA,CACA,MAAO,CACL,CACE,MAAO,CAAE,MAAO,EAAW,CAC3B,MAAO,CACL,MAAO,qBAAqB,EAAU,SAAS,EAAW,KAAK,GAChE,CACF,CACF,CAIH,MAAM,EAAsB,CAC1B,GAAG,EAA0B,QAAS,EAAO,MAAM,CACnD,GAAG,EAA0B,WAAY,EAAO,SAAS,CACzD,GAAG,EAA0B,OAAQ,EAAO,KAAK,CACjD,GAAG,EAA0B,QAAS,EAAO,MAAM,CACnD,GAAG,EAA0B,QAAS,EAAO,MAAM,CACnD,GAAG,EAA0B,MAAO,EAAO,IAAI,CAC/C,GAAG,EAA0B,OAAQ,EAAO,KAAK,CACjD,GAAG,EAA0B,UAAW,EAAO,QAAQ,CACvD,GAAG,EAA0B,UAAW,EAAO,QAAQ,CACxD,CAGK,EAAoB,CACxB,GAAG,EAAwB,QAAS,EAAO,MAAM,CACjD,GAAG,EAAwB,WAAY,EAAO,SAAS,CACvD,GAAG,EAAwB,OAAQ,EAAO,KAAK,CAC/C,GAAG,EAAwB,QAAS,EAAO,MAAM,CACjD,GAAG,EAAwB,QAAS,EAAO,MAAM,CACjD,GAAG,EAAwB,MAAO,EAAO,IAAI,CAC7C,GAAG,EAAwB,OAAQ,EAAO,KAAK,CAC/C,GAAG,EAAwB,UAAW,EAAO,QAAQ,CACrD,GAAG,EAAwB,UAAW,EAAO,QAAQ,CACtD,CAGK,EAAqB,CACzB,GAAG,EAAwB,QAAS,EAAO,MAAM,CACjD,GAAG,EAAwB,WAAY,EAAO,SAAS,CACxD,CAGK,EAAwB,CAC5B,GAAG,EAA2B,QAAS,EAAO,MAAM,CACpD,GAAG,EAA2B,WAAY,EAAO,SAAS,CAC3D,CAuBK,EAAmC,CACvC,WAAY,CACV,WAlBoB,CACtB,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,oBACD,CAAC,KAAK,IAAI,CASP,SAAU,GACV,GAAI,CAAE,WAAY,IAAK,CACvB,GAAI,CAAE,WAAY,IAAK,CACvB,GAAI,CAAE,WAAY,IAAK,CACvB,GAAI,CAAE,WAAY,IAAK,CACvB,GAAI,CAAE,WAAY,IAAK,CACvB,GAAI,CAAE,WAAY,IAAK,CACvB,OAAQ,CACN,cAAe,OACf,WAAY,IACb,CACF,CACD,MAAO,CACL,aAAc,EACf,CACD,WAAY,CACV,UAAW,CACT,aAAc,CACZ,iBAAkB,GACnB,CACD,eAAgB,CACd,KAAM,CACJ,aAAc,EACd,UAAW,OACX,cAAe,OACf,WAAY,IACZ,UAAW,CACT,UAAW,OACZ,CACF,CACD,UAAW,CACT,SAAU,YACV,QAAS,WACV,CACD,WAAY,CACV,QAAS,cACT,SAAU,OACX,CACD,UAAW,CACT,QAAS,iBACT,SAAU,WACX,CACD,UAAW,CACT,UAAW,CACT,UAAW,OACZ,CACF,CACD,SAAU,CACR,YAAa,MACb,UAAW,CACT,YAAa,MACd,CACF,CACF,CACD,SAAU,CAER,CACE,MAAO,CAAE,KAAM,SAAU,CACzB,MAAO,CACL,SAAU,UACV,QAAS,UACT,UAAW,GACZ,CACF,CAED,GAAG,EACJ,CACF,CACD,QAAS,CACP,eAAgB,CACd,KAAM,CACJ,aAAc,EACd,WAAY,IACb,CACD,UAAW,CACT,SAAU,UACV,OAAQ,GACT,CACD,WAAY,CACV,OAAQ,GACR,SAAU,WACX,CACF,CACD,SAAU,CAER,CACE,MAAO,CAAE,KAAM,SAAU,CACzB,MAAO,CACL,SAAU,YACV,OAAQ,GACR,mBAAoB,CAClB,QAAS,QACV,CACF,CACF,CAED,GAAG,EACJ,CACF,CACD,SAAU,CACR,SAAU,CAER,GAAG,EACJ,CACD,eAAgB,CACd,MAAO,CACL,WAAY,IACZ,SAAU,UACX,CACF,CACF,CAED,SAAU,CACR,eAAgB,CACd,KAAM,CACJ,aAAc,EACf,CACD,gBAAiB,CACf,gBAAiB,mCACjB,MAAO,kCACP,mBAAoB,CAClB,MAAO,kCACR,CACF,CACD,gBAAiB,CACf,gBAAiB,mCACjB,MAAO,kCACP,mBAAoB,CAClB,MAAO,kCACR,CACF,CACD,cAAe,CACb,gBAAiB,iCACjB,MAAO,gCACP,mBAAoB,CAClB,MAAO,gCACR,CACF,CACD,aAAc,CACZ,gBAAiB,gCACjB,MAAO,+BACP,mBAAoB,CAClB,MAAO,+BACR,CACF,CACF,CACF,CAED,QAAS,CACP,eAAgB,CACd,UAAW,CACT,OAAQ,EACT,CACF,CACF,CACD,OAAQ,CACN,eAAgB,CACd,KAAM,CACJ,cAAe,OACf,WAAY,IACZ,UAAW,GACZ,CACF,CACF,CAED,UAAW,CACT,eAAgB,CACd,KAAM,CACJ,WAAY,IACb,CACF,CACF,CACD,oBAAqB,CACnB,aAAc,CACZ,MAAO,UACR,CACD,SAAU,CAER,GAAG,EACJ,CACF,CAED,QAAS,CACP,aAAc,CACZ,UAAW,QACZ,CACD,eAAgB,CACd,KAAM,CACJ,WAAY,IACZ,MAAO,oCACP,oBAAqB,qCACrB,UAAW,CACT,MAAO,oCACR,CACF,CACF,CACF,CAED,WAAY,CACV,eAAgB,CACd,MAAO,CACL,aAAc,EACd,UACE,uEACH,CACF,CACF,CAED,WAAY,CACV,eAAgB,CACd,KAAM,CACJ,YAAa,6BACd,CACF,CACF,CAED,eAAgB,CACd,eAAgB,CACd,UAAW,CACT,MAAO,oCACR,CACF,CACF,CACD,QAAS,CACP,eAAgB,CACd,KAAM,CACJ,aAAc,EACd,UACE,oEACH,CACF,CACF,CACD,SAAU,CACR,eAAgB,CACd,KAAM,CACJ,gBAAiB,OAClB,CACF,CACF,CACD,WAAY,CACV,eAAgB,CACd,QAAS,CACP,SAAU,UACX,CACF,CACF,CAED,cAAe,CACb,eAAgB,CACd,KAAM,CACJ,aAAc,EACf,CACD,UAAW,CACT,QAAS,EACV,CACD,WAAY,CACV,QAAS,EACV,CACD,UAAW,CACT,QAAS,GACV,CACF,CACF,CAED,aAAc,CACZ,aAAc,CACZ,QAAS,WACT,KAAM,QACP,CACD,eAAgB,CACd,KAAM,CACJ,2BAA4B,CAC1B,aAAc,EACf,CACF,CACF,CACF,CAED,iBAAkB,CAChB,eAAgB,CACd,KAAM,CACJ,aAAc,EACd,2CAA4C,CAC1C,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"}
|