@keenmate/pure-admin-core 2.4.0 → 2.5.0

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 (44) hide show
  1. package/README.md +11 -6
  2. package/dist/css/main.css +47 -130
  3. package/package.json +1 -1
  4. package/snippets/AUDIT.md +94 -0
  5. package/snippets/alerts.html +264 -89
  6. package/snippets/badges.html +193 -61
  7. package/snippets/buttons.html +178 -0
  8. package/snippets/callouts.html +210 -129
  9. package/snippets/cards.html +383 -200
  10. package/snippets/checkbox-lists.html +199 -65
  11. package/snippets/code.html +55 -11
  12. package/snippets/command-palette.html +401 -111
  13. package/snippets/comparison.html +144 -93
  14. package/snippets/customization.html +311 -104
  15. package/snippets/data-display.html +584 -0
  16. package/snippets/detail-panel.html +470 -138
  17. package/snippets/filter-card.html +246 -0
  18. package/snippets/forms.html +408 -308
  19. package/snippets/grid.html +253 -141
  20. package/snippets/layout.html +379 -480
  21. package/snippets/lists.html +144 -47
  22. package/snippets/loaders.html +64 -39
  23. package/snippets/manifest.json +330 -280
  24. package/snippets/modal-dialogs.html +137 -64
  25. package/snippets/modals.html +221 -151
  26. package/snippets/notifications.html +285 -0
  27. package/snippets/popconfirm.html +213 -19
  28. package/snippets/profile.html +290 -330
  29. package/snippets/statistics.html +247 -0
  30. package/snippets/tables.html +359 -150
  31. package/snippets/tabs.html +129 -45
  32. package/snippets/timeline.html +123 -56
  33. package/snippets/toasts.html +179 -31
  34. package/snippets/tooltips.html +199 -81
  35. package/snippets/typography.html +183 -58
  36. package/snippets/utilities.html +511 -415
  37. package/snippets/virtual-scroll.html +201 -75
  38. package/snippets/web-daterangepicker.html +369 -189
  39. package/snippets/web-multiselect.html +360 -124
  40. package/src/scss/core-components/_alerts.scss +51 -12
  41. package/src/scss/core-components/_pagers.scss +1 -1
  42. package/src/scss/core-components/_popconfirm.scss +35 -13
  43. package/src/scss/core-components/_tables.scss +2 -134
  44. package/src/scss/variables/_components.scss +17 -2
@@ -4,12 +4,32 @@
4
4
  Native Flexbox Grid Reference
5
5
  ================================ -->
6
6
 
7
- <!-- RESPONSIVE BREAKPOINTS -->
8
7
  <!--
9
- sm: 576px
10
- md: 768px
8
+ RESPONSIVE STRATEGY — IMPORTANT:
9
+ Responsive column classes (pa-col-sm-*, pa-col-md-*, pa-col-lg-*,
10
+ pa-col-xl-*) use CSS `@container` queries, NOT `@media`. They only
11
+ activate inside a containment context.
12
+
13
+ - Inside the framework's .pa-layout__main: works automatically (that
14
+ element sets container-type: inline-size).
15
+ - Anywhere else: wrap the grid in an element with the .pa-cq utility
16
+ (also container-type: inline-size) or set the container-type
17
+ yourself. Without it, the responsive classes silently do nothing.
18
+
19
+ Visibility helpers (pa-hide, pa-show, -bp, -below-bp) use @media and
20
+ do NOT need the containment context.
21
+
22
+ BREAKPOINTS (from $grid-breakpoints):
23
+ sm: 576px (container/viewport width ≥ 576px)
24
+ md: 768px (also = $mobile-breakpoint)
11
25
  lg: 992px
12
26
  xl: 1200px
