@keenmate/pure-admin-core 1.0.0-rc02 → 1.0.0-rc03
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 +14 -26
- package/dist/css/main.css +436 -35
- package/package.json +1 -1
- package/snippets/callouts.html +129 -0
- package/snippets/profile.html +48 -4
- package/src/scss/_base-css-variables.scss +14 -0
- package/src/scss/_core.scss +3 -0
- package/src/scss/core-components/_callouts.scss +139 -0
- package/src/scss/core-components/_profile.scss +13 -1
- package/src/scss/core-components/_tables.scss +0 -13
- package/src/scss/core-components/_utilities.scss +53 -0
- package/src/scss/utilities.scss +63 -84
- package/src/scss/variables/_colors.scss +15 -0
- package/src/scss/variables/_components.scss +5 -0
package/README.md
CHANGED
|
@@ -45,18 +45,6 @@ $btn-primary-bg: #your-button-color;
|
|
|
45
45
|
@import '@keenmate/pure-admin-core/src/scss/main';
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
### JavaScript Utilities
|
|
49
|
-
|
|
50
|
-
```js
|
|
51
|
-
import { createToast, openModal, closeModal } from '@pure-admin/core';
|
|
52
|
-
|
|
53
|
-
// Show a success toast
|
|
54
|
-
createToast('top-right', 'success', 'Success!', 'Operation completed');
|
|
55
|
-
|
|
56
|
-
// Open a modal
|
|
57
|
-
openModal('myModal');
|
|
58
|
-
```
|
|
59
|
-
|
|
60
48
|
## Using HTML Snippets
|
|
61
49
|
|
|
62
50
|
The `snippets/` directory contains clean HTML patterns for all components:
|
|
@@ -64,11 +52,13 @@ The `snippets/` directory contains clean HTML patterns for all components:
|
|
|
64
52
|
- `alerts.html` - Alert components
|
|
65
53
|
- `badges.html` - Badge and composite badge patterns
|
|
66
54
|
- `buttons.html` - All button variants and patterns
|
|
55
|
+
- `callouts.html` - Documentation-style callouts with left border accent
|
|
67
56
|
- `cards.html` - Card layouts
|
|
68
57
|
- `checkbox-lists.html` - Checkbox list patterns
|
|
69
58
|
- `code.html` - Code display blocks
|
|
70
59
|
- `command-palette.html` - Command palette (Ctrl+K)
|
|
71
60
|
- `comparison.html` - Comparison tables
|
|
61
|
+
- `customization.html` - Theme customization examples
|
|
72
62
|
- `forms.html` - Form elements and validation
|
|
73
63
|
- `grid.html` - Grid system layouts
|
|
74
64
|
- `layout.html` - Page layout structure
|
|
@@ -83,25 +73,14 @@ The `snippets/` directory contains clean HTML patterns for all components:
|
|
|
83
73
|
- `timeline.html` - Timeline components
|
|
84
74
|
- `toasts.html` - Toast notifications
|
|
85
75
|
- `tooltips.html` - Tooltips and popovers
|
|
76
|
+
- `typography.html` - Typography styles and headings
|
|
86
77
|
- `utilities.html` - Utility classes
|
|
87
78
|
- `virtual-scroll.html` - Virtual scrolling
|
|
79
|
+
- `web-daterangepicker.html` - Date range picker web component
|
|
80
|
+
- `web-multiselect.html` - Multiselect web component
|
|
88
81
|
|
|
89
82
|
These snippets are the canonical reference for building framework components in any frontend framework (React, Vue, Svelte, etc.).
|
|
90
83
|
|
|
91
|
-
## Framework Integration
|
|
92
|
-
|
|
93
|
-
### Svelte
|
|
94
|
-
|
|
95
|
-
See `@pure-admin/svelte` package for Svelte component wrappers.
|
|
96
|
-
|
|
97
|
-
### React
|
|
98
|
-
|
|
99
|
-
See `@pure-admin/react` package for React component wrappers.
|
|
100
|
-
|
|
101
|
-
### Vue
|
|
102
|
-
|
|
103
|
-
See `@pure-admin/vue` package for Vue component wrappers.
|
|
104
|
-
|
|
105
84
|
## Themes
|
|
106
85
|
|
|
107
86
|
Themes are available as separate npm packages:
|
|
@@ -165,6 +144,14 @@ The Dark theme supports color accent variants:
|
|
|
165
144
|
- `.pa-alert--primary/success/danger/warning/info` - Variants
|
|
166
145
|
- `.pa-alert--dismissible` - Closeable alerts
|
|
167
146
|
|
|
147
|
+
### Callouts
|
|
148
|
+
- `.pa-callout` - Base callout (documentation-style with left border)
|
|
149
|
+
- `.pa-callout--primary/secondary/success/danger/warning/info` - Variants
|
|
150
|
+
- `.pa-callout--sm/lg` - Sizes
|
|
151
|
+
- `.pa-callout__icon` - Icon container
|
|
152
|
+
- `.pa-callout__heading` - Callout heading
|
|
153
|
+
- `.pa-callout__content` - Content wrapper (for icon + text layout)
|
|
154
|
+
|
|
168
155
|
### Modals
|
|
169
156
|
- `.pa-modal` - Base modal
|
|
170
157
|
- `.pa-modal__container--sm/md/lg/xl/xxl` - Sizes
|
|
@@ -188,6 +175,7 @@ The Dark theme supports color accent variants:
|
|
|
188
175
|
- `.pa-profile-panel` - Slide-in profile panel
|
|
189
176
|
- `.pa-profile-panel--open` - Open state
|
|
190
177
|
- `.pa-profile-panel__header` - Header with avatar and user info
|
|
178
|
+
- `.pa-profile-panel__header--no-avatar` - Header variant without avatar (for corporate apps)
|
|
191
179
|
- `.pa-profile-panel__tabs` - Tab navigation (Profile/Favorites)
|
|
192
180
|
- `.pa-profile-panel__nav-item` - Navigation link
|
|
193
181
|
- `.pa-profile-panel__favorite-item` - Favorite link (with remove button)
|
package/dist/css/main.css
CHANGED
|
@@ -872,26 +872,82 @@
|
|
|
872
872
|
white-space: nowrap !important;
|
|
873
873
|
}
|
|
874
874
|
|
|
875
|
+
.w-5 {
|
|
876
|
+
width: 5% !important;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
.w-10 {
|
|
880
|
+
width: 10% !important;
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
.w-15 {
|
|
884
|
+
width: 15% !important;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.w-20 {
|
|
888
|
+
width: 20% !important;
|
|
889
|
+
}
|
|
890
|
+
|
|
875
891
|
.w-25 {
|
|
876
892
|
width: 25% !important;
|
|
877
893
|
}
|
|
878
894
|
|
|
879
|
-
.w-
|
|
880
|
-
width:
|
|
895
|
+
.w-30 {
|
|
896
|
+
width: 30% !important;
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
.w-35 {
|
|
900
|
+
width: 35% !important;
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
.w-40 {
|
|
904
|
+
width: 40% !important;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
.w-45 {
|
|
908
|
+
width: 45% !important;
|
|
881
909
|
}
|
|
882
910
|
|
|
883
911
|
.w-50 {
|
|
884
912
|
width: 50% !important;
|
|
885
913
|
}
|
|
886
914
|
|
|
887
|
-
.w-
|
|
888
|
-
width:
|
|
915
|
+
.w-55 {
|
|
916
|
+
width: 55% !important;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
.w-60 {
|
|
920
|
+
width: 60% !important;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
.w-65 {
|
|
924
|
+
width: 65% !important;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
.w-70 {
|
|
928
|
+
width: 70% !important;
|
|
889
929
|
}
|
|
890
930
|
|
|
891
931
|
.w-75 {
|
|
892
932
|
width: 75% !important;
|
|
893
933
|
}
|
|
894
934
|
|
|
935
|
+
.w-80 {
|
|
936
|
+
width: 80% !important;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
.w-85 {
|
|
940
|
+
width: 85% !important;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
.w-90 {
|
|
944
|
+
width: 90% !important;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
.w-95 {
|
|
948
|
+
width: 95% !important;
|
|
949
|
+
}
|
|
950
|
+
|
|
895
951
|
.w-100 {
|
|
896
952
|
width: 100% !important;
|
|
897
953
|
}
|
|
@@ -900,20 +956,20 @@
|
|
|
900
956
|
width: auto !important;
|
|
901
957
|
}
|
|
902
958
|
|
|
903
|
-
.
|
|
904
|
-
|
|
959
|
+
.w-1-3 {
|
|
960
|
+
width: 33.333333% !important;
|
|
905
961
|
}
|
|
906
962
|
|
|
907
|
-
.
|
|
908
|
-
|
|
963
|
+
.w-2-3 {
|
|
964
|
+
width: 66.666667% !important;
|
|
909
965
|
}
|
|
910
966
|
|
|
911
|
-
.mw-
|
|
912
|
-
min-width:
|
|
967
|
+
.mw-25 {
|
|
968
|
+
min-width: 25% !important;
|
|
913
969
|
}
|
|
914
970
|
|
|
915
|
-
.mw-
|
|
916
|
-
min-width:
|
|
971
|
+
.mw-50 {
|
|
972
|
+
min-width: 50% !important;
|
|
917
973
|
}
|
|
918
974
|
|
|
919
975
|
.mw-75 {
|
|
@@ -928,26 +984,24 @@
|
|
|
928
984
|
min-width: auto !important;
|
|
929
985
|
}
|
|
930
986
|
|
|
987
|
+
.mw-1-3 {
|
|
988
|
+
min-width: 33.333333% !important;
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
.mw-2-3 {
|
|
992
|
+
min-width: 66.666667% !important;
|
|
993
|
+
}
|
|
994
|
+
|
|
931
995
|
.w-25-fixed {
|
|
932
996
|
min-width: 25% !important;
|
|
933
997
|
width: 25% !important;
|
|
934
998
|
}
|
|
935
999
|
|
|
936
|
-
.w-33-fixed {
|
|
937
|
-
min-width: 33.333333% !important;
|
|
938
|
-
width: 33.333333% !important;
|
|
939
|
-
}
|
|
940
|
-
|
|
941
1000
|
.w-50-fixed {
|
|
942
1001
|
min-width: 50% !important;
|
|
943
1002
|
width: 50% !important;
|
|
944
1003
|
}
|
|
945
1004
|
|
|
946
|
-
.w-66-fixed {
|
|
947
|
-
min-width: 66.666667% !important;
|
|
948
|
-
width: 66.666667% !important;
|
|
949
|
-
}
|
|
950
|
-
|
|
951
1005
|
.w-75-fixed {
|
|
952
1006
|
min-width: 75% !important;
|
|
953
1007
|
width: 75% !important;
|
|
@@ -958,6 +1012,16 @@
|
|
|
958
1012
|
width: 100% !important;
|
|
959
1013
|
}
|
|
960
1014
|
|
|
1015
|
+
.w-1-3-fixed {
|
|
1016
|
+
min-width: 33.333333% !important;
|
|
1017
|
+
width: 33.333333% !important;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
.w-2-3-fixed {
|
|
1021
|
+
min-width: 66.666667% !important;
|
|
1022
|
+
width: 66.666667% !important;
|
|
1023
|
+
}
|
|
1024
|
+
|
|
961
1025
|
.h-25 {
|
|
962
1026
|
height: 25% !important;
|
|
963
1027
|
}
|
|
@@ -1038,6 +1102,78 @@
|
|
|
1038
1102
|
border-left: 0 !important;
|
|
1039
1103
|
}
|
|
1040
1104
|
|
|
1105
|
+
.border-solid {
|
|
1106
|
+
border-style: solid !important;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.border-dashed {
|
|
1110
|
+
border-style: dashed !important;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
.border-dotted {
|
|
1114
|
+
border-style: dotted !important;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
.border-none {
|
|
1118
|
+
border-style: none !important;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.text-primary {
|
|
1122
|
+
color: var(--pa-accent) !important;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
.text-success {
|
|
1126
|
+
color: var(--pa-success-text) !important;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
.text-danger {
|
|
1130
|
+
color: var(--pa-danger-text) !important;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
.text-warning {
|
|
1134
|
+
color: var(--pa-warning-text) !important;
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
.text-info {
|
|
1138
|
+
color: var(--pa-info-text) !important;
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
.text-color-1 {
|
|
1142
|
+
color: var(--pa-color-1) !important;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
.text-color-2 {
|
|
1146
|
+
color: var(--pa-color-2) !important;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
.text-color-3 {
|
|
1150
|
+
color: var(--pa-color-3) !important;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.text-color-4 {
|
|
1154
|
+
color: var(--pa-color-4) !important;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.text-color-5 {
|
|
1158
|
+
color: var(--pa-color-5) !important;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
.text-color-6 {
|
|
1162
|
+
color: var(--pa-color-6) !important;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
.text-color-7 {
|
|
1166
|
+
color: var(--pa-color-7) !important;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.text-color-8 {
|
|
1170
|
+
color: var(--pa-color-8) !important;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.text-color-9 {
|
|
1174
|
+
color: var(--pa-color-9) !important;
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1041
1177
|
.rounded {
|
|
1042
1178
|
border-radius: var(--border-radius) !important;
|
|
1043
1179
|
}
|
|
@@ -6283,6 +6419,112 @@ a.pa-card p {
|
|
|
6283
6419
|
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
|
6284
6420
|
}
|
|
6285
6421
|
|
|
6422
|
+
/* ========================================
|
|
6423
|
+
Reset and Base Styles
|
|
6424
|
+
======================================== */
|
|
6425
|
+
/* ========================================
|
|
6426
|
+
Callout Components
|
|
6427
|
+
Documentation-style callouts with left border accent
|
|
6428
|
+
For tips, notes, warnings in content areas
|
|
6429
|
+
======================================== */
|
|
6430
|
+
.pa-callout {
|
|
6431
|
+
position: relative;
|
|
6432
|
+
padding: 1.2rem 1rem;
|
|
6433
|
+
margin-bottom: 1.6rem;
|
|
6434
|
+
border-left: 0.4rem solid var(--pa-border-color);
|
|
6435
|
+
border-radius: 4px;
|
|
6436
|
+
font-size: 1.4rem;
|
|
6437
|
+
background-color: var(--pa-card-bg);
|
|
6438
|
+
}
|
|
6439
|
+
.pa-card__body .pa-callout:first-child {
|
|
6440
|
+
margin-top: 0;
|
|
6441
|
+
}
|
|
6442
|
+
.pa-card__body .pa-callout:last-child {
|
|
6443
|
+
margin-bottom: 0;
|
|
6444
|
+
}
|
|
6445
|
+
.pa-callout--primary {
|
|
6446
|
+
border-left-color: var(--pa-accent);
|
|
6447
|
+
background-color: rgba(0, 123, 255, 0.08);
|
|
6448
|
+
}
|
|
6449
|
+
.pa-callout--secondary {
|
|
6450
|
+
border-left-color: var(--pa-text-secondary);
|
|
6451
|
+
background-color: color-mix(in srgb, var(--pa-text-secondary) 5%, transparent);
|
|
6452
|
+
}
|
|
6453
|
+
.pa-callout--success {
|
|
6454
|
+
border-left-color: var(--pa-success-bg);
|
|
6455
|
+
background-color: var(--pa-success-bg-subtle);
|
|
6456
|
+
}
|
|
6457
|
+
.pa-callout--danger {
|
|
6458
|
+
border-left-color: var(--pa-danger-bg);
|
|
6459
|
+
background-color: var(--pa-danger-bg-subtle);
|
|
6460
|
+
}
|
|
6461
|
+
.pa-callout--warning {
|
|
6462
|
+
border-left-color: var(--pa-warning-bg);
|
|
6463
|
+
background-color: var(--pa-warning-bg-subtle);
|
|
6464
|
+
}
|
|
6465
|
+
.pa-callout--info {
|
|
6466
|
+
border-left-color: var(--pa-info-bg);
|
|
6467
|
+
background-color: var(--pa-info-bg-subtle);
|
|
6468
|
+
}
|
|
6469
|
+
.pa-callout--sm {
|
|
6470
|
+
padding: 0.8rem 1.2rem;
|
|
6471
|
+
font-size: 1.2rem;
|
|
6472
|
+
}
|
|
6473
|
+
.pa-callout--lg {
|
|
6474
|
+
padding: 2.4rem 3.2rem;
|
|
6475
|
+
font-size: 1.6rem;
|
|
6476
|
+
}
|
|
6477
|
+
.pa-callout__icon {
|
|
6478
|
+
float: left;
|
|
6479
|
+
margin-right: 0.8rem;
|
|
6480
|
+
font-size: 1.8rem;
|
|
6481
|
+
line-height: 1;
|
|
6482
|
+
}
|
|
6483
|
+
.pa-callout__heading {
|
|
6484
|
+
margin: 0 0 0.8rem 0;
|
|
6485
|
+
font-size: 1.6rem;
|
|
6486
|
+
font-weight: 600;
|
|
6487
|
+
}
|
|
6488
|
+
.pa-callout__content::after {
|
|
6489
|
+
content: "";
|
|
6490
|
+
display: table;
|
|
6491
|
+
clear: both;
|
|
6492
|
+
}
|
|
6493
|
+
.pa-callout > *:last-child {
|
|
6494
|
+
margin-bottom: 0;
|
|
6495
|
+
}
|
|
6496
|
+
.pa-callout p {
|
|
6497
|
+
margin: 0 0 0.8rem 0;
|
|
6498
|
+
}
|
|
6499
|
+
.pa-callout p:last-child {
|
|
6500
|
+
margin-bottom: 0;
|
|
6501
|
+
}
|
|
6502
|
+
.pa-callout ul, .pa-callout ol {
|
|
6503
|
+
margin: 0.8rem 0;
|
|
6504
|
+
padding-left: 2.4rem;
|
|
6505
|
+
}
|
|
6506
|
+
.pa-callout ul:last-child, .pa-callout ol:last-child {
|
|
6507
|
+
margin-bottom: 0;
|
|
6508
|
+
}
|
|
6509
|
+
.pa-callout code {
|
|
6510
|
+
background-color: rgba(0, 0, 0, 0.08);
|
|
6511
|
+
padding: 0.1em 0.3em;
|
|
6512
|
+
border-radius: 2px;
|
|
6513
|
+
font-size: 0.9em;
|
|
6514
|
+
}
|
|
6515
|
+
.pa-callout a {
|
|
6516
|
+
color: inherit;
|
|
6517
|
+
text-decoration: underline;
|
|
6518
|
+
font-weight: 500;
|
|
6519
|
+
}
|
|
6520
|
+
.pa-callout a:hover {
|
|
6521
|
+
text-decoration: none;
|
|
6522
|
+
}
|
|
6523
|
+
.pa-callout h1, .pa-callout h2, .pa-callout h3, .pa-callout h4, .pa-callout h5, .pa-callout h6 {
|
|
6524
|
+
color: inherit;
|
|
6525
|
+
margin-top: 0;
|
|
6526
|
+
}
|
|
6527
|
+
|
|
6286
6528
|
/* ========================================
|
|
6287
6529
|
Form Components
|
|
6288
6530
|
Form groups, inputs, selects, textareas, checkboxes, radio buttons, states
|
|
@@ -8632,18 +8874,6 @@ web-daterangepicker {
|
|
|
8632
8874
|
}
|
|
8633
8875
|
}
|
|
8634
8876
|
|
|
8635
|
-
.text-success {
|
|
8636
|
-
color: var(--pa-success-bg);
|
|
8637
|
-
}
|
|
8638
|
-
|
|
8639
|
-
.text-danger {
|
|
8640
|
-
color: var(--pa-danger-bg);
|
|
8641
|
-
}
|
|
8642
|
-
|
|
8643
|
-
.text-warning {
|
|
8644
|
-
color: var(--pa-warning-bg);
|
|
8645
|
-
}
|
|
8646
|
-
|
|
8647
8877
|
/* ========================================
|
|
8648
8878
|
Reset and Base Styles
|
|
8649
8879
|
======================================== */
|
|
@@ -9091,12 +9321,15 @@ code {
|
|
|
9091
9321
|
.pa-profile-panel__header {
|
|
9092
9322
|
padding: 2.4rem;
|
|
9093
9323
|
background-color: var(--pa-header-bg);
|
|
9094
|
-
border-bottom: 1px solid var(--pa-
|
|
9324
|
+
border-bottom: 1px solid var(--pa-text-primary);
|
|
9095
9325
|
display: flex;
|
|
9096
9326
|
align-items: flex-start;
|
|
9097
9327
|
gap: 1.6rem;
|
|
9098
9328
|
position: relative;
|
|
9099
9329
|
}
|
|
9330
|
+
.pa-profile-panel__header--no-avatar .pa-profile-panel__avatar {
|
|
9331
|
+
display: none;
|
|
9332
|
+
}
|
|
9100
9333
|
.pa-profile-panel__avatar {
|
|
9101
9334
|
width: 6.4rem;
|
|
9102
9335
|
height: 6.4rem;
|
|
@@ -9114,12 +9347,16 @@ code {
|
|
|
9114
9347
|
.pa-profile-panel__info {
|
|
9115
9348
|
flex: 1;
|
|
9116
9349
|
min-width: 0;
|
|
9350
|
+
padding-right: 3.2rem;
|
|
9117
9351
|
}
|
|
9118
9352
|
.pa-profile-panel__name {
|
|
9119
9353
|
margin: 0 0 0.4rem 0;
|
|
9120
9354
|
font-size: 1.8rem;
|
|
9121
9355
|
font-weight: 600;
|
|
9122
9356
|
color: var(--pa-text-primary);
|
|
9357
|
+
overflow: hidden;
|
|
9358
|
+
text-overflow: ellipsis;
|
|
9359
|
+
white-space: nowrap;
|
|
9123
9360
|
}
|
|
9124
9361
|
.pa-profile-panel__email {
|
|
9125
9362
|
margin: 0 0 0.8rem 0;
|
|
@@ -11592,6 +11829,170 @@ html.font-size-4xl {
|
|
|
11592
11829
|
line-height: 1.8;
|
|
11593
11830
|
}
|
|
11594
11831
|
|
|
11832
|
+
.gap-0 {
|
|
11833
|
+
gap: 0;
|
|
11834
|
+
}
|
|
11835
|
+
|
|
11836
|
+
.gap-xs {
|
|
11837
|
+
gap: 0.4rem;
|
|
11838
|
+
}
|
|
11839
|
+
|
|
11840
|
+
.gap-sm {
|
|
11841
|
+
gap: 0.8rem;
|
|
11842
|
+
}
|
|
11843
|
+
|
|
11844
|
+
.gap-md {
|
|
11845
|
+
gap: 1.2rem;
|
|
11846
|
+
}
|
|
11847
|
+
|
|
11848
|
+
.gap-base {
|
|
11849
|
+
gap: 1.6rem;
|
|
11850
|
+
}
|
|
11851
|
+
|
|
11852
|
+
.gap-lg {
|
|
11853
|
+
gap: 2.4rem;
|
|
11854
|
+
}
|
|
11855
|
+
|
|
11856
|
+
.gap-xl {
|
|
11857
|
+
gap: 3.2rem;
|
|
11858
|
+
}
|
|
11859
|
+
|
|
11860
|
+
.gap-2xl {
|
|
11861
|
+
gap: 4.8rem;
|
|
11862
|
+
}
|
|
11863
|
+
|
|
11864
|
+
.gap-1 {
|
|
11865
|
+
gap: 0.1rem;
|
|
11866
|
+
}
|
|
11867
|
+
|
|
11868
|
+
.gap-2 {
|
|
11869
|
+
gap: 0.2rem;
|
|
11870
|
+
}
|
|
11871
|
+
|
|
11872
|
+
.gap-3 {
|
|
11873
|
+
gap: 0.3rem;
|
|
11874
|
+
}
|
|
11875
|
+
|
|
11876
|
+
.gap-4 {
|
|
11877
|
+
gap: 0.4rem;
|
|
11878
|
+
}
|
|
11879
|
+
|
|
11880
|
+
.gap-5 {
|
|
11881
|
+
gap: 0.5rem;
|
|
11882
|
+
}
|
|
11883
|
+
|
|
11884
|
+
.gap-6 {
|
|
11885
|
+
gap: 0.6rem;
|
|
11886
|
+
}
|
|
11887
|
+
|
|
11888
|
+
.gap-8 {
|
|
11889
|
+
gap: 0.8rem;
|
|
11890
|
+
}
|
|
11891
|
+
|
|
11892
|
+
.gap-10 {
|
|
11893
|
+
gap: 1rem;
|
|
11894
|
+
}
|
|
11895
|
+
|
|
11896
|
+
.gap-12 {
|
|
11897
|
+
gap: 1.2rem;
|
|
11898
|
+
}
|
|
11899
|
+
|
|
11900
|
+
.gap-15 {
|
|
11901
|
+
gap: 1.5rem;
|
|
11902
|
+
}
|
|
11903
|
+
|
|
11904
|
+
.gap-20 {
|
|
11905
|
+
gap: 2rem;
|
|
11906
|
+
}
|
|
11907
|
+
|
|
11908
|
+
.row-gap-0 {
|
|
11909
|
+
row-gap: 0;
|
|
11910
|
+
}
|
|
11911
|
+
|
|
11912
|
+
.row-gap-xs {
|
|
11913
|
+
row-gap: 0.4rem;
|
|
11914
|
+
}
|
|
11915
|
+
|
|
11916
|
+
.row-gap-sm {
|
|
11917
|
+
row-gap: 0.8rem;
|
|
11918
|
+
}
|
|
11919
|
+
|
|
11920
|
+
.row-gap-md {
|
|
11921
|
+
row-gap: 1.2rem;
|
|
11922
|
+
}
|
|
11923
|
+
|
|
11924
|
+
.row-gap-base {
|
|
11925
|
+
row-gap: 1.6rem;
|
|
11926
|
+
}
|
|
11927
|
+
|
|
11928
|
+
.row-gap-lg {
|
|
11929
|
+
row-gap: 2.4rem;
|
|
11930
|
+
}
|
|
11931
|
+
|
|
11932
|
+
.column-gap-0 {
|
|
11933
|
+
column-gap: 0;
|
|
11934
|
+
}
|
|
11935
|
+
|
|
11936
|
+
.column-gap-xs {
|
|
11937
|
+
column-gap: 0.4rem;
|
|
11938
|
+
}
|
|
11939
|
+
|
|
11940
|
+
.column-gap-sm {
|
|
11941
|
+
column-gap: 0.8rem;
|
|
11942
|
+
}
|
|
11943
|
+
|
|
11944
|
+
.column-gap-md {
|
|
11945
|
+
column-gap: 1.2rem;
|
|
11946
|
+
}
|
|
11947
|
+
|
|
11948
|
+
.column-gap-base {
|
|
11949
|
+
column-gap: 1.6rem;
|
|
11950
|
+
}
|
|
11951
|
+
|
|
11952
|
+
.column-gap-lg {
|
|
11953
|
+
column-gap: 2.4rem;
|
|
11954
|
+
}
|
|
11955
|
+
|
|
11956
|
+
.text-2xs {
|
|
11957
|
+
font-size: 1rem;
|
|
11958
|
+
}
|
|
11959
|
+
|
|
11960
|
+
.text-xs {
|
|
11961
|
+
font-size: 1.2rem;
|
|
11962
|
+
}
|
|
11963
|
+
|
|
11964
|
+
.text-sm {
|
|
11965
|
+
font-size: 1.4rem;
|
|
11966
|
+
}
|
|
11967
|
+
|
|
11968
|
+
.text-md {
|
|
11969
|
+
font-size: 1.5rem;
|
|
11970
|
+
}
|
|
11971
|
+
|
|
11972
|
+
.text-base {
|
|
11973
|
+
font-size: 1.6rem;
|
|
11974
|
+
}
|
|
11975
|
+
|
|
11976
|
+
.text-lg {
|
|
11977
|
+
font-size: 1.8rem;
|
|
11978
|
+
}
|
|
11979
|
+
|
|
11980
|
+
.text-xl {
|
|
11981
|
+
font-size: 2rem;
|
|
11982
|
+
}
|
|
11983
|
+
|
|
11984
|
+
.text-2xl {
|
|
11985
|
+
font-size: 2.4rem;
|
|
11986
|
+
}
|
|
11987
|
+
|
|
11988
|
+
.text-3xl {
|
|
11989
|
+
font-size: 2.8rem;
|
|
11990
|
+
}
|
|
11991
|
+
|
|
11992
|
+
.text-4xl {
|
|
11993
|
+
font-size: 3.2rem;
|
|
11994
|
+
}
|
|
11995
|
+
|
|
11595
11996
|
.component-showcase {
|
|
11596
11997
|
display: flex;
|
|
11597
11998
|
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-
|
|
3
|
+
"version": "1.0.0-rc03",
|
|
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": {
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<!-- ========================================
|
|
2
|
+
Callout Components
|
|
3
|
+
Documentation-style callouts with left border accent
|
|
4
|
+
======================================== -->
|
|
5
|
+
|
|
6
|
+
<!-- BASIC CALLOUTS -->
|
|
7
|
+
|
|
8
|
+
<!-- Info Callout -->
|
|
9
|
+
<div class="pa-callout pa-callout--info">
|
|
10
|
+
<strong>Note:</strong> This is an informational callout for documentation tips and notes.
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- Success Callout -->
|
|
14
|
+
<div class="pa-callout pa-callout--success">
|
|
15
|
+
<strong>Success:</strong> Operation completed successfully. Your changes have been saved.
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<!-- Warning Callout -->
|
|
19
|
+
<div class="pa-callout pa-callout--warning">
|
|
20
|
+
<strong>Warning:</strong> This action cannot be undone. Please proceed with caution.
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<!-- Danger Callout -->
|
|
24
|
+
<div class="pa-callout pa-callout--danger">
|
|
25
|
+
<strong>Important:</strong> This feature is deprecated and will be removed in the next version.
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- Primary Callout -->
|
|
29
|
+
<div class="pa-callout pa-callout--primary">
|
|
30
|
+
<strong>Pro Tip:</strong> You can use keyboard shortcuts to speed up your workflow.
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<!-- Secondary Callout -->
|
|
34
|
+
<div class="pa-callout pa-callout--secondary">
|
|
35
|
+
<strong>Note:</strong> This is a secondary callout with neutral styling.
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<!-- ========================================
|
|
39
|
+
CALLOUTS WITH ICONS
|
|
40
|
+
======================================== -->
|
|
41
|
+
|
|
42
|
+
<!-- Info with Icon -->
|
|
43
|
+
<div class="pa-callout pa-callout--info">
|
|
44
|
+
<span class="pa-callout__icon">💡</span>
|
|
45
|
+
<div class="pa-callout__content">
|
|
46
|
+
<div class="pa-callout__heading">Did you know?</div>
|
|
47
|
+
<p>You can hover over any element to see its tooltip. Tooltips provide additional context without cluttering the interface.</p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<!-- Warning with Icon -->
|
|
52
|
+
<div class="pa-callout pa-callout--warning">
|
|
53
|
+
<span class="pa-callout__icon">⚠️</span>
|
|
54
|
+
<div class="pa-callout__content">
|
|
55
|
+
<div class="pa-callout__heading">Breaking Change</div>
|
|
56
|
+
<p>The <code>getData()</code> method now returns a Promise. Update your code to use <code>await</code> or <code>.then()</code>.</p>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<!-- Danger with Icon -->
|
|
61
|
+
<div class="pa-callout pa-callout--danger">
|
|
62
|
+
<span class="pa-callout__icon">🚨</span>
|
|
63
|
+
<div class="pa-callout__content">
|
|
64
|
+
<div class="pa-callout__heading">Security Notice</div>
|
|
65
|
+
<p>Never commit API keys or secrets to version control. Use environment variables instead.</p>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<!-- Success with Icon -->
|
|
70
|
+
<div class="pa-callout pa-callout--success">
|
|
71
|
+
<span class="pa-callout__icon">✅</span>
|
|
72
|
+
<div class="pa-callout__content">
|
|
73
|
+
<div class="pa-callout__heading">Best Practice</div>
|
|
74
|
+
<p>Always validate user input on both client and server side for maximum security.</p>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<!-- ========================================
|
|
79
|
+
CALLOUT SIZES
|
|
80
|
+
======================================== -->
|
|
81
|
+
|
|
82
|
+
<!-- Small Callout -->
|
|
83
|
+
<div class="pa-callout pa-callout--info pa-callout--sm">
|
|
84
|
+
<strong>Note:</strong> This is a small callout for compact spaces.
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<!-- Default Callout -->
|
|
88
|
+
<div class="pa-callout pa-callout--info">
|
|
89
|
+
<strong>Note:</strong> This is a default-sized callout.
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<!-- Large Callout -->
|
|
93
|
+
<div class="pa-callout pa-callout--info pa-callout--lg">
|
|
94
|
+
<strong>Note:</strong> This is a large callout for prominent notices.
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<!-- ========================================
|
|
98
|
+
CALLOUTS WITH LISTS
|
|
99
|
+
======================================== -->
|
|
100
|
+
|
|
101
|
+
<!-- Callout with Unordered List -->
|
|
102
|
+
<div class="pa-callout pa-callout--info">
|
|
103
|
+
<div class="pa-callout__heading">Requirements</div>
|
|
104
|
+
<ul>
|
|
105
|
+
<li>Node.js version 16 or higher</li>
|
|
106
|
+
<li>npm version 8 or higher</li>
|
|
107
|
+
<li>A modern web browser</li>
|
|
108
|
+
</ul>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<!-- Callout with Ordered List -->
|
|
112
|
+
<div class="pa-callout pa-callout--warning">
|
|
113
|
+
<div class="pa-callout__heading">Migration Steps</div>
|
|
114
|
+
<ol>
|
|
115
|
+
<li>Backup your database</li>
|
|
116
|
+
<li>Update dependencies with <code>npm update</code></li>
|
|
117
|
+
<li>Run migrations with <code>npm run migrate</code></li>
|
|
118
|
+
<li>Verify the application starts correctly</li>
|
|
119
|
+
</ol>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<!-- ========================================
|
|
123
|
+
CALLOUTS WITH CODE
|
|
124
|
+
======================================== -->
|
|
125
|
+
|
|
126
|
+
<!-- Callout with Inline Code -->
|
|
127
|
+
<div class="pa-callout pa-callout--primary">
|
|
128
|
+
<strong>Tip:</strong> Use <code>console.table()</code> instead of <code>console.log()</code> for arrays and objects to get a nicely formatted table output.
|
|
129
|
+
</div>
|
package/snippets/profile.html
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
================================ -->
|
|
26
26
|
|
|
27
27
|
<!-- Complete Profile Panel (place before closing </body> tag) -->
|
|
28
|
+
<!-- Note: Use title attributes on name/email for tooltips when text may be truncated -->
|
|
28
29
|
<div class="pa-profile-panel" id="profilePanel">
|
|
29
30
|
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
30
31
|
<div class="pa-profile-panel__content">
|
|
@@ -33,8 +34,8 @@
|
|
|
33
34
|
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
34
35
|
</div>
|
|
35
36
|
<div class="pa-profile-panel__info">
|
|
36
|
-
<h3 class="pa-profile-panel__name">John Doe</h3>
|
|
37
|
-
<p class="pa-profile-panel__email">john.doe@company.com</p>
|
|
37
|
+
<h3 class="pa-profile-panel__name" title="John Doe">John Doe</h3>
|
|
38
|
+
<p class="pa-profile-panel__email" title="john.doe@company.com">john.doe@company.com</p>
|
|
38
39
|
<span class="pa-profile-panel__role">Administrator</span>
|
|
39
40
|
</div>
|
|
40
41
|
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
@@ -81,6 +82,48 @@
|
|
|
81
82
|
</div>
|
|
82
83
|
|
|
83
84
|
|
|
85
|
+
<!-- ================================
|
|
86
|
+
PROFILE PANEL - NO AVATAR (CORPORATE)
|
|
87
|
+
For apps without user photos
|
|
88
|
+
================================ -->
|
|
89
|
+
|
|
90
|
+
<!-- Profile Panel without avatar (for corporate apps that don't have user photos) -->
|
|
91
|
+
<!-- Add --no-avatar modifier to header to hide the avatar -->
|
|
92
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
93
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
94
|
+
<div class="pa-profile-panel__content">
|
|
95
|
+
<div class="pa-profile-panel__header pa-profile-panel__header--no-avatar">
|
|
96
|
+
<div class="pa-profile-panel__avatar">
|
|
97
|
+
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="pa-profile-panel__info">
|
|
100
|
+
<h3 class="pa-profile-panel__name" title="John Doe">John Doe</h3>
|
|
101
|
+
<p class="pa-profile-panel__email" title="john.doe@company.com">john.doe@company.com</p>
|
|
102
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
103
|
+
</div>
|
|
104
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
105
|
+
✕
|
|
106
|
+
</button>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div class="pa-profile-panel__body">
|
|
110
|
+
<nav class="pa-profile-panel__nav">
|
|
111
|
+
<ul>
|
|
112
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
113
|
+
<span class="pa-profile-panel__nav-icon">👤</span>
|
|
114
|
+
Profile Settings
|
|
115
|
+
</a></li>
|
|
116
|
+
<li><a href="#logout" class="pa-profile-panel__nav-item">
|
|
117
|
+
<span class="pa-profile-panel__nav-icon">🚪</span>
|
|
118
|
+
Sign Out
|
|
119
|
+
</a></li>
|
|
120
|
+
</ul>
|
|
121
|
+
</nav>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
|
|
84
127
|
<!-- ================================
|
|
85
128
|
PROFILE PANEL - WITH TABS (PROFILE + FAVORITES)
|
|
86
129
|
================================ -->
|
|
@@ -383,11 +426,12 @@ PROFILE PANEL STRUCTURE:
|
|
|
383
426
|
|
|
384
427
|
PANEL HEADER:
|
|
385
428
|
- .pa-profile-panel__header - Header container
|
|
429
|
+
- .pa-profile-panel__header--no-avatar - Modifier to hide avatar (for corporate apps)
|
|
386
430
|
- .pa-profile-panel__avatar - Avatar container
|
|
387
431
|
- .pa-profile-panel__avatar-icon - Avatar icon/image
|
|
388
432
|
- .pa-profile-panel__info - User info container
|
|
389
|
-
- .pa-profile-panel__name - User name
|
|
390
|
-
- .pa-profile-panel__email - User email
|
|
433
|
+
- .pa-profile-panel__name - User name (truncates with ellipsis, add title for tooltip)
|
|
434
|
+
- .pa-profile-panel__email - User email (truncates with ellipsis, add title for tooltip)
|
|
391
435
|
- .pa-profile-panel__role - User role badge
|
|
392
436
|
- .pa-profile-panel__close - Close button
|
|
393
437
|
|
|
@@ -405,4 +405,18 @@
|
|
|
405
405
|
--pa-multiselect-option-hover-bg: #{$multiselect-option-hover-bg};
|
|
406
406
|
--pa-multiselect-pill-bg: #{$multiselect-pill-bg};
|
|
407
407
|
--pa-multiselect-pill-border: #{$multiselect-pill-border};
|
|
408
|
+
|
|
409
|
+
// =========================================================================
|
|
410
|
+
// CUSTOM THEME COLORS (1-9)
|
|
411
|
+
// Themes can override $color-1 through $color-9 to define branded colors
|
|
412
|
+
// =========================================================================
|
|
413
|
+
--pa-color-1: #{$color-1};
|
|
414
|
+
--pa-color-2: #{$color-2};
|
|
415
|
+
--pa-color-3: #{$color-3};
|
|
416
|
+
--pa-color-4: #{$color-4};
|
|
417
|
+
--pa-color-5: #{$color-5};
|
|
418
|
+
--pa-color-6: #{$color-6};
|
|
419
|
+
--pa-color-7: #{$color-7};
|
|
420
|
+
--pa-color-8: #{$color-8};
|
|
421
|
+
--pa-color-9: #{$color-9};
|
|
408
422
|
}
|
package/src/scss/_core.scss
CHANGED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* ========================================
|
|
2
|
+
Callout Components
|
|
3
|
+
Documentation-style callouts with left border accent
|
|
4
|
+
For tips, notes, warnings in content areas
|
|
5
|
+
======================================== */
|
|
6
|
+
@use '../variables' as *;
|
|
7
|
+
|
|
8
|
+
// Callout base
|
|
9
|
+
.pa-callout {
|
|
10
|
+
position: relative;
|
|
11
|
+
padding: $card-footer-padding-v $card-footer-padding-h;
|
|
12
|
+
margin-bottom: $spacing-base;
|
|
13
|
+
border-left: $callout-border-width solid var(--pa-border-color);
|
|
14
|
+
border-radius: $border-radius;
|
|
15
|
+
font-size: $font-size-sm;
|
|
16
|
+
background-color: var(--pa-card-bg);
|
|
17
|
+
|
|
18
|
+
// Remove margins when first/last child in card body
|
|
19
|
+
.pa-card__body &:first-child {
|
|
20
|
+
margin-top: 0;
|
|
21
|
+
}
|
|
22
|
+
.pa-card__body &:last-child {
|
|
23
|
+
margin-bottom: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Callout variants
|
|
27
|
+
&--primary {
|
|
28
|
+
border-left-color: var(--pa-accent);
|
|
29
|
+
background-color: rgba($accent-color, $opacity-subtle);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&--secondary {
|
|
33
|
+
border-left-color: var(--pa-text-secondary);
|
|
34
|
+
background-color: color-mix(in srgb, var(--pa-text-secondary) 5%, transparent);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&--success {
|
|
38
|
+
border-left-color: var(--pa-success-bg);
|
|
39
|
+
background-color: var(--pa-success-bg-subtle);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&--danger {
|
|
43
|
+
border-left-color: var(--pa-danger-bg);
|
|
44
|
+
background-color: var(--pa-danger-bg-subtle);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&--warning {
|
|
48
|
+
border-left-color: var(--pa-warning-bg);
|
|
49
|
+
background-color: var(--pa-warning-bg-subtle);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&--info {
|
|
53
|
+
border-left-color: var(--pa-info-bg);
|
|
54
|
+
background-color: var(--pa-info-bg-subtle);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Callout sizes
|
|
58
|
+
&--sm {
|
|
59
|
+
padding: $spacing-sm $spacing-md;
|
|
60
|
+
font-size: $font-size-xs;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&--lg {
|
|
64
|
+
padding: $spacing-lg $spacing-xl;
|
|
65
|
+
font-size: $font-size-base;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Callout components
|
|
69
|
+
&__icon {
|
|
70
|
+
float: left;
|
|
71
|
+
margin-right: $spacing-sm;
|
|
72
|
+
font-size: $font-size-lg;
|
|
73
|
+
line-height: 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&__heading {
|
|
77
|
+
margin: 0 0 $spacing-sm 0;
|
|
78
|
+
font-size: $font-size-base;
|
|
79
|
+
font-weight: $font-weight-semibold;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&__content {
|
|
83
|
+
// Clearfix for floated icon
|
|
84
|
+
&::after {
|
|
85
|
+
content: '';
|
|
86
|
+
display: table;
|
|
87
|
+
clear: both;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Remove margin from last child
|
|
92
|
+
> *:last-child {
|
|
93
|
+
margin-bottom: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Paragraphs inside callouts
|
|
97
|
+
p {
|
|
98
|
+
margin: 0 0 $spacing-sm 0;
|
|
99
|
+
|
|
100
|
+
&:last-child {
|
|
101
|
+
margin-bottom: 0;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Lists inside callouts
|
|
106
|
+
ul, ol {
|
|
107
|
+
margin: $spacing-sm 0;
|
|
108
|
+
padding-left: $spacing-lg;
|
|
109
|
+
|
|
110
|
+
&:last-child {
|
|
111
|
+
margin-bottom: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Code inside callouts
|
|
116
|
+
code {
|
|
117
|
+
background-color: rgba(0, 0, 0, $opacity-subtle);
|
|
118
|
+
padding: 0.1em 0.3em;
|
|
119
|
+
border-radius: $border-radius-sm;
|
|
120
|
+
font-size: 0.9em;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Links styling
|
|
124
|
+
a {
|
|
125
|
+
color: inherit;
|
|
126
|
+
text-decoration: underline;
|
|
127
|
+
font-weight: $font-weight-medium;
|
|
128
|
+
|
|
129
|
+
&:hover {
|
|
130
|
+
text-decoration: none;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Headings inside callouts
|
|
135
|
+
h1, h2, h3, h4, h5, h6 {
|
|
136
|
+
color: inherit;
|
|
137
|
+
margin-top: 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -88,11 +88,18 @@
|
|
|
88
88
|
&__header {
|
|
89
89
|
padding: $spacing-lg;
|
|
90
90
|
background-color: var(--pa-header-bg);
|
|
91
|
-
border-bottom:
|
|
91
|
+
border-bottom: 1px solid var(--pa-text-primary);
|
|
92
92
|
display: flex;
|
|
93
93
|
align-items: flex-start;
|
|
94
94
|
gap: $spacing-base;
|
|
95
95
|
position: relative;
|
|
96
|
+
|
|
97
|
+
// No-avatar variant for corporate apps without user photos
|
|
98
|
+
&--no-avatar {
|
|
99
|
+
.pa-profile-panel__avatar {
|
|
100
|
+
display: none;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
96
103
|
}
|
|
97
104
|
|
|
98
105
|
&__avatar {
|
|
@@ -114,6 +121,7 @@
|
|
|
114
121
|
&__info {
|
|
115
122
|
flex: 1;
|
|
116
123
|
min-width: 0;
|
|
124
|
+
padding-right: $profile-close-size; // Space for close button
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
&__name {
|
|
@@ -121,6 +129,10 @@
|
|
|
121
129
|
font-size: $font-size-lg;
|
|
122
130
|
font-weight: $font-weight-semibold;
|
|
123
131
|
color: var(--pa-text-primary);
|
|
132
|
+
// Truncate long names
|
|
133
|
+
overflow: hidden;
|
|
134
|
+
text-overflow: ellipsis;
|
|
135
|
+
white-space: nowrap;
|
|
124
136
|
}
|
|
125
137
|
|
|
126
138
|
&__email {
|
|
@@ -195,6 +195,59 @@ html.font-size-4xl {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
// Gap utilities (10px rem base)
|
|
199
|
+
// Semantic gap classes using spacing variables
|
|
200
|
+
.gap-0 { gap: 0; }
|
|
201
|
+
.gap-xs { gap: $spacing-xs; } // 0.25rem = 2.5px
|
|
202
|
+
.gap-sm { gap: $spacing-sm; } // 0.5rem = 5px
|
|
203
|
+
.gap-md { gap: $spacing-md; } // 0.75rem = 7.5px
|
|
204
|
+
.gap-base { gap: $spacing-base; } // 1rem = 10px
|
|
205
|
+
.gap-lg { gap: $spacing-lg; } // 1.5rem = 15px
|
|
206
|
+
.gap-xl { gap: $spacing-xl; } // 2rem = 20px
|
|
207
|
+
.gap-2xl { gap: $spacing-2xl; } // 3rem = 30px
|
|
208
|
+
|
|
209
|
+
// Numeric gap classes (in 10px rem units)
|
|
210
|
+
.gap-1 { gap: 0.1rem; } // 1px
|
|
211
|
+
.gap-2 { gap: 0.2rem; } // 2px
|
|
212
|
+
.gap-3 { gap: 0.3rem; } // 3px
|
|
213
|
+
.gap-4 { gap: 0.4rem; } // 4px
|
|
214
|
+
.gap-5 { gap: 0.5rem; } // 5px
|
|
215
|
+
.gap-6 { gap: 0.6rem; } // 6px
|
|
216
|
+
.gap-8 { gap: 0.8rem; } // 8px
|
|
217
|
+
.gap-10 { gap: 1rem; } // 10px
|
|
218
|
+
.gap-12 { gap: 1.2rem; } // 12px
|
|
219
|
+
.gap-15 { gap: 1.5rem; } // 15px
|
|
220
|
+
.gap-20 { gap: 2rem; } // 20px
|
|
221
|
+
|
|
222
|
+
// Row gap utilities
|
|
223
|
+
.row-gap-0 { row-gap: 0; }
|
|
224
|
+
.row-gap-xs { row-gap: $spacing-xs; }
|
|
225
|
+
.row-gap-sm { row-gap: $spacing-sm; }
|
|
226
|
+
.row-gap-md { row-gap: $spacing-md; }
|
|
227
|
+
.row-gap-base { row-gap: $spacing-base; }
|
|
228
|
+
.row-gap-lg { row-gap: $spacing-lg; }
|
|
229
|
+
|
|
230
|
+
// Column gap utilities
|
|
231
|
+
.column-gap-0 { column-gap: 0; }
|
|
232
|
+
.column-gap-xs { column-gap: $spacing-xs; }
|
|
233
|
+
.column-gap-sm { column-gap: $spacing-sm; }
|
|
234
|
+
.column-gap-md { column-gap: $spacing-md; }
|
|
235
|
+
.column-gap-base { column-gap: $spacing-base; }
|
|
236
|
+
.column-gap-lg { column-gap: $spacing-lg; }
|
|
237
|
+
|
|
238
|
+
// Font-size utilities (10px rem base)
|
|
239
|
+
// Direct font-size classes using typography variables
|
|
240
|
+
.text-2xs { font-size: $font-size-2xs; } // 1rem = 10px
|
|
241
|
+
.text-xs { font-size: $font-size-xs; } // 1.2rem = 12px
|
|
242
|
+
.text-sm { font-size: $font-size-sm; } // 1.4rem = 14px
|
|
243
|
+
.text-md { font-size: $font-size-md; } // 1.5rem = 15px
|
|
244
|
+
.text-base { font-size: $font-size-base; } // 1.6rem = 16px
|
|
245
|
+
.text-lg { font-size: $font-size-lg; } // 1.8rem = 18px
|
|
246
|
+
.text-xl { font-size: $font-size-xl; } // 2rem = 20px
|
|
247
|
+
.text-2xl { font-size: $font-size-2xl; } // 2.4rem = 24px
|
|
248
|
+
.text-3xl { font-size: $font-size-3xl; } // 2.8rem = 28px
|
|
249
|
+
.text-4xl { font-size: $font-size-4xl; } // 3.2rem = 32px
|
|
250
|
+
|
|
198
251
|
// Component showcase styling
|
|
199
252
|
.component-showcase {
|
|
200
253
|
display: flex;
|
package/src/scss/utilities.scss
CHANGED
|
@@ -254,94 +254,49 @@ $spacers: (
|
|
|
254
254
|
white-space: nowrap !important;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
// Width utilities
|
|
258
|
-
.w-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
.w-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.w-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
.w-
|
|
271
|
-
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
.w-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
.w-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
.w-
|
|
283
|
-
width: auto !important;
|
|
284
|
-
}
|
|
257
|
+
// Width utilities (5% increments)
|
|
258
|
+
.w-5 { width: 5% !important; }
|
|
259
|
+
.w-10 { width: 10% !important; }
|
|
260
|
+
.w-15 { width: 15% !important; }
|
|
261
|
+
.w-20 { width: 20% !important; }
|
|
262
|
+
.w-25 { width: 25% !important; }
|
|
263
|
+
.w-30 { width: 30% !important; }
|
|
264
|
+
.w-35 { width: 35% !important; }
|
|
265
|
+
.w-40 { width: 40% !important; }
|
|
266
|
+
.w-45 { width: 45% !important; }
|
|
267
|
+
.w-50 { width: 50% !important; }
|
|
268
|
+
.w-55 { width: 55% !important; }
|
|
269
|
+
.w-60 { width: 60% !important; }
|
|
270
|
+
.w-65 { width: 65% !important; }
|
|
271
|
+
.w-70 { width: 70% !important; }
|
|
272
|
+
.w-75 { width: 75% !important; }
|
|
273
|
+
.w-80 { width: 80% !important; }
|
|
274
|
+
.w-85 { width: 85% !important; }
|
|
275
|
+
.w-90 { width: 90% !important; }
|
|
276
|
+
.w-95 { width: 95% !important; }
|
|
277
|
+
.w-100 { width: 100% !important; }
|
|
278
|
+
.w-auto { width: auto !important; }
|
|
279
|
+
|
|
280
|
+
// Width utilities (fractions) - matches grid naming: pa-col-1-3, pa-col-2-3
|
|
281
|
+
.w-1-3 { width: 33.333333% !important; }
|
|
282
|
+
.w-2-3 { width: 66.666667% !important; }
|
|
285
283
|
|
|
286
284
|
// Min-width utilities
|
|
287
|
-
.mw-25 {
|
|
288
|
-
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.mw-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.mw-50 {
|
|
296
|
-
min-width: 50% !important;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.mw-66 {
|
|
300
|
-
min-width: 66.666667% !important;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
.mw-75 {
|
|
304
|
-
min-width: 75% !important;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
.mw-100 {
|
|
308
|
-
min-width: 100% !important;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.mw-auto {
|
|
312
|
-
min-width: auto !important;
|
|
313
|
-
}
|
|
285
|
+
.mw-25 { min-width: 25% !important; }
|
|
286
|
+
.mw-50 { min-width: 50% !important; }
|
|
287
|
+
.mw-75 { min-width: 75% !important; }
|
|
288
|
+
.mw-100 { min-width: 100% !important; }
|
|
289
|
+
.mw-auto { min-width: auto !important; }
|
|
290
|
+
.mw-1-3 { min-width: 33.333333% !important; }
|
|
291
|
+
.mw-2-3 { min-width: 66.666667% !important; }
|
|
314
292
|
|
|
315
293
|
// Fixed width utilities (min-width + width locked)
|
|
316
|
-
.w-25-fixed {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
.w-
|
|
322
|
-
min-width: 33.333333% !important;
|
|
323
|
-
width: 33.333333% !important;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
.w-50-fixed {
|
|
327
|
-
min-width: 50% !important;
|
|
328
|
-
width: 50% !important;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
.w-66-fixed {
|
|
332
|
-
min-width: 66.666667% !important;
|
|
333
|
-
width: 66.666667% !important;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.w-75-fixed {
|
|
337
|
-
min-width: 75% !important;
|
|
338
|
-
width: 75% !important;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
.w-100-fixed {
|
|
342
|
-
min-width: 100% !important;
|
|
343
|
-
width: 100% !important;
|
|
344
|
-
}
|
|
294
|
+
.w-25-fixed { min-width: 25% !important; width: 25% !important; }
|
|
295
|
+
.w-50-fixed { min-width: 50% !important; width: 50% !important; }
|
|
296
|
+
.w-75-fixed { min-width: 75% !important; width: 75% !important; }
|
|
297
|
+
.w-100-fixed { min-width: 100% !important; width: 100% !important; }
|
|
298
|
+
.w-1-3-fixed { min-width: 33.333333% !important; width: 33.333333% !important; }
|
|
299
|
+
.w-2-3-fixed { min-width: 66.666667% !important; width: 66.666667% !important; }
|
|
345
300
|
|
|
346
301
|
// Height utilities
|
|
347
302
|
.h-25 {
|
|
@@ -426,6 +381,30 @@ $spacers: (
|
|
|
426
381
|
border-left: 0 !important;
|
|
427
382
|
}
|
|
428
383
|
|
|
384
|
+
// Border style utilities
|
|
385
|
+
.border-solid { border-style: solid !important; }
|
|
386
|
+
.border-dashed { border-style: dashed !important; }
|
|
387
|
+
.border-dotted { border-style: dotted !important; }
|
|
388
|
+
.border-none { border-style: none !important; }
|
|
389
|
+
|
|
390
|
+
// Text color utilities (semantic colors)
|
|
391
|
+
.text-primary { color: var(--pa-accent) !important; }
|
|
392
|
+
.text-success { color: var(--pa-success-text) !important; }
|
|
393
|
+
.text-danger { color: var(--pa-danger-text) !important; }
|
|
394
|
+
.text-warning { color: var(--pa-warning-text) !important; }
|
|
395
|
+
.text-info { color: var(--pa-info-text) !important; }
|
|
396
|
+
|
|
397
|
+
// Text color utilities (theme custom colors 1-9)
|
|
398
|
+
.text-color-1 { color: var(--pa-color-1) !important; }
|
|
399
|
+
.text-color-2 { color: var(--pa-color-2) !important; }
|
|
400
|
+
.text-color-3 { color: var(--pa-color-3) !important; }
|
|
401
|
+
.text-color-4 { color: var(--pa-color-4) !important; }
|
|
402
|
+
.text-color-5 { color: var(--pa-color-5) !important; }
|
|
403
|
+
.text-color-6 { color: var(--pa-color-6) !important; }
|
|
404
|
+
.text-color-7 { color: var(--pa-color-7) !important; }
|
|
405
|
+
.text-color-8 { color: var(--pa-color-8) !important; }
|
|
406
|
+
.text-color-9 { color: var(--pa-color-9) !important; }
|
|
407
|
+
|
|
429
408
|
// Rounded utilities
|
|
430
409
|
.rounded {
|
|
431
410
|
border-radius: var(--border-radius) !important;
|
|
@@ -200,3 +200,18 @@ $code-syntax-property: #dd4a68 !default;
|
|
|
200
200
|
|
|
201
201
|
$comparison-accent-pink: #ec4899 !default;
|
|
202
202
|
$comparison-accent-orange: #f97316 !default;
|
|
203
|
+
|
|
204
|
+
// =============================================================================
|
|
205
|
+
// CUSTOM THEME COLOR SLOTS (1-9)
|
|
206
|
+
// Themes can override these to provide additional branded colors
|
|
207
|
+
// =============================================================================
|
|
208
|
+
|
|
209
|
+
$color-1: transparent !default;
|
|
210
|
+
$color-2: transparent !default;
|
|
211
|
+
$color-3: transparent !default;
|
|
212
|
+
$color-4: transparent !default;
|
|
213
|
+
$color-5: transparent !default;
|
|
214
|
+
$color-6: transparent !default;
|
|
215
|
+
$color-7: transparent !default;
|
|
216
|
+
$color-8: transparent !default;
|
|
217
|
+
$color-9: transparent !default;
|
|
@@ -266,6 +266,11 @@ $alert-info-bg: $info-bg-subtle !default;
|
|
|
266
266
|
$alert-info-border: $info-border !default;
|
|
267
267
|
$alert-info-text: $info-bg !default;
|
|
268
268
|
|
|
269
|
+
// ============================================================================
|
|
270
|
+
// CALLOUT SYSTEM
|
|
271
|
+
// ============================================================================
|
|
272
|
+
$callout-border-width: 0.4rem !default; // 4px left border accent
|
|
273
|
+
|
|
269
274
|
// ============================================================================
|
|
270
275
|
// STATS SYSTEM
|
|
271
276
|
// ============================================================================
|