@dereekb/dbx-web 13.10.7 → 13.10.8

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.
@@ -12,7 +12,7 @@ $dbx-detail-block-bottom-padding: 12px;
12
12
  $dbx-detail-block-content-offset: 30px;
13
13
  $click-to-copy-icon-size: 18px;
14
14
  $dbx-detail-block-big-header-icon-size: 18px;
15
-
15
+ $dbx-icon-tile-default-icon-size: 24px;
16
16
  $dbx-step-block-badge-size: 32px;
17
17
  $dbx-step-block-gap: 16px;
18
18
  $dbx-step-block-padding: 16px;
@@ -23,20 +23,33 @@ $dbx-step-block-badge-font-weight: 600;
23
23
 
24
24
  // MARK: Mixin
25
25
  @mixin core() {
26
+ /// @dbx-utility small
27
+ /// @intent reduced font-size text — 0.8em of inherited size
28
+ /// @role text
26
29
  .dbx-small,
27
30
  .dbx-clear-hint {
28
31
  font-size: 0.8em;
29
32
  }
30
33
 
34
+ /// @dbx-utility label-padded
35
+ /// @intent padded label — adds 6px bottom padding under a label header
36
+ /// @role spacing
37
+ /// @see-also label-block
31
38
  .dbx-label-padded {
32
39
  padding-bottom: $dbx-label-padded-padding;
33
40
  }
34
41
 
42
+ /// @dbx-utility text-center
43
+ /// @intent horizontally centered text
44
+ /// @role text
35
45
  .text-center,
36
46
  .dbx-text-center {
37
47
  text-align: center;
38
48
  }
39
49
 
50
+ /// @dbx-utility u
51
+ /// @intent underlined text decoration
52
+ /// @role text
40
53
  .dbx-u {
41
54
  text-decoration: underline;
42
55
  }
@@ -54,12 +67,21 @@ $dbx-step-block-badge-font-weight: 600;
54
67
  white-space: pre-wrap;
55
68
  }
56
69
 
70
+ /// @dbx-utility iframe
71
+ /// @intent fill-parent iframe with no border — `height: 100%; width: 100%; border: none`
72
+ /// @role layout
57
73
  .dbx-iframe {
58
74
  height: 100%;
59
75
  width: 100%;
60
76
  border: none;
61
77
  }
62
78
 
79
+ /// @dbx-utility label-block
80
+ /// @intent block-level label wrapper — `<dbx-label-block>` body that emits a header line with 3px vertical padding
81
+ /// @role layout
82
+ /// @component DbxLabelBlockComponent
83
+ /// @scope component-class
84
+ /// @see-also detail-block, label-padded
63
85
  .dbx-label-block {
64
86
  display: block;
65
87
  padding: 3px 0;
@@ -100,6 +122,12 @@ $dbx-step-block-badge-font-weight: 600;
100
122
  }
101
123
  }
102
124
 
125
+ /// @dbx-utility detail-block
126
+ /// @intent labeled detail surface — `<dbx-detail-block>` body that places an icon + header above offset content (`.dbx-detail-block-header` + `.dbx-detail-block-content`). Compose with `.dbx-detail-block-big-header` for a larger title and `.dbx-detail-block-header-align` to wrap the header content (e.g. when an aligned `[header]` slot is supplied).
127
+ /// @role layout
128
+ /// @component DbxDetailBlockComponent
129
+ /// @scope component-class
130
+ /// @see-also label-block, step-block
103
131
  .dbx-detail-block {
104
132
  display: block;
105
133
 
@@ -133,6 +161,12 @@ $dbx-step-block-badge-font-weight: 600;
133
161
  }
134
162
  }
135
163
 
164
+ /// @dbx-utility step-block
165
+ /// @intent step row — `<dbx-step-block>` body that lays out a numbered/iconic badge alongside content with a configurable `--dbx-step-block-gap` and `--dbx-step-block-padding`
166
+ /// @role layout
167
+ /// @component DbxStepBlockComponent
168
+ /// @scope component-class
169
+ /// @see-also step-block-badge, detail-block
136
170
  .dbx-step-block {
137
171
  display: flex;
138
172
  flex-direction: row;
@@ -145,27 +179,73 @@ $dbx-step-block-badge-font-weight: 600;
145
179
  align-items: center;
146
180
  }
147
181
 
