@nextlyhq/ui 0.0.2-alpha.52 → 0.0.2-alpha.56

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/dist/theme.css CHANGED
@@ -180,8 +180,9 @@
180
180
  --color-destructive-800: color-mix(in srgb, var(--nx-destructive), black 50%);
181
181
  --color-destructive-900: color-mix(in srgb, var(--nx-destructive), black 70%);
182
182
  --color-destructive-950: color-mix(in srgb, var(--nx-destructive), black 85%);
183
- /* Saturated fill for solid buttons; distinct from the text-tuned base so
184
- * white on-color text stays AA in both modes. */
183
+ /* Saturated fill for solid buttons, kept separate from the text-tuned base
184
+ * so each can be solved for its own job. The ink that lands on it is
185
+ * `-foreground`, which is white in light mode and black in dark. */
185
186
  --color-destructive-solid: var(--nx-destructive-solid);
186
187
  --color-destructive-foreground: var(--nx-destructive-foreground);
187
188
 
@@ -685,22 +686,23 @@
685
686
 
686
687
  :root {
687
688
  /* Base colors - using Slate neutral scale */
688
- --nx-background: oklch(1 0 0);
689
+ --nx-background: oklch(0.99 0 0);
689
690
  /* Pure white for weightless aesthetic */
690
- --nx-page-background: oklch(0.9818 0 0);
691
+ --nx-page-background: oklch(0.97 0 0);
691
692
  /* #f9f9f9 for page content area */
692
- --nx-foreground: oklch(0.2079 0.0399 265.73);
693
- /* slate-900 */
693
+ --nx-foreground: oklch(0 0 0);
694
694
 
695
695
  /* Component colors */
696
696
  --nx-card: oklch(1 0 0);
697
697
  /* pure white for cards to pop on off-white bg */
698
- --nx-card-foreground: oklch(0.2079 0.0399 265.73);
699
- /* slate-900 */
700
- --nx-popover: oklch(1 0 0);
698
+ --nx-card-foreground: oklch(0 0 0);
699
+ --nx-popover: oklch(0.99 0 0);
701
700
  /* white */
702
- --nx-popover-foreground: oklch(0.2079 0.0399 265.73);
703
- /* slate-900 */
701
+ --nx-popover-foreground: oklch(0 0 0);
702
+ /* Table headers, table footers and the pagination bar. A surface, so it lives
703
+ with the other surfaces: declared next to the component that paints it, a
704
+ palette change would move everything around it and leave it behind. */
705
+ --nx-table-header-bg: oklch(1 0 0);
704
706
 
705
707
  /* Brand colors - Blue-Cyan Professional Palette */
706
708
  --nx-primary: oklch(0 0 0);
@@ -709,41 +711,41 @@
709
711
  /* white */
710
712
 
711
713
  /* Secondary colors - using slate-100 for subtle backgrounds */
712
- --nx-secondary: oklch(0.9684 0.0068 247.9);
714
+ --nx-secondary: oklch(0.94 0 0);
713
715
  /* slate-100 */
714
- --nx-secondary-foreground: oklch(0.2079 0.0399 265.73);
715
- /* slate-900 */
716
+ --nx-secondary-foreground: oklch(0 0 0);
716
717
 
717
718
  /* Utility colors */
718
- --nx-muted: oklch(0.9696 0 0);
719
+ --nx-muted: oklch(0.97 0 0);
719
720
  /* Darkened so muted text clears WCAG 4.5:1 on the muted surface (was 4.35:1). */
720
- --nx-muted-foreground: oklch(0.54 0.0407 257.44);
721
- /* slate-500 */
722
- --nx-accent: oklch(0.5547 0.0407 257.44);
723
- /* Slate-500 per user request #64748b */
724
- --nx-accent-foreground: oklch(1 0 0);
725
- /* white */
721
+ --nx-muted-foreground: oklch(0.44 0 0);
722
+ /* A hover and selection SURFACE, not ink: one step off the page, with
723
+ `--nx-accent-foreground` as the only thing meant to be read on it. */
724
+ --nx-accent: oklch(0.94 0 0);
725
+ --nx-accent-foreground: oklch(0 0 0);
726
726
 
727
727
  /* State colors - WCAG 2.2 AA Compliant.
728
728
  * Each status has two roles kept as separate tokens, the industry-standard
729
729
  * split (Radix/Primer): the base token is the readable TEXT color used by
730
730
  * `text-destructive` and derived shades, and `-solid` is the saturated FILL
731
- * used by buttons under white on-color text. One value cannot serve both in
732
- * dark mode (a fill dark enough for white text is too dark to read as text
733
- * on the page), so they diverge there. */
731
+ * used by buttons under the on-color ink. In light mode both roles can be
732
+ * the same value and the ink is white. In dark mode they cannot: a fill
733
+ * light enough to read as text on the page is too light for white text, so
734
+ * success splits the fill and destructive flips its ink to black instead.
735
+ * The on-color token is what varies, not just the fill. */
734
736
  /* Darkened from red-500; renders as #d92c32, ~4.8:1 as text on white. */
735
- --nx-destructive: oklch(0.5778 0.2078 25.33);
736
- --nx-destructive-solid: oklch(0.5778 0.2078 25.33);
737
+ --nx-destructive: oklch(0.5661 0.19 23.03);
738
+ --nx-destructive-solid: oklch(0.5661 0.19 23.03);
737
739
  --nx-destructive-foreground: oklch(1 0 0);
738
740
  /* white */
739
741
  /* Darkened from green-600; renders as #00852c, ~4.8:1 as text on white. */
740
- --nx-success: oklch(0.53 0.17 149.2);
742
+ --nx-success: oklch(0.4981 0.17 149.2);
741
743
  --nx-success-solid: oklch(0.53 0.17 149.2);
742
744
  --nx-success-foreground: oklch(1 0 0);
743
745
  /* white */
744
746
  /* Darkened from amber-500 so it reads as text on white at WCAG 4.5:1 (was
745
747
  * 2.15:1); its light shades still tint badge/alert surfaces. */
746
- --nx-warning: oklch(0.565 0.1646 70.11);
748
+ --nx-warning: oklch(0.529 0.1646 70.11);
747
749
  --nx-warning-foreground: oklch(0.2079 0.0399 265.73);
748
750
  /* slate-900 - REQUIRED for AA contrast (warning-500 on white = 3.4:1, fails AA) */
749
751
 
@@ -763,14 +765,14 @@
763
765
  --nx-code-bg: oklch(0.9761 0.0035 247.86);
764
766
  --nx-code-fg: oklch(0.2079 0.0399 265.73);
765
767
  /* Darkened slightly to clear WCAG 4.5:1 on the code surface (was 4.44:1). */
766
- --nx-code-comment: oklch(0.541 0.0407 257.44);
768
+ --nx-code-comment: oklch(0.5264 0.0407 257.44);
767
769
  --nx-code-keyword: oklch(0.4882 0.2172 303.9);
768
770
  --nx-code-string: oklch(0.4478 0.1189 152.1);
769
771
  --nx-code-number: oklch(0.5106 0.1518 44.2);
770
772
  --nx-code-function: oklch(0.4757 0.1444 254.6);
771
773
  --nx-code-operator: oklch(0.4936 0.1418 8.4);
772
774
  /* Darkened slightly to clear WCAG 4.5:1 on the code surface (was 4.44:1). */
773
- --nx-code-punctuation: oklch(0.541 0.0407 257.44);
775
+ --nx-code-punctuation: oklch(0.5264 0.0407 257.44);
774
776
  --nx-code-variable: oklch(0.4694 0.1173 62.3);
775
777
  --nx-code-tag: oklch(0.5054 0.1905 27.5);
776
778
  --nx-code-deleted: oklch(0.5054 0.1905 27.5);
@@ -799,12 +801,12 @@
799
801
  /* For a scrim over CONTENT rather than the page: an image's hover actions,
800
802
  * where the content beneath still has to read through. */
801
803
  --nx-overlay-soft: oklch(0 0 0 / 0.4);
802
- --nx-border-subtle: oklch(0 0 0 / 0.08);
803
- --nx-border: oklch(0 0 0 / 0.14);
804
+ --nx-border-subtle: color-mix(in srgb, oklch(0.92 0 0), transparent 60%);
805
+ --nx-border: oklch(0.92 0 0);
804
806
  /* Alpha raised so the composited strong border clears WCAG 3:1 / ~4:1 (was 2.11:1). */
805
- --nx-border-strong: oklch(0 0 0 / 0.502);
807
+ --nx-border-strong: oklch(0.58 0 0);
806
808
  /* Darkened so the field border clears WCAG 3:1 on the page (was 2.32:1). */
807
- --nx-input: oklch(0.6454 0.0116 286.11);
809
+ --nx-input: oklch(0.6154 0 0);
808
810
  --nx-ring: var(--nx-primary);
809
811
 
810
812
  /* The base colour of the elevation ramp (--shadow-sm..xl, -inner-subtle,
@@ -815,7 +817,6 @@
815
817
  /* Chart colors for data visualization */
816
818
  --nx-chart-1: var(--nx-primary);
817
819
  --nx-chart-2: oklch(0.7399 0.1277 209.34);
818
- /* cyan-500 */
819
820
  --nx-chart-3: oklch(0.6273 0.17 149.2);
820
821
  /* green-600 */
821
822
  --nx-chart-4: oklch(0.7686 0.1646 70.11);
@@ -840,25 +841,25 @@
840
841
  /* white */
841
842
 
842
843
  /* Sidebar specific colors - using Slate scale */
843
- --nx-sidebar-background: var(--nx-background);
844
+ --nx-sidebar-background: oklch(0.99 0 0);
844
845
  /* flat with the content surface; nav is separated by borders, not fill */
845
- --nx-sidebar-foreground: oklch(0.372 0.0392 257.3);
846
- /* slate-700 */
847
- --nx-sidebar-primary: oklch(0.2079 0.0399 265.73);
848
- /* slate-900 */
849
- --nx-sidebar-primary-foreground: oklch(0.9838 0.0035 247.86);
846
+ /* Resting nav ink sits a step back from the active ink, so an active row
847
+ * reads as emphasised by its INK as well as its fill. The chosen palette
848
+ * used one value for both, which leaves the fill carrying the whole signal
849
+ * -- and the fill is the part a low-contrast surface weakens first. */
850
+ --nx-sidebar-foreground: oklch(0.44 0 0);
851
+ --nx-sidebar-primary: oklch(0 0 0);
852
+ --nx-sidebar-primary-foreground: oklch(1 0 0);
850
853
  /* slate-50 */
851
- --nx-sidebar-accent: oklch(0.9684 0.0068 247.9);
854
+ --nx-sidebar-accent: oklch(0.94 0 0);
852
855
  /* slate-100 */
853
- --nx-sidebar-accent-foreground: oklch(0.2079 0.0399 265.73);
854
- /* slate-900 */
856
+ --nx-sidebar-accent-foreground: oklch(0 0 0);
855
857
  /* Darkened so the sidebar border clears WCAG 3:1 on its surface (was 1.23:1). */
856
- --nx-sidebar-border: oklch(0.6446 0.0126 255.53);
857
- /* slate-200 */
858
+ --nx-sidebar-border: oklch(0.63 0 0);
858
859
  --nx-sidebar-ring: var(--nx-primary);
859
860
 
860
861
  /* Data table specific colors */
861
- --nx-table-row-hover: oklch(0.9848 0 0);
862
+ --nx-table-row-hover: oklch(0.97 0 0);
862
863
  --nx-table-row-selected: var(--nx-primary);
863
864
  --nx-table-border: var(--nx-border);
864
865
  }
