@howssatoshi/quantumcss 1.11.2 → 1.11.4

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.
@@ -253,9 +253,9 @@ html[data-theme="light"] .input:disabled {
253
253
  }
254
254
 
255
255
  .badge-primary {
256
- background-color: rgb(0 212 255 / 15%);
257
- color: #00d4ff;
258
- border-color: rgb(0 212 255 / 30%);
256
+ background-color: color-mix(in srgb, var(--q-color-starlight-blue), transparent 85%);
257
+ color: var(--q-color-starlight-blue);
258
+ border-color: color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
259
259
  }
260
260
 
261
261
  .badge-secondary {
@@ -1568,6 +1568,35 @@ html[data-theme="light"] .table-premium-footer {
1568
1568
  border-top-color: var(--q-light-card-border);
1569
1569
  }
1570
1570
 
1571
+ /* Mobile Responsive for Premium Table */
1572
+ @media (max-width: 640px) {
1573
+ .table-premium-header {
1574
+ flex-direction: column;
1575
+ gap: var(--q-space-3);
1576
+ padding: var(--q-space-3) var(--q-space-4);
1577
+ }
1578
+
1579
+ .table-premium-title {
1580
+ font-size: 1rem;
1581
+ }
1582
+
1583
+ .table-premium-filters {
1584
+ width: 100%;
1585
+ justify-content: flex-start;
1586
+ }
1587
+
1588
+ .table-premium th,
1589
+ .table-premium td {
1590
+ padding: var(--q-space-2) var(--q-space-3);
1591
+ }
1592
+
1593
+ .table-premium-footer {
1594
+ flex-direction: column;
1595
+ gap: var(--q-space-2);
1596
+ padding: var(--q-space-3) var(--q-space-4);
1597
+ }
1598
+ }
1599
+
1571
1600
  /* ============================================================================
1572
1601
  LIST COMPONENT
1573
1602
  ============================================================================ */
@@ -1761,6 +1790,26 @@ html[data-theme="light"] .list-divider {
1761
1790
  overflow-y: auto;
1762
1791
  }
1763
1792
 
1793
+ /* Touch Slide - Horizontal scroll with touch swipe support */
1794
+ .touch-slide {
1795
+ display: flex;
1796
+ gap: var(--q-space-2, 0.5rem);
1797
+ overflow-x: auto;
1798
+ -webkit-overflow-scrolling: touch;
1799
+ scroll-snap-type: x mandatory;
1800
+ scrollbar-width: none;
1801
+ -ms-overflow-style: none;
1802
+ }
1803
+
1804
+ .touch-slide::-webkit-scrollbar {
1805
+ display: none;
1806
+ }
1807
+
1808
+ .touch-slide > * {
1809
+ flex-shrink: 0;
1810
+ scroll-snap-align: start;
1811
+ }
1812
+
1764
1813
  /* ============================================================================
1765
1814
  APP LAYOUT PATTERNS
1766
1815
  Standardized layout components for dashboard and admin applications
@@ -1832,6 +1881,22 @@ html[data-theme="light"] .top-nav {
1832
1881
  justify-content: space-between;
1833
1882
  align-items: center;
1834
1883
  margin-bottom: 2rem;
1884
+ flex-wrap: wrap;
1885
+ gap: 1rem;
1886
+ }
1887
+
1888
+ @media (max-width: 768px) {
1889
+ .page-header {
1890
+ flex-direction: column;
1891
+ align-items: stretch;
1892
+ gap: 0.75rem;
1893
+ }
1894
+ .page-header > div:first-child {
1895
+ min-width: 0;
1896
+ }
1897
+ .page-header .page-actions {
1898
+ justify-content: flex-start;
1899
+ }
1835
1900
  }
1836
1901
 
1837
1902
  .page-title {
@@ -1854,6 +1919,18 @@ html[data-theme="light"] .top-nav {
1854
1919
  gap: 0.75rem;
1855
1920
  }
1856
1921
 
1922
+ @media (max-width: 768px) {
1923
+ .page-actions {
1924
+ overflow-x: auto;
1925
+ -webkit-overflow-scrolling: touch;
1926
+ scrollbar-width: none;
1927
+ padding-bottom: 0.25rem;
1928
+ }
1929
+ .page-actions::-webkit-scrollbar {
1930
+ display: none;
1931
+ }
1932
+ }
1933
+
1857
1934
  html[data-theme="light"] .page-title {
1858
1935
  color: #0f172a;
1859
1936
  }
@@ -1886,12 +1963,6 @@ html[data-theme="light"] .sidebar {
1886
1963
 
1887
1964
  .main-content {
1888
1965
  }
1889
-
1890
- .page-header {
1891
- flex-direction: column;
1892
- align-items: flex-start;
1893
- gap: 1rem;
1894
- }
1895
1966
  }
1896
1967
 
1897
1968
  /* ============================================================================
@@ -26,17 +26,28 @@ html[data-theme="light"] a:hover {
26
26
  }
27
27
 
28
28
  h1 {
29
- font-size: 3rem; /* text-5xl */
29
+ font-size: 2rem;
30
30
  font-weight: 700;
31
- line-height: 1.25; /* leading-tight */
32
- letter-spacing: -0.05em; /* tracking-tighter */
31
+ line-height: 1.2;
32
+ letter-spacing: -0.025em;
33
33
  margin: 0;
34
- white-space: nowrap;
34
+ }
35
+
36
+ @media (min-width: 640px) {
37
+ h1 {
38
+ font-size: 2.5rem;
39
+ }
35
40
  }
