@keenmate/pure-admin-core 2.3.1 → 2.3.2

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.
Files changed (69) hide show
  1. package/README.md +5 -5
  2. package/dist/css/main.css +187 -178
  3. package/package.json +1 -1
  4. package/snippets/buttons.html +375 -365
  5. package/src/scss/_base-css-variables.scss +8 -0
  6. package/src/scss/_core.scss +121 -121
  7. package/src/scss/core-components/_alerts.scss +227 -227
  8. package/src/scss/core-components/_badges.scss +16 -16
  9. package/src/scss/core-components/_base.scss +125 -125
  10. package/src/scss/core-components/_buttons.scss +31 -16
  11. package/src/scss/core-components/_callouts.scss +152 -152
  12. package/src/scss/core-components/_cards.scss +488 -488
  13. package/src/scss/core-components/_checkbox-lists.scss +289 -289
  14. package/src/scss/core-components/_code.scss +141 -141
  15. package/src/scss/core-components/_command-palette.scss +509 -509
  16. package/src/scss/core-components/_comparison.scss +172 -172
  17. package/src/scss/core-components/_data-display.scss +9 -9
  18. package/src/scss/core-components/_data-viz.scss +9 -9
  19. package/src/scss/core-components/_detail-panel.scss +1 -1
  20. package/src/scss/core-components/_file-selector.scss +780 -780
  21. package/src/scss/core-components/_filter-card.scss +58 -58
  22. package/src/scss/core-components/_forms.scss +16 -16
  23. package/src/scss/core-components/_grid.scss +293 -293
  24. package/src/scss/core-components/_layout.scss +15 -15
  25. package/src/scss/core-components/_lists.scss +211 -211
  26. package/src/scss/core-components/_loaders.scss +277 -277
  27. package/src/scss/core-components/_logic-tree.scss +280 -280
  28. package/src/scss/core-components/_modals.scss +203 -203
  29. package/src/scss/core-components/_notifications.scss +320 -320
  30. package/src/scss/core-components/_pagers.scss +141 -141
  31. package/src/scss/core-components/_popconfirm.scss +170 -170
  32. package/src/scss/core-components/_profile.scss +405 -405
  33. package/src/scss/core-components/_scrollbars.scss +40 -40
  34. package/src/scss/core-components/_settings-panel.scss +141 -141
  35. package/src/scss/core-components/_statistics.scss +200 -201
  36. package/src/scss/core-components/_tables.scss +900 -900
  37. package/src/scss/core-components/_tabs.scss +504 -504
  38. package/src/scss/core-components/_timeline.scss +589 -589
  39. package/src/scss/core-components/_toasts.scss +425 -425
  40. package/src/scss/core-components/_tooltips.scss +605 -605
  41. package/src/scss/core-components/_utilities.scss +1 -1
  42. package/src/scss/core-components/_web-components-theme.scss +21 -21
  43. package/src/scss/core-components/badges/_badge-base.scss +121 -121
  44. package/src/scss/core-components/badges/_badge-group.scss +25 -25
  45. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
  46. package/src/scss/core-components/badges/_composite-badge.scss +70 -70
  47. package/src/scss/core-components/badges/_index.scss +10 -10
  48. package/src/scss/core-components/badges/_labels.scss +155 -155
  49. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
  50. package/src/scss/core-components/forms/_form-inputs.scss +3 -3
  51. package/src/scss/core-components/forms/_form-layout.scss +66 -66
  52. package/src/scss/core-components/forms/_form-states.scss +115 -115
  53. package/src/scss/core-components/forms/_index.scss +12 -12
  54. package/src/scss/core-components/forms/_input-groups.scss +154 -154
  55. package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
  56. package/src/scss/core-components/forms/_query-editor.scss +313 -313
  57. package/src/scss/core-components/layout/_index.scss +11 -11
  58. package/src/scss/core-components/layout/_layout-container.scss +168 -168
  59. package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
  60. package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
  61. package/src/scss/core-components/layout/_navbar.scss +83 -83
  62. package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
  63. package/src/scss/core-components/layout/_sidebar.scss +234 -234
  64. package/src/scss/main.scss +7 -7
  65. package/src/scss/utilities.scss +740 -740
  66. package/src/scss/variables/_base.scss +228 -228
  67. package/src/scss/variables/_components.scss +748 -748
  68. package/src/scss/variables/_layout.scss +65 -65
  69. package/src/scss/variables/_typography.scss +37 -37