@@ -866,61 +867,67 @@
866
867
  /* Dark theme overrides when using class-based theming */
867
868
  .dark {
868
869
  /* Base colors - using Slate dark scale */
869
- --nx-background: oklch(0.1358 0.0163 262.71);
870
+ --nx-background: oklch(0 0 0);
870
871
  /* ultra deep dark background (darker than slate-950) */
871
- --nx-page-background: oklch(0.1358 0.0163 262.71);
872
+ --nx-page-background: oklch(0.23 0 0);
872
873
  /* Matches background in dark mode */
873
- --nx-foreground: oklch(0.9838 0.0035 247.86);
874
+ --nx-foreground: oklch(1 0 0);
874
875
  /* slate-50 */
875
876
 
876
877
  /* Component colors */
877
- --nx-card: oklch(0.1916 0.0228 266.36);
878
+ --nx-card: oklch(0.14 0 0);
878
879
  /* raised one tonal step above --nx-background (222 47% 4%) so panels/cards
879
880
  * read as distinct surfaces in dark mode instead of merging into the page */
880
- --nx-card-foreground: oklch(0.9838 0.0035 247.86);
881
+ --nx-card-foreground: oklch(1 0 0);
881
882
  /* slate-50 */
882
883
  /* Darkened toward the card elevation so borders, inputs, and muted text
883
884
  * placed on a popover clear their WCAG minimums (border was 2.85:1, input
884
885
  * 1.73:1); the surface was too light for its own contents. */
885
- --nx-popover: oklch(0.24 0.0249 257.44);
886
- /* slate-800 */
887
- --nx-popover-foreground: oklch(0.9838 0.0035 247.86);
886
+ --nx-popover: oklch(0.18 0 0);
887
+ --nx-popover-foreground: oklch(1 0 0);
888
888
  /* slate-50 */
889
+ /* A step above the card beneath it, carrying no chroma of its own: a hue here
890
+ would tint the header band independently of every surface around it. */
891
+ --nx-table-header-bg: oklch(0.1573 0 0);
889
892
 
890
893
  /* Brand colors - Blue-Cyan Professional Palette (Dark Mode) */
891
894
  --nx-primary: oklch(1 0 0); /* High contrast White for dark mode */
892
- --nx-primary-foreground: oklch(0.2079 0.0399 265.73);
893
- /* slate-900 */
895
+ --nx-primary-foreground: oklch(0 0 0);
894
896
 
895
897
  /* Secondary colors - using slate-800 for dark backgrounds */
896
- --nx-secondary: oklch(0.28 0.0369 259.97);
898
+ --nx-secondary: oklch(0.25 0 0);
897
899
  /* slate-800 */
898
- --nx-secondary-foreground: oklch(0.9838 0.0035 247.86);
900
+ --nx-secondary-foreground: oklch(1 0 0);
899
901
  /* slate-50 */
900
902
 
901
903
  /* Utility colors */
902
- --nx-muted: oklch(0.28 0.0369 259.97);
903
- /* slate-800 */
904
- --nx-muted-foreground: oklch(0.7107 0.0351 256.79);
905
- /* slate-400 */
906
- --nx-accent: oklch(
907
- 0.5547 0.0407 257.44
908
- ); /* Slate-500 per user request #64748b */
904
+ --nx-muted: oklch(0.23 0 0);
905
+ --nx-muted-foreground: oklch(0.72 0 0);
906
+ /* The hover and selected surface: one step lighter than --nx-muted so a row
907
+ under the pointer separates from a merely quiet one. Neutral, not the blue
908
+ it was once labelled -- a tinted accent reads as a status on a surface that
909
+ carries none. */
910
+ --nx-accent: oklch(0.32 0 0);
909
911
  --nx-accent-foreground: oklch(1 0 0);
910
912
  /* white */
911
913
 
912
914
  /* State colors - WCAG 2.2 AA Compliant (Dark Mode).
913
915
  * The base token is lightened from the fill color so it reads as text on the
914
- * dark page at 4.5:1; `-solid` keeps the darker fill so white on-color text
915
- * on buttons still clears 4.5:1. Warning is already light enough to read on
916
- * dark, so its base is unchanged here. */
916
+ * dark page at 4.5:1. The two statuses then resolve the on-color problem
917
+ * differently, because a fill light enough to read as text on a dark page is
918
+ * too light for white text: destructive keeps ONE value for base and fill
919
+ * and flips its ink to black (6.90:1), while success keeps a darker separate
920
+ * fill and keeps its ink white (4.80:1). Warning is already light enough to
921
+ * read on dark, so its base is unchanged here. */
917
922
  /* Lightened red so it reads as text at WCAG 4.5:1 on the dark page and on the
918
923
  * lighter popover surface (was 4.17:1 on the page, 4.25:1 on a popover). */
919
- --nx-destructive: oklch(0.65 0.2078 25.33);
920
- /* Darker red fill so white on-color button text clears 4.5:1. */
921
- --nx-destructive-solid: oklch(0.5778 0.2078 25.33);
922
- --nx-destructive-foreground: oklch(1 0 0);
923
- /* white */
924
+ --nx-destructive: oklch(0.69 0.2 23.91);
925
+ /* Same value as the base: the button fill needs no darkening here because
926
+ its ink is black rather than white. */
927
+ --nx-destructive-solid: oklch(0.69 0.2 23.91);
928
+ /* Black, not white. The dark-mode fill is light enough that black on-color
929
+ text reads at 6.90:1 where white would fall below the minimum. */
930
+ --nx-destructive-foreground: oklch(0 0 0);
924
931
  /* Lightened green so it reads as text at WCAG 4.5:1 on the dark page and on
925
932
  * the lighter popover surface (was 4.17:1 on the page, 4.29:1 on a popover). */
926
933
  --nx-success: oklch(0.6 0.1921 149.58);
@@ -968,23 +975,25 @@
968
975
  --nx-overlay: oklch(0 0 0 / 0.7);
969
976
  --nx-overlay-strong: oklch(0 0 0 / 0.85);
970
977
  --nx-overlay-soft: oklch(0 0 0 / 0.5);
971
- --nx-border-subtle: oklch(1 0 0 / 0.08);
972
- --nx-border: oklch(1 0 0 / 0.14);
978
+ --nx-border-subtle: color-mix(in srgb, oklch(0.26 0 0), transparent 60%);
979
+ --nx-border: oklch(0.26 0 0);
973
980
  /* Alpha raised so the composited strong border clears WCAG 3:1 / ~4:1 (was 3.00:1). */
974
- --nx-border-strong: oklch(1 0 0 / 0.418);
981
+ --nx-border-strong: oklch(0.5444 0 0);
975
982
  /* Brightened so the field border clears WCAG 3:1 on the lighter popover
976
983
  * surface as well as the page and card (was 1.73:1 on a popover). */
977
- --nx-input: oklch(0.54 0.0128 285.92);
984
+ --nx-input: oklch(0.5445 0 0);
978
985
  --nx-ring: var(--nx-primary);
979
986
 
980
987
  /* Black in dark mode too: the ramp reads as depth against the deep surfaces
981
- * rather than as a glow, which a lightened shadow colour would produce. */
988
+ * rather than as a glow, which a lightened shadow colour would produce.
989
+ * One --shadow-* ramp serves both modes and inlines a single set of
990
+ * color-mix opacities, so this token is the only place elevation is
991
+ * retuned -- overriding it resolves the whole ramp to that hue. */
982
992
  --nx-shadow-color: oklch(0 0 0);
983
993
 
984
994
  /* Chart colors for data visualization (same as light mode) */
985
995
  --nx-chart-1: var(--nx-primary);
986
996
  --nx-chart-2: oklch(0.7399 0.1277 209.34);
987
- /* cyan-500 */
988
997
  --nx-chart-3: oklch(0.7229 0.1921 149.58);
989
998
  /* green-500 */
990
999
  --nx-chart-4: oklch(0.7686 0.1646 70.11);
@@ -993,7 +1002,7 @@
993
1002
  /* red-500 */
994
1003
 
995
1004
  /* Sidebar specific colors - dark mode */
996
- --nx-sidebar-background: var(--nx-background);
1005
+ --nx-sidebar-background: oklch(0.18 0 0);
997
1006
  /* flat with the content surface; nav is separated by borders, not fill */
998
1007
  /* Resting nav ink, dimmed off slate-50 so it sits a step below
999
1008
  * --nx-sidebar-accent-foreground the way the light pair does: the lightness
@@ -1001,22 +1010,19 @@
1001
1010
  * slate-900, so an active row reads as emphasised by its ink and not only by
1002
1011
  * its fill. Chroma and hue track the theme's other secondary ink
1003
1012
  * (--nx-muted-foreground) so lightness alone carries the hierarchy. */
1004
- --nx-sidebar-foreground: oklch(0.82 0.0351 256.79);
1005
- --nx-sidebar-primary: oklch(0.9838 0.0035 247.86);
1013
+ --nx-sidebar-foreground: oklch(0.72 0 0);
1014
+ --nx-sidebar-primary: oklch(1 0 0);
1006
1015
  /* slate-50 */
1007
- --nx-sidebar-primary-foreground: oklch(0.2079 0.0399 265.73);
1008
- /* slate-900 */
1009
- --nx-sidebar-accent: oklch(0.28 0.0369 259.97);
1010
- /* slate-800 */
1011
- --nx-sidebar-accent-foreground: oklch(0.9838 0.0035 247.86);
1016
+ --nx-sidebar-primary-foreground: oklch(0 0 0);
1017
+ --nx-sidebar-accent: oklch(0.32 0 0);
1018
+ --nx-sidebar-accent-foreground: oklch(1 0 0);
1012
1019
  /* slate-50 */
1013
1020
  /* Lightened so the sidebar border clears WCAG 3:1 on its surface (was 1.19:1). */
1014
- --nx-sidebar-border: oklch(0.4975 0.0129 257.43);
1021
+ --nx-sidebar-border: oklch(0.519 0 0);
1015
1022
  --nx-sidebar-ring: var(--nx-primary);
1016
1023
 
1017
1024
  /* Data table specific colors - dark mode */
1018
- --nx-table-row-hover: oklch(0.28 0.0369 259.97);
1019
- /* slate-800 */
1025
+ --nx-table-row-hover: oklch(0.23 0 0);
1020
1026
  --nx-table-row-selected: var(--nx-primary);
1021
1027
  --nx-table-border: var(--nx-border);
1022
1028
  /* inherit the retuned white-alpha border (was a fixed faint slate) */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextlyhq/ui",
3
- "version": "0.0.2-alpha.52",
3
+ "version": "0.0.2-alpha.56",
4
4
  "description": "Nextly UI — Reusable React component library for Nextly plugins and custom admin UIs",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -46,6 +46,16 @@
46
46
  "default": "./dist/utils.cjs"
47
47
  }
