@keenmate/pure-admin-core 1.0.0-rc06 → 1.0.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.
package/dist/css/main.css CHANGED
@@ -956,6 +956,10 @@
956
956
  width: auto !important;
957
957
  }
958
958
 
959
+ .w-1-2 {
960
+ width: 50% !important;
961
+ }
962
+
959
963
  .w-1-3 {
960
964
  width: 33.333333% !important;
961
965
  }
@@ -964,6 +968,14 @@
964
968
  width: 66.666667% !important;
965
969
  }
966
970
 
971
+ .w-1-4 {
972
+ width: 25% !important;
973
+ }
974
+
975
+ .w-3-4 {
976
+ width: 75% !important;
977
+ }
978
+
967
979
  .mw-25 {
968
980
  min-width: 25% !important;
969
981
  }
@@ -984,6 +996,10 @@
984
996
  min-width: auto !important;
985
997
  }
986
998
 
999
+ .mw-1-2 {
1000
+ min-width: 50% !important;
1001
+ }
1002
+
987
1003
  .mw-1-3 {
988
1004
  min-width: 33.333333% !important;
989
1005
  }
@@ -992,6 +1008,14 @@
992
1008
  min-width: 66.666667% !important;
993
1009
  }
994
1010
 
1011
+ .mw-1-4 {
1012
+ min-width: 25% !important;
1013
+ }
1014
+
1015
+ .mw-3-4 {
1016
+ min-width: 75% !important;
1017
+ }
1018
+
995
1019
  .w-25-fixed {
996
1020
  min-width: 25% !important;
997
1021
  width: 25% !important;
@@ -1012,6 +1036,11 @@
1012
1036
  width: 100% !important;
1013
1037
  }
1014
1038
 
1039
+ .w-1-2-fixed {
1040
+ min-width: 50% !important;
1041
+ width: 50% !important;
1042
+ }
1043
+
1015
1044
  .w-1-3-fixed {
1016
1045
  min-width: 33.333333% !important;
1017
1046
  width: 33.333333% !important;
@@ -1022,6 +1051,16 @@
1022
1051
  width: 66.666667% !important;
1023
1052
  }
1024
1053
 
1054
+ .w-1-4-fixed {
1055
+ min-width: 25% !important;
1056
+ width: 25% !important;
1057
+ }
1058
+
1059
+ .w-3-4-fixed {
1060
+ min-width: 75% !important;
1061
+ width: 75% !important;
1062
+ }
1063
+
1025
1064
  .h-25 {
1026
1065
  height: 25% !important;
1027
1066
  }
@@ -1042,6 +1081,26 @@
1042
1081
  height: auto !important;
1043
1082
  }
1044
1083
 
1084
+ .h-1-2 {
1085
+ height: 50% !important;
1086
+ }
1087
+
1088
+ .h-1-3 {
1089
+ height: 33.333333% !important;
1090
+ }
1091
+
1092
+ .h-2-3 {
1093
+ height: 66.666667% !important;
1094
+ }
1095
+
1096
+ .h-1-4 {
1097
+ height: 25% !important;
1098
+ }
1099
+
1100
+ .h-3-4 {
1101
+ height: 75% !important;
1102
+ }
1103
+
1045
1104
  .wr-1 {
1046
1105
  width: 1rem !important;
1047
1106
  }
@@ -1094,6 +1153,26 @@
1094
1153
  width: 25rem !important;
1095
1154
  }
1096
1155
 
1156
+ .wr-30 {
1157
+ width: 30rem !important;
1158
+ }
1159
+
1160
+ .wr-35 {
1161
+ width: 35rem !important;
1162
+ }
1163
+
1164
+ .wr-40 {
1165
+ width: 40rem !important;
1166
+ }
1167
+
1168
+ .wr-45 {
1169
+ width: 45rem !important;
1170
+ }
1171
+
1172
+ .wr-50 {
1173
+ width: 50rem !important;
1174
+ }
1175
+
1097
1176
  .minwr-1 {
1098
1177
  min-width: 1rem !important;
1099
1178
  }
@@ -1146,6 +1225,26 @@
1146
1225
  min-width: 25rem !important;
1147
1226
  }
1148
1227
 
1228
+ .minwr-30 {
1229
+ min-width: 30rem !important;
1230
+ }
1231
+
1232
+ .minwr-35 {
1233
+ min-width: 35rem !important;
1234
+ }
1235
+
1236
+ .minwr-40 {
1237
+ min-width: 40rem !important;
1238
+ }
1239
+
1240
+ .minwr-45 {
1241
+ min-width: 45rem !important;
1242
+ }
1243
+
1244
+ .minwr-50 {
1245
+ min-width: 50rem !important;
1246
+ }
1247
+
1149
1248
  .maxwr-1 {
1150
1249
  max-width: 1rem !important;
1151
1250
  }
@@ -1198,6 +1297,26 @@
1198
1297
  max-width: 25rem !important;
1199
1298
  }
1200
1299
 
1300
+ .maxwr-30 {
1301
+ max-width: 30rem !important;
1302
+ }
1303
+
1304
+ .maxwr-35 {
1305
+ max-width: 35rem !important;
1306
+ }
1307
+
1308
+ .maxwr-40 {
1309
+ max-width: 40rem !important;
1310
+ }
1311
+
1312
+ .maxwr-45 {
1313
+ max-width: 45rem !important;
1314
+ }
1315
+
1316
+ .maxwr-50 {
1317
+ max-width: 50rem !important;
1318
+ }
1319
+
1201
1320
  .hr-1 {
1202
1321
  height: 1rem !important;
1203
1322
  }
@@ -1250,6 +1369,26 @@
1250
1369
  height: 25rem !important;
1251
1370
  }
1252
1371
 
1372
+ .hr-30 {
1373
+ height: 30rem !important;
1374
+ }
1375
+
1376
+ .hr-35 {
1377
+ height: 35rem !important;
1378
+ }
1379
+
1380
+ .hr-40 {
1381
+ height: 40rem !important;
1382
+ }
1383
+
1384
+ .hr-45 {
1385
+ height: 45rem !important;
1386
+ }
1387
+
1388
+ .hr-50 {
1389
+ height: 50rem !important;
1390
+ }
1391
+
1253
1392
  .minhr-1 {
1254
1393
  min-height: 1rem !important;
1255
1394
  }
@@ -1302,6 +1441,26 @@
1302
1441
  min-height: 25rem !important;
1303
1442
  }
1304
1443
 
1444
+ .minhr-30 {
1445
+ min-height: 30rem !important;
1446
+ }
1447
+
1448
+ .minhr-35 {
1449
+ min-height: 35rem !important;
1450
+ }
1451
+
1452
+ .minhr-40 {
1453
+ min-height: 40rem !important;
1454
+ }
1455
+
1456
+ .minhr-45 {
1457
+ min-height: 45rem !important;
1458
+ }
1459
+
1460
+ .minhr-50 {
1461
+ min-height: 50rem !important;
1462
+ }
1463
+
1305
1464
  .maxhr-1 {
1306
1465
  max-height: 1rem !important;
1307
1466
  }
