@j3m-quantum/ui 1.3.1 → 1.4.0

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.
@@ -514,7 +514,7 @@
514
514
  /* Override frosted glass tokens for dark mode */
515
515
  --j3m-glass-frosted: var(--j3m-glass-dark-surface);
516
516
  --j3m-glass-frosted-strong: var(--j3m-glass-dark-elevated);
517
- --j3m-glass-frosted-card: var(--j3m-glass-dark-surface);
517
+ --j3m-glass-frosted-card: var(--j3m-glass-dark-surface); /* Cards same darkness as sections (70%) */
518
518
  --j3m-glass-border-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.04) 100%);
519
519
  --j3m-glass-border-light: var(--j3m-glass-dark-border-light);
520
520
  --j3m-glass-border-white: var(--j3m-glass-dark-border);
@@ -1352,13 +1352,16 @@ textarea,
1352
1352
 
1353
1353
  /* --- SWITCH --- */
1354
1354
  .glass-context [data-slot="switch"],
1355
+ .glass-context [data-slot="theme-switch"],
1355
1356
  .glass-context [role="switch"] {
1356
1357
  background: rgba(255, 255, 255, 0.5) !important;
1357
1358
  border-color: rgba(0, 0, 0, 0.15) !important;
1358
1359
  }
1359
1360
 
1360
1361
  .glass-context [data-slot="switch"][data-state="checked"],
1361
- .glass-context [role="switch"][data-state="checked"] {
1362
+ .glass-context [data-slot="theme-switch"][data-state="checked"],
1363
+ .glass-context [role="switch"][data-state="checked"],
1364
+ .glass-context [role="switch"][aria-checked="true"] {
1362
1365
  background: var(--primary) !important;
1363
1366
  border-color: var(--primary) !important;
1364
1367
  }
@@ -1777,6 +1780,25 @@ textarea,
1777
1780
  }
1778
1781
 
1779
1782
  /* --- SCROLL AREA --- */
1783
+ /* Solid Light Mode - dark thumb on light background */
1784
+ [data-slot="scroll-area-thumb"] {
1785
+ background: rgba(0, 0, 0, 0.25) !important;
1786
+ }
1787
+
1788
+ [data-slot="scroll-area-thumb"]:hover {
1789
+ background: rgba(0, 0, 0, 0.4) !important;
1790
+ }
1791
+
1792
+ /* Solid Dark Mode - light thumb on dark background */
1793
+ .dark [data-slot="scroll-area-thumb"] {
1794
+ background: rgba(255, 255, 255, 0.25) !important;
1795
+ }
1796
+
1797
+ .dark [data-slot="scroll-area-thumb"]:hover {
1798
+ background: rgba(255, 255, 255, 0.4) !important;
1799
+ }
1800
+
1801
+ /* Glass Light Mode - same as light solid for consistency */
1780
1802
  .glass-context [data-slot="scroll-area"] {
1781
1803
  background: var(--sidebar) !important;
1782
1804
  border: 1px solid var(--sidebar-border) !important;
@@ -1827,23 +1849,41 @@ textarea,
1827
1849
  Styling for components inside .dark .glass-context
1828
1850
  ======================================== */
1829
1851
 
1830
- /* --- CARDS (Dark Glass) - Use SOLID dark colors to match solid dark mode --- */
1852
+ /* --- CARDS (Dark Glass) - Base styling for ALL dark glass cards --- */
1853
+ /* Freestanding cards on background image = Same darkness as sections (70%) */
1831
1854
  .dark.theme-glass [data-slot="card"],
1832
- .theme-glass.dark [data-slot="card"],
1855
+ .theme-glass.dark [data-slot="card"] {
1856
+ background: var(--j3m-glass-dark-surface) !important; /* 70% dark - matches section darkness */
1857
+ backdrop-filter: blur(var(--j3m-blur-frosted)) !important;
1858
+ -webkit-backdrop-filter: blur(var(--j3m-blur-frosted)) !important;
1859
+ border: 1px solid var(--j3m-glass-dark-border-light) !important;
1860
+ box-shadow: var(--j3m-glass-shadow-md) !important;
1861
+ color: var(--j3m-gray-1) !important;
1862
+ position: relative;
1863
+ }
1864
+
1865
+ /* Cards INSIDE glass sections = SAME darkness as sections for consistency */
1833
1866
  .dark .glass-context [data-slot="card"],
1867
+ .dark.theme-glass .glass-context [data-slot="card"],
1834
1868
  .theme-glass.dark .glass-context [data-slot="card"] {
1835
- background: var(--j3m-gray-13) !important;
1836
- border: 1px solid var(--j3m-gray-11) !important;
1837
- box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.25) !important;
1838
- color: var(--j3m-gray-1) !important;
1869
+ background: var(--j3m-glass-dark-surface) !important; /* 70% dark - matches section darkness */
1839
1870
  }
