Skip to content

feat: @digit-ui/datagrid package + DIGIT Studio configurator UI - #4

Open
ChakshuGautam wants to merge 37 commits into
masterfrom
configurator
Open

feat: @digit-ui/datagrid package + DIGIT Studio configurator UI#4
ChakshuGautam wants to merge 37 commits into
masterfrom
configurator

Conversation

@ChakshuGautam

Copy link
Copy Markdown
Owner

Summary

  • Scaffolds @digit-ui/datagrid as a publishable monorepo workspace package with vendored Radix primitives
  • Implements useMutationMode hook (pessimistic/optimistic/undoable), polymorphic EditableCell (text/number/boolean/date/select/reference), useColumnConfig with localStorage persistence, RowActions + InlineDelete, and schema-driven column auto-detection (boolean/date/enum)
  • Builds the full DigitDatagrid and DigitList components with column configurability popover
  • Wires the ui-mockup app to import from the workspace package via admin barrel re-exports
  • Adds DIGIT Studio management mode with 37 entity CRUD screens across 12 resource directories, schema-driven MDMS views, inline list editing, and reference dropdowns

Test plan

  • 79 package tests pass (packages/digit-datagrid)
  • 16 app tests pass (utilities/crs_dataloader/ui-mockup)
  • TypeScript type check passes with zero errors
  • Live deployment verified at https://crs-mockup.egov.theflywheel.in

