@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.
- package/README.md +11 -6
- package/dist/css/main.css +47 -130
- package/package.json +1 -1
- package/snippets/AUDIT.md +94 -0
- package/snippets/alerts.html +264 -89
- package/snippets/badges.html +193 -61
- package/snippets/buttons.html +178 -0
- package/snippets/callouts.html +210 -129
- package/snippets/cards.html +383 -200
- package/snippets/checkbox-lists.html +199 -65
- package/snippets/code.html +55 -11
- package/snippets/command-palette.html +401 -111
- package/snippets/comparison.html +144 -93
- package/snippets/customization.html +311 -104
- package/snippets/data-display.html +584 -0
- package/snippets/detail-panel.html +470 -138
- package/snippets/filter-card.html +246 -0
- package/snippets/forms.html +408 -308
- package/snippets/grid.html +253 -141
- package/snippets/layout.html +379 -480
- package/snippets/lists.html +144 -47
- package/snippets/loaders.html +64 -39
- package/snippets/manifest.json +330 -280
- package/snippets/modal-dialogs.html +137 -64
- package/snippets/modals.html +221 -151
- package/snippets/notifications.html +285 -0
- package/snippets/popconfirm.html +213 -19
- package/snippets/profile.html +290 -330
- package/snippets/statistics.html +247 -0
- package/snippets/tables.html +359 -150
- package/snippets/tabs.html +129 -45
- package/snippets/timeline.html +123 -56
- package/snippets/toasts.html +179 -31
- package/snippets/tooltips.html +199 -81
- package/snippets/typography.html +183 -58
- package/snippets/utilities.html +511 -415
- package/snippets/virtual-scroll.html +201 -75
- package/snippets/web-daterangepicker.html +369 -189
- package/snippets/web-multiselect.html +360 -124
- package/src/scss/core-components/_alerts.scss +51 -12
- package/src/scss/core-components/_pagers.scss +1 -1
- package/src/scss/core-components/_popconfirm.scss +35 -13
- package/src/scss/core-components/_tables.scss +2 -134
- package/src/scss/variables/_components.scss +17 -2
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<!-- ================================
|
|
2
|
+
CHECKBOX LISTS & CUSTOM CHECKBOX COMPONENT
|
|
3
|
+
Pure Admin Visual Framework
|
|
4
|
+
|
|
5
|
+
Two layers in play:
|
|
6
|
+
1. .pa-checkbox (the custom tri-state component from
|
|
7
|
+
_checkboxes-radios.scss; see forms.html for full reference)
|
|
8
|
+
2. .pa-checkbox-list (a list layout that hosts either native
|
|
9
|
+
<input type="checkbox"> or the .pa-checkbox component inside
|
|
10
|
+
its items)
|
|
11
|
+
|
|
12
|
+
The .pa-checkbox-list__checkbox class is a legacy helper for plain
|
|
13
|
+
native inputs. Prefer nesting the full .pa-checkbox component
|
|
14
|
+
inside .pa-checkbox-list__label for new markup — the custom
|
|
15
|
+
component gives you tri-state, sizes, --x, and consistent styling.
|
|
16
|
+
================================ -->
|
|
5
17
|
|
|
6
18
|
<!-- ========================================
|
|
7
19
|
CUSTOM TRI-STATE CHECKBOX COMPONENT
|
|
8
|
-
|
|
20
|
+
Quick reference — full docs live in forms.html
|
|
9
21
|
======================================== -->
|
|
10
22
|
|
|
11
23
|
<!-- Basic Custom Checkbox (Three States) -->
|
|
@@ -134,8 +146,20 @@
|
|
|
134
146
|
</li>
|
|
135
147
|
</ul>
|
|
136
148
|
|
|
137
|
-
<!--
|
|
149
|
+
<!--
|
|
150
|
+
Item States (Selected, Clickable, Disabled, Locked)
|
|
151
|
+
- --selected: accent-light background; indicates active selection
|
|
152
|
+
- --disabled: opacity: 0.5, not-allowed cursor
|
|
153
|
+
- --locked: not-allowed cursor; text inside turns warning-coloured and
|
|
154
|
+
gets a 🔒 emoji via ::before on .pa-checkbox-list__text
|
|
155
|
+
-->
|
|
138
156
|
<ul class="pa-checkbox-list pa-checkbox-list--bordered">
|
|
157
|
+
<li class="pa-checkbox-list__item pa-checkbox-list__item--selected">
|
|
158
|
+
<label class="pa-checkbox-list__label">
|
|
159
|
+
<input type="checkbox" class="pa-checkbox-list__checkbox" id="state0" checked>
|
|
160
|
+
<span class="pa-checkbox-list__text">Selected (accent-light background)</span>
|
|
161
|
+
</label>
|
|
162
|
+
</li>
|
|
139
163
|
<li class="pa-checkbox-list__item">
|
|
140
164
|
<label class="pa-checkbox-list__label">
|
|
141
165
|
<input type="checkbox" class="pa-checkbox-list__checkbox" id="state1">
|
|
@@ -145,7 +169,7 @@
|
|
|
145
169
|
<li class="pa-checkbox-list__item pa-checkbox-list__item--disabled">
|
|
146
170
|
<label class="pa-checkbox-list__label">
|
|
147
171
|
<input type="checkbox" class="pa-checkbox-list__checkbox" id="state2" disabled>
|
|
148
|
-
<span class="pa-checkbox-list__text">Disabled
|
|
172
|
+
<span class="pa-checkbox-list__text">Disabled — feature not available</span>
|
|
149
173
|
</label>
|
|
150
174
|
</li>
|
|
151
175
|
<li class="pa-checkbox-list__item pa-checkbox-list__item--locked">
|
|
@@ -156,27 +180,40 @@
|
|
|
156
180
|
</li>
|
|
157
181
|
</ul>
|
|
158
182
|
|
|
159
|
-
<!--
|
|
183
|
+
<!--
|
|
184
|
+
Checkbox List with Descriptions
|
|
185
|
+
IMPORTANT: .pa-checkbox-list__label is display: flex — so a bare
|
|
186
|
+
__description span alongside the title text would sit next to it, not
|
|
187
|
+
below. Wrap the title + description in a .pa-checkbox-list__text
|
|
188
|
+
(flex: 1) block; then __description (display: block) stacks correctly
|
|
189
|
+
beneath the title.
|
|
190
|
+
-->
|
|
160
191
|
<ul class="pa-checkbox-list">
|
|
161
192
|
<li class="pa-checkbox-list__item">
|
|
162
193
|
<input type="checkbox" class="pa-checkbox-list__checkbox" id="feature1">
|
|
163
194
|
<label class="pa-checkbox-list__label" for="feature1">
|
|
164
|
-
|
|
165
|
-
|
|
195
|
+
<span class="pa-checkbox-list__text">
|
|
196
|
+
Email Notifications
|
|
197
|
+
<span class="pa-checkbox-list__description">Receive updates via email</span>
|
|
198
|
+
</span>
|
|
166
199
|
</label>
|
|
167
200
|
</li>
|
|
168
201
|
<li class="pa-checkbox-list__item">
|
|
169
202
|
<input type="checkbox" class="pa-checkbox-list__checkbox" id="feature2" checked>
|
|
170
203
|
<label class="pa-checkbox-list__label" for="feature2">
|
|
171
|
-
|
|
172
|
-
|
|
204
|
+
<span class="pa-checkbox-list__text">
|
|
205
|
+
SMS Alerts
|
|
206
|
+
<span class="pa-checkbox-list__description">Get urgent alerts via SMS</span>
|
|
207
|
+
</span>
|
|
173
208
|
</label>
|
|
174
209
|
</li>
|
|
175
210
|
<li class="pa-checkbox-list__item">
|
|
176
211
|
<input type="checkbox" class="pa-checkbox-list__checkbox" id="feature3">
|
|
177
212
|
<label class="pa-checkbox-list__label" for="feature3">
|
|
178
|
-
|
|
179
|
-
|
|
213
|
+
<span class="pa-checkbox-list__text">
|
|
214
|
+
Push Notifications
|
|
215
|
+
<span class="pa-checkbox-list__description">Browser push notifications</span>
|
|
216
|
+
</span>
|
|
180
217
|
</label>
|
|
181
218
|
</li>
|
|
182
219
|
</ul>
|
|
@@ -433,58 +470,155 @@
|
|
|
433
470
|
</tbody>
|
|
434
471
|
</table>
|
|
435
472
|
|
|
436
|
-
<!--
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
<!--
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
473
|
+
<!-- ================================
|
|
474
|
+
COMPONENT REFERENCE
|
|
475
|
+
================================ -->
|
|
476
|
+
|
|
477
|
+
<!--
|
|
478
|
+
CUSTOM CHECKBOX COMPONENT (pa-checkbox — see forms.html for full docs):
|
|
479
|
+
- .pa-checkbox Wrapper <label>; hides the native input,
|
|
480
|
+
renders a custom __box + __label.
|
|
481
|
+
- .pa-checkbox__box The drawn-in-CSS checkbox square.
|
|
482
|
+
- .pa-checkbox__label Visible label text.
|
|
483
|
+
- .pa-checkbox--xs / --sm Smaller sizes.
|
|
484
|
+
- (default) Default size.
|
|
485
|
+
- .pa-checkbox--lg / --xl Larger sizes.
|
|
486
|
+
- .pa-checkbox--x Swap the checkmark for an X.
|
|
487
|
+
- .pa-checkbox--disabled Explicit disabled style
|
|
488
|
+
(also auto-applied via :has(input:disabled)).
|
|
489
|
+
- Indeterminate: set via JS — `el.indeterminate = true`. The HTML
|
|
490
|
+
attribute alone does nothing.
|
|
491
|
+
|
|
492
|
+
CHECKBOX LIST (.pa-checkbox-list):
|
|
493
|
+
|
|
494
|
+
Base + items:
|
|
495
|
+
- .pa-checkbox-list List container (flex column; list-style reset).
|
|
496
|
+
- .pa-checkbox-list__item Row; has a bottom border between siblings
|
|
497
|
+
(dropped on :last-child); hover background.
|
|
498
|
+
- .pa-checkbox-list__label Clickable <label>; flex, padding — this is
|
|
499
|
+
what makes the whole row a hitbox.
|
|
500
|
+
|
|
501
|
+
Input flavours (pick one):
|
|
502
|
+
- .pa-checkbox-list__checkbox LEGACY native-style input. Keep for plain
|
|
503
|
+
checkboxes where you don't need tri-state.
|
|
504
|
+
- .pa-checkbox (nested inside __label) The custom
|
|
505
|
+
component. Preferred for new markup.
|
|
506
|
+
|
|
507
|
+
Optional children (inside __label):
|
|
508
|
+
- .pa-checkbox-list__text Wrap the title here so the description
|
|
509
|
+
stacks below it instead of alongside.
|
|
510
|
+
- .pa-checkbox-list__description Muted caption; display: block.
|
|
511
|
+
- .pa-checkbox-list__actions Absolutely positioned button group on
|
|
512
|
+
the inline-end side (pointer-events: none
|
|
513
|
+
on wrapper; the buttons themselves
|
|
514
|
+
re-enable pointer-events). Auto-padding
|
|
515
|
+
on __label keeps text clear of the
|
|
516
|
+
buttons via
|
|
517
|
+
__item:has(__actions) __label {
|
|
518
|
+
padding-inline-end: 6rem
|
|
519
|
+
}.
|
|
520
|
+
|
|
521
|
+
List layout modifiers (compose with base):
|
|
522
|
+
- .pa-checkbox-list--compact Tighter padding (spacing-xs/-sm).
|
|
523
|
+
- .pa-checkbox-list--bordered Border + radius around the whole list.
|
|
524
|
+
- .pa-checkbox-list--striped Zebra stripes on even items.
|
|
525
|
+
- .pa-checkbox-list--inline Flex-wrap chips — items get their own
|
|
526
|
+
border + radius and sit horizontally.
|
|
527
|
+
- .pa-checkbox-list--grid CSS grid: auto-fill columns with a
|
|
528
|
+
minimum 320px column width (1fr max).
|
|
529
|
+
Items get individual borders.
|
|
530
|
+
- .pa-checkbox-list--2col Two equal columns (no gap; vertical
|
|
531
|
+
divider after odd items).
|
|
532
|
+
- .pa-checkbox-list--3col Three equal columns (vertical dividers
|
|
533
|
+
after all but every 3rd item).
|
|
534
|
+
|
|
535
|
+
Item state modifiers:
|
|
536
|
+
- .pa-checkbox-list__item--selected Accent-light background (active).
|
|
537
|
+
- .pa-checkbox-list__item--disabled opacity: 0.5; not-allowed cursor.
|
|
538
|
+
Hover background suppressed.
|
|
539
|
+
(No explicit text-colour change —
|
|
540
|
+
matches the native disabled look.)
|
|
541
|
+
- .pa-checkbox-list__item--locked not-allowed cursor; text inside
|
|
542
|
+
.pa-checkbox-list__text turns
|
|
543
|
+
warning colour and gets a 🔒 emoji
|
|
544
|
+
via ::before. The inner checkbox
|
|
545
|
+
gets opacity: 0.5. Use for
|
|
546
|
+
"requires permission" scenarios —
|
|
547
|
+
distinct from --disabled which
|
|
548
|
+
signals "feature unavailable".
|
|
549
|
+
|
|
550
|
+
TABLE INTEGRATION (rules live in _checkbox-lists.scss):
|
|
551
|
+
- .pa-table__checkbox-col <th>/<td> helper; width: 1%,
|
|
552
|
+
white-space: nowrap, text-align: center.
|
|
553
|
+
- .pa-table__row--selected Accent-light background on the row.
|
|
554
|
+
- th/td .pa-checkbox Implicit rules zero the gap and
|
|
555
|
+
hide .pa-checkbox__label, so you
|
|
556
|
+
can drop a custom checkbox into a
|
|
557
|
+
table cell without extra markup.
|
|
558
|
+
- th/td .pa-checkbox-list__checkbox Legacy native checkbox in cells
|
|
559
|
+
(cursor: pointer, no margin).
|
|
560
|
+
Or just use a plain <input
|
|
561
|
+
type="checkbox"> — the same
|
|
562
|
+
margin/cursor rules apply.
|
|
563
|
+
|
|
564
|
+
STRUCTURE PATTERNS:
|
|
565
|
+
|
|
566
|
+
Basic list (legacy native inputs):
|
|
567
|
+
<ul class="pa-checkbox-list">
|
|
568
|
+
<li class="pa-checkbox-list__item">
|
|
569
|
+
<input type="checkbox" class="pa-checkbox-list__checkbox" id="a">
|
|
570
|
+
<label class="pa-checkbox-list__label" for="a">Option A</label>
|
|
571
|
+
</li>
|
|
572
|
+
</ul>
|
|
470
573
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
574
|
+
Modern pattern with the custom component nested inside the label:
|
|
575
|
+
<ul class="pa-checkbox-list">
|
|
576
|
+
<li class="pa-checkbox-list__item">
|
|
577
|
+
<label class="pa-checkbox-list__label">
|
|
578
|
+
<span class="pa-checkbox">
|
|
579
|
+
<input type="checkbox">
|
|
580
|
+
<span class="pa-checkbox__box"></span>
|
|
581
|
+
</span>
|
|
582
|
+
<span class="pa-checkbox-list__text">Option A</span>
|
|
583
|
+
</label>
|
|
584
|
+
</li>
|
|
585
|
+
</ul>
|
|
480
586
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
587
|
+
With description (title + description must live inside __text):
|
|
588
|
+
<li class="pa-checkbox-list__item">
|
|
589
|
+
<input type="checkbox" class="pa-checkbox-list__checkbox" id="n1">
|
|
590
|
+
<label class="pa-checkbox-list__label" for="n1">
|
|
591
|
+
<span class="pa-checkbox-list__text">
|
|
592
|
+
Email Notifications
|
|
593
|
+
<span class="pa-checkbox-list__description">Receive updates via email</span>
|
|
594
|
+
</span>
|
|
595
|
+
</label>
|
|
596
|
+
</li>
|
|
597
|
+
|
|
598
|
+
With action buttons (the auto-padding on __label keeps text clear):
|
|
599
|
+
<li class="pa-checkbox-list__item">
|
|
600
|
+
<input type="checkbox" class="pa-checkbox-list__checkbox" id="t1">
|
|
601
|
+
<label class="pa-checkbox-list__label" for="t1">Task title</label>
|
|
602
|
+
<div class="pa-checkbox-list__actions">
|
|
603
|
+
<button class="pa-btn pa-btn--xs pa-btn--icon-only pa-btn--secondary">✏️</button>
|
|
604
|
+
<button class="pa-btn pa-btn--xs pa-btn--icon-only pa-btn--danger">🗑️</button>
|
|
605
|
+
</div>
|
|
606
|
+
</li>
|
|
607
|
+
|
|
608
|
+
Table with select-all + row checkboxes:
|
|
609
|
+
<table class="pa-table">
|
|
610
|
+
<thead>
|
|
611
|
+
<tr>
|
|
612
|
+
<th class="pa-table__checkbox-col"><input type="checkbox"></th>
|
|
613
|
+
<th>Name</th>
|
|
614
|
+
</tr>
|
|
615
|
+
</thead>
|
|
616
|
+
<tbody>
|
|
617
|
+
<tr class="pa-table__row--selected">
|
|
618
|
+
<td class="pa-table__checkbox-col"><input type="checkbox" checked></td>
|
|
619
|
+
<td>…</td>
|
|
620
|
+
</tr>
|
|
621
|
+
</tbody>
|
|
622
|
+
</table>
|
|
485
623
|
-->
|
|
486
624
|
|
|
487
|
-
<!-- Table Classes:
|
|
488
|
-
.pa-table__checkbox-col - Checkbox column (width: 1%, centered)
|
|
489
|
-
.pa-table__row--selected - Selected row styling
|
|
490
|
-
-->
|
package/snippets/code.html
CHANGED
|
@@ -141,6 +141,39 @@ app.listen(3000);</pre>
|
|
|
141
141
|
<pre class="pa-code pa-code--compact pa-code--python">print("Hello World")</pre>
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
<!-- ========================================
|
|
145
|
+
LINE-NUMBERED VARIANT
|
|
146
|
+
pa-code--numbered draws a gutter on the inline-start side. It uses
|
|
147
|
+
a CSS counter, so rendered line numbers come from each top-level
|
|
148
|
+
child element — the simplest approach is one <span> per logical
|
|
149
|
+
line. No counter-increment classes needed; the SCSS reset wires
|
|
150
|
+
the counter automatically for direct children.
|
|
151
|
+
======================================== -->
|
|
152
|
+
|
|
153
|
+
<!-- Numbered code block -->
|
|
154
|
+
<pre class="pa-code pa-code--numbered pa-code--javascript">function greet(name) {
|
|
155
|
+
return `Hello, ${name}!`;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
greet('World');</pre>
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
<!-- ========================================
|
|
162
|
+
SYNTAX HIGHLIGHTING (manual)
|
|
163
|
+
Wrap tokens in <span class="pa-code-<token>"> inside a <pre>. These
|
|
164
|
+
classes are colour-only — you still have to tokenize the source
|
|
165
|
+
yourself (or via a highlighter that emits these class names).
|
|
166
|
+
======================================== -->
|
|
167
|
+
|
|
168
|
+
<pre class="pa-code pa-code--javascript"><span class="pa-code-comment">// Greet the user</span>
|
|
169
|
+
<span class="pa-code-keyword">function</span> <span class="pa-code-function">greet</span>(name) {
|
|
170
|
+
<span class="pa-code-keyword">return</span> <span class="pa-code-string">`Hello, ${name}!`</span>;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
<span class="pa-code-keyword">const</span> answer = <span class="pa-code-number">42</span>;
|
|
174
|
+
<span class="pa-code-function">console</span>.<span class="pa-code-property">log</span>(answer);</pre>
|
|
175
|
+
|
|
176
|
+
|
|
144
177
|
<!-- ========================================
|
|
145
178
|
ALL LANGUAGE VARIANTS
|
|
146
179
|
======================================== -->
|
|
@@ -196,30 +229,41 @@ function copyCode(button) {
|
|
|
196
229
|
|
|
197
230
|
<!--
|
|
198
231
|
INLINE CODE:
|
|
199
|
-
- <code> - Inline code element with light background
|
|
232
|
+
- <code> - Inline code element with accent-light background (bare element, no class)
|
|
200
233
|
|
|
201
234
|
CODE BLOCKS:
|
|
202
|
-
- .pa-code - Basic code block (pre
|
|
235
|
+
- .pa-code - Basic code block (use on <pre>); white-space: pre, overflow-x: auto
|
|
203
236
|
- .pa-code--compact - Smaller padding and font size
|
|
204
|
-
- .pa-code--
|
|
205
|
-
- .pa-code--
|
|
206
|
-
- .pa-code--
|
|
207
|
-
- .pa-code--
|
|
208
|
-
- .pa-code--
|
|
209
|
-
- .pa-code--
|
|
210
|
-
- .pa-code--
|
|
237
|
+
- .pa-code--numbered - Line-number gutter on the inline-start side (RTL-aware)
|
|
238
|
+
- .pa-code--javascript - Yellow left border (#f0db4f)
|
|
239
|
+
- .pa-code--json - Amber/orange left border (#f59e0b)
|
|
240
|
+
- .pa-code--html - Red-orange left border (#e34c26)
|
|
241
|
+
- .pa-code--css - Blue left border (#264de4)
|
|
242
|
+
- .pa-code--bash - Green left border (#4eaa25)
|
|
243
|
+
- .pa-code--sql - Teal left border (#00758f)
|
|
244
|
+
- .pa-code--python - Blue left border (#3776ab)
|
|
211
245
|
|
|
212
246
|
CODE BLOCK WITH HEADER:
|
|
213
247
|
- .pa-code-block - Container with border
|
|
214
|
-
- .pa-code-block__header - Header
|
|
248
|
+
- .pa-code-block__header - Header row (title + actions)
|
|
215
249
|
- .pa-code-block__title - Filename or description
|
|
216
|
-
- .pa-code-block__body - Body
|
|
250
|
+
- .pa-code-block__body - Body wrapping .pa-code (strips its border/radius)
|
|
251
|
+
|
|
252
|
+
SYNTAX HIGHLIGHTING (manual token classes — colour only):
|
|
253
|
+
- .pa-code-keyword - Keywords (blue, medium weight)
|
|
254
|
+
- .pa-code-string - String literals (green)
|
|
255
|
+
- .pa-code-number - Numeric literals (orange)
|
|
256
|
+
- .pa-code-comment - Comments (muted text color, italic)
|
|
257
|
+
- .pa-code-function - Function names (purple)
|
|
258
|
+
- .pa-code-property - Property names (pink-red)
|
|
217
259
|
|
|
218
260
|
COMBINE MODIFIERS:
|
|
219
261
|
<pre class="pa-code pa-code--compact pa-code--javascript">
|
|
262
|
+
<pre class="pa-code pa-code--numbered pa-code--python">
|
|
220
263
|
|
|
221
264
|
USAGE:
|
|
222
265
|
Inline: <code>code here</code>
|
|
223
266
|
Block: <pre class="pa-code">code here</pre>
|
|
224
267
|
With language: <pre class="pa-code pa-code--json">{"key": "value"}</pre>
|
|
268
|
+
With highlighting: wrap tokens in <span class="pa-code-keyword">…</span> inside a <pre>.
|
|
225
269
|
-->
|