1840
1871
 
1841
- /* Remove the light gradient border pseudo-element in dark mode */
1872
+ /* Gradient border for glass edge effect on dark cards */
1842
1873
  .dark.theme-glass [data-slot="card"]::before,
1843
1874
  .theme-glass.dark [data-slot="card"]::before,
1844
- .dark .glass-context [data-slot="card"]::before,
1845
- .theme-glass.dark .glass-context [data-slot="card"]::before {
1846
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.04) 100%) !important;
1875
+ .dark .glass-context [data-slot="card"]::before {
1876
+ content: '';
1877
+ position: absolute;
1878
+ inset: 0;
1879
+ border-radius: inherit;
1880
+ padding: 1px;
1881
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.05) 100%) !important;
1882
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1883
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1884
+ -webkit-mask-composite: xor;
1885
+ mask-composite: exclude;
1886
+ pointer-events: none;
1847
1887
  }
1848
1888
 
1849
1889
  /* Card text colors in dark glass */
@@ -1870,8 +1910,12 @@ textarea,
1870
1910
 
1871
1911
  .dark .glass-context input::placeholder,
1872
1912
  .dark .glass-context [data-slot="input"]::placeholder,
1913
+ .dark .glass-context textarea::placeholder,
1914
+ .dark .glass-context [data-slot="textarea"]::placeholder,
1873
1915
  .theme-glass.dark .glass-context input::placeholder,
1874
- .theme-glass.dark .glass-context [data-slot="input"]::placeholder {
1916
+ .theme-glass.dark .glass-context [data-slot="input"]::placeholder,
1917
+ .theme-glass.dark .glass-context textarea::placeholder,
1918
+ .theme-glass.dark .glass-context [data-slot="textarea"]::placeholder {
1875
1919
  color: var(--muted-foreground) !important;
1876
1920
  }
1877
1921
 
@@ -1883,6 +1927,40 @@ textarea,
1883
1927
  color: var(--sidebar-foreground) !important;
1884
1928
  }
1885
1929
 
1930
+ .dark .glass-context [data-slot="select-trigger"] [data-slot="select-value"],
1931
+ .theme-glass.dark .glass-context [data-slot="select-trigger"] [data-slot="select-value"] {
1932
+ color: var(--sidebar-foreground) !important;
1933
+ }
1934
+
1935
+ /* Select placeholder text in dark glass */
1936
+ .dark .glass-context [data-slot="select-trigger"] [data-placeholder],
1937
+ .theme-glass.dark .glass-context [data-slot="select-trigger"] [data-placeholder] {
1938
+ color: var(--muted-foreground) !important;
1939
+ }
1940
+
1941
+ /* --- NATIVE SELECT (Dark Glass) --- */
1942
+ .dark .glass-context select,
1943
+ .dark .glass-context [data-slot="native-select"],
1944
+ .theme-glass.dark .glass-context select,
1945
+ .theme-glass.dark .glass-context [data-slot="native-select"] {
1946
+ background: var(--sidebar) !important;
1947
+ border-color: var(--sidebar-border) !important;
1948
+ color: var(--sidebar-foreground) !important;
1949
+ }
1950
+
1951
+ .dark .glass-context select:focus,
1952
+ .dark .glass-context [data-slot="native-select"]:focus,
1953
+ .theme-glass.dark .glass-context select:focus,
1954
+ .theme-glass.dark .glass-context [data-slot="native-select"]:focus {
1955
+ border-color: var(--j3m-orange-9) !important;
1956
+ box-shadow: 0 0 0 3px rgba(243, 108, 33, 0.3) !important;
1957
+ }
1958
+
1959
+ .dark .glass-context [data-slot="native-select-icon"],
1960
+ .theme-glass.dark .glass-context [data-slot="native-select-icon"] {
1961
+ color: var(--muted-foreground) !important;
1962
+ }
1963
+
1886
1964
  /* --- BUTTONS (Dark Glass) --- */
