@keenmate/pure-admin-core 1.1.2 → 1.1.3
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 +11 -1
- package/dist/css/main.css +157 -2
- package/package.json +1 -1
- package/src/scss/_base-css-variables.scss +72 -13
- package/src/scss/core-components/_cards.scss +22 -0
- package/src/scss/core-components/_tooltips.scss +2 -0
- package/src/scss/core-components/forms/_input-groups.scss +4 -2
- package/src/scss/variables/_base.scss +13 -0
- package/src/scss/variables/_colors.scss +12 -0
- package/src/scss/variables/_components.scss +3 -16
package/README.md
CHANGED
|
@@ -151,6 +151,10 @@ This enables dark mode support for web components like `@keenmate/web-grid` that
|
|
|
151
151
|
- `.pa-card__header` - Card header
|
|
152
152
|
- `.pa-card__body` - Card body
|
|
153
153
|
- `.pa-card__footer` - Card footer
|
|
154
|
+
- **Semantic variants:** `.pa-card--primary/success/danger/warning`
|
|
155
|
+
- **Theme color variants:** `.pa-card--color-1` through `.pa-card--color-9`
|
|
156
|
+
- Uses `--pa-color-N` for header background and border
|
|
157
|
+
- Text color automatically adjusts via `--pa-color-N-text` for readability
|
|
154
158
|
|
|
155
159
|
### Layout & Sidebar
|
|
156
160
|
- `.pa-layout` - Main layout container
|
|
@@ -230,7 +234,9 @@ This enables dark mode support for web components like `@keenmate/web-grid` that
|
|
|
230
234
|
### Tooltips & Popovers
|
|
231
235
|
- `.pa-tooltip` - Base tooltip (pure CSS, no JS required)
|
|
232
236
|
- `.pa-tooltip--top/right/bottom/left` - Positioning
|
|
233
|
-
- `.pa-tooltip--primary/success/warning/danger` -
|
|
237
|
+
- `.pa-tooltip--primary/success/warning/danger` - Semantic variants
|
|
238
|
+
- `.pa-tooltip--color-1` through `.pa-tooltip--color-9` - Theme color variants
|
|
239
|
+
- Text color automatically adjusts via `--pa-color-N-text` for readability
|
|
234
240
|
- `.pa-tooltip--multiline` - Multiline tooltips
|
|
235
241
|
- `.pa-popover` - Base popover (requires JavaScript)
|
|
236
242
|
- `.pa-popover--sm/md/lg` - Sizes
|
|
@@ -342,12 +348,16 @@ This enables dark mode support for web components like `@keenmate/web-grid` that
|
|
|
342
348
|
- `.pa-bg-color-1` through `.pa-bg-color-9` - Background color slots
|
|
343
349
|
- `.pa-text-color-1` through `.pa-text-color-9` - Text color slots
|
|
344
350
|
- `.pa-border-color-1` through `.pa-border-color-9` - Border color slots
|
|
351
|
+
- **CSS Variables:**
|
|
352
|
+
- `--pa-color-1` through `--pa-color-9` - Background colors (theme-defined)
|
|
353
|
+
- `--pa-color-1-text` through `--pa-color-9-text` - Contrast text colors for readability on colored backgrounds
|
|
345
354
|
|
|
346
355
|
## SCSS Variables
|
|
347
356
|
|
|
348
357
|
All components use SCSS variables with `!default` flags, making them fully customizable:
|
|
349
358
|
|
|
350
359
|
- **Colors**: `$main-bg`, `$page-bg`, `$subtle-bg`, `$accent-color`, `$text-color-1`, `$text-color-2`, etc.
|
|
360
|
+
- **Theme Color Slots**: `$color-1` through `$color-9` (background colors), `$color-1-text` through `$color-9-text` (contrast text colors)
|
|
351
361
|
- **Spacing**: `$spacing-xs` through `$spacing-2xl`
|
|
352
362
|
- **Typography**: `$font-size-*`, `$line-height-*`, `$font-weight-*`
|
|
353
363
|
- **Components**: `$btn-*`, `$card-*`, `$table-*`, etc.
|
package/dist/css/main.css
CHANGED
|
@@ -5385,6 +5385,141 @@ body:not(.sidebar-hidden) .pa-layout__sidebar--icon-collapse .pa-sidebar__icon {
|
|
|
5385
5385
|
.pa-card--stat .pa-card__body {
|
|
5386
5386
|
padding: 2.4rem 1.6rem;
|
|
5387
5387
|
}
|
|
5388
|
+
.pa-card--color-1 {
|
|
5389
|
+
border-color: var(--pa-color-1);
|
|
5390
|
+
}
|
|
5391
|
+
.pa-card--color-1 .pa-card__header {
|
|
5392
|
+
background-color: var(--pa-color-1);
|
|
5393
|
+
color: var(--pa-color-1-text);
|
|
5394
|
+
}
|
|
5395
|
+
.pa-card--color-1 .pa-card__header h1,
|
|
5396
|
+
.pa-card--color-1 .pa-card__header h2,
|
|
5397
|
+
.pa-card--color-1 .pa-card__header h3,
|
|
5398
|
+
.pa-card--color-1 .pa-card__header h4,
|
|
5399
|
+
.pa-card--color-1 .pa-card__header h5,
|
|
5400
|
+
.pa-card--color-1 .pa-card__header h6 {
|
|
5401
|
+
color: var(--pa-color-1-text);
|
|
5402
|
+
}
|
|
5403
|
+
.pa-card--color-2 {
|
|
5404
|
+
border-color: var(--pa-color-2);
|
|
5405
|
+
}
|
|
5406
|
+
.pa-card--color-2 .pa-card__header {
|
|
5407
|
+
background-color: var(--pa-color-2);
|
|
5408
|
+
color: var(--pa-color-2-text);
|
|
5409
|
+
}
|
|
5410
|
+
.pa-card--color-2 .pa-card__header h1,
|
|
5411
|
+
.pa-card--color-2 .pa-card__header h2,
|
|
5412
|
+
.pa-card--color-2 .pa-card__header h3,
|
|
5413
|
+
.pa-card--color-2 .pa-card__header h4,
|
|
5414
|
+
.pa-card--color-2 .pa-card__header h5,
|
|
5415
|
+
.pa-card--color-2 .pa-card__header h6 {
|
|
5416
|
+
color: var(--pa-color-2-text);
|
|
5417
|
+
}
|
|
5418
|
+
.pa-card--color-3 {
|
|
5419
|
+
border-color: var(--pa-color-3);
|
|
5420
|
+
}
|
|
5421
|
+
.pa-card--color-3 .pa-card__header {
|
|
5422
|
+
background-color: var(--pa-color-3);
|
|
5423
|
+
color: var(--pa-color-3-text);
|
|
5424
|
+
}
|
|
5425
|
+
.pa-card--color-3 .pa-card__header h1,
|
|
5426
|
+
.pa-card--color-3 .pa-card__header h2,
|
|
5427
|
+
.pa-card--color-3 .pa-card__header h3,
|
|
5428
|
+
.pa-card--color-3 .pa-card__header h4,
|
|
5429
|
+
.pa-card--color-3 .pa-card__header h5,
|
|
5430
|
+
.pa-card--color-3 .pa-card__header h6 {
|
|
5431
|
+
color: var(--pa-color-3-text);
|
|
5432
|
+
}
|
|
5433
|
+
.pa-card--color-4 {
|
|
5434
|
+
border-color: var(--pa-color-4);
|
|
5435
|
+
}
|
|
5436
|
+
.pa-card--color-4 .pa-card__header {
|
|
5437
|
+
background-color: var(--pa-color-4);
|
|
5438
|
+
color: var(--pa-color-4-text);
|
|
5439
|
+
}
|
|
5440
|
+
.pa-card--color-4 .pa-card__header h1,
|
|
5441
|
+
.pa-card--color-4 .pa-card__header h2,
|
|
5442
|
+
.pa-card--color-4 .pa-card__header h3,
|
|
5443
|
+
.pa-card--color-4 .pa-card__header h4,
|
|
5444
|
+
.pa-card--color-4 .pa-card__header h5,
|
|
5445
|
+
.pa-card--color-4 .pa-card__header h6 {
|
|
5446
|
+
color: var(--pa-color-4-text);
|
|
5447
|
+
}
|
|
5448
|
+
.pa-card--color-5 {
|
|
5449
|
+
border-color: var(--pa-color-5);
|
|
5450
|
+
}
|
|
5451
|
+
.pa-card--color-5 .pa-card__header {
|
|
5452
|
+
background-color: var(--pa-color-5);
|
|
5453
|
+
color: var(--pa-color-5-text);
|
|
5454
|
+
}
|
|
5455
|
+
.pa-card--color-5 .pa-card__header h1,
|
|
5456
|
+
.pa-card--color-5 .pa-card__header h2,
|
|
5457
|
+
.pa-card--color-5 .pa-card__header h3,
|
|
5458
|
+
.pa-card--color-5 .pa-card__header h4,
|
|
5459
|
+
.pa-card--color-5 .pa-card__header h5,
|
|
5460
|
+
.pa-card--color-5 .pa-card__header h6 {
|
|
5461
|
+
color: var(--pa-color-5-text);
|
|
5462
|
+
}
|
|
5463
|
+
.pa-card--color-6 {
|
|
5464
|
+
border-color: var(--pa-color-6);
|
|
5465
|
+
}
|
|
5466
|
+
.pa-card--color-6 .pa-card__header {
|
|
5467
|
+
background-color: var(--pa-color-6);
|
|
5468
|
+
color: var(--pa-color-6-text);
|
|
5469
|
+
}
|
|
5470
|
+
.pa-card--color-6 .pa-card__header h1,
|
|
5471
|
+
.pa-card--color-6 .pa-card__header h2,
|
|
5472
|
+
.pa-card--color-6 .pa-card__header h3,
|
|
5473
|
+
.pa-card--color-6 .pa-card__header h4,
|
|
5474
|
+
.pa-card--color-6 .pa-card__header h5,
|
|
5475
|
+
.pa-card--color-6 .pa-card__header h6 {
|
|
5476
|
+
color: var(--pa-color-6-text);
|
|
5477
|
+
}
|
|
5478
|
+
.pa-card--color-7 {
|
|
5479
|
+
border-color: var(--pa-color-7);
|
|
5480
|
+
}
|
|
5481
|
+
.pa-card--color-7 .pa-card__header {
|
|
5482
|
+
background-color: var(--pa-color-7);
|
|
5483
|
+
color: var(--pa-color-7-text);
|
|
5484
|
+
}
|
|
5485
|
+
.pa-card--color-7 .pa-card__header h1,
|
|
5486
|
+
.pa-card--color-7 .pa-card__header h2,
|
|
5487
|
+
.pa-card--color-7 .pa-card__header h3,
|
|
5488
|
+
.pa-card--color-7 .pa-card__header h4,
|
|
5489
|
+
.pa-card--color-7 .pa-card__header h5,
|
|
5490
|
+
.pa-card--color-7 .pa-card__header h6 {
|
|
5491
|
+
color: var(--pa-color-7-text);
|
|
5492
|
+
}
|
|
5493
|
+
.pa-card--color-8 {
|
|
5494
|
+
border-color: var(--pa-color-8);
|
|
5495
|
+
}
|
|
5496
|
+
.pa-card--color-8 .pa-card__header {
|
|
5497
|
+
background-color: var(--pa-color-8);
|
|
5498
|
+
color: var(--pa-color-8-text);
|
|
5499
|
+
}
|
|
5500
|
+
.pa-card--color-8 .pa-card__header h1,
|
|
5501
|
+
.pa-card--color-8 .pa-card__header h2,
|
|
5502
|
+
.pa-card--color-8 .pa-card__header h3,
|
|
5503
|
+
.pa-card--color-8 .pa-card__header h4,
|
|
5504
|
+
.pa-card--color-8 .pa-card__header h5,
|
|
5505
|
+
.pa-card--color-8 .pa-card__header h6 {
|
|
5506
|
+
color: var(--pa-color-8-text);
|
|
5507
|
+
}
|
|
5508
|
+
.pa-card--color-9 {
|
|
5509
|
+
border-color: var(--pa-color-9);
|
|
5510
|
+
}
|
|
5511
|
+
.pa-card--color-9 .pa-card__header {
|
|
5512
|
+
background-color: var(--pa-color-9);
|
|
5513
|
+
color: var(--pa-color-9-text);
|
|
5514
|
+
}
|
|
5515
|
+
.pa-card--color-9 .pa-card__header h1,
|
|
5516
|
+
.pa-card--color-9 .pa-card__header h2,
|
|
5517
|
+
.pa-card--color-9 .pa-card__header h3,
|
|
5518
|
+
.pa-card--color-9 .pa-card__header h4,
|
|
5519
|
+
.pa-card--color-9 .pa-card__header h5,
|
|
5520
|
+
.pa-card--color-9 .pa-card__header h6 {
|
|
5521
|
+
color: var(--pa-color-9-text);
|
|
5522
|
+
}
|
|
5388
5523
|
.pa-card__tabs {
|
|
5389
5524
|
display: flex;
|
|
5390
5525
|
border-bottom: 1px solid var(--pa-border-color);
|
|
@@ -7590,6 +7725,7 @@ a.pa-card p {
|
|
|
7590
7725
|
}
|
|
7591
7726
|
.pa-tooltip--color-1::before {
|
|
7592
7727
|
background-color: var(--pa-color-1);
|
|
7728
|
+
color: var(--pa-color-1-text);
|
|
7593
7729
|
}
|
|
7594
7730
|
.pa-tooltip--color-1::after {
|
|
7595
7731
|
border-top-color: var(--pa-color-1);
|
|
@@ -7608,6 +7744,7 @@ a.pa-card p {
|
|
|
7608
7744
|
}
|
|
7609
7745
|
.pa-tooltip--color-2::before {
|
|
7610
7746
|
background-color: var(--pa-color-2);
|
|
7747
|
+
color: var(--pa-color-2-text);
|
|
7611
7748
|
}
|
|
7612
7749
|
.pa-tooltip--color-2::after {
|
|
7613
7750
|
border-top-color: var(--pa-color-2);
|
|
@@ -7626,6 +7763,7 @@ a.pa-card p {
|
|
|
7626
7763
|
}
|
|
7627
7764
|
.pa-tooltip--color-3::before {
|
|
7628
7765
|
background-color: var(--pa-color-3);
|
|
7766
|
+
color: var(--pa-color-3-text);
|
|
7629
7767
|
}
|
|
7630
7768
|
.pa-tooltip--color-3::after {
|
|
7631
7769
|
border-top-color: var(--pa-color-3);
|
|
@@ -7644,6 +7782,7 @@ a.pa-card p {
|
|
|
7644
7782
|
}
|
|
7645
7783
|
.pa-tooltip--color-4::before {
|
|
7646
7784
|
background-color: var(--pa-color-4);
|
|
7785
|
+
color: var(--pa-color-4-text);
|
|
7647
7786
|
}
|
|
7648
7787
|
.pa-tooltip--color-4::after {
|
|
7649
7788
|
border-top-color: var(--pa-color-4);
|
|
@@ -7662,6 +7801,7 @@ a.pa-card p {
|
|
|
7662
7801
|
}
|
|
7663
7802
|
.pa-tooltip--color-5::before {
|
|
7664
7803
|
background-color: var(--pa-color-5);
|
|
7804
|
+
color: var(--pa-color-5-text);
|
|
7665
7805
|
}
|
|
7666
7806
|
.pa-tooltip--color-5::after {
|
|
7667
7807
|
border-top-color: var(--pa-color-5);
|
|
@@ -7680,6 +7820,7 @@ a.pa-card p {
|
|
|
7680
7820
|
}
|
|
7681
7821
|
.pa-tooltip--color-6::before {
|
|
7682
7822
|
background-color: var(--pa-color-6);
|
|
7823
|
+
color: var(--pa-color-6-text);
|
|
7683
7824
|
}
|
|
7684
7825
|
.pa-tooltip--color-6::after {
|
|
7685
7826
|
border-top-color: var(--pa-color-6);
|
|
@@ -7698,6 +7839,7 @@ a.pa-card p {
|
|
|
7698
7839
|
}
|
|
7699
7840
|
.pa-tooltip--color-7::before {
|
|
7700
7841
|
background-color: var(--pa-color-7);
|
|
7842
|
+
color: var(--pa-color-7-text);
|
|
7701
7843
|
}
|
|
7702
7844
|
.pa-tooltip--color-7::after {
|
|
7703
7845
|
border-top-color: var(--pa-color-7);
|
|
@@ -7716,6 +7858,7 @@ a.pa-card p {
|
|
|
7716
7858
|
}
|
|
7717
7859
|
.pa-tooltip--color-8::before {
|
|
7718
7860
|
background-color: var(--pa-color-8);
|
|
7861
|
+
color: var(--pa-color-8-text);
|
|
7719
7862
|
}
|
|
7720
7863
|
.pa-tooltip--color-8::after {
|
|
7721
7864
|
border-top-color: var(--pa-color-8);
|
|
@@ -7734,6 +7877,7 @@ a.pa-card p {
|
|
|
7734
7877
|
}
|
|
7735
7878
|
.pa-tooltip--color-9::before {
|
|
7736
7879
|
background-color: var(--pa-color-9);
|
|
7880
|
+
color: var(--pa-color-9-text);
|
|
7737
7881
|
}
|
|
7738
7882
|
.pa-tooltip--color-9::after {
|
|
7739
7883
|
border-top-color: var(--pa-color-9);
|
|
@@ -7966,30 +8110,39 @@ a.pa-card p {
|
|
|
7966
8110
|
}
|
|
7967
8111
|
.pa-tooltip-floating.pa-tooltip--color-1 {
|
|
7968
8112
|
background-color: var(--pa-color-1);
|
|
8113
|
+
color: var(--pa-color-1-text);
|
|
7969
8114
|
}
|
|
7970
8115
|
.pa-tooltip-floating.pa-tooltip--color-2 {
|
|
7971
8116
|
background-color: var(--pa-color-2);
|
|
8117
|
+
color: var(--pa-color-2-text);
|
|
7972
8118
|
}
|
|
7973
8119
|
.pa-tooltip-floating.pa-tooltip--color-3 {
|
|
7974
8120
|
background-color: var(--pa-color-3);
|
|
8121
|
+
color: var(--pa-color-3-text);
|
|
7975
8122
|
}
|
|
7976
8123
|
.pa-tooltip-floating.pa-tooltip--color-4 {
|
|
7977
8124
|
background-color: var(--pa-color-4);
|
|
8125
|
+
color: var(--pa-color-4-text);
|
|
7978
8126
|
}
|
|
7979
8127
|
.pa-tooltip-floating.pa-tooltip--color-5 {
|
|
7980
8128
|
background-color: var(--pa-color-5);
|
|
8129
|
+
color: var(--pa-color-5-text);
|
|
7981
8130
|
}
|
|
7982
8131
|
.pa-tooltip-floating.pa-tooltip--color-6 {
|
|
7983
8132
|
background-color: var(--pa-color-6);
|
|
8133
|
+
color: var(--pa-color-6-text);
|
|
7984
8134
|
}
|
|
7985
8135
|
.pa-tooltip-floating.pa-tooltip--color-7 {
|
|
7986
8136
|
background-color: var(--pa-color-7);
|
|
8137
|
+
color: var(--pa-color-7-text);
|
|
7987
8138
|
}
|
|
7988
8139
|
.pa-tooltip-floating.pa-tooltip--color-8 {
|
|
7989
8140
|
background-color: var(--pa-color-8);
|
|
8141
|
+
color: var(--pa-color-8-text);
|
|
7990
8142
|
}
|
|
7991
8143
|
.pa-tooltip-floating.pa-tooltip--color-9 {
|
|
7992
8144
|
background-color: var(--pa-color-9);
|
|
8145
|
+
color: var(--pa-color-9-text);
|
|
7993
8146
|
}
|
|
7994
8147
|
|
|
7995
8148
|
/* ========================================
|
|
@@ -8710,6 +8863,7 @@ a.pa-card p {
|
|
|
8710
8863
|
.pa-input-group__prepend {
|
|
8711
8864
|
background-color: var(--pa-input-group-prepend-bg);
|
|
8712
8865
|
color: var(--pa-input-group-prepend-text);
|
|
8866
|
+
border-color: var(--pa-input-group-prepend-bg);
|
|
8713
8867
|
border-right: none;
|
|
8714
8868
|
}
|
|
8715
8869
|
.pa-input-group__prepend:first-child {
|
|
@@ -8719,6 +8873,7 @@ a.pa-card p {
|
|
|
8719
8873
|
.pa-input-group__append {
|
|
8720
8874
|
background-color: var(--pa-input-group-append-bg);
|
|
8721
8875
|
color: var(--pa-input-group-append-text);
|
|
8876
|
+
border-color: var(--pa-input-group-append-bg);
|
|
8722
8877
|
border-left: none;
|
|
8723
8878
|
}
|
|
8724
8879
|
.pa-input-group__append:last-child {
|
|
@@ -8726,10 +8881,10 @@ a.pa-card p {
|
|
|
8726
8881
|
border-bottom-right-radius: 4px;
|
|
8727
8882
|
}
|
|
8728
8883
|
.pa-input-group__prepend + .pa-input-group__prepend {
|
|
8729
|
-
border-left: 1px solid var(--pa-
|
|
8884
|
+
border-left: 1px solid var(--pa-input-group-prepend-bg);
|
|
8730
8885
|
}
|
|
8731
8886
|
.pa-input-group__append + .pa-input-group__append {
|
|
8732
|
-
border-left: 1px solid var(--pa-
|
|
8887
|
+
border-left: 1px solid var(--pa-input-group-append-bg);
|
|
8733
8888
|
}
|
|
8734
8889
|
.pa-input-group:has(.pa-input:focus) .pa-input-group__prepend {
|
|
8735
8890
|
border-right: 1px solid var(--pa-input-focus-border-color);
|
package/package.json
CHANGED
|
@@ -148,6 +148,65 @@
|
|
|
148
148
|
--base-border-radius-lg: #{$base-border-radius-lg};
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// ALERT COLOR DERIVATION MIXINS
|
|
153
|
+
// ============================================================================
|
|
154
|
+
// These mixins use color-mix() to automatically derive alert colors from
|
|
155
|
+
// semantic base colors (--pa-success-bg, --pa-danger-bg, etc.)
|
|
156
|
+
//
|
|
157
|
+
// Light mode: dark text on subtle backgrounds
|
|
158
|
+
// Dark mode: light text on tinted backgrounds
|
|
159
|
+
//
|
|
160
|
+
// Themes call the appropriate mixin instead of hardcoding 12+ CSS variables.
|
|
161
|
+
// Override specific variables after the mixin call if needed.
|
|
162
|
+
// ============================================================================
|
|
163
|
+
|
|
164
|
+
// Light mode: dark text on subtle backgrounds
|
|
165
|
+
@mixin output-pa-alert-variables-light {
|
|
166
|
+
// Success
|
|
167
|
+
--pa-alert-success-text: color-mix(in srgb, var(--pa-success-bg) #{$alert-text-mix-light}, black);
|
|
168
|
+
--pa-alert-success-bg: color-mix(in srgb, var(--pa-success-bg) #{$alert-bg-opacity-light}%, transparent);
|
|
169
|
+
--pa-alert-success-border: color-mix(in srgb, var(--pa-success-bg) #{$alert-border-opacity-light}%, transparent);
|
|
170
|
+
|
|
171
|
+
// Danger
|
|
172
|
+
--pa-alert-danger-text: color-mix(in srgb, var(--pa-danger-bg) #{$alert-text-mix-light}, black);
|
|
173
|
+
--pa-alert-danger-bg: color-mix(in srgb, var(--pa-danger-bg) #{$alert-bg-opacity-light}%, transparent);
|
|
174
|
+
--pa-alert-danger-border: color-mix(in srgb, var(--pa-danger-bg) #{$alert-border-opacity-light}%, transparent);
|
|
175
|
+
|
|
176
|
+
// Warning
|
|
177
|
+
--pa-alert-warning-text: color-mix(in srgb, var(--pa-warning-bg) #{$alert-text-mix-light}, black);
|
|
178
|
+
--pa-alert-warning-bg: color-mix(in srgb, var(--pa-warning-bg) #{$alert-bg-opacity-light}%, transparent);
|
|
179
|
+
--pa-alert-warning-border: color-mix(in srgb, var(--pa-warning-bg) #{$alert-border-opacity-light}%, transparent);
|
|
180
|
+
|
|
181
|
+
// Info
|
|
182
|
+
--pa-alert-info-text: color-mix(in srgb, var(--pa-info-bg) #{$alert-text-mix-light}, black);
|
|
183
|
+
--pa-alert-info-bg: color-mix(in srgb, var(--pa-info-bg) #{$alert-bg-opacity-light}%, transparent);
|
|
184
|
+
--pa-alert-info-border: color-mix(in srgb, var(--pa-info-bg) #{$alert-border-opacity-light}%, transparent);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Dark mode: white text on tinted backgrounds (white text is always readable)
|
|
188
|
+
@mixin output-pa-alert-variables-dark {
|
|
189
|
+
// Success
|
|
190
|
+
--pa-alert-success-text: #ffffff;
|
|
191
|
+
--pa-alert-success-bg: color-mix(in srgb, var(--pa-success-bg) #{$alert-bg-opacity-dark}%, transparent);
|
|
192
|
+
--pa-alert-success-border: color-mix(in srgb, var(--pa-success-bg) #{$alert-border-opacity-dark}%, transparent);
|
|
193
|
+
|
|
194
|
+
// Danger
|
|
195
|
+
--pa-alert-danger-text: #ffffff;
|
|
196
|
+
--pa-alert-danger-bg: color-mix(in srgb, var(--pa-danger-bg) #{$alert-bg-opacity-dark}%, transparent);
|
|
197
|
+
--pa-alert-danger-border: color-mix(in srgb, var(--pa-danger-bg) #{$alert-border-opacity-dark}%, transparent);
|
|
198
|
+
|
|
199
|
+
// Warning
|
|
200
|
+
--pa-alert-warning-text: #ffffff;
|
|
201
|
+
--pa-alert-warning-bg: color-mix(in srgb, var(--pa-warning-bg) #{$alert-bg-opacity-dark}%, transparent);
|
|
202
|
+
--pa-alert-warning-border: color-mix(in srgb, var(--pa-warning-bg) #{$alert-border-opacity-dark}%, transparent);
|
|
203
|
+
|
|
204
|
+
// Info
|
|
205
|
+
--pa-alert-info-text: #ffffff;
|
|
206
|
+
--pa-alert-info-bg: color-mix(in srgb, var(--pa-info-bg) #{$alert-bg-opacity-dark}%, transparent);
|
|
207
|
+
--pa-alert-info-border: color-mix(in srgb, var(--pa-info-bg) #{$alert-border-opacity-dark}%, transparent);
|
|
208
|
+
}
|
|
209
|
+
|
|
151
210
|
// ============================================================================
|
|
152
211
|
// PURE ADMIN THEME CSS VARIABLES OUTPUT MIXIN
|
|
153
212
|
// ============================================================================
|
|
@@ -343,20 +402,9 @@
|
|
|
343
402
|
--pa-modal-content-bg: #{$modal-content-bg};
|
|
344
403
|
|
|
345
404
|
// =========================================================================
|
|
346
|
-
// ALERT COLORS
|
|
405
|
+
// ALERT COLORS - Now derived via output-pa-alert-variables-light/dark mixins
|
|
406
|
+
// Themes must call the appropriate mixin after output-pa-css-variables
|
|
347
407
|
// =========================================================================
|
|
348
|
-
--pa-alert-success-bg: #{$alert-success-bg};
|
|
349
|
-
--pa-alert-success-border: #{$alert-success-border};
|
|
350
|
-
--pa-alert-success-text: #{$alert-success-text};
|
|
351
|
-
--pa-alert-danger-bg: #{$alert-danger-bg};
|
|
352
|
-
--pa-alert-danger-border: #{$alert-danger-border};
|
|
353
|
-
--pa-alert-danger-text: #{$alert-danger-text};
|
|
354
|
-
--pa-alert-warning-bg: #{$alert-warning-bg};
|
|
355
|
-
--pa-alert-warning-border: #{$alert-warning-border};
|
|
356
|
-
--pa-alert-warning-text: #{$alert-warning-text};
|
|
357
|
-
--pa-alert-info-bg: #{$alert-info-bg};
|
|
358
|
-
--pa-alert-info-border: #{$alert-info-border};
|
|
359
|
-
--pa-alert-info-text: #{$alert-info-text};
|
|
360
408
|
|
|
361
409
|
// =========================================================================
|
|
362
410
|
// BADGE COLORS
|
|
@@ -429,4 +477,15 @@
|
|
|
429
477
|
--pa-color-7: #{$color-7};
|
|
430
478
|
--pa-color-8: #{$color-8};
|
|
431
479
|
--pa-color-9: #{$color-9};
|
|
480
|
+
|
|
481
|
+
// Theme color slots - text/contrast colors
|
|
482
|
+
--pa-color-1-text: #{$color-1-text};
|
|
483
|
+
--pa-color-2-text: #{$color-2-text};
|
|
484
|
+
--pa-color-3-text: #{$color-3-text};
|
|
485
|
+
--pa-color-4-text: #{$color-4-text};
|
|
486
|
+
--pa-color-5-text: #{$color-5-text};
|
|
487
|
+
--pa-color-6-text: #{$color-6-text};
|
|
488
|
+
--pa-color-7-text: #{$color-7-text};
|
|
489
|
+
--pa-color-8-text: #{$color-8-text};
|
|
490
|
+
--pa-color-9-text: #{$color-9-text};
|
|
432
491
|
}
|
|
@@ -213,6 +213,28 @@
|
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
// Theme color variants (color-1 through color-9)
|
|
217
|
+
// These use theme-customizable colors from --pa-color-* CSS variables
|
|
218
|
+
@for $i from 1 through 9 {
|
|
219
|
+
&--color-#{$i} {
|
|
220
|
+
border-color: var(--pa-color-#{$i});
|
|
221
|
+
|
|
222
|
+
.pa-card__header {
|
|
223
|
+
background-color: var(--pa-color-#{$i});
|
|
224
|
+
color: var(--pa-color-#{$i}-text);
|
|
225
|
+
|
|
226
|
+
h1,
|
|
227
|
+
h2,
|
|
228
|
+
h3,
|
|
229
|
+
h4,
|
|
230
|
+
h5,
|
|
231
|
+
h6 {
|
|
232
|
+
color: var(--pa-color-#{$i}-text);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
216
238
|
// Card tabs
|
|
217
239
|
&__tabs {
|
|
218
240
|
display: flex;
|
|
@@ -242,6 +242,7 @@
|
|
|
242
242
|
@for $i from 1 through 9 {
|
|
243
243
|
&--color-#{$i}::before {
|
|
244
244
|
background-color: var(--pa-color-#{$i});
|
|
245
|
+
color: var(--pa-color-#{$i}-text);
|
|
245
246
|
}
|
|
246
247
|
&--color-#{$i}::after {
|
|
247
248
|
border-top-color: var(--pa-color-#{$i});
|
|
@@ -538,6 +539,7 @@
|
|
|
538
539
|
@for $i from 1 through 9 {
|
|
539
540
|
&.pa-tooltip--color-#{$i} {
|
|
540
541
|
background-color: var(--pa-color-#{$i});
|
|
542
|
+
color: var(--pa-color-#{$i}-text);
|
|
541
543
|
}
|
|
542
544
|
}
|
|
543
545
|
}
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
&__prepend {
|
|
48
48
|
background-color: var(--pa-input-group-prepend-bg);
|
|
49
49
|
color: var(--pa-input-group-prepend-text);
|
|
50
|
+
border-color: var(--pa-input-group-prepend-bg);
|
|
50
51
|
border-right: none;
|
|
51
52
|
|
|
52
53
|
&:first-child {
|
|
@@ -58,6 +59,7 @@
|
|
|
58
59
|
&__append {
|
|
59
60
|
background-color: var(--pa-input-group-append-bg);
|
|
60
61
|
color: var(--pa-input-group-append-text);
|
|
62
|
+
border-color: var(--pa-input-group-append-bg);
|
|
61
63
|
border-left: none;
|
|
62
64
|
|
|
63
65
|
&:last-child {
|
|
@@ -68,11 +70,11 @@
|
|
|
68
70
|
|
|
69
71
|
// Adjacent prepends/appends need borders between them
|
|
70
72
|
&__prepend + &__prepend {
|
|
71
|
-
border-left: $border-width-base solid var(--pa-
|
|
73
|
+
border-left: $border-width-base solid var(--pa-input-group-prepend-bg);
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
&__append + &__append {
|
|
75
|
-
border-left: $border-width-base solid var(--pa-
|
|
77
|
+
border-left: $border-width-base solid var(--pa-input-group-append-bg);
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
// When input is focused, show focus border on adjacent prepend/append
|
|
@@ -213,3 +213,16 @@ $base-border-radius-lg: 0.8 !default; // 8px
|
|
|
213
213
|
|
|
214
214
|
// Command palette input height (must be after $base-input-size-* variables)
|
|
215
215
|
$command-palette-input-height: #{$base-input-size-lg-height}rem !default;
|
|
216
|
+
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// ALERT COLOR DERIVATION PARAMETERS
|
|
219
|
+
// Used by color-mix() mixins to derive alert colors from semantic base colors
|
|
220
|
+
// Themes can override these to customize alert appearance
|
|
221
|
+
// =============================================================================
|
|
222
|
+
|
|
223
|
+
$alert-bg-opacity-light: 15 !default; // Light mode: subtle bg (%)
|
|
224
|
+
$alert-bg-opacity-dark: 45 !default; // Dark mode: punchy, vibrant bg (%)
|
|
225
|
+
$alert-border-opacity-light: 30 !default; // Light mode border (%)
|
|
226
|
+
$alert-border-opacity-dark: 70 !default; // Dark mode border - more visible (%)
|
|
227
|
+
$alert-text-mix-light: 60% !default; // Mix with black for dark text
|
|
228
|
+
$alert-text-mix-dark: 80% !default; // Mix with white for light text
|
|
@@ -216,3 +216,15 @@ $color-6: transparent !default;
|
|
|
216
216
|
$color-7: transparent !default;
|
|
217
217
|
$color-8: transparent !default;
|
|
218
218
|
$color-9: transparent !default;
|
|
219
|
+
|
|
220
|
+
// Theme color slots - text/contrast colors
|
|
221
|
+
// These define the text color to use when color-N is used as a background
|
|
222
|
+
$color-1-text: #ffffff !default;
|
|
223
|
+
$color-2-text: #ffffff !default;
|
|
224
|
+
$color-3-text: #ffffff !default;
|
|
225
|
+
$color-4-text: #ffffff !default;
|
|
226
|
+
$color-5-text: #ffffff !default;
|
|
227
|
+
$color-6-text: #ffffff !default;
|
|
228
|
+
$color-7-text: #ffffff !default;
|
|
229
|
+
$color-8-text: #ffffff !default;
|
|
230
|
+
$color-9-text: #ffffff !default;
|
|
@@ -283,24 +283,11 @@ $alert-icon-margin: $spacing-sm !default;
|
|
|
283
283
|
$alert-list-padding-left: $spacing-lg !default;
|
|
284
284
|
$alert-list-item-margin-top: $card-footer-padding-v !default;
|
|
285
285
|
|
|
286
|
-
// Alert colors
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
$alert-success-text: $success-bg !default;
|
|
290
|
-
|
|
291
|
-
$alert-danger-bg: $danger-bg-subtle !default;
|
|
292
|
-
$alert-danger-border: $danger-border !default;
|
|
293
|
-
$alert-danger-text: $danger-bg !default;
|
|
286
|
+
// Alert colors - Now derived via color-mix() mixins in _base-css-variables.scss
|
|
287
|
+
// Themes call output-pa-alert-variables-light/dark instead of hardcoding values
|
|
288
|
+
// Keep only the text transform variable as it's not color-related
|
|
294
289
|
$alert-danger-text-transform: none !default;
|
|
295
290
|
|
|
296
|
-
$alert-warning-bg: $warning-bg-subtle !default;
|
|
297
|
-
$alert-warning-border: $warning-border !default;
|
|
298
|
-
$alert-warning-text: $warning-bg !default;
|
|
299
|
-
|
|
300
|
-
$alert-info-bg: $info-bg-subtle !default;
|
|
301
|
-
$alert-info-border: $info-border !default;
|
|
302
|
-
$alert-info-text: $info-bg !default;
|
|
303
|
-
|
|
304
291
|
// ============================================================================
|
|
305
292
|
// CALLOUT SYSTEM
|
|
306
293
|
// ============================================================================
|