@dereekb/dbx-components-mcp 14.12.0 → 14.14.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.
@@ -430,6 +430,58 @@
430
430
  },
431
431
  "componentScope": "button"
432
432
  },
433
+ {
434
+ "cssVariable": "--dbx-button-floating-offset",
435
+ "source": "dbx-web",
436
+ "role": "misc",
437
+ "intents": [
438
+ "button floating offset"
439
+ ],
440
+ "description": "Component-scoped override point (`button`) read in `packages/dbx-web/src/lib/button/_button.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--dbx-padding-4)`.",
441
+ "defaults": {
442
+ "light": "var(--dbx-padding-4)"
443
+ },
444
+ "componentScope": "button"
445
+ },
446
+ {
447
+ "cssVariable": "--dbx-button-floating-offset-x",
448
+ "source": "dbx-web",
449
+ "role": "misc",
450
+ "intents": [
451
+ "button floating offset x"
452
+ ],
453
+ "description": "Component-scoped override point (`button`) read in `packages/dbx-web/src/lib/button/_button.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--dbx-button-floating-offset, var(--dbx-padding-4))`.",
454
+ "defaults": {
455
+ "light": "var(--dbx-button-floating-offset, var(--dbx-padding-4))"
456
+ },
457
+ "componentScope": "button"
458
+ },
459
+ {
460
+ "cssVariable": "--dbx-button-floating-offset-y",
461
+ "source": "dbx-web",
462
+ "role": "misc",
463
+ "intents": [
464
+ "button floating offset y"
465
+ ],
466
+ "description": "Component-scoped override point (`button`) read in `packages/dbx-web/src/lib/button/_button.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--dbx-button-floating-offset, var(--dbx-padding-4))`.",
467
+ "defaults": {
468
+ "light": "var(--dbx-button-floating-offset, var(--dbx-padding-4))"
469
+ },
470
+ "componentScope": "button"
471
+ },
472
+ {
473
+ "cssVariable": "--dbx-button-floating-z-index",
474
+ "source": "dbx-web",
475
+ "role": "misc",
476
+ "intents": [
477
+ "button floating z index"
478
+ ],
479
+ "description": "Component-scoped override point (`button`) read in `packages/dbx-web/src/lib/button/_button.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `10`.",
480
+ "defaults": {
481
+ "light": "10"
482
+ },
483
+ "componentScope": "button"
484
+ },
433
485
  {
434
486
  "cssVariable": "--dbx-button-icon-color",
435
487
  "source": "dbx-web",
@@ -991,6 +1043,45 @@
991
1043
  },
992
1044
  "componentScope": "content"
993
1045
  },
1046
+ {
1047
+ "cssVariable": "--dbx-content-pit-border-color",
1048
+ "source": "dbx-web",
1049
+ "role": "color",
1050
+ "intents": [
1051
+ "content pit border color"
1052
+ ],
1053
+ "description": "Component-scoped override point (`content`) read in `packages/dbx-web/src/lib/layout/content/_content.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `color-mix(in srgb, color-mix(in srgb, #{theming.$dbx-bg-color} 50%, var(--mat-sys-on-surface)) var(--dbx-content-pit-border-tone, 8%), transparent)`.",
1054
+ "defaults": {
1055
+ "light": "color-mix(in srgb, color-mix(in srgb, #{theming.$dbx-bg-color} 50%, var(--mat-sys-on-surface)) var(--dbx-content-pit-border-tone, 8%), transparent)"
1056
+ },
1057
+ "componentScope": "content"
1058
+ },
1059
+ {
1060
+ "cssVariable": "--dbx-content-pit-border-tone",
1061
+ "source": "dbx-web",
1062
+ "role": "misc",
1063
+ "intents": [
1064
+ "content pit border tone"
1065
+ ],
1066
+ "description": "Component-scoped override point (`content`) read in `packages/dbx-web/src/lib/layout/content/_content.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `8%`.",
1067
+ "defaults": {
1068
+ "light": "8%"
1069
+ },
1070
+ "componentScope": "content"
1071
+ },
1072
+ {
1073
+ "cssVariable": "--dbx-content-pit-border-width",
1074
+ "source": "dbx-web",
1075
+ "role": "size",
1076
+ "intents": [
1077
+ "content pit border width"
1078
+ ],
1079
+ "description": "Component-scoped override point (`content`) read in `packages/dbx-web/src/lib/layout/content/_content.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `1px`.",
1080
+ "defaults": {
1081
+ "light": "1px"
1082
+ },
1083
+ "componentScope": "content"
1084
+ },
994
1085
  {
995
1086
  "cssVariable": "--dbx-content-pit-opacity",
996
1087
  "source": "dbx-web",
@@ -1110,6 +1201,139 @@
1110
1201
  },
