@dereekb/dbx-components-mcp 13.11.16 → 13.11.17
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.
|
@@ -1547,6 +1547,50 @@
|
|
|
1547
1547
|
"label-block"
|
|
1548
1548
|
]
|
|
1549
1549
|
},
|
|
1550
|
+
{
|
|
1551
|
+
"slug": "link",
|
|
1552
|
+
"selector": ".dbx-link",
|
|
1553
|
+
"source": "@dereekb/dbx-web",
|
|
1554
|
+
"module": "@dereekb/dbx-web",
|
|
1555
|
+
"file": "src/lib/router/layout/anchor/_anchor.scss",
|
|
1556
|
+
"line": 30,
|
|
1557
|
+
"declarations": [
|
|
1558
|
+
{
|
|
1559
|
+
"property": "text-decoration",
|
|
1560
|
+
"value": "underline"
|
|
1561
|
+
},
|
|
1562
|
+
{
|
|
1563
|
+
"property": "cursor",
|
|
1564
|
+
"value": "pointer"
|
|
1565
|
+
}
|
|
1566
|
+
],
|
|
1567
|
+
"role": "interaction",
|
|
1568
|
+
"intent": "clickable link affordance — underlined text with pointer cursor; pair with `[dbxTextColor]` or a text color utility for the link color. NOTE: `<dbx-anchor>` renders an inner `<a class=\"dbx-anchor-a\">` with `text-decoration: none`, so apply this class to the projected content (e.g. a `<span>` inside the anchor) rather than the `<dbx-anchor>` host.",
|
|
1569
|
+
"seeAlso": [
|
|
1570
|
+
"link-hover",
|
|
1571
|
+
"dbx-u"
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"slug": "link-hover",
|
|
1576
|
+
"selector": ".dbx-link-hover",
|
|
1577
|
+
"source": "@dereekb/dbx-web",
|
|
1578
|
+
"module": "@dereekb/dbx-web",
|
|
1579
|
+
"file": "src/lib/router/layout/anchor/_anchor.scss",
|
|
1580
|
+
"line": 39,
|
|
1581
|
+
"declarations": [
|
|
1582
|
+
{
|
|
1583
|
+
"property": "cursor",
|
|
1584
|
+
"value": "pointer"
|
|
1585
|
+
}
|
|
1586
|
+
],
|
|
1587
|
+
"role": "interaction",
|
|
1588
|
+
"intent": "clickable link affordance with hover-only underline — pointer cursor always, underline only on hover; pair with `[dbxTextColor]` or a text color utility for the link color. NOTE: `<dbx-anchor>` renders an inner `<a class=\"dbx-anchor-a\">` with `text-decoration: none`, so apply this class to the projected content (e.g. a `<span>` inside the anchor) rather than the `<dbx-anchor>` host.",
|
|
1589
|
+
"seeAlso": [
|
|
1590
|
+
"link",
|
|
1591
|
+
"dbx-u"
|
|
1592
|
+
]
|
|
1593
|
+
},
|
|
1550
1594
|
{
|
|
1551
1595
|
"slug": "list-card-items-list",
|
|
1552
1596
|
"selector": ".dbx-list-card-items-list",
|
|
@@ -270,10 +270,12 @@
|
|
|
270
270
|
"dbx-anchor",
|
|
271
271
|
"dbx-icon-tile",
|
|
272
272
|
"mat-form-field",
|
|
273
|
-
"mat-snack-bar"
|
|
273
|
+
"mat-snack-bar",
|
|
274
|
+
"dbx-link",
|
|
275
|
+
"dbx-link-hover"
|
|
274
276
|
],
|
|
275
|
-
"info": "<p>\n Composes a marketing-style support page out of Angular Material cards plus dbx-web's\n <code><dbx-button></code>\n ,\n <code><dbx-anchor></code>\n , and\n <code><dbx-icon-tile></code>\n : an outlined hero\n <code><mat-card></code>\n for the search/CTA row and a responsive grid of outlined topic\n <code><mat-card></code>\n boxes whose rows are individual\n <code><dbx-anchor [anchor]></code>\n click targets.\n</p>\n<p>\n The topic grid uses Angular Flex Layout's CSS-Grid directives —\n <code>gdColumns=\"repeat(auto-fit, minmax(320px, 1fr))\"</code>\n +\n <code>gdGap</code>\n — so the cards auto-collapse 3 → 2 → 1 columns as the viewport narrows, with no breakpoint media queries or wrapping\n <code>fxFlex</code>\n shells needed. The hero CTA + search row uses\n <code>fxLayout=\"row\"</code>\n with\n <code>fxLayout.lt-md=\"column\"</code>\n so it stacks below the tablet breakpoint. The CTA itself composes the\n <code>.dbx-grow-button</code>\n +\n <code>.dbx-button-big</code>\n utilities (full-width, taller mat-button) instead of hand-rolled\n <code>::ng-deep</code>\n width / height overrides.\n</p>\n<p>\n Topic-card avatars are\n <code><dbx-icon-tile [round]></code>\n with\n <code>[dbxColor]=\"'primary'\"</code>\n +\n <code>[dbxColorTone]=\"18\"</code>\n for the tonal swatch. Each card body is a plain\n <code><ul></code>\n /\n <code><li></code>\n so the browser's default disc marker supplies the bullet, and topic links use\n <code>[dbxTextColor]=\"'primary'\"</code>\n
|
|
276
|
-
"snippet": "<div class=\"dbx-p4 doc-support-page\">\n <h1 class=\"dbx-text-headline-large dbx-mb1\">Lorem Ipsum Support</h1>\n <p class=\"dbx-text-body-large dbx-mb4\">Dolor sit amet — we're here to help you succeed!</p>\n\n <mat-card appearance=\"outlined\" class=\"dbx-mb4\">\n <mat-card-content>\n <h3 class=\"dbx-text-title-medium dbx-mb3\">Need help? We're here.</h3>\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap=\"var(--dbx-padding-3)\" fxLayoutAlign=\"start stretch\">\n <dbx-button class=\"dbx-grow-button dbx-button-form-field-height\" fxFlex=\"1 1 50%\" flat icon=\"help_outline\" text=\"Chat with Support\" customButtonColor=\"var(--mat-sys-inverse-surface)\" customTextColor=\"var(--mat-sys-inverse-on-surface)\" (buttonClick)=\"onChatClick()\"></dbx-button>\n <mat-form-field class=\"dbx-p0\" appearance=\"outline\" fxFlex=\"1 1 50%\" subscriptSizing=\"dynamic\">\n <input matInput placeholder=\"Search for a topic or question…\" />\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div gdColumns=\"repeat(auto-fit, minmax(320px, 1fr))\" gdGap=\"var(--dbx-padding-5)\">\n @for (group of topics; track group.title) {\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"var(--dbx-padding-2)\" class=\"dbx-mb3\">\n <dbx-icon-tile class=\"doc-support-topic-avatar\" [icon]=\"group.icon\" [round]=\"true\"></dbx-icon-tile>\n <span class=\"dbx-text-title-medium\">{{ group.title }}</span>\n </div>\n <ul class=\"doc-support-topic-links\">\n @for (link of group.links; track link.label) {\n <li class=\"dbx-pb2\">\n <dbx-anchor [dbxTextColor]=\"'primary'\" [anchor]=\"anchorFor(link)\">{{ link.label }}</dbx-anchor>\n </li>\n }\n </ul>\n </mat-card-content>\n </mat-card>\n }\n </div>\n</div>",
|
|
277
|
+
"info": "<p>\n Composes a marketing-style support page out of Angular Material cards plus dbx-web's\n <code><dbx-button></code>\n ,\n <code><dbx-anchor></code>\n , and\n <code><dbx-icon-tile></code>\n : an outlined hero\n <code><mat-card></code>\n for the search/CTA row and a responsive grid of outlined topic\n <code><mat-card></code>\n boxes whose rows are individual\n <code><dbx-anchor [anchor]></code>\n click targets.\n</p>\n<p>\n The topic grid uses Angular Flex Layout's CSS-Grid directives —\n <code>gdColumns=\"repeat(auto-fit, minmax(320px, 1fr))\"</code>\n +\n <code>gdGap</code>\n — so the cards auto-collapse 3 → 2 → 1 columns as the viewport narrows, with no breakpoint media queries or wrapping\n <code>fxFlex</code>\n shells needed. The hero CTA + search row uses\n <code>fxLayout=\"row\"</code>\n with\n <code>fxLayout.lt-md=\"column\"</code>\n so it stacks below the tablet breakpoint. The CTA itself composes the\n <code>.dbx-grow-button</code>\n +\n <code>.dbx-button-big</code>\n utilities (full-width, taller mat-button) instead of hand-rolled\n <code>::ng-deep</code>\n width / height overrides.\n</p>\n<p>\n Topic-card avatars are\n <code><dbx-icon-tile [round]></code>\n with\n <code>[dbxColor]=\"'primary'\"</code>\n +\n <code>[dbxColorTone]=\"18\"</code>\n for the tonal swatch. Each card body is a plain\n <code><ul></code>\n /\n <code><li></code>\n so the browser's default disc marker supplies the bullet, and topic links use\n <code>[dbxTextColor]=\"'primary'\"</code>\n for the link color plus a\n <code><span class=\"dbx-link-hover\"></code>\n wrapper around the projected label for the hover-only-underline affordance. The\n <code>.dbx-link-hover</code>\n /\n <code>.dbx-link</code>\n utilities pair with\n <code>.dbx-u</code>\n —\n <code>.dbx-link</code>\n is always underlined,\n <code>.dbx-link-hover</code>\n underlines on hover, both keep a pointer cursor. The class lives on the projected\n <code><span></code>\n rather than the\n <code><dbx-anchor></code>\n host because\n <code>dbx-anchor</code>\n 's internal\n <code><a class=\"dbx-anchor-a\"></code>\n bakes in\n <code>text-decoration: none</code>\n and would strip a host-level\n <code>.dbx-link</code>\n .\n</p>\n<p>\n Each topic row supplies a\n <code>ClickableAnchor</code>\n with an\n <code>onClick</code>\n callback to\n <code>dbx-anchor</code>\n ; the callback opens a\n <code>MatSnackBar</code>\n with a \"Dismiss\" action so every link demonstrably triggers a button-bearing popup. Swap the\n <code>onClick</code>\n for a\n <code>ref</code>\n /\n <code>url</code>\n to route or open externally instead.\n</p>",
|
|
278
|
+
"snippet": "<div class=\"dbx-p4 doc-support-page\">\n <h1 class=\"dbx-text-headline-large dbx-mb1\">Lorem Ipsum Support</h1>\n <p class=\"dbx-text-body-large dbx-mb4\">Dolor sit amet — we're here to help you succeed!</p>\n\n <mat-card appearance=\"outlined\" class=\"dbx-mb4\">\n <mat-card-content>\n <h3 class=\"dbx-text-title-medium dbx-mb3\">Need help? We're here.</h3>\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap=\"var(--dbx-padding-3)\" fxLayoutAlign=\"start stretch\">\n <dbx-button class=\"dbx-grow-button dbx-button-form-field-height\" fxFlex=\"1 1 50%\" flat icon=\"help_outline\" text=\"Chat with Support\" customButtonColor=\"var(--mat-sys-inverse-surface)\" customTextColor=\"var(--mat-sys-inverse-on-surface)\" (buttonClick)=\"onChatClick()\"></dbx-button>\n <mat-form-field class=\"dbx-p0\" appearance=\"outline\" fxFlex=\"1 1 50%\" subscriptSizing=\"dynamic\">\n <input matInput placeholder=\"Search for a topic or question…\" />\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div gdColumns=\"repeat(auto-fit, minmax(320px, 1fr))\" gdGap=\"var(--dbx-padding-5)\">\n @for (group of topics; track group.title) {\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"var(--dbx-padding-2)\" class=\"dbx-mb3\">\n <dbx-icon-tile class=\"doc-support-topic-avatar\" [icon]=\"group.icon\" [round]=\"true\"></dbx-icon-tile>\n <span class=\"dbx-text-title-medium\">{{ group.title }}</span>\n </div>\n <ul class=\"doc-support-topic-links\">\n @for (link of group.links; track link.label) {\n <li class=\"dbx-pb2\">\n <dbx-anchor [dbxTextColor]=\"'primary'\" [anchor]=\"anchorFor(link)\">\n <span class=\"dbx-link-hover\">{{ link.label }}</span>\n </dbx-anchor>\n </li>\n }\n </ul>\n </mat-card-content>\n </mat-card>\n }\n </div>\n</div>",
|
|
277
279
|
"uses": []
|
|
278
280
|
}
|
|
279
281
|
]
|
|
@@ -647,6 +647,70 @@
|
|
|
647
647
|
}
|
|
648
648
|
]
|
|
649
649
|
},
|
|
650
|
+
{
|
|
651
|
+
"code": "MODEL_GROUP_MISSING_CRUD_SPEC",
|
|
652
|
+
"source": "dbx_model_test_validate_app",
|
|
653
|
+
"severity": "warning",
|
|
654
|
+
"title": "A model group declared on the component side has no `<group>.crud.spec.ts`",
|
|
655
|
+
"whatItFlags": "A model group declared on the component side has no `<group>.crud.spec.ts`\nfile on the API side. Every model group is expected to have at least a\nbaseline CRUD spec exercising create / read / update / delete plus\npermission paths. Scenario specs are optional.",
|
|
656
|
+
"whenItApplies": "Every model group enumerated from the `-firebase` component (`<componentDir>/src/lib/model/<group>/`) that doesn't have a matching `<group>.crud.spec.ts` under `<apiDir>/src/app/function/<group>/`.",
|
|
657
|
+
"whenItDoesNotApply": "Reserved folders (`system`, `notification`, `storagefile`) — those follow distinct test layouts. Cross-group integration tests likewise don't satisfy this rule for their host group.",
|
|
658
|
+
"canonicalFix": "Add `<apiDir>/src/app/function/<group>/<group>.crud.spec.ts` covering the CRUD function map for the group. Use `dbx_model_test_convention` to fetch the canonical path.",
|
|
659
|
+
"seeAlso": [
|
|
660
|
+
{
|
|
661
|
+
"kind": "tool",
|
|
662
|
+
"target": "dbx_model_test_convention"
|
|
663
|
+
}
|
|
664
|
+
]
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
"code": "TEST_FILE_DRIFT_RENAME",
|
|
668
|
+
"source": "dbx_model_test_validate_app",
|
|
669
|
+
"severity": "warning",
|
|
670
|
+
"title": "Spec filename uses a `crud` / `scenario` segment that is not directly",
|
|
671
|
+
"whatItFlags": "Spec filename uses a `crud` / `scenario` segment that is not directly\nafter the group name (e.g. `worker.payroll.scenario.spec.ts` or\n`worker.pay.crud.spec.ts`). The canonical form places the bucket\nmarker immediately after the group: `<group>.scenario.<sub>.spec.ts`\nor `<group>.crud.<sub>.spec.ts`.",
|
|
672
|
+
"whenItApplies": "Any spec file under `<apiDir>/src/app/function/<group>/` where the `crud` / `scenario` segment is not the first non-group segment.",
|
|
673
|
+
"whenItDoesNotApply": "Canonical subgroup names like `job.crud.requirement.spec.ts` — there `crud` is already first.",
|
|
674
|
+
"canonicalFix": "Rename to the canonical `<group>.<bucket>.<sub>.spec.ts` form. The validator emits the recommended filename as part of the violation message.",
|
|
675
|
+
"seeAlso": [
|
|
676
|
+
{
|
|
677
|
+
"kind": "tool",
|
|
678
|
+
"target": "dbx_model_test_convention"
|
|
679
|
+
}
|
|
680
|
+
]
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
"code": "TEST_FILE_MISSING_BUCKET",
|
|
684
|
+
"source": "dbx_model_test_validate_app",
|
|
685
|
+
"severity": "warning",
|
|
686
|
+
"title": "Spec filename is missing a `crud` / `scenario` bucket segment entirely",
|
|
687
|
+
"whatItFlags": "Spec filename is missing a `crud` / `scenario` bucket segment entirely\n(e.g. `worker.system.spec.ts`). The validator can't tell whether the\nfile documents CRUD behavior or a workflow scenario — the author must\nchoose one.",
|
|
688
|
+
"whenItApplies": "Spec files where no segment after the group name is `crud` or `scenario`.",
|
|
689
|
+
"whenItDoesNotApply": "Files that already have a `crud` / `scenario` marker anywhere in the name (those surface `TEST_FILE_DRIFT_RENAME` instead when misplaced).",
|
|
690
|
+
"canonicalFix": "Decide whether the file's tests are CRUD-flavored or scenario-flavored, then rename to `<group>.crud.<sub>.spec.ts` or `<group>.scenario.<sub>.spec.ts`. Default to `scenario` when in doubt.",
|
|
691
|
+
"seeAlso": [
|
|
692
|
+
{
|
|
693
|
+
"kind": "tool",
|
|
694
|
+
"target": "dbx_model_test_convention"
|
|
695
|
+
}
|
|
696
|
+
]
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
"code": "TEST_FILE_NON_GROUP_PLACEMENT",
|
|
700
|
+
"source": "dbx_model_test_validate_app",
|
|
701
|
+
"severity": "warning",
|
|
702
|
+
"title": "Spec file's first filename segment doesn't match its parent folder",
|
|
703
|
+
"whatItFlags": "Spec file's first filename segment doesn't match its parent folder\n(e.g. `storagefile.scenario.jobrequirement.spec.ts` placed under the\n`job/` folder). Tests should live in the folder of the model group\nnamed by their filename prefix.",
|
|
704
|
+
"whenItApplies": "Any `.spec.ts` whose first dot-separated segment differs from the immediate parent folder name.",
|
|
705
|
+
"whenItDoesNotApply": "Spec files that intentionally test cross-model integration — move those to the primary group's folder and rename so the prefix matches, or keep them as scenario sub-buckets of one side.",
|
|
706
|
+
"canonicalFix": "Move the file into `<apiDir>/src/app/function/<first-segment>/` so the prefix matches the folder, or rename the file's first segment to match the current folder.",
|
|
707
|
+
"seeAlso": [
|
|
708
|
+
{
|
|
709
|
+
"kind": "tool",
|
|
710
|
+
"target": "dbx_model_test_convention"
|
|
711
|
+
}
|
|
712
|
+
]
|
|
713
|
+
},
|
|
650
714
|
{
|
|
651
715
|
"code": "FILE_GROUP_INTERFACE_AFTER_MODEL",
|
|
652
716
|
"source": "dbx_model_validate",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-components-mcp",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"dbx-components-mcp": "dbx-components-mcp.js"
|
|
@@ -15,19 +15,19 @@
|
|
|
15
15
|
"@angular/core": "21.2.11",
|
|
16
16
|
"@angular/forms": "21.2.11",
|
|
17
17
|
"@angular/material": "^21.2.9",
|
|
18
|
-
"@dereekb/dbx-cli": "13.11.
|
|
19
|
-
"@dereekb/dbx-core": "13.11.
|
|
20
|
-
"@dereekb/dbx-firebase": "13.11.
|
|
21
|
-
"@dereekb/dbx-form": "13.11.
|
|
22
|
-
"@dereekb/dbx-web": "13.11.
|
|
23
|
-
"@dereekb/firebase": "13.11.
|
|
24
|
-
"@dereekb/firebase-server": "13.11.
|
|
25
|
-
"@dereekb/rxjs": "13.11.
|
|
26
|
-
"@dereekb/util": "13.11.
|
|
18
|
+
"@dereekb/dbx-cli": "13.11.17",
|
|
19
|
+
"@dereekb/dbx-core": "13.11.17",
|
|
20
|
+
"@dereekb/dbx-firebase": "13.11.17",
|
|
21
|
+
"@dereekb/dbx-form": "13.11.17",
|
|
22
|
+
"@dereekb/dbx-web": "13.11.17",
|
|
23
|
+
"@dereekb/firebase": "13.11.17",
|
|
24
|
+
"@dereekb/firebase-server": "13.11.17",
|
|
25
|
+
"@dereekb/rxjs": "13.11.17",
|
|
26
|
+
"@dereekb/util": "13.11.17",
|
|
27
27
|
"@uirouter/angular": "21.0.0",
|
|
28
28
|
"rxjs": "^7.8.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@dereekb/model": "13.11.
|
|
31
|
+
"@dereekb/model": "13.11.17"
|
|
32
32
|
}
|
|
33
33
|
}
|