@keenmate/pure-admin-core 1.1.0 → 1.1.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.
- package/README.md +8 -0
- package/dist/css/main.css +197 -228
- package/package.json +1 -1
- package/snippets/buttons.html +12 -0
- package/snippets/forms.html +65 -8
- package/snippets/manifest.json +329 -169
- package/src/scss/core-components/_utilities.scss +10 -0
- package/src/scss/core-components/_web-components-theme.scss +14 -287
- package/src/scss/core-components/forms/_form-inputs.scss +29 -0
- package/src/scss/core-components/forms/_form-states.scss +26 -0
|
@@ -260,6 +260,16 @@ html.font-size-4xl {
|
|
|
260
260
|
white-space: nowrap;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
// Link styling
|
|
264
|
+
.pa-link {
|
|
265
|
+
color: $accent-color;
|
|
266
|
+
text-decoration: none;
|
|
267
|
+
|
|
268
|
+
&:hover {
|
|
269
|
+
text-decoration: underline;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
263
273
|
// Component showcase styling
|
|
264
274
|
.component-showcase {
|
|
265
275
|
display: flex;
|
|
@@ -2,293 +2,20 @@
|
|
|
2
2
|
* Maps Pure Admin SCSS variables to web component CSS custom properties
|
|
3
3
|
*
|
|
4
4
|
* @keenmate/web-multiselect: Uses --base-* variables from _base-css-variables.scss
|
|
5
|
-
* @keenmate/web-daterangepicker: Uses --
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
* @keenmate/web-daterangepicker: Uses --base-* variables from _base-css-variables.scss
|
|
6
|
+
*
|
|
7
|
+
* NOTE: Both components use the --base-* CSS variable system with built-in fallback chains:
|
|
8
|
+
* 1. External override: --ms-accent-color: #custom
|
|
9
|
+
* 2. Theme base value: var(--base-accent-color)
|
|
10
|
+
* 3. Hardcoded default: #3b82f6
|
|
11
|
+
*
|
|
12
|
+
* This means Pure Admin only needs to set --base-* variables (via the
|
|
13
|
+
* output-base-css-variables mixin) and the components will automatically
|
|
14
|
+
* pick up the theme colors.
|
|
9
15
|
*/
|
|
10
16
|
|
|
11
|
-
/*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
NOTE: Variables set directly on web-daterangepicker
|
|
16
|
-
element to pierce shadow DOM (custom properties
|
|
17
|
-
cascade into shadow DOM when set on host element)
|
|
18
|
-
======================================== */
|
|
19
|
-
|
|
20
|
-
web-daterangepicker {
|
|
21
|
-
/* ===== BASE PRIMITIVES ===== */
|
|
22
|
-
|
|
23
|
-
/* Colors */
|
|
24
|
-
--drp-accent-color: #{$accent-color};
|
|
25
|
-
--drp-primary-bg: #{$btn-primary-bg};
|
|
26
|
-
--drp-primary-bg-hover: #{$btn-primary-bg-hover};
|
|
27
|
-
--drp-text-primary: var(--pa-text-color-1);
|
|
28
|
-
--drp-text-secondary: var(--pa-text-color-2);
|
|
29
|
-
--drp-border-color: #{$border-color};
|
|
30
|
-
--drp-card-bg: var(--pa-card-bg);
|
|
31
|
-
--drp-hover-bg: #{$table-hover-bg};
|
|
32
|
-
|
|
33
|
-
/* Spacing */
|
|
34
|
-
--drp-spacing-xs: #{$spacing-xs};
|
|
35
|
-
--drp-spacing-sm: #{$spacing-sm};
|
|
36
|
-
--drp-spacing-md: #{$spacing-md};
|
|
37
|
-
--drp-spacing-base: #{$spacing-base};
|
|
38
|
-
--drp-spacing-lg: #{$spacing-lg};
|
|
39
|
-
--drp-spacing-xl: #{$spacing-xl};
|
|
40
|
-
|
|
41
|
-
/* Typography */
|
|
42
|
-
--drp-font-size-xs: #{$font-size-xs};
|
|
43
|
-
--drp-font-size-sm: #{$font-size-sm};
|
|
44
|
-
--drp-font-size-base: #{$font-size-base};
|
|
45
|
-
--drp-font-size-lg: #{$font-size-lg};
|
|
46
|
-
--drp-font-weight-normal: #{$font-weight-normal};
|
|
47
|
-
--drp-font-weight-medium: #{$font-weight-medium};
|
|
48
|
-
--drp-font-weight-semibold: #{$font-weight-semibold};
|
|
49
|
-
|
|
50
|
-
/* Animations */
|
|
51
|
-
--drp-transition-fast: #{$transition-fast};
|
|
52
|
-
--drp-transition-normal: #{$transition-normal};
|
|
53
|
-
--drp-easing-snappy: #{$easing-snappy};
|
|
54
|
-
--drp-easing-smooth: #{$easing-smooth};
|
|
55
|
-
|
|
56
|
-
/* Shadows */
|
|
57
|
-
--drp-shadow-sm: #{$shadow-sm};
|
|
58
|
-
--drp-shadow-md: #{$shadow-md};
|
|
59
|
-
--drp-shadow-lg: #{$shadow-lg};
|
|
60
|
-
--drp-shadow-xl: #{$shadow-xl};
|
|
61
|
-
|
|
62
|
-
/* Border radius */
|
|
63
|
-
--drp-border-radius: #{$border-radius};
|
|
64
|
-
--drp-border-radius-sm: #{$border-radius-sm};
|
|
65
|
-
--drp-border-radius-lg: #{$border-radius-lg};
|
|
66
|
-
|
|
67
|
-
/* Border width */
|
|
68
|
-
--drp-border-width-base: #{$border-width-base};
|
|
69
|
-
--drp-border-width-medium: #{$border-width-medium};
|
|
70
|
-
|
|
71
|
-
/* ===== INPUT FIELD SEMANTIC VARIABLES ===== */
|
|
72
|
-
|
|
73
|
-
/* Input colors */
|
|
74
|
-
--drp-input-background: var(--pa-input-bg);
|
|
75
|
-
--drp-input-color: var(--pa-text-color-1);
|
|
76
|
-
--drp-input-border-color: #{$input-border};
|
|
77
|
-
--drp-input-border-color-hover: #{$accent-color};
|
|
78
|
-
--drp-input-border-color-focus: #{$accent-color};
|
|
79
|
-
--drp-input-placeholder-color: var(--pa-text-color-2);
|
|
80
|
-
--drp-input-disabled-background: var(--pa-input-bg);
|
|
81
|
-
--drp-input-disabled-color: var(--pa-text-color-2);
|
|
82
|
-
|
|
83
|
-
/* Input focus effects */
|
|
84
|
-
--drp-input-focus-shadow-color: #{$accent-light};
|
|
85
|
-
--drp-input-focus-shadow-size: #{$focus-ring-width};
|
|
86
|
-
|
|
87
|
-
/* Input icon */
|
|
88
|
-
--drp-input-icon-color: var(--pa-text-color-2);
|
|
89
|
-
--drp-input-icon-opacity: 1;
|
|
90
|
-
|
|
91
|
-
/* Input size variants - matched to Pure Admin .pa-input sizes (10px base)
|
|
92
|
-
Heights: xs=31px, sm=33px, md=35px, lg=38px, xl=41px */
|
|
93
|
-
|
|
94
|
-
/* Extra Small (31px) */
|
|
95
|
-
--drp-input-size-xs-font: #{$font-size-xs};
|
|
96
|
-
--drp-input-size-xs-padding-v: #{$input-padding-v};
|
|
97
|
-
--drp-input-size-xs-padding-h: #{$input-padding-h};
|
|
98
|
-
--drp-input-size-xs-height: 3.1rem; /* 31px (10px base) */
|
|
99
|
-
--drp-input-size-xs-icon-size: 1.2rem; /* 12px (10px base) */
|
|
100
|
-
|
|
101
|
-
/* Small (33px - same height as xs, slightly larger icon) */
|
|
102
|
-
--drp-input-size-sm-font: #{$font-size-xs};
|
|
103
|
-
--drp-input-size-sm-padding-v: #{$input-padding-v};
|
|
104
|
-
--drp-input-size-sm-padding-h: #{$input-padding-h};
|
|
105
|
-
--drp-input-size-sm-height: 3.3rem; /* 33px (10px base) */
|
|
106
|
-
--drp-input-size-sm-icon-size: 1.4rem; /* 14px (10px base) */
|
|
107
|
-
|
|
108
|
-
/* Medium/Default (maps to pa-input: 35px) */
|
|
109
|
-
--drp-input-size-md-font: #{$font-size-sm};
|
|
110
|
-
--drp-input-size-md-padding-v: #{$input-padding-v};
|
|
111
|
-
--drp-input-size-md-padding-h: #{$input-padding-h};
|
|
112
|
-
--drp-input-size-md-height: 3.5rem; /* 35px (10px base) */
|
|
113
|
-
--drp-input-size-md-icon-size: 1.6rem; /* 16px (10px base) */
|
|
114
|
-
|
|
115
|
-
/* Large (maps to pa-input--lg: 38px) */
|
|
116
|
-
--drp-input-size-lg-font: #{$font-size-base};
|
|
117
|
-
--drp-input-size-lg-padding-v: #{$input-padding-v};
|
|
118
|
-
--drp-input-size-lg-padding-h: #{$input-padding-h};
|
|
119
|
-
--drp-input-size-lg-height: 3.8rem; /* 38px (10px base) */
|
|
120
|
-
--drp-input-size-lg-icon-size: 1.8rem; /* 18px (10px base) */
|
|
121
|
-
|
|
122
|
-
/* Extra Large (maps to pa-input--xl: 41px) */
|
|
123
|
-
--drp-input-size-xl-font: #{$font-size-lg};
|
|
124
|
-
--drp-input-size-xl-padding-v: #{$input-padding-v};
|
|
125
|
-
--drp-input-size-xl-padding-h: #{$input-padding-h};
|
|
126
|
-
--drp-input-size-xl-height: 4.1rem; /* 41px (10px base) */
|
|
127
|
-
--drp-input-size-xl-icon-size: 2rem; /* 20px (10px base) */
|
|
128
|
-
|
|
129
|
-
/* ===== CALENDAR CONTAINER ===== */
|
|
130
|
-
|
|
131
|
-
--drp-calendar-bg: var(--pa-card-bg);
|
|
132
|
-
--drp-calendar-border: #{$border-color};
|
|
133
|
-
--drp-calendar-shadow: #{$shadow-xl};
|
|
134
|
-
--drp-calendar-border-radius: #{$border-radius};
|
|
135
|
-
--drp-calendar-padding: #{$spacing-base};
|
|
136
|
-
--drp-calendar-z-index: #{$z-index-dropdown};
|
|
137
|
-
|
|
138
|
-
/* ===== HEADER ===== */
|
|
139
|
-
|
|
140
|
-
--drp-header-padding: #{$spacing-sm} #{$spacing-md};
|
|
141
|
-
--drp-header-font-size: #{$font-size-base};
|
|
142
|
-
--drp-header-font-weight: #{$font-weight-semibold};
|
|
143
|
-
--drp-header-text-color: var(--pa-text-color-1);
|
|
144
|
-
--drp-header-bg-hover: #{$accent-hover};
|
|
145
|
-
--drp-header-bg-active: #{$accent-light};
|
|
146
|
-
|
|
147
|
-
/* ===== NAVIGATION ===== */
|
|
148
|
-
|
|
149
|
-
--drp-nav-btn-size: 3.2rem; /* 32px (10px base) */
|
|
150
|
-
--drp-nav-text-color: var(--pa-text-color-1);
|
|
151
|
-
--drp-nav-border-color: #{$border-color};
|
|
152
|
-
--drp-nav-bg-hover: #{$accent-hover};
|
|
153
|
-
--drp-nav-bg-active: #{$accent-light};
|
|
154
|
-
--drp-nav-border-hover: #{$accent-color};
|
|
155
|
-
|
|
156
|
-
/* ===== WEEKDAY HEADER ===== */
|
|
157
|
-
|
|
158
|
-
--drp-weekday-font-size: #{$font-size-xs};
|
|
159
|
-
--drp-weekday-font-weight: #{$font-weight-semibold};
|
|
160
|
-
--drp-weekday-color: var(--pa-text-color-2);
|
|
161
|
-
--drp-weekday-padding: #{$spacing-xs};
|
|
162
|
-
|
|
163
|
-
/* ===== CALENDAR GRID ===== */
|
|
164
|
-
|
|
165
|
-
--drp-day-size: 3.6rem; /* 36px (10px base) */
|
|
166
|
-
--drp-day-font-size: #{$font-size-sm};
|
|
167
|
-
--drp-day-border-radius: #{$border-radius-sm};
|
|
168
|
-
|
|
169
|
-
/* Day states */
|
|
170
|
-
--drp-day-text-color: var(--pa-text-color-1);
|
|
171
|
-
--drp-day-bg-hover: #{$accent-hover};
|
|
172
|
-
--drp-day-border-hover: transparent;
|
|
173
|
-
|
|
174
|
-
/* Today indicator */
|
|
175
|
-
--drp-day-today-border: #{$accent-color};
|
|
176
|
-
|
|
177
|
-
/* Selected state */
|
|
178
|
-
--drp-day-selected-bg: #{$accent-color};
|
|
179
|
-
--drp-day-selected-color: #ffffff;
|
|
180
|
-
|
|
181
|
-
/* Range state */
|
|
182
|
-
--drp-day-range-bg: #{$accent-light};
|
|
183
|
-
--drp-day-range-text: var(--pa-text-color-1);
|
|
184
|
-
|
|
185
|
-
/* Focused state */
|
|
186
|
-
--drp-day-focused-outline: #{$accent-color};
|
|
187
|
-
|
|
188
|
-
/* Disabled state */
|
|
189
|
-
--drp-day-disabled-color: var(--pa-text-color-2);
|
|
190
|
-
--drp-day-disabled-opacity: #{$opacity-disabled};
|
|
191
|
-
|
|
192
|
-
/* Other month */
|
|
193
|
-
--drp-day-other-month-color: var(--pa-text-color-2);
|
|
194
|
-
--drp-day-other-month-opacity: #{$opacity-muted};
|
|
195
|
-
|
|
196
|
-
/* ===== BADGES ===== */
|
|
197
|
-
|
|
198
|
-
/* Dot badges (original style) */
|
|
199
|
-
--drp-badge-size: 0.6rem; /* 6px (10px base) */
|
|
200
|
-
--drp-badge-primary: #{$btn-primary-bg};
|
|
201
|
-
--drp-badge-success: #{$success-bg};
|
|
202
|
-
--drp-badge-warning: #{$warning-bg};
|
|
203
|
-
--drp-badge-danger: #{$danger-bg};
|
|
204
|
-
--drp-badge-info: #{$info-bg};
|
|
205
|
-
|
|
206
|
-
/* Number badges */
|
|
207
|
-
--drp-badge-number-bg: #{$danger-bg};
|
|
208
|
-
--drp-badge-number-color: #ffffff;
|
|
209
|
-
|
|
210
|
-
/* Count badges */
|
|
211
|
-
--drp-badge-count-bg: #{$accent-color};
|
|
212
|
-
--drp-badge-count-color: #ffffff;
|
|
213
|
-
|
|
214
|
-
/* Text badges */
|
|
215
|
-
--drp-badge-text-bg: #{$accent-light};
|
|
216
|
-
--drp-badge-text-color: var(--pa-text-color-1);
|
|
217
|
-
|
|
218
|
-
/* ===== SUMMARY BAR ===== */
|
|
219
|
-
|
|
220
|
-
--drp-summary-bg: #{$card-header-bg};
|
|
221
|
-
--drp-summary-border-color: #{$border-color};
|
|
222
|
-
--drp-summary-text-color: var(--pa-text-color-1);
|
|
223
|
-
--drp-summary-count-color: #{$accent-color};
|
|
224
|
-
--drp-summary-padding: #{$spacing-sm} #{$spacing-md};
|
|
225
|
-
--drp-summary-font-size: #{$font-size-sm};
|
|
226
|
-
--drp-summary-font-weight: #{$font-weight-medium};
|
|
227
|
-
|
|
228
|
-
/* ===== BUTTONS ===== */
|
|
229
|
-
|
|
230
|
-
/* Today button */
|
|
231
|
-
--drp-button-today-bg: #{$btn-secondary-bg};
|
|
232
|
-
--drp-button-today-bg-hover: #{$btn-secondary-bg-hover};
|
|
233
|
-
--drp-button-today-color: #{$btn-secondary-text};
|
|
234
|
-
--drp-button-today-border: #{$border-color};
|
|
235
|
-
|
|
236
|
-
/* Clear button */
|
|
237
|
-
--drp-button-clear-bg: #{$btn-secondary-bg};
|
|
238
|
-
--drp-button-clear-bg-hover: #{$btn-secondary-bg-hover};
|
|
239
|
-
--drp-button-clear-color: #{$btn-secondary-text};
|
|
240
|
-
--drp-button-clear-border: #{$border-color};
|
|
241
|
-
|
|
242
|
-
/* Cancel button */
|
|
243
|
-
--drp-button-cancel-bg: #{$btn-secondary-bg};
|
|
244
|
-
--drp-button-cancel-bg-hover: #{$btn-secondary-bg-hover};
|
|
245
|
-
--drp-button-cancel-color: #{$btn-secondary-text};
|
|
246
|
-
--drp-button-cancel-border: #{$border-color};
|
|
247
|
-
|
|
248
|
-
/* Apply button */
|
|
249
|
-
--drp-button-apply-bg: #{$btn-primary-bg};
|
|
250
|
-
--drp-button-apply-bg-hover: #{$btn-primary-bg-hover};
|
|
251
|
-
--drp-button-apply-color: #{$btn-primary-text};
|
|
252
|
-
--drp-button-apply-border: #{$btn-primary-bg};
|
|
253
|
-
|
|
254
|
-
/* Button sizing */
|
|
255
|
-
--drp-button-padding: #{$btn-padding-sm-v} #{$btn-padding-sm-h};
|
|
256
|
-
--drp-button-font-size: #{$font-size-sm};
|
|
257
|
-
--drp-button-border-radius: #{$border-radius};
|
|
258
|
-
--drp-button-gap: #{$spacing-sm};
|
|
259
|
-
|
|
260
|
-
/* ===== UNIFIED NAVIGATION ===== */
|
|
261
|
-
|
|
262
|
-
/* Range selectors in unified nav */
|
|
263
|
-
--drp-unified-range-text-color: var(--pa-text-color-1);
|
|
264
|
-
--drp-unified-range-bg-hover: #{$accent-hover};
|
|
265
|
-
--drp-unified-range-bg-active: #{$accent-light};
|
|
266
|
-
|
|
267
|
-
/* Month/Year display */
|
|
268
|
-
--drp-unified-month-color: var(--pa-text-color-1);
|
|
269
|
-
|
|
270
|
-
/* Rolling selector disabled state */
|
|
271
|
-
--drp-unified-rolling-disabled-color: var(--pa-text-color-2);
|
|
272
|
-
|
|
273
|
-
/* ===== ROLLING SELECTOR ===== */
|
|
274
|
-
|
|
275
|
-
--drp-rolling-bg: var(--pa-card-bg);
|
|
276
|
-
--drp-rolling-border: #{$border-color};
|
|
277
|
-
--drp-rolling-shadow: #{$shadow-md};
|
|
278
|
-
--drp-rolling-item-hover-bg: #{$accent-hover};
|
|
279
|
-
--drp-rolling-item-selected-bg: #{$accent-color};
|
|
280
|
-
--drp-rolling-item-selected-text: #ffffff;
|
|
281
|
-
--drp-rolling-font-size: #{$font-size-sm};
|
|
282
|
-
--drp-rolling-item-text-color: var(--pa-text-color-1);
|
|
283
|
-
--drp-rolling-item-disabled-color: var(--pa-text-color-2);
|
|
284
|
-
|
|
285
|
-
/* ===== LOADING OVERLAY ===== */
|
|
286
|
-
|
|
287
|
-
--drp-loading-bg: rgba(255, 255, 255, 0.8);
|
|
288
|
-
--drp-loading-spinner-color: #{$accent-color};
|
|
289
|
-
--drp-loading-spinner-size: #{$spinner-size};
|
|
290
|
-
|
|
291
|
-
/* ===== MULTIPLE MONTHS ===== */
|
|
292
|
-
|
|
293
|
-
--drp-months-gap: #{$spacing-lg};
|
|
17
|
+
/* Web Multiselect - Group label styling */
|
|
18
|
+
web-multiselect {
|
|
19
|
+
--ms-group-label-color: var(--base-text-color-1);
|
|
20
|
+
--ms-group-label-font-weight: 600;
|
|
294
21
|
}
|
|
@@ -92,6 +92,35 @@
|
|
|
92
92
|
font-size: $font-size-lg;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
// Textarea Sizes - height sets initial size, min-height prevents shrinking below that
|
|
96
|
+
.pa-textarea--xs {
|
|
97
|
+
height: 4rem;
|
|
98
|
+
min-height: 4rem;
|
|
99
|
+
padding: $input-padding-xs-v $input-padding-h;
|
|
100
|
+
font-size: $font-size-xs;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.pa-textarea--sm {
|
|
104
|
+
height: 6rem;
|
|
105
|
+
min-height: 6rem;
|
|
106
|
+
padding: $input-padding-v $input-padding-h;
|
|
107
|
+
font-size: $font-size-sm;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.pa-textarea--lg {
|
|
111
|
+
height: 12rem;
|
|
112
|
+
min-height: 12rem;
|
|
113
|
+
padding: $input-padding-v $input-padding-h;
|
|
114
|
+
font-size: $font-size-base;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.pa-textarea--xl {
|
|
118
|
+
height: 16rem;
|
|
119
|
+
min-height: 16rem;
|
|
120
|
+
padding: $input-padding-v $input-padding-h;
|
|
121
|
+
font-size: $font-size-lg;
|
|
122
|
+
}
|
|
123
|
+
|
|
95
124
|
// Dark mode: invert native date/time picker icons for visibility
|
|
96
125
|
.pa-mode-dark {
|
|
97
126
|
input[type="date"],
|
|
@@ -86,4 +86,30 @@
|
|
|
86
86
|
&--success {
|
|
87
87
|
color: var(--pa-success-bg);
|
|
88
88
|
}
|
|
89
|
+
|
|
90
|
+
&--warning {
|
|
91
|
+
color: var(--pa-warning-bg);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Theme Color Variants for Help Text (color-1 through color-9)
|
|
96
|
+
@for $i from 1 through 9 {
|
|
97
|
+
.pa-form-help--color-#{$i} {
|
|
98
|
+
color: var(--pa-color-#{$i});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Theme Color Variants for Inputs (color-1 through color-9)
|
|
103
|
+
// These use theme-customizable colors from --pa-color-* CSS variables
|
|
104
|
+
@for $i from 1 through 9 {
|
|
105
|
+
.pa-input--color-#{$i},
|
|
106
|
+
.pa-select--color-#{$i},
|
|
107
|
+
.pa-textarea--color-#{$i} {
|
|
108
|
+
border-color: var(--pa-color-#{$i});
|
|
109
|
+
|
|
110
|
+
&:focus {
|
|
111
|
+
border-color: var(--pa-color-#{$i});
|
|
112
|
+
box-shadow: 0 0 0 $focus-ring-width color-mix(in srgb, var(--pa-color-#{$i}) 25%, transparent);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
89
115
|
}
|