@keenmate/pure-admin-core 2.1.1 → 2.3.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/README.md CHANGED
@@ -2,14 +2,16 @@
2
2
 
3
3
  Lightweight, data-focused CSS/SCSS admin framework with Corporate theme as default.
4
4
 
5
- ## What's New in 2.1.0
5
+ ## What's New in 2.3.0
6
6
 
7
- - **Split Button** (`pa-btn-split`) Primary action + dropdown toggle with Floating UI positioning, RTL support, custom icons, upward placement, and size variants
8
- - **Filter Card** (`pa-filter-card`) Expandable filter card with inline filters row, actions, and collapsible advanced section
9
- - **Responsive grid table hover fix** — Card-style tables no longer highlight all cells on hover
10
- - **Mobile sidebar burger fix** — Sidebar behavior modes no longer show X instead of hamburger on mobile
11
- - **Sidebar resize fix** — Resize no longer blocked in icon-collapse mode when sidebar is expanded; disabled on mobile
12
- - **Actions column consistency** — All demo tables now show Actions as the first column
7
+ - **Toast action buttons** — New `pa-toast__actions` element for action buttons inside toasts, separated by a border-top. Toast service supports `actions: [{ label, variant, onClick }]` with auto-dismiss on click
8
+ - **Toast service improvements** `filled`, `progressColor`, and `maxWidth` options. Container width ratchets up to the widest toast shown, preventing layout jitter when toasts dismiss
9
+ - **Toast progress bar** — More visible: 5px height, 0.6 opacity (was 3px / 0.3)
10
+
11
+ ## What's New in 2.2.0
12
+
13
+ - **Theme color slots (1-9) across components** — Alerts, callouts, toasts, and buttons now support `--color-{1-9}` and `--outline-color-{1-9}` variants using the 9 custom theme color slots. Themes that define `$color-1` through `$color-9` get matching component styles automatically
14
+ - **Filled toast variants** — New `pa-toast--filled-*` variants with full-color backgrounds, contrast text, and semi-transparent progress bars. Available for all standard colors and theme color slots
13
15
 
14
16
  ## Installation
15
17
 
@@ -337,6 +339,10 @@ Works with both `pa-table` and `web-grid` component. First/last columns automati
337
339
  ### Toasts
338
340
  - `.pa-toast` - Base toast
339
341
  - `.pa-toast--primary/success/danger/warning/info` - Variants
342
+ - `.pa-toast--filled-primary/success/danger/warning/info` - Filled variants (full-color background)
343
+ - `.pa-toast--color-{1-9}` / `.pa-toast--filled-color-{1-9}` - Theme color slot variants
344
+ - `.pa-toast__actions` - Action button row with border-top separator
345
+ - `.pa-toast__progress` - Auto-dismiss progress bar (5px, 0.6 opacity)
340
346
  - Positions (RTL-aware): `top-end`, `top-center`, `top-start`, `bottom-end`, `bottom-center`, `bottom-start`
341
347
 
342
348
  ### Tooltips & Popovers
package/dist/css/main.css CHANGED
@@ -5574,14 +5574,10 @@ body:not(.sidebar-hidden) .pa-layout__sidebar--icon-collapse .pa-sidebar__icon {
5574
5574
  justify-content: space-between;
5575
5575
  align-items: center;
5576
5576
  }
5577
- .pa-card__tools {
5578
- display: flex;
5579
- gap: 0.8rem;
5580
- align-items: center;
5581
- }
5582
5577
  .pa-card__actions {
5583
5578
  display: flex;
5584
5579
  gap: 0.8rem;
5580
+ align-items: center;
5585
5581
  }