Chakshu and others added 20 commits January 18, 2026 05:17
- React 18 + Vite + TypeScript + Tailwind CSS + shadcn/ui
- 4-phase wizard: Tenant, Boundary, Masters, Employee setup
- DIGIT-styled components (SubmitBar, LabelFieldPair, DigitCard, etc.)
- Orange DIGIT theme (#c84c0e) with Roboto fonts
- Mobile-responsive design
- Mock data for all phases (ready for API integration)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add API client with OAuth2 authentication
- Add MDMS, Boundary, HRMS, and Localization services
- Add Excel parsing utilities for all data types
- Wire up LoginPage with real authentication
- Wire up Phase1 (Tenant & Branding) with MDMS API
- Wire up Phase2 (Boundaries) with Boundary Service API
- Wire up Phase3 (Common Masters) with MDMS API
- Wire up Phase4 (Employees) with HRMS API
- Add proper error handling and validation
- All phases now use live DIGIT APIs instead of mock data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Built on react-admin (ra-core) with a custom DIGIT data provider, adding
a full Management Mode for browsing and editing all DIGIT platform entities:
tenants, departments, designations, employees, complaints, complaint types,
boundaries, hierarchies, roles, localization, MDMS schemas, workflow services,
and user management. Includes EntityLink cross-references, shadcn/ui components,
docs pane, and telemetry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…verse refs

Use MDMS v2 JSON Schema definitions (x-unique, required, x-ref-schema) to
auto-generate List columns and Show field groups. EntityLink badges resolve
foreign keys (e.g. rolecode → "Super User"), reverse-reference sections show
what links back, and a collapsible Schema Definition viewer shows the raw
JSON schema. Fixes React 19 strict type errors in Show components and
DigitDatagrid rowClick="show" routing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Double-click any editable cell to edit in place. Enter/blur saves via
the data provider, Escape cancels. Single click still navigates to the
show page (250ms delay disambiguates click vs double-click).

Enabled on: departments (name, description), designations (name,
description), complaint types (name, slaHours), localization (message),
and all schema-driven MDMS columns (auto-set for non-key, non-ref fields).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Double-clicking a reference column (e.g. Department on Complaint Types) now
shows a shadcn Select dropdown populated via useGetList. Uses pointer-events
to prevent EntityLink click interception. Schema-driven views auto-detect
reference fields and mark them editable with type: 'reference'.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Covers: mutation modes (undoable/optimistic/pessimistic), polymorphic
EditableCell, inline delete, auto row actions, column configurability,
mutation callbacks/transforms, and monorepo workspace package structure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
11 tasks covering: package scaffolding, useMutationMode hook,
polymorphic EditableCell, useColumnConfig, RowActions + InlineDelete,
schema auto-detection, DigitDatagrid integration, DigitList column config,
barrel exports, app wiring, and final cleanup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…imitives

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…stic modes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…back

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…polymorphic cells

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ma utilities

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Admin barrel re-exports DigitDatagrid, DigitList, types from package
- schemaUtils.ts wraps package generateColumns with EntityLink renderRef
- Package @/ aliases converted to relative imports for vite compat

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 238 files, which is 88 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 29bf45c5-cf72-49de-9179-3cbb7043e947

📥 Commits

Reviewing files that changed from the base of the PR and between 82fec98 and 2da5cfd.

⛔ Files ignored due to path filters (5)
  • package-lock.json is excluded by !**/package-lock.json
  • packages/digit-datagrid/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json is excluded by !**/node_modules/**
  • utilities/crs_dataloader/ui-mockup/package-lock.json is excluded by !**/package-lock.json
  • utilities/crs_dataloader/ui-mockup/public/vite.svg is excluded by !**/*.svg
  • utilities/crs_dataloader/ui-mockup/src/assets/react.svg is excluded by !**/*.svg
📒 Files selected for processing (238)
  • .gitignore
  • frontend/micro-ui/web/micro-ui-internals/packages/libraries/package.json
  • frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/services/atoms/Utils/Request.js
  • frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/services/auth/KeycloakAuthAdapter.js
  • frontend/micro-ui/web/micro-ui-internals/packages/modules/core/src/App.js
  • frontend/micro-ui/web/micro-ui-internals/packages/modules/core/src/pages/common/Login/index.js
  • package.json
  • packages/digit-datagrid/package.json
  • packages/digit-datagrid/src/DigitDatagrid.tsx
  • packages/digit-datagrid/src/DigitList.tsx
  • packages/digit-datagrid/src/__tests__/DigitDatagrid.test.tsx
  • packages/digit-datagrid/src/__tests__/EditableCell.test.tsx
  • packages/digit-datagrid/src/__tests__/FilterBar.test.tsx
  • packages/digit-datagrid/src/__tests__/FilterInputs.test.tsx
  • packages/digit-datagrid/src/__tests__/RowActions.test.tsx
  • packages/digit-datagrid/src/__tests__/generateFilterElements.test.ts
  • packages/digit-datagrid/src/__tests__/schemaUtils.test.ts
  • packages/digit-datagrid/src/__tests__/setup.ts
  • packages/digit-datagrid/src/__tests__/useColumnConfig.test.ts
  • packages/digit-datagrid/src/__tests__/useMutationMode.test.ts
  • packages/digit-datagrid/src/actions/InlineDelete.tsx
  • packages/digit-datagrid/src/actions/RowActions.tsx
  • packages/digit-datagrid/src/actions/index.ts
  • packages/digit-datagrid/src/columns/schemaUtils.ts
  • packages/digit-datagrid/src/columns/types.ts
  • packages/digit-datagrid/src/editing/EditableCell.tsx
  • packages/digit-datagrid/src/editing/ReferenceSelect.tsx
  • packages/digit-datagrid/src/editing/index.ts
  • packages/digit-datagrid/src/editing/useColumnConfig.ts
  • packages/digit-datagrid/src/editing/useMutationMode.ts
  • packages/digit-datagrid/src/filters/AddFilterButton.tsx
  • packages/digit-datagrid/src/filters/BooleanFilterInput.tsx
  • packages/digit-datagrid/src/filters/DateFilterInput.tsx
  • packages/digit-datagrid/src/filters/FilterBar.tsx
  • packages/digit-datagrid/src/filters/FilterFormInput.tsx
  • packages/digit-datagrid/src/filters/NullableBooleanFilterInput.tsx
  • packages/digit-datagrid/src/filters/ReferenceFilterInput.tsx
  • packages/digit-datagrid/src/filters/SearchFilterInput.tsx
  • packages/digit-datagrid/src/filters/SelectFilterInput.tsx
  • packages/digit-datagrid/src/filters/TextFilterInput.tsx
  • packages/digit-datagrid/src/filters/index.ts
  • packages/digit-datagrid/src/filters/types.ts
  • packages/digit-datagrid/src/hooks/use-toast.ts
  • packages/digit-datagrid/src/index.ts
  • packages/digit-datagrid/src/lib/utils.ts
  • packages/digit-datagrid/src/primitives/alert-dialog.tsx
  • packages/digit-datagrid/src/primitives/badge.tsx
  • packages/digit-datagrid/src/primitives/button.tsx
  • packages/digit-datagrid/src/primitives/input.tsx
  • packages/digit-datagrid/src/primitives/label.tsx
  • packages/digit-datagrid/src/primitives/popover.tsx
  • packages/digit-datagrid/src/primitives/select.tsx
  • packages/digit-datagrid/src/primitives/switch.tsx
  • packages/digit-datagrid/src/primitives/table.tsx
  • packages/digit-datagrid/src/primitives/toast.tsx
  • packages/digit-datagrid/src/primitives/toaster.tsx
  • packages/digit-datagrid/tsconfig.json
  • packages/digit-datagrid/vitest.config.ts
  • scripts/setup-configurator.sh
  • utilities/crs_dataloader/ui-mockup/.gitignore
  • utilities/crs_dataloader/ui-mockup/README.md
  • utilities/crs_dataloader/ui-mockup/components.json
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-06-react-admin-digit-studio-design.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-06-react-admin-digit-studio.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-07-schema-driven-mdms-views-design.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-07-schema-driven-mdms-views.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-08-editable-datagrid-enhancements-design.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-08-editable-datagrid-enhancements.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-08-inline-list-editing-design.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-08-inline-list-editing.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-10-list-filters-design.md
  • utilities/crs_dataloader/ui-mockup/docs/plans/2026-03-10-list-filters.md
  • utilities/crs_dataloader/ui-mockup/e2e-onboarding/.gitignore
  • utilities/crs_dataloader/ui-mockup/e2e-onboarding/onboarding.spec.ts
  • utilities/crs_dataloader/ui-mockup/e2e-onboarding/playwright.config.ts
  • utilities/crs_dataloader/ui-mockup/e2e/helpers.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/run-all.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/boundaries.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/complaint-types.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/complaints.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/departments.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/designations.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/employees.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/generic-mdms.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/localization.test.mjs
  • utilities/crs_dataloader/ui-mockup/e2e/tests/users.test.mjs
  • utilities/crs_dataloader/ui-mockup/eslint.config.js
  • utilities/crs_dataloader/ui-mockup/index.html
  • utilities/crs_dataloader/ui-mockup/outputs/TASK-003-ui-mockup.md
  • utilities/crs_dataloader/ui-mockup/package.json
  • utilities/crs_dataloader/ui-mockup/postcss.config.js
  • utilities/crs_dataloader/ui-mockup/src/App.css
  • utilities/crs_dataloader/ui-mockup/src/App.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitDashboard.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitDatagrid.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitFormCodeInput.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitFormInput.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitFormSelect.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitLayout.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitList.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/DigitShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/MdmsResourceCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/MdmsResourceEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/MdmsResourcePage.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/MdmsResourceShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/WorkflowActionSelect.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/DateField.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/FieldSection.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/JsonViewer.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/ReverseReferenceList.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/StatusChip.tsx
  • utilities/crs_dataloader/ui-mockup/src/admin/fields/index.ts
  • utilities/crs_dataloader/ui-mockup/src/admin/index.ts
  • utilities/crs_dataloader/ui-mockup/src/admin/schemaUtils.test.ts
  • utilities/crs_dataloader/ui-mockup/src/admin/schemaUtils.ts
  • utilities/crs_dataloader/ui-mockup/src/admin/validation.ts
  • utilities/crs_dataloader/ui-mockup/src/api/client.ts
  • utilities/crs_dataloader/ui-mockup/src/api/config.ts
  • utilities/crs_dataloader/ui-mockup/src/api/index.ts
  • utilities/crs_dataloader/ui-mockup/src/api/services/boundary.ts
  • utilities/crs_dataloader/ui-mockup/src/api/services/hrms.ts
  • utilities/crs_dataloader/ui-mockup/src/api/services/localization.ts
  • utilities/crs_dataloader/ui-mockup/src/api/services/mdms.ts
  • utilities/crs_dataloader/ui-mockup/src/api/types.ts
  • utilities/crs_dataloader/ui-mockup/src/components/PageViewTracker.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/ActionBar.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/Banner.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/BulkUpload.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/DigitCard.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/Header.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/LabelFieldPair.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/SubmitBar.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/Toast.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/digit/index.ts
  • utilities/crs_dataloader/ui-mockup/src/components/layout/DocsPane.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/layout/Layout.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/EntityLink.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/HelpModal.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/ReferenceSelect.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/TenantTree.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/UndoToast.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/add-row-dialog.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/alert-dialog.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/alert.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/badge.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/button.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/card.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/delete-confirm-dialog.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/dialog.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/dropdown-menu.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/editable-cell.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/input.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/label.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/progress.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/select.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/separator.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/table.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/tabs.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/toast.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/toaster.tsx
  • utilities/crs_dataloader/ui-mockup/src/components/ui/tooltip.tsx
  • utilities/crs_dataloader/ui-mockup/src/hooks/use-toast.ts
  • utilities/crs_dataloader/ui-mockup/src/hooks/useReverseRefs.ts
  • utilities/crs_dataloader/ui-mockup/src/hooks/useSchemaDefinition.ts
  • utilities/crs_dataloader/ui-mockup/src/index.css
  • utilities/crs_dataloader/ui-mockup/src/lib/telemetry.ts
  • utilities/crs_dataloader/ui-mockup/src/lib/utils.ts
  • utilities/crs_dataloader/ui-mockup/src/main.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/CompletePage.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/LoginPage.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/Phase1Page.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/Phase2Page.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/Phase3Page.tsx
  • utilities/crs_dataloader/ui-mockup/src/pages/Phase4Page.tsx
  • utilities/crs_dataloader/ui-mockup/src/providers/ThemeProvider.tsx
  • utilities/crs_dataloader/ui-mockup/src/providers/bridge.ts
  • utilities/crs_dataloader/ui-mockup/src/providers/i18nProvider.ts
  • utilities/crs_dataloader/ui-mockup/src/resources/access-actions/AccessActionList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/access-actions/AccessActionShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/access-roles/AccessRoleList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/access-roles/AccessRoleShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/advanced/AdvancedPage.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundaries/BoundaryCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundaries/BoundaryEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundaries/BoundaryList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundaries/BoundaryShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundary-hierarchies/BoundaryHierarchyList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/boundary-hierarchies/BoundaryHierarchyShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaint-types/ComplaintTypeCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaint-types/ComplaintTypeEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaint-types/ComplaintTypeList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaint-types/ComplaintTypeShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaints/ComplaintCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaints/ComplaintEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaints/ComplaintList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/complaints/ComplaintShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/departments/DepartmentCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/departments/DepartmentEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/departments/DepartmentList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/departments/DepartmentShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/designations/DesignationCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/designations/DesignationEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/designations/DesignationList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/designations/DesignationShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/employees/EmployeeCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/employees/EmployeeEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/employees/EmployeeList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/employees/EmployeeShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/index.ts
  • utilities/crs_dataloader/ui-mockup/src/resources/localization/LocalizationCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/localization/LocalizationEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/localization/LocalizationList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/localization/LocalizationShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/mdms-schemas/MdmsSchemaList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/mdms-schemas/MdmsSchemaShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/role-actions/RoleActionList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/role-actions/RoleActionShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/tenants/TenantList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/tenants/TenantShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/users/UserCreate.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/users/UserEdit.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/users/UserList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/users/UserShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/workflow-processes/WorkflowProcessList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/workflow-processes/WorkflowProcessShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/workflow-services/WorkflowServiceList.tsx
  • utilities/crs_dataloader/ui-mockup/src/resources/workflow-services/WorkflowServiceShow.tsx
  • utilities/crs_dataloader/ui-mockup/src/test/setup.ts
  • utilities/crs_dataloader/ui-mockup/src/themes/index.ts
  • utilities/crs_dataloader/ui-mockup/src/utils/excelParser.ts
  • utilities/crs_dataloader/ui-mockup/tailwind.config.js
  • utilities/crs_dataloader/ui-mockup/tsconfig.app.json
  • utilities/crs_dataloader/ui-mockup/tsconfig.json
  • utilities/crs_dataloader/ui-mockup/tsconfig.node.json
  • utilities/crs_dataloader/ui-mockup/vite.config.ts
  • utilities/crs_dataloader/ui-mockup/vitest.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch configurator

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Chakshu and others added 9 commits March 10, 2026 08:15
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
16 tasks across 5 chunks: filter input components, structural components
(FilterBar, AddFilterButton, FilterFormInput), DigitList integration,
generateFilterElements schema auto-generation, and app wiring.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…n, Date, NullableBoolean, Reference)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- C1: Define FilterElement/FilterElementProps types for React 19 safe
  .props access (ReactElement.props is unknown in @types/react 19)
