@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
|
@@ -0,0 +1,1607 @@
|
|
|
1
|
+
|
|
2
|
+
import { Gt as RowObjectType, on as NodeData } from "./instanceInfo-DNLFhkK8.js";
|
|
3
|
+
import { c as LineageGraphNode, i as LineageGraph } from "./types-DLRfpcrV.js";
|
|
4
|
+
import * as _$react from "react";
|
|
5
|
+
import { CSSProperties, MouseEvent, ReactNode } from "react";
|
|
6
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
7
|
+
import { ColDef, ColGroupDef } from "ag-grid-community";
|
|
8
|
+
import { Edge, EdgeProps } from "@xyflow/react";
|
|
9
|
+
|
|
10
|
+
//#region src/components/lineage/edges/LineageEdge.d.ts
|
|
11
|
+
type EdgeChangeStatus = "added" | "removed" | "modified" | "unchanged";
|
|
12
|
+
interface LineageEdgeData extends Record<string, unknown> {
|
|
13
|
+
/** Change status for diff visualization */
|
|
14
|
+
changeStatus?: EdgeChangeStatus;
|
|
15
|
+
/** Whether this edge is highlighted */
|
|
16
|
+
isHighlighted?: boolean;
|
|
17
|
+
/** Label to display on edge */
|
|
18
|
+
label?: string;
|
|
19
|
+
}
|
|
20
|
+
type LineageEdgeType = Edge<LineageEdgeData>;
|
|
21
|
+
type LineageEdgeProps = EdgeProps<LineageEdgeType>;
|
|
22
|
+
declare function LineageEdgeComponent({
|
|
23
|
+
id,
|
|
24
|
+
sourceX,
|
|
25
|
+
sourceY,
|
|
26
|
+
targetX,
|
|
27
|
+
targetY,
|
|
28
|
+
sourcePosition,
|
|
29
|
+
targetPosition,
|
|
30
|
+
data,
|
|
31
|
+
selected
|
|
32
|
+
}: LineageEdgeProps): _$react_jsx_runtime0.JSX.Element;
|
|
33
|
+
declare const LineageEdge: _$react.MemoExoticComponent<typeof LineageEdgeComponent>;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/components/lineage/nodes/LineageNode.d.ts
|
|
36
|
+
/**
|
|
37
|
+
* Change status for node visualization
|
|
38
|
+
*/
|
|
39
|
+
type NodeChangeStatus = "added" | "removed" | "modified" | "unchanged";
|
|
40
|
+
/**
|
|
41
|
+
* Selection mode for the node
|
|
42
|
+
*/
|
|
43
|
+
type SelectMode = "normal" | "selecting" | "action_result";
|
|
44
|
+
/**
|
|
45
|
+
* Change category from column-level lineage analysis
|
|
46
|
+
*/
|
|
47
|
+
type ChangeCategory = "breaking" | "non_breaking" | "partial_breaking" | "unknown";
|
|
48
|
+
/**
|
|
49
|
+
* Data structure for lineage node
|
|
50
|
+
*/
|
|
51
|
+
interface LineageNodeData extends Record<string, unknown> {
|
|
52
|
+
/** Display label for the node */
|
|
53
|
+
label: string;
|
|
54
|
+
/** Node type (model, source, seed, etc.) */
|
|
55
|
+
nodeType?: string;
|
|
56
|
+
/** Change status for diff visualization */
|
|
57
|
+
changeStatus?: NodeChangeStatus;
|
|
58
|
+
/** Whether this node is currently selected */
|
|
59
|
+
isSelected?: boolean;
|
|
60
|
+
/** Resource type for icon display */
|
|
61
|
+
resourceType?: string;
|
|
62
|
+
/** Materialization strategy (table, view, incremental, etc.) */
|
|
63
|
+
materialized?: string;
|
|
64
|
+
/** Package name */
|
|
65
|
+
packageName?: string;
|
|
66
|
+
/** Whether to show column-level details */
|
|
67
|
+
showColumns?: boolean;
|
|
68
|
+
/** Column data if showing columns */
|
|
69
|
+
columns?: Array<{
|
|
70
|
+
name: string;
|
|
71
|
+
type?: string;
|
|
72
|
+
changeStatus?: NodeChangeStatus;
|
|
73
|
+
}>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Props for LineageNode component
|
|
77
|
+
*/
|
|
78
|
+
interface LineageNodeProps {
|
|
79
|
+
/** Node ID */
|
|
80
|
+
id: string;
|
|
81
|
+
/** Node data */
|
|
82
|
+
data: LineageNodeData;
|
|
83
|
+
/** Whether the node is selected (from React Flow) */
|
|
84
|
+
selected?: boolean;
|
|
85
|
+
/** Enable interactive mode with checkbox */
|
|
86
|
+
interactive?: boolean;
|
|
87
|
+
/** Selection mode */
|
|
88
|
+
selectMode?: SelectMode;
|
|
89
|
+
/** Whether the node is selected (checkbox state) */
|
|
90
|
+
isNodeSelected?: boolean;
|
|
91
|
+
/** Whether the node is focused */
|
|
92
|
+
isFocused?: boolean;
|
|
93
|
+
/** Whether the node is highlighted */
|
|
94
|
+
isHighlighted?: boolean;
|
|
95
|
+
/** Whether to show content (zoom level visibility) */
|
|
96
|
+
showContent?: boolean;
|
|
97
|
+
/** Action tag to display (for action_result mode) */
|
|
98
|
+
actionTag?: ReactNode;
|
|
99
|
+
/** Whether to show change analysis mode */
|
|
100
|
+
showChangeAnalysis?: boolean;
|
|
101
|
+
/** Change category text */
|
|
102
|
+
changeCategory?: ChangeCategory;
|
|
103
|
+
/** Runs aggregated display component */
|
|
104
|
+
runsAggregatedTag?: ReactNode;
|
|
105
|
+
/** Whether node has parent nodes (show left handle) */
|
|
106
|
+
hasParents?: boolean;
|
|
107
|
+
/** Whether node has child nodes (show right handle) */
|
|
108
|
+
hasChildren?: boolean;
|
|
109
|
+
/** Number of columns for column container height */
|
|
110
|
+
columnCount?: number;
|
|
111
|
+
/** Height per column in pixels */
|
|
112
|
+
columnHeight?: number;
|
|
113
|
+
/** Whether dark mode is active */
|
|
114
|
+
isDark?: boolean;
|
|
115
|
+
/** Callback when node is clicked */
|
|
116
|
+
onNodeClick?: (nodeId: string) => void;
|
|
117
|
+
/** Callback when node is double-clicked */
|
|
118
|
+
onNodeDoubleClick?: (nodeId: string) => void;
|
|
119
|
+
/** Callback when checkbox is clicked */
|
|
120
|
+
onSelect?: (nodeId: string) => void;
|
|
121
|
+
/** Callback when context menu is requested */
|
|
122
|
+
onContextMenu?: (event: MouseEvent, nodeId: string) => void;
|
|
123
|
+
/** Callback when impact radius button is clicked */
|
|
124
|
+
onShowImpactRadius?: (nodeId: string) => void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* LineageNode - Pure presentation component for displaying nodes in a lineage graph
|
|
128
|
+
*
|
|
129
|
+
* This component is designed to be used with @xyflow/react and receives all data via props.
|
|
130
|
+
* It does not perform any data fetching or state management - it is purely presentational.
|
|
131
|
+
*
|
|
132
|
+
* @example Basic usage
|
|
133
|
+
* ```tsx
|
|
134
|
+
* <LineageNode
|
|
135
|
+
* id="model.my_model"
|
|
136
|
+
* data={{
|
|
137
|
+
* label: "my_model",
|
|
138
|
+
* nodeType: "model",
|
|
139
|
+
* changeStatus: "modified",
|
|
140
|
+
* resourceType: "model"
|
|
141
|
+
* }}
|
|
142
|
+
* selected={false}
|
|
143
|
+
* onNodeClick={(nodeId) => console.log("Clicked:", nodeId)}
|
|
144
|
+
* />
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @example Interactive mode with selection
|
|
148
|
+
* ```tsx
|
|
149
|
+
* <LineageNode
|
|
150
|
+
* id="model.my_model"
|
|
151
|
+
* data={{ label: "my_model", changeStatus: "added" }}
|
|
152
|
+
* interactive
|
|
153
|
+
* selectMode="selecting"
|
|
154
|
+
* isNodeSelected={selectedNodes.has("model.my_model")}
|
|
155
|
+
* onSelect={(nodeId) => toggleSelection(nodeId)}
|
|
156
|
+
* />
|
|
157
|
+
* ```
|
|
158
|
+
*
|
|
159
|
+
* @example Action result mode
|
|
160
|
+
* ```tsx
|
|
161
|
+
* <LineageNode
|
|
162
|
+
* id="model.my_model"
|
|
163
|
+
* data={{ label: "my_model", changeStatus: "modified" }}
|
|
164
|
+
* selectMode="action_result"
|
|
165
|
+
* actionTag={<ActionTag status="running" progress={{ percentage: 0.5 }} />}
|
|
166
|
+
* />
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
declare function LineageNodeComponent({
|
|
170
|
+
id,
|
|
171
|
+
data,
|
|
172
|
+
selected,
|
|
173
|
+
interactive,
|
|
174
|
+
selectMode,
|
|
175
|
+
isNodeSelected,
|
|
176
|
+
isFocused,
|
|
177
|
+
isHighlighted,
|
|
178
|
+
showContent,
|
|
179
|
+
actionTag,
|
|
180
|
+
showChangeAnalysis,
|
|
181
|
+
changeCategory,
|
|
182
|
+
runsAggregatedTag,
|
|
183
|
+
hasParents,
|
|
184
|
+
hasChildren,
|
|
185
|
+
columnCount,
|
|
186
|
+
columnHeight,
|
|
187
|
+
isDark,
|
|
188
|
+
onNodeClick,
|
|
189
|
+
onNodeDoubleClick,
|
|
190
|
+
onSelect,
|
|
191
|
+
onContextMenu,
|
|
192
|
+
onShowImpactRadius
|
|
193
|
+
}: LineageNodeProps): _$react_jsx_runtime0.JSX.Element;
|
|
194
|
+
declare const LineageNode: _$react.MemoExoticComponent<typeof LineageNodeComponent>;
|
|
195
|
+
//#endregion
|
|
196
|
+
//#region src/components/check/CheckActions.d.ts
|
|
197
|
+
/**
|
|
198
|
+
* Action types available for checks
|
|
199
|
+
*/
|
|
200
|
+
type CheckActionType = "run" | "approve" | "edit" | "delete" | "duplicate" | "copy" | "preset";
|
|
201
|
+
/**
|
|
202
|
+
* Configuration for a check action
|
|
203
|
+
*/
|
|
204
|
+
interface CheckAction {
|
|
205
|
+
/** Action type identifier */
|
|
206
|
+
type: CheckActionType;
|
|
207
|
+
/** Display label */
|
|
208
|
+
label: string;
|
|
209
|
+
/** Icon element (optional) */
|
|
210
|
+
icon?: React.ReactNode;
|
|
211
|
+
/** Whether the action is disabled */
|
|
212
|
+
disabled?: boolean;
|
|
213
|
+
/** Tooltip for disabled state */
|
|
214
|
+
disabledTooltip?: string;
|
|
215
|
+
/** Whether this is a destructive action (shown in red) */
|
|
216
|
+
destructive?: boolean;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Props for the CheckActions component
|
|
220
|
+
*/
|
|
221
|
+
interface CheckActionsProps {
|
|
222
|
+
/** ID of the check these actions are for */
|
|
223
|
+
checkId: string;
|
|
224
|
+
/** List of primary actions (shown as buttons) */
|
|
225
|
+
primaryActions?: CheckAction[];
|
|
226
|
+
/** List of secondary actions (shown in dropdown menu) */
|
|
227
|
+
secondaryActions?: CheckAction[];
|
|
228
|
+
/** Callback when an action is triggered */
|
|
229
|
+
onAction?: (checkId: string, actionType: CheckActionType) => void;
|
|
230
|
+
/** Render variant */
|
|
231
|
+
variant?: "buttons" | "menu" | "combined";
|
|
232
|
+
/** Size of buttons */
|
|
233
|
+
size?: "small" | "medium";
|
|
234
|
+
/** Icon for menu trigger button */
|
|
235
|
+
menuIcon?: React.ReactNode;
|
|
236
|
+
/** Optional CSS class name */
|
|
237
|
+
className?: string;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* CheckActions Component
|
|
241
|
+
*
|
|
242
|
+
* A pure presentation component for displaying action buttons/menu for a check.
|
|
243
|
+
* Supports primary actions as buttons and secondary actions in a dropdown menu.
|
|
244
|
+
*
|
|
245
|
+
* @example Basic usage with buttons
|
|
246
|
+
* ```tsx
|
|
247
|
+
* import { CheckActions } from '@datarecce/ui/primitives';
|
|
248
|
+
*
|
|
249
|
+
* <CheckActions
|
|
250
|
+
* checkId={check.id}
|
|
251
|
+
* primaryActions={[
|
|
252
|
+
* { type: 'run', label: 'Run' },
|
|
253
|
+
* { type: 'approve', label: 'Approve' },
|
|
254
|
+
* ]}
|
|
255
|
+
* onAction={(id, action) => handleAction(id, action)}
|
|
256
|
+
* />
|
|
257
|
+
* ```
|
|
258
|
+
*
|
|
259
|
+
* @example Combined buttons and menu
|
|
260
|
+
* ```tsx
|
|
261
|
+
* <CheckActions
|
|
262
|
+
* checkId={check.id}
|
|
263
|
+
* variant="combined"
|
|
264
|
+
* primaryActions={[
|
|
265
|
+
* { type: 'run', label: 'Run', icon: <PlayIcon /> },
|
|
266
|
+
* ]}
|
|
267
|
+
* secondaryActions={[
|
|
268
|
+
* { type: 'duplicate', label: 'Duplicate' },
|
|
269
|
+
* { type: 'copy', label: 'Copy Markdown' },
|
|
270
|
+
* { type: 'delete', label: 'Delete', destructive: true },
|
|
271
|
+
* ]}
|
|
272
|
+
* onAction={(id, action) => handleAction(id, action)}
|
|
273
|
+
* />
|
|
274
|
+
* ```
|
|
275
|
+
*
|
|
276
|
+
* @example Menu only
|
|
277
|
+
* ```tsx
|
|
278
|
+
* <CheckActions
|
|
279
|
+
* checkId={check.id}
|
|
280
|
+
* variant="menu"
|
|
281
|
+
* secondaryActions={allActions}
|
|
282
|
+
* onAction={(id, action) => handleAction(id, action)}
|
|
283
|
+
* />
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
declare function CheckActionsComponent({
|
|
287
|
+
checkId,
|
|
288
|
+
primaryActions,
|
|
289
|
+
secondaryActions,
|
|
290
|
+
onAction,
|
|
291
|
+
variant,
|
|
292
|
+
size,
|
|
293
|
+
menuIcon,
|
|
294
|
+
className
|
|
295
|
+
}: CheckActionsProps): _$react_jsx_runtime0.JSX.Element;
|
|
296
|
+
declare const CheckActions: _$react.MemoExoticComponent<typeof CheckActionsComponent>;
|
|
297
|
+
//#endregion
|
|
298
|
+
//#region src/components/check/CheckCard.d.ts
|
|
299
|
+
/**
|
|
300
|
+
* Check type categories for icon display
|
|
301
|
+
*/
|
|
302
|
+
type CheckType = "query" | "query_base" | "query_diff" | "schema_diff" | "lineage_diff" | "profile" | "profile_diff" | "row_count" | "row_count_diff" | "value_diff" | "histogram_diff" | "top_k_diff" | "simple";
|
|
303
|
+
/**
|
|
304
|
+
* Status of a check run
|
|
305
|
+
*/
|
|
306
|
+
type CheckRunStatus = "pending" | "running" | "success" | "error";
|
|
307
|
+
/**
|
|
308
|
+
* Data structure for check display
|
|
309
|
+
*/
|
|
310
|
+
interface CheckCardData {
|
|
311
|
+
/** Unique check identifier */
|
|
312
|
+
id: string;
|
|
313
|
+
/** Display name of the check */
|
|
314
|
+
name: string;
|
|
315
|
+
/** Type of check for icon display */
|
|
316
|
+
type: CheckType;
|
|
317
|
+
/** Whether the check is approved */
|
|
318
|
+
isApproved?: boolean;
|
|
319
|
+
/** Run status of the check */
|
|
320
|
+
runStatus?: CheckRunStatus;
|
|
321
|
+
/** Whether the check is a preset */
|
|
322
|
+
isPreset?: boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Whether the check result is outdated because the dbt project/manifest
|
|
325
|
+
* (code or artifacts) has changed since the last run.
|
|
326
|
+
*/
|
|
327
|
+
isOutdated?: boolean;
|
|
328
|
+
/**
|
|
329
|
+
* ISO timestamp of the last check run used to determine staleness when the
|
|
330
|
+
* dbt manifest or related artifacts are regenerated (shown in outdated tooltip).
|
|
331
|
+
*/
|
|
332
|
+
lastRunAt?: string;
|
|
333
|
+
/** Who created this check: "recce_ai" | "user" | "preset_system" */
|
|
334
|
+
actorType?: string;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Props for the CheckCard component
|
|
338
|
+
*/
|
|
339
|
+
interface CheckCardProps {
|
|
340
|
+
/** Check data to display */
|
|
341
|
+
check: CheckCardData;
|
|
342
|
+
/** Whether this card is currently selected */
|
|
343
|
+
isSelected?: boolean;
|
|
344
|
+
/** Callback when card is clicked */
|
|
345
|
+
onClick?: (checkId: string) => void;
|
|
346
|
+
/** Callback when approval checkbox is toggled */
|
|
347
|
+
onApprovalChange?: (checkId: string, isApproved: boolean) => void;
|
|
348
|
+
/** Whether approval checkbox is disabled */
|
|
349
|
+
disableApproval?: boolean;
|
|
350
|
+
/** Tooltip text for disabled approval */
|
|
351
|
+
disabledApprovalTooltip?: string;
|
|
352
|
+
/** Whether the entire card is disabled */
|
|
353
|
+
disabled?: boolean;
|
|
354
|
+
/** Optional CSS class name */
|
|
355
|
+
className?: string;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* CheckCard Component
|
|
359
|
+
*
|
|
360
|
+
* A pure presentation component for displaying a single check in a list.
|
|
361
|
+
* Shows check type icon, name, approval status, and run status.
|
|
362
|
+
*
|
|
363
|
+
* @example Basic usage
|
|
364
|
+
* ```tsx
|
|
365
|
+
* import { CheckCard } from '@datarecce/ui/primitives';
|
|
366
|
+
*
|
|
367
|
+
* function CheckListItem({ check }) {
|
|
368
|
+
* return (
|
|
369
|
+
* <CheckCard
|
|
370
|
+
* check={{
|
|
371
|
+
* id: check.check_id,
|
|
372
|
+
* name: check.name,
|
|
373
|
+
* type: check.type,
|
|
374
|
+
* isApproved: check.is_checked,
|
|
375
|
+
* }}
|
|
376
|
+
* isSelected={selectedId === check.check_id}
|
|
377
|
+
* onClick={(id) => setSelectedId(id)}
|
|
378
|
+
* onApprovalChange={(id, approved) => updateCheck(id, { is_checked: approved })}
|
|
379
|
+
* />
|
|
380
|
+
* );
|
|
381
|
+
* }
|
|
382
|
+
* ```
|
|
383
|
+
*
|
|
384
|
+
* @example Disabled state
|
|
385
|
+
* ```tsx
|
|
386
|
+
* <CheckCard
|
|
387
|
+
* check={check}
|
|
388
|
+
* disableApproval
|
|
389
|
+
* disabledApprovalTooltip="Run the check first to enable approval"
|
|
390
|
+
* />
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
declare function CheckCardComponent({
|
|
394
|
+
check,
|
|
395
|
+
isSelected,
|
|
396
|
+
onClick,
|
|
397
|
+
onApprovalChange,
|
|
398
|
+
disableApproval,
|
|
399
|
+
disabledApprovalTooltip,
|
|
400
|
+
disabled,
|
|
401
|
+
className
|
|
402
|
+
}: CheckCardProps): _$react_jsx_runtime0.JSX.Element;
|
|
403
|
+
declare const CheckCard: _$react.MemoExoticComponent<typeof CheckCardComponent>;
|
|
404
|
+
//#endregion
|
|
405
|
+
//#region src/components/check/CheckDescription.d.ts
|
|
406
|
+
/**
|
|
407
|
+
* Props for the CheckDescription component
|
|
408
|
+
*/
|
|
409
|
+
interface CheckDescriptionProps {
|
|
410
|
+
/** Current description value */
|
|
411
|
+
value?: string;
|
|
412
|
+
/** Callback when description is saved */
|
|
413
|
+
onChange?: (value?: string) => void;
|
|
414
|
+
/** Placeholder text when empty */
|
|
415
|
+
placeholder?: string;
|
|
416
|
+
/** Whether editing is disabled */
|
|
417
|
+
disabled?: boolean;
|
|
418
|
+
/** Optional CSS class name */
|
|
419
|
+
className?: string;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* CheckDescription Component
|
|
423
|
+
*
|
|
424
|
+
* A pure presentation component for displaying and editing check descriptions.
|
|
425
|
+
* Supports click-to-edit with Cmd+Enter (Mac) or Ctrl+Enter (Windows) to save.
|
|
426
|
+
*
|
|
427
|
+
* @example Basic usage
|
|
428
|
+
* ```tsx
|
|
429
|
+
* import { CheckDescription } from '@datarecce/ui/primitives';
|
|
430
|
+
*
|
|
431
|
+
* function CheckDetail({ check }) {
|
|
432
|
+
* return (
|
|
433
|
+
* <CheckDescription
|
|
434
|
+
* value={check.description}
|
|
435
|
+
* onChange={(desc) => updateCheck(check.id, { description: desc })}
|
|
436
|
+
* placeholder="Add a description..."
|
|
437
|
+
* />
|
|
438
|
+
* );
|
|
439
|
+
* }
|
|
440
|
+
* ```
|
|
441
|
+
*
|
|
442
|
+
* @example Disabled state
|
|
443
|
+
* ```tsx
|
|
444
|
+
* <CheckDescription
|
|
445
|
+
* value={check.description}
|
|
446
|
+
* disabled
|
|
447
|
+
* placeholder="Description not available"
|
|
448
|
+
* />
|
|
449
|
+
* ```
|
|
450
|
+
*/
|
|
451
|
+
declare function CheckDescriptionComponent({
|
|
452
|
+
value,
|
|
453
|
+
onChange,
|
|
454
|
+
placeholder,
|
|
455
|
+
disabled,
|
|
456
|
+
className
|
|
457
|
+
}: CheckDescriptionProps): _$react_jsx_runtime0.JSX.Element;
|
|
458
|
+
declare const CheckDescription: _$react.MemoExoticComponent<typeof CheckDescriptionComponent>;
|
|
459
|
+
//#endregion
|
|
460
|
+
//#region src/components/check/CheckDetail.d.ts
|
|
461
|
+
/**
|
|
462
|
+
* Tab configuration for CheckDetail
|
|
463
|
+
*/
|
|
464
|
+
interface CheckDetailTab {
|
|
465
|
+
/** Unique tab identifier */
|
|
466
|
+
id: string;
|
|
467
|
+
/** Tab label */
|
|
468
|
+
label: string;
|
|
469
|
+
/** Tab content */
|
|
470
|
+
content: ReactNode;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Props for the CheckDetail component
|
|
474
|
+
*/
|
|
475
|
+
interface CheckDetailProps {
|
|
476
|
+
/** Check ID */
|
|
477
|
+
checkId: string;
|
|
478
|
+
/** Check name (displayed as header) */
|
|
479
|
+
name: string;
|
|
480
|
+
/** Check type for display */
|
|
481
|
+
type: string;
|
|
482
|
+
/** Check description */
|
|
483
|
+
description?: string;
|
|
484
|
+
/** Whether the check is approved */
|
|
485
|
+
isApproved?: boolean;
|
|
486
|
+
/** Tabs to display (result, query, etc.) */
|
|
487
|
+
tabs?: CheckDetailTab[];
|
|
488
|
+
/** Default selected tab ID */
|
|
489
|
+
defaultTab?: string;
|
|
490
|
+
/** Primary actions for the check */
|
|
491
|
+
primaryActions?: CheckAction[];
|
|
492
|
+
/** Secondary actions for the check */
|
|
493
|
+
secondaryActions?: CheckAction[];
|
|
494
|
+
/** Callback when an action is triggered */
|
|
495
|
+
onAction?: (checkId: string, actionType: CheckActionType) => void;
|
|
496
|
+
/** Callback when description changes */
|
|
497
|
+
onDescriptionChange?: (description?: string) => void;
|
|
498
|
+
/** Callback when name changes */
|
|
499
|
+
onNameChange?: (name: string) => void;
|
|
500
|
+
/** Whether editing is disabled */
|
|
501
|
+
disabled?: boolean;
|
|
502
|
+
/** Optional header content (breadcrumbs, etc.) */
|
|
503
|
+
headerContent?: ReactNode;
|
|
504
|
+
/** Optional sidebar content */
|
|
505
|
+
sidebarContent?: ReactNode;
|
|
506
|
+
/** Optional CSS class name */
|
|
507
|
+
className?: string;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* CheckDetail Component
|
|
511
|
+
*
|
|
512
|
+
* A pure presentation component for displaying detailed information
|
|
513
|
+
* about a single check with tabs, actions, and editable fields.
|
|
514
|
+
*
|
|
515
|
+
* @example Basic usage
|
|
516
|
+
* ```tsx
|
|
517
|
+
* import { CheckDetail } from '@datarecce/ui/primitives';
|
|
518
|
+
*
|
|
519
|
+
* function CheckPage({ check, run }) {
|
|
520
|
+
* return (
|
|
521
|
+
* <CheckDetail
|
|
522
|
+
* checkId={check.id}
|
|
523
|
+
* name={check.name}
|
|
524
|
+
* type={check.type}
|
|
525
|
+
* description={check.description}
|
|
526
|
+
* isApproved={check.is_checked}
|
|
527
|
+
* tabs={[
|
|
528
|
+
* { id: 'result', label: 'Result', content: <ResultView run={run} /> },
|
|
529
|
+
* { id: 'query', label: 'Query', content: <QueryView sql={check.params.sql} /> },
|
|
530
|
+
* ]}
|
|
531
|
+
* primaryActions={[
|
|
532
|
+
* { type: 'run', label: 'Run' },
|
|
533
|
+
* { type: 'approve', label: check.is_checked ? 'Approved' : 'Pending' },
|
|
534
|
+
* ]}
|
|
535
|
+
* secondaryActions={[
|
|
536
|
+
* { type: 'delete', label: 'Delete', destructive: true },
|
|
537
|
+
* ]}
|
|
538
|
+
* onAction={(id, action) => handleAction(id, action)}
|
|
539
|
+
* onDescriptionChange={(desc) => updateCheck(id, { description: desc })}
|
|
540
|
+
* />
|
|
541
|
+
* );
|
|
542
|
+
* }
|
|
543
|
+
* ```
|
|
544
|
+
*
|
|
545
|
+
* @example With sidebar
|
|
546
|
+
* ```tsx
|
|
547
|
+
* <CheckDetail
|
|
548
|
+
* {...props}
|
|
549
|
+
* sidebarContent={<CheckTimeline checkId={check.id} />}
|
|
550
|
+
* />
|
|
551
|
+
* ```
|
|
552
|
+
*/
|
|
553
|
+
declare function CheckDetailComponent({
|
|
554
|
+
checkId,
|
|
555
|
+
name,
|
|
556
|
+
type,
|
|
557
|
+
description,
|
|
558
|
+
isApproved,
|
|
559
|
+
tabs,
|
|
560
|
+
defaultTab,
|
|
561
|
+
primaryActions,
|
|
562
|
+
secondaryActions,
|
|
563
|
+
onAction,
|
|
564
|
+
onDescriptionChange,
|
|
565
|
+
onNameChange,
|
|
566
|
+
disabled,
|
|
567
|
+
headerContent,
|
|
568
|
+
sidebarContent,
|
|
569
|
+
className
|
|
570
|
+
}: CheckDetailProps): _$react_jsx_runtime0.JSX.Element;
|
|
571
|
+
declare const CheckDetail: _$react.MemoExoticComponent<typeof CheckDetailComponent>;
|
|
572
|
+
//#endregion
|
|
573
|
+
//#region src/components/check/CheckEmptyState.d.ts
|
|
574
|
+
/**
|
|
575
|
+
* Props for the CheckEmptyState component
|
|
576
|
+
*/
|
|
577
|
+
interface CheckEmptyStateProps {
|
|
578
|
+
/** Main title text */
|
|
579
|
+
title?: string;
|
|
580
|
+
/** Description text */
|
|
581
|
+
description?: string;
|
|
582
|
+
/** Icon element to display */
|
|
583
|
+
icon?: ReactNode;
|
|
584
|
+
/** Primary action button text */
|
|
585
|
+
actionText?: string;
|
|
586
|
+
/** Callback when primary action is clicked */
|
|
587
|
+
onAction?: () => void;
|
|
588
|
+
/** Whether the action is loading */
|
|
589
|
+
isLoading?: boolean;
|
|
590
|
+
/** Optional helper text below the action */
|
|
591
|
+
helperText?: string;
|
|
592
|
+
/** Optional CSS class name */
|
|
593
|
+
className?: string;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* CheckEmptyState Component
|
|
597
|
+
*
|
|
598
|
+
* A pure presentation component for displaying an empty state
|
|
599
|
+
* when no checks exist in the list.
|
|
600
|
+
*
|
|
601
|
+
* @example Basic usage
|
|
602
|
+
* ```tsx
|
|
603
|
+
* import { CheckEmptyState } from '@datarecce/ui/primitives';
|
|
604
|
+
*
|
|
605
|
+
* function MyCheckList() {
|
|
606
|
+
* if (checks.length === 0) {
|
|
607
|
+
* return (
|
|
608
|
+
* <CheckEmptyState
|
|
609
|
+
* title="No checks yet"
|
|
610
|
+
* description="Create your first check to start validating data"
|
|
611
|
+
* actionText="Create Schema Diff Check"
|
|
612
|
+
* onAction={() => createSchemaDiffCheck()}
|
|
613
|
+
* />
|
|
614
|
+
* );
|
|
615
|
+
* }
|
|
616
|
+
* return <CheckList checks={checks} />;
|
|
617
|
+
* }
|
|
618
|
+
* ```
|
|
619
|
+
*
|
|
620
|
+
* @example Custom icon
|
|
621
|
+
* ```tsx
|
|
622
|
+
* import { TbChecklist } from 'react-icons/tb';
|
|
623
|
+
*
|
|
624
|
+
* <CheckEmptyState
|
|
625
|
+
* icon={<TbChecklist size={48} />}
|
|
626
|
+
* title="No checks found"
|
|
627
|
+
* description="Checks help you validate your data changes"
|
|
628
|
+
* />
|
|
629
|
+
* ```
|
|
630
|
+
*/
|
|
631
|
+
declare function CheckEmptyStateComponent({
|
|
632
|
+
title,
|
|
633
|
+
description,
|
|
634
|
+
icon,
|
|
635
|
+
actionText,
|
|
636
|
+
onAction,
|
|
637
|
+
isLoading,
|
|
638
|
+
helperText,
|
|
639
|
+
className
|
|
640
|
+
}: CheckEmptyStateProps): _$react_jsx_runtime0.JSX.Element;
|
|
641
|
+
declare const CheckEmptyState: _$react.MemoExoticComponent<typeof CheckEmptyStateComponent>;
|
|
642
|
+
//#endregion
|
|
643
|
+
//#region src/components/check/CheckList.d.ts
|
|
644
|
+
/**
|
|
645
|
+
* Props for the CheckList component
|
|
646
|
+
*/
|
|
647
|
+
interface CheckListProps {
|
|
648
|
+
/** Array of checks to display */
|
|
649
|
+
checks: CheckCardData[];
|
|
650
|
+
/** Currently selected check ID */
|
|
651
|
+
selectedId?: string | null;
|
|
652
|
+
/** Callback when a check is selected */
|
|
653
|
+
onCheckSelect?: (checkId: string) => void;
|
|
654
|
+
/** Callback when check approval status changes */
|
|
655
|
+
onApprovalChange?: (checkId: string, isApproved: boolean) => void;
|
|
656
|
+
/** Callback when checks are reordered (for drag-drop implementations) */
|
|
657
|
+
onReorder?: (sourceIndex: number, destinationIndex: number) => void;
|
|
658
|
+
/** Whether approval is disabled for all checks */
|
|
659
|
+
disableApproval?: boolean;
|
|
660
|
+
/** Tooltip for disabled approval */
|
|
661
|
+
disabledApprovalTooltip?: string;
|
|
662
|
+
/** Optional title for the list */
|
|
663
|
+
title?: string;
|
|
664
|
+
/** Optional CSS class name */
|
|
665
|
+
className?: string;
|
|
666
|
+
/** Whether the list is loading */
|
|
667
|
+
isLoading?: boolean;
|
|
668
|
+
/** Content to show when list is empty */
|
|
669
|
+
emptyContent?: React.ReactNode;
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* CheckList Component
|
|
673
|
+
*
|
|
674
|
+
* A pure presentation component for displaying a list of checks.
|
|
675
|
+
* This component does not include drag-and-drop functionality -
|
|
676
|
+
* implement that at the consumer level if needed.
|
|
677
|
+
*
|
|
678
|
+
* @example Basic usage
|
|
679
|
+
* ```tsx
|
|
680
|
+
* import { CheckList } from '@datarecce/ui/primitives';
|
|
681
|
+
*
|
|
682
|
+
* function MyCheckList({ checks }) {
|
|
683
|
+
* const [selectedId, setSelectedId] = useState(null);
|
|
684
|
+
*
|
|
685
|
+
* return (
|
|
686
|
+
* <CheckList
|
|
687
|
+
* checks={checks.map(c => ({
|
|
688
|
+
* id: c.check_id,
|
|
689
|
+
* name: c.name,
|
|
690
|
+
* type: c.type,
|
|
691
|
+
* isApproved: c.is_checked,
|
|
692
|
+
* }))}
|
|
693
|
+
* selectedId={selectedId}
|
|
694
|
+
* onCheckSelect={setSelectedId}
|
|
695
|
+
* onApprovalChange={(id, approved) => updateCheck(id, approved)}
|
|
696
|
+
* />
|
|
697
|
+
* );
|
|
698
|
+
* }
|
|
699
|
+
* ```
|
|
700
|
+
*
|
|
701
|
+
* @example With empty state
|
|
702
|
+
* ```tsx
|
|
703
|
+
* <CheckList
|
|
704
|
+
* checks={[]}
|
|
705
|
+
* emptyContent={<CheckEmptyState onCreateFirst={() => createCheck()} />}
|
|
706
|
+
* />
|
|
707
|
+
* ```
|
|
708
|
+
*/
|
|
709
|
+
declare function CheckListComponent({
|
|
710
|
+
checks,
|
|
711
|
+
selectedId,
|
|
712
|
+
onCheckSelect,
|
|
713
|
+
onApprovalChange,
|
|
714
|
+
disableApproval,
|
|
715
|
+
disabledApprovalTooltip,
|
|
716
|
+
title,
|
|
717
|
+
className,
|
|
718
|
+
isLoading,
|
|
719
|
+
emptyContent
|
|
720
|
+
}: CheckListProps): _$react_jsx_runtime0.JSX.Element;
|
|
721
|
+
declare const CheckList: _$react.MemoExoticComponent<typeof CheckListComponent>;
|
|
722
|
+
//#endregion
|
|
723
|
+
//#region src/components/lineage/LineageView.d.ts
|
|
724
|
+
/**
|
|
725
|
+
* Props for the LineageView component.
|
|
726
|
+
* Defines options for viewing lineage diff data.
|
|
727
|
+
*/
|
|
728
|
+
interface LineageViewProps {
|
|
729
|
+
/**
|
|
730
|
+
* Optional lineage graph data. If not provided, uses LineageGraphContext.
|
|
731
|
+
*/
|
|
732
|
+
lineageGraph?: LineageGraph;
|
|
733
|
+
/**
|
|
734
|
+
* View options for lineage diff visualization
|
|
735
|
+
*/
|
|
736
|
+
viewOptions?: {
|
|
737
|
+
view_mode?: "changed_models" | "all";
|
|
738
|
+
node_ids?: string[];
|
|
739
|
+
select?: string;
|
|
740
|
+
exclude?: string;
|
|
741
|
+
packages?: string[];
|
|
742
|
+
column_level_lineage?: {
|
|
743
|
+
node_id?: string;
|
|
744
|
+
column?: string;
|
|
745
|
+
change_analysis?: boolean;
|
|
746
|
+
};
|
|
747
|
+
};
|
|
748
|
+
/**
|
|
749
|
+
* Whether the view allows user interaction
|
|
750
|
+
* @default true
|
|
751
|
+
*/
|
|
752
|
+
interactive?: boolean;
|
|
753
|
+
/**
|
|
754
|
+
* Optional height for the view
|
|
755
|
+
* @default 600
|
|
756
|
+
*/
|
|
757
|
+
height?: number | string;
|
|
758
|
+
/**
|
|
759
|
+
* Optional filter function for nodes
|
|
760
|
+
*/
|
|
761
|
+
filterNodes?: (key: string, node: LineageGraphNode) => boolean;
|
|
762
|
+
/**
|
|
763
|
+
* Callback when a node is selected
|
|
764
|
+
*/
|
|
765
|
+
onNodeSelect?: (nodeId: string | null) => void;
|
|
766
|
+
/**
|
|
767
|
+
* Callback when a node is double-clicked
|
|
768
|
+
*/
|
|
769
|
+
onNodeDoubleClick?: (nodeId: string) => void;
|
|
770
|
+
/**
|
|
771
|
+
* Optional dagre instance for layout.
|
|
772
|
+
* If not provided, nodes will be positioned at (0,0).
|
|
773
|
+
* Install @dagrejs/dagre and pass the imported module.
|
|
774
|
+
*/
|
|
775
|
+
dagre?: any;
|
|
776
|
+
/**
|
|
777
|
+
* Whether to show the minimap
|
|
778
|
+
* @default true
|
|
779
|
+
*/
|
|
780
|
+
showMiniMap?: boolean;
|
|
781
|
+
/**
|
|
782
|
+
* Whether to show the controls
|
|
783
|
+
* @default true
|
|
784
|
+
*/
|
|
785
|
+
showControls?: boolean;
|
|
786
|
+
/**
|
|
787
|
+
* Whether to show the background grid
|
|
788
|
+
* @default true
|
|
789
|
+
*/
|
|
790
|
+
showBackground?: boolean;
|
|
791
|
+
}
|
|
792
|
+
/**
|
|
793
|
+
* Ref interface for LineageView component.
|
|
794
|
+
* Provides methods to interact with the LineageView programmatically.
|
|
795
|
+
*/
|
|
796
|
+
interface LineageViewRef {
|
|
797
|
+
/**
|
|
798
|
+
* Copies the current lineage view as an image to the clipboard
|
|
799
|
+
*/
|
|
800
|
+
copyToClipboard: () => Promise<void>;
|
|
801
|
+
}
|
|
802
|
+
/**
|
|
803
|
+
* LineageView Component
|
|
804
|
+
*
|
|
805
|
+
* A high-level component for visualizing data lineage graphs using React Flow.
|
|
806
|
+
* Shows relationships between models and their change status.
|
|
807
|
+
*
|
|
808
|
+
* Can receive data from:
|
|
809
|
+
* 1. LineageGraphContext (wrap with LineageGraphProvider)
|
|
810
|
+
* 2. Direct prop (pass lineageGraph prop)
|
|
811
|
+
*
|
|
812
|
+
* For auto-layout, provide a dagre instance:
|
|
813
|
+
*
|
|
814
|
+
* @example Using with context
|
|
815
|
+
* ```tsx
|
|
816
|
+
* import { LineageGraphProvider, LineageView } from '@datarecce/ui';
|
|
817
|
+
* import dagre from '@dagrejs/dagre';
|
|
818
|
+
*
|
|
819
|
+
* function App() {
|
|
820
|
+
* return (
|
|
821
|
+
* <LineageGraphProvider serverInfo={serverInfo}>
|
|
822
|
+
* <LineageView dagre={dagre} />
|
|
823
|
+
* </LineageGraphProvider>
|
|
824
|
+
* );
|
|
825
|
+
* }
|
|
826
|
+
* ```
|
|
827
|
+
*
|
|
828
|
+
* @example Using with direct data
|
|
829
|
+
* ```tsx
|
|
830
|
+
* import { buildLineageGraph, LineageView } from '@datarecce/ui';
|
|
831
|
+
* import dagre from '@dagrejs/dagre';
|
|
832
|
+
*
|
|
833
|
+
* function App({ serverInfo }) {
|
|
834
|
+
* const lineageGraph = buildLineageGraph(
|
|
835
|
+
* serverInfo.lineage.base,
|
|
836
|
+
* serverInfo.lineage.current,
|
|
837
|
+
* serverInfo.lineage.diff
|
|
838
|
+
* );
|
|
839
|
+
*
|
|
840
|
+
* return <LineageView lineageGraph={lineageGraph} dagre={dagre} />;
|
|
841
|
+
* }
|
|
842
|
+
* ```
|
|
843
|
+
*/
|
|
844
|
+
declare const LineageView: _$react.ForwardRefExoticComponent<LineageViewProps & _$react.RefAttributes<LineageViewRef>>;
|
|
845
|
+
//#endregion
|
|
846
|
+
//#region src/components/lineage/columns/LineageColumnNode.d.ts
|
|
847
|
+
/**
|
|
848
|
+
* Transformation type for column-level lineage
|
|
849
|
+
*/
|
|
850
|
+
type ColumnTransformationType = "passthrough" | "renamed" | "derived" | "source" | "unknown";
|
|
851
|
+
/**
|
|
852
|
+
* Column change status for diff views
|
|
853
|
+
*/
|
|
854
|
+
type ColumnChangeStatus = "added" | "removed" | "modified";
|
|
855
|
+
/**
|
|
856
|
+
* Data structure for a column node
|
|
857
|
+
*/
|
|
858
|
+
interface LineageColumnNodeData extends Record<string, unknown> {
|
|
859
|
+
/** Column name */
|
|
860
|
+
column: string;
|
|
861
|
+
/** Column data type (e.g., "VARCHAR", "INTEGER") */
|
|
862
|
+
type?: string;
|
|
863
|
+
/** ID of the parent model/table node */
|
|
864
|
+
nodeId: string;
|
|
865
|
+
/** Transformation type for this column */
|
|
866
|
+
transformationType?: ColumnTransformationType;
|
|
867
|
+
/** Change status for diff views */
|
|
868
|
+
changeStatus?: ColumnChangeStatus;
|
|
869
|
+
/** Whether the column is highlighted */
|
|
870
|
+
isHighlighted?: boolean;
|
|
871
|
+
/** Whether the column is selected/focused */
|
|
872
|
+
isFocused?: boolean;
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* Props for the LineageColumnNode component
|
|
876
|
+
*/
|
|
877
|
+
interface LineageColumnNodeProps {
|
|
878
|
+
/** Unique node ID */
|
|
879
|
+
id: string;
|
|
880
|
+
/** Node data */
|
|
881
|
+
data: LineageColumnNodeData;
|
|
882
|
+
/** Whether the node is selected */
|
|
883
|
+
selected?: boolean;
|
|
884
|
+
/**
|
|
885
|
+
* Whether to show content (used for zoom-level visibility)
|
|
886
|
+
* When false, the node renders nothing (hidden at low zoom levels)
|
|
887
|
+
* @default true
|
|
888
|
+
*/
|
|
889
|
+
showContent?: boolean;
|
|
890
|
+
/**
|
|
891
|
+
* Whether to show change analysis mode
|
|
892
|
+
* When true and changeStatus exists, shows change status indicator
|
|
893
|
+
* When false, shows transformation type indicator
|
|
894
|
+
* @default false
|
|
895
|
+
*/
|
|
896
|
+
showChangeAnalysis?: boolean;
|
|
897
|
+
/**
|
|
898
|
+
* Whether to use dark mode styling
|
|
899
|
+
* @default false
|
|
900
|
+
*/
|
|
901
|
+
isDark?: boolean;
|
|
902
|
+
/** Callback when column is clicked */
|
|
903
|
+
onColumnClick?: (columnId: string) => void;
|
|
904
|
+
/**
|
|
905
|
+
* Callback when context menu is requested (kebab menu click)
|
|
906
|
+
* When provided, shows kebab menu on hover
|
|
907
|
+
*/
|
|
908
|
+
onContextMenu?: (event: MouseEvent, columnId: string) => void;
|
|
909
|
+
}
|
|
910
|
+
/**
|
|
911
|
+
* Default column height in pixels
|
|
912
|
+
*/
|
|
913
|
+
declare const COLUMN_NODE_HEIGHT = 24;
|
|
914
|
+
/**
|
|
915
|
+
* Default column width in pixels
|
|
916
|
+
*/
|
|
917
|
+
declare const COLUMN_NODE_WIDTH = 280;
|
|
918
|
+
/**
|
|
919
|
+
* LineageColumnNode Component
|
|
920
|
+
*
|
|
921
|
+
* A pure presentation component for rendering individual columns
|
|
922
|
+
* in column-level lineage visualizations using React Flow.
|
|
923
|
+
*
|
|
924
|
+
* @example Basic usage
|
|
925
|
+
* ```tsx
|
|
926
|
+
* import { LineageColumnNode } from '@datarecce/ui/primitives';
|
|
927
|
+
*
|
|
928
|
+
* // Register as a React Flow node type
|
|
929
|
+
* const nodeTypes = {
|
|
930
|
+
* columnNode: LineageColumnNode,
|
|
931
|
+
* };
|
|
932
|
+
*
|
|
933
|
+
* function ColumnLineageGraph() {
|
|
934
|
+
* return (
|
|
935
|
+
* <ReactFlow nodes={columnNodes} edges={edges} nodeTypes={nodeTypes} />
|
|
936
|
+
* );
|
|
937
|
+
* }
|
|
938
|
+
* ```
|
|
939
|
+
*
|
|
940
|
+
* @example Node data structure
|
|
941
|
+
* ```tsx
|
|
942
|
+
* const columnNode = {
|
|
943
|
+
* id: 'users-id',
|
|
944
|
+
* type: 'columnNode',
|
|
945
|
+
* data: {
|
|
946
|
+
* column: 'id',
|
|
947
|
+
* type: 'INTEGER',
|
|
948
|
+
* nodeId: 'users',
|
|
949
|
+
* transformationType: 'passthrough',
|
|
950
|
+
* changeStatus: undefined,
|
|
951
|
+
* isHighlighted: true,
|
|
952
|
+
* },
|
|
953
|
+
* position: { x: 0, y: 0 },
|
|
954
|
+
* };
|
|
955
|
+
* ```
|
|
956
|
+
*
|
|
957
|
+
* @example With change analysis mode
|
|
958
|
+
* ```tsx
|
|
959
|
+
* // In change analysis mode, shows change status instead of transformation type
|
|
960
|
+
* <LineageColumnNode
|
|
961
|
+
* showChangeAnalysis={true}
|
|
962
|
+
* showContent={zoomLevel > 0.3}
|
|
963
|
+
* onContextMenu={(e, columnId) => showMenu(e, columnId)}
|
|
964
|
+
* />
|
|
965
|
+
* ```
|
|
966
|
+
*/
|
|
967
|
+
declare function LineageColumnNodeComponent({
|
|
968
|
+
id,
|
|
969
|
+
data,
|
|
970
|
+
showContent,
|
|
971
|
+
showChangeAnalysis,
|
|
972
|
+
isDark,
|
|
973
|
+
onColumnClick,
|
|
974
|
+
onContextMenu
|
|
975
|
+
}: LineageColumnNodeProps): _$react_jsx_runtime0.JSX.Element | null;
|
|
976
|
+
declare const LineageColumnNode: _$react.MemoExoticComponent<typeof LineageColumnNodeComponent>;
|
|
977
|
+
//#endregion
|
|
978
|
+
//#region src/components/lineage/legend/LineageLegend.d.ts
|
|
979
|
+
/**
|
|
980
|
+
* Legend item for change status
|
|
981
|
+
*/
|
|
982
|
+
interface ChangeStatusLegendItem {
|
|
983
|
+
status: "added" | "removed" | "modified";
|
|
984
|
+
label: string;
|
|
985
|
+
description?: string;
|
|
986
|
+
}
|
|
987
|
+
/**
|
|
988
|
+
* Legend item for transformation type
|
|
989
|
+
*/
|
|
990
|
+
interface TransformationLegendItem {
|
|
991
|
+
type: "passthrough" | "renamed" | "derived" | "source" | "unknown";
|
|
992
|
+
label: string;
|
|
993
|
+
description?: string;
|
|
994
|
+
}
|
|
995
|
+
/**
|
|
996
|
+
* Props for the LineageLegend component
|
|
997
|
+
*/
|
|
998
|
+
interface LineageLegendProps {
|
|
999
|
+
/**
|
|
1000
|
+
* Type of legend to display
|
|
1001
|
+
*/
|
|
1002
|
+
variant: "changeStatus" | "transformation";
|
|
1003
|
+
/**
|
|
1004
|
+
* Whether to show tooltips on hover
|
|
1005
|
+
* @default true
|
|
1006
|
+
*/
|
|
1007
|
+
showTooltips?: boolean;
|
|
1008
|
+
/**
|
|
1009
|
+
* Optional title for the legend
|
|
1010
|
+
*/
|
|
1011
|
+
title?: string;
|
|
1012
|
+
/**
|
|
1013
|
+
* CSS class name for additional styling
|
|
1014
|
+
*/
|
|
1015
|
+
className?: string;
|
|
1016
|
+
}
|
|
1017
|
+
/**
|
|
1018
|
+
* LineageLegend Component
|
|
1019
|
+
*
|
|
1020
|
+
* A pure presentation component for displaying legends in lineage visualizations.
|
|
1021
|
+
* Supports both change status legends (added/removed/modified) and
|
|
1022
|
+
* transformation type legends (passthrough/renamed/derived/source/unknown).
|
|
1023
|
+
*
|
|
1024
|
+
* @example Change status legend
|
|
1025
|
+
* ```tsx
|
|
1026
|
+
* import { LineageLegend } from '@datarecce/ui/primitives';
|
|
1027
|
+
*
|
|
1028
|
+
* function MyLineageGraph() {
|
|
1029
|
+
* return (
|
|
1030
|
+
* <div style={{ position: 'relative' }}>
|
|
1031
|
+
* <ReactFlow nodes={nodes} edges={edges} />
|
|
1032
|
+
* <div style={{ position: 'absolute', bottom: 10, right: 10 }}>
|
|
1033
|
+
* <LineageLegend variant="changeStatus" title="Changes" />
|
|
1034
|
+
* </div>
|
|
1035
|
+
* </div>
|
|
1036
|
+
* );
|
|
1037
|
+
* }
|
|
1038
|
+
* ```
|
|
1039
|
+
*
|
|
1040
|
+
* @example Transformation type legend
|
|
1041
|
+
* ```tsx
|
|
1042
|
+
* import { LineageLegend } from '@datarecce/ui/primitives';
|
|
1043
|
+
*
|
|
1044
|
+
* function ColumnLineageGraph() {
|
|
1045
|
+
* return (
|
|
1046
|
+
* <div>
|
|
1047
|
+
* <ReactFlow nodes={columnNodes} edges={edges} />
|
|
1048
|
+
* <LineageLegend variant="transformation" />
|
|
1049
|
+
* </div>
|
|
1050
|
+
* );
|
|
1051
|
+
* }
|
|
1052
|
+
* ```
|
|
1053
|
+
*/
|
|
1054
|
+
declare function LineageLegend({
|
|
1055
|
+
variant,
|
|
1056
|
+
showTooltips,
|
|
1057
|
+
title,
|
|
1058
|
+
className
|
|
1059
|
+
}: LineageLegendProps): _$react_jsx_runtime0.JSX.Element;
|
|
1060
|
+
//#endregion
|
|
1061
|
+
//#region src/components/data/HistogramChart.d.ts
|
|
1062
|
+
/**
|
|
1063
|
+
* Theme-aware colors for charts
|
|
1064
|
+
*/
|
|
1065
|
+
interface ChartThemeColors {
|
|
1066
|
+
gridColor: string;
|
|
1067
|
+
textColor: string;
|
|
1068
|
+
borderColor: string;
|
|
1069
|
+
tooltipBackgroundColor: string;
|
|
1070
|
+
tooltipTextColor: string;
|
|
1071
|
+
/** Text color for labels drawn inside bars (must contrast with pastel bar fills) */
|
|
1072
|
+
barLabelColor: string;
|
|
1073
|
+
/** Subdued text color for secondary labels like percentages */
|
|
1074
|
+
secondaryTextColor: string;
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Bar colors for base/current comparison
|
|
1078
|
+
*/
|
|
1079
|
+
interface ChartBarColors {
|
|
1080
|
+
current: string;
|
|
1081
|
+
base: string;
|
|
1082
|
+
currentWithAlpha: string;
|
|
1083
|
+
baseWithAlpha: string;
|
|
1084
|
+
}
|
|
1085
|
+
/**
|
|
1086
|
+
* Get theme-aware colors for charts
|
|
1087
|
+
*/
|
|
1088
|
+
declare function getChartThemeColors(isDark: boolean): ChartThemeColors;
|
|
1089
|
+
/**
|
|
1090
|
+
* Get theme-aware bar colors
|
|
1091
|
+
*/
|
|
1092
|
+
declare function getChartBarColors(isDark: boolean): ChartBarColors;
|
|
1093
|
+
/**
|
|
1094
|
+
* Histogram dataset for a single environment
|
|
1095
|
+
*/
|
|
1096
|
+
interface HistogramDataset {
|
|
1097
|
+
/** Count values per bin */
|
|
1098
|
+
counts: number[];
|
|
1099
|
+
/** Optional dataset label */
|
|
1100
|
+
label?: string;
|
|
1101
|
+
}
|
|
1102
|
+
/**
|
|
1103
|
+
* Histogram data type
|
|
1104
|
+
*/
|
|
1105
|
+
type HistogramDataType = "numeric" | "datetime" | "string";
|
|
1106
|
+
/**
|
|
1107
|
+
* Props for the HistogramChart component
|
|
1108
|
+
*/
|
|
1109
|
+
interface HistogramChartProps {
|
|
1110
|
+
/** Chart title */
|
|
1111
|
+
title: string;
|
|
1112
|
+
/** Data type (numeric, datetime, or string) */
|
|
1113
|
+
dataType?: HistogramDataType;
|
|
1114
|
+
/** Total sample count */
|
|
1115
|
+
samples?: number;
|
|
1116
|
+
/** Minimum value (for datetime scale) */
|
|
1117
|
+
min?: string | number;
|
|
1118
|
+
/** Maximum value (for datetime scale) */
|
|
1119
|
+
max?: string | number;
|
|
1120
|
+
/** Bin edge values */
|
|
1121
|
+
binEdges: number[];
|
|
1122
|
+
/** Base environment dataset */
|
|
1123
|
+
baseData: HistogramDataset;
|
|
1124
|
+
/** Current environment dataset */
|
|
1125
|
+
currentData: HistogramDataset;
|
|
1126
|
+
/** Enable animation */
|
|
1127
|
+
animate?: boolean;
|
|
1128
|
+
/** Hide axis labels and ticks */
|
|
1129
|
+
hideAxis?: boolean;
|
|
1130
|
+
/** Theme mode */
|
|
1131
|
+
theme?: "light" | "dark";
|
|
1132
|
+
/** Chart height in pixels */
|
|
1133
|
+
height?: number;
|
|
1134
|
+
/** Optional CSS class */
|
|
1135
|
+
className?: string;
|
|
1136
|
+
}
|
|
1137
|
+
/**
|
|
1138
|
+
* HistogramChart Component
|
|
1139
|
+
*
|
|
1140
|
+
* A pure presentation component for displaying histogram charts comparing
|
|
1141
|
+
* base and current data distributions using Chart.js.
|
|
1142
|
+
*
|
|
1143
|
+
* @example Basic usage
|
|
1144
|
+
* ```tsx
|
|
1145
|
+
* import { HistogramChart } from '@datarecce/ui/primitives';
|
|
1146
|
+
*
|
|
1147
|
+
* function ProfilePanel({ histogramData }) {
|
|
1148
|
+
* return (
|
|
1149
|
+
* <HistogramChart
|
|
1150
|
+
* title="Age Distribution"
|
|
1151
|
+
* dataType="numeric"
|
|
1152
|
+
* binEdges={histogramData.binEdges}
|
|
1153
|
+
* baseData={{ counts: histogramData.baseCounts }}
|
|
1154
|
+
* currentData={{ counts: histogramData.currentCounts }}
|
|
1155
|
+
* samples={1000}
|
|
1156
|
+
* />
|
|
1157
|
+
* );
|
|
1158
|
+
* }
|
|
1159
|
+
* ```
|
|
1160
|
+
*
|
|
1161
|
+
* @example With datetime scale
|
|
1162
|
+
* ```tsx
|
|
1163
|
+
* <HistogramChart
|
|
1164
|
+
* title="Events Over Time"
|
|
1165
|
+
* dataType="datetime"
|
|
1166
|
+
* binEdges={timestamps}
|
|
1167
|
+
* baseData={{ counts: baseCounts }}
|
|
1168
|
+
* currentData={{ counts: currentCounts }}
|
|
1169
|
+
* min={startDate}
|
|
1170
|
+
* max={endDate}
|
|
1171
|
+
* />
|
|
1172
|
+
* ```
|
|
1173
|
+
*/
|
|
1174
|
+
declare function HistogramChartComponent({
|
|
1175
|
+
title,
|
|
1176
|
+
dataType,
|
|
1177
|
+
samples,
|
|
1178
|
+
min,
|
|
1179
|
+
max,
|
|
1180
|
+
binEdges,
|
|
1181
|
+
baseData,
|
|
1182
|
+
currentData,
|
|
1183
|
+
animate,
|
|
1184
|
+
hideAxis,
|
|
1185
|
+
theme,
|
|
1186
|
+
height,
|
|
1187
|
+
className
|
|
1188
|
+
}: HistogramChartProps): _$react_jsx_runtime0.JSX.Element;
|
|
1189
|
+
declare const HistogramChart: _$react.MemoExoticComponent<typeof HistogramChartComponent>;
|
|
1190
|
+
//#endregion
|
|
1191
|
+
//#region src/components/data/TopKBarChart.d.ts
|
|
1192
|
+
/**
|
|
1193
|
+
* Single Top-K value item
|
|
1194
|
+
*/
|
|
1195
|
+
interface TopKItem {
|
|
1196
|
+
/** Value label */
|
|
1197
|
+
label: string;
|
|
1198
|
+
/** Count */
|
|
1199
|
+
count: number;
|
|
1200
|
+
/** Whether this is a special label (null, empty, others) */
|
|
1201
|
+
isSpecial?: boolean;
|
|
1202
|
+
}
|
|
1203
|
+
/**
|
|
1204
|
+
* Top-K dataset for a single environment
|
|
1205
|
+
* Compatible with TopKResult from @datarecce/ui/api
|
|
1206
|
+
*/
|
|
1207
|
+
interface TopKDataset {
|
|
1208
|
+
/** Value labels (null or undefined treated as special) */
|
|
1209
|
+
values: (string | number | null | undefined)[];
|
|
1210
|
+
/** Counts per value */
|
|
1211
|
+
counts: number[];
|
|
1212
|
+
/** Total valid count */
|
|
1213
|
+
valids: number;
|
|
1214
|
+
}
|
|
1215
|
+
/**
|
|
1216
|
+
* Props for the TopKBarChart component
|
|
1217
|
+
*/
|
|
1218
|
+
interface TopKBarChartProps {
|
|
1219
|
+
/** Base environment dataset */
|
|
1220
|
+
baseData?: TopKDataset;
|
|
1221
|
+
/** Current environment dataset */
|
|
1222
|
+
currentData: TopKDataset;
|
|
1223
|
+
/** Maximum items to display (default 10) */
|
|
1224
|
+
maxItems?: number;
|
|
1225
|
+
/** Show comparison with base */
|
|
1226
|
+
showComparison?: boolean;
|
|
1227
|
+
/** Theme mode */
|
|
1228
|
+
theme?: "light" | "dark";
|
|
1229
|
+
/** Chart title */
|
|
1230
|
+
title?: string;
|
|
1231
|
+
/** Optional CSS class */
|
|
1232
|
+
className?: string;
|
|
1233
|
+
}
|
|
1234
|
+
/**
|
|
1235
|
+
* TopKBarChart Component
|
|
1236
|
+
*
|
|
1237
|
+
* A pure presentation component for displaying top-k value distributions
|
|
1238
|
+
* with optional base/current comparison.
|
|
1239
|
+
*
|
|
1240
|
+
* @example Basic usage
|
|
1241
|
+
* ```tsx
|
|
1242
|
+
* import { TopKBarChart } from '@datarecce/ui/primitives';
|
|
1243
|
+
*
|
|
1244
|
+
* function ValueDistribution({ topKData }) {
|
|
1245
|
+
* return (
|
|
1246
|
+
* <TopKBarChart
|
|
1247
|
+
* currentData={topKData}
|
|
1248
|
+
* maxItems={10}
|
|
1249
|
+
* />
|
|
1250
|
+
* );
|
|
1251
|
+
* }
|
|
1252
|
+
* ```
|
|
1253
|
+
*
|
|
1254
|
+
* @example With comparison
|
|
1255
|
+
* ```tsx
|
|
1256
|
+
* <TopKBarChart
|
|
1257
|
+
* baseData={baseTopK}
|
|
1258
|
+
* currentData={currentTopK}
|
|
1259
|
+
* showComparison
|
|
1260
|
+
* maxItems={10}
|
|
1261
|
+
* />
|
|
1262
|
+
* ```
|
|
1263
|
+
*/
|
|
1264
|
+
declare function TopKBarChartComponent({
|
|
1265
|
+
baseData,
|
|
1266
|
+
currentData,
|
|
1267
|
+
maxItems,
|
|
1268
|
+
showComparison,
|
|
1269
|
+
theme,
|
|
1270
|
+
title,
|
|
1271
|
+
className
|
|
1272
|
+
}: TopKBarChartProps): _$react_jsx_runtime0.JSX.Element;
|
|
1273
|
+
declare const TopKBarChart: _$react.MemoExoticComponent<typeof TopKBarChartComponent>;
|
|
1274
|
+
//#endregion
|
|
1275
|
+
//#region src/lib/dataGrid/generators/toSchemaDataGrid.d.ts
|
|
1276
|
+
interface SchemaDiffRow extends RowObjectType {
|
|
1277
|
+
name: string;
|
|
1278
|
+
reordered?: boolean;
|
|
1279
|
+
currentIndex?: number;
|
|
1280
|
+
baseIndex?: number;
|
|
1281
|
+
currentType?: string;
|
|
1282
|
+
baseType?: string;
|
|
1283
|
+
/** True when the column's SQL definition changed but name/type stayed the same */
|
|
1284
|
+
definitionChanged?: boolean;
|
|
1285
|
+
}
|
|
1286
|
+
interface SchemaRow extends RowObjectType {
|
|
1287
|
+
name: string;
|
|
1288
|
+
index: number;
|
|
1289
|
+
type?: string;
|
|
1290
|
+
}
|
|
1291
|
+
type SchemaDiff = Record<string, SchemaDiffRow>;
|
|
1292
|
+
interface SchemaDataGridOptions {
|
|
1293
|
+
/** Node data for context menu actions */
|
|
1294
|
+
node?: NodeData;
|
|
1295
|
+
/** Map of column names to CLL loading state */
|
|
1296
|
+
cllRunningMap?: Map<string, boolean>;
|
|
1297
|
+
/** Whether to show the column action menu (default: true) */
|
|
1298
|
+
showMenu?: boolean;
|
|
1299
|
+
/** Per-column change status from breaking change analysis */
|
|
1300
|
+
columnChanges?: Record<string, "added" | "removed" | "modified"> | null;
|
|
1301
|
+
/** Callback when user clicks a definition-changed badge to view SQL diff */
|
|
1302
|
+
onViewCode?: () => void;
|
|
1303
|
+
}
|
|
1304
|
+
interface SchemaDataGridResult {
|
|
1305
|
+
columns: (ColDef<SchemaDiffRow> | ColGroupDef<SchemaDiffRow>)[];
|
|
1306
|
+
rows: SchemaDiffRow[];
|
|
1307
|
+
}
|
|
1308
|
+
interface SingleEnvSchemaDataGridResult {
|
|
1309
|
+
columns: (ColDef<SchemaRow> | ColGroupDef<SchemaRow>)[];
|
|
1310
|
+
rows: SchemaRow[];
|
|
1311
|
+
}
|
|
1312
|
+
/**
|
|
1313
|
+
* Merges base and current column schemas into a diff structure
|
|
1314
|
+
*/
|
|
1315
|
+
declare function mergeColumns(baseColumns?: NodeData["columns"], currentColumns?: NodeData["columns"]): SchemaDiff;
|
|
1316
|
+
/**
|
|
1317
|
+
* Generates grid configuration for schema diff view
|
|
1318
|
+
* Uses merged columns: Index (merged base/current), Name (with inline DataTypeIcon)
|
|
1319
|
+
*/
|
|
1320
|
+
declare function toSchemaDataGrid(schemaDiff: SchemaDiff, options?: SchemaDataGridOptions): SchemaDataGridResult;
|
|
1321
|
+
/**
|
|
1322
|
+
* Generates grid configuration for single-environment schema view
|
|
1323
|
+
*/
|
|
1324
|
+
declare function toSingleEnvDataGrid(nodeColumns?: NodeData["columns"], options?: SchemaDataGridOptions): SingleEnvSchemaDataGridResult;
|
|
1325
|
+
//#endregion
|
|
1326
|
+
//#region src/components/schema/types.d.ts
|
|
1327
|
+
/**
|
|
1328
|
+
* @file types.ts
|
|
1329
|
+
* @description Schema diff types for comparing schemas between environments.
|
|
1330
|
+
*/
|
|
1331
|
+
/**
|
|
1332
|
+
* Schema diff row status
|
|
1333
|
+
*/
|
|
1334
|
+
type SchemaDiffStatus = "added" | "removed" | "modified" | "unchanged";
|
|
1335
|
+
//#endregion
|
|
1336
|
+
//#region src/components/editor/DiffEditor.d.ts
|
|
1337
|
+
/**
|
|
1338
|
+
* Supported languages for the diff editor
|
|
1339
|
+
*/
|
|
1340
|
+
type DiffEditorLanguage = "sql" | "yaml" | "text";
|
|
1341
|
+
/**
|
|
1342
|
+
* Theme options for the diff editor
|
|
1343
|
+
*/
|
|
1344
|
+
type DiffEditorTheme = "light" | "dark";
|
|
1345
|
+
/**
|
|
1346
|
+
* Props for the DiffEditor component
|
|
1347
|
+
*/
|
|
1348
|
+
interface DiffEditorProps {
|
|
1349
|
+
/** Original (base) text content */
|
|
1350
|
+
original: string;
|
|
1351
|
+
/** Modified (current) text content */
|
|
1352
|
+
modified: string;
|
|
1353
|
+
/** Language for syntax highlighting */
|
|
1354
|
+
language?: DiffEditorLanguage;
|
|
1355
|
+
/** Whether editor is read-only */
|
|
1356
|
+
readOnly?: boolean;
|
|
1357
|
+
/** Show line numbers */
|
|
1358
|
+
lineNumbers?: boolean;
|
|
1359
|
+
/** Side-by-side view (true) or unified view (false) */
|
|
1360
|
+
sideBySide?: boolean;
|
|
1361
|
+
/** Editor height */
|
|
1362
|
+
height?: string;
|
|
1363
|
+
/** Theme mode */
|
|
1364
|
+
theme?: DiffEditorTheme;
|
|
1365
|
+
/** Callback when modified content changes */
|
|
1366
|
+
onModifiedChange?: (value: string) => void;
|
|
1367
|
+
/** Optional CSS class */
|
|
1368
|
+
className?: string;
|
|
1369
|
+
}
|
|
1370
|
+
/**
|
|
1371
|
+
* DiffEditor Component
|
|
1372
|
+
*
|
|
1373
|
+
* A pure presentation component for displaying text diffs using CodeMirror's
|
|
1374
|
+
* merge view. Supports side-by-side and unified diff views.
|
|
1375
|
+
*
|
|
1376
|
+
* @example Basic usage
|
|
1377
|
+
* ```tsx
|
|
1378
|
+
* import { DiffEditor } from '@datarecce/ui/primitives';
|
|
1379
|
+
*
|
|
1380
|
+
* function SqlDiffPanel({ baseSql, currentSql }) {
|
|
1381
|
+
* return (
|
|
1382
|
+
* <DiffEditor
|
|
1383
|
+
* original={baseSql}
|
|
1384
|
+
* modified={currentSql}
|
|
1385
|
+
* language="sql"
|
|
1386
|
+
* sideBySide
|
|
1387
|
+
* />
|
|
1388
|
+
* );
|
|
1389
|
+
* }
|
|
1390
|
+
* ```
|
|
1391
|
+
*
|
|
1392
|
+
* @example Unified view with editing
|
|
1393
|
+
* ```tsx
|
|
1394
|
+
* const [modifiedSql, setModifiedSql] = useState(currentSql);
|
|
1395
|
+
*
|
|
1396
|
+
* <DiffEditor
|
|
1397
|
+
* original={baseSql}
|
|
1398
|
+
* modified={modifiedSql}
|
|
1399
|
+
* language="sql"
|
|
1400
|
+
* sideBySide={false}
|
|
1401
|
+
* onModifiedChange={setModifiedSql}
|
|
1402
|
+
* />
|
|
1403
|
+
* ```
|
|
1404
|
+
*/
|
|
1405
|
+
declare function DiffEditorComponent({
|
|
1406
|
+
original,
|
|
1407
|
+
modified,
|
|
1408
|
+
language,
|
|
1409
|
+
readOnly,
|
|
1410
|
+
lineNumbers: showLineNumbers,
|
|
1411
|
+
sideBySide,
|
|
1412
|
+
height,
|
|
1413
|
+
theme,
|
|
1414
|
+
onModifiedChange,
|
|
1415
|
+
className
|
|
1416
|
+
}: DiffEditorProps): _$react_jsx_runtime0.JSX.Element;
|
|
1417
|
+
declare const DiffEditor: _$react.MemoExoticComponent<typeof DiffEditorComponent>;
|
|
1418
|
+
//#endregion
|
|
1419
|
+
//#region src/components/ui/EmptyState.d.ts
|
|
1420
|
+
/**
|
|
1421
|
+
* Props for the EmptyState component
|
|
1422
|
+
*/
|
|
1423
|
+
interface EmptyStateProps {
|
|
1424
|
+
/** Main title text */
|
|
1425
|
+
title: string;
|
|
1426
|
+
/** Description text */
|
|
1427
|
+
description?: string;
|
|
1428
|
+
/** Icon to display */
|
|
1429
|
+
icon?: ReactNode;
|
|
1430
|
+
/** Primary action button text */
|
|
1431
|
+
actionLabel?: string;
|
|
1432
|
+
/** Primary action callback */
|
|
1433
|
+
onAction?: () => void;
|
|
1434
|
+
/** Secondary action button text */
|
|
1435
|
+
secondaryActionLabel?: string;
|
|
1436
|
+
/** Secondary action callback */
|
|
1437
|
+
onSecondaryAction?: () => void;
|
|
1438
|
+
/** Theme mode */
|
|
1439
|
+
theme?: "light" | "dark";
|
|
1440
|
+
/** Vertical padding */
|
|
1441
|
+
paddingY?: number;
|
|
1442
|
+
/** Optional CSS class */
|
|
1443
|
+
className?: string;
|
|
1444
|
+
/** Additional content below actions */
|
|
1445
|
+
children?: ReactNode;
|
|
1446
|
+
}
|
|
1447
|
+
/**
|
|
1448
|
+
* EmptyState Component
|
|
1449
|
+
*
|
|
1450
|
+
* A pure presentation component for displaying empty states
|
|
1451
|
+
* with optional icon, actions, and custom content.
|
|
1452
|
+
*
|
|
1453
|
+
* @example Basic usage
|
|
1454
|
+
* ```tsx
|
|
1455
|
+
* import { EmptyState } from '@datarecce/ui/primitives';
|
|
1456
|
+
*
|
|
1457
|
+
* function ChecksPanel({ checks }) {
|
|
1458
|
+
* if (checks.length === 0) {
|
|
1459
|
+
* return (
|
|
1460
|
+
* <EmptyState
|
|
1461
|
+
* title="No checks yet"
|
|
1462
|
+
* description="Create your first check to get started"
|
|
1463
|
+
* />
|
|
1464
|
+
* );
|
|
1465
|
+
* }
|
|
1466
|
+
* // ... render checks
|
|
1467
|
+
* }
|
|
1468
|
+
* ```
|
|
1469
|
+
*
|
|
1470
|
+
* @example With action button
|
|
1471
|
+
* ```tsx
|
|
1472
|
+
* <EmptyState
|
|
1473
|
+
* title="No results found"
|
|
1474
|
+
* description="Try adjusting your search criteria"
|
|
1475
|
+
* actionLabel="Clear Filters"
|
|
1476
|
+
* onAction={() => clearFilters()}
|
|
1477
|
+
* />
|
|
1478
|
+
* ```
|
|
1479
|
+
*
|
|
1480
|
+
* @example With icon and multiple actions
|
|
1481
|
+
* ```tsx
|
|
1482
|
+
* <EmptyState
|
|
1483
|
+
* icon={<FolderIcon />}
|
|
1484
|
+
* title="No files"
|
|
1485
|
+
* description="Upload files to get started"
|
|
1486
|
+
* actionLabel="Upload File"
|
|
1487
|
+
* onAction={handleUpload}
|
|
1488
|
+
* secondaryActionLabel="Learn More"
|
|
1489
|
+
* onSecondaryAction={() => window.open(docsUrl)}
|
|
1490
|
+
* />
|
|
1491
|
+
* ```
|
|
1492
|
+
*/
|
|
1493
|
+
declare function EmptyStateComponent({
|
|
1494
|
+
title,
|
|
1495
|
+
description,
|
|
1496
|
+
icon,
|
|
1497
|
+
actionLabel,
|
|
1498
|
+
onAction,
|
|
1499
|
+
secondaryActionLabel,
|
|
1500
|
+
onSecondaryAction,
|
|
1501
|
+
theme,
|
|
1502
|
+
paddingY,
|
|
1503
|
+
className,
|
|
1504
|
+
children
|
|
1505
|
+
}: EmptyStateProps): _$react_jsx_runtime0.JSX.Element;
|
|
1506
|
+
declare const EmptyState: _$react.MemoExoticComponent<typeof EmptyStateComponent>;
|
|
1507
|
+
//#endregion
|
|
1508
|
+
//#region src/components/ui/SplitPane.d.ts
|
|
1509
|
+
/**
|
|
1510
|
+
* Split direction
|
|
1511
|
+
*/
|
|
1512
|
+
type SplitDirection = "horizontal" | "vertical";
|
|
1513
|
+
/**
|
|
1514
|
+
* Props for the SplitPane component
|
|
1515
|
+
*/
|
|
1516
|
+
interface SplitPaneProps {
|
|
1517
|
+
/** Child elements to split */
|
|
1518
|
+
children: ReactNode;
|
|
1519
|
+
/** Split direction */
|
|
1520
|
+
direction?: SplitDirection;
|
|
1521
|
+
/** Initial sizes as percentages (should sum to 100) */
|
|
1522
|
+
sizes?: number[];
|
|
1523
|
+
/** Minimum sizes in pixels */
|
|
1524
|
+
minSizes?: number | number[];
|
|
1525
|
+
/** Maximum sizes in pixels */
|
|
1526
|
+
maxSizes?: number | number[];
|
|
1527
|
+
/** Gutter (drag handle) size in pixels */
|
|
1528
|
+
gutterSize?: number;
|
|
1529
|
+
/** Snap to closed at this threshold (pixels) */
|
|
1530
|
+
snapOffset?: number;
|
|
1531
|
+
/** Allow dragging past minSize to collapse */
|
|
1532
|
+
dragInterval?: number;
|
|
1533
|
+
/** Callback when sizes change */
|
|
1534
|
+
onDragEnd?: (sizes: number[]) => void;
|
|
1535
|
+
/** Callback during drag */
|
|
1536
|
+
onDrag?: (sizes: number[]) => void;
|
|
1537
|
+
/** Theme mode */
|
|
1538
|
+
theme?: "light" | "dark";
|
|
1539
|
+
/** Container style */
|
|
1540
|
+
style?: CSSProperties;
|
|
1541
|
+
/** Optional CSS class */
|
|
1542
|
+
className?: string;
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* SplitPane Component
|
|
1546
|
+
*
|
|
1547
|
+
* A pure presentation component for creating resizable split panes
|
|
1548
|
+
* using react-split. Supports horizontal and vertical layouts.
|
|
1549
|
+
*
|
|
1550
|
+
* @example Horizontal split
|
|
1551
|
+
* ```tsx
|
|
1552
|
+
* import { SplitPane } from '@datarecce/ui/primitives';
|
|
1553
|
+
*
|
|
1554
|
+
* function TwoColumnLayout() {
|
|
1555
|
+
* return (
|
|
1556
|
+
* <SplitPane direction="horizontal" sizes={[30, 70]}>
|
|
1557
|
+
* <div>Left Panel</div>
|
|
1558
|
+
* <div>Right Panel</div>
|
|
1559
|
+
* </SplitPane>
|
|
1560
|
+
* );
|
|
1561
|
+
* }
|
|
1562
|
+
* ```
|
|
1563
|
+
*
|
|
1564
|
+
* @example Vertical split with min sizes
|
|
1565
|
+
* ```tsx
|
|
1566
|
+
* <SplitPane
|
|
1567
|
+
* direction="vertical"
|
|
1568
|
+
* sizes={[50, 50]}
|
|
1569
|
+
* minSizes={[100, 100]}
|
|
1570
|
+
* >
|
|
1571
|
+
* <div>Top Panel</div>
|
|
1572
|
+
* <div>Bottom Panel</div>
|
|
1573
|
+
* </SplitPane>
|
|
1574
|
+
* ```
|
|
1575
|
+
*
|
|
1576
|
+
* @example Three-way split with callbacks
|
|
1577
|
+
* ```tsx
|
|
1578
|
+
* <SplitPane
|
|
1579
|
+
* direction="horizontal"
|
|
1580
|
+
* sizes={[25, 50, 25]}
|
|
1581
|
+
* onDragEnd={(sizes) => saveSizes(sizes)}
|
|
1582
|
+
* >
|
|
1583
|
+
* <div>Navigation</div>
|
|
1584
|
+
* <div>Content</div>
|
|
1585
|
+
* <div>Details</div>
|
|
1586
|
+
* </SplitPane>
|
|
1587
|
+
* ```
|
|
1588
|
+
*/
|
|
1589
|
+
declare function SplitPaneComponent({
|
|
1590
|
+
children,
|
|
1591
|
+
direction,
|
|
1592
|
+
sizes,
|
|
1593
|
+
minSizes,
|
|
1594
|
+
maxSizes,
|
|
1595
|
+
gutterSize,
|
|
1596
|
+
snapOffset,
|
|
1597
|
+
dragInterval,
|
|
1598
|
+
onDragEnd,
|
|
1599
|
+
onDrag,
|
|
1600
|
+
theme,
|
|
1601
|
+
style,
|
|
1602
|
+
className
|
|
1603
|
+
}: SplitPaneProps): _$react_jsx_runtime0.JSX.Element;
|
|
1604
|
+
declare const SplitPane: _$react.MemoExoticComponent<typeof SplitPaneComponent>;
|
|
1605
|
+
//#endregion
|
|
1606
|
+
export { CheckCard as $, getChartThemeColors as A, LineageColumnNodeProps as B, ChartBarColors as C, HistogramDataType as D, HistogramChartProps as E, COLUMN_NODE_HEIGHT as F, CheckListProps as G, LineageViewProps as H, COLUMN_NODE_WIDTH as I, CheckDetail as J, CheckEmptyState as K, ColumnTransformationType as L, LineageLegend as M, LineageLegendProps as N, HistogramDataset as O, TransformationLegendItem as P, CheckDescriptionProps as Q, LineageColumnNode as R, TopKItem as S, HistogramChart as T, LineageViewRef as U, LineageView as V, CheckList as W, CheckDetailTab as X, CheckDetailProps as Y, CheckDescription as Z, toSchemaDataGrid as _, EmptyStateProps as a, CheckActionType as at, TopKBarChartProps as b, DiffEditorProps as c, LineageNode as ct, SchemaDataGridOptions as d, NodeChangeStatus as dt, CheckCardData as et, SchemaDataGridResult as f, EdgeChangeStatus as ft, mergeColumns as g, SingleEnvSchemaDataGridResult as h, LineageEdgeProps as ht, EmptyState as i, CheckAction as it, ChangeStatusLegendItem as j, getChartBarColors as k, DiffEditorTheme as l, LineageNodeData as lt, SchemaRow as m, LineageEdgeData as mt, SplitPane as n, CheckRunStatus as nt, DiffEditor as o, CheckActions as ot, SchemaDiffRow as p, LineageEdge as pt, CheckEmptyStateProps as q, SplitPaneProps as r, CheckType as rt, DiffEditorLanguage as s, CheckActionsProps as st, SplitDirection as t, CheckCardProps as tt, SchemaDiffStatus as u, LineageNodeProps as ut, toSingleEnvDataGrid as v, ChartThemeColors as w, TopKDataset as x, TopKBarChart as y, LineageColumnNodeData as z };
|
|
1607
|
+
//# sourceMappingURL=SplitPane-g8w-XF2_.d.ts.map
|