5586
5582
  .pa-card__meta {
5587
5583
  color: var(--pa-text-color-2);
@@ -7410,6 +7406,159 @@ a.pa-card p {
7410
7406
  background-color: var(--pa-btn-info-bg);
7411
7407
  color: var(--pa-btn-info-text);
7412
7408
  }
7409
+ .pa-btn--color-1 {
7410
+ background-color: var(--pa-color-1);
7411
+ border-color: var(--pa-color-1);
7412
+ color: var(--pa-color-1-text);
7413
+ }
7414
+ .pa-btn--color-1:hover {
7415
+ filter: brightness(0.9);
7416
+ }
7417
+ .pa-btn--outline-color-1 {
7418
+ background-color: transparent;
7419
+ border-color: var(--pa-color-1);
7420
+ color: var(--pa-color-1);
7421
+ }
7422
+ .pa-btn--outline-color-1:hover {
7423
+ background-color: var(--pa-color-1);
7424
+ color: var(--pa-color-1-text);
7425
+ }
7426
+ .pa-btn--color-2 {
7427
+ background-color: var(--pa-color-2);
7428
+ border-color: var(--pa-color-2);
7429
+ color: var(--pa-color-2-text);
7430
+ }
7431
+ .pa-btn--color-2:hover {
7432
+ filter: brightness(0.9);
7433
+ }
7434
+ .pa-btn--outline-color-2 {
7435
+ background-color: transparent;
7436
+ border-color: var(--pa-color-2);
7437
+ color: var(--pa-color-2);
7438
+ }
7439
+ .pa-btn--outline-color-2:hover {
7440
+ background-color: var(--pa-color-2);
7441
+ color: var(--pa-color-2-text);
7442
+ }
7443
+ .pa-btn--color-3 {
7444
+ background-color: var(--pa-color-3);
7445
+ border-color: var(--pa-color-3);
7446
+ color: var(--pa-color-3-text);
7447
+ }
7448
+ .pa-btn--color-3:hover {
7449
+ filter: brightness(0.9);
7450
+ }
7451
+ .pa-btn--outline-color-3 {
7452
+ background-color: transparent;
7453
+ border-color: var(--pa-color-3);
7454
+ color: var(--pa-color-3);
7455
+ }
7456
+ .pa-btn--outline-color-3:hover {
7457
+ background-color: var(--pa-color-3);
7458
+ color: var(--pa-color-3-text);
7459
+ }
7460
+ .pa-btn--color-4 {
7461
+ background-color: var(--pa-color-4);
7462
+ border-color: var(--pa-color-4);
7463
+ color: var(--pa-color-4-text);
7464
+ }
7465
+ .pa-btn--color-4:hover {
7466
+ filter: brightness(0.9);
7467
+ }
7468
+ .pa-btn--outline-color-4 {
7469
+ background-color: transparent;
7470
+ border-color: var(--pa-color-4);
7471
+ color: var(--pa-color-4);
7472
+ }
7473
+ .pa-btn--outline-color-4:hover {
7474
+ background-color: var(--pa-color-4);
7475
+ color: var(--pa-color-4-text);
7476
+ }
7477
+ .pa-btn--color-5 {
7478
+ background-color: var(--pa-color-5);
7479
+ border-color: var(--pa-color-5);
7480
+ color: var(--pa-color-5-text);
7481
+ }
7482
+ .pa-btn--color-5:hover {
7483
+ filter: brightness(0.9);
7484
+ }
7485
+ .pa-btn--outline-color-5 {
7486
+ background-color: transparent;
7487
+ border-color: var(--pa-color-5);
7488
+ color: var(--pa-color-5);
7489
+ }
7490
+ .pa-btn--outline-color-5:hover {
7491
+ background-color: var(--pa-color-5);
7492
+ color: var(--pa-color-5-text);
7493
+ }
7494
+ .pa-btn--color-6 {
7495
+ background-color: var(--pa-color-6);
7496
+ border-color: var(--pa-color-6);
7497
+ color: var(--pa-color-6-text);
7498
+ }
7499
+ .pa-btn--color-6:hover {
7500
+ filter: brightness(0.9);
7501
+ }
7502
+ .pa-btn--outline-color-6 {
7503
+ background-color: transparent;
7504
+ border-color: var(--pa-color-6);
7505
+ color: var(--pa-color-6);
7506
+ }
7507
+ .pa-btn--outline-color-6:hover {
7508
+ background-color: var(--pa-color-6);
7509
+ color: var(--pa-color-6-text);
7510
+ }
7511
+ .pa-btn--color-7 {
7512
+ background-color: var(--pa-color-7);
7513
+ border-color: var(--pa-color-7);
7514
+ color: var(--pa-color-7-text);
7515
+ }
7516
+ .pa-btn--color-7:hover {
7517
+ filter: brightness(0.9);
7518
+ }
7519
+ .pa-btn--outline-color-7 {
7520
+ background-color: transparent;
7521
+ border-color: var(--pa-color-7);
7522
+ color: var(--pa-color-7);
7523
+ }
7524
+ .pa-btn--outline-color-7:hover {
7525
+ background-color: var(--pa-color-7);
7526
+ color: var(--pa-color-7-text);
7527
+ }
7528
+ .pa-btn--color-8 {
7529
+ background-color: var(--pa-color-8);
7530
+ border-color: var(--pa-color-8);
7531
+ color: var(--pa-color-8-text);
7532
+ }
7533
+ .pa-btn--color-8:hover {
7534
+ filter: brightness(0.9);
7535
+ }
7536
+ .pa-btn--outline-color-8 {
7537
+ background-color: transparent;
7538
+ border-color: var(--pa-color-8);
7539
+ color: var(--pa-color-8);
7540
+ }
7541
+ .pa-btn--outline-color-8:hover {
7542
+ background-color: var(--pa-color-8);
7543
+ color: var(--pa-color-8-text);
7544
+ }
7545
+ .pa-btn--color-9 {
7546
+ background-color: var(--pa-color-9);
7547
+ border-color: var(--pa-color-9);
7548
+ color: var(--pa-color-9-text);
7549
+ }
7550
+ .pa-btn--color-9:hover {
7551
+ filter: brightness(0.9);
7552
+ }
7553
+ .pa-btn--outline-color-9 {
7554
+ background-color: transparent;
7555
+ border-color: var(--pa-color-9);
7556
+ color: var(--pa-color-9);
7557
+ }
7558
+ .pa-btn--outline-color-9:hover {
7559
+ background-color: var(--pa-color-9);
7560
+ color: var(--pa-color-9-text);
7561
+ }
7413
7562
  .pa-btn:disabled {
7414
7563
  opacity: 0.65;
7415
7564
  cursor: not-allowed;
@@ -8671,6 +8820,96 @@ a.pa-card p {
8671
8820
  border-color: var(--pa-info-bg);
8672
8821
  background-color: transparent;
8673
8822
  }
8823
+ .pa-alert--color-1 {
8824
+ color: var(--pa-color-1-text);
8825
+ background-color: var(--pa-color-1);
8826
+ border-color: var(--pa-color-1);
8827
+ }
8828
+ .pa-alert--outline-color-1 {
8829
+ color: var(--pa-color-1);
8830
+ border-color: var(--pa-color-1);
8831
+ background-color: transparent;
8832
+ }
8833
+ .pa-alert--color-2 {
8834
+ color: var(--pa-color-2-text);
8835
+ background-color: var(--pa-color-2);
8836
+ border-color: var(--pa-color-2);
8837
+ }
8838
+ .pa-alert--outline-color-2 {
8839
+ color: var(--pa-color-2);
8840
+ border-color: var(--pa-color-2);
8841
+ background-color: transparent;
8842
+ }
8843
+ .pa-alert--color-3 {
8844
+ color: var(--pa-color-3-text);
8845
+ background-color: var(--pa-color-3);
8846
+ border-color: var(--pa-color-3);
8847
+ }
8848
+ .pa-alert--outline-color-3 {
8849
+ color: var(--pa-color-3);
8850
+ border-color: var(--pa-color-3);
8851
+ background-color: transparent;
8852
+ }
8853
+ .pa-alert--color-4 {
8854
+ color: var(--pa-color-4-text);
8855
+ background-color: var(--pa-color-4);
8856
+ border-color: var(--pa-color-4);
8857
+ }
8858
+ .pa-alert--outline-color-4 {
8859
+ color: var(--pa-color-4);
8860
+ border-color: var(--pa-color-4);
8861
+ background-color: transparent;
8862
+ }
8863
+ .pa-alert--color-5 {
8864
+ color: var(--pa-color-5-text);
8865
+ background-color: var(--pa-color-5);
8866
+ border-color: var(--pa-color-5);
8867
+ }
8868
+ .pa-alert--outline-color-5 {
8869
+ color: var(--pa-color-5);
8870
+ border-color: var(--pa-color-5);
8871
+ background-color: transparent;
8872
+ }
8873
+ .pa-alert--color-6 {
8874
+ color: var(--pa-color-6-text);
8875
+ background-color: var(--pa-color-6);
8876
+ border-color: var(--pa-color-6);
8877
+ }
8878
+ .pa-alert--outline-color-6 {
8879
+ color: var(--pa-color-6);
8880
+ border-color: var(--pa-color-6);
8881
+ background-color: transparent;
8882
+ }
8883
+ .pa-alert--color-7 {
8884
+ color: var(--pa-color-7-text);
8885
+ background-color: var(--pa-color-7);
8886
+ border-color: var(--pa-color-7);
8887
+ }
8888
+ .pa-alert--outline-color-7 {
8889
+ color: var(--pa-color-7);
8890
+ border-color: var(--pa-color-7);
8891
+ background-color: transparent;
8892
+ }
8893
+ .pa-alert--color-8 {
8894
+ color: var(--pa-color-8-text);
8895
+ background-color: var(--pa-color-8);
8896
+ border-color: var(--pa-color-8);
8897
+ }
8898
+ .pa-alert--outline-color-8 {
8899
+ color: var(--pa-color-8);
8900
+ border-color: var(--pa-color-8);
8901
+ background-color: transparent;
8902
+ }
8903
+ .pa-alert--color-9 {
8904
+ color: var(--pa-color-9-text);
8905
+ background-color: var(--pa-color-9);
8906
+ border-color: var(--pa-color-9);
8907
+ }
8908
+ .pa-alert--outline-color-9 {
8909
+ color: var(--pa-color-9);
8910
+ border-color: var(--pa-color-9);
8911
+ background-color: transparent;
8912
+ }
8674
8913
  .pa-alert--sm {
8675
8914
  padding: 1.2rem 1rem;
8676
8915
  font-size: 1.4rem;
@@ -8796,6 +9035,42 @@ a.pa-card p {
8796
9035
  border-inline-start-color: var(--pa-info-bg);
8797
9036
  background-color: var(--pa-info-bg-subtle);
8798
9037
  }
9038
+ .pa-callout--color-1 {
9039
+ border-inline-start-color: var(--pa-color-1);
9040
+ background-color: color-mix(in srgb, var(--pa-color-1) 10%, transparent);
9041
+ }
9042
+ .pa-callout--color-2 {
9043
+ border-inline-start-color: var(--pa-color-2);
9044
+ background-color: color-mix(in srgb, var(--pa-color-2) 10%, transparent);
9045
+ }
9046
+ .pa-callout--color-3 {
9047
+ border-inline-start-color: var(--pa-color-3);
9048
+ background-color: color-mix(in srgb, var(--pa-color-3) 10%, transparent);
9049
+ }
9050
+ .pa-callout--color-4 {
9051
+ border-inline-start-color: var(--pa-color-4);
9052
+ background-color: color-mix(in srgb, var(--pa-color-4) 10%, transparent);
9053
+ }
9054
+ .pa-callout--color-5 {
9055
+ border-inline-start-color: var(--pa-color-5);
9056
+ background-color: color-mix(in srgb, var(--pa-color-5) 10%, transparent);
9057
+ }
9058
+ .pa-callout--color-6 {
9059
+ border-inline-start-color: var(--pa-color-6);
9060
+ background-color: color-mix(in srgb, var(--pa-color-6) 10%, transparent);
9061
+ }
9062
+ .pa-callout--color-7 {
9063
+ border-inline-start-color: var(--pa-color-7);
9064
+ background-color: color-mix(in srgb, var(--pa-color-7) 10%, transparent);
9065
+ }
9066
+ .pa-callout--color-8 {
9067
+ border-inline-start-color: var(--pa-color-8);
9068
+ background-color: color-mix(in srgb, var(--pa-color-8) 10%, transparent);
9069
+ }
9070
+ .pa-callout--color-9 {
9071
+ border-inline-start-color: var(--pa-color-9);
9072
+ background-color: color-mix(in srgb, var(--pa-color-9) 10%, transparent);
9073
+ }
8799
9074
  .pa-callout--sm {
8800
9075
  padding: 0.8rem 1.2rem;
8801
9076
  font-size: 1.2rem;
@@ -12523,6 +12798,15 @@ code {
12523
12798
  line-height: 1.5;
12524
12799
  }
12525
12800
 
12801
+ .pa-toast__actions {
12802
+ margin-top: 1.6rem;
12803
+ padding-top: 1.6rem;
12804
+ border-top: 1px solid var(--pa-border-color);
12805
+ display: flex;
12806
+ gap: 0.8rem;
12807
+ flex-wrap: wrap;
12808
+ }
12809
+
12526
12810
  .pa-toast__close {
12527
12811
  flex-shrink: 0;
12528
12812
  background: none;
@@ -12553,9 +12837,9 @@ code {
12553
12837
  position: absolute;
12554
12838
  bottom: 0;
12555
12839
  inset-inline-start: 0;
12556
- height: 3px;
12840
+ height: 5px;
12557
12841
  background-color: currentColor;
12558
- opacity: 0.3;
12842
+ opacity: 0.6;
12559
12843
  transition: width linear;
12560
12844
  }
12561
12845
 
@@ -12614,6 +12898,389 @@ code {
12614
12898
  color: var(--pa-btn-info-bg);
12615
12899
  }
12616
12900
 
12901
+ .pa-toast--color-1 {
12902
+ border-color: var(--pa-color-1);
12903
+ }
12904
+ .pa-toast--color-1 .pa-toast__icon {
12905
+ background-color: color-mix(in srgb, var(--pa-color-1) 15%, transparent);
12906
+ color: var(--pa-color-1);
12907
+ }
12908
+ .pa-toast--color-1 .pa-toast__progress {
12909
+ color: var(--pa-color-1);
12910
+ }
12911
+
12912
+ .pa-toast--color-2 {
12913
+ border-color: var(--pa-color-2);
12914
+ }
12915
+ .pa-toast--color-2 .pa-toast__icon {
12916
+ background-color: color-mix(in srgb, var(--pa-color-2) 15%, transparent);
12917
+ color: var(--pa-color-2);
12918
+ }
12919
+ .pa-toast--color-2 .pa-toast__progress {
12920
+ color: var(--pa-color-2);
12921
+ }
12922
+
12923
+ .pa-toast--color-3 {
12924
+ border-color: var(--pa-color-3);
12925
+ }
12926
+ .pa-toast--color-3 .pa-toast__icon {
12927
+ background-color: color-mix(in srgb, var(--pa-color-3) 15%, transparent);
12928
+ color: var(--pa-color-3);
12929
+ }
12930
+ .pa-toast--color-3 .pa-toast__progress {
12931
+ color: var(--pa-color-3);
12932
+ }
12933
+
12934
+ .pa-toast--color-4 {
12935
+ border-color: var(--pa-color-4);
12936
+ }
12937
+ .pa-toast--color-4 .pa-toast__icon {
12938
+ background-color: color-mix(in srgb, var(--pa-color-4) 15%, transparent);
12939
+ color: var(--pa-color-4);
12940
+ }
12941
+ .pa-toast--color-4 .pa-toast__progress {
12942
+ color: var(--pa-color-4);
12943
+ }
12944
+
12945
+ .pa-toast--color-5 {
12946
+ border-color: var(--pa-color-5);
12947
+ }
12948
+ .pa-toast--color-5 .pa-toast__icon {
12949
+ background-color: color-mix(in srgb, var(--pa-color-5) 15%, transparent);
12950
+ color: var(--pa-color-5);
12951
+ }
12952
+ .pa-toast--color-5 .pa-toast__progress {
12953
+ color: var(--pa-color-5);
12954
+ }
12955
+
12956
+ .pa-toast--color-6 {
12957
+ border-color: var(--pa-color-6);
12958
+ }
12959
+ .pa-toast--color-6 .pa-toast__icon {
12960
+ background-color: color-mix(in srgb, var(--pa-color-6) 15%, transparent);
12961
+ color: var(--pa-color-6);
12962
+ }
12963
+ .pa-toast--color-6 .pa-toast__progress {
12964
+ color: var(--pa-color-6);
12965
+ }
12966
+
12967
+ .pa-toast--color-7 {
12968
+ border-color: var(--pa-color-7);
12969
+ }
12970
+ .pa-toast--color-7 .pa-toast__icon {
12971
+ background-color: color-mix(in srgb, var(--pa-color-7) 15%, transparent);
12972
+ color: var(--pa-color-7);
12973
+ }
12974
+ .pa-toast--color-7 .pa-toast__progress {
12975
+ color: var(--pa-color-7);
12976
+ }
12977
+
12978
+ .pa-toast--color-8 {
12979
+ border-color: var(--pa-color-8);
12980
+ }
12981
+ .pa-toast--color-8 .pa-toast__icon {
12982
+ background-color: color-mix(in srgb, var(--pa-color-8) 15%, transparent);
12983
+ color: var(--pa-color-8);
12984
+ }
12985
+ .pa-toast--color-8 .pa-toast__progress {
12986
+ color: var(--pa-color-8);
12987
+ }
12988
+
12989
+ .pa-toast--color-9 {
12990
+ border-color: var(--pa-color-9);
12991
+ }
12992
+ .pa-toast--color-9 .pa-toast__icon {
12993
+ background-color: color-mix(in srgb, var(--pa-color-9) 15%, transparent);
12994
+ color: var(--pa-color-9);
12995
+ }
12996
+ .pa-toast--color-9 .pa-toast__progress {
12997
+ color: var(--pa-color-9);
12998
+ }
12999
+
13000
+ [class*=pa-toast--filled] .pa-toast__actions {
13001
+ border-top-color: rgba(255, 255, 255, 0.25);
13002
+ }
13003
+
13004
+ .pa-toast--filled-primary {
13005
+ background-color: var(--pa-btn-primary-bg);
13006
+ border-color: var(--pa-btn-primary-bg);
13007
+ color: var(--pa-btn-primary-text);
13008
+ }
13009
+ .pa-toast--filled-primary .pa-toast__title,
13010
+ .pa-toast--filled-primary .pa-toast__message {
13011
+ color: inherit;
13012
+ }
13013
+ .pa-toast--filled-primary .pa-toast__icon {
13014
+ background-color: rgba(255, 255, 255, 0.2);
13015
+ color: inherit;
13016
+ }
13017
+ .pa-toast--filled-primary .pa-toast__close {
13018
+ color: inherit;
13019
+ }
13020
+ .pa-toast--filled-primary .pa-toast__progress {
13021
+ color: rgba(255, 255, 255, 0.5);
13022
+ }
13023
+
13024
+ .pa-toast--filled-success {
13025
+ background-color: var(--pa-btn-success-bg);
13026
+ border-color: var(--pa-btn-success-bg);
13027
+ color: var(--pa-btn-success-text);
13028
+ }
13029
+ .pa-toast--filled-success .pa-toast__title,
13030
+ .pa-toast--filled-success .pa-toast__message {
13031
+ color: inherit;
13032
+ }
13033
+ .pa-toast--filled-success .pa-toast__icon {
13034
+ background-color: rgba(255, 255, 255, 0.2);
13035
+ color: inherit;
13036
+ }
13037
+ .pa-toast--filled-success .pa-toast__close {
13038
+ color: inherit;
13039
+ }
13040
+ .pa-toast--filled-success .pa-toast__progress {
13041
+ color: rgba(255, 255, 255, 0.5);
13042
+ }
13043
+
13044
+ .pa-toast--filled-danger {
13045
+ background-color: var(--pa-btn-danger-bg);
13046
+ border-color: var(--pa-btn-danger-bg);
13047
+ color: var(--pa-btn-danger-text);
13048
+ }
13049
+ .pa-toast--filled-danger .pa-toast__title,
13050
+ .pa-toast--filled-danger .pa-toast__message {
13051
+ color: inherit;
13052
+ }
13053
+ .pa-toast--filled-danger .pa-toast__icon {
13054
+ background-color: rgba(255, 255, 255, 0.2);
13055
+ color: inherit;
13056
+ }
13057
+ .pa-toast--filled-danger .pa-toast__close {
13058
+ color: inherit;
13059
+ }
13060
+ .pa-toast--filled-danger .pa-toast__progress {
13061
+ color: rgba(255, 255, 255, 0.5);
13062
+ }
13063
+
13064
+ .pa-toast--filled-warning {
13065
+ background-color: var(--pa-btn-warning-bg);
13066
+ border-color: var(--pa-btn-warning-bg);
13067
+ color: var(--pa-btn-warning-text);
13068
+ }
13069
+ .pa-toast--filled-warning .pa-toast__title,
13070
+ .pa-toast--filled-warning .pa-toast__message {
13071
+ color: inherit;
13072
+ }
13073
+ .pa-toast--filled-warning .pa-toast__icon {
13074
+ background-color: rgba(255, 255, 255, 0.2);
13075
+ color: inherit;
13076
+ }
13077
+ .pa-toast--filled-warning .pa-toast__close {
13078
+ color: inherit;
13079
+ }
13080
+ .pa-toast--filled-warning .pa-toast__progress {
13081
+ color: rgba(255, 255, 255, 0.5);
13082
+ }
13083
+
13084
+ .pa-toast--filled-info {
13085
+ background-color: var(--pa-btn-info-bg);
13086
+ border-color: var(--pa-btn-info-bg);
13087
+ color: var(--pa-btn-info-text);
13088
+ }
13089
+ .pa-toast--filled-info .pa-toast__title,
13090
+ .pa-toast--filled-info .pa-toast__message {
13091
+ color: inherit;
13092
+ }
13093
+ .pa-toast--filled-info .pa-toast__icon {
13094
+ background-color: rgba(255, 255, 255, 0.2);
13095
+ color: inherit;
13096
+ }
13097
+ .pa-toast--filled-info .pa-toast__close {
13098
+ color: inherit;
13099
+ }
13100
+ .pa-toast--filled-info .pa-toast__progress {
13101
+ color: rgba(255, 255, 255, 0.5);
13102
+ }
13103
+
13104
+ .pa-toast--filled-color-1 {
13105
+ background-color: var(--pa-color-1);
13106
+ border-color: var(--pa-color-1);
13107
+ color: var(--pa-color-1-text);
13108
+ }
13109
+ .pa-toast--filled-color-1 .pa-toast__title,
13110
+ .pa-toast--filled-color-1 .pa-toast__message {
13111
+ color: inherit;
13112
+ }
13113
+ .pa-toast--filled-color-1 .pa-toast__icon {
13114
+ background-color: rgba(255, 255, 255, 0.2);
13115
+ color: inherit;
13116
+ }
13117
+ .pa-toast--filled-color-1 .pa-toast__close {
13118
+ color: inherit;
13119
+ }
13120
+ .pa-toast--filled-color-1 .pa-toast__progress {
13121
+ color: rgba(255, 255, 255, 0.5);
13122
+ }
13123
+
13124
+ .pa-toast--filled-color-2 {
13125
+ background-color: var(--pa-color-2);
13126
+ border-color: var(--pa-color-2);
13127
+ color: var(--pa-color-2-text);
13128
+ }
13129
+ .pa-toast--filled-color-2 .pa-toast__title,
13130
+ .pa-toast--filled-color-2 .pa-toast__message {
13131
+ color: inherit;
13132
+ }
13133
+ .pa-toast--filled-color-2 .pa-toast__icon {
13134
+ background-color: rgba(255, 255, 255, 0.2);
13135
+ color: inherit;
13136
+ }
13137
+ .pa-toast--filled-color-2 .pa-toast__close {
13138
+ color: inherit;
13139
+ }
13140
+ .pa-toast--filled-color-2 .pa-toast__progress {
13141
+ color: rgba(255, 255, 255, 0.5);
13142
+ }
13143
+
13144
+ .pa-toast--filled-color-3 {
13145
+ background-color: var(--pa-color-3);
13146
+ border-color: var(--pa-color-3);
13147
+ color: var(--pa-color-3-text);
13148
+ }
13149
+ .pa-toast--filled-color-3 .pa-toast__title,
13150
+ .pa-toast--filled-color-3 .pa-toast__message {
13151
+ color: inherit;
13152
+ }
13153
+ .pa-toast--filled-color-3 .pa-toast__icon {
13154
+ background-color: rgba(255, 255, 255, 0.2);
13155
+ color: inherit;
13156
+ }
13157
+ .pa-toast--filled-color-3 .pa-toast__close {
13158
+ color: inherit;
13159
+ }
13160
+ .pa-toast--filled-color-3 .pa-toast__progress {
13161
+ color: rgba(255, 255, 255, 0.5);
13162
+ }
13163
+
13164
+ .pa-toast--filled-color-4 {
13165
+ background-color: var(--pa-color-4);
13166
+ border-color: var(--pa-color-4);
13167
+ color: var(--pa-color-4-text);
13168
+ }
13169
+ .pa-toast--filled-color-4 .pa-toast__title,
13170
+ .pa-toast--filled-color-4 .pa-toast__message {
13171
+ color: inherit;
13172
+ }
13173
+ .pa-toast--filled-color-4 .pa-toast__icon {
13174
+ background-color: rgba(255, 255, 255, 0.2);
13175
+ color: inherit;
13176
+ }
13177
+ .pa-toast--filled-color-4 .pa-toast__close {
13178
+ color: inherit;
13179
+ }
13180
+ .pa-toast--filled-color-4 .pa-toast__progress {
13181
+ color: rgba(255, 255, 255, 0.5);
13182
+ }
13183
+
13184
+ .pa-toast--filled-color-5 {
13185
+ background-color: var(--pa-color-5);
13186
+ border-color: var(--pa-color-5);
13187
+ color: var(--pa-color-5-text);
13188
+ }
13189
+ .pa-toast--filled-color-5 .pa-toast__title,
13190
+ .pa-toast--filled-color-5 .pa-toast__message {
13191
+ color: inherit;
13192
+ }
13193
+ .pa-toast--filled-color-5 .pa-toast__icon {
13194
+ background-color: rgba(255, 255, 255, 0.2);
13195
+ color: inherit;
13196
+ }
13197
+ .pa-toast--filled-color-5 .pa-toast__close {
13198
+ color: inherit;
13199
+ }
13200
+ .pa-toast--filled-color-5 .pa-toast__progress {
13201
+ color: rgba(255, 255, 255, 0.5);
13202
+ }
13203
+
13204
+ .pa-toast--filled-color-6 {
13205
+ background-color: var(--pa-color-6);
13206
+ border-color: var(--pa-color-6);
13207
+ color: var(--pa-color-6-text);
13208
+ }
13209
+ .pa-toast--filled-color-6 .pa-toast__title,
13210
+ .pa-toast--filled-color-6 .pa-toast__message {
13211
+ color: inherit;
13212
+ }
13213
+ .pa-toast--filled-color-6 .pa-toast__icon {
13214
+ background-color: rgba(255, 255, 255, 0.2);
13215
+ color: inherit;
13216
+ }
13217
+ .pa-toast--filled-color-6 .pa-toast__close {
13218
+ color: inherit;
13219
+ }
13220
+ .pa-toast--filled-color-6 .pa-toast__progress {
13221
+ color: rgba(255, 255, 255, 0.5);
13222
+ }
13223
+
13224
+ .pa-toast--filled-color-7 {
13225
+ background-color: var(--pa-color-7);
13226
+ border-color: var(--pa-color-7);
13227
+ color: var(--pa-color-7-text);
13228
+ }
13229
+ .pa-toast--filled-color-7 .pa-toast__title,
13230
+ .pa-toast--filled-color-7 .pa-toast__message {
13231
+ color: inherit;
13232
+ }
13233
+ .pa-toast--filled-color-7 .pa-toast__icon {
13234
+ background-color: rgba(255, 255, 255, 0.2);
13235
+ color: inherit;
13236
+ }
13237
+ .pa-toast--filled-color-7 .pa-toast__close {
13238
+ color: inherit;
13239
+ }
13240
+ .pa-toast--filled-color-7 .pa-toast__progress {
13241
+ color: rgba(255, 255, 255, 0.5);
13242
+ }
13243
+
13244
+ .pa-toast--filled-color-8 {
13245
+ background-color: var(--pa-color-8);
13246
+ border-color: var(--pa-color-8);
13247
+ color: var(--pa-color-8-text);
13248
+ }
13249
+ .pa-toast--filled-color-8 .pa-toast__title,
13250
+ .pa-toast--filled-color-8 .pa-toast__message {
13251
+ color: inherit;
13252
+ }
13253
+ .pa-toast--filled-color-8 .pa-toast__icon {
13254
+ background-color: rgba(255, 255, 255, 0.2);
13255
+ color: inherit;
13256
+ }
13257
+ .pa-toast--filled-color-8 .pa-toast__close {
13258
+ color: inherit;
13259
+ }
13260
+ .pa-toast--filled-color-8 .pa-toast__progress {
13261
+ color: rgba(255, 255, 255, 0.5);
13262
+ }
13263
+
13264
+ .pa-toast--filled-color-9 {
13265
+ background-color: var(--pa-color-9);
13266
+ border-color: var(--pa-color-9);
13267
+ color: var(--pa-color-9-text);
13268
+ }
13269
+ .pa-toast--filled-color-9 .pa-toast__title,
13270
+ .pa-toast--filled-color-9 .pa-toast__message {
13271
+ color: inherit;
13272
+ }
13273
+ .pa-toast--filled-color-9 .pa-toast__icon {
13274
+ background-color: rgba(255, 255, 255, 0.2);
13275
+ color: inherit;
13276
+ }
13277
+ .pa-toast--filled-color-9 .pa-toast__close {
13278
+ color: inherit;
13279
+ }
13280
+ .pa-toast--filled-color-9 .pa-toast__progress {
13281
+ color: rgba(255, 255, 255, 0.5);
13282
+ }
13283
+
12617
13284
  @media (max-width: 768px) {
12618
13285
  .pa-toast-container {
12619
13286
  inset-inline: 1.2rem !important;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keenmate/pure-admin-core",
3
- "version": "2.1.1",
3
+ "version": "2.3.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": {
@@ -158,6 +158,21 @@
158
158
  </div>
159
159
 
160
160
 
161
+ <!-- THEME COLOR ALERTS (color-1 through color-9) -->
162
+
163
+ <!-- Theme Color 1 Alert (filled) -->
164
+ <div class="pa-alert pa-alert--color-1">
165
+ <strong>Color 1!</strong> Theme color slot 1 alert.
166
+ </div>
167
+
168
+ <!-- Theme Color 1 Alert (outline) -->
169
+ <div class="pa-alert pa-alert--outline-color-1">
170
+ <strong>Color 1 Outline!</strong> Theme color slot 1 outline alert.
171
+ </div>
172
+
173
+ <!-- Pattern: pa-alert--color-{1-9} and pa-alert--outline-color-{1-9} -->
174
+
175
+
161
176
  <!-- ALERT SIZES -->
162
177
 
163
178
  <!-- Small Alert -->
@@ -235,6 +250,10 @@ OUTLINE VARIANTS (border only):
235
250
  - .pa-alert--outline-warning: Orange outline
236
251
  - .pa-alert--outline-info: Cyan outline
237
252
 
253
+ THEME COLOR VARIANTS (1-9):
254
+ - .pa-alert--color-{1-9}: Filled theme color slot
255
+ - .pa-alert--outline-color-{1-9}: Outline theme color slot
256
+
238
257
  SIZES:
239
258
  - .pa-alert--sm: Small alert (reduced padding and font)
240
259
  - (default): Standard size
@@ -176,7 +176,7 @@
176
176
  <span class="pa-card__title-icon">📊</span>
177
177
  <h3 class="pa-card__title-text">Analytics Dashboard</h3>
178
178
  </div>
179
- <div class="pa-card__tools">
179
+ <div class="pa-card__actions">
180
180
  <button class="pa-btn pa-btn--sm pa-btn--secondary">Refresh</button>
181
181
  </div>
182
182
  </div>
@@ -366,8 +366,7 @@ CARD ELEMENTS:
366
366
  - .pa-card__title: Title container
367
367
  - .pa-card__title-icon: Icon in title
368
368
  - .pa-card__title-text: Title text
369
- - .pa-card__tools: Tools/actions container in header
370
- - .pa-card__actions: Actions container in footer
369
+ - .pa-card__actions: Actions container (used in header and footer)
371
370
 
372
371
  CARD TABS:
373
372
  - .pa-card__tabs: Tab container in header
@@ -106,6 +106,21 @@
106
106
  background-color: transparent;
107
107
  }
108
108
 
109
+ // Theme color slot variants (color-1 through color-9)
110
+ @for $i from 1 through 9 {
111
+ &--color-#{$i} {
112
+ color: var(--pa-color-#{$i}-text);
113
+ background-color: var(--pa-color-#{$i});
114
+ border-color: var(--pa-color-#{$i});
115
+ }
116
+
117
+ &--outline-color-#{$i} {
118
+ color: var(--pa-color-#{$i});
119
+ border-color: var(--pa-color-#{$i});
120
+ background-color: transparent;
121
+ }
122
+ }
123
+
109
124
  // Alert sizes (size modifiers only change font-size, padding controlled by theme)
110
125
  &--sm {
111
126
  padding: $alert-padding-v $alert-padding-h;
@@ -204,6 +204,30 @@
204
204
  }
205
205
  }
206
206
 
207
+ // Theme color slot variants (color-1 through color-9)
208
+ @for $i from 1 through 9 {
209
+ &--color-#{$i} {
210
+ background-color: var(--pa-color-#{$i});
211
+ border-color: var(--pa-color-#{$i});
212
+ color: var(--pa-color-#{$i}-text);
213
+
214
+ &:hover {
215
+ filter: brightness($btn-hover-brightness);
216
+ }
217
+ }
218
+
219
+ &--outline-color-#{$i} {
220
+ background-color: transparent;
221
+ border-color: var(--pa-color-#{$i});
222
+ color: var(--pa-color-#{$i});
223
+
224
+ &:hover {
225
+ background-color: var(--pa-color-#{$i});
226
+ color: var(--pa-color-#{$i}-text);
227
+ }
228
+ }
229
+ }
230
+
207
231
  // Button states
208
232
  &:disabled {
209
233
  opacity: $btn-disabled-opacity;
@@ -54,6 +54,14 @@
54
54
  background-color: var(--pa-info-bg-subtle);
55
55
  }
56
56
 
57
+ // Theme color slot variants (color-1 through color-9)
58
+ @for $i from 1 through 9 {
59
+ &--color-#{$i} {
60
+ border-inline-start-color: var(--pa-color-#{$i});
61
+ background-color: color-mix(in srgb, var(--pa-color-#{$i}) 10%, transparent);
62
+ }
63
+ }
64
+
57
65
  // Callout sizes
58
66
  &--sm {
59
67
  padding: $spacing-sm $spacing-md;
@@ -228,15 +228,10 @@
228
228
  align-items: center;
229
229
  }
230
230
 
231
- &__tools {
232
- display: flex;
233
- gap: $spacing-sm;
234
- align-items: center;
235
- }
236
-
237
231
  &__actions {
238
232
  display: flex;
239
233
  gap: $spacing-sm;
234
+ align-items: center;
240
235
  }
241
236
 
242
237
  &__meta {
@@ -179,6 +179,16 @@
179
179
  line-height: $line-height-base;
180
180
  }
181
181
 
182
+ // Toast actions (buttons under a separator)
183
+ .pa-toast__actions {
184
+ margin-top: $spacing-base;
185
+ padding-top: $spacing-base;
186
+ border-top: $border-width-base solid var(--pa-border-color);
187
+ display: flex;
188
+ gap: $spacing-sm;
189
+ flex-wrap: wrap;
190
+ }
191
+
182
192
  // Toast close button
183
193
  .pa-toast__close {
184
194
  flex-shrink: 0;
@@ -215,7 +225,7 @@
215
225
  inset-inline-start: 0; // RTL: flips to right
216
226
  height: $toast-progress-height;
217
227
  background-color: currentColor;
218
- opacity: 0.3;
228
+ opacity: 0.6;
219
229
  transition: width linear;
220
230
  }
221
231
 
@@ -291,6 +301,104 @@
291
301
  }
292
302
  }
293
303
 
304
+ // Theme color slot variants (color-1 through color-9)
305
+ @for $i from 1 through 9 {
306
+ .pa-toast--color-#{$i} {
307
+ border-color: var(--pa-color-#{$i});
308
+
309
+ .pa-toast__icon {
310
+ background-color: color-mix(in srgb, var(--pa-color-#{$i}) 15%, transparent);
311
+ color: var(--pa-color-#{$i});
312
+ }
313
+
314
+ .pa-toast__progress {
315
+ color: var(--pa-color-#{$i});
316
+ }
317
+ }
318
+ }
319
+
320
+ // ===== FILLED TOAST VARIANTS =====
321
+
322
+ // Filled toast actions: separator color + reset button colors from toast inheritance
323
+ [class*="pa-toast--filled"] .pa-toast__actions {
324
+ border-top-color: rgba(255, 255, 255, 0.25);
325
+ }
326
+
327
+ .pa-toast--filled-primary {
328
+ background-color: var(--pa-btn-primary-bg);
329
+ border-color: var(--pa-btn-primary-bg);
330
+ color: var(--pa-btn-primary-text);
331
+
332
+ .pa-toast__title,
333
+ .pa-toast__message { color: inherit; }
334
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
335
+ .pa-toast__close { color: inherit; }
336
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
337
+ }
338
+
339
+ .pa-toast--filled-success {
340
+ background-color: var(--pa-btn-success-bg);
341
+ border-color: var(--pa-btn-success-bg);
342
+ color: var(--pa-btn-success-text);
343
+
344
+ .pa-toast__title,
345
+ .pa-toast__message { color: inherit; }
346
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
347
+ .pa-toast__close { color: inherit; }
348
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
349
+ }
350
+
351
+ .pa-toast--filled-danger {
352
+ background-color: var(--pa-btn-danger-bg);
353
+ border-color: var(--pa-btn-danger-bg);
354
+ color: var(--pa-btn-danger-text);
355
+
356
+ .pa-toast__title,
357
+ .pa-toast__message { color: inherit; }
358
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
359
+ .pa-toast__close { color: inherit; }
360
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
361
+ }
362
+
363
+ .pa-toast--filled-warning {
364
+ background-color: var(--pa-btn-warning-bg);
365
+ border-color: var(--pa-btn-warning-bg);
366
+ color: var(--pa-btn-warning-text);
367
+
368
+ .pa-toast__title,
369
+ .pa-toast__message { color: inherit; }
370
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
371
+ .pa-toast__close { color: inherit; }
372
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
373
+ }
374
+
375
+ .pa-toast--filled-info {
376
+ background-color: var(--pa-btn-info-bg);
377
+ border-color: var(--pa-btn-info-bg);
378
+ color: var(--pa-btn-info-text);
379
+
380
+ .pa-toast__title,
381
+ .pa-toast__message { color: inherit; }
382
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
383
+ .pa-toast__close { color: inherit; }
384
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
385
+ }
386
+
387
+ // Filled theme color slot variants (color-1 through color-9)
388
+ @for $i from 1 through 9 {
389
+ .pa-toast--filled-color-#{$i} {
390
+ background-color: var(--pa-color-#{$i});
391
+ border-color: var(--pa-color-#{$i});
392
+ color: var(--pa-color-#{$i}-text);
393
+
394
+ .pa-toast__title,
395
+ .pa-toast__message { color: inherit; }
396
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
397
+ .pa-toast__close { color: inherit; }
398
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
399
+ }
400
+ }
401
+
294
402
  // ===== RESPONSIVE =====
295
403
 
296
404
  @media (max-width: $mobile-breakpoint) {
@@ -397,7 +397,7 @@ $toast-padding-v: $spacing-md !default;
397
397
  $toast-padding-h: $spacing-md !default;
398
398
  $toast-icon-size: 3.2rem !default; // 32px (was 2rem)
399
399
  $toast-close-size: 2.4rem !default; // 24px (was 1.5rem)
400
- $toast-progress-height: 3px !default;
400
+ $toast-progress-height: 5px !default;
401
401
 
402
402
  // ============================================================================
403
403
  // TOOLTIP SYSTEM