@@ -1,320 +1,320 @@
1
- /* ========================================
2
- Notification Bell Component
3
- Bell button with badge counter and dropdown panel
4
- ======================================== */
5
- @use '../variables' as *;
6
-
7
- // ====================
8
- // Notification Bell Button
9
- // ====================
10
-
11
- .pa-notifications {
12
- position: relative;
13
- flex-shrink: 0;
14
- }
15
-
16
- .pa-notifications__btn {
17
- position: relative;
18
- display: flex;
19
- align-items: center;
20
- justify-content: center;
21
- width: 3.2rem;
22
- height: 3.2rem;
23
- background: none;
24
- border: none;
25
- border-radius: $border-radius;
26
- color: var(--pa-header-text);
27
- cursor: pointer;
28
- transition: background-color $transition-fast $easing-snappy;
29
-
30
- &:hover {
31
- background-color: var(--pa-accent-light);
32
- }
33
-
34
- &:focus {
35
- outline: $focus-outline-width solid var(--pa-accent);
36
- outline-offset: $focus-outline-offset;
37
- }
38
- }
39
-
40
- .pa-notifications__icon {
41
- font-size: $font-size-lg;
42
- line-height: 1;
43
- }
44
-
45
- // Badge counter on bell
46
- .pa-notifications__badge {
47
- position: absolute;
48
- top: 0.2rem;
49
- right: 0.2rem;
50
- min-width: 1.6rem;
51
- height: 1.6rem;
52
- padding: 0 0.4rem;
53
- background-color: $btn-danger-bg;
54
- color: $btn-danger-text;
55
- font-size: $font-size-2xs;
56
- font-weight: $font-weight-semibold;
57
- border-radius: 0.8rem;
58
- display: flex;
59
- align-items: center;
60
- justify-content: center;
61
- line-height: 1;
62
- }
63
-
64
- // ====================
65
- // Notification Panel (Dropdown)
66
- // ====================
67
-
68
- .pa-notifications__panel {
69
- position: absolute;
70
- top: calc(100% + $spacing-sm);
71
- right: 0;
72
- width: 35.2rem;
73
- max-height: 44.8rem;
74
- background-color: var(--pa-card-bg);
75
- border: $border-width-base solid var(--pa-border-color);
76
- border-radius: $border-radius;
77
- box-shadow: $shadow-2xl;
78
- z-index: $z-index-profile-panel; // Same as profile panel (5000)
79
- display: none;
80
- flex-direction: column;
81
- overflow: hidden;
82
-
83
- &.is-open {
84
- display: flex;
85
- }
86
- }
87
-
88
- // Panel header
89
- .pa-notifications__header {
90
- padding: $spacing-sm $spacing-base;
91
- border-bottom: $border-width-base solid var(--pa-border-color);
92
- display: flex;
93
- align-items: center;
94
- justify-content: space-between;
95
- gap: $spacing-base;
96
-
97
- h3 {
98
- margin: 0;
99
- font-size: $font-size-sm;
100
- font-weight: $font-weight-semibold;
101
- color: var(--pa-text-color-1);
102
- }
103
- }
104
-
105
- .pa-notifications__mark-read {
106
- background: none;
107
- border: none;
108
- padding: 0;
109
- color: $accent-color;
110
- font-size: $font-size-sm;
111
- font-weight: $font-weight-medium;
112
- cursor: pointer;
113
- transition: color $transition-fast $easing-snappy;
114
-
115
- &:hover {
116
- color: $accent-hover;
117
- }
118
- }
119
-
120
- // Notification list
121
- .pa-notifications__list {
122
- list-style: none;
123
- margin: 0;
124
- padding: 0;
125
- overflow-y: auto;
126
- flex: 1;
127
- }
128
-
129
- // Individual notification item
130
- .pa-notifications__item {
131
- display: flex;
132
- gap: $spacing-sm;
133
- padding: $spacing-sm $spacing-base;
134
- border-bottom: $border-width-base solid var(--pa-border-color);
135
- transition: background-color $transition-fast $easing-snappy;
136
- cursor: pointer;
137
-
138
- &:last-child {
139
- border-bottom: none;
140
- }
141
-
142
- &:hover {
143
- background-color: var(--pa-accent-light);
144
- }
145
-
146
- // Unread notification (darker background)
147
- &--unread {
148
- background-color: rgba($accent-color, 0.05);
149
-
150
- &:hover {
151
- background-color: rgba($accent-color, 0.1);
152
- }
153
- }
154
- }
155
-
156
- // Icon wrapper with color variants
157
- .pa-notifications__icon-wrapper {
158
- width: 3.2rem;
159
- height: 3.2rem;
160
- flex-shrink: 0;
161
- display: flex;
162
- align-items: center;
163
- justify-content: center;
164
- border-radius: 50%;
165
- font-size: $font-size-base;
166
- background-color: var(--pa-accent-light);
167
- color: var(--pa-accent);
168
-
169
- &--primary {
170
- background-color: rgba($btn-primary-bg, 0.1);
171
- color: $btn-primary-bg;
172
- }
173
-
174
- &--success {
175
- background-color: rgba($btn-success-bg, 0.1);
176
- color: $btn-success-bg;
177
- }
178
-
179
- &--warning {
180
- background-color: rgba($btn-warning-bg, 0.1);
181
- color: $btn-warning-bg;
182
- }
183
-
184
- &--danger {
185
- background-color: rgba($btn-danger-bg, 0.1);
186
- color: $btn-danger-bg;
187
- }
188
-
189
- &--secondary {
190
- background-color: rgba(var(--pa-text-color-2), 0.1);
191
- color: var(--pa-text-color-2);
192
- }
193
- }
194
-
195
- // Notification content
196
- .pa-notifications__content {
197
- flex: 1;
198
- min-width: 0;
199
-
200
- h4 {
201
- margin: 0 0 0.2rem 0;
202
- font-size: $font-size-xs;
203
- font-weight: $font-weight-semibold;
204
- color: var(--pa-text-color-1);
205
- }
206
-
207
- p {
208
- margin: 0 0 0.2rem 0;
209
- font-size: $font-size-xs;
210
- color: var(--pa-text-color-2);
211
- line-height: 1.3;
212
- overflow: hidden;
213
- text-overflow: ellipsis;
214
- display: -webkit-box;
215
- -webkit-line-clamp: 2;
216
- -webkit-box-orient: vertical;
217
- }
218
- }
219
-
220
- .pa-notifications__time {
221
- font-size: $font-size-2xs;
222
- color: var(--pa-text-color-2);
223
- font-weight: $font-weight-normal;
224
- opacity: 0.7;
225
- }
226
-
227
- // Panel footer
228
- .pa-notifications__footer {
229
- padding: $spacing-sm $spacing-base;
230
- border-top: $border-width-base solid var(--pa-border-color);
231
- text-align: center;
232
-
233
- a {
234
- color: $accent-color;
235
- font-size: $font-size-sm;
236
- font-weight: $font-weight-medium;
237
- text-decoration: none;
238
- transition: color $transition-fast $easing-snappy;
239
-
240
- &:hover {
241
- color: $accent-hover;
242
- }
243
- }
244
- }
245
-
246
- // Responsive adjustments
247
- @media (max-width: $mobile-breakpoint) {
248
- .pa-notifications__panel {
249
- width: calc(100vw - 3.2rem);
250
- max-width: 35.2rem;
251
- right: -$spacing-base; // Align to right edge of viewport
252
- }
253
- }
254
-
255
- // ====================
256
- // Page View Modifier
257
- // ====================
258
- // Larger variant for full-page notification list
259
-
260
- .pa-notifications__list--page {
261
- max-height: none;
262
- overflow: visible;
263
-
264
- .pa-notifications__item {
265
- padding: $spacing-base $spacing-lg;
266
- }
267
-
268
- .pa-notifications__icon-wrapper {
269
- width: 4rem;
270
- height: 4rem;
271
- font-size: $font-size-lg;
272
- }
273
-
274
- .pa-notifications__content {
275
- h4 {
276
- font-size: $font-size-sm;
277
- margin-bottom: $spacing-xs;
278
- }
279
-
280
- p {
281
- font-size: $font-size-sm;
282
- -webkit-line-clamp: 3;
283
- }
284
- }
285
-
286
- .pa-notifications__time {
287
- font-size: $font-size-xs;
288
- }
289
- }
290
-
291
- // Action buttons (for page view)
292
- .pa-notifications__actions {
293
- display: flex;
294
- gap: $spacing-xs;
295
- flex-shrink: 0;
296
- opacity: 0;
297
- transition: opacity $transition-fast $easing-snappy;
298
- }
299
-
300
- .pa-notifications__item:hover .pa-notifications__actions {
301
- opacity: 1;
302
- }
303
-
304
- // Mobile: always show actions
305
- @media (max-width: $mobile-breakpoint) {
306
- .pa-notifications__list--page {
307
- .pa-notifications__item {
308
- flex-wrap: wrap;
309
- }
310
-
311
- .pa-notifications__actions {
312
- opacity: 1;
313
- width: 100%;
314
- justify-content: flex-end;
315
- margin-top: $spacing-sm;
316
- padding-top: $spacing-sm;
317
- border-top: $border-width-base solid var(--pa-border-color);
318
- }
319
- }
320
- }
1
+ /* ========================================
2
+ Notification Bell Component
3
+ Bell button with badge counter and dropdown panel
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ // ====================
8
+ // Notification Bell Button
9
+ // ====================
10
+
11
+ .pa-notifications {
12
+ position: relative;
13
+ flex-shrink: 0;
14
+ }
15
+
16
+ .pa-notifications__btn {
17
+ position: relative;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ width: 3.2rem;
22
+ height: 3.2rem;
23
+ background: none;
24
+ border: none;
25
+ border-radius: var(--pa-border-radius);
26
+ color: var(--pa-header-text);
27
+ cursor: pointer;
28
+ transition: background-color $transition-fast $easing-snappy;
29
+
30
+ &:hover {
31
+ background-color: var(--pa-accent-light);
32
+ }
33
+
34
+ &:focus {
35
+ outline: $focus-outline-width solid var(--pa-accent);
36
+ outline-offset: $focus-outline-offset;
37
+ }
38
+ }
39
+
40
+ .pa-notifications__icon {
41
+ font-size: $font-size-lg;
42
+ line-height: 1;
43
+ }
44
+
45
+ // Badge counter on bell
46
+ .pa-notifications__badge {
47
+ position: absolute;
48
+ top: 0.2rem;
49
+ right: 0.2rem;
50
+ min-width: 1.6rem;
51
+ height: 1.6rem;
52
+ padding: 0 0.4rem;
53
+ background-color: $btn-danger-bg;
54
+ color: $btn-danger-text;
55
+ font-size: $font-size-2xs;
56
+ font-weight: $font-weight-semibold;
57
+ border-radius: 0.8rem;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ line-height: 1;
62
+ }
63
+
64
+ // ====================
65
+ // Notification Panel (Dropdown)
66
+ // ====================
67
+
68
+ .pa-notifications__panel {
69
+ position: absolute;
70
+ top: calc(100% + $spacing-sm);
71
+ right: 0;
72
+ width: 35.2rem;
73
+ max-height: 44.8rem;
74
+ background-color: var(--pa-card-bg);
75
+ border: $border-width-base solid var(--pa-border-color);
76
+ border-radius: var(--pa-border-radius);
77
+ box-shadow: $shadow-2xl;
78
+ z-index: $z-index-profile-panel; // Same as profile panel (5000)
79
+ display: none;
80
+ flex-direction: column;
81
+ overflow: hidden;
82
+
83
+ &.is-open {
84
+ display: flex;
85
+ }
86
+ }
87
+
88
+ // Panel header
89
+ .pa-notifications__header {
90
+ padding: $spacing-sm $spacing-base;
91
+ border-bottom: $border-width-base solid var(--pa-border-color);
92
+ display: flex;
93
+ align-items: center;
94
+ justify-content: space-between;
95
+ gap: $spacing-base;
96
+
97
+ h3 {
98
+ margin: 0;
99
+ font-size: $font-size-sm;
100
+ font-weight: $font-weight-semibold;
101
+ color: var(--pa-text-color-1);
102
+ }
103
+ }
104
+
105
+ .pa-notifications__mark-read {
106
+ background: none;
107
+ border: none;
108
+ padding: 0;
109
+ color: $accent-color;
110
+ font-size: $font-size-sm;
111
+ font-weight: $font-weight-medium;
112
+ cursor: pointer;
113
+ transition: color $transition-fast $easing-snappy;
114
+
115
+ &:hover {
116
+ color: $accent-hover;
117
+ }
118
+ }
119
+
120
+ // Notification list
121
+ .pa-notifications__list {
122
+ list-style: none;
123
+ margin: 0;
124
+ padding: 0;
125
+ overflow-y: auto;
126
+ flex: 1;
127
+ }
128
+
129
+ // Individual notification item
130
+ .pa-notifications__item {
131
+ display: flex;
132
+ gap: $spacing-sm;
133
+ padding: $spacing-sm $spacing-base;
134
+ border-bottom: $border-width-base solid var(--pa-border-color);
135
+ transition: background-color $transition-fast $easing-snappy;
136
+ cursor: pointer;
137
+
138
+ &:last-child {
139
+ border-bottom: none;
140
+ }
141
+
142
+ &:hover {
143
+ background-color: var(--pa-accent-light);
144
+ }
145
+
146
+ // Unread notification (darker background)
147
+ &--unread {
148
+ background-color: rgba($accent-color, 0.05);
149
+
150
+ &:hover {
151
+ background-color: rgba($accent-color, 0.1);
152
+ }
153
+ }
154
+ }
155
+
156
+ // Icon wrapper with color variants
157
+ .pa-notifications__icon-wrapper {
158
+ width: 3.2rem;
159
+ height: 3.2rem;
160
+ flex-shrink: 0;
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: center;
164
+ border-radius: 50%;
165
+ font-size: $font-size-base;
166
+ background-color: var(--pa-accent-light);
167
+ color: var(--pa-accent);
168
+
169
+ &--primary {
170
+ background-color: rgba($btn-primary-bg, 0.1);
171
+ color: $btn-primary-bg;
172
+ }
173
+
174
+ &--success {
175
+ background-color: rgba($btn-success-bg, 0.1);
176
+ color: $btn-success-bg;
177
+ }
178
+
179
+ &--warning {
180
+ background-color: rgba($btn-warning-bg, 0.1);
181
+ color: $btn-warning-bg;
182
+ }
183
+
184
+ &--danger {
185
+ background-color: rgba($btn-danger-bg, 0.1);
186
+ color: $btn-danger-bg;
187
+ }
188
+
189
+ &--secondary {
190
+ background-color: rgba(var(--pa-text-color-2), 0.1);
191
+ color: var(--pa-text-color-2);
192
+ }
193
+ }
194
+
195
+ // Notification content
196
+ .pa-notifications__content {
197
+ flex: 1;
198
+ min-width: 0;
199
+
200
+ h4 {
201
+ margin: 0 0 0.2rem 0;
202
+ font-size: $font-size-xs;
203
+ font-weight: $font-weight-semibold;
204
+ color: var(--pa-text-color-1);
205
+ }
206
+
207
+ p {
208
+ margin: 0 0 0.2rem 0;
209
+ font-size: $font-size-xs;
210
+ color: var(--pa-text-color-2);
211
+ line-height: 1.3;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ display: -webkit-box;
215
+ -webkit-line-clamp: 2;
216
+ -webkit-box-orient: vertical;
217
+ }
218
+ }
219
+
220
+ .pa-notifications__time {
221
+ font-size: $font-size-2xs;
222
+ color: var(--pa-text-color-2);
223
+ font-weight: $font-weight-normal;
224
+ opacity: 0.7;
225
+ }
226
+
227
+ // Panel footer
228
+ .pa-notifications__footer {
229
+ padding: $spacing-sm $spacing-base;
230
+ border-top: $border-width-base solid var(--pa-border-color);
231
+ text-align: center;
232
+
233
+ a {
234
+ color: $accent-color;
235
+ font-size: $font-size-sm;
236
+ font-weight: $font-weight-medium;
237
+ text-decoration: none;
238
+ transition: color $transition-fast $easing-snappy;
239
+
240
+ &:hover {
241
+ color: $accent-hover;
242
+ }
243
+ }
244
+ }
245
+
246
+ // Responsive adjustments
247
+ @media (max-width: $mobile-breakpoint) {
248
+ .pa-notifications__panel {
249
+ width: calc(100vw - 3.2rem);
250
+ max-width: 35.2rem;
251
+ right: -$spacing-base; // Align to right edge of viewport
252
+ }
253
+ }
254
+
255
+ // ====================
256
+ // Page View Modifier
257
+ // ====================
258
+ // Larger variant for full-page notification list
259
+
260
+ .pa-notifications__list--page {
261
+ max-height: none;
262
+ overflow: visible;
263
+
264
+ .pa-notifications__item {
265
+ padding: $spacing-base $spacing-lg;
266
+ }
267
+
268
+ .pa-notifications__icon-wrapper {
269
+ width: 4rem;
270
+ height: 4rem;
271
+ font-size: $font-size-lg;
272
+ }
273
+
274
+ .pa-notifications__content {
275
+ h4 {
276
+ font-size: $font-size-sm;
277
+ margin-bottom: $spacing-xs;
278
+ }
279
+
280
+ p {
281
+ font-size: $font-size-sm;
282
+ -webkit-line-clamp: 3;
283
+ }
284
+ }
285
+
286
+ .pa-notifications__time {
287
+ font-size: $font-size-xs;
288
+ }
289
+ }
290
+
291
+ // Action buttons (for page view)
292
+ .pa-notifications__actions {
293
+ display: flex;
294
+ gap: $spacing-xs;
295
+ flex-shrink: 0;
296
+ opacity: 0;
297
+ transition: opacity $transition-fast $easing-snappy;
298
+ }
299
+
300
+ .pa-notifications__item:hover .pa-notifications__actions {
301
+ opacity: 1;
302
+ }
303
+
304
+ // Mobile: always show actions
305
+ @media (max-width: $mobile-breakpoint) {
306
+ .pa-notifications__list--page {
307
+ .pa-notifications__item {
308
+ flex-wrap: wrap;
309
+ }
310
+
311
+ .pa-notifications__actions {
312
+ opacity: 1;
313
+ width: 100%;
314
+ justify-content: flex-end;
315
+ margin-top: $spacing-sm;
316
+ padding-top: $spacing-sm;
317
+ border-top: $border-width-base solid var(--pa-border-color);
318
+ }
319
+ }
320
+ }