36
41
 
37
42
  @media (min-width: 768px) {
38
43
  h1 {
39
- font-size: 4rem; /* text-7xl */
44
+ font-size: 3rem;
45
+ }
46
+ }
47
+
48
+ @media (min-width: 1024px) {
49
+ h1 {
50
+ font-size: 3.5rem;
40
51
  }
41
52
  }
42
53
 
@@ -533,7 +544,7 @@ html[data-theme="light"] .radio-starlight {
533
544
  padding: 0.5rem 0.75rem;
534
545
  background-color: rgb(10 10 30 / 98%);
535
546
  backdrop-filter: blur(12px);
536
- border: 1px solid rgb(0 212 255 / 30%);
547
+ border: 1px solid color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
537
548
  border-radius: 0.5rem;
538
549
  color: #f1f5f9;
539
550
  font-size: 0.75rem;
@@ -1026,7 +1037,7 @@ html[data-theme="light"] .code-window-title {
1026
1037
 
1027
1038
  .accordion .accordion-icon {
1028
1039
  color: var(--q-color-starlight-blue);
1029
- filter: drop-shadow(0 0 5px rgb(0 212 255 / 50%));
1040
+ filter: drop-shadow(0 0 5px color-mix(in srgb, var(--q-color-starlight-blue), transparent 50%));
1030
1041
  }
1031
1042
 
1032
1043
  html[data-theme="light"] .accordion.accordion-item {
@@ -1668,8 +1679,8 @@ html[data-theme="light"] .dialog-content .bg-black_40 {
1668
1679
  /* 18. Semantic Typography Utilities */
1669
1680
  .text-glow {
1670
1681
  text-shadow:
1671
- 0 0 10px rgb(0 212 255 / 50%),
1672
- 0 0 20px rgb(0 212 255 / 60%);
1682
+ 0 0 10px color-mix(in srgb, var(--q-color-starlight-blue), transparent 50%),
1683
+ 0 0 20px color-mix(in srgb, var(--q-color-starlight-blue), transparent 40%);
1673
1684
  }
1674
1685
 
1675
1686
  .text-glass {
@@ -1679,7 +1690,7 @@ html[data-theme="light"] .dialog-content .bg-black_40 {
1679
1690
  }
1680
1691
 
1681
1692
  html[data-theme="light"] .text-glow {
1682
- text-shadow: 0 0 8px rgb(0 212 255 / 30%);
1693
+ text-shadow: 0 0 8px color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
1683
1694
  }
1684
1695
 
1685
1696
  html[data-theme="light"] .text-glass {
@@ -1808,8 +1819,8 @@ html[data-theme="light"] .starlight-loading {
1808
1819
  }
1809
1820
 
1810
1821
  ::-webkit-scrollbar-thumb:hover {
1811
- background: rgb(0 212 255 / 30%);
1812
- box-shadow: 0 0 10px rgb(0 212 255 / 60%);
1822
+ background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
1823
+ box-shadow: 0 0 10px color-mix(in srgb, var(--q-color-starlight-blue), transparent 40%);
1813
1824
  }
1814
1825
 
1815
1826
  html[data-theme="light"] ::-webkit-scrollbar-track {
@@ -1916,7 +1927,7 @@ form button:not([class]),
1916
1927
  padding: 0.75rem 1.5rem;
1917
1928
  cursor: pointer;
1918
1929
  transition: all 0.2s ease;
1919
- box-shadow: 0 0 20px rgb(0 212 255 / 30%);
1930
+ box-shadow: 0 0 20px var(--q-color-starlight-glow);
1920
1931
  text-decoration: none;
1921
1932
  }
1922
1933
 
@@ -1924,7 +1935,7 @@ form button:not([class]):hover,
1924
1935
  .btn-starlight:hover {
1925
1936
  transform: translateY(-2px);
1926
1937
  filter: brightness(1.1);
1927
- box-shadow: 0 0 30px rgb(0 212 255 / 50%);
1938
+ box-shadow: 0 0 30px color-mix(in srgb, var(--q-color-starlight-blue), transparent 50%);
1928
1939
  }
1929
1940
 
1930
1941
  form button:not([class]):active,
@@ -1937,7 +1948,7 @@ form button:not([class]):focus-visible,
1937
1948
  .btn-starlight:focus-visible {
1938
1949
  outline: 2px solid white;
1939
1950
  outline-offset: 2px;
1940
- box-shadow: 0 0 0 4px rgb(0 212 255 / 30%);
1951
+ box-shadow: 0 0 0 4px var(--q-color-starlight-glow);
1941
1952
  }
1942
1953
 
1943
1954
  html[data-theme="light"] form button:not([class]):focus-visible,
@@ -2146,7 +2157,7 @@ html[data-theme="light"] .btn-starlight:focus-visible {
2146
2157
  width: 2.5rem;
2147
2158
  height: 2.5rem;
2148
2159
  border-radius: var(--q-radius-lg);
2149
- background: rgb(0 212 255 / 15%);
2160
+ background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 85%);
2150
2161
  color: var(--q-color-starlight-blue);
2151
2162
  }
2152
2163
 
@@ -2420,7 +2431,7 @@ html[data-theme="light"] .btn-starlight:focus-visible {
2420
2431
  }
2421
2432
 
2422
2433
  .starlight-chart-tab.active {
2423
- background: rgb(0 212 255 / 15%);
2434
+ background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 85%);
2424
2435
  color: var(--q-color-starlight-blue);
2425
2436
  }
2426
2437
 
@@ -2590,6 +2601,18 @@ html[data-theme="light"] .btn-starlight:focus-visible {
2590
2601
  gap: 0.75rem;
2591
2602
  }
2592
2603
 
2604
+ @media (max-width: 768px) {
2605
+ .starlight-page-actions {
2606
+ overflow-x: auto;
2607
+ -webkit-overflow-scrolling: touch;
2608
+ scrollbar-width: none;
2609
+ padding-bottom: 0.25rem;
2610
+ }
2611
+ .starlight-page-actions::-webkit-scrollbar {
2612
+ display: none;
2613
+ }
2614
+ }
2615
+
2593
2616
  /* ============================================
2594
2617
  STARLIGHT LAYOUT - Zero-Boilerplate Atmospheric
2595
2618
  ============================================ */
@@ -2701,6 +2724,10 @@ footer .right a:hover {
2701
2724
  -webkit-backdrop-filter: blur(16px);
2702
2725
  }
2703
2726
 
2727
+ .aside-nav-trigger {
2728
+ display: none;
2729
+ }
2730
+
2704
2731
  html[data-theme="light"] .aside-nav {
2705
2732
  background: rgba(255, 255, 255, 0.95);
2706
2733
  border-right-color: rgba(0, 0, 0, 0.08);
@@ -3000,6 +3027,9 @@ html[data-theme="light"] .aside-nav-divider {
3000
3027
  padding: 0.75rem;
3001
3028
  border-top: 1px solid rgba(255, 255, 255, 0.08);
3002
3029
  flex-shrink: 0;
3030
+ display: flex;
3031
+ align-items: center;
3032
+ gap: 0.5rem;
3003
3033
  }
3004
3034
 
3005
3035
  html[data-theme="light"] .aside-nav-footer {
@@ -3043,6 +3073,26 @@ html[data-theme="light"] .aside-nav-user:hover {
3043
3073
  flex-shrink: 0;
3044
3074
  }
3045
3075
 
3076
+ .aside-nav-user-info {
3077
+ display: flex;
3078
+ flex-direction: column;
3079
+ gap: 0.1rem;
3080
+ overflow: hidden;
3081
+ }
3082
+
3083
+ .aside-nav-user-action {
3084
+ display: flex;
3085
+ align-items: center;
3086
+ padding: 0.5rem;
3087
+ border-radius: 7px;
3088
+ transition: background 0.12s;
3089
+ cursor: pointer;
3090
+ }
3091
+
3092
+ .aside-nav-user-action:hover {
3093
+ background: rgba(255, 255, 255, 0.06);
3094
+ }
3095
+
3046
3096
  .aside-nav-user-info strong {
3047
3097
  display: block;
3048
3098
  font-size: 0.825rem;
@@ -3203,22 +3253,50 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3203
3253
  min-width: 64px;
3204
3254
  }
3205
3255
 
3206
- .aside-nav .aside-nav-brand,
3256
+ .aside-nav details > *:not(summary) {
3257
+ display: none;
3258
+ }
3259
+
3260
+ .aside-nav details > summary {
3261
+ justify-content: center;
3262
+ padding: 0.625rem;
3263
+ }
3264
+
3265
+ .aside-nav details[open] > *:not(summary) {
3266
+ display: none;
3267
+ }
3268
+
3269
+ /* Hide all text in icon-only mode (1280px and below) */
3207
3270
  .aside-nav .aside-nav-label,
3208
- .aside-nav .aside-nav-item span:not(.aside-nav-badge),
3209
- .aside-nav .aside-nav-group > summary span,
3210
- .aside-nav
3211
- .aside-nav-group
3212
- > summary
3213
- > svg:not(.aside-nav-item-icon):not(.aside-nav-chevron),
3214
- .aside-nav .aside-nav-chevron,
3215
- .aside-nav .aside-nav-sub,
3271
+ .aside-nav .nav-logo span,
3272
+ .aside-nav .aside-nav-brand,
3273
+ .aside-nav .aside-nav-brand *,
3216
3274
  .aside-nav .aside-nav-user-info,
3217
- .aside-nav .aside-nav-user-action {
3218
- display: none;
3275
+ .aside-nav .aside-nav-item span:not(.aside-nav-badge),
3276
+ .aside-nav details > summary > span,
3277
+ .aside-nav details > summary > svg:not(.aside-nav-item-icon) {
3278
+ display: none !important;
3279
+ }
3280
+
3281
+ /* Ensure icons are visible */
3282
+ .aside-nav .aside-nav-item-icon,
3283
+ .aside-nav summary > svg.aside-nav-item-icon,
3284
+ .aside-nav .aside-nav-user-avatar,
3285
+ .aside-nav .aside-nav-user-action,
3286
+ .aside-nav .nav-logo i {
3287
+ display: flex !important;
3219
3288
  }
3220
3289
 
3221
3290
  .aside-nav .aside-nav-header {
3291
+ justify-content: center;
3292
+ }
3293
+
3294
+ .aside-nav .aside-nav-user-avatar {
3295
+ display: flex;
3296
+ justify-content: center;
3297
+ }
3298
+
3299
+ .aside-nav .aside-nav-user {
3222
3300
  padding: 1rem 0;
3223
3301
  justify-content: center;
3224
3302
  border-bottom: none;
@@ -3227,6 +3305,28 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3227
3305
  gap: 0.5rem;
3228
3306
  }
3229
3307
 
3308
+ .aside-nav .aside-nav-user + .aside-nav-user-action {
3309
+ margin-top: 0.5rem;
3310
+ }
3311
+
3312
+ .aside-nav.aside-nav-icons .aside-nav-footer {
3313
+ flex-direction: column;
3314
+ gap: 0.75rem;
3315
+ }
3316
+
3317
+ .aside-nav .aside-nav-user-action {
3318
+ justify-content: center;
3319
+ }
3320
+
3321
+ .aside-nav .aside-nav-user > .ml-auto {
3322
+ margin-left: 0;
3323
+ margin-inline-start: auto;
3324
+ }
3325
+
3326
+ .aside-nav .aside-nav-user-action {
3327
+ display: flex;
3328
+ }
3329
+
3230
3330
  .aside-nav .aside-nav-icon {
3231
3331
  width: 32px;
3232
3332
  height: 32px;
@@ -3283,6 +3383,9 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3283
3383
  .aside-nav .aside-nav-footer {
3284
3384
  padding: 0.5rem;
3285
3385
  border-top: none;
3386
+ justify-content: center;
3387
+ flex-direction: column;
3388
+ gap: 0.75rem;
3286
3389
  }
3287
3390
 
3288
3391
  .aside-nav .aside-nav-user {
@@ -3300,6 +3403,40 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3300
3403
  }
3301
3404
 
3302
3405
  @media (max-width: 768px) {
3406
+ .aside-nav-trigger {
3407
+ display: flex;
3408
+ align-items: center;
3409
+ justify-content: center;
3410
+ cursor: pointer;
3411
+ padding: 0.75rem;
3412
+ z-index: 201;
3413
+ position: absolute;
3414
+ top: 0;
3415
+ right: 0;
3416
+ }
3417
+
3418
+ .aside-nav-trigger-icon {
3419
+ width: 20px;
3420
+ height: 14px;
3421
+ position: relative;
3422
+ display: flex;
3423
+ flex-direction: column;
3424
+ justify-content: space-between;
3425
+ }
3426
+
3427
+ .aside-nav-trigger-icon span {
3428
+ display: block;
3429
+ height: 2px;
3430
+ width: 100%;
3431
+ background: var(--q-text-primary);
3432
+ border-radius: 2px;
3433
+ transition: all 0.3s ease;
3434
+ }
3435
+
3436
+ #sidebar-toggle-mobile:checked ~ .aside-nav {
3437
+ transform: translateX(0);
3438
+ }
3439
+
3303
3440
  .aside-nav {
3304
3441
  position: fixed;
3305
3442
  top: 0;
@@ -3310,15 +3447,50 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3310
3447
  box-shadow: 4px 0 32px rgba(0, 0, 0, 0.4);
3311
3448
  z-index: 200;
3312
3449
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
3313
- display: flex; /* Override display: none to allow transform */
3450
+ display: flex;
3451
+ flex-direction: column;
3314
3452
  }
3315
3453
 
3316
- /* Restore visibility of labels and text in mobile drawer */
3317
- .aside-nav .aside-nav-brand,
3454
+ .aside-nav .aside-nav-header {
3455
+ order: -1;
3456
+ justify-content: flex-start;
3457
+ }
3458
+
3459
+ /* Restore visibility in mobile drawer - override 1280px rules */
3318
3460
  .aside-nav .aside-nav-label,
3461
+ .aside-nav .nav-logo span,
3462
+ .aside-nav .aside-nav-brand,
3463
+ .aside-nav .aside-nav-user-info,
3319
3464
  .aside-nav .aside-nav-item span:not(.aside-nav-badge),
3320
- .aside-nav .aside-nav-user-info {
3465
+ .aside-nav details > summary > span,
3466
+ .aside-nav details > summary > svg:not(.aside-nav-item-icon),
3467
+ .aside-nav .aside-nav-user-avatar,
3468
+ .aside-nav .aside-nav-user-action {
3469
+ display: flex !important;
3470
+ }
3471
+
3472
+ .aside-nav .aside-nav-brand strong,
3473
+ .aside-nav .aside-nav-brand span {
3474
+ display: block !important;
3475
+ }
3476
+
3477
+ .aside-nav details > *:not(summary) {
3478
+ display: flex !important;
3479
+ }
3480
+
3481
+ .aside-nav details[open] > .aside-nav-sub {
3482
+ display: flex !important;
3483
+ }
3484
+
3485
+ .aside-nav details summary svg {
3486
+ display: inline-flex !important;
3487
+ }
3488
+
3489
+ .aside-nav .aside-nav-badge {
3321
3490
  display: flex;
3491
+ align-self: center;
3492
+ margin-left: auto;
3493
+ position: static;
3322
3494
  }
3323
3495
 
3324
3496
  .aside-nav .aside-nav-header {
@@ -3330,6 +3502,11 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3330
3502
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
3331
3503
  }
3332
3504
 
3505
+ .aside-nav .aside-nav-header .aside-nav-brand {
3506
+ flex-direction: column;
3507
+ align-items: flex-start;
3508
+ }
3509
+
3333
3510
  .aside-nav .aside-nav-icon {
3334
3511
  width: 34px;
3335
3512
  height: 34px;
@@ -3342,10 +3519,20 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3342
3519
 
3343
3520
  .aside-nav .aside-nav-user {
3344
3521
  justify-content: flex-start;
3522
+ flex-direction: row;
3523
+ }
3524
+
3525
+ .aside-nav .aside-nav-user-action {
3526
+ justify-content: flex-start;
3527
+ }
3528
+
3529
+ .aside-nav .aside-nav-footer {
3530
+ justify-content: flex-start;
3345
3531
  }
3346
3532
 
3347
3533
  /* show sidebar when checked */
3348
- #sidebar-toggle:checked ~ .app-layout .aside-nav {
3534
+ #sidebar-toggle:checked ~ .app-layout .aside-nav,
3535
+ #sidebar-toggle-mobile:checked ~ .aside-nav {
3349
3536
  transform: translateX(0);
3350
3537
  }
3351
3538
 
@@ -3359,7 +3546,8 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3359
3546
  pointer-events: none;
3360
3547
  transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
3361
3548
  }
3362
- #sidebar-toggle:checked ~ .app-layout .aside-overlay {
3549
+ #sidebar-toggle:checked ~ .app-layout .aside-overlay,
3550
+ #sidebar-toggle-mobile:checked ~ .aside-overlay {
3363
3551
  background: rgba(0, 0, 0, 0.6);
3364
3552
  pointer-events: auto;
3365
3553
  }
@@ -3369,7 +3557,8 @@ html[data-theme="light"] .aside-nav.aside-nav-icons .aside-nav-icon {
3369
3557
  }
3370
3558
 
3371
3559
  /* Base hidden state for toggle */
3372
- #sidebar-toggle {
3560
+ #sidebar-toggle,
3561
+ #sidebar-toggle-mobile {
3373
3562
  display: none;
3374
3563
  }
3375
3564
  .aside-overlay {