1111
1202
  "componentScope": "text"
1112
1203
  },
1204
+ {
1205
+ "cssVariable": "--dbx-detail-block-tile-background",
1206
+ "source": "dbx-web",
1207
+ "role": "misc",
1208
+ "intents": [
1209
+ "detail block tile background"
1210
+ ],
1211
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--mat-sys-surface-container-high)`.",
1212
+ "defaults": {
1213
+ "light": "var(--mat-sys-surface-container-high)"
1214
+ },
1215
+ "componentScope": "text"
1216
+ },
1217
+ {
1218
+ "cssVariable": "--dbx-detail-block-tile-gap",
1219
+ "source": "dbx-web",
1220
+ "role": "spacing",
1221
+ "intents": [
1222
+ "detail block tile gap",
1223
+ "detail block tile gap spacing"
1224
+ ],
1225
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--dbx-padding-3)`.",
1226
+ "defaults": {
1227
+ "light": "var(--dbx-padding-3)"
1228
+ },
1229
+ "componentScope": "text"
1230
+ },
1231
+ {
1232
+ "cssVariable": "--dbx-detail-block-tile-hint-color",
1233
+ "source": "dbx-web",
1234
+ "role": "color",
1235
+ "intents": [
1236
+ "detail block tile hint color"
1237
+ ],
1238
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--mat-sys-on-surface-variant)`.",
1239
+ "defaults": {
1240
+ "light": "var(--mat-sys-on-surface-variant)"
1241
+ },
1242
+ "componentScope": "text"
1243
+ },
1244
+ {
1245
+ "cssVariable": "--dbx-detail-block-tile-icon-color",
1246
+ "source": "dbx-web",
1247
+ "role": "text-color",
1248
+ "intents": [
1249
+ "detail block tile icon color",
1250
+ "detail block tile icon color text"
1251
+ ],
1252
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--mat-sys-on-surface-variant)`.",
1253
+ "defaults": {
1254
+ "light": "var(--mat-sys-on-surface-variant)"
1255
+ },
1256
+ "componentScope": "text"
1257
+ },
1258
+ {
1259
+ "cssVariable": "--dbx-detail-block-tile-icon-size",
1260
+ "source": "dbx-web",
1261
+ "role": "size",
1262
+ "intents": [
1263
+ "detail block tile icon size"
1264
+ ],
1265
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `16px`.",
1266
+ "defaults": {
1267
+ "light": "16px"
1268
+ },
1269
+ "componentScope": "text"
1270
+ },
1271
+ {
1272
+ "cssVariable": "--dbx-detail-block-tile-label-color",
1273
+ "source": "dbx-web",
1274
+ "role": "color",
1275
+ "intents": [
1276
+ "detail block tile label color"
1277
+ ],
1278
+ "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1279
+ "defaults": {
1280
+ "light": "var(#{theming.$dbx-bg-color-var})"
1281
+ },
1282
+ "componentScope": "text"
1283
+ },
1284
+ {
1285
+ "cssVariable": "--dbx-detail-block-tile-padding-bottom",
1286
+ "source": "dbx-web",
1287
+ "role": "spacing",
1288
+ "intents": [
1289
+ "detail block tile padding bottom",
1290
+ "detail block tile padding bottom spacing"
1291
+ ],
1292
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--dbx-padding-4)`.",
1293
+ "defaults": {
1294
+ "light": "var(--dbx-padding-4)"
1295
+ },
1296
+ "componentScope": "text"
1297
+ },
1298
+ {
1299
+ "cssVariable": "--dbx-detail-block-tile-shape",
1300
+ "source": "dbx-web",
1301
+ "role": "misc",
1302
+ "intents": [
1303
+ "detail block tile shape"
1304
+ ],
1305
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `50%`.",
1306
+ "defaults": {
1307
+ "light": "50%"
1308
+ },
1309
+ "componentScope": "text"
1310
+ },
1311
+ {
1312
+ "cssVariable": "--dbx-detail-block-tile-size",
1313
+ "source": "dbx-web",
1314
+ "role": "size",
1315
+ "intents": [
1316
+ "detail block tile size"
1317
+ ],
1318
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `28px`.",
1319
+ "defaults": {
1320
+ "light": "28px"
1321
+ },
1322
+ "componentScope": "text"
1323
+ },
1324
+ {
1325
+ "cssVariable": "--dbx-detail-block-tile-text-color",
1326
+ "source": "dbx-web",
1327
+ "role": "color",
1328
+ "intents": [
1329
+ "detail block tile text color"
1330
+ ],
1331
+ "description": "Component-scoped override point (`text`) read in `packages/dbx-web/src/lib/layout/text/_text.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `var(--mat-sys-on-surface)`.",
1332
+ "defaults": {
1333
+ "light": "var(--mat-sys-on-surface)"
1334
+ },
1335
+ "componentScope": "text"
1336
+ },
1113
1337
  {
1114
1338
  "cssVariable": "--dbx-dialog-content-padding",
1115
1339
  "source": "dbx-web",
@@ -1286,7 +1510,7 @@
1286
1510
  ],