48
48
  },
49
+ "./color": {
50
+ "import": {
51
+ "types": "./dist/color.d.ts",
52
+ "default": "./dist/color.mjs"
53
+ },
54
+ "require": {
55
+ "types": "./dist/color.d.cts",
56
+ "default": "./dist/color.cjs"
57
+ }
58
+ },
49
59
  "./theme.css": "./dist/theme.css",
50
60
  "./styles.css": "./dist/styles.css",
51
61
  "./styles.scoped.css": "./dist/styles.scoped.css"
@@ -68,6 +78,7 @@
68
78
  "devDependencies": {
69
79
  "@tailwindcss/cli": "^4.3.2",
70
80
  "@types/culori": "^4.0.1",
81
+ "@types/node": "^20.19.17",
71
82
  "@types/react": "19.2.0",
72
83
  "@types/react-dom": "19.2.0",
73
84
  "@vitejs/plugin-react": "^5.1.0",
@@ -86,9 +97,9 @@
86
97
  "typescript": "^5.9.3",
87
98
  "vite-tsconfig-paths": "^5.1.4",
88
99
  "vitest": "^4.1.0",
89
- "@nextlyhq/admin-css": "0.0.2-alpha.52",
90
- "@nextlyhq/eslint-config": "0.0.2-alpha.52",
91
- "@nextlyhq/tsconfig": "0.0.2-alpha.52"
100
+ "@nextlyhq/eslint-config": "0.0.2-alpha.56",
101
+ "@nextlyhq/admin-css": "0.0.2-alpha.56",
102
+ "@nextlyhq/tsconfig": "0.0.2-alpha.56"
92
103
  },
