@keenmate/pure-admin-core 1.0.0-rc01

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/dist/css/main.css +11542 -0
  4. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  5. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  6. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  7. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  8. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  9. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  10. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  11. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  12. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
  13. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
  14. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
  15. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
  16. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
  17. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
  18. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
  19. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
  20. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
  21. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
  22. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
  23. package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
  24. package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
  25. package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
  26. package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
  27. package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
  28. package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
  29. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
  30. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
  31. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
  32. package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
  33. package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
  34. package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
  35. package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
  36. package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
  37. package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
  38. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
  39. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
  40. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
  41. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
  42. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
  43. package/dist/fonts/google/fonts-tracklist.txt +48 -0
  44. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
  45. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
  46. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
  47. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
  48. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
  49. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
  50. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
  51. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
  52. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
  53. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
  54. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
  55. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
  56. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
  57. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
  58. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
  59. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
  60. package/package.json +60 -0
  61. package/snippets/alerts.html +281 -0
  62. package/snippets/badges.html +212 -0
  63. package/snippets/buttons.html +287 -0
  64. package/snippets/cards.html +393 -0
  65. package/snippets/checkbox-lists.html +490 -0
  66. package/snippets/code.html +225 -0
  67. package/snippets/command-palette.html +210 -0
  68. package/snippets/comparison.html +428 -0
  69. package/snippets/customization.html +142 -0
  70. package/snippets/forms.html +477 -0
  71. package/snippets/grid.html +338 -0
  72. package/snippets/layout.html +598 -0
  73. package/snippets/lists.html +232 -0
  74. package/snippets/loaders.html +183 -0
  75. package/snippets/manifest.json +388 -0
  76. package/snippets/modal-dialogs.html +411 -0
  77. package/snippets/modals.html +310 -0
  78. package/snippets/popconfirm.html +253 -0
  79. package/snippets/profile.html +264 -0
  80. package/snippets/tables.html +317 -0
  81. package/snippets/tabs.html +930 -0
  82. package/snippets/timeline.html +364 -0
  83. package/snippets/toasts.html +154 -0
  84. package/snippets/tooltips.html +411 -0
  85. package/snippets/typography.html +101 -0
  86. package/snippets/utilities.html +595 -0
  87. package/snippets/virtual-scroll.html +322 -0
  88. package/snippets/web-daterangepicker.html +634 -0
  89. package/snippets/web-multiselect.html +362 -0
  90. package/src/scss/.claude/settings.local.json +11 -0
  91. package/src/scss/_base-css-variables.scss +348 -0
  92. package/src/scss/_core.scss +99 -0
  93. package/src/scss/_fonts.scss +67 -0
  94. package/src/scss/_purecss-grid-responsive.scss +138 -0
  95. package/src/scss/_purecss-grid.scss +58 -0
  96. package/src/scss/_variables.scss +14 -0
  97. package/src/scss/core-components/_alerts.scss +212 -0
  98. package/src/scss/core-components/_badges.scss +16 -0
  99. package/src/scss/core-components/_base.scss +124 -0
  100. package/src/scss/core-components/_buttons.scss +473 -0
  101. package/src/scss/core-components/_cards.scss +285 -0
  102. package/src/scss/core-components/_checkbox-lists.scss +289 -0
  103. package/src/scss/core-components/_code.scss +141 -0
  104. package/src/scss/core-components/_command-palette.scss +518 -0
  105. package/src/scss/core-components/_comparison.scss +172 -0
  106. package/src/scss/core-components/_file-selector.scss +780 -0
  107. package/src/scss/core-components/_forms.scss +16 -0
  108. package/src/scss/core-components/_grid.scss +264 -0
  109. package/src/scss/core-components/_layout.scss +15 -0
  110. package/src/scss/core-components/_lists.scss +211 -0
  111. package/src/scss/core-components/_loaders.scss +277 -0
  112. package/src/scss/core-components/_logic-tree.scss +280 -0
  113. package/src/scss/core-components/_modals.scss +209 -0
  114. package/src/scss/core-components/_notifications.scss +253 -0
  115. package/src/scss/core-components/_pagers.scss +141 -0
  116. package/src/scss/core-components/_popconfirm.scss +170 -0
  117. package/src/scss/core-components/_profile.scss +281 -0
  118. package/src/scss/core-components/_settings-panel.scss +128 -0
  119. package/src/scss/core-components/_statistics.scss +200 -0
  120. package/src/scss/core-components/_tables.scss +555 -0
  121. package/src/scss/core-components/_tabs.scss +438 -0
  122. package/src/scss/core-components/_timeline.scss +589 -0
  123. package/src/scss/core-components/_toasts.scss +281 -0
  124. package/src/scss/core-components/_tooltips.scss +503 -0
  125. package/src/scss/core-components/_utilities.scss +241 -0
  126. package/src/scss/core-components/_web-components-theme.scss +294 -0
  127. package/src/scss/core-components/badges/_badge-base.scss +131 -0
  128. package/src/scss/core-components/badges/_badge-group.scss +25 -0
  129. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
  130. package/src/scss/core-components/badges/_composite-badge.scss +70 -0
  131. package/src/scss/core-components/badges/_index.scss +10 -0
  132. package/src/scss/core-components/badges/_labels.scss +155 -0
  133. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
  134. package/src/scss/core-components/forms/_form-inputs.scss +100 -0
  135. package/src/scss/core-components/forms/_form-layout.scss +66 -0
  136. package/src/scss/core-components/forms/_form-states.scss +89 -0
  137. package/src/scss/core-components/forms/_index.scss +12 -0
  138. package/src/scss/core-components/forms/_input-groups.scss +149 -0
  139. package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
  140. package/src/scss/core-components/forms/_query-editor.scss +313 -0
  141. package/src/scss/core-components/layout/_index.scss +11 -0
  142. package/src/scss/core-components/layout/_layout-container.scss +105 -0
  143. package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
  144. package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
  145. package/src/scss/core-components/layout/_navbar.scss +71 -0
  146. package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
  147. package/src/scss/core-components/layout/_sidebar.scss +177 -0
  148. package/src/scss/main.scss +7 -0
  149. package/src/scss/themes/_dark-base.scss +207 -0
  150. package/src/scss/themes/audi-light.scss +311 -0
  151. package/src/scss/themes/audi.scss +288 -0
  152. package/src/scss/themes/corporate.scss +203 -0
  153. package/src/scss/themes/dark-blue.scss +152 -0
  154. package/src/scss/themes/dark-green.scss +156 -0
  155. package/src/scss/themes/dark-red.scss +160 -0
  156. package/src/scss/themes/dark.scss +145 -0
  157. package/src/scss/themes/express.scss +281 -0
  158. package/src/scss/themes/minimal.scss +121 -0
  159. package/src/scss/utilities.scss +481 -0
  160. package/src/scss/variables/_base.scss +81 -0
  161. package/src/scss/variables/_colors.scss +148 -0
  162. package/src/scss/variables/_components.scss +509 -0
  163. package/src/scss/variables/_index.scss +13 -0
  164. package/src/scss/variables/_layout.scss +65 -0
  165. package/src/scss/variables/_spacing.scss +66 -0
  166. package/src/scss/variables/_system.scss +80 -0
  167. package/src/scss/variables/_typography.scss +37 -0