148
- .dbx-step-block-badge {
149
- width: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
150
- height: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
151
- min-width: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
152
- border-radius: var(--dbx-step-block-badge-shape, 50%);
182
+ // Reusable rounded, padded icon container. Composable with any leading-icon
183
+ // slot and works with `[dbxColor]` for tinted backgrounds. Decoupled from
184
+ // the list layout — usable wherever a leading icon tile is wanted.
185
+ // Also exposed via the `<dbx-icon-tile>` component (DbxIconTileComponent)
186
+ // and the `[dbxIconTile]` directive (DbxIconTileDirective). All sizing,
187
+ // padding, radius, font, and inner icon size are exposed as CSS variables
188
+ // so consumer surfaces (e.g. `.dbx-step-block-badge`) can compose by
189
+ // setting variables instead of rewriting rules. Host-level vars (width /
190
+ // height / min-width / font-size / font-weight) have no fallback so an
191
+ // unset variable produces an invalid declaration the browser ignores —
192
+ // the tile then falls back to natural (auto / inherited) sizing. The
193
+ // inner `.mat-icon` falls back to Material's own 24px default so
194
+ // overriding our selector doesn't shrink the glyph.
195
+ /// @dbx-utility icon-tile
196
+ /// @intent rounded, padded icon container — the visible body of `<dbx-icon-tile>` / `[dbxIconTile]`. Customize via the `--dbx-icon-tile-*` CSS variables.
197
+ /// @role layout
198
+ /// @component DbxIconTileComponent
199
+ /// @scope component-class
200
+ .dbx-icon-tile {
153
201
  display: flex;
154
202
  align-items: center;
155
203
  justify-content: center;
156
- font-size: var(--dbx-step-block-badge-font-size, #{$dbx-step-block-badge-font-size});
157
- font-weight: var(--dbx-step-block-badge-font-weight, #{$dbx-step-block-badge-font-weight});
204
+ border-radius: var(--dbx-icon-tile-border-radius, 12px);
205
+ padding: var(--dbx-icon-tile-padding, 8px);
206
+ width: var(--dbx-icon-tile-width);
207
+ height: var(--dbx-icon-tile-height);
208
+ min-width: var(--dbx-icon-tile-min-width);
209
+ font-size: var(--dbx-icon-tile-font-size);
210
+ font-weight: var(--dbx-icon-tile-font-weight);
158
211
 
159
212
  .mat-icon {
160
- width: var(--dbx-step-block-badge-icon-size, #{$dbx-step-block-badge-icon-size});
161
- height: var(--dbx-step-block-badge-icon-size, #{$dbx-step-block-badge-icon-size});
162
- font-size: var(--dbx-step-block-badge-icon-size, #{$dbx-step-block-badge-icon-size});
213
+ width: var(--dbx-icon-tile-icon-size, $dbx-icon-tile-default-icon-size);
214
+ height: var(--dbx-icon-tile-icon-size, $dbx-icon-tile-default-icon-size);
215
+ font-size: var(--dbx-icon-tile-icon-size, $dbx-icon-tile-default-icon-size);
163
216
  }
164
217
  }
165
218
 
166
- .dbx-step-block-content {
167
- flex: 1;
168
- min-width: 0;
219
+ // Round modifier — turns the rounded-square tile into a circle. Pair
220
+ // with explicit width/height (or square content) to keep it true round.
221
+ /// @dbx-utility icon-tile-round
222
+ /// @intent round modifier — turns `.dbx-icon-tile` into a circle (pair with explicit width/height to keep it true round)
223
+ /// @role layout
224
+ /// @parent icon-tile
225
+ /// @see-also icon-tile
226
+ .dbx-icon-tile-round {
227
+ border-radius: 50%;
228
+ }
229
+
230
+ // Composes `.dbx-icon-tile` — the badge is a fixed-size circle (or
231
+ // square via `--dbx-step-block-badge-shape`) sized through the tile's
232
+ // CSS variables. Padding is reset to 0 because the badge sizes by
233
+ // explicit width/height, not by content + padding.
234
+ /// @dbx-utility step-block-badge
235
+ /// @intent fixed-size badge inside `<dbx-step-block>` — composes `.dbx-icon-tile` and exposes the `--dbx-step-block-badge-*` CSS variables for shape, size, font-size, font-weight, and inner icon size.
236
+ /// @role layout
237
+ /// @component DbxStepBlockComponent
238
+ /// @scope component-class
239
+ /// @see-also icon-tile
240
+ .dbx-step-block-badge {
241
+ --dbx-icon-tile-padding: 0;
242
+ --dbx-icon-tile-border-radius: var(--dbx-step-block-badge-shape, 50%);
243
+ --dbx-icon-tile-width: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
244
+ --dbx-icon-tile-height: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
245
+ --dbx-icon-tile-min-width: var(--dbx-step-block-badge-size, #{$dbx-step-block-badge-size});
246
+ --dbx-icon-tile-font-size: var(--dbx-step-block-badge-font-size, #{$dbx-step-block-badge-font-size});
247
+ --dbx-icon-tile-font-weight: var(--dbx-step-block-badge-font-weight, #{$dbx-step-block-badge-font-weight});
248
+ --dbx-icon-tile-icon-size: var(--dbx-step-block-badge-icon-size, #{$dbx-step-block-badge-icon-size});
169
249
  }
170
250
 
171
251
  .dbx-step-block-header {
@@ -184,21 +264,52 @@ $dbx-step-block-badge-font-weight: 600;
184
264
  opacity: var(--dbx-step-block-hint-opacity, #{$hint-opacity});
185
265
  }
186
266
 
267
+ /// @dbx-utility text-no-overflow
268
+ /// @intent opt out of single-line truncation — wrap content and show overflow
269
+ /// @role text
270
+ /// @see-also dbx-text-truncate
187
271
  .dbx-text-no-overflow {
188
272
  white-space: pre-wrap !important;
189
273
  overflow: visible !important;
190
274
  text-overflow: unset !important;
191
275
  }
192
276
 
277
+ /// @dbx-utility text-truncate
278
+ /// @intent single-line truncation with ellipsis on any block-level element
279
+ /// @role text
280
+ /// @see-also dbx-flex-fill-0
281
+ /// @anti-use Inside a flex item, pair with .dbx-flex-fill-0 — a default flex item won't shrink below its content's intrinsic width.
282
+ // Single-line truncation with ellipsis. Composable on any block-level
283
+ // element. The flex-child variant requires `min-width: 0` on the
284
+ // truncating element (the default `min-width: auto` prevents a flex item
285
+ // from shrinking below its content width).
286
+ .dbx-text-truncate {
287
+ @include theming.limit-text();
288
+ }
289
+
290
+ /// @dbx-utility icon-spacer
291
+ /// @intent right-margin spacer beside an icon — 6px right margin to separate a leading `mat-icon` from text
292
+ /// @role spacing
293
+ /// @see-also chip-spacer, button-spacer
193
294
  .dbx-icon-spacer {
194
295
  margin-right: $icon-spacing;
195
296
  }
196
297
 
298
+ /// @dbx-utility form-description
299
+ /// @intent helper-text styling for a form field description — 75% font size with the standard `mat-form-field` top spacing
300
+ /// @role text
301
+ /// @see-also dbx-hint, dbx-label
197
302
  .dbx-form-description {
198
303
  font-size: 75%;
199
304
  margin-top: 0.6666666667em;
200
305
  }
201
306
 
307
+ /// @dbx-utility chip
308
+ /// @intent chip label — `<dbx-chip>` body that lays out a 14px/500 inline chip; compose with `.dbx-chip-small`, `.dbx-chip-block`, or `.dbx-chip-small-text` for size variants
309
+ /// @role layout
310
+ /// @component DbxChipDirective
311
+ /// @scope component-class
312
+ /// @see-also chip-spacer, chip-margin
202
313
  .dbx-chip {
203
314
  font-size: 14px;
204
315
  font-weight: 500;
@@ -207,6 +318,10 @@ $dbx-step-block-badge-font-weight: 600;
207
318
  white-space: nowrap;
208
319
  }
209
320
 
321
+ /// @dbx-utility chip-spacer
322
+ /// @intent right-margin spacer between adjacent chips — 2px right margin
323
+ /// @role spacing
324
+ /// @see-also chip-margin, icon-spacer
210
325
  .dbx-chip-spacer {
211
326
  margin-right: $chip-spacing;
212
327
  }
@@ -240,6 +355,10 @@ $dbx-step-block-badge-font-weight: 600;
240
355
  border-radius: 0;
241
356
  }
242
357
 
358
+ /// @dbx-utility chip-margin
359
+ /// @intent uniform 4px margin around a chip — use when chips wrap onto multiple rows
360
+ /// @role spacing
361
+ /// @see-also chip-spacer
243
362
  .dbx-chip-margin {
244
363
  margin: 4px;
245
364
  }
@@ -248,11 +367,17 @@ $dbx-step-block-badge-font-weight: 600;
248
367
  margin-left: $icon-spacing;
249
368
  }
250
369
 
370
+ /// @dbx-utility us-address
371
+ /// @intent pre-wrapped, line-tightened US-address text — paint the styling on a `<p>` rendered from `unitedStatesAddressString()` (or use the `<dbx-us-address>` component)
372
+ /// @role text
251
373
  .dbx-us-address {
252
374
  white-space: pre-wrap !important;
253
375
  line-height: 1.4;
254
376
  }
255
377
 
378
+ /// @dbx-utility modelkey
379
+ /// @intent allow line breaks inside long opaque keys/IDs — `line-break: anywhere`
380
+ /// @role text
256
381
  .dbx-modelkey {
257
382
  line-break: anywhere;
258
383
  }
@@ -272,15 +397,27 @@ $dbx-step-block-badge-font-weight: 600;
272
397
  --mat-chip-with-icon-icon-color: #{theming.$dbx-color};
273
398
  }
274
399
 
400
+ /// @dbx-utility hint
401
+ /// @intent muted hint text — 80% opacity (mirrors mat-form-field hint emphasis)
402
+ /// @role text
403
+ /// @see-also dbx-faint, dbx-note
275
404
  .dbx-hint,
276
405
  .dbx-clear-hint {
277
406
  opacity: $hint-opacity;
278
407
  }
279
408
 
409
+ /// @dbx-utility faint
410
+ /// @intent very faint text — 54% opacity (matches mat-hint baseline)
411
+ /// @role text
412
+ /// @see-also dbx-hint, dbx-note
280
413
  .dbx-faint {
281
414
  opacity: $faint-opacity;
282
415
  }
283
416
 
417
+ /// @dbx-utility label
418
+ /// @intent muted form-field label text — 54% opacity (matches `mat-hint`); pair with `<dbx-label-block>` for the standard label-over-content layout
419
+ /// @role text
420
+ /// @see-also label-block, dbx-hint, dbx-form-description
284
421
  .dbx-label,
285
422
  .dbx-sublabel,
286
423
  .dbx-chip-sublabel,
@@ -288,10 +425,17 @@ $dbx-step-block-badge-font-weight: 600;
288
425
  opacity: $mat-hint-opacity;
289
426
  }
290
427
 
428
+ /// @dbx-utility note
429
+ /// @intent secondary note text — 70% opacity (between hint and faint)
430
+ /// @role text
431
+ /// @see-also dbx-hint, dbx-faint
291
432
  .dbx-note {
292
433
  opacity: $note-opacity;
293
434
  }
294
435
 
436
+ /// @dbx-utility outlined-text
437
+ /// @intent on-surface-variant text with a thin surface-tinted outline for legibility over imagery
438
+ /// @role text
295
439
  .dbx-outlined-text {
296
440
  color: var(--mat-sys-on-surface-variant);
297
441
  text-shadow:
@@ -301,6 +445,9 @@ $dbx-step-block-badge-font-weight: 600;
301
445
  1px 1px 0 color-mix(in srgb, var(--mat-sys-surface) 40%, transparent);
302
446
  }
303
447
 
448
+ /// @dbx-utility nowrap
449
+ /// @intent prevent whitespace wrapping (white-space: nowrap)
450
+ /// @role text
304
451
  .dbx-nowrap {
305
452
  white-space: nowrap;
306
453
  }
@@ -327,6 +474,143 @@ $dbx-step-block-badge-font-weight: 600;
327
474
  font-size: var(--mat-sys-body-small-size);
328
475
  }
329
476
 
477
+ // MARK: M3 type-role utilities
478
+ // Apply the full Material 3 `font` shorthand (size + weight + line-height +
479
+ // tracking + family) for a single type role. Compose with .dbx-uppercase /
480
+ // .dbx-tracked-wide for eyebrow-style chrome.
481
+ /// @dbx-utility text-display-large
482
+ /// @intent Material 3 display-large type role — largest hero/expressive headline
483
+ /// @role text
484
+ .dbx-text-display-large {
485
+ font: var(--mat-sys-display-large);
486
+ }
487
+
488
+ /// @dbx-utility text-display-medium
489
+ /// @intent Material 3 display-medium type role — secondary hero headline
490
+ /// @role text
491
+ .dbx-text-display-medium {
492
+ font: var(--mat-sys-display-medium);
493
+ }
494
+
495
+ /// @dbx-utility text-display-small
496
+ /// @intent Material 3 display-small type role — compact hero headline
497
+ /// @role text
498
+ .dbx-text-display-small {
499
+ font: var(--mat-sys-display-small);
500
+ }
501
+
502
+ /// @dbx-utility text-headline-large
503
+ /// @intent Material 3 headline-large type role — primary section heading
504
+ /// @role text
505
+ .dbx-text-headline-large {
506
+ font: var(--mat-sys-headline-large);
507
+ }
508
+
509
+ /// @dbx-utility text-headline-medium
510
+ /// @intent Material 3 headline-medium type role — secondary section heading
511
+ /// @role text
512
+ .dbx-text-headline-medium {
513
+ font: var(--mat-sys-headline-medium);
514
+ }
515
+
516
+ /// @dbx-utility text-headline-small
517
+ /// @intent Material 3 headline-small type role — tertiary section heading
518
+ /// @role text
519
+ .dbx-text-headline-small {
520
+ font: var(--mat-sys-headline-small);
521
+ }
522
+
523
+ /// @dbx-utility text-title-large
524
+ /// @intent Material 3 title-large type role — prominent UI title
525
+ /// @role text
526
+ .dbx-text-title-large {
527
+ font: var(--mat-sys-title-large);
528
+ }
529
+
530
+ /// @dbx-utility text-title-medium
531
+ /// @intent Material 3 title-medium type role — standard UI title
532
+ /// @role text
533
+ .dbx-text-title-medium {
534
+ font: var(--mat-sys-title-medium);
535
+ }
536
+
537
+ /// @dbx-utility text-title-small
538
+ /// @intent Material 3 title-small type role — small UI title
539
+ /// @role text
540
+ .dbx-text-title-small {
541
+ font: var(--mat-sys-title-small);
542
+ }
543
+
544
+ /// @dbx-utility text-body-large
545
+ /// @intent Material 3 body-large type role — long-form body text
546
+ /// @role text
547
+ .dbx-text-body-large {
548
+ font: var(--mat-sys-body-large);
549
+ }
550
+
551
+ /// @dbx-utility text-body-medium
552
+ /// @intent Material 3 body-medium type role — default body text
553
+ /// @role text
554
+ .dbx-text-body-medium {
555
+ font: var(--mat-sys-body-medium);
556
+ }
557
+
558
+ /// @dbx-utility text-body-small
559
+ /// @intent Material 3 body-small type role — supporting body text (captions, hints)
560
+ /// @role text
561
+ .dbx-text-body-small {
562
+ font: var(--mat-sys-body-small);
563
+ }
564
+
565
+ /// @dbx-utility text-label-large
566
+ /// @intent Material 3 label-large type role — button and tab text
567
+ /// @role text
568
+ .dbx-text-label-large {
569
+ font: var(--mat-sys-label-large);
570
+ }
571
+
572
+ /// @dbx-utility text-label-medium
573
+ /// @intent Material 3 label-medium type role — small label text (eyebrows, chips)
574
+ /// @role text
575
+ /// @see-also dbx-uppercase, dbx-tracked-wide
576
+ .dbx-text-label-medium {
577
+ font: var(--mat-sys-label-medium);
578
+ }
579
+
580
+ /// @dbx-utility text-label-small
581
+ /// @intent Material 3 label-small type role — smallest label text
582
+ /// @role text
583
+ .dbx-text-label-small {
584
+ font: var(--mat-sys-label-small);
585
+ }
586
+
587
+ // MARK: Text transforms
588
+ /// @dbx-utility uppercase
589
+ /// @intent uppercase text transform
590
+ /// @role text
591
+ /// @see-also dbx-lowercase, dbx-tracked-wide
592
+ .dbx-uppercase {
593
+ text-transform: uppercase;
594
+ }
595
+
596
+ /// @dbx-utility lowercase
597
+ /// @intent lowercase text transform
598
+ /// @role text
599
+ /// @see-also dbx-uppercase
600
+ .dbx-lowercase {
601
+ text-transform: lowercase;
602
+ }
603
+
604
+ // Eyebrow-style letter-spacing — pairs with .dbx-text-label-medium /
605
+ // .dbx-uppercase to render the M3 "overline" pattern (e.g. card eyebrows).
606
+ /// @dbx-utility tracked-wide
607
+ /// @intent eyebrow letter-spacing (0.08em) — pair with dbx-text-label-medium + dbx-uppercase for the M3 overline pattern
608
+ /// @role text
609
+ /// @see-also dbx-uppercase, dbx-text-label-medium
610
+ .dbx-tracked-wide {
611
+ letter-spacing: 0.08em;
612
+ }
613
+
330
614
  .dbx-click-to-copy-text-icon.mat-icon {
331
615
  width: $click-to-copy-icon-size;
332
616
  height: $click-to-copy-icon-size;
@@ -7,10 +7,16 @@ $linear-line-height: 4px;
7
7
 
8
8
  // MARK: Mixin
9
9
  @mixin core() {
10
+ /// @dbx-utility loading-linear-done-padding
11
+ /// @intent reserve the 4px height of a linear progress bar after it finishes — top-padding placeholder so siblings don't shift when the bar is hidden
12
+ /// @role spacing
10
13
  .dbx-loading-linear-done-padding {
11
14
  padding-top: $linear-line-height;
12
15
  }
13
16
 
17
+ /// @dbx-utility loading-progress-hint
18
+ /// @intent 4px top padding for the hint message below a `<dbx-loading-progress>` indicator
19
+ /// @role spacing
14
20
  .dbx-loading-progress-hint {
15
21
  padding-top: 4px;
16
22
  }
package/package.json CHANGED
@@ -1,20 +1,24 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-web",
3
- "version": "13.10.7",
3
+ "version": "13.10.8",
4
+ "sideEffects": [
5
+ "*.scss",
6
+ "*.css"
7
+ ],
4
8
  "peerDependencies": {
5
- "@angular/cdk": "^21.2.8",
6
- "@angular/common": "21.2.10",
7
- "@angular/core": "21.2.10",
8
- "@angular/forms": "21.2.10",
9
- "@angular/material": "^21.2.8",
10
- "@angular/platform-browser": "21.2.10",
9
+ "@angular/cdk": "^21.2.9",
10
+ "@angular/common": "21.2.11",
11
+ "@angular/core": "21.2.11",
12
+ "@angular/forms": "21.2.11",
13
+ "@angular/material": "^21.2.9",
14
+ "@angular/platform-browser": "21.2.11",
11
15
  "@cantoo/pdf-lib": "^2.6.5",
12
- "@dereekb/browser": "13.10.7",
13
- "@dereekb/date": "13.10.7",
14
- "@dereekb/dbx-core": "13.10.7",
15
- "@dereekb/rxjs": "13.10.7",
16
- "@dereekb/util": "13.10.7",
17
- "@dereekb/vitest": "13.10.7",
16
+ "@dereekb/browser": "13.10.8",
17
+ "@dereekb/date": "13.10.8",
18
+ "@dereekb/dbx-core": "13.10.8",
19
+ "@dereekb/rxjs": "13.10.8",
20
+ "@dereekb/util": "13.10.8",
21
+ "@dereekb/vitest": "13.10.8",
18
22
  "@ngbracket/ngx-layout": "^21.0.0",
19
23
  "@ngrx/component-store": "^21.1.0",
20
24
  "@ngrx/effects": "^21.1.0",
@@ -47,17 +51,26 @@
47
51
  "types": "./types/dereekb-dbx-web-calendar.d.ts",
48
52
  "default": "./fesm2022/dereekb-dbx-web-calendar.mjs"
49
53
  },
54
+ "./docs": {
55
+ "types": "./types/dereekb-dbx-web-docs.d.ts",
56
+ "default": "./fesm2022/dereekb-dbx-web-docs.mjs"
57
+ },
50
58
  "./table": {
51
59
  "types": "./types/dereekb-dbx-web-table.d.ts",
52
60
  "default": "./fesm2022/dereekb-dbx-web-table.mjs"
53
61
  },
62
+ "./eslint": {
63
+ "module": "./eslint/index.esm.js",
64
+ "types": "./eslint/index.d.ts",
65
+ "import": "./eslint/index.cjs.mjs",
66
+ "default": "./eslint/index.cjs.js"
67
+ },
54
68
  "./package.json": {
55
69
  "default": "./package.json"
56
70
  }
57
71
  },
58
72
  "module": "fesm2022/dereekb-dbx-web.mjs",
59
73
  "typings": "types/dereekb-dbx-web.d.ts",
60
- "sideEffects": false,
61
74
  "type": "module",
62
75
  "dependencies": {
63
76
  "tslib": "^2.3.0"
@@ -0,0 +1,73 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ /**
4
+ * Wrapper for a single self-contained documentation UI example.
5
+ *
6
+ * The `<dbx-docs-ui-example>` element is the parser contract for the
7
+ * `@dereekb/dbx-components-mcp` UI examples scanner: every example component
8
+ * tagged with `@dbxDocsUiExample` must render exactly one of these as the
9
+ * template root, with the runnable snippet placed inside
10
+ * `<dbx-docs-ui-example-content>` and descriptive prose inside
11
+ * `<dbx-docs-ui-example-info>`. Optional `<dbx-docs-ui-example-imports>` and
12
+ * `<dbx-docs-ui-example-notes>` slots are also picked up by the scanner.
13
+ *
14
+ * Selector and child element names are stable — renaming them would break
15
+ * the scanner's deterministic anchors, so treat the names as a public
16
+ * contract on par with a JSDoc tag vocabulary.
17
+ */
18
+ declare class DbxDocsUiExampleComponent {
19
+ readonly header: i0.InputSignal<string>;
20
+ readonly hint: i0.InputSignal<string | undefined>;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxDocsUiExampleComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxDocsUiExampleComponent, "dbx-docs-ui-example", never, { "header": { "alias": "header"; "required": true; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
23
+ }
24
+
25
+ /**
26
+ * Descriptive prose slot inside a `<dbx-docs-ui-example>`.
27
+ *
28
+ * The MCP scanner extracts the projected content as the example entry's
29
+ * `info` field. Multiple `<dbx-docs-ui-example-info>` children are joined in
30
+ * source order. Free-form HTML / inline markdown is allowed.
31
+ */
32
+ declare class DbxDocsUiExampleInfoComponent {
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxDocsUiExampleInfoComponent, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxDocsUiExampleInfoComponent, "dbx-docs-ui-example-info", never, {}, {}, never, ["*"], true, never>;
35
+ }
36
+
37
+ /**
38
+ * Runnable-snippet slot inside a `<dbx-docs-ui-example>`.
39
+ *
40
+ * The MCP scanner extracts the projected HTML body as the example entry's
41
+ * `snippet` field. Whatever is inside this element is treated as the literal
42
+ * code shown to LLM consumers — keep it minimal, copy-paste-ready, and free of
43
+ * documentation-only chrome.
44
+ */
45
+ declare class DbxDocsUiExampleContentComponent {
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxDocsUiExampleContentComponent, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxDocsUiExampleContentComponent, "dbx-docs-ui-example-content", never, {}, {}, never, ["*"], true, never>;
48
+ }
49
+
50
+ /**
51
+ * Optional `import { … }` block slot inside a `<dbx-docs-ui-example>`.
52
+ *
53
+ * The MCP scanner extracts the projected text as the example entry's optional
54
+ * `imports` field. Use this for the import lines a consumer would copy along
55
+ * with the runnable snippet.
56
+ */
57
+ declare class DbxDocsUiExampleImportsComponent {
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxDocsUiExampleImportsComponent, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxDocsUiExampleImportsComponent, "dbx-docs-ui-example-imports", never, {}, {}, never, ["*"], true, never>;
60
+ }
61
+
62
+ /**
63
+ * Optional footnotes slot inside a `<dbx-docs-ui-example>`.
64
+ *
65
+ * The MCP scanner extracts the projected content as the example entry's
66
+ * optional `notes` field, appended to `full`-depth output.
67
+ */
68
+ declare class DbxDocsUiExampleNotesComponent {
69
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxDocsUiExampleNotesComponent, never>;
70
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxDocsUiExampleNotesComponent, "dbx-docs-ui-example-notes", never, {}, {}, never, ["*"], true, never>;
71
+ }
72
+
73
+ export { DbxDocsUiExampleComponent, DbxDocsUiExampleContentComponent, DbxDocsUiExampleImportsComponent, DbxDocsUiExampleInfoComponent, DbxDocsUiExampleNotesComponent };