- I1: Add "All" clear option to SelectFilterInput and ReferenceFilterInput
- I2: Fix SearchFilterInput useCallback dependency ([field] → [field.onChange])
- I3: Memoize useGetList pagination/sort params in ReferenceFilterInput
- S1: Close AddFilterButton popover after selecting a filter
- S2: Use orderFields() in generateFilterElements for consistent ordering

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chakshu and others added 7 commits March 26, 2026 04:45
- DigitFormCodeInput: auto-derives code from sibling name field
  (e.g., "Public Works" → PUBLIC_WORKS) with Generate button
- DigitFormSelect: reusable select component for DIGIT forms
- MdmsResourceCreate: generic MDMS record creation page
- WorkflowActionSelect: workflow action selector component
- validation.ts: form validation utilities with relaxed code regex
- Create forms for all MDMS resources (departments, designations,
  complaint types, boundaries, employees, localization, users)
- Updated Edit forms with improved layouts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bugs found and fixed while running the E2E onboarding test:

- config.ts: PGR schema code was RAINMAKER_PGR (underscore) but
  actual schema in DIGIT is RAINMAKER-PGR (hyphen)
- mdms.ts: createTenant() missing tenantId in data payload
- mdms.ts: createDesignation() missing required 'description' field
  and 'department' must be string[] not string per schema