1887
1965
  .dark .glass-context [data-slot="button"][data-variant="outline"],
1888
1966
  .dark .glass-context [data-slot="button"][data-variant="secondary"],
@@ -1946,6 +2024,22 @@ textarea,
1946
2024
  color: var(--sidebar-foreground) !important;
1947
2025
  }
1948
2026
 
2027
+ .dark .glass-context tfoot,
2028
+ .dark .glass-context [data-slot="table-footer"],
2029
+ .theme-glass.dark .glass-context tfoot,
2030
+ .theme-glass.dark .glass-context [data-slot="table-footer"] {
2031
+ background: var(--muted) !important;
2032
+ }
2033
+
2034
+ .dark .glass-context caption,
2035
+ .dark .glass-context [data-slot="table-caption"],
2036
+ .theme-glass.dark .glass-context caption,
2037
+ .theme-glass.dark .glass-context [data-slot="table-caption"] {
2038
+ background: var(--sidebar) !important;
2039
+ border-top: 1px solid var(--sidebar-border) !important;
2040
+ color: var(--muted-foreground) !important;
2041
+ }
2042
+
1949
2043
  /* --- DROPDOWN/POPOVER (Dark Glass) --- */
1950
2044
  .dark .glass-context [data-slot="dropdown-menu-content"],
1951
2045
  .dark .glass-context [data-slot="popover-content"],
@@ -2198,6 +2292,21 @@ textarea,
2198
2292
  color: var(--j3m-gray-1) !important;
2199
2293
  }
2200
2294
 
2295
+ /* Calendar weekday row - remove background, use light text */
2296
+ .dark .glass-context [data-slot="calendar"] thead,
2297
+ .dark .glass-context [data-slot="calendar"] .rdp-weekdays,
2298
+ .dark .glass-context [data-slot="calendar"] .rdp-weekday,
2299
+ .theme-glass.dark .glass-context [data-slot="calendar"] thead,
2300
+ .theme-glass.dark .glass-context [data-slot="calendar"] .rdp-weekdays,
2301
+ .theme-glass.dark .glass-context [data-slot="calendar"] .rdp-weekday,
2302
+ .theme-glass.dark [data-slot="calendar"] thead,
2303
+ .theme-glass.dark [data-slot="calendar"] .rdp-weekdays,
2304
+ .theme-glass.dark [data-slot="calendar"] .rdp-weekday {
2305
+ background: transparent !important;
2306
+ background-color: transparent !important;
2307
+ color: var(--muted-foreground) !important;
2308
+ }
2309
+
2201
2310
  /* --- SLIDER (Dark Glass) --- */
2202
2311
  .dark .glass-context [data-slot="slider-track"],