@@ -1354,6 +1513,26 @@
1354
1513
  max-height: 25rem !important;
1355
1514
  }
1356
1515
 
1516
+ .maxhr-30 {
1517
+ max-height: 30rem !important;
1518
+ }
1519
+
1520
+ .maxhr-35 {
1521
+ max-height: 35rem !important;
1522
+ }
1523
+
1524
+ .maxhr-40 {
1525
+ max-height: 40rem !important;
1526
+ }
1527
+
1528
+ .maxhr-45 {
1529
+ max-height: 45rem !important;
1530
+ }
1531
+
1532
+ .maxhr-50 {
1533
+ max-height: 50rem !important;
1534
+ }
1535
+
1357
1536
  .minw-5 {
1358
1537
  min-width: 5% !important;
1359
1538
  }
@@ -1522,6 +1701,10 @@
1522
1701
  max-width: 100% !important;
1523
1702
  }
1524
1703
 
1704
+ .maxw-1-2 {
1705
+ max-width: 50% !important;
1706
+ }
1707
+
1525
1708
  .maxw-1-3 {
1526
1709
  max-width: 33.333333% !important;
1527
1710
  }
@@ -1530,6 +1713,14 @@
1530
1713
  max-width: 66.666667% !important;
1531
1714
  }
1532
1715
 
1716
+ .maxw-1-4 {
1717
+ max-width: 25% !important;
1718
+ }
1719
+
1720
+ .maxw-3-4 {
1721
+ max-width: 75% !important;
1722
+ }
1723
+
1533
1724
  .minh-5 {
1534
1725
  min-height: 5% !important;
1535
1726
  }
@@ -1610,6 +1801,10 @@
1610
1801
  min-height: 100% !important;
1611
1802
  }
1612
1803
 
1804
+ .minh-1-2 {
1805
+ min-height: 50% !important;
1806
+ }
1807
+
1613
1808
  .minh-1-3 {
1614
1809
  min-height: 33.333333% !important;
1615
1810
  }
@@ -1618,6 +1813,14 @@
1618
1813
  min-height: 66.666667% !important;
1619
1814
  }
1620
1815
 
1816
+ .minh-1-4 {
1817
+ min-height: 25% !important;
1818
+ }
1819
+
1820
+ .minh-3-4 {
1821
+ min-height: 75% !important;
1822
+ }
1823
+
1621
1824
  .maxh-5 {
1622
1825
  max-height: 5% !important;
1623
1826
  }
@@ -1698,6 +1901,10 @@
1698
1901
  max-height: 100% !important;
1699
1902
  }
1700
1903
 
1904
+ .maxh-1-2 {
1905
+ max-height: 50% !important;
1906
+ }
1907
+
1701
1908
  .maxh-1-3 {
1702
1909
  max-height: 33.333333% !important;
1703
1910
  }
@@ -1706,6 +1913,14 @@
1706
1913
  max-height: 66.666667% !important;
1707
1914
  }
1708
1915
 
1916
+ .maxh-1-4 {
1917
+ max-height: 25% !important;
1918
+ }
1919
+
1920
+ .maxh-3-4 {
1921
+ max-height: 75% !important;
1922
+ }
1923
+
1709
1924
  .position-static {
1710
1925
  position: static !important;
1711
1926
  }
@@ -2015,16 +2230,15 @@ label {
2015
2230
  }
2016
2231
 
2017
2232
  *::-webkit-scrollbar-thumb {
2018
- background: #e1e5e9;
2233
+ background: var(--pa-border-color);
2019
2234
  border-radius: 3px;
2020
2235
  border: 1px solid var(--pa-primary-bg);
2021
2236
  }
2022
2237
  *::-webkit-scrollbar-thumb:hover {
2023
- background: #007bff;
2024
- border-color: rgba(0, 123, 255, 0.12);
2238
+ background: var(--pa-accent);
2025
2239
  }
2026
2240
  *::-webkit-scrollbar-thumb:active {
2027
- background: rgba(0, 123, 255, 0.12);
2241
+ background: var(--pa-accent-hover);
2028
2242
  }
2029
2243
 