@@ -0,0 +1,285 @@
1
+ /* ========================================
2
+ Card Components
3
+ Cards with headers, bodies, footers, variants, and card sections
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ // Cards
8
+ .pa-card {
9
+ background: var(--pa-card-bg);
10
+ border: $border-width-base solid var(--pa-border-color);
11
+ border-radius: $border-radius-lg;
12
+ margin-bottom: $spacing-base;
13
+ box-shadow: $shadow-sm;
14
+ transition: box-shadow $transition-fast $easing-snappy;
15
+ display: flex;
16
+ flex-direction: column;
17
+
18
+ &:hover {
19
+ box-shadow: $shadow-lg;
20
+ }
21
+
22
+ &__header {
23
+ padding: $card-header-padding-v $card-header-padding-h;
24
+ min-height: $card-header-min-height;
25
+ border-top-left-radius: $border-radius-lg;
26
+ border-top-right-radius: $border-radius-lg;
27
+ border-bottom: $border-width-base solid var(--pa-border-color);
28
+ background: var(--pa-card-header-bg);
29
+ display: flex;
30
+ justify-content: space-between;
31
+ align-items: center;
32
+ min-width: 0; // Enable text truncation
33
+
34
+ // Reset margins/paddings for all native elements
35
+ h1,
36
+ h2,
37
+ h3,
38
+ h4,
39
+ h5,
40
+ h6,
41
+ p,
42
+ ul,
43
+ ol,
44
+ dl,
45
+ blockquote,
46
+ pre,
47
+ figure,
48
+ fieldset {
49
+ margin: 0;
50
+ padding: 0;
51
+ }
52
+
53
+ // Specific heading styles
54
+ h1,
55
+ h2,
56
+ h3,
57
+ h4,
58
+ h5,
59
+ h6 {
60
+ color: var(--pa-text-primary);
61
+ font-size: $font-size-base;
62
+ }
63
+ }
64
+
65
+ &__title {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: $spacing-sm;
69
+ min-width: 0; // Enable text truncation
70
+ flex: 1;
71
+
72
+ &-icon {
73
+ flex-shrink: 0;
74
+ font-size: $font-size-base;
75
+ line-height: 1;
76
+ }
77
+
78
+ &-text {
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ margin: 0;
83
+ color: var(--pa-text-primary);
84
+ font-size: $font-size-base;
85
+ font-weight: $font-weight-semibold;
86
+ }
87
+ }
88
+
89
+ &__body {
90
+ padding: $card-body-padding $card-body-padding $card-body-padding
91
+ $card-body-padding;
92
+ flex: 1;
93
+
94
+ // Remove top margin from first child to avoid double spacing with padding
95
+ > :first-child {
96
+ margin-top: 0;
97
+ }
98
+
99
+ &--no-padding {
100
+ padding: 0;
101
+ }
102
+ }
103
+
104
+ &__footer {
105
+ padding: $card-footer-padding-v $card-footer-padding-h;
106
+ border-top: $border-width-base solid var(--pa-border-color);
107
+ border-bottom-left-radius: $border-radius-lg;
108
+ border-bottom-right-radius: $border-radius-lg;
109
+ background: var(--pa-card-footer-bg);
110
+ display: flex;
111
+ justify-content: space-between;
112
+ align-items: center;
113
+ }
114
+
115
+ &__tools {
116
+ display: flex;
117
+ gap: $spacing-sm;
118
+ align-items: center;
119
+ }
120
+
121
+ &__actions {
122
+ display: flex;
123
+ gap: $spacing-sm;
124
+ }
125
+
126
+ &__meta {
127
+ color: var(--pa-text-secondary);
128
+ font-size: $font-size-sm;
129
+ }
130
+
131
+ // Card variants
132
+ &--primary {
133
+ border-color: var(--pa-accent);
134
+
135
+ .pa-card__header {
136
+ background-color: var(--pa-accent);
137
+ color: var(--pa-btn-primary-text);
138
+
139
+ h1,
140
+ h2,
141
+ h3,
142
+ h4,
143
+ h5,
144
+ h6 {
145
+ color: var(--pa-btn-primary-text);
146
+ }
147
+ }
148
+ }
149
+
150
+ &--success {
151
+ border-color: var(--pa-success-bg);
152
+
153
+ .pa-card__header {
154
+ background-color: var(--pa-success-bg);
155
+ color: var(--pa-btn-success-text);
156
+
157
+ h1,
158
+ h2,
159
+ h3,
160
+ h4,
161
+ h5,
162
+ h6 {
163
+ color: var(--pa-btn-success-text);
164
+ }
165
+ }
166
+ }
167
+
168
+ &--warning {
169
+ border-color: var(--pa-warning-bg);
170
+
171
+ .pa-card__header {
172
+ background-color: var(--pa-warning-bg);
173
+ color: var(--pa-btn-warning-text);
174
+
175
+ h1,
176
+ h2,
177
+ h3,
178
+ h4,
179
+ h5,
180
+ h6 {
181
+ color: var(--pa-btn-warning-text);
182
+ }
183
+ }
184
+ }
185
+
186
+ &--danger {
187
+ border-color: var(--pa-danger-bg);
188
+
189
+ .pa-card__header {
190
+ background-color: var(--pa-danger-bg);
191
+ color: var(--pa-btn-danger-text);
192
+
193
+ h1,
194
+ h2,
195
+ h3,
196
+ h4,
197
+ h5,
198
+ h6 {
199
+ color: var(--pa-btn-danger-text);
200
+ }
201
+ }
202
+ }
203
+
204
+ &--stat {
205
+ .pa-card__body {
206
+ padding: $card-stat-padding-v $card-stat-padding-h;
207
+ }
208
+ }
209
+
210
+ // Card tabs
211
+ &__tabs {
212
+ display: flex;
213
+ border-bottom: $border-width-base solid var(--pa-border-color);
214
+ background: var(--pa-card-tabs-bg);
215
+ }
216
+
217
+ &__tab {
218
+ padding: $card-footer-padding-v $card-footer-padding-h;
219
+ border: none;
220
+ background: none;
221
+ color: var(--pa-text-secondary);
222
+ cursor: pointer;
223
+ transition: all $transition-fast $easing-snappy;
224
+ border-bottom: $border-width-medium solid transparent;
225
+
226
+ &:hover {
227
+ color: var(--pa-text-primary);
228
+ background-color: rgba($accent-color, $card-tab-hover-opacity);
229
+ }
230
+
231
+ &--active {
232
+ color: var(--pa-accent);
233
+ border-bottom-color: var(--pa-accent);
234
+ }
235
+ }
236
+
237
+ &__tab-content {
238
+ display: none;
239
+
240
+ &--active {
241
+ display: block;
242
+ }
243
+ }
244
+ }
245
+
246
+ // Clickable cards (anchor-wrapped)
247
+ a.pa-card {
248
+ text-decoration: none;
249
+ display: block;
250
+ color: inherit;
251
+
252
+ &:hover,
253
+ &:visited {
254
+ color: inherit;
255
+ }
256
+
257
+ // Reset heading colors inside clickable cards
258
+ h1, h2, h3, h4, h5, h6 {
259
+ color: var(--pa-text-primary);
260
+ }
261
+
262
+ p {
263
+ color: var(--pa-text-secondary);
264
+ }
265
+ }
266
+
267
+ // Card sections
268
+ .pa-section {
269
+ margin-bottom: $section-margin-v;
270
+
271
+ h3 {
272
+ color: var(--pa-text-primary);
273
+ margin-bottom: $spacing-base;
274
+ border-bottom: $border-width-medium solid var(--pa-accent);
275
+ padding-bottom: $spacing-sm;
276
+ }
277
+ }
278
+
279
+ // Section title (standalone)
280
+ .pa-section-title {
281
+ color: var(--pa-text-primary);
282
+ margin-bottom: $spacing-base;
283
+ border-bottom: $border-width-medium solid var(--pa-accent);
284
+ padding-bottom: $spacing-sm;
285
+ }
@@ -0,0 +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-primary);
39
+ user-select: none;
40
+ width: 100%;
41
+
42
+ // When using .pa-checkbox component inside label
43
+ .pa-checkbox {
44
+ margin-right: $spacing-md;
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-right: $spacing-md;
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-secondary);
73
+ }
74
+
75
+ // Optional action buttons (outside label, positioned absolutely)
76
+ &__actions {
77
+ position: absolute;
78
+ right: $spacing-md;
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-right: 6rem; // 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: $border-radius;
111
+
112
+ .pa-checkbox-list__item {
113
+ &:first-child {
114
+ border-top-left-radius: $border-radius;
115
+ border-top-right-radius: $border-radius;
116
+ }
117
+
118
+ &:last-child {
119
+ border-bottom-left-radius: $border-radius;
120
+ border-bottom-right-radius: $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: $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: $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-right: $border-width-base solid var(--pa-border-color);
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-right: $border-width-base solid var(--pa-border-color);
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
+ }
@@ -0,0 +1,141 @@
1
+ /* Code Component */
2
+ @use '../variables' as *;
3
+
4
+ // Inline code
5
+ code {
6
+ padding: 0.2rem 0.6rem;
7
+ font-family: 'Courier New', Courier, monospace;
8
+ font-size: 1.5rem;
9
+ background-color: var(--pa-accent-light);
10
+ color: var(--pa-accent);
11
+ border-radius: $border-radius-sm;
12
+ }
13
+
14
+ // Code block
15
+ .pa-code {
16
+ display: block;
17
+ padding: $spacing-base;
18
+ font-family: 'Courier New', Courier, monospace;
19
+ font-size: $font-size-sm;
20
+ line-height: $line-height-relaxed;
21
+ background-color: var(--pa-primary-bg);
22
+ color: var(--pa-text-primary);
23
+ border: $border-width-base solid var(--pa-border-color);
24
+ border-radius: $border-radius;
25
+ overflow-x: auto;
26
+ white-space: pre;
27
+ margin: 0;
28
+
29
+ // With line numbers
30
+ &--numbered {
31
+ counter-reset: line;
32
+ padding-left: 5.6rem;
33
+ position: relative;
34
+
35
+ &::before {
36
+ content: '';
37
+ position: absolute;
38
+ left: 0;
39
+ top: 0;
40
+ bottom: 0;
41
+ width: 4.4rem;
42
+ background-color: rgba(0, 0, 0, 0.05);
43
+ border-right: $border-width-base solid var(--pa-border-color);
44
+ }
45
+ }
46
+
47
+ // Compact variant
48
+ &--compact {
49
+ padding: $spacing-sm;
50
+ font-size: $font-size-xs;
51
+ }
52
+
53
+ // Language variants with colored accents
54
+ &--json {
55
+ border-left: $border-width-medium solid $code-language-json;
56
+ }
57
+
58
+ &--javascript {
59
+ border-left: $border-width-medium solid $code-language-javascript;
60
+ }
61
+
62
+ &--html {
63
+ border-left: $border-width-medium solid $code-language-html;
64
+ }
65
+
66
+ &--css {
67
+ border-left: $border-width-medium solid $code-language-css;
68
+ }
69
+
70
+ &--bash {
71
+ border-left: $border-width-medium solid $code-language-bash;
72
+ }
73
+
74
+ &--sql {
75
+ border-left: $border-width-medium solid $code-language-sql;
76
+ }
77
+
78
+ &--python {
79
+ border-left: $border-width-medium solid $code-language-python;
80
+ }
81
+ }
82
+
83
+ // Code block with header (title and copy button)
84
+ .pa-code-block {
85
+ border: $border-width-base solid var(--pa-border-color);
86
+ border-radius: $border-radius;
87
+ overflow: hidden;
88
+
89
+ &__header {
90
+ display: flex;
91
+ justify-content: space-between;
92
+ align-items: center;
93
+ padding: $spacing-sm $spacing-base;
94
+ background-color: var(--pa-card-header-bg);
95
+ border-bottom: $border-width-base solid var(--pa-border-color);
96
+ }
97
+
98
+ &__title {
99
+ font-size: $font-size-sm;
100
+ font-weight: $font-weight-semibold;
101
+ color: var(--pa-text-secondary);
102
+ margin: 0;
103
+ }
104
+
105
+ &__body {
106
+ padding: 0;
107
+
108
+ .pa-code {
109
+ border: none;
110
+ border-radius: 0;
111
+ margin: 0;
112
+ }
113
+ }
114
+ }
115
+
116
+ // Syntax highlighting helper classes (basic)
117
+ .pa-code-keyword {
118
+ color: $code-syntax-keyword;
119
+ font-weight: $font-weight-medium;
120
+ }
121
+
122
+ .pa-code-string {
123
+ color: $code-syntax-string;
124
+ }
125
+
126
+ .pa-code-number {
127
+ color: $code-syntax-number;
128
+ }
129
+
130
+ .pa-code-comment {
131
+ color: var(--pa-text-secondary);
132
+ font-style: italic;
133
+ }
134
+
135
+ .pa-code-function {
136
+ color: $code-syntax-function;
137
+ }
138
+
139
+ .pa-code-property {
140
+ color: $code-syntax-property;
141
+ }