@keenmate/pure-admin-core 2.3.0 → 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.
- package/README.md +7 -5
- package/dist/css/main.css +207 -181
- package/package.json +1 -1
- package/snippets/buttons.html +375 -365
- package/src/scss/_base-css-variables.scss +8 -0
- package/src/scss/_core.scss +121 -121
- package/src/scss/core-components/_alerts.scss +227 -227
- package/src/scss/core-components/_badges.scss +16 -16
- package/src/scss/core-components/_base.scss +125 -125
- package/src/scss/core-components/_buttons.scss +580 -548
- package/src/scss/core-components/_callouts.scss +152 -152
- package/src/scss/core-components/_cards.scss +488 -488
- package/src/scss/core-components/_checkbox-lists.scss +289 -289
- package/src/scss/core-components/_code.scss +141 -141
- package/src/scss/core-components/_command-palette.scss +509 -509
- package/src/scss/core-components/_comparison.scss +172 -172
- package/src/scss/core-components/_data-display.scss +9 -9
- package/src/scss/core-components/_data-viz.scss +9 -9
- package/src/scss/core-components/_detail-panel.scss +1 -1
- package/src/scss/core-components/_file-selector.scss +780 -780
- package/src/scss/core-components/_filter-card.scss +58 -58
- package/src/scss/core-components/_forms.scss +16 -16
- package/src/scss/core-components/_grid.scss +293 -293
- package/src/scss/core-components/_layout.scss +15 -15
- package/src/scss/core-components/_lists.scss +211 -211
- package/src/scss/core-components/_loaders.scss +277 -277
- package/src/scss/core-components/_logic-tree.scss +280 -280
- package/src/scss/core-components/_modals.scss +203 -203
- package/src/scss/core-components/_notifications.scss +320 -320
- package/src/scss/core-components/_pagers.scss +141 -141
- package/src/scss/core-components/_popconfirm.scss +170 -170
- package/src/scss/core-components/_profile.scss +405 -405
- package/src/scss/core-components/_scrollbars.scss +40 -40
- package/src/scss/core-components/_settings-panel.scss +141 -141
- package/src/scss/core-components/_statistics.scss +200 -201
- package/src/scss/core-components/_tables.scss +900 -900
- package/src/scss/core-components/_tabs.scss +504 -504
- package/src/scss/core-components/_timeline.scss +589 -589
- package/src/scss/core-components/_toasts.scss +425 -425
- package/src/scss/core-components/_tooltips.scss +605 -605
- package/src/scss/core-components/_utilities.scss +1 -1
- package/src/scss/core-components/_web-components-theme.scss +21 -21
- package/src/scss/core-components/badges/_badge-base.scss +121 -121
- package/src/scss/core-components/badges/_badge-group.scss +25 -25
- package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
- package/src/scss/core-components/badges/_composite-badge.scss +70 -70
- package/src/scss/core-components/badges/_index.scss +10 -10
- package/src/scss/core-components/badges/_labels.scss +155 -155
- package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
- package/src/scss/core-components/forms/_form-inputs.scss +136 -135
- package/src/scss/core-components/forms/_form-layout.scss +66 -66
- package/src/scss/core-components/forms/_form-states.scss +115 -115
- package/src/scss/core-components/forms/_index.scss +12 -12
- package/src/scss/core-components/forms/_input-groups.scss +154 -154
- package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
- package/src/scss/core-components/forms/_query-editor.scss +313 -313
- package/src/scss/core-components/layout/_index.scss +11 -11
- package/src/scss/core-components/layout/_layout-container.scss +168 -168
- package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
- package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
- package/src/scss/core-components/layout/_navbar.scss +83 -83
- package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
- package/src/scss/core-components/layout/_sidebar.scss +234 -234
- package/src/scss/main.scss +7 -7
- package/src/scss/utilities.scss +740 -740
- package/src/scss/variables/_base.scss +228 -228
- package/src/scss/variables/_components.scss +748 -748
- package/src/scss/variables/_layout.scss +65 -65
- package/src/scss/variables/_typography.scss +37 -37
|
@@ -1,289 +1,289 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Checkbox Lists
|
|
3
|
-
Styled checkbox lists with various layouts and features
|
|
4
|
-
Uses new .pa-checkbox component for custom tri-state checkboxes
|
|
5
|
-
======================================== */
|
|
6
|
-
@use '../variables' as *;
|
|
7
|
-
|
|
8
|
-
// Basic checkbox list (vertical stack)
|
|
9
|
-
.pa-checkbox-list {
|
|
10
|
-
list-style: none;
|
|
11
|
-
margin: 0;
|
|
12
|
-
padding: 0;
|
|
13
|
-
display: flex;
|
|
14
|
-
flex-direction: column;
|
|
15
|
-
|
|
16
|
-
&__item {
|
|
17
|
-
position: relative;
|
|
18
|
-
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
19
|
-
transition: background-color $transition-fast $easing-snappy;
|
|
20
|
-
|
|
21
|
-
&:hover {
|
|
22
|
-
background-color: var(--pa-table-hover-bg);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
&:last-child {
|
|
26
|
-
border-bottom: none;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Label wraps everything for full hitbox - now uses .pa-checkbox internally
|
|
31
|
-
&__label {
|
|
32
|
-
display: flex;
|
|
33
|
-
align-items: center;
|
|
34
|
-
padding: $spacing-sm $spacing-md;
|
|
35
|
-
margin: 0;
|
|
36
|
-
cursor: pointer;
|
|
37
|
-
font-size: $font-size-sm;
|
|
38
|
-
color: var(--pa-text-color-1);
|
|
39
|
-
user-select: none;
|
|
40
|
-
width: 100%;
|
|
41
|
-
|
|
42
|
-
// When using .pa-checkbox component inside label
|
|
43
|
-
.pa-checkbox {
|
|
44
|
-
margin-inline-end: $spacing-md; // RTL: flips to left
|
|
45
|
-
|
|
46
|
-
// Reset gap since label already provides spacing
|
|
47
|
-
gap: 0;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Legacy: Checkbox input (for backwards compatibility)
|
|
52
|
-
// New pattern uses .pa-checkbox component inside .pa-checkbox-list__label
|
|
53
|
-
&__checkbox {
|
|
54
|
-
margin: 0;
|
|
55
|
-
margin-inline-end: $spacing-md; // RTL: flips to left
|
|
56
|
-
width: $spinner-size;
|
|
57
|
-
height: $spinner-size;
|
|
58
|
-
cursor: pointer;
|
|
59
|
-
flex-shrink: 0;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Label text wrapper (for description support)
|
|
63
|
-
&__text {
|
|
64
|
-
flex: 1;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Optional description/metadata
|
|
68
|
-
&__description {
|
|
69
|
-
display: block;
|
|
70
|
-
margin-top: $spacing-xs;
|
|
71
|
-
font-size: $font-size-xs;
|
|
72
|
-
color: var(--pa-text-color-2);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Optional action buttons (outside label, positioned absolutely)
|
|
76
|
-
&__actions {
|
|
77
|
-
position: absolute;
|
|
78
|
-
inset-inline-end: $spacing-md; // RTL: flips to left
|
|
79
|
-
top: 50%;
|
|
80
|
-
transform: translateY(-50%);
|
|
81
|
-
display: flex;
|
|
82
|
-
gap: $spacing-xs;
|
|
83
|
-
z-index: 1;
|
|
84
|
-
|
|
85
|
-
// Prevent label from overlapping actions
|
|
86
|
-
pointer-events: none;
|
|
87
|
-
|
|
88
|
-
// Re-enable pointer events on buttons
|
|
89
|
-
button {
|
|
90
|
-
pointer-events: auto;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// When item has actions, add padding to label to prevent text overlap
|
|
95
|
-
&__item:has(.pa-checkbox-list__actions) &__label {
|
|
96
|
-
padding-inline-end: 6rem; // RTL: flips to left - Adjust based on number of action buttons
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Compact variant (less padding)
|
|
101
|
-
.pa-checkbox-list--compact {
|
|
102
|
-
.pa-checkbox-list__label {
|
|
103
|
-
padding: $spacing-xs $spacing-sm;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Bordered variant (border around entire list)
|
|
108
|
-
.pa-checkbox-list--bordered {
|
|
109
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
110
|
-
border-radius:
|
|
111
|
-
|
|
112
|
-
.pa-checkbox-list__item {
|
|
113
|
-
&:first-child {
|
|
114
|
-
border-top-left-radius:
|
|
115
|
-
border-top-right-radius:
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
&:last-child {
|
|
119
|
-
border-bottom-left-radius:
|
|
120
|
-
border-bottom-right-radius:
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Striped variant (alternating row colors)
|
|
126
|
-
.pa-checkbox-list--striped {
|
|
127
|
-
.pa-checkbox-list__item:nth-child(even) {
|
|
128
|
-
background-color: var(--pa-table-stripe);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Selected state styling
|
|
133
|
-
.pa-checkbox-list__item--selected {
|
|
134
|
-
background-color: var(--pa-accent-light);
|
|
135
|
-
|
|
136
|
-
&:hover {
|
|
137
|
-
background-color: var(--pa-accent-light);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Disabled state styling (feature not available)
|
|
142
|
-
.pa-checkbox-list__item--disabled {
|
|
143
|
-
opacity: 0.5;
|
|
144
|
-
cursor: not-allowed;
|
|
145
|
-
|
|
146
|
-
&:hover {
|
|
147
|
-
background-color: transparent;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.pa-checkbox-list__checkbox,
|
|
151
|
-
.pa-checkbox-list__label {
|
|
152
|
-
cursor: not-allowed;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Locked state styling (requires permission/authorization)
|
|
157
|
-
.pa-checkbox-list__item--locked {
|
|
158
|
-
cursor: not-allowed;
|
|
159
|
-
|
|
160
|
-
&:hover {
|
|
161
|
-
background-color: rgba($warning-bg, 0.05);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.pa-checkbox-list__checkbox {
|
|
165
|
-
cursor: not-allowed;
|
|
166
|
-
opacity: 0.5;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
.pa-checkbox-list__label {
|
|
170
|
-
cursor: not-allowed;
|
|
171
|
-
position: relative;
|
|
172
|
-
|
|
173
|
-
// Add lock icon before text
|
|
174
|
-
.pa-checkbox-list__text {
|
|
175
|
-
color: $warning-bg;
|
|
176
|
-
|
|
177
|
-
&::before {
|
|
178
|
-
content: '🔒 ';
|
|
179
|
-
font-style: normal;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// Inline layout (horizontal, wrapping)
|
|
186
|
-
.pa-checkbox-list--inline {
|
|
187
|
-
flex-direction: row;
|
|
188
|
-
flex-wrap: wrap;
|
|
189
|
-
gap: $spacing-md;
|
|
190
|
-
|
|
191
|
-
.pa-checkbox-list__item {
|
|
192
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
193
|
-
border-radius:
|
|
194
|
-
flex: 0 1 auto;
|
|
195
|
-
|
|
196
|
-
&:hover {
|
|
197
|
-
border-color: var(--pa-accent);
|
|
198
|
-
background-color: var(--pa-accent-light);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.pa-checkbox-list__label {
|
|
203
|
-
padding: $spacing-xs $spacing-sm;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Grid layout (fixed columns)
|
|
208
|
-
.pa-checkbox-list--grid {
|
|
209
|
-
display: grid;
|
|
210
|
-
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
|
211
|
-
gap: $spacing-sm;
|
|
212
|
-
|
|
213
|
-
.pa-checkbox-list__item {
|
|
214
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
215
|
-
border-radius:
|
|
216
|
-
|
|
217
|
-
&:hover {
|
|
218
|
-
border-color: var(--pa-accent);
|
|
219
|
-
background-color: var(--pa-accent-light);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Two-column layout
|
|
225
|
-
.pa-checkbox-list--2col {
|
|
226
|
-
display: grid;
|
|
227
|
-
grid-template-columns: repeat(2, 1fr);
|
|
228
|
-
gap: 0;
|
|
229
|
-
|
|
230
|
-
.pa-checkbox-list__item {
|
|
231
|
-
&:nth-child(odd) {
|
|
232
|
-
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to left
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// Three-column layout
|
|
238
|
-
.pa-checkbox-list--3col {
|
|
239
|
-
display: grid;
|
|
240
|
-
grid-template-columns: repeat(3, 1fr);
|
|
241
|
-
gap: 0;
|
|
242
|
-
|
|
243
|
-
.pa-checkbox-list__item {
|
|
244
|
-
&:not(:nth-child(3n)) {
|
|
245
|
-
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to left
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// Checkbox in tables (special handling for first column)
|
|
251
|
-
.pa-table {
|
|
252
|
-
// Checkbox column styling
|
|
253
|
-
.pa-table__checkbox-col {
|
|
254
|
-
width: 1%;
|
|
255
|
-
white-space: nowrap;
|
|
256
|
-
text-align: center;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// Custom checkbox (.pa-checkbox) in table cells
|
|
260
|
-
th .pa-checkbox,
|
|
261
|
-
td .pa-checkbox {
|
|
262
|
-
// Remove default gap since table already provides spacing
|
|
263
|
-
gap: 0;
|
|
264
|
-
|
|
265
|
-
// Hide label text if any (checkbox only in tables)
|
|
266
|
-
.pa-checkbox__label {
|
|
267
|
-
display: none;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// Legacy: Checkbox in header (select all)
|
|
272
|
-
th .pa-checkbox-list__checkbox,
|
|
273
|
-
th input[type="checkbox"] {
|
|
274
|
-
margin: 0;
|
|
275
|
-
cursor: pointer;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Legacy: Checkbox in body cells
|
|
279
|
-
td .pa-checkbox-list__checkbox,
|
|
280
|
-
td input[type="checkbox"] {
|
|
281
|
-
margin: 0;
|
|
282
|
-
cursor: pointer;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Row selection styling
|
|
286
|
-
tr.pa-table__row--selected {
|
|
287
|
-
background-color: var(--pa-accent-light);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Checkbox Lists
|
|
3
|
+
Styled checkbox lists with various layouts and features
|
|
4
|
+
Uses new .pa-checkbox component for custom tri-state checkboxes
|
|
5
|
+
======================================== */
|
|
6
|
+
@use '../variables' as *;
|
|
7
|
+
|
|
8
|
+
// Basic checkbox list (vertical stack)
|
|
9
|
+
.pa-checkbox-list {
|
|
10
|
+
list-style: none;
|
|
11
|
+
margin: 0;
|
|
12
|
+
padding: 0;
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
|
|
16
|
+
&__item {
|
|
17
|
+
position: relative;
|
|
18
|
+
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
19
|
+
transition: background-color $transition-fast $easing-snappy;
|
|
20
|
+
|
|
21
|
+
&:hover {
|
|
22
|
+
background-color: var(--pa-table-hover-bg);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&:last-child {
|
|
26
|
+
border-bottom: none;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Label wraps everything for full hitbox - now uses .pa-checkbox internally
|
|
31
|
+
&__label {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
padding: $spacing-sm $spacing-md;
|
|
35
|
+
margin: 0;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
font-size: $font-size-sm;
|
|
38
|
+
color: var(--pa-text-color-1);
|
|
39
|
+
user-select: none;
|
|
40
|
+
width: 100%;
|
|
41
|
+
|
|
42
|
+
// When using .pa-checkbox component inside label
|
|
43
|
+
.pa-checkbox {
|
|
44
|
+
margin-inline-end: $spacing-md; // RTL: flips to left
|
|
45
|
+
|
|
46
|
+
// Reset gap since label already provides spacing
|
|
47
|
+
gap: 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Legacy: Checkbox input (for backwards compatibility)
|
|
52
|
+
// New pattern uses .pa-checkbox component inside .pa-checkbox-list__label
|
|
53
|
+
&__checkbox {
|
|
54
|
+
margin: 0;
|
|
55
|
+
margin-inline-end: $spacing-md; // RTL: flips to left
|
|
56
|
+
width: $spinner-size;
|
|
57
|
+
height: $spinner-size;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
flex-shrink: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Label text wrapper (for description support)
|
|
63
|
+
&__text {
|
|
64
|
+
flex: 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Optional description/metadata
|
|
68
|
+
&__description {
|
|
69
|
+
display: block;
|
|
70
|
+
margin-top: $spacing-xs;
|
|
71
|
+
font-size: $font-size-xs;
|
|
72
|
+
color: var(--pa-text-color-2);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Optional action buttons (outside label, positioned absolutely)
|
|
76
|
+
&__actions {
|
|
77
|
+
position: absolute;
|
|
78
|
+
inset-inline-end: $spacing-md; // RTL: flips to left
|
|
79
|
+
top: 50%;
|
|
80
|
+
transform: translateY(-50%);
|
|
81
|
+
display: flex;
|
|
82
|
+
gap: $spacing-xs;
|
|
83
|
+
z-index: 1;
|
|
84
|
+
|
|
85
|
+
// Prevent label from overlapping actions
|
|
86
|
+
pointer-events: none;
|
|
87
|
+
|
|
88
|
+
// Re-enable pointer events on buttons
|
|
89
|
+
button {
|
|
90
|
+
pointer-events: auto;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// When item has actions, add padding to label to prevent text overlap
|
|
95
|
+
&__item:has(.pa-checkbox-list__actions) &__label {
|
|
96
|
+
padding-inline-end: 6rem; // RTL: flips to left - Adjust based on number of action buttons
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Compact variant (less padding)
|
|
101
|
+
.pa-checkbox-list--compact {
|
|
102
|
+
.pa-checkbox-list__label {
|
|
103
|
+
padding: $spacing-xs $spacing-sm;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Bordered variant (border around entire list)
|
|
108
|
+
.pa-checkbox-list--bordered {
|
|
109
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
110
|
+
border-radius: var(--pa-border-radius);
|
|
111
|
+
|
|
112
|
+
.pa-checkbox-list__item {
|
|
113
|
+
&:first-child {
|
|
114
|
+
border-top-left-radius: var(--pa-border-radius);
|
|
115
|
+
border-top-right-radius: var(--pa-border-radius);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&:last-child {
|
|
119
|
+
border-bottom-left-radius: var(--pa-border-radius);
|
|
120
|
+
border-bottom-right-radius: var(--pa-border-radius);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Striped variant (alternating row colors)
|
|
126
|
+
.pa-checkbox-list--striped {
|
|
127
|
+
.pa-checkbox-list__item:nth-child(even) {
|
|
128
|
+
background-color: var(--pa-table-stripe);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Selected state styling
|
|
133
|
+
.pa-checkbox-list__item--selected {
|
|
134
|
+
background-color: var(--pa-accent-light);
|
|
135
|
+
|
|
136
|
+
&:hover {
|
|
137
|
+
background-color: var(--pa-accent-light);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Disabled state styling (feature not available)
|
|
142
|
+
.pa-checkbox-list__item--disabled {
|
|
143
|
+
opacity: 0.5;
|
|
144
|
+
cursor: not-allowed;
|
|
145
|
+
|
|
146
|
+
&:hover {
|
|
147
|
+
background-color: transparent;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.pa-checkbox-list__checkbox,
|
|
151
|
+
.pa-checkbox-list__label {
|
|
152
|
+
cursor: not-allowed;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Locked state styling (requires permission/authorization)
|
|
157
|
+
.pa-checkbox-list__item--locked {
|
|
158
|
+
cursor: not-allowed;
|
|
159
|
+
|
|
160
|
+
&:hover {
|
|
161
|
+
background-color: rgba($warning-bg, 0.05);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.pa-checkbox-list__checkbox {
|
|
165
|
+
cursor: not-allowed;
|
|
166
|
+
opacity: 0.5;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.pa-checkbox-list__label {
|
|
170
|
+
cursor: not-allowed;
|
|
171
|
+
position: relative;
|
|
172
|
+
|
|
173
|
+
// Add lock icon before text
|
|
174
|
+
.pa-checkbox-list__text {
|
|
175
|
+
color: $warning-bg;
|
|
176
|
+
|
|
177
|
+
&::before {
|
|
178
|
+
content: '🔒 ';
|
|
179
|
+
font-style: normal;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Inline layout (horizontal, wrapping)
|
|
186
|
+
.pa-checkbox-list--inline {
|
|
187
|
+
flex-direction: row;
|
|
188
|
+
flex-wrap: wrap;
|
|
189
|
+
gap: $spacing-md;
|
|
190
|
+
|
|
191
|
+
.pa-checkbox-list__item {
|
|
192
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
193
|
+
border-radius: var(--pa-border-radius);
|
|
194
|
+
flex: 0 1 auto;
|
|
195
|
+
|
|
196
|
+
&:hover {
|
|
197
|
+
border-color: var(--pa-accent);
|
|
198
|
+
background-color: var(--pa-accent-light);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.pa-checkbox-list__label {
|
|
203
|
+
padding: $spacing-xs $spacing-sm;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Grid layout (fixed columns)
|
|
208
|
+
.pa-checkbox-list--grid {
|
|
209
|
+
display: grid;
|
|
210
|
+
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
|
211
|
+
gap: $spacing-sm;
|
|
212
|
+
|
|
213
|
+
.pa-checkbox-list__item {
|
|
214
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
215
|
+
border-radius: var(--pa-border-radius);
|
|
216
|
+
|
|
217
|
+
&:hover {
|
|
218
|
+
border-color: var(--pa-accent);
|
|
219
|
+
background-color: var(--pa-accent-light);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Two-column layout
|
|
225
|
+
.pa-checkbox-list--2col {
|
|
226
|
+
display: grid;
|
|
227
|
+
grid-template-columns: repeat(2, 1fr);
|
|
228
|
+
gap: 0;
|
|
229
|
+
|
|
230
|
+
.pa-checkbox-list__item {
|
|
231
|
+
&:nth-child(odd) {
|
|
232
|
+
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to left
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Three-column layout
|
|
238
|
+
.pa-checkbox-list--3col {
|
|
239
|
+
display: grid;
|
|
240
|
+
grid-template-columns: repeat(3, 1fr);
|
|
241
|
+
gap: 0;
|
|
242
|
+
|
|
243
|
+
.pa-checkbox-list__item {
|
|
244
|
+
&:not(:nth-child(3n)) {
|
|
245
|
+
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to left
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Checkbox in tables (special handling for first column)
|
|
251
|
+
.pa-table {
|
|
252
|
+
// Checkbox column styling
|
|
253
|
+
.pa-table__checkbox-col {
|
|
254
|
+
width: 1%;
|
|
255
|
+
white-space: nowrap;
|
|
256
|
+
text-align: center;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Custom checkbox (.pa-checkbox) in table cells
|
|
260
|
+
th .pa-checkbox,
|
|
261
|
+
td .pa-checkbox {
|
|
262
|
+
// Remove default gap since table already provides spacing
|
|
263
|
+
gap: 0;
|
|
264
|
+
|
|
265
|
+
// Hide label text if any (checkbox only in tables)
|
|
266
|
+
.pa-checkbox__label {
|
|
267
|
+
display: none;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Legacy: Checkbox in header (select all)
|
|
272
|
+
th .pa-checkbox-list__checkbox,
|
|
273
|
+
th input[type="checkbox"] {
|
|
274
|
+
margin: 0;
|
|
275
|
+
cursor: pointer;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Legacy: Checkbox in body cells
|
|
279
|
+
td .pa-checkbox-list__checkbox,
|
|
280
|
+
td input[type="checkbox"] {
|
|
281
|
+
margin: 0;
|
|
282
|
+
cursor: pointer;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Row selection styling
|
|
286
|
+
tr.pa-table__row--selected {
|
|
287
|
+
background-color: var(--pa-accent-light);
|
|
288
|
+
}
|
|
289
|
+
}
|