2030
2244
  *::-webkit-scrollbar-corner {
@@ -2260,6 +2474,31 @@ body.pa-layout--sticky .pa-layout__inner {
2260
2474
  gap: 0.4rem;
2261
2475
  }
2262
2476
 
2477
+ @media (max-width: 768px) {
2478
+ .pa-layout__footer {
2479
+ flex-wrap: wrap;
2480
+ min-height: auto;
2481
+ padding: 0.8rem 1.6rem;
2482
+ }
2483
+ .pa-footer__left,
2484
+ .pa-footer__center,
2485
+ .pa-footer__right {
2486
+ flex-shrink: 1;
2487
+ min-width: 0;
2488
+ }
2489
+ .pa-footer__left {
2490
+ flex: 1 1 auto;
2491
+ }
2492
+ .pa-footer__center {
2493
+ display: none;
2494
+ }
2495
+ .pa-footer__right {
2496
+ flex: 0 1 auto;
2497
+ }
2498
+ .pa-footer__right--vertical {
2499
+ align-items: flex-end;
2500
+ }
2501
+ }
2263
2502
  /* ========================================
2264
2503
  Reset and Base Styles
2265
2504
  ======================================== */
@@ -2267,15 +2506,58 @@ body.pa-layout--sticky .pa-layout__inner {
2267
2506
  Sidebar Component
2268
2507
  Sidebar navigation with nested submenus
2269
2508
  ======================================== */
2509
+ :root {
2510
+ --pa-sidebar-width: 28.8rem;
2511
+ --pa-sidebar-min-width: 18rem;
2512
+ --pa-sidebar-max-width: 50rem;
2513
+ }
2514
+
2515
+ :where(.pa-layout__sidebar) {
2516
+ width: var(--pa-sidebar-width);
2517
+ }
2518
+
2270
2519
  .pa-layout__sidebar {
2271
- width: 28.8rem;
2272
2520
  background-color: var(--pa-sidebar-bg);
2273
2521
  border-right: 1px solid var(--pa-border-color);
2274
2522
  flex-shrink: 0;
2523
+ position: relative;
2524
+ }
2525
+
2526
+ .pa-sidebar-resize {
2527
+ position: absolute;
2528
+ top: 0;
2529
+ right: 0;
2530
+ width: 6px;
2531
+ height: 100%;
2532
+ cursor: ew-resize;
2533
+ z-index: 100;
2534
+ }
2535
+ .pa-sidebar-resize::after {
2536
+ content: "";
2537
+ position: absolute;
2538
+ top: 0;
2539
+ left: 50%;
2540
+ transform: translateX(-50%);
2541
+ width: 2px;
2542
+ height: 100%;
2543
+ background-color: transparent;
2544
+ transition: background-color 0.1s ease-out;
2545
+ }
2546
+ .pa-sidebar-resize:hover::after, .pa-sidebar-resize--active::after {
2547
+ background-color: var(--pa-accent);
2548
+ }
2549
+
2550
+ body.pa-sidebar-resizing {
2551
+ cursor: ew-resize !important;
2552
+ user-select: none;
2553
+ }
2554
+ body.pa-sidebar-resizing * {
2555
+ cursor: ew-resize !important;
2275
2556
  }
2276
2557
 
2277
2558
  body.pa-layout--sticky .pa-layout__sidebar {
2278
2559
  overflow-y: auto;
2560
+ overflow-y: overlay;
2279
2561
  overflow-x: visible;
2280
2562
  }
2281
2563
 
@@ -4333,6 +4615,144 @@ body:not(.sidebar-hidden) .pa-layout__sidebar--icon-collapse .pa-sidebar__icon {
4333
4615
  padding-bottom: 0;
4334
4616
  }
4335
4617
 
4618
+ @media (max-width: 768px) {
4619
+ .pa-col-5 {
4620
+ flex: 0 0 100%;
4621
+ max-width: 100%;
4622
+ }
4623
+ .pa-col-10 {
4624
+ flex: 0 0 100%;
4625
+ max-width: 100%;
4626
+ }
4627
+ .pa-col-15 {
4628
+ flex: 0 0 100%;
4629
+ max-width: 100%;
4630
+ }
4631
+ .pa-col-20 {
4632
+ flex: 0 0 100%;
4633
+ max-width: 100%;
4634
+ }
4635
+ .pa-col-25 {
4636
+ flex: 0 0 100%;
4637
+ max-width: 100%;
4638
+ }
4639
+ .pa-col-30 {
4640
+ flex: 0 0 100%;
4641
+ max-width: 100%;
4642
+ }
4643
+ .pa-col-35 {
4644
+ flex: 0 0 100%;
4645
+ max-width: 100%;
4646
+ }
4647
+ .pa-col-40 {
4648
+ flex: 0 0 100%;
4649
+ max-width: 100%;
4650
+ }
4651
+ .pa-col-45 {
4652
+ flex: 0 0 100%;
4653
+ max-width: 100%;
4654
+ }
4655
+ .pa-col-50 {
4656
+ flex: 0 0 100%;
4657
+ max-width: 100%;
4658
+ }
4659
+ .pa-col-55 {
4660
+ flex: 0 0 100%;
4661
+ max-width: 100%;
4662
+ }
4663
+ .pa-col-60 {
4664
+ flex: 0 0 100%;
4665
+ max-width: 100%;
4666
+ }
4667
+ .pa-col-65 {
4668
+ flex: 0 0 100%;
4669
+ max-width: 100%;
4670
+ }
4671
+ .pa-col-70 {
4672
+ flex: 0 0 100%;
4673
+ max-width: 100%;
4674
+ }
4675
+ .pa-col-75 {
4676
+ flex: 0 0 100%;
4677
+ max-width: 100%;
4678
+ }
4679
+ .pa-col-80 {
4680
+ flex: 0 0 100%;
4681
+ max-width: 100%;
4682
+ }
4683
+ .pa-col-85 {
4684
+ flex: 0 0 100%;
4685
+ max-width: 100%;
4686
+ }
4687
+ .pa-col-90 {
4688
+ flex: 0 0 100%;
4689
+ max-width: 100%;
4690
+ }
4691
+ .pa-col-95 {
4692
+ flex: 0 0 100%;
4693
+ max-width: 100%;
4694
+ }
4695
+ .pa-col-1-2 {
4696
+ flex: 0 0 100%;
4697
+ max-width: 100%;
4698
+ }
4699
+ .pa-col-1-3 {
4700
+ flex: 0 0 100%;
4701
+ max-width: 100%;
4702
+ }
4703
+ .pa-col-2-3 {
4704
+ flex: 0 0 100%;
4705
+ max-width: 100%;
4706
+ }
4707
+ .pa-col-1-4 {
4708
+ flex: 0 0 100%;
4709
+ max-width: 100%;
4710
+ }
4711
+ .pa-col-3-4 {
4712
+ flex: 0 0 100%;
4713
+ max-width: 100%;
4714
+ }
4715
+ .pa-col-1-5 {
4716
+ flex: 0 0 100%;
4717
+ max-width: 100%;
4718
+ }
4719
+ .pa-col-2-5 {
4720
+ flex: 0 0 100%;
4721
+ max-width: 100%;
4722
+ }
4723
+ .pa-col-3-5 {
4724
+ flex: 0 0 100%;
4725
+ max-width: 100%;
4726
+ }
4727
+ .pa-col-4-5 {
4728
+ flex: 0 0 100%;
4729
+ max-width: 100%;
4730
+ }
4731
+ .pa-col-1-6 {
4732
+ flex: 0 0 100%;
4733
+ max-width: 100%;
4734
+ }
4735
+ .pa-col-5-6 {
4736
+ flex: 0 0 100%;
4737
+ max-width: 100%;
4738
+ }
4739
+ .pa-col-1-12 {
4740
+ flex: 0 0 100%;
4741
+ max-width: 100%;
4742
+ }
4743
+ .pa-col-5-12 {
4744
+ flex: 0 0 100%;
4745
+ max-width: 100%;
4746
+ }
4747
+ .pa-col-7-12 {
4748
+ flex: 0 0 100%;
4749
+ max-width: 100%;
4750
+ }
4751
+ .pa-col-11-12 {
4752
+ flex: 0 0 100%;
4753
+ max-width: 100%;
4754
+ }
4755
+ }
4336
4756
  /* ========================================
4337
4757
  Reset and Base Styles
4338
4758
  ======================================== */
@@ -7703,10 +8123,11 @@ a.pa-card p {
7703
8123
  .pa-input-group__prepend, .pa-input-group__append {
7704
8124
  display: flex;
7705
8125
  align-items: center;
7706
- padding: 0.8rem 0.8rem;
8126
+ height: 3.5rem;
8127
+ line-height: 3.5rem;
8128
+ padding: 0 0.8rem;
7707
8129
  border: 1px solid var(--pa-border-color);
7708
8130
  font-size: 1.4rem;
7709
- line-height: 1;
7710
8131
  white-space: nowrap;
7711
8132
  border-radius: 0;
7712
8133
  }
@@ -7734,27 +8155,24 @@ a.pa-card p {
7734
8155
  .pa-input-group__append + .pa-input-group__append {
7735
8156
  border-left: 1px solid var(--pa-border-color);
7736
8157
  }
7737
- .pa-input-group:focus-within .pa-input-group__prepend {
8158
+ .pa-input-group:has(.pa-input:focus) .pa-input-group__prepend {
7738
8159
  border-right: 1px solid var(--pa-input-focus-border-color);
7739
8160
  }
7740
- .pa-input-group:focus-within .pa-input-group__prepend:has(+ .pa-input-group__prepend) {
8161
+ .pa-input-group:has(.pa-input:focus) .pa-input-group__prepend:has(+ .pa-input-group__prepend) {
7741
8162
  border-right: none;
7742
8163
  }
7743
- .pa-input-group:focus-within .pa-input-group__append {
8164
+ .pa-input-group:has(.pa-input:focus) .pa-input-group__append {
7744
8165
  border-left: 1px solid var(--pa-input-focus-border-color);
7745
8166
  }
7746
- .pa-input-group:focus-within .pa-input-group__append + .pa-input-group__append {
8167
+ .pa-input-group:has(.pa-input:focus) .pa-input-group__append + .pa-input-group__append {
7747
8168
  border-left: 1px solid var(--pa-border-color);
7748
8169
  }
7749
8170
  .pa-input-group__button {
7750
8171
  border-radius: 0;
7751
- border-color: var(--pa-border-color);
7752
- border-left: none;
7753
8172
  }
7754
8173
  .pa-input-group__button:first-child {
7755
8174
  border-top-left-radius: 4px;
7756
8175
  border-bottom-left-radius: 4px;
7757
- border-left: 1px solid var(--pa-border-color);
7758
8176
  }
7759
8177
  .pa-input-group__button:last-child {
7760
8178
  border-top-right-radius: 4px;
@@ -7762,22 +8180,26 @@ a.pa-card p {
7762
8180
  }
7763
8181
  .pa-input-group--xs .pa-input-group__prepend,
7764
8182
  .pa-input-group--xs .pa-input-group__append {
7765
- padding: 0.6rem 0.8rem;
8183
+ height: 3.1rem;
8184
+ line-height: 3.1rem;
7766
8185
  font-size: 1.2rem;
7767
8186
  }
7768
8187
  .pa-input-group--sm .pa-input-group__prepend,
7769
8188
  .pa-input-group--sm .pa-input-group__append {
7770
- padding: 0.8rem 0.8rem;
8189
+ height: 3.3rem;
8190
+ line-height: 3.3rem;
7771
8191
  font-size: 1.4rem;
7772
8192
  }
7773
8193
  .pa-input-group--lg .pa-input-group__prepend,
7774
8194
  .pa-input-group--lg .pa-input-group__append {
7775
- padding: 0.8rem 0.8rem;
8195
+ height: 3.8rem;
8196
+ line-height: 3.8rem;
7776
8197
  font-size: 1.6rem;
7777
8198
  }
7778
8199
  .pa-input-group--xl .pa-input-group__prepend,
7779
8200
  .pa-input-group--xl .pa-input-group__append {
7780
- padding: 0.8rem 0.8rem;
8201
+ height: 4.1rem;
8202
+ line-height: 4.1rem;
7781
8203
  font-size: 1.8rem;
7782
8204
  }
7783
8205
 
@@ -10181,6 +10603,16 @@ code {
10181
10603
  Profile Panel Components
10182
10604
  Profile panel and header button
10183
10605
  ======================================== */
10606
+ :root {
10607
+ --pa-profile-panel-width: 20vw;
10608
+ --pa-profile-panel-max-width: 48rem;
10609
+ }
10610
+
10611
+ :where(.pa-profile-panel__content) {
10612
+ width: var(--pa-profile-panel-width);
10613
+ max-width: var(--pa-profile-panel-max-width);
10614
+ }
10615
+
10184
10616
  .pa-header__profile-btn {
10185
10617
  display: flex;
10186
10618
  align-items: center;
@@ -10238,8 +10670,6 @@ code {
10238
10670
  position: absolute;
10239
10671
  top: 0;
10240
10672
  right: 0;
10241
- width: 20vw;
10242
- max-width: 48rem;
10243
10673
  height: 100vh;
10244
10674
  background-color: var(--pa-card-bg);
10245
10675
  box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);
@@ -12218,6 +12648,55 @@ code {
12218
12648
  right: -1.6rem;
12219
12649
  }
12220
12650
  }
12651
+ .pa-notifications__list--page {
12652
+ max-height: none;
12653
+ overflow: visible;
12654
+ }
12655
+ .pa-notifications__list--page .pa-notifications__item {
12656
+ padding: 1.6rem 2.4rem;
12657
+ }
12658
+ .pa-notifications__list--page .pa-notifications__icon-wrapper {
12659
+ width: 4rem;
12660
+ height: 4rem;
12661
+ font-size: 1.8rem;
12662
+ }
12663
+ .pa-notifications__list--page .pa-notifications__content h4 {
12664
+ font-size: 1.4rem;
12665
+ margin-bottom: 0.4rem;
12666
+ }
12667
+ .pa-notifications__list--page .pa-notifications__content p {
12668
+ font-size: 1.4rem;
12669
+ -webkit-line-clamp: 3;
12670
+ }
12671
+ .pa-notifications__list--page .pa-notifications__time {
12672
+ font-size: 1.2rem;
12673
+ }
12674
+
12675
+ .pa-notifications__actions {
12676
+ display: flex;
12677
+ gap: 0.4rem;
12678
+ flex-shrink: 0;
12679
+ opacity: 0;
12680
+ transition: opacity 0.1s ease-out;
12681
+ }
12682
+
12683
+ .pa-notifications__item:hover .pa-notifications__actions {
12684
+ opacity: 1;
12685
+ }
12686
+
12687
+ @media (max-width: 768px) {
12688
+ .pa-notifications__list--page .pa-notifications__item {
12689
+ flex-wrap: wrap;
12690
+ }
12691
+ .pa-notifications__list--page .pa-notifications__actions {
12692
+ opacity: 1;
12693
+ width: 100%;
12694
+ justify-content: flex-end;
12695
+ margin-top: 0.8rem;
12696
+ padding-top: 0.8rem;
12697
+ border-top: 1px solid var(--pa-border-color);
12698
+ }
12699
+ }
12221
12700
  /* ========================================
12222
12701
  Reset and Base Styles
12223
12702
  ======================================== */
@@ -12686,6 +13165,21 @@ html.font-size-4xl {
12686
13165
  overflow: visible;
12687
13166
  }
12688
13167
 
13168
+ .overflow-overlay {
13169
+ overflow: auto;
13170
+ overflow: overlay;
13171
+ }
13172
+
13173
+ .overflow-y-overlay {
13174
+ overflow-y: auto;
13175
+ overflow-y: overlay;
13176
+ }
13177
+
13178
+ .overflow-x-overlay {
13179
+ overflow-x: auto;
13180
+ overflow-x: overlay;
13181
+ }
13182
+
12689
13183
  .cursor-pointer {
12690
13184
  cursor: pointer;
12691
13185
  }
@@ -12955,6 +13449,12 @@ html.font-size-4xl {
12955
13449
  font-size: 3.2rem;
12956
13450
  }
12957
13451
 
13452
+ .text-truncate {
13453
+ overflow: hidden;
13454
+ text-overflow: ellipsis;
13455
+ white-space: nowrap;
13456
+ }
13457
+
12958
13458
  .component-showcase {
12959
13459
  display: flex;
12960
13460
  flex-wrap: wrap;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keenmate/pure-admin-core",
3
- "version": "1.0.0-rc06",
3
+ "version": "1.0.0",
4
4
  "description": "Lightweight, data-focused HTML/CSS admin framework built with PureCSS foundation and comprehensive component system",
5
5
  "style": "dist/css/main.css",
6
6
  "exports": {
@@ -380,6 +380,52 @@
380
380
  </aside>
381
381
 
382
382
 
383
+ <!-- ================================
384
+ SIDEBAR WIDTH CONTROL
385
+ ================================ -->
386
+
387
+ <!-- Default width (28.8rem / 288px from CSS variable) -->
388
+ <aside class="pa-layout__sidebar">
389
+ <!-- Nav content -->
390
+ </aside>
391
+
392
+ <!-- Resizable sidebar (opt-in, drag right edge to resize) -->
393
+ <aside class="pa-layout__sidebar pa-layout__sidebar--resizable">
394
+ <!-- Nav content -->
395
+ <!-- Drag handle appears on right edge -->
396
+ <!-- Width saved to localStorage -->
397
+ <!-- Double-click handle to reset to default -->
398
+ </aside>
399
+
400
+ <!-- Custom fixed width using utility class (overrides default and resize) -->
401
+ <aside class="pa-layout__sidebar wr-25">
402
+ <!-- Fixed 25rem (250px) width -->
403
+ <!-- wr-* sets exact width, blocks resize -->
404
+ </aside>
405
+
406
+ <!-- Custom minimum width using utility class (allows resize above minimum) -->
407
+ <aside class="pa-layout__sidebar pa-layout__sidebar--resizable minwr-20">
408
+ <!-- Minimum 20rem (200px) width -->
409
+ <!-- minwr-* sets floor, resize still works above it -->
410
+ </aside>
411
+
412
+ <!--
413
+ SIDEBAR WIDTH OPTIONS:
414
+ 1. Default: Uses CSS variable --pa-sidebar-width (28.8rem)
415
+ 2. Resizable: Add --resizable class, user can drag to resize (180-500px range)
416
+ 3. Fixed width: Add wr-* utility class (e.g., wr-20, wr-25, wr-30)
417
+ 4. Minimum width: Add minwr-* utility class (e.g., minwr-15, minwr-20)
418
+
419
+ WIDTH UTILITY CLASSES (rem-based, 10px = 1rem):
420
+ - .wr-15 to .wr-25 - Fixed width (15rem to 25rem)
421
+ - .minwr-15 to .minwr-25 - Minimum width (allows resize above)
422
+ - .maxwr-15 to .maxwr-25 - Maximum width (limits resize)
423
+
424
+ NOTE: Fixed width (.wr-*) overrides both default and resizable width.
425
+ Use .minwr-* with --resizable to set a floor while allowing resize.
426
+ -->
427
+
428
+
383
429
  <!-- ================================
384
430
  NAVBAR/HEADER (with burger menu and navigation)
385
431
  Three-section layout: Left / Center / Right
@@ -605,6 +651,14 @@ SIDEBAR MODES (modifiers on .pa-layout__sidebar):
605
651
  - Default - Sidebar scrolls with content
606
652
  - .pa-layout__sidebar--sticky - Sidebar stays fixed while content scrolls
607
653
  - .pa-layout__sidebar--icon-collapse - Sidebar collapses to icon bar instead of hiding
654
+ - .pa-layout__sidebar--resizable - Drag right edge to resize (opt-in)
655
+
656
+ SIDEBAR WIDTH CONTROL:
657
+ - Default width: 28.8rem (288px) via CSS variable --pa-sidebar-width
658
+ - Resizable: Add --resizable class for drag-to-resize (180-500px range)
659
+ - Fixed width: Add .wr-* utility class (e.g., wr-25 = 250px) - overrides resize
660
+ - Min width: Add .minwr-* utility class (e.g., minwr-20) - sets floor for resize
661
+ - Max width: Add .maxwr-* utility class (e.g., maxwr-40) - sets ceiling for resize
608
662
 
609
663
  BURGER MENU:
610
664
  - .burger-menu - Burger menu button (same as .pa-header__burger)
@@ -636,4 +690,16 @@ JAVASCRIPT:
636
690
  - toggleSidebar() - Toggle sidebar visibility (burger menu)
637
691
  - toggleSubmenu(button) - Toggle submenu open/closed
638
692
  - Stores state in localStorage for persistence across page loads
693
+
694
+ PROFILE PANEL WIDTH CONTROL:
695
+ - Default width: 20vw via CSS variable --pa-profile-panel-width
696
+ - Default max-width: 48rem (480px) via CSS variable --pa-profile-panel-max-width
697
+ - Override with utility classes: Add .wr-* to .pa-profile-panel__content
698
+ - Examples:
699
+ - .wr-30 = fixed 30rem (300px) width
700
+ - .wr-40 = fixed 40rem (400px) width
701
+ - .minwr-25 = minimum 25rem width
702
+ - .maxwr-50 = maximum 50rem width
703
+ - Uses low specificity (:where) so utility classes can override
704
+ - Available: wr-1 to wr-10, then 15, 20, 25, 30, 35, 40, 45, 50 (same for minwr/maxwr)
639
705
  -->
@@ -262,3 +262,28 @@ $grid-columns-fractions: (
262
262
  padding-bottom: 0;
263
263
  }
264
264
 
265
+ // ============================================================================
266
+ // AUTO-STACK ON MOBILE
267
+ // ============================================================================
268
+ // Base percentage/fraction columns auto-stack to 100% on mobile
269
+ // Use explicit responsive classes (pa-col-sm-*, pa-col-md-*) to override
270
+ @media (max-width: $mobile-breakpoint) {
271
+ // Stack percentage columns
272
+ @each $size in $grid-columns-5 {
273
+ @if $size < 100 {
274
+ .pa-col-#{$size} {
275
+ flex: 0 0 100%;
276
+ max-width: 100%;
277
+ }
278
+ }
279
+ }
280
+
281
+ // Stack fraction columns
282
+ @each $name, $width in $grid-columns-fractions {
283
+ .pa-col-#{$name} {
284
+ flex: 0 0 100%;
285
+ max-width: 100%;
286
+ }
287
+ }
288
+ }
289
+
@@ -251,3 +251,70 @@
251
251
  right: -$spacing-base; // Align to right edge of viewport
252
252
  }
253
253
  }
254
+
255
+ // ====================
256
+ // Page View Modifier
257
+ // ====================
258
+ // Larger variant for full-page notification list
259
+
260
+ .pa-notifications__list--page {
261
+ max-height: none;
262
+ overflow: visible;
263
+
264
+ .pa-notifications__item {
265
+ padding: $spacing-base $spacing-lg;
266
+ }
267
+
268
+ .pa-notifications__icon-wrapper {
269
+ width: 4rem;
270
+ height: 4rem;
271
+ font-size: $font-size-lg;
272
+ }
273
+
274
+ .pa-notifications__content {
275
+ h4 {
276
+ font-size: $font-size-sm;
277
+ margin-bottom: $spacing-xs;
278
+ }
279
+
280
+ p {
281
+ font-size: $font-size-sm;
282
+ -webkit-line-clamp: 3;
283
+ }
284
+ }
285
+
286
+ .pa-notifications__time {
287
+ font-size: $font-size-xs;
288
+ }
289
+ }
290
+
291
+ // Action buttons (for page view)
292
+ .pa-notifications__actions {
293
+ display: flex;
294
+ gap: $spacing-xs;
295
+ flex-shrink: 0;
296
+ opacity: 0;
297
+ transition: opacity $transition-fast $easing-snappy;
298
+ }
299
+
300
+ .pa-notifications__item:hover .pa-notifications__actions {
301
+ opacity: 1;
302
+ }
303
+
304
+ // Mobile: always show actions
305
+ @media (max-width: $mobile-breakpoint) {
306
+ .pa-notifications__list--page {
307
+ .pa-notifications__item {
308
+ flex-wrap: wrap;
309
+ }
310
+
311
+ .pa-notifications__actions {
312
+ opacity: 1;
313
+ width: 100%;
314
+ justify-content: flex-end;
315
+ margin-top: $spacing-sm;
316
+ padding-top: $spacing-sm;
317
+ border-top: $border-width-base solid var(--pa-border-color);
318
+ }
319
+ }
320
+ }
@@ -4,6 +4,18 @@
4
4
  ======================================== */
5
5
  @use '../variables' as *;
6
6
 
7
+ // CSS variable for profile panel width (allows utility class override)
8
+ :root {
9
+ --pa-profile-panel-width: #{$profile-panel-width};
10
+ --pa-profile-panel-max-width: #{$profile-panel-max-width};
11
+ }
12
+
13
+ // Profile panel content width - :where() for low specificity (utility classes can override)
14
+ :where(.pa-profile-panel__content) {
15
+ width: var(--pa-profile-panel-width);
16
+ max-width: var(--pa-profile-panel-max-width);
17
+ }
18
+
7
19
  // ====================
8
20
  // Profile Panel & Header Button
9
21
  // ====================
@@ -73,8 +85,6 @@
73
85
  position: absolute;
74
86
  top: 0;
75
87
  right: 0;
76
- width: $profile-panel-width;
77
- max-width: $profile-panel-max-width;
78
88
  height: 100vh;
79
89
  background-color: var(--pa-card-bg);
80
90
  box-shadow: $shadow-profile-panel;
@@ -16,17 +16,16 @@
16
16
  }
17
17
 
18
18
  *::-webkit-scrollbar-thumb {
19
- background: $border-color;
19
+ background: var(--pa-border-color);
20
20
  border-radius: $scrollbar-border-radius;
21
21
  border: $border-width-base solid var(--pa-primary-bg);
22
22
 
23
23
  &:hover {
24
- background: $accent-color;
25
- border-color: $accent-hover;
24
+ background: var(--pa-accent);
26
25
  }
27
26
 
28
27
  &:active {
29
- background: $accent-hover;
28
+ background: var(--pa-accent-hover);
30
29
  }
31
30
  }
32
31
 
@@ -122,6 +122,23 @@ html.font-size-4xl {
122
122
  .overflow-hidden { overflow: hidden; }
123
123
  .overflow-visible { overflow: visible; }
124
124
 
125
+ // Overlay scrollbar utilities (scrollbar floats over content, doesn't reduce width)
126
+ // Supported in Chromium browsers; Firefox falls back to auto
127
+ .overflow-overlay {
128
+ overflow: auto;
129
+ overflow: overlay;
130
+ }
131
+
132
+ .overflow-y-overlay {
133
+ overflow-y: auto;
134
+ overflow-y: overlay;
135
+ }
136
+
137
+ .overflow-x-overlay {
138
+ overflow-x: auto;
139
+ overflow-x: overlay;
140
+ }
141
+
125
142
  // Cursor utilities
126
143
  .cursor-pointer { cursor: pointer; }
127
144
  .cursor-help { cursor: help; }
@@ -255,6 +272,13 @@ html.font-size-4xl {
255
272
  .text-3xl { font-size: $font-size-3xl; } // 2.8rem = 28px
256
273
  .text-4xl { font-size: $font-size-4xl; } // 3.2rem = 32px
257
274
 
275
+ // Text truncation with ellipsis
276
+ .text-truncate {
277
+ overflow: hidden;
278
+ text-overflow: ellipsis;
279
+ white-space: nowrap;
280
+ }
281
+
258
282
  // Component showcase styling
259
283
  .component-showcase {
260
284
  display: flex;
@@ -35,10 +35,11 @@
35
35
  &__append {
36
36
  display: flex;
37
37
  align-items: center;
38
- padding: $input-padding-v $input-padding-h;
38
+ height: #{$base-input-size-md-height}rem;
39
+ line-height: #{$base-input-size-md-height}rem;
40
+ padding: 0 $input-padding-h;
39
41
  border: $border-width-base solid var(--pa-border-color);
40
42
  font-size: $font-size-sm;
41
- line-height: 1;
42
43
  white-space: nowrap;
43
44
  border-radius: 0;
44
45
  }
@@ -74,8 +75,8 @@
74
75
  border-left: $border-width-base solid var(--pa-border-color);
75
76
  }
76
77
 
77
- // When input is focused, only show focus border on edges adjacent to input
78
- &:focus-within {
78
+ // When input is focused, show focus border on adjacent prepend/append
79
+ &:has(.pa-input:focus) {
79
80
  // Last prepend (one before input) gets focus border
80
81
  .pa-input-group__prepend {
81
82
  border-right: $border-width-base solid var(--pa-input-focus-border-color);
@@ -99,13 +100,10 @@
99
100
 
100
101
  &__button {
101
102
  border-radius: 0;
102
- border-color: var(--pa-border-color);
103
- border-left: none;
104
103
 
105
104
  &:first-child {
106
105
  border-top-left-radius: $border-radius;
107
106
  border-bottom-left-radius: $border-radius;
108
- border-left: $border-width-base solid var(--pa-border-color);
109
107
  }
110
108
 
111
109
  &:last-child {
@@ -118,7 +116,8 @@
118
116
  &--xs {
119
117
  .pa-input-group__prepend,
120
118
  .pa-input-group__append {
121
- padding: $input-padding-xs-v $input-padding-h;
119
+ height: #{$base-input-size-xs-height}rem;
120
+ line-height: #{$base-input-size-xs-height}rem;
122
121
  font-size: $font-size-xs;
123
122
  }
124
123
  }
@@ -126,7 +125,8 @@
126
125
  &--sm {
127
126
  .pa-input-group__prepend,
128
127
  .pa-input-group__append {
129
- padding: $input-padding-v $input-padding-h;
128
+ height: #{$base-input-size-sm-height}rem;
129
+ line-height: #{$base-input-size-sm-height}rem;
130
130
  font-size: $font-size-sm;
131
131
  }
132
132
  }
@@ -134,7 +134,8 @@
134
134
  &--lg {
135
135
  .pa-input-group__prepend,
136
136
  .pa-input-group__append {
137
- padding: $input-padding-v $input-padding-h;
137
+ height: #{$base-input-size-lg-height}rem;
138
+ line-height: #{$base-input-size-lg-height}rem;
138
139
  font-size: $font-size-base;
139
140
  }
140
141
  }
@@ -142,7 +143,8 @@
142
143
  &--xl {
143
144
  .pa-input-group__prepend,
144
145
  .pa-input-group__append {
145
- padding: $input-padding-v $input-padding-h;
146
+ height: #{$base-input-size-xl-height}rem;
147
+ line-height: #{$base-input-size-xl-height}rem;
146
148
  font-size: $font-size-lg;
147
149
  }
148
150
  }
@@ -133,3 +133,35 @@ body.pa-layout--sticky .pa-layout__inner {
133
133
  gap: $spacing-xs;
134
134
  }
135
135
  }
136
+
137
+ // Responsive footer - stack sections on mobile
138
+ @media (max-width: $mobile-breakpoint) {
139
+ .pa-layout__footer {
140
+ flex-wrap: wrap;
141
+ min-height: auto;
142
+ padding: $spacing-sm $spacing-base;
143
+ }
144
+
145
+ .pa-footer__left,
146
+ .pa-footer__center,
147
+ .pa-footer__right {
148
+ flex-shrink: 1;
149
+ min-width: 0;
150
+ }
151
+
152
+ .pa-footer__left {
153
+ flex: 1 1 auto;
154
+ }
155
+
156
+ .pa-footer__center {
157
+ display: none; // Hide empty center on mobile
158
+ }
159
+
160
+ .pa-footer__right {
161
+ flex: 0 1 auto;
162
+
163
+ &--vertical {
164
+ align-items: flex-end;
165
+ }
166
+ }
167
+ }
@@ -4,17 +4,68 @@
4
4
  ======================================== */
5
5
  @use '../../variables' as *;
6
6
 
7
- // Sidebar layout element
7
+ // CSS variable for sidebar width (allows JS resize)
8
+ :root {
9
+ --pa-sidebar-width: #{$sidebar-width};
10
+ --pa-sidebar-min-width: 18rem;
11
+ --pa-sidebar-max-width: 50rem;
12
+ }
13
+
14
+ // Sidebar layout element - width in :where() for low specificity (utility classes can override)
15
+ :where(.pa-layout__sidebar) {
16
+ width: var(--pa-sidebar-width);
17
+ }
18
+
8
19
  .pa-layout__sidebar {
9
- width: $sidebar-width;
10
20
  background-color: var(--pa-sidebar-bg);
11
21
  border-right: $border-width-base solid var(--pa-border-color);
12
22
  flex-shrink: 0;
23
+ position: relative;
24
+ }
25
+
26
+ // Resize handle on sidebar edge
27
+ .pa-sidebar-resize {
28
+ position: absolute;
29
+ top: 0;
30
+ right: 0;
31
+ width: 6px;
32
+ height: 100%;
33
+ cursor: ew-resize;
34
+ z-index: 100;
35
+
36
+ // Visual indicator on hover
37
+ &::after {
38
+ content: '';
39
+ position: absolute;
40
+ top: 0;
41
+ left: 50%;
42
+ transform: translateX(-50%);
43
+ width: 2px;
44
+ height: 100%;
45
+ background-color: transparent;
46
+ transition: background-color $transition-fast $easing-snappy;
47
+ }
48
+
49
+ &:hover::after,
50
+ &--active::after {
51
+ background-color: var(--pa-accent);
52
+ }
53
+ }
54
+
55
+ // Disable text selection during resize
56
+ body.pa-sidebar-resizing {
57
+ cursor: ew-resize !important;
58
+ user-select: none;
59
+
60
+ * {
61
+ cursor: ew-resize !important;
62
+ }
13
63
  }
14
64
 
15
65
  // Sticky mode - sidebar scrolls
16
66
  body.pa-layout--sticky .pa-layout__sidebar {
17
67
  overflow-y: auto;
68
+ overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
18
69
  overflow-x: visible; // Allow tooltips to escape right
19
70
  }
20
71
 
@@ -277,9 +277,12 @@ $spacers: (
277
277
  .w-100 { width: 100% !important; }
278
278
  .w-auto { width: auto !important; }
279
279
 
280
- // Width utilities (fractions) - matches grid naming: pa-col-1-3, pa-col-2-3
280
+ // Width utilities (fractions) - matches grid naming
281
+ .w-1-2 { width: 50% !important; }
281
282
  .w-1-3 { width: 33.333333% !important; }
282
283
  .w-2-3 { width: 66.666667% !important; }
284
+ .w-1-4 { width: 25% !important; }
285
+ .w-3-4 { width: 75% !important; }
283
286
 
284
287
  // Min-width utilities
285
288
  .mw-25 { min-width: 25% !important; }
@@ -287,16 +290,22 @@ $spacers: (
287
290
  .mw-75 { min-width: 75% !important; }
288
291
  .mw-100 { min-width: 100% !important; }
289
292
  .mw-auto { min-width: auto !important; }
293
+ .mw-1-2 { min-width: 50% !important; }
290
294
  .mw-1-3 { min-width: 33.333333% !important; }
291
295
  .mw-2-3 { min-width: 66.666667% !important; }
296
+ .mw-1-4 { min-width: 25% !important; }
297
+ .mw-3-4 { min-width: 75% !important; }
292
298
 
293
299
  // Fixed width utilities (min-width + width locked)
294
300
  .w-25-fixed { min-width: 25% !important; width: 25% !important; }
295
301
  .w-50-fixed { min-width: 50% !important; width: 50% !important; }
296
302
  .w-75-fixed { min-width: 75% !important; width: 75% !important; }
297
303
  .w-100-fixed { min-width: 100% !important; width: 100% !important; }
304
+ .w-1-2-fixed { min-width: 50% !important; width: 50% !important; }
298
305
  .w-1-3-fixed { min-width: 33.333333% !important; width: 33.333333% !important; }
299
306
  .w-2-3-fixed { min-width: 66.666667% !important; width: 66.666667% !important; }
307
+ .w-1-4-fixed { min-width: 25% !important; width: 25% !important; }
308
+ .w-3-4-fixed { min-width: 75% !important; width: 75% !important; }
300
309
 
301
310
  // Height utilities
302
311
  .h-25 {
@@ -319,10 +328,17 @@ $spacers: (
319
328
  height: auto !important;
320
329
  }
321
330
 
331
+ // Height utilities (fractions)
332
+ .h-1-2 { height: 50% !important; }
333
+ .h-1-3 { height: 33.333333% !important; }
334
+ .h-2-3 { height: 66.666667% !important; }
335
+ .h-1-4 { height: 25% !important; }
336
+ .h-3-4 { height: 75% !important; }
337
+
322
338
  // ============================================================================
323
339
  // REM-BASED SIZING UTILITIES
324
340
  // Use 'r' suffix to distinguish from percentage-based utilities
325
- // Values: 1-10, 15, 20, 25 (rem)
341
+ // Values: 1-10, 15, 20, 25, 30, 35, 40, 45, 50 (rem)
326
342
  // ============================================================================
327
343
 
328
344
  // Width (rem)
@@ -339,6 +355,11 @@ $spacers: (
339
355
  .wr-15 { width: 15rem !important; }
340
356
  .wr-20 { width: 20rem !important; }
341
357
  .wr-25 { width: 25rem !important; }
358
+ .wr-30 { width: 30rem !important; }
359
+ .wr-35 { width: 35rem !important; }
360
+ .wr-40 { width: 40rem !important; }
361
+ .wr-45 { width: 45rem !important; }
362
+ .wr-50 { width: 50rem !important; }
342
363
 
343
364
  // Min-width (rem)
344
365
  .minwr-1 { min-width: 1rem !important; }
@@ -354,6 +375,11 @@ $spacers: (
354
375
  .minwr-15 { min-width: 15rem !important; }
355
376
  .minwr-20 { min-width: 20rem !important; }
356
377
  .minwr-25 { min-width: 25rem !important; }
378
+ .minwr-30 { min-width: 30rem !important; }
379
+ .minwr-35 { min-width: 35rem !important; }
380
+ .minwr-40 { min-width: 40rem !important; }
381
+ .minwr-45 { min-width: 45rem !important; }
382
+ .minwr-50 { min-width: 50rem !important; }
357
383
 
358
384
  // Max-width (rem)
359
385
  .maxwr-1 { max-width: 1rem !important; }
@@ -369,6 +395,11 @@ $spacers: (
369
395
  .maxwr-15 { max-width: 15rem !important; }
370
396
  .maxwr-20 { max-width: 20rem !important; }
371
397
  .maxwr-25 { max-width: 25rem !important; }
398
+ .maxwr-30 { max-width: 30rem !important; }
399
+ .maxwr-35 { max-width: 35rem !important; }
400
+ .maxwr-40 { max-width: 40rem !important; }
401
+ .maxwr-45 { max-width: 45rem !important; }
402
+ .maxwr-50 { max-width: 50rem !important; }
372
403
 
373
404
  // Height (rem)
374
405
  .hr-1 { height: 1rem !important; }
@@ -384,6 +415,11 @@ $spacers: (
384
415
  .hr-15 { height: 15rem !important; }
385
416
  .hr-20 { height: 20rem !important; }
386
417
  .hr-25 { height: 25rem !important; }
418
+ .hr-30 { height: 30rem !important; }
419
+ .hr-35 { height: 35rem !important; }
420
+ .hr-40 { height: 40rem !important; }
421
+ .hr-45 { height: 45rem !important; }
422
+ .hr-50 { height: 50rem !important; }
387
423
 
388
424
  // Min-height (rem)
389
425
  .minhr-1 { min-height: 1rem !important; }
@@ -399,6 +435,11 @@ $spacers: (
399
435
  .minhr-15 { min-height: 15rem !important; }
400
436
  .minhr-20 { min-height: 20rem !important; }
401
437
  .minhr-25 { min-height: 25rem !important; }
438
+ .minhr-30 { min-height: 30rem !important; }
439
+ .minhr-35 { min-height: 35rem !important; }
440
+ .minhr-40 { min-height: 40rem !important; }
441
+ .minhr-45 { min-height: 45rem !important; }
442
+ .minhr-50 { min-height: 50rem !important; }
402
443
 
403
444
  // Max-height (rem)
404
445
  .maxhr-1 { max-height: 1rem !important; }
@@ -414,6 +455,11 @@ $spacers: (
414
455
  .maxhr-15 { max-height: 15rem !important; }
415
456
  .maxhr-20 { max-height: 20rem !important; }
416
457
  .maxhr-25 { max-height: 25rem !important; }
458
+ .maxhr-30 { max-height: 30rem !important; }
459
+ .maxhr-35 { max-height: 35rem !important; }
460
+ .maxhr-40 { max-height: 40rem !important; }
461
+ .maxhr-45 { max-height: 45rem !important; }
462
+ .maxhr-50 { max-height: 50rem !important; }
417
463
 
418
464
  // ============================================================================
419
465
  // PERCENTAGE-BASED MIN/MAX UTILITIES
@@ -465,8 +511,11 @@ $spacers: (
465
511
  .maxw-90 { max-width: 90% !important; }
466
512
  .maxw-95 { max-width: 95% !important; }
467
513
  .maxw-100 { max-width: 100% !important; }
514
+ .maxw-1-2 { max-width: 50% !important; }
468
515
  .maxw-1-3 { max-width: 33.333333% !important; }
469
516
  .maxw-2-3 { max-width: 66.666667% !important; }
517
+ .maxw-1-4 { max-width: 25% !important; }
518
+ .maxw-3-4 { max-width: 75% !important; }
470
519
 
471
520
  // Min-height (percentage)
472
521
  .minh-5 { min-height: 5% !important; }
@@ -489,8 +538,11 @@ $spacers: (
489
538
  .minh-90 { min-height: 90% !important; }
490
539
  .minh-95 { min-height: 95% !important; }
491
540
  .minh-100 { min-height: 100% !important; }
541
+ .minh-1-2 { min-height: 50% !important; }
492
542
  .minh-1-3 { min-height: 33.333333% !important; }
493
543
  .minh-2-3 { min-height: 66.666667% !important; }
544
+ .minh-1-4 { min-height: 25% !important; }
545
+ .minh-3-4 { min-height: 75% !important; }
494
546
 
495
547
  // Max-height (percentage)
496
548
  .maxh-5 { max-height: 5% !important; }
@@ -513,8 +565,11 @@ $spacers: (
513
565
  .maxh-90 { max-height: 90% !important; }
514
566
  .maxh-95 { max-height: 95% !important; }
515
567
  .maxh-100 { max-height: 100% !important; }
568
+ .maxh-1-2 { max-height: 50% !important; }
516
569
  .maxh-1-3 { max-height: 33.333333% !important; }
517
570
  .maxh-2-3 { max-height: 66.666667% !important; }
571
+ .maxh-1-4 { max-height: 25% !important; }
572
+ .maxh-3-4 { max-height: 75% !important; }
518
573
 
519
574
  // Position utilities
520
575
  .position-static {