LibreChat/packages/client/src/components
Danny Avila fda1bfc3cc
🔬 ci: Add TypeScript Type Checks to Backend Workflow and Fix All Type Errors (#12451)
* fix(data-schemas): resolve TypeScript strict type check errors in source files

- Constrain ConfigSection to string keys via `string & keyof TCustomConfig`
- Replace broken `z` import from data-provider with TCustomConfig derivation
- Add `_id: Types.ObjectId` to IUser matching other Document interfaces
- Add `federatedTokens` and `openidTokens` optional fields to IUser
- Type mongoose model accessors as `Model<IRole>` and `Model<IUser>`
- Widen `getPremiumRate` param to accept `number | null`
- Widen `bulkWriteAclEntries` ops to untyped `AnyBulkWriteOperation[]`
- Fix `getUserPrincipals` return type to use `PrincipalType` enum
- Add non-null assertions for `connection.db` in migration files
- Import DailyRotateFile constructor directly instead of relying on
  broken module augmentation across mismatched node_modules trees
- Add winston-daily-rotate-file as devDependency for type resolution

* fix(data-schemas): resolve TypeScript type errors in test files

- Replace arbitrary test keys with valid TCustomConfig properties in config.spec
- Use non-null assertions for permission objects in role.methods.spec
- Replace `.SHARED_GLOBAL` access with `.not.toHaveProperty()` for legacy field
- Add non-null assertions for balance, writeRate, readRate in spendTokens.spec
- Update mock user _id to use ObjectId in user.test
- Remove unused Schema import in tenantIndexes.spec

* fix(api): resolve TypeScript strict type check errors across source and test files

- Widen getUserPrincipals dep type in capabilities middleware
- Fix federatedTokens type in createSafeUser return
- Use proper mock req type for read-only properties in preAuthTenant.spec
- Replace `as IUser` casts with ObjectId-typed mocks in openid/oidc specs
- Use TokenExchangeMethodEnum values instead of string literals in MCP specs
- Fix SessionStore type compatibility in sessionCache specs
- Replace `catch (error: any)` with `(error as Error)` in redis specs
- Remove invalid properties from test data in initialize and MCP specs
- Add String.prototype.isWellFormed declaration for sanitizeTitle spec

* fix(client): resolve TypeScript type errors in shared client components

- Add default values for destructured bindings in OGDialogTemplate
- Replace broken ExtendedFile import with inline type in FileIcon

* ci: add TypeScript type-check job to backend review workflow

Add a `typecheck` job that runs `tsc --noEmit` on all four TypeScript
workspaces (data-provider, data-schemas, @librechat/api, @librechat/client)
after the build step. Catches type errors that rollup builds may miss.

* fix(data-schemas): add local type declaration for DailyRotateFile transport

The `winston-daily-rotate-file` package ships a module augmentation for
`winston/lib/winston/transports`, but it fails when winston and
winston-daily-rotate-file resolve from different node_modules trees
(which happens in this monorepo due to npm hoisting).

Add a local `.d.ts` declaration that augments the same module path from
within data-schemas' compilation unit, so `tsc --noEmit` passes while
keeping the original runtime pattern (`new winston.transports.DailyRotateFile`).

* fix: address code review findings from PR #12451

- Restore typed `AnyBulkWriteOperation<AclEntry>[]` on bulkWriteAclEntries,
  cast to untyped only at the tenantSafeBulkWrite call site (Finding 1)
- Type `findUser` model accessor consistently with `findUsers` (Finding 2)
- Replace inline `import('mongoose').ClientSession` with top-level import type
- Use `toHaveLength` for spy assertions in playwright-expect spec file
- Replace numbered Record casts with `.not.toHaveProperty()` in
  role.methods.spec for SHARED_GLOBAL assertions
- Use per-test ObjectIds instead of shared testUserId in openid.spec
- Replace inline `import()` type annotations with top-level SessionData
  import in sessionCache spec
- Remove extraneous blank line in user.ts searchUsers

* refactor: address remaining review findings (4–7)

- Extract OIDCTokens interface in user.ts; deduplicate across IUser fields
  and oidc.ts FederatedTokens (Finding 4)
- Move String.isWellFormed declaration from spec file to project-level
  src/types/es2024-string.d.ts (Finding 5)
- Replace verbose `= undefined` defaults in OGDialogTemplate with null
  coalescing pattern (Finding 6)
- Replace `Record<string, unknown>` TestConfig with named interface
  containing explicit test fields (Finding 7)
2026-03-28 21:06:39 -04:00
..
DataTable 🪟 feat: DataTable update + Various UI enhancements (#9698) 2025-12-11 16:39:06 -05:00
Accordion.tsx 🧈 fix: Smoother Control Panel Tab Expansion Animations (#11077) 2025-12-25 12:25:25 -05:00
AlertDialog.tsx
AnimatedSearchInput.tsx 🛗 fix: Address Accessibility Issues - Axe Rating: Serious (#10521) 2025-12-11 16:36:32 -05:00
AnimatedTabs.css
AnimatedTabs.tsx
AnimatePopover.css
Avatar.tsx 🎭 refactor: Avatar Loading UX and Fix Initials Rendering Bugs (#9261) 2025-08-25 12:06:00 -04:00
Badge.tsx 🔇 fix: Hide Button Icons from Screen Readers (#10776) 2025-12-11 16:35:17 -05:00
Breadcrumb.tsx
Button.tsx ⌨️ refactor: Favorite Item Selection & Keyboard Navigation/Focus Improvements (#10952) 2025-12-12 17:18:21 -05:00
Checkbox.tsx 🪟 feat: DataTable update + Various UI enhancements (#9698) 2025-12-11 16:39:06 -05:00
CheckboxButton.tsx
Collapsible.tsx
Combobox.tsx 🪜 fix: Layering Conflicts and UX Polish (#11177) 2026-01-02 11:43:03 -05:00
ControlCombobox.tsx 🎨 refactor: Redesign Sidebar with Unified Icon Strip Layout (#12013) 2026-03-22 01:15:20 -04:00
DataTable.tsx 🛗 fix: Address Accessibility Issues - Axe Rating: Serious (#10521) 2025-12-11 16:36:32 -05:00
DelayedRender.tsx
Dialog.tsx 🔇 fix: Hide Button Icons from Screen Readers (#10776) 2025-12-11 16:35:17 -05:00
DialogTemplate.spec.tsx 🪟 feat: DataTable update + Various UI enhancements (#9698) 2025-12-11 16:39:06 -05:00
DialogTemplate.tsx
Dropdown.css 🪜 fix: Layering Conflicts and UX Polish (#11177) 2026-01-02 11:43:03 -05:00
Dropdown.tsx 📁 refactor: Prompts UI (#11570) 2026-03-22 16:56:22 -04:00
DropdownMenu.tsx 📱 fix: Mention Touch UX and MCP Tool UI Consistency (#11627) 2026-02-04 15:22:32 +01:00
DropdownNoState.tsx
DropdownPopup.tsx 🔖 fix: Announce Bookmark Selection State (#11450) 2026-01-21 13:49:50 -05:00
FileUpload.tsx
FilterInput.tsx 🎨 refactor: Redesign Sidebar with Unified Icon Strip Layout (#12013) 2026-03-22 01:15:20 -04:00
FormInput.tsx
HoverCard.tsx
index.ts 🔌 refactor: MCP UI with Improved Accessibility and Reusable Components (#11118) 2025-12-28 12:20:15 -05:00
InfoHoverCard.tsx ℹ️ feat: Scrollable InfoHoverCard Content (#10693) 2025-12-11 16:37:10 -05:00
Input.tsx 🪄 refactor: UI Polish and Admin Dialog Unification (#11108) 2025-12-28 11:01:25 -05:00
InputCombobox.tsx
InputNumber.tsx
InputOTP.tsx
InputWithDropDown.tsx
Label.tsx ️ fix: Accessibility, UI consistency, dialog & avatar refactors (#9975) 2025-10-07 14:12:49 -04:00
MultiSearch.tsx
MultiSelect.tsx 🪜 fix: Layering Conflicts and UX Polish (#11177) 2026-01-02 11:43:03 -05:00
OGDialogTemplate.tsx 🔬 ci: Add TypeScript Type Checks to Backend Workflow and Fix All Type Errors (#12451) 2026-03-28 21:06:39 -04:00
OriginalDialog.tsx 📏 fix: Dropdown Menu Z-Index Adjustments (#11441) 2026-01-21 13:46:02 -05:00
Pagination.tsx 🔇 fix: Hide Button Icons from Screen Readers (#10776) 2025-12-11 16:35:17 -05:00
PixelCard.tsx
Progress.tsx
QuestionMark.tsx
Radio.tsx 🔄 refactor: Migrate to react-resizable-panels v4 with Artifacts Header polish (#12356) 2026-03-22 02:21:27 -04:00
Resizable.tsx 🔄 refactor: Migrate to react-resizable-panels v4 with Artifacts Header polish (#12356) 2026-03-22 02:21:27 -04:00
SecretInput.tsx 🔌 refactor: MCP UI with Improved Accessibility and Reusable Components (#11118) 2025-12-28 12:20:15 -05:00
Select.tsx 🪜 fix: Layering Conflicts and UX Polish (#11177) 2026-01-02 11:43:03 -05:00
SelectDropDown.tsx
Separator.tsx
Skeleton.tsx
Slider.tsx ️ fix: Accessibility, UI consistency, dialog & avatar refactors (#9975) 2025-10-07 14:12:49 -04:00
SplitText.spec.tsx 🪟 feat: DataTable update + Various UI enhancements (#9698) 2025-12-11 16:39:06 -05:00
SplitText.tsx
Switch.tsx fix: Address Accessibility Issues (#10260) 2025-10-27 19:46:43 -04:00
Table.tsx 🪟 feat: DataTable update + Various UI enhancements (#9698) 2025-12-11 16:39:06 -05:00
Tabs.tsx
Tag.tsx 🔇 fix: Hide Button Icons from Screen Readers (#10776) 2025-12-11 16:35:17 -05:00
Textarea.tsx
TextareaAutosize.tsx fix: Address Accessibility Issues (#10260) 2025-10-27 19:46:43 -04:00
ThemeSelector.tsx 🌙 fix: Accessible Contrast for Theme Switcher Icons (#11795) 2026-02-14 13:57:00 -05:00
Toast.tsx 🥂 feat: High Contrast Toasts (#11035) 2025-12-18 20:44:40 -05:00
Tooltip.css 🚧 fix: OriginalDialog Modal Tooltip and Dropdown Menu Regressions from (#10975, #10952, #11008) (#11023) 2025-12-18 09:28:27 -05:00
Tooltip.tsx 🎨 refactor: Redesign Sidebar with Unified Icon Strip Layout (#12013) 2026-03-22 01:15:20 -04:00