@@ -323,6 +323,7 @@ export default tseslint.config([
323323 'custom-rules' : {
324324 rules : {
325325 'no-global-object' : noGlobalObject ,
326+ 'no-navigate-useClerk' : noNavigateUseClerk ,
326327 'no-unstable-methods' : noUnstableMethods ,
327328 'no-physical-css-properties' : noPhysicalCssProperties ,
328329 } ,
@@ -518,14 +519,6 @@ export default tseslint.config([
518519 {
519520 name : 'packages/clerk-js' ,
520521 files : [ 'packages/clerk-js/src/ui/**/*' ] ,
521- plugins : {
522- 'custom-rules' : {
523- rules : {
524- 'no-navigate-useClerk' : noNavigateUseClerk ,
525- 'no-unstable-methods' : noUnstableMethods ,
526- } ,
527- } ,
528- } ,
529522 rules : {
530523 'custom-rules/no-navigate-useClerk' : 'error' ,
531524 'custom-rules/no-unstable-methods' : 'error' ,
@@ -534,15 +527,23 @@ export default tseslint.config([
534527 {
535528 name : 'packages/ui' ,
536529 files : [ 'packages/ui/src/**/*' ] ,
530+ // Tests assert on style values they receive; they are not authoring styles.
531+ ignores : [ 'packages/ui/src/**/__tests__/**' , 'packages/ui/src/**/*.test.{ts,tsx}' ] ,
537532 rules : {
538533 'custom-rules/no-physical-css-properties' : 'error' ,
534+ 'custom-rules/no-navigate-useClerk' : 'error' ,
535+ 'custom-rules/no-unstable-methods' : 'error' ,
539536 } ,
540537 } ,
541538 {
542539 name : 'packages/ui/mosaic' ,
543540 files : [ 'packages/ui/src/mosaic/**/*' ] ,
544541 ignores : [ 'packages/ui/src/mosaic/utils.ts' , 'packages/ui/src/mosaic/__tests__/**' ] ,
545542 rules : {
543+ // Mosaic renders elements through `render={p => <el {...p} />}`, so children and controls sit on
544+ // the outer component. Both rules only see the empty inner element and always report.
545+ 'jsx-a11y/heading-has-content' : 'off' ,
546+ 'jsx-a11y/label-has-associated-control' : 'off' ,
546547 'no-restricted-syntax' : [
547548 'error' ,
548549 {
@@ -566,6 +567,19 @@ export default tseslint.config([
566567 files : [ 'packages/*/src/**/*.test.{ts,tsx}' ] ,
567568 rules : {
568569 '@typescript-eslint/unbound-method' : 'off' ,
570+ // vitest's `importOriginal<typeof import('...')>()` has no type-import equivalent.
571+ '@typescript-eslint/consistent-type-imports' : [
572+ 'error' ,
573+ { prefer : 'type-imports' , disallowTypeAnnotations : false , fixStyle : 'separate-type-imports' } ,
574+ ] ,
575+ } ,
576+ } ,
577+ {
578+ name : 'packages - vitest type tests' ,
579+ files : [ 'packages/*/src/**/*.test-d.ts' ] ,
580+ rules : {
581+ // Type tests bind values only to read their type back off with `typeof`.
582+ '@typescript-eslint/no-unused-vars' : 'off' ,
569583 } ,
570584 } ,
571585 {
0 commit comments