- mdms.ts: createComplaintType() used 'serviceName' but schema
  field is 'name', and missing required 'keywords' field
- mdms.ts: getComplaintTypes() now reads 'name' field fallback
- boundary.ts: searchBoundaries() only read TenantBoundary[] (old
  nested format) but DIGIT returns Boundary[] (flat array format)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Walks through the complete 4-phase onboarding wizard:
  Login → Phase 1 (Tenant) → Phase 2 (Boundaries) →
  Phase 3 (Masters) → Phase 4 (Employees)

- Generates unique XLSX fixtures per run (timestamp-based)
  for test isolation — no cleanup needed between runs
- Serial test suite with shared browser page for session state
- Screenshots at each step for debugging
- 5 tests, all passing in ~11s

Run: npx playwright test --config e2e-onboarding/playwright.config.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Playwright tests for CRUD operations on all management-mode resources:
boundaries, complaints, complaint-types, departments, designations,
employees, localization, users, and generic MDMS records.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
i18n: API-first architecture using DIGIT's localization API for app.*
translations (EN/HI/PT/FR), with ra.* framework strings bundled per-locale.
English is fully bundled for synchronous boot. Non-English locales fetch
from API on demand with localStorage caching (1-day TTL).

Themes: CSS variable-based theme presets (digit-orange, material-indigo,
material-teal, material-blue, digit-dark) with localStorage persistence.
Switching themes swaps CSS custom properties at runtime.

Layout: Added LocaleSwitcher and ThemeSwitcher to DigitLayout header.
Sidebar navigation uses i18n keys for all labels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All column headers and field labels now use useTranslate() with app.*
keys, enabling full translation of the management UI when switching
locales. Added AccessAction and RoleAction resource pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add scripts/setup-configurator.sh for automated build and deployment
of the configurator UI, including DIGIT-MCP dependency resolution.
Replace boilerplate Vite README with project-specific documentation
covering prerequisites, dev/prod setup, and API configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants