@k3-tech/react-kit 0.0.65 → 0.0.67

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.
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
2
  @layer properties {
3
3
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
4
  *, :before, :after, ::backdrop {
@@ -146,7 +146,6 @@
146
146
  --tracking-tight: -.025em;
147
147
  --tracking-normal: 0em;
148
148
  --tracking-wide: .025em;
149
- --tracking-wider: .05em;
150
149
  --tracking-widest: .1em;
151
150
  --leading-tight: 1.25;
152
151
  --leading-snug: 1.375;
@@ -797,6 +796,10 @@
797
796
  margin-bottom: calc(var(--spacing) * 1);
798
797
  }
799
798
 
799
+ .mb-1\.5 {
800
+ margin-bottom: calc(var(--spacing) * 1.5);
801
+ }
802
+
800
803
  .mb-2 {
801
804
  margin-bottom: calc(var(--spacing) * 2);
802
805
  }
@@ -833,6 +836,10 @@
833
836
  margin-left: calc(var(--spacing) * 2);
834
837
  }
835
838
 
839
+ .ml-\[18px\] {
840
+ margin-left: 18px;
841
+ }
842
+
836
843
  .ml-auto {
837
844
  margin-left: auto;
838
845
  }
@@ -2102,6 +2109,10 @@
2102
2109
  background-color: var(--color-bg);
2103
2110
  }
2104
2111
 
2112
+ .bg-\[\#30A4A1\] {
2113
+ background-color: #30a4a1;
2114
+ }
2115
+
2105
2116
  .bg-accent {
2106
2117
  background-color: var(--accent);
2107
2118
  }
@@ -2248,17 +2259,7 @@
2248
2259
  background-color: var(--popover);
2249
2260
  }
2250
2261
 
2251
- .bg-primary, .bg-primary\/10 {
2252
- background-color: var(--primary);
2253
- }
2254
-
2255
- @supports (color: color-mix(in lab, red, red)) {
2256
- .bg-primary\/10 {
2257
- background-color: color-mix(in oklab, var(--primary) 10%, transparent);
2258
- }
2259
- }
2260
-
2261
- .bg-primary\/20 {
2262
+ .bg-primary, .bg-primary\/20 {
2262
2263
  background-color: var(--primary);
2263
2264
  }
2264
2265
 
@@ -2284,6 +2285,16 @@
2284
2285
  background-color: var(--sidebar-border);
2285
2286
  }
2286
2287
 
2288
+ .bg-sidebar-primary, .bg-sidebar-primary\/10 {
2289
+ background-color: var(--sidebar-primary);
2290
+ }
2291
+
2292
+ @supports (color: color-mix(in lab, red, red)) {
2293
+ .bg-sidebar-primary\/10 {
2294
+ background-color: color-mix(in oklab, var(--sidebar-primary) 10%, transparent);
2295
+ }
2296
+ }
2297
+
2287
2298
  .bg-teal-50 {
2288
2299
  background-color: var(--color-teal-50);
2289
2300
  }
@@ -2308,6 +2319,16 @@
2308
2319
  background-color: var(--color-white);
2309
2320
  }
2310
2321
 
2322
+ .bg-white\/20 {
2323
+ background-color: #fff3;
2324
+ }
2325
+
2326
+ @supports (color: color-mix(in lab, red, red)) {
2327
+ .bg-white\/20 {
2328
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
2329
+ }
2330
+ }
2331
+
2311
2332
  .fill-current {
2312
2333
  fill: currentColor;
2313
2334
  }
@@ -2504,22 +2525,10 @@
2504
2525
  padding-left: calc(var(--spacing) * 4);
2505
2526
  }
2506
2527
 
2507
- .pl-6 {
2508
- padding-left: calc(var(--spacing) * 6);
2509
- }
2510
-
2511
2528
  .pl-8 {
2512
2529
  padding-left: calc(var(--spacing) * 8);
2513
2530
  }
2514
2531
 
2515
- .pl-10 {
2516
- padding-left: calc(var(--spacing) * 10);
2517
- }
2518
-
2519
- .pl-14 {
2520
- padding-left: calc(var(--spacing) * 14);
2521
- }
2522
-
2523
2532
  .text-center {
2524
2533
  text-align: center;
2525
2534
  }
@@ -2579,6 +2588,10 @@
2579
2588
  font-size: .8rem;
2580
2589
  }
2581
2590
 
2591
+ .text-\[10\.5px\] {
2592
+ font-size: 10.5px;
2593
+ }
2594
+
2582
2595
  .text-\[10px\] {
2583
2596
  font-size: 10px;
2584
2597
  }
@@ -2623,6 +2636,11 @@
2623
2636
  font-weight: var(--font-weight-semibold);
2624
2637
  }
2625
2638
 
2639
+ .tracking-\[0\.14em\] {
2640
+ --tw-tracking: .14em;
2641
+ letter-spacing: .14em;
2642
+ }
2643
+
2626
2644
  .tracking-tight {
2627
2645
  --tw-tracking: var(--tracking-tight);
2628
2646
  letter-spacing: var(--tracking-tight);
@@ -2633,11 +2651,6 @@
2633
2651
  letter-spacing: var(--tracking-wide);
2634
2652
  }
2635
2653
 
2636
- .tracking-wider {
2637
- --tw-tracking: var(--tracking-wider);
2638
- letter-spacing: var(--tracking-wider);
2639
- }
2640
-
2641
2654
  .tracking-widest {
2642
2655
  --tw-tracking: var(--tracking-widest);
2643
2656
  letter-spacing: var(--tracking-widest);
@@ -2655,6 +2668,10 @@
2655
2668
  white-space: nowrap;
2656
2669
  }
2657
2670
 
2671
+ .text-\[\#9CA3AF\] {
2672
+ color: #9ca3af;
2673
+ }
2674
+
2658
2675
  .text-accent-foreground {
2659
2676
  color: var(--accent-foreground);
2660
2677
  }
@@ -2733,6 +2750,14 @@
2733
2750
  }
2734
2751
  }
2735
2752
 
2753
+ .text-sidebar-primary {
2754
+ color: var(--sidebar-primary);
2755
+ }
2756
+
2757
+ .text-sidebar-primary-foreground {
2758
+ color: var(--sidebar-primary-foreground);
2759
+ }
2760
+
2736
2761
  .text-teal-600 {
2737
2762
  color: var(--color-teal-600);
2738
2763
  }
@@ -3843,14 +3868,14 @@
3843
3868
  }
3844
3869
  }
3845
3870
 
3846
- .data-\[active\=true\]\:bg-primary[data-active="true"] {
3847
- background-color: var(--primary);
3848
- }
3849
-
3850
3871
  .data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
3851
3872
  background-color: var(--sidebar-accent);
3852
3873
  }
3853
3874
 
3875
+ .data-\[active\=true\]\:bg-sidebar-primary[data-active="true"] {
3876
+ background-color: var(--sidebar-primary);
3877
+ }
3878
+
3854
3879
  .data-\[active\=true\]\:font-medium[data-active="true"] {
3855
3880
  --tw-font-weight: var(--font-weight-medium);
3856
3881
  font-weight: var(--font-weight-medium);
@@ -3860,14 +3885,14 @@
3860
3885
  color: var(--accent-foreground);
3861
3886
  }
3862
3887
 
3863
- .data-\[active\=true\]\:text-primary-foreground[data-active="true"] {
3864
- color: var(--primary-foreground);
3865
- }
3866
-
3867
3888
  .data-\[active\=true\]\:text-sidebar-accent-foreground[data-active="true"] {
3868
3889
  color: var(--sidebar-accent-foreground);
3869
3890
  }
3870
3891
 
3892
+ .data-\[active\=true\]\:text-sidebar-primary-foreground[data-active="true"] {
3893
+ color: var(--sidebar-primary-foreground);
3894
+ }
3895
+
3871
3896
  .data-\[active\=true\]\:ring-\[3px\][data-active="true"] {
3872
3897
  --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3873
3898
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
2
  @layer properties {
3
3
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
4
  *, :before, :after, ::backdrop {
@@ -146,7 +146,6 @@
146
146
  --tracking-tight: -.025em;
147
147
  --tracking-normal: 0em;
148
148
  --tracking-wide: .025em;
149
- --tracking-wider: .05em;
150
149
  --tracking-widest: .1em;
151
150
  --leading-tight: 1.25;
152
151
  --leading-snug: 1.375;
@@ -797,6 +796,10 @@
797
796
  margin-bottom: calc(var(--spacing) * 1);
798
797
  }
799
798
 
799
+ .mb-1\.5 {
800
+ margin-bottom: calc(var(--spacing) * 1.5);
801
+ }
802
+
800
803
  .mb-2 {
801
804
  margin-bottom: calc(var(--spacing) * 2);
802
805
  }
@@ -833,6 +836,10 @@
833
836
  margin-left: calc(var(--spacing) * 2);
834
837
  }
835
838
 
839
+ .ml-\[18px\] {
840
+ margin-left: 18px;
841
+ }
842
+
836
843
  .ml-auto {
837
844
  margin-left: auto;
838
845
  }
@@ -2102,6 +2109,10 @@
2102
2109
  background-color: var(--color-bg);
2103
2110
  }
2104
2111
 
2112
+ .bg-\[\#30A4A1\] {
2113
+ background-color: #30a4a1;
2114
+ }
2115
+
2105
2116
  .bg-accent {
2106
2117
  background-color: var(--accent);
2107
2118
  }
@@ -2248,17 +2259,7 @@
2248
2259
  background-color: var(--popover);
2249
2260
  }
2250
2261
 
2251
- .bg-primary, .bg-primary\/10 {
2252
- background-color: var(--primary);
2253
- }
2254
-
2255
- @supports (color: color-mix(in lab, red, red)) {
2256
- .bg-primary\/10 {
2257
- background-color: color-mix(in oklab, var(--primary) 10%, transparent);
2258
- }
2259
- }
2260
-
2261
- .bg-primary\/20 {
2262
+ .bg-primary, .bg-primary\/20 {
2262
2263
  background-color: var(--primary);
2263
2264
  }
2264
2265
 
@@ -2284,6 +2285,16 @@
2284
2285
  background-color: var(--sidebar-border);
2285
2286
  }
2286
2287
 
2288
+ .bg-sidebar-primary, .bg-sidebar-primary\/10 {
2289
+ background-color: var(--sidebar-primary);
2290
+ }
2291
+
2292
+ @supports (color: color-mix(in lab, red, red)) {
2293
+ .bg-sidebar-primary\/10 {
2294
+ background-color: color-mix(in oklab, var(--sidebar-primary) 10%, transparent);
2295
+ }
2296
+ }
2297
+
2287
2298
  .bg-teal-50 {
2288
2299
  background-color: var(--color-teal-50);
2289
2300
  }
@@ -2308,6 +2319,16 @@
2308
2319
  background-color: var(--color-white);
2309
2320
  }
2310
2321
 
2322
+ .bg-white\/20 {
2323
+ background-color: #fff3;
2324
+ }
2325
+
2326
+ @supports (color: color-mix(in lab, red, red)) {
2327
+ .bg-white\/20 {
2328
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
2329
+ }
2330
+ }
2331
+
2311
2332
  .fill-current {
2312
2333
  fill: currentColor;
2313
2334
  }
@@ -2504,22 +2525,10 @@
2504
2525
  padding-left: calc(var(--spacing) * 4);
2505
2526
  }