27
+
28
+ AUTO-STACK ON MOBILE:
29
+ Below $mobile-breakpoint (768px), bare percentage/fraction columns
30
+ (pa-col-50, pa-col-1-3, etc.) auto-stack to 100% width, and offsets
31
+ are reset. To keep a non-stacked layout on phones, use explicit
32
+ responsive classes (pa-col-sm-50 won't stack, pa-col-50 will).
13
33
  -->
14
34
 
15
35
 
@@ -69,18 +89,8 @@
69
89
  </div>
70
90
 
71
91
 
72
- <!-- FIFTHS (20%, 40%, 60%, 80%) -->
92
+ <!-- FIFTHS, SIXTHS, TWELFTHS (fraction aliases) -->
73
93
 
74
- <!-- Five equal columns -->
75
- <div class="pa-row">
76
- <div class="pa-col-20">Fifth</div>
77
- <div class="pa-col-20">Fifth</div>
78
- <div class="pa-col-20">Fifth</div>
79
- <div class="pa-col-20">Fifth</div>
80
- <div class="pa-col-20">Fifth</div>
81
- </div>
82
-
83
- <!-- Using fraction aliases -->
84
94
  <div class="pa-row">
85
95
  <div class="pa-col-2-5">Two fifths</div>
86
96
  <div class="pa-col-3-5">Three fifths</div>
@@ -91,19 +101,11 @@
91
101
  <div class="pa-col-4-5">Four fifths</div>
92
102
  </div>
93
103
 
94
-
95
- <!-- SIXTHS (16.67%, 83.33%) -->
96
-
97
- <!-- Using fraction aliases -->
98
104
  <div class="pa-row">
99
105
  <div class="pa-col-1-6">One sixth</div>
100
106
  <div class="pa-col-5-6">Five sixths</div>
101
107
  </div>
102
108
 
103
-
104
- <!-- TWELFTHS (8.33%, etc.) -->
105
-
106
- <!-- Using fraction aliases -->
107
109
  <div class="pa-row">
108
110
  <div class="pa-col-1-12">1/12</div>
109
111
  <div class="pa-col-11-12">11/12</div>
@@ -117,7 +119,7 @@
117
119
 
118
120
  <!-- 5% INCREMENT COLUMNS -->
119
121
 
120
- <!-- 5% increments available: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 -->
122
+ <!-- Available sizes: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 -->
121
123
  <div class="pa-row">
122
124
  <div class="pa-col-15">15%</div>
123
125
  <div class="pa-col-85">85%</div>
@@ -129,7 +131,34 @@
129
131
  </div>
130
132
 
131
133
 
132
- <!-- RESPONSIVE GRID EXAMPLES -->
134
+ <!-- AUTO COLUMNS (no fixed width) -->
135
+
136
+ <!-- .pa-col: auto-equal width (flex: 1) — fills remaining space, shares equally with siblings -->
137
+ <div class="pa-row">
138
+ <div class="pa-col">Auto-equal</div>
139
+ <div class="pa-col">Auto-equal</div>
140
+ <div class="pa-col">Auto-equal</div>
141
+ </div>
142
+
143
+ <!-- .pa-col-auto: content-sized (flex: 0 0 auto) — shrinks to its content width -->
144
+ <div class="pa-row">
145
+ <div class="pa-col-auto">Just the text width</div>
146
+ <div class="pa-col">Fills the rest</div>
147
+ </div>
148
+
149
+ <!-- Mix and match — fixed + auto + content -->
150
+ <div class="pa-row">
151
+ <div class="pa-col-25">Fixed 25%</div>
152
+ <div class="pa-col">Fills remaining</div>
153
+ <div class="pa-col-auto">Content</div>
154
+ </div>
155
+
156
+
157
+ <!--
158
+ RESPONSIVE GRID
159
+ Requires @container context. Works out of the box inside the framework
160
+ layout (.pa-layout__main); elsewhere wrap in .pa-cq.
161
+ -->
133
162
 
134
163
  <!-- Mobile: full width, Tablet+: half width -->
135
164
  <div class="pa-row">
@@ -145,23 +174,17 @@
145
174
  <div class="pa-col-100 pa-col-sm-50 pa-col-md-1-3 pa-col-lg-25">Multi-breakpoint</div>
146
175
  </div>
147
176
 
148
- <!-- Sidebar + content layout (responsive) -->
149
- <div class="pa-row">
150
- <div class="pa-col-100 pa-col-md-25">Sidebar (mobile: full, tablet+: 25%)</div>
151
- <div class="pa-col-100 pa-col-md-75">Content (mobile: full, tablet+: 75%)</div>
152
- </div>
153
-
154
- <!-- Three-column responsive with fractions -->
155
- <div class="pa-row">
156
- <div class="pa-col-100 pa-col-sm-50 pa-col-lg-1-3">Column 1</div>
157
- <div class="pa-col-100 pa-col-sm-50 pa-col-lg-1-3">Column 2</div>
158
- <div class="pa-col-100 pa-col-sm-50 pa-col-lg-1-3">Column 3</div>
177
+ <!-- Standalone grid with explicit containment context -->
178
+ <div class="pa-cq">
179
+ <div class="pa-row">
180
+ <div class="pa-col-100 pa-col-md-50">Responsive works because of .pa-cq</div>
181
+ <div class="pa-col-100 pa-col-md-50">Responsive works because of .pa-cq</div>
182
+ </div>
159
183
  </div>
160
184
 
161
185
 
162
- <!-- NESTED GRIDS -->
186
+ <!-- NESTED GRIDS — nested .pa-row resets its own margin -->
163
187
 
164
- <!-- Grid inside grid -->
165
188
  <div class="pa-row">
166
189
  <div class="pa-col-50">
167
190
  <div class="pa-row">
@@ -177,29 +200,49 @@
177
200
 
178
201
  <!-- ROW MODIFIERS -->
179
202
 
180
- <!-- No gutter (remove spacing between columns) -->
203
+ <!-- Gutter / spacing -->
181
204
  <div class="pa-row pa-row--no-gutter">
182
- <div class="pa-col-50">No gutter</div>
183
- <div class="pa-col-50">No gutter</div>
205
+ <div class="pa-col-50">No gutter between me</div>
206
+ <div class="pa-col-50">and me</div>
184
207
  </div>
185
208
 
186
- <!-- Center columns -->
209
+ <!-- Horizontal alignment of children -->
187
210
  <div class="pa-row pa-row--center">
188
- <div class="pa-col-1-3">Centered</div>
211
+ <div class="pa-col-1-3">Centred</div>
212
+ </div>
213
+
214
+ <div class="pa-row pa-row--end">
215
+ <div class="pa-col-1-3">End-aligned</div>
189
216
  </div>
190
217
 
191
- <!-- Space between columns -->
192
218
  <div class="pa-row pa-row--between">
193
- <div class="pa-col-25">Left</div>
194
- <div class="pa-col-25">Right</div>
219
+ <div class="pa-col-25">Space</div>
220
+ <div class="pa-col-25">Between</div>
221
+ </div>
222
+
223
+ <div class="pa-row pa-row--around">
224
+ <div class="pa-col-25">Space</div>
225
+ <div class="pa-col-25">Around</div>
226
+ </div>
227
+
228
+ <!-- Vertical alignment of children -->
229
+ <div class="pa-row pa-row--top">
230
+ <div class="pa-col-50">Top aligned</div>
231
+ </div>
232
+ <div class="pa-row pa-row--middle">
233
+ <div class="pa-col-50">Middle aligned</div>
234
+ </div>
235
+ <div class="pa-row pa-row--bottom">
236
+ <div class="pa-col-50">Bottom aligned</div>
237
+ </div>
238
+ <div class="pa-row pa-row--stretch">
239
+ <div class="pa-col-50">Stretch vertically (default, included for explicitness)</div>
195
240
  </div>
196
241
 
197
- <!-- Same height cards -->
242
+ <!-- Same-height cards (normalises card heights across columns) -->
198
243
  <div class="pa-row pa-row--same-height">
199
244
  <div class="pa-col-1-3">
200
- <div class="pa-card">
201
- <div class="pa-card__body">Short</div>
202
- </div>
245
+ <div class="pa-card"><div class="pa-card__body">Short</div></div>
203
246
  </div>
204
247
  <div class="pa-col-1-3">
205
248
  <div class="pa-card">
@@ -211,23 +254,24 @@
211
254
  </div>
212
255
  </div>
213
256
  <div class="pa-col-1-3">
214
- <div class="pa-card">
215
- <div class="pa-card__body">Medium</div>
216
- </div>
257
+ <div class="pa-card"><div class="pa-card__body">Medium</div></div>
217
258
  </div>
218
259
  </div>
219
260
 
220
- <!-- Vertical alignment -->
221
- <div class="pa-row pa-row--top">
222
- <div class="pa-col-50">Top aligned</div>
223
- </div>
224
261
 
225
- <div class="pa-row pa-row--middle">
226
- <div class="pa-col-50">Middle aligned</div>
262
+ <!-- COLUMN MODIFIERS -->
263
+
264
+ <!-- --no-padding: kill the gutter on a single column (e.g., full-bleed card) -->
265
+ <div class="pa-row">
266
+ <div class="pa-col-50 pa-col--no-padding">No padding on this column</div>
267
+ <div class="pa-col-50">Normal gutter</div>
227
268
  </div>
228
269
 
229
- <div class="pa-row pa-row--bottom">
230
- <div class="pa-col-50">Bottom aligned</div>
270
+ <!-- --grow / --shrink: adjust flex-grow / flex-shrink individually -->
271
+ <div class="pa-row">
272
+ <div class="pa-col-auto">Fixed-size</div>
273
+ <div class="pa-col-auto pa-col--grow">Grows to fill extra space</div>
274
+ <div class="pa-col-auto">Fixed-size</div>
231
275
  </div>
232
276
 
233
277
 
@@ -250,89 +294,157 @@
250
294
 
251
295
  <!-- Two-thirds content + one-third sidebar -->
252
296
  <div class="pa-row">
253
- <div class="pa-col-100 pa-col-md-2-3">
254
- Main content area (2/3)
255
- </div>
256
- <div class="pa-col-100 pa-col-md-1-3">
257
- Sidebar (1/3)
258
- </div>
297
+ <div class="pa-col-100 pa-col-md-2-3">Main content area (2/3)</div>
298
+ <div class="pa-col-100 pa-col-md-1-3">Sidebar (1/3)</div>
259
299
  </div>
260
300
 
261
301
 
262
302
  <!-- OFFSET COLUMNS -->
263
303
 
264
- <!-- Offset from left -->
265
- <div class="pa-row">
266
- <div class="pa-col-50 pa-offset-25">Offset 25% from left</div>
267
- </div>
268
-
269
- <div class="pa-row">
270
- <div class="pa-col-1-3 pa-offset-35">Offset 35% from left</div>
271
- </div>
272
-
273
-
274
- <!-- ALL AVAILABLE CLASSES REFERENCE -->
275
-
276
- <!-- Container: -->
277
- <!-- .pa-row -->
278
-
279
- <!-- Row modifiers: -->
280
- <!-- .pa-row--no-gutter (remove column spacing) -->
281
- <!-- .pa-row--center (center columns horizontally) -->
282
- <!-- .pa-row--end (align columns to right) -->
283
- <!-- .pa-row--between (space between columns) -->
284
- <!-- .pa-row--around (space around columns) -->
285
- <!-- .pa-row--same-height (equal height cards) -->
286
- <!-- .pa-row--top (align items to top) -->
287
- <!-- .pa-row--middle (align items to middle) -->
288
- <!-- .pa-row--bottom (align items to bottom) -->
289
-
290
- <!-- Column classes - 5% increments: -->
291
- <!-- .pa-col (auto equal width) -->
292
- <!-- .pa-col-5 (5%) -->
293
- <!-- .pa-col-10 (10%) -->
294
- <!-- .pa-col-15 (15%) -->
295
- <!-- .pa-col-20 (20%) -->
296
- <!-- .pa-col-25 (25%) -->
297
- <!-- .pa-col-30 (30%) -->
298
- <!-- .pa-col-35 (35%) -->
299
- <!-- .pa-col-40 (40%) -->
300
- <!-- .pa-col-45 (45%) -->
301
- <!-- .pa-col-50 (50%) -->
302
- <!-- .pa-col-55 (55%) -->
303
- <!-- .pa-col-60 (60%) -->
304
- <!-- .pa-col-65 (65%) -->
305
- <!-- .pa-col-70 (70%) -->
306
- <!-- .pa-col-75 (75%) -->
307
- <!-- .pa-col-80 (80%) -->
308
- <!-- .pa-col-85 (85%) -->
309
- <!-- .pa-col-90 (90%) -->
310
- <!-- .pa-col-95 (95%) -->
311
- <!-- .pa-col-100 (100%) -->
312
-
313
- <!-- Column classes - fractions (intuitive naming): -->
314
- <!-- .pa-col-1-2 (50% - 1/2) -->
315
- <!-- .pa-col-1-3 (33.33% - 1/3) -->
316
- <!-- .pa-col-2-3 (66.67% - 2/3) -->
317
- <!-- .pa-col-1-4 (25% - 1/4) -->
318
- <!-- .pa-col-3-4 (75% - 3/4) -->
319
- <!-- .pa-col-1-5 (20% - 1/5) -->
320
- <!-- .pa-col-2-5 (40% - 2/5) -->
321
- <!-- .pa-col-3-5 (60% - 3/5) -->
322
- <!-- .pa-col-4-5 (80% - 4/5) -->
323
- <!-- .pa-col-1-6 (16.67% - 1/6) -->
324
- <!-- .pa-col-5-6 (83.33% - 5/6) -->
325
- <!-- .pa-col-1-12 (8.33% - 1/12) -->
326
- <!-- .pa-col-5-12 (41.67% - 5/12) -->
327
- <!-- .pa-col-7-12 (58.33% - 7/12) -->
328
- <!-- .pa-col-11-12 (91.67% - 11/12) -->
329
-
330
- <!-- Responsive prefixes (add to any column size): -->
331
- <!-- .pa-col-sm-* (≥576px) -->
332
- <!-- .pa-col-md-* (≥768px) -->
333
- <!-- .pa-col-lg-* (≥992px) -->
334
- <!-- .pa-col-xl-* (≥1200px) -->
335
-
336
- <!-- Offset classes (5% increments): -->
337
- <!-- .pa-offset-5 through .pa-offset-95 -->
338
- <!-- .pa-offset-sm-*, .pa-offset-md-*, .pa-offset-lg-*, .pa-offset-xl-* -->
304
+ <!-- Offset from reading start (left in LTR, right in RTL) — uses margin-inline-start -->
305
+ <div class="pa-row">
306
+ <div class="pa-col-50 pa-offset-25">Offset 25% from start</div>
307
+ </div>
308
+
309
+ <div class="pa-row">
310
+ <div class="pa-col-1-3 pa-offset-35">Offset 35% from start</div>
311
+ </div>
312
+
313
+ <!-- Responsive offset (only at md+) -->
314
+ <div class="pa-row">
315
+ <div class="pa-col-100 pa-col-md-50 pa-offset-md-25">Offset only at md+</div>
316
+ </div>
317
+
318
+
319
+ <!-- VISIBILITY HELPERS (use @media, NOT @container — unlike responsive columns) -->
320
+
321
+ <!-- Always hidden / always shown -->
322
+ <div class="pa-hide">Never visible</div>
323
+ <div class="pa-show">Always visible</div>
324
+
325
+ <!-- Breakpoint-up (hide or show at that breakpoint and wider) -->
326
+ <div class="pa-hide-md">Hidden at md and wider</div>
327
+ <div class="pa-show-md">Visible at md and wider (hidden below)</div>
328
+
329
+ <!-- Breakpoint-down (hide or show below that breakpoint) -->
330
+ <div class="pa-hide-below-md">Hidden below md (visible at md and wider)</div>
331
+ <div class="pa-show-below-md">Visible below md (hidden at md and wider)</div>
332
+
333
+ <!-- Common pattern: desktop-only sidebar hidden on mobile -->
334
+ <div class="pa-row">
335
+ <div class="pa-col-100 pa-col-md-25 pa-hide-below-md">Desktop-only sidebar</div>
336
+ <div class="pa-col-100 pa-col-md-75">Main content</div>
337
+ </div>
338
+
339
+
340
+ <!-- ================================
341
+ COMPONENT REFERENCE
342
+ ================================ -->
343
+
344
+ <!--
345
+ BREAKPOINTS ($grid-breakpoints map):
346
+ sm: 576px md: 768px lg: 992px xl: 1200px
347
+ $mobile-breakpoint = 768px (auto-stack threshold)
348
+
349
+ CONTAINMENT CONTEXT:
350
+ Responsive column classes require a container-query ancestor:
351
+ - .pa-layout__main framework default (set automatically)
352
+ - .pa-cq helper class (container-type: inline-size)
353
+
354
+ Without one, pa-col-{sm,md,lg,xl}-* silently do nothing.
355
+ Visibility helpers use @media so they work anywhere.
356
+
357
+ ROW CONTAINER (.pa-row):
358
+ - .pa-row Flex wrap container (-gutter margin-inline)
359
+ - .pa-row--no-gutter Remove horizontal gutter from row + children
360
+ - .pa-row--center justify-content: center
361
+ - .pa-row--end justify-content: flex-end
362
+ - .pa-row--between justify-content: space-between
363
+ - .pa-row--around justify-content: space-around
364
+ - .pa-row--top align-items: flex-start
365
+ - .pa-row--middle align-items: center
366
+ - .pa-row--bottom align-items: flex-end
367
+ - .pa-row--stretch align-items: stretch (default; explicit form)
368
+ - .pa-row--same-height .pa-card inside each column stretches to 100%
369
+
370
+ COLUMNS AUTO / CONTENT:
371
+ - .pa-col flex: 1 (auto-equal with siblings)
372
+ - .pa-col-auto flex: 0 0 auto (content width)
373
+
374
+ COLUMNS PERCENTAGE (5% increments):
375
+ .pa-col-{5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100}
376
+
377
+ COLUMNS FRACTIONS (intuitive aliases):
378
+ 1-2 (50%) 1-3 (33.333%) 2-3 (66.667%)
379
+ 1-4 (25%) 3-4 (75%)
380
+ 1-5 (20%) 2-5 (40%) 3-5 (60%) 4-5 (80%)
381
+ 1-6 (16.667%) 5-6 (83.333%)
382
+ 1-12 (8.333%) 5-12 (41.667%) 7-12 (58.333%) 11-12 (91.667%)
383
+
384
+ COLUMNS — RESPONSIVE (prefix with -sm / -md / -lg / -xl):
385
+ .pa-col-md-50 becomes 50% at md+
386
+ .pa-col-lg-1-3 becomes 1/3 at lg+
387
+ .pa-col-sm-auto becomes content-width at sm+
388
+
389
+ COLUMN MODIFIERS:
390
+ - .pa-col--no-padding Zero the column's gutter padding
391
+ - .pa-col--grow flex-grow: 1 (fills extra space)
392
+ - .pa-col--shrink flex-shrink: 1
393
+
394
+ OFFSETS (5% increments, 5..95):
395
+ - .pa-offset-{5,10,...,95} margin-inline-start
396
+ - .pa-offset-{bp}-{size} responsive, requires @container context
397
+
398
+ VISIBILITY HELPERS (@media, works anywhere):
399
+ - .pa-hide / .pa-show Always hidden / always shown
400
+ - .pa-hide-{bp} / .pa-show-{bp} At breakpoint and wider
401
+ - .pa-hide-below-{bp} / .pa-show-below-{bp} Below breakpoint
402
+
403
+ AUTO BEHAVIOURS:
404
+ - Below 768px ($mobile-breakpoint), bare percentage and fraction columns
405
+ (pa-col-50, pa-col-1-3, etc.) become 100% width; offsets reset to 0.
406
+ Use pa-col-sm-* / pa-col-md-* to override.
407
+ - Columns inside .pa-card__body lose their bottom padding to prevent
408
+ conflict with card padding.
409
+ - Nested .pa-row resets its own margin-inline to 0 so nested grids
410
+ align cleanly with their parent column's padding.
411
+ - min-width: 0 on every column prevents flex overflow from wide content
412
+ (long URLs, long words, etc.) forcing the row wider than the container.
413
+
414
+ STRUCTURE PATTERNS:
415
+
416
+ Responsive stat-card row:
417
+ <div class="pa-row">
418
+ <div class="pa-col-100 pa-col-sm-50 pa-col-lg-25">…</div>
419
+ <div class="pa-col-100 pa-col-sm-50 pa-col-lg-25">…</div>
420
+ <div class="pa-col-100 pa-col-sm-50 pa-col-lg-25">…</div>
421
+ <div class="pa-col-100 pa-col-sm-50 pa-col-lg-25">…</div>
422
+ </div>
423
+
424
+ Sidebar + content layout:
425
+ <div class="pa-row">
426
+ <div class="pa-col-100 pa-col-md-25 pa-hide-below-md">Sidebar</div>
427
+ <div class="pa-col-100 pa-col-md-75">Main</div>
428
+ </div>
429
+
430
+ Content + auto-sized trailing element:
431
+ <div class="pa-row">
432
+ <div class="pa-col">Main content (fills)</div>
433
+ <div class="pa-col-auto">Button</div>
434
+ </div>
435
+
436
+ Same-height cards across columns:
437
+ <div class="pa-row pa-row--same-height">
438
+ <div class="pa-col-1-3"><div class="pa-card">…</div></div>
439
+ <div class="pa-col-1-3"><div class="pa-card">…</div></div>
440
+ <div class="pa-col-1-3"><div class="pa-card">…</div></div>
441
+ </div>
442
+
443
+ Standalone grid outside the framework layout:
444
+ <div class="pa-cq">
445
+ <div class="pa-row">
446
+ <div class="pa-col-100 pa-col-md-50">…</div>
447
+ <div class="pa-col-100 pa-col-md-50">…</div>
448
+ </div>
449
+ </div>
450
+ -->