93
104
  "dependencies": {
94
105
  "@radix-ui/react-accordion": "^1.2.12",
@@ -104,10 +115,12 @@
104
115
  "@radix-ui/react-radio-group": "^1.3.8",
105
116
  "@radix-ui/react-select": "^2.2.6",
106
117
  "@radix-ui/react-separator": "^1.1.8",
118
+ "@radix-ui/react-slider": "^1.4.7",
107
119
  "@radix-ui/react-slot": "^1.2.4",
108
120
  "@radix-ui/react-switch": "^1.2.6",
109
121
  "@radix-ui/react-tabs": "^1.1.13",
110
122
  "@radix-ui/react-tooltip": "^1.2.8",
123
+ "@tanstack/react-virtual": "^3.14.9",
111
124
  "class-variance-authority": "^0.7.1",
112
125
  "clsx": "^2.1.1",
113
126
  "cmdk": "^1.1.1",
@@ -135,7 +148,7 @@
135
148
  "build:js": "rimraf dist && tsup && tsup --config tsup.server-safe.config.ts && node scripts/check-client-directive.mjs",
136
149
  "build:css": "node scripts/build-css.mjs",
137
150
  "dev": "tsup --watch & tsup --config tsup.server-safe.config.ts --watch & wait",
138
- "check-types": "tsc --noEmit",
151
+ "check-types": "tsc --noEmit && tsc --noEmit -p tsconfig.tests.json",
139
152
  "lint": "eslint . --max-warnings 0",
140
153
  "lint:fix": "eslint . --fix",
141
154
  "test": "vitest run --passWithNoTests",