2506
2527
 
2507
- .pl-6 {
2508
- padding-left: calc(var(--spacing) * 6);
2509
- }
2510
-
2511
2528
  .pl-8 {
2512
2529
  padding-left: calc(var(--spacing) * 8);
2513
2530
  }
2514
2531
 
2515
- .pl-10 {
2516
- padding-left: calc(var(--spacing) * 10);
2517
- }
2518
-
2519
- .pl-14 {
2520
- padding-left: calc(var(--spacing) * 14);
2521
- }
2522
-
2523
2532
  .text-center {
2524
2533
  text-align: center;
2525
2534
  }
@@ -2579,6 +2588,10 @@
2579
2588
  font-size: .8rem;
2580
2589
  }
2581
2590
 
2591
+ .text-\[10\.5px\] {
2592
+ font-size: 10.5px;
2593
+ }
2594
+
2582
2595
  .text-\[10px\] {
2583
2596
  font-size: 10px;
2584
2597
  }
@@ -2623,6 +2636,11 @@
2623
2636
  font-weight: var(--font-weight-semibold);
2624
2637
  }
2625
2638
 
2639
+ .tracking-\[0\.14em\] {
2640
+ --tw-tracking: .14em;
2641
+ letter-spacing: .14em;
2642
+ }
2643
+
2626
2644
  .tracking-tight {
2627
2645
  --tw-tracking: var(--tracking-tight);
2628
2646
  letter-spacing: var(--tracking-tight);
@@ -2633,11 +2651,6 @@
2633
2651
  letter-spacing: var(--tracking-wide);
2634
2652
  }
2635
2653
 
2636
- .tracking-wider {
2637
- --tw-tracking: var(--tracking-wider);
2638
- letter-spacing: var(--tracking-wider);
2639
- }
2640
-
2641
2654
  .tracking-widest {
2642
2655
  --tw-tracking: var(--tracking-widest);
2643
2656
  letter-spacing: var(--tracking-widest);
@@ -2655,6 +2668,10 @@
2655
2668
  white-space: nowrap;
2656
2669
  }
2657
2670
 
2671
+ .text-\[\#9CA3AF\] {
2672
+ color: #9ca3af;
2673
+ }
2674
+
2658
2675
  .text-accent-foreground {
2659
2676
  color: var(--accent-foreground);
2660
2677
  }
@@ -2733,6 +2750,14 @@
2733
2750
  }
2734
2751
  }
2735
2752
 
2753
+ .text-sidebar-primary {
2754
+ color: var(--sidebar-primary);
2755
+ }
2756
+
2757
+ .text-sidebar-primary-foreground {
2758
+ color: var(--sidebar-primary-foreground);
2759
+ }
2760
+
2736
2761
  .text-teal-600 {
2737
2762
  color: var(--color-teal-600);
2738
2763
  }
@@ -3843,14 +3868,14 @@
3843
3868
  }
3844
3869
  }
3845
3870
 
3846
- .data-\[active\=true\]\:bg-primary[data-active="true"] {
3847
- background-color: var(--primary);
3848
- }
3849
-
3850
3871
  .data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
3851
3872
  background-color: var(--sidebar-accent);
3852
3873
  }
3853
3874
 
3875
+ .data-\[active\=true\]\:bg-sidebar-primary[data-active="true"] {
3876
+ background-color: var(--sidebar-primary);
3877
+ }
3878
+
3854
3879
  .data-\[active\=true\]\:font-medium[data-active="true"] {
3855
3880
  --tw-font-weight: var(--font-weight-medium);
3856
3881
  font-weight: var(--font-weight-medium);
@@ -3860,14 +3885,14 @@
3860
3885
  color: var(--accent-foreground);
3861
3886
  }
3862
3887
 