2203
2312
  .theme-glass.dark .glass-context [data-slot="slider-track"] {
@@ -2235,13 +2344,26 @@ textarea,
2235
2344
 
2236
2345
  /* --- SWITCH (Dark Glass) --- */
2237
2346
  .dark .glass-context [data-slot="switch"],
2347
+ .dark .glass-context [data-slot="theme-switch"],
2238
2348
  .dark .glass-context [role="switch"],
2239
2349
  .theme-glass.dark .glass-context [data-slot="switch"],
2350
+ .theme-glass.dark .glass-context [data-slot="theme-switch"],
2240
2351
  .theme-glass.dark .glass-context [role="switch"] {
2241
2352
  background: var(--muted) !important;
2242
2353
  border-color: var(--sidebar-border) !important;
2243
2354
  }
2244
2355
 
2356
+ /* Switch checked state - orange background */
2357
+ .dark .glass-context [data-slot="switch"][data-state="checked"],
2358
+ .dark .glass-context [data-slot="theme-switch"][data-state="checked"],
2359
+ .dark .glass-context [role="switch"][aria-checked="true"],
2360
+ .theme-glass.dark .glass-context [data-slot="switch"][data-state="checked"],
2361
+ .theme-glass.dark .glass-context [data-slot="theme-switch"][data-state="checked"],
2362
+ .theme-glass.dark .glass-context [role="switch"][aria-checked="true"] {
2363
+ background: var(--primary) !important;
2364
+ border-color: var(--primary) !important;
2365
+ }
2366
+
2245
2367
  /* ========================================
2246
2368
  TOAST/SONNER POSITIONING
2247
2369
  Position toasts at top-center of screen
@@ -2274,21 +2396,38 @@ textarea,
2274
2396
  .theme-glass.dark .sonner-toast,
2275
2397
  .dark.theme-glass [data-sonner-toast],
2276
2398
  .dark.theme-glass .sonner-toast {
2277
- background: var(--j3m-bg-sidebar) !important;
2278
- border-color: var(--sidebar-border) !important;
2279
- color: #FFFFFF !important;
2399
+ background: var(--j3m-gray-13) !important;
2400
+ border-color: var(--j3m-gray-11) !important;
2401
+ color: var(--j3m-gray-1) !important;
2280
2402
  }
2281
2403
 
2282
2404
  .theme-glass.dark [data-sonner-toast] *,
2283
2405
  .theme-glass.dark .sonner-toast *,
2284
2406
  .dark.theme-glass [data-sonner-toast] *,
2285
2407
  .dark.theme-glass .sonner-toast * {
2286
- color: #FFFFFF !important;
2408
+ color: var(--j3m-gray-1) !important;
2287
2409
  }
2288
2410
 
2289
2411
  .theme-glass.dark [data-sonner-toast] [data-description],
2290
2412
  .dark.theme-glass [data-sonner-toast] [data-description] {
2291
- color: rgba(255, 255, 255, 0.7) !important;
2413
+ color: var(--j3m-gray-7) !important;
2414
+ }
2415
+
2416
+ /* Solid Dark mode toast - ensure dark background */
2417
+ .dark:not(.theme-glass) [data-sonner-toast],
2418
+ .dark:not(.theme-glass) .sonner-toast {
2419
+ background: var(--j3m-gray-13) !important;
2420
+ border-color: var(--j3m-gray-11) !important;
2421
+ color: var(--j3m-gray-1) !important;
2422
+ }
2423
+
2424
+ .dark:not(.theme-glass) [data-sonner-toast] *,
2425
+ .dark:not(.theme-glass) .sonner-toast * {
2426
+ color: var(--j3m-gray-1) !important;
2427
+ }
2428
+
2429
+ .dark:not(.theme-glass) [data-sonner-toast] [data-description] {
2430
+ color: var(--j3m-gray-7) !important;
2292
2431
  }
2293
2432
 
2294
2433
  /* ========================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@j3m-quantum/ui",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "private": false,
5
5
  "description": "J3M UI Component Library - React components with J3M design tokens",
6
6
  "type": "module",
@@ -101,4 +101,4 @@
101
101
  "tsup": "^8.5.0",
102
102
  "typescript": "^5.8.3"
103
103
  }
104
- }
104
+ }