1287
1511
  "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1288
1512
  "defaults": {
1289
- "light": "var(--dbx-step-block-badge-shape, 50%)"
1513
+ "light": "var(--dbx-detail-block-tile-shape, 50%)"
1290
1514
  },
1291
1515
  "componentScope": "text"
1292
1516
  },
@@ -1299,7 +1523,7 @@
1299
1523
  ],
1300
1524
  "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1301
1525
  "defaults": {
1302
- "light": "var(--dbx-step-block-badge-font-size, var(--mat-sys-label-large-size, 14px))"
1526
+ "light": "var(--dbx-detail-block-tile-icon-size, 16px)"
1303
1527
  },
1304
1528
  "componentScope": "text"
1305
1529
  },
@@ -1325,7 +1549,7 @@
1325
1549
  ],
1326
1550
  "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1327
1551
  "defaults": {
1328
- "light": "var(--dbx-step-block-badge-size, 32px)"
1552
+ "light": "var(--dbx-detail-block-tile-size, 28px)"
1329
1553
  },
1330
1554
  "componentScope": "text"
1331
1555
  },
@@ -1352,7 +1576,7 @@
1352
1576
  ],
1353
1577
  "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1354
1578
  "defaults": {
1355
- "light": "var(--dbx-step-block-badge-size, 32px)"
1579
+ "light": "var(--dbx-detail-block-tile-size, 28px)"
1356
1580
  },
1357
1581
  "componentScope": "text"
1358
1582
  },
@@ -1379,7 +1603,7 @@
1379
1603
  ],
1380
1604
  "description": "Component-scoped token (`text`) declared in `packages/dbx-web/src/lib/layout/text/_text.scss`. Add a sassdoc `///` block above the declaration for richer guidance.",
1381
1605
  "defaults": {
1382
- "light": "var(--dbx-step-block-badge-size, 32px)"
1606
+ "light": "var(--dbx-detail-block-tile-size, 28px)"
1383
1607
  },
1384
1608
  "componentScope": "text"
1385
1609
  },
@@ -75,7 +75,7 @@
75
75
  "selector": "dbx-button",
76
76
  "className": "DbxButtonComponent",
77
77
  "module": "@dereekb/dbx-web",