3863
- .data-\[active\=true\]\:text-primary-foreground[data-active="true"] {
3864
- color: var(--primary-foreground);
3865
- }
3866
-
3867
3888
  .data-\[active\=true\]\:text-sidebar-accent-foreground[data-active="true"] {
3868
3889
  color: var(--sidebar-accent-foreground);
3869
3890
  }
3870
3891
 
3892
+ .data-\[active\=true\]\:text-sidebar-primary-foreground[data-active="true"] {
3893
+ color: var(--sidebar-primary-foreground);
3894
+ }
3895
+
3871
3896
  .data-\[active\=true\]\:ring-\[3px\][data-active="true"] {
3872
3897
  --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3873
3898
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2,7 +2,7 @@ import { Slot } from '@radix-ui/react-slot';
2
2
  import { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
3
3
  import * as React from 'react';
4
4
  import type * as LabelPrimitive from '@radix-ui/react-label';
5
- declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) => import("react").JSX.Element;
5
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
6
6
  declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
7
7
  declare const useFormField: () => {
8
8
  invalid: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/shadcn/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,sNAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAUF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAiBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAC"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/shadcn/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,4MAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAUF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAiBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k3-tech/react-kit",
3
- "version": "0.0.65",
3
+ "version": "0.0.67",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -92,4 +92,4 @@
92
92
  "tailwindcss": "^4.1.12",
93
93
  "tw-animate-css": "^1.3.7"
94
94
  }
95
- }
95
+ }
@@ -89,13 +89,20 @@ function AdminLayoutContent({
89
89
  const isOpen =
90
90
  openMap[item.id] ?? (hasChildren && hasActiveDescendant(item));
91
91
 
92
- const indentClassMap = ['', 'pl-6', 'pl-10', 'pl-14'] as const;
93
- const indent = indentClassMap[Math.min(level, 3)];
92
+ // Nesting indentation is provided by the bordered <ul> wrapper around each
93
+ // child group (see below), so individual rows need no extra left padding.
94
+ const indent = '';
95
+
96
+ // When a row is active its background is the (teal) sidebar-primary, so
97
+ // icon + label must flip to the contrasting foreground to stay readable.
98
+ const activeText = isActive
99
+ ? 'text-sidebar-primary-foreground'
100
+ : 'text-sidebar-foreground group-hover:text-sidebar-accent-foreground';
94
101
 
95
102
  const content = (
96
103
  <SidebarMenuItem
97
104
  key={item.id}
98
- className={`mb-1 ${level > 0 ? 'ml-1' : ''}`}
105
+ className="mb-1"
99
106
  >
100
107
  <SidebarMenuButton
101
108
  asChild={!!item.url && !hasChildren}
@@ -105,22 +112,24 @@ function AdminLayoutContent({
105
112
  if (hasChildren) setOpen(item.id);
106
113
  }}
107
114
  disabled={item.disabled}
108
- className={`group relative overflow-hidden rounded-lg transition-all duration-200 hover:bg-sidebar-accent/70 data-[active=true]:bg-primary data-[active=true]:text-primary-foreground ${indent}`}
115
+ className={`group relative overflow-hidden rounded-lg transition-all duration-200 hover:bg-sidebar-accent/70 data-[active=true]:bg-sidebar-primary data-[active=true]:text-sidebar-primary-foreground ${indent}`}
109
116
  >
110
117
  {item.url && !hasChildren ? (
111
118
  <Link to={item.url} className="flex items-center gap-3 px-3">
112
119
  {item.icon && (
113
120
  <item.icon
114
- className={`h-4 w-4 transition-colors ${isActive ? 'text-primary-foreground' : 'text-sidebar-foreground group-hover:text-sidebar-accent-foreground'}`}
121
+ className={`h-4 w-4 transition-colors ${activeText}`}
115
122
  />
116
123
  )}
117
124
  <span
118
- className={`font-medium transition-colors ${isActive ? 'text-primary-foreground' : 'text-sidebar-foreground group-hover:text-sidebar-accent-foreground'}`}
125
+ className={`font-medium transition-colors ${activeText}`}
119
126
  >
120
127
  {item.title}
121
128
  </span>
122
129
  {item.badge && (
123
- <span className="ml-auto text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full">
130
+ <span
131
+ className={`ml-auto text-xs px-2 py-0.5 rounded-full ${isActive ? 'bg-white/20 text-sidebar-primary-foreground' : 'bg-sidebar-primary/10 text-sidebar-primary'}`}
132
+ >
124
133
  {item.badge}
125
134
  </span>
126
135
  )}
@@ -129,28 +138,36 @@ function AdminLayoutContent({
129
138
  <div className="flex items-center gap-3 px-3 py-2.5 w-full">
130
139
  {hasChildren &&
131
140
  (isOpen ? (
132
- <ChevronDown className="h-3.5 w-3.5 text-muted-foreground" />
141
+ <ChevronDown
142
+ className={`h-3.5 w-3.5 ${isActive ? 'text-sidebar-primary-foreground' : 'text-muted-foreground'}`}
143
+ />
133
144
  ) : (
134
- <ChevronRight className="h-3.5 w-3.5 text-muted-foreground" />
145
+ <ChevronRight
146
+ className={`h-3.5 w-3.5 ${isActive ? 'text-sidebar-primary-foreground' : 'text-muted-foreground'}`}
147
+ />
135
148
  ))}
136
149
  {item.icon ? (
137
- <item.icon className="h-4 w-4 text-sidebar-foreground group-hover:text-sidebar-accent-foreground" />
150
+ <item.icon className={`h-4 w-4 ${activeText}`} />
138
151
  ) : (
139
- <FallbackIcon className="h-3.5 w-3.5 text-muted-foreground" />
152
+ <FallbackIcon
153
+ className={`h-3.5 w-3.5 ${isActive ? 'text-sidebar-primary-foreground' : 'text-muted-foreground'}`}
154
+ />
140
155
  )}
141
156
  {item.url ? (
142
157
  <Link to={item.url} className="flex-1 text-left">
143
- <span className="font-medium text-sidebar-foreground group-hover:text-sidebar-accent-foreground">
158
+ <span className={`font-medium ${activeText}`}>
144
159
  {item.title}
145
160
  </span>
146
161
  </Link>
147
162
  ) : (
148
- <span className="font-medium text-sidebar-foreground group-hover:text-sidebar-accent-foreground flex-1">
163
+ <span className={`font-medium ${activeText} flex-1`}>
149
164
  {item.title}
150
165
  </span>
151
166
  )}
152
167
  {item.badge && (
153
- <span className="ml-auto text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full">
168
+ <span
169
+ className={`ml-auto text-xs px-2 py-0.5 rounded-full ${isActive ? 'bg-white/20 text-sidebar-primary-foreground' : 'bg-sidebar-primary/10 text-sidebar-primary'}`}
170
+ >
154
171
  {item.badge}
155
172
  </span>
156
173
  )}
@@ -162,7 +179,7 @@ function AdminLayoutContent({
162
179
  // (rendered as <li>) children don't end up as direct descendants of
163
180
  // a <div> inside another <li> — that's invalid HTML and triggers a
164
181
  // React hydration warning.
165
- <ul className="mt-1 flex flex-col list-none p-0 m-0">
182
+ <ul className="mt-1 ml-[18px] flex flex-col list-none border-l border-sidebar-border pl-2 py-0.5 m-0">
166
183
  {(item.children ?? []).map((child: AdminMenuItem) =>
167
184
  renderItem(child, Math.min(level + 1, 3)),
168
185
  )}
@@ -186,7 +203,7 @@ function AdminLayoutContent({
186
203
  ) : (
187
204
  <div className="sidebar-header-content flex items-center justify-center px-4 py-3">
188
205
  <div className="flex items-center gap-2">
189
- <div className="flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground">
206
+ <div className="flex h-8 w-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground">
190
207
  <SidebarHeaderIcon className="h-4 w-4" />
191
208
  </div>
192
209
  <span className="font-semibold text-sidebar-foreground">
@@ -200,7 +217,7 @@ function AdminLayoutContent({
200
217
  {sidebarGroups.map((group, idx) => (
201
218
  <Fragment key={group.id}>
202
219
  <SidebarGroup>
203
- <SidebarGroupLabel className="text-xs font-semibold text-muted-foreground uppercase tracking-wider px-3 mb-2 group-data-[collapsible=icon]:hidden">
220
+ <SidebarGroupLabel className="text-[10.5px] font-semibold text-[#9CA3AF] uppercase tracking-[0.14em] px-3 pt-2 mb-1.5 group-data-[collapsible=icon]:hidden">
204
221
  {group.label}
205
222
  </SidebarGroupLabel>
206
223
  <SidebarGroupContent>
@@ -8,19 +8,23 @@
8
8
  --card-foreground: oklch(0.1408 0.0044 285.8229);
9
9
  --popover: oklch(1 0 0);
10
10
  --popover-foreground: oklch(0.1408 0.0044 285.8229);
11
- --primary: oklch(0.5234 0.1347 144.1672);
11
+ /* Design system: primary button = blue (--c-blue-600 #1976F2) */
12
+ --primary: #1976f2;
12
13
  --primary-foreground: oklch(1 0 0);
13
14
  --secondary: oklch(0.9674 0.0013 286.3752);
14
15
  --secondary-foreground: oklch(0.1408 0.0044 285.8229);
15
16
  --muted: oklch(0.9674 0.0013 286.3752);
16
17
  --muted-foreground: oklch(0.5517 0.0138 285.9385);
17
- --accent: oklch(0.9571 0.021 147.636);
18
- --accent-foreground: oklch(0.4254 0.1159 144.3078);
19
- --destructive: oklch(0.6368 0.2078 25.3313);
18
+ /* Design system: subtle highlight/accent = teal (--c-teal-100 / --c-teal-700) */
19
+ --accent: #e0f2f1;
20
+ --accent-foreground: #0d9488;
21
+ /* Design system: danger = red (--c-red-600 #E84C3D) */
22
+ --destructive: #e84c3d;
20
23
  --destructive-foreground: oklch(1 0 0);
21
- --border: oklch(0.9197 0.004 286.3202);
24
+ /* Design system: border = --c-line #E5E7EB */
25
+ --border: #e5e7eb;
22
26
  --input: oklch(1 0 0);
23
- --ring: oklch(0.5234 0.1347 144.1672);
27
+ --ring: #1976f2;
24
28
  --chart-1: oklch(0.5234 0.1347 144.1672);
25
29
  --chart-2: oklch(0.6731 0.1624 144.2083);
26
30
  --chart-3: oklch(0.6423 0.1467 133.0145);
@@ -28,12 +32,13 @@
28
32
  --chart-5: oklch(0.8253 0.1181 129.0007);
29
33
  --sidebar: oklch(0.9851 0 0);
30
34
  --sidebar-foreground: oklch(0.5517 0.0138 285.9385);
31
- --sidebar-primary: oklch(0.5234 0.1347 144.1672);
35
+ /* Design system: active sidebar/menu item = teal-700 (.sb-item.active) */
36
+ --sidebar-primary: #0d9488;
32
37
  --sidebar-primary-foreground: oklch(1 0 0);
33
- --sidebar-accent: oklch(0.9571 0.021 147.636);
34
- --sidebar-accent-foreground: oklch(0.4254 0.1159 144.3078);
35
- --sidebar-border: oklch(0.9197 0.004 286.3202);
36
- --sidebar-ring: oklch(0.5234 0.1347 144.1672);
38
+ --sidebar-accent: #e0f2f1;
39
+ --sidebar-accent-foreground: #0d9488;
40
+ --sidebar-border: #e5e7eb;
41
+ --sidebar-ring: #0d9488;
37
42
  --radius: 0.5rem;
38
43
  --shadow-2xs: 0px 4px 8px 0px hsl(0 0% 0% / 0.03);
39
44
  --shadow-xs: 0px 4px 8px 0px hsl(0 0% 0% / 0.03);
@@ -69,19 +74,19 @@
69
74
  --card-foreground: oklch(0.9851 0 0);
70
75
  --popover: oklch(0.2103 0.0059 285.8852);
71
76
  --popover-foreground: oklch(0.9851 0 0);
72
- --primary: oklch(0.6731 0.1624 144.2083);
73
- --primary-foreground: oklch(0.1982 0.0381 143.9727);
77
+ --primary: #2196f3;
78
+ --primary-foreground: oklch(1 0 0);
74
79
  --secondary: oklch(0.2739 0.0055 286.0326);
75
80
  --secondary-foreground: oklch(0.9851 0 0);
76
81
  --muted: oklch(0.2739 0.0055 286.0326);
77
82
  --muted-foreground: oklch(0.7118 0.0129 286.0665);
78
- --accent: oklch(0.3438 0.0368 161.9104);
79
- --accent-foreground: oklch(0.8353 0.0266 175.4266);
80
- --destructive: oklch(0.3958 0.1331 25.723);
83
+ --accent: #134e4a;
84
+ --accent-foreground: #5eead4;
85
+ --destructive: #e84c3d;
81
86
  --destructive-foreground: oklch(0.9478 0.023 17.5647);
82
87
  --border: oklch(0.2739 0.0055 286.0326);
83
88
  --input: oklch(0.2739 0.0055 286.0326);
84
- --ring: oklch(0.6731 0.1624 144.2083);
89
+ --ring: #2196f3;
85
90
  --chart-1: oklch(0.6731 0.1624 144.2083);
86
91
  --chart-2: oklch(0.7536 0.1626 130.5022);
87
92
  --chart-3: oklch(0.8555 0.1766 114.846);
@@ -89,12 +94,12 @@
89
94
  --chart-5: oklch(0.7703 0.1741 64.0539);
90
95
  --sidebar: oklch(0.2103 0.0059 285.8852);
91
96
  --sidebar-foreground: oklch(0.7118 0.0129 286.0665);
92
- --sidebar-primary: oklch(0.6731 0.1624 144.2083);
93
- --sidebar-primary-foreground: oklch(0.1982 0.0381 143.9727);
94
- --sidebar-accent: oklch(0.3438 0.0368 161.9104);
95
- --sidebar-accent-foreground: oklch(0.8353 0.0266 175.4266);
97
+ --sidebar-primary: #0d9488;
98
+ --sidebar-primary-foreground: oklch(1 0 0);
99
+ --sidebar-accent: #134e4a;
100
+ --sidebar-accent-foreground: #5eead4;
96
101
  --sidebar-border: oklch(0.2739 0.0055 286.0326);
97
- --sidebar-ring: oklch(0.6731 0.1624 144.2083);
102
+ --sidebar-ring: #0d9488;
98
103
  --radius: 0.5rem;
99
104
  --shadow-2xs: 0px 2px 4px 0px hsl(0 0% 0% / 0.05);
100
105
  --shadow-xs: 0px 2px 4px 0px hsl(0 0% 0% / 0.05);
@@ -70,7 +70,7 @@ function TableHead({ className, ...props }: React.ComponentProps<'th'>) {
70
70
  <th
71
71
  data-slot="table-head"
72
72
  className={cn(
73
- 'bg-primary text-white h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',
73
+ 'bg-[#30A4A1] text-white h-10 px-2 text-left align-middle font-bold whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',
74
74
  className,
75
75
  )}
76
76
  {...props}