78
- "description": "Feature-rich button component that supports loading indicators, multiple Material button styles,\ncustom colors, icons, and floating action button (FAB) mode. Integrates with the dbxAction system\nfor automatic working/disabled state management.",
78
+ "description": "Feature-rich button component that supports loading indicators, multiple Material button styles,\ncustom colors, icons, and floating action button (FAB / extended FAB) mode. Integrates with the dbxAction system\nfor automatic working/disabled state management.",
79
79
  "inputs": [
80
80
  {
81
81
  "name": "bar",
@@ -165,7 +165,7 @@
165
165
  {
166
166
  "name": "fab",
167
167
  "type": "boolean",
168
- "description": "",
168
+ "description": "Renders a Material FAB, or an extended FAB when the button has text. Combine with {@link iconOnly} for a round icon button.",
169
169
  "required": false,
170
170
  "default": "false"
171
171
  },
@@ -203,6 +203,52 @@
203
203
  "example": "<dbx-button [text]=\"'Save'\" raised [dbxAction]=\"saveAction\">\n</dbx-button>",
204
204
  "minimalExample": "<dbx-button text=\"Save\" raised [dbxAction]=\"saveAction\"></dbx-button>"
205
205
  },
206
+ {
207
+ "slug": "button-floating",
208
+ "category": "button",
209
+ "kind": "directive",
210
+ "selector": "[dbxButtonFloating]",
211
+ "className": "DbxButtonFloatingDirective",
212
+ "module": "@dereekb/dbx-web",
213
+ "description": "Floats its host — typically a `dbx-button` with `dbxActionButton`, or a wrapper holding several buttons — over the content\nby applying the `.dbx-button-floating` utility classes.\n\nIn the default `'sticky'` mode the host stays pinned to the edge of its scroll container while its parent section is on\nscreen, which suits a Save button at the end of a long form. Place the host at the end of its section for bottom positions and\nat the start for top positions. Sticky stops working when an ancestor between the host and the scroll container sets\n`overflow`. In `'fixed'` mode the host is pinned to the viewport; fixed positioning is re-anchored to any ancestor that sets\n`transform`, `filter` or `contain`.\n\nSet `fab` on the `dbx-button` for the Material FAB presentation (an extended FAB when it has text). Pair with\n`dbxActionEnforceModified` on the action to keep a floating Save button disabled until the form has changes.",
214
+ "inputs": [
215
+ {
216
+ "name": "dbxButtonFloating",
217
+ "type": "Maybe<DbxButtonFloatingConfig | DbxButtonFloatingPosition | ''>",
218
+ "description": "Config for the floating button, or a {@link DbxButtonFloatingPosition} shorthand. Empty when used as a bare attribute.",
219
+ "required": false
220
+ },
221
+ {
222
+ "name": "dbxButtonFloatingMode",
223
+ "type": "Maybe<DbxButtonFloatingMode>",
224
+ "description": "",
225
+ "required": false
226
+ },
227
+ {
228
+ "name": "dbxButtonFloatingPosition",
229
+ "type": "Maybe<DbxButtonFloatingPosition>",
230
+ "description": "",
231
+ "required": false
232
+ },
233
+ {
234
+ "name": "dbxButtonFloatingOffset",
235
+ "type": "Maybe<DbxButtonFloatingOffset>",
236
+ "description": "",
237
+ "required": false
238
+ }
239
+ ],
240
+ "outputs": [],
241
+ "relatedSlugs": [
242
+ "button",
243
+ "button-spacer",
244
+ "content-pit"
245
+ ],
246
+ "skillRefs": [
247
+ "dbx__ref__dbx-ui-building-blocks"
248
+ ],
249
+ "example": "<div dbxAction dbxActionEnforceModified [dbxActionHandler]=\"handleSave\">\n <my-form dbxActionForm></my-form>\n <dbx-button dbxButtonFloating fab color=\"primary\" icon=\"save\" text=\"Save\" dbxActionButton></dbx-button>\n</div>",
250
+ "minimalExample": "<dbx-button dbxButtonFloating fab color=\"primary\" icon=\"save\" text=\"Save\" dbxActionButton></dbx-button>"
251
+ },
206
252
  {
207
253
  "slug": "button-spacer",
208
254
  "category": "button",
@@ -757,7 +803,7 @@
757
803
  "selector": "dbx-progress-spinner-button,dbx-spinner-button",
758
804
  "className": "DbxProgressSpinnerButtonComponent",
759
805
  "module": "@dereekb/dbx-web",
760
- "description": "Progress button that overlays a Material progress spinner on the button while working.\nSupports icon-only, FAB, and text button modes with automatic spinner sizing.",
806
+ "description": "Progress button that overlays a Material progress spinner on the button while working.\nSupports icon-only, FAB, extended FAB, and text button modes with automatic spinner sizing.\n\nA `fab` config renders a Material `mat-fab` — an extended FAB when the button has text — while `fab` + `iconOnly` renders a\nround icon button.",
761
807
  "inputs": [
762
808
  {
763
809
  "name": "config",
@@ -2277,7 +2323,7 @@
2277
2323
  "selector": "dbx-detail-block",
2278
2324
  "className": "DbxDetailBlockComponent",
2279
2325
  "module": "@dereekb/dbx-web",
2280
- "description": "A structured content block with a header row (icon + label) and a detail content area below.\n\nUse the `[header]` content slot for extra header-level content and default content for the detail area.",
2326
+ "description": "A structured content block with a header row (icon + label) and a detail content area below.\n\nUse the `[header]` content slot for extra header-level content and default content for the detail area.\n\nThe component provides the structure only. Add the `dbx-detail-block-tile` class for the tile styling: the icon in a\nround tile beside the content, an uppercase label, and `dbx-detail-block-tile-value` / `dbx-detail-block-tile-hint`\nlines for the value and its supporting text.",
2281
2327
  "inputs": [
2282
2328
  {
2283
2329
  "name": "icon",
@@ -404,6 +404,58 @@
404
404
  }
405
405
  ]
406
406
  },
407
+ {
408
+ "slug": "list-detail-item-grouped-todo",
409
+ "category": "list",
410
+ "summary": "Grouped To Do list: .dbx-list-detail-item rows split into titled sections by dbxListTitleGroup, urgent rows set apart by a colored icon tile instead of a background, no hover effects, the built-in chevron, content-derived row keys so changed text re-renders, and an empty state.",
411
+ "header": ".dbx-list-detail-item Grouped To Do List",
412
+ "className": "DocListDetailItemGroupedTodoExampleComponent",
413
+ "selector": "doc-list-detail-item-grouped-todo-example",
414
+ "module": "apps/demo",
415
+ "appRef": "apps/demo",
416
+ "hint": "The To Do recipe split into titled sections, with urgent rows marked by their icon tile color and no hover effects.",
417
+ "relatedSlugs": [
418
+ "dbx-list",
419
+ "dbx-list-detail-item",
420
+ "dbx-list-no-hover-effects",
421
+ "dbx-list-title-group-header",
422
+ "dbx-list-empty-content",
423
+ "dbx-chip",
424
+ "dbx-icon-tile",
425
+ "dbx-color"
426
+ ],
427
+ "info": "<p>\n The same row recipe as the To Do list above, grouped by\n <code>[dbxListTitleGroup]</code>\n . The delegate maps each item to its section with\n <code>groupValueForItem</code>\n , gives each section its title with\n <code>dataForGroupValue</code>\n , and orders the sections with\n <code>sortGroupsByData</code>\n . The default\n <code>dbx-list-title-group-header</code>\n renders each title.\n</p>\n<p>\n The rows carry no background. An \"Action needed\" row is set apart by its tonal\n <code>dbx-icon-tile</code>\n alone: the expired waiver's tile is\n <code>warn</code>\n and the rest are\n <code>notice</code>\n , while the \"Suggestions\" rows keep a grey tile.\n</p>\n<p>\n The wrapper host adds\n <code>dbx-list-no-hover-effects</code>\n , so hovering a row doesn't add a state layer. The whole row stays the click target, and the view's\n <code>metaConfig</code>\n chevron is the only trailing affordance.\n</p>\n<p>\n The view keys each row by its content (id, title, detail and chip) instead of its id. An item component keeps the item it was created with while its key stays the same, so an id-only key would leave the old text on screen when a count changes. Use\n <strong>Finish a course</strong>\n to watch the \"Courses in progress\" row update, then disappear.\n</p>\n<p>\n Last clicked:\n <code>{{ clickedIdSignal() ?? '(none)' }}</code>\n</p>",
428
+ "snippet": "<div class=\"dbx-button-wrap-group dbx-mb3\">\n <button mat-stroked-button (click)=\"finishCourse()\" [disabled]=\"coursesInProgressSignal() === 0\">Finish a course</button>\n <button mat-stroked-button (click)=\"reset()\">Reset</button>\n <button mat-stroked-button (click)=\"showEmptySignal.set(!showEmptySignal())\">{{ showEmptySignal() ? 'Show to dos' : 'All caught up' }}</button>\n</div>\n<mat-card appearance=\"outlined\" style=\"max-width: 560px\">\n <mat-card-content>\n <h3 class=\"dbx-text-headline-small dbx-m0\">To Do</h3>\n @if (countLabelSignal(); as countLabel) {\n <p class=\"dbx-hint dbx-mb3\">{{ countLabel }}</p>\n }\n <doc-todo-group-item-list [dbxListTitleGroup]=\"groupDelegate\" [state]=\"stateSignal()\">\n <dbx-list-empty-content empty>\n <div class=\"dbx-flex-column dbx-flex-center dbx-text-center dbx-pv4\">\n <dbx-icon-tile class=\"dbx-mb3\" icon=\"task_alt\" [round]=\"true\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"dbx-text-title-medium\">You're all caught up</div>\n <div class=\"dbx-hint\">No action items right now. We'll let you know if something needs your attention.</div>\n </div>\n </dbx-list-empty-content>\n </doc-todo-group-item-list>\n </mat-card-content>\n</mat-card>",
429
+ "uses": [
430
+ {
431
+ "kind": "component",
432
+ "className": "DocTodoGroupItemListComponent",
433
+ "role": "list",
434
+ "selector": "doc-todo-group-item-list",
435
+ "classSource": "@Component({\n selector: 'doc-todo-group-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-auto-height dbx-list-no-hover-effects'\n }\n})\nexport class DocTodoGroupItemListComponent extends AbstractDbxSelectionListWrapperDirective<TodoGroupItemValue> {\n constructor() {\n super({\n componentClass: DocTodoGroupItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
436
+ },
437
+ {
438
+ "kind": "component",
439
+ "className": "DocTodoGroupItemListViewComponent",
440
+ "role": "view",
441
+ "selector": "doc-todo-group-item-list-view",
442
+ "classSource": "@Component({\n selector: 'doc-todo-group-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocTodoGroupItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocTodoGroupItemListViewComponent extends AbstractDbxSelectionListViewDirective<TodoGroupItemValue> {\n // An item component keeps the item it was created with while its key stays the same, so key each row by its content:\n // a changed detail line (e.g. the course count) then renders a fresh row. Drop `icon` (the template paints its own\n // tile); keep `anchor` so the whole row is the click target.\n readonly config: DbxSelectionValueListViewConfig<TodoGroupItemValueWithSelection> = {\n componentClass: DocTodoGroupItemListViewItemComponent,\n metaConfig: DbxListViewMetaIconComponent.metaConfig('chevron_right'),\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, key: [value.id, value.title, value.detail, value.chip?.text].join('|'), itemValue: value, icon: undefined })))\n };\n}"
443
+ },
444
+ {
445
+ "kind": "component",
446
+ "className": "DocTodoGroupItemListViewItemComponent",
447
+ "role": "item",
448
+ "selector": "doc-todo-group-item-list-view-item",
449
+ "classSource": "@Component({\n selector: 'doc-todo-group-item-list-view-item',\n template: `\n <div class=\"dbx-list-detail-item\">\n <dbx-icon-tile class=\"item-leading\" [icon]=\"icon\" [round]=\"true\" [dbxColor]=\"tileColor\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-content\">\n <span class=\"item-title\">{{ title }}</span>\n <span class=\"item-line\">{{ detail }}</span>\n @if (chip; as chip) {\n <span class=\"item-line dbx-pt1\">\n <dbx-chip [color]=\"chip.color\" [small]=\"true\">{{ chip.text }}</dbx-chip>\n </span>\n }\n </div>\n </div>\n `,\n imports: [DbxChipDirective, DbxColorDirective, DbxIconTileComponent]\n})\nexport class DocTodoGroupItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<TodoGroupItemValue> {\n get icon(): string {\n return this.itemValue.icon;\n }\n\n get title(): string {\n return this.itemValue.title;\n }\n\n get detail(): string {\n return this.itemValue.detail;\n }\n\n get chip(): Maybe<TodoItemChip> {\n return this.itemValue.chip;\n }\n\n /**\n * Tile color of the row: an \"Action needed\" row's own color (notice by default), otherwise grey.\n *\n * @returns The row's tile color.\n */\n get tileColor(): DbxThemeColor {\n return this.itemValue.group === 'action_needed' ? (this.itemValue.color ?? 'notice') : 'grey';\n }\n}"
450
+ },
451
+ {
452
+ "kind": "interface",
453
+ "className": "TodoGroupItemValue",
454
+ "role": "data",
455
+ "classSource": "export interface TodoGroupItemValue {\n readonly id: string;\n readonly group: TodoGroupItemGroup;\n readonly icon: string;\n readonly title: string;\n readonly detail: string;\n /**\n * Tile color of an `action_needed` row. Defaults to notice.\n */\n readonly color?: Maybe<DbxThemeColor>;\n readonly chip?: Maybe<TodoItemChip>;\n /**\n * Whole-row click target.\n */\n readonly anchor: ClickableAnchor;\n}"
456
+ }
457
+ ]
458
+ },
407
459
  {
408
460
  "slug": "list-progress-with-button",
409
461
  "category": "list",
@@ -12369,6 +12369,44 @@
12369
12369
  "read-website-protocol"
12370
12370
  ]
12371
12371
  },
12372
+ {
12373
+ "slug": "website-url-relative-path-functions",
12374
+ "name": "websiteUrlRelativePathFunctions",
12375
+ "kind": "factory",
12376
+ "category": "string",
12377
+ "module": "@dereekb/util",
12378
+ "subpath": "string/url",
12379
+ "signature": "websiteUrlRelativePathFunctions(config: WebsiteUrlRelativePathFunctionsConfig): WebsiteUrlRelativePathFunctions",
12380
+ "description": "Creates {@link WebsiteUrlRelativePathFunctions} for the configured base url.\n\nInputs may be the relative path (`dereekb`), a url without a protocol (`linkedin.com/in/dereekb`), or a full url (`https://www.linkedin.com/in/dereekb/?trk=abc`).\nDomains are compared case-insensitively and a leading `www.` is ignored. Query parameters and trailing slashes are removed from the relative path.",
12381
+ "params": [
12382
+ {
12383
+ "name": "config",
12384
+ "type": "WebsiteUrlRelativePathFunctionsConfig",
12385
+ "description": "- The base url and protocol configuration.",
12386
+ "optional": false
12387
+ }
12388
+ ],
12389
+ "returns": "Functions for reading relative paths and building full website urls.",
12390
+ "tags": [
12391
+ "string",
12392
+ "url",
12393
+ "path",
12394
+ "relative",
12395
+ "base",
12396
+ "slug",
12397
+ "username",
12398
+ "profile",
12399
+ "factory",
12400
+ "website",
12401
+ "functions",
12402
+ "websiteurlrelativepathfunctions"
12403
+ ],
12404
+ "example": "const linkedIn = websiteUrlRelativePathFunctions({ baseUrl: 'https://linkedin.com/in/' });\n\nlinkedIn.toRelativePath('linkedin.com/in/dereekb'); // 'dereekb'\nlinkedIn.toWebsiteUrl('dereekb'); // 'https://linkedin.com/in/dereekb'\nlinkedIn.toWebsiteUrl('https://twitter.com/dereekb'); // undefined",
12405
+ "relatedSlugs": [
12406
+ "isolate-website-path-function",
12407
+ "website-url-details"
12408
+ ]
12409
+ },
12372
12410
  {
12373
12411
  "slug": "expand-flatten-tree-function",
12374
12412
  "name": "expandFlattenTreeFunction",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-components-mcp",
3
- "version": "14.12.0",
3
+ "version": "14.14.0",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,7 +12,7 @@
12
12
  "ts-morph": "^21.0.0"
13
13
  },
14
14
  "peerDependencies": {
15
- "@dereekb/dbx-cli": "14.12.0",
16
- "@dereekb/util": "14.12.0"
15
+ "@dereekb/dbx-cli": "14.14.0",
16
+ "@dereekb/util": "14.14.0"
17
17
  }
18
18
  }