@dereekb/dbx-components-mcp 13.43.0 → 14.0.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/dbx-components-mcp.js +169 -48
- package/generated/dereekb-date.utils.mcp.generated.json +11 -11
- package/generated/dereekb-dbx-form.forge-fields.mcp.generated.json +2 -2
- package/generated/dereekb-dbx-web.ui-components.mcp.generated.json +0 -6
- package/generated/dereekb-demo.dbx-docs-ui-examples.mcp.generated.json +20 -20
- package/generated/dereekb-firebase-server.utils.mcp.generated.json +4 -4
- package/generated/dereekb-firebase.utils.mcp.generated.json +6 -6
- package/generated/dereekb-util.utils.mcp.generated.json +13 -13
- package/package.json +3 -3
package/dbx-components-mcp.js
CHANGED
|
@@ -10,7 +10,7 @@ var __export = (target, all) => {
|
|
|
10
10
|
// packages/dbx-components-mcp/package.json
|
|
11
11
|
var package_default = {
|
|
12
12
|
name: "@dereekb/dbx-components-mcp",
|
|
13
|
-
version: "
|
|
13
|
+
version: "14.0.0",
|
|
14
14
|
type: "module",
|
|
15
15
|
bin: {
|
|
16
16
|
"dbx-components-mcp": "dbx-components-mcp.js"
|
|
@@ -21,8 +21,8 @@ var package_default = {
|
|
|
21
21
|
"ts-morph": "^21.0.0"
|
|
22
22
|
},
|
|
23
23
|
peerDependencies: {
|
|
24
|
-
"@dereekb/dbx-cli": "
|
|
25
|
-
"@dereekb/util": "
|
|
24
|
+
"@dereekb/dbx-cli": "14.0.0",
|
|
25
|
+
"@dereekb/util": "14.0.0"
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -2139,7 +2139,15 @@ var FIREBASE_MODELS = [
|
|
|
2139
2139
|
converter: "optionalFirestoreDate()",
|
|
2140
2140
|
tsType: "Maybe<Date>",
|
|
2141
2141
|
optional: true,
|
|
2142
|
-
description: "The date the
|
|
2142
|
+
description: "The date the CURRENT submission was made, if the space is submitted. Its presence IS the lock."
|
|
2143
|
+
},
|
|
2144
|
+
{
|
|
2145
|
+
name: "fsat",
|
|
2146
|
+
longName: "firstSubmittedAt",
|
|
2147
|
+
converter: "optionalFirestoreDate()",
|
|
2148
|
+
tsType: "Maybe<Date>",
|
|
2149
|
+
optional: true,
|
|
2150
|
+
description: "The date the space was FIRST submitted, if it ever was."
|
|
2143
2151
|
},
|
|
2144
2152
|
{
|
|
2145
2153
|
name: "cpat",
|
|
@@ -2156,6 +2164,46 @@ var FIREBASE_MODELS = [
|
|
|
2156
2164
|
tsType: "Maybe<Date>",
|
|
2157
2165
|
optional: true,
|
|
2158
2166
|
description: "The date this space becomes eligible for the expiration sweep, if it expires at all."
|
|
2167
|
+
},
|
|
2168
|
+
{
|
|
2169
|
+
name: "lat",
|
|
2170
|
+
longName: "locksAt",
|
|
2171
|
+
converter: "optionalFirestoreDate()",
|
|
2172
|
+
tsType: "Maybe<Date>",
|
|
2173
|
+
optional: true,
|
|
2174
|
+
description: "The date reopening stops being possible \u2014 the instant the submission becomes FULLY LOCKED."
|
|
2175
|
+
},
|
|
2176
|
+
{
|
|
2177
|
+
name: "lby",
|
|
2178
|
+
longName: "lockedBy",
|
|
2179
|
+
converter: "optionalFirestoreUID()",
|
|
2180
|
+
tsType: "Maybe<FirebaseAuthUserId>",
|
|
2181
|
+
optional: true,
|
|
2182
|
+
description: "The user who locked the submission early, when a caller did rather than the deadline passing."
|
|
2183
|
+
},
|
|
2184
|
+
{
|
|
2185
|
+
name: "rc",
|
|
2186
|
+
longName: "reopenCount",
|
|
2187
|
+
converter: "firestoreNumber({ default: 0 })",
|
|
2188
|
+
tsType: "number",
|
|
2189
|
+
optional: false,
|
|
2190
|
+
description: "Monotonic count of times this space has been REOPENED after a submission."
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
name: "rat",
|
|
2194
|
+
longName: "reopenedAt",
|
|
2195
|
+
converter: "optionalFirestoreDate()",
|
|
2196
|
+
tsType: "Maybe<Date>",
|
|
2197
|
+
optional: true,
|
|
2198
|
+
description: "The date the space was last reopened, if it ever was."
|
|
2199
|
+
},
|
|
2200
|
+
{
|
|
2201
|
+
name: "rby",
|
|
2202
|
+
longName: "reopenedBy",
|
|
2203
|
+
converter: "optionalFirestoreUID()",
|
|
2204
|
+
tsType: "Maybe<FirebaseAuthUserId>",
|
|
2205
|
+
optional: true,
|
|
2206
|
+
description: "The user who last reopened the space."
|
|
2159
2207
|
}
|
|
2160
2208
|
],
|
|
2161
2209
|
enums: [
|
|
@@ -2212,7 +2260,7 @@ var FIREBASE_MODELS = [
|
|
|
2212
2260
|
description: "Processing state of a submitted {@link FormSpace}."
|
|
2213
2261
|
}
|
|
2214
2262
|
],
|
|
2215
|
-
detectionHints: ["t", "n", "ps", "m", "uc", "f", "pn", "pat", "uat", "sat", "cpat", "eat"],
|
|
2263
|
+
detectionHints: ["t", "n", "ps", "m", "uc", "f", "pn", "pat", "uat", "sat", "fsat", "cpat", "eat", "lat", "lby", "rc", "rat", "rby"],
|
|
2216
2264
|
description: "A type-registered container for a client-side form: its in-progress JSON, its uploads, and its submission state.",
|
|
2217
2265
|
modelGroup: "FormSpace",
|
|
2218
2266
|
collectionKind: "root",
|
|
@@ -10121,6 +10169,7 @@ var PropertyAccumulator = class {
|
|
|
10121
10169
|
constructor(context) {
|
|
10122
10170
|
this.context = context;
|
|
10123
10171
|
}
|
|
10172
|
+
context;
|
|
10124
10173
|
entries = [];
|
|
10125
10174
|
index = /* @__PURE__ */ new Map();
|
|
10126
10175
|
add(entry) {
|
|
@@ -21510,7 +21559,6 @@ import { DbxActionConfirmConfig } from '@dereekb/dbx-web';
|
|
|
21510
21559
|
|
|
21511
21560
|
@Component({
|
|
21512
21561
|
selector: 'app-danger-zone',
|
|
21513
|
-
standalone: true,
|
|
21514
21562
|
imports: [DbxCardBoxComponent, DbxBarDirective, DbxButtonComponent, DbxActionDirective, DbxActionConfirmDirective],
|
|
21515
21563
|
template: \`
|
|
21516
21564
|
<dbx-card-box header="Danger zone" icon="warning">
|
|
@@ -21527,8 +21575,7 @@ import { DbxActionConfirmConfig } from '@dereekb/dbx-web';
|
|
|
21527
21575
|
</dbx-button>
|
|
21528
21576
|
</dbx-bar>
|
|
21529
21577
|
</dbx-card-box>
|
|
21530
|
-
|
|
21531
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21578
|
+
\`
|
|
21532
21579
|
})
|
|
21533
21580
|
export class DangerZoneComponent {
|
|
21534
21581
|
readonly deleteAccountAction = /* DbxActionContextStoreSourceInstance<...> */ null;
|
|
@@ -21579,7 +21626,6 @@ interface Item {
|
|
|
21579
21626
|
|
|
21580
21627
|
@Component({
|
|
21581
21628
|
selector: 'app-items-page',
|
|
21582
|
-
standalone: true,
|
|
21583
21629
|
imports: [DbxSectionPageComponent, DbxListComponent, DbxListEmptyContentComponent, DbxPagebarComponent, DbxButtonComponent, DbxActionDirective],
|
|
21584
21630
|
template: \`
|
|
21585
21631
|
<dbx-section-page header="Items" icon="list" scroll="body">
|
|
@@ -21594,8 +21640,7 @@ interface Item {
|
|
|
21594
21640
|
</dbx-list-empty-content>
|
|
21595
21641
|
</dbx-list>
|
|
21596
21642
|
</dbx-section-page>
|
|
21597
|
-
|
|
21598
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21643
|
+
\`
|
|
21599
21644
|
})
|
|
21600
21645
|
export class ItemsPageComponent {
|
|
21601
21646
|
readonly items$: Observable<ListLoadingState<Item>> = /* ... */ null!;
|
|
@@ -21641,7 +21686,6 @@ interface Item {
|
|
|
21641
21686
|
|
|
21642
21687
|
@Component({
|
|
21643
21688
|
selector: 'app-items-loaded',
|
|
21644
|
-
standalone: true,
|
|
21645
21689
|
imports: [CommonModule, DbxLoadingComponent, DbxListComponent, DbxListEmptyContentComponent, DbxIntroActionSectionComponent],
|
|
21646
21690
|
template: \`
|
|
21647
21691
|
<dbx-loading [state]="state$ | async" text="Loading items...">
|
|
@@ -21657,8 +21701,7 @@ interface Item {
|
|
|
21657
21701
|
</dbx-list>
|
|
21658
21702
|
</dbx-intro-action-section>
|
|
21659
21703
|
</dbx-loading>
|
|
21660
|
-
|
|
21661
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21704
|
+
\`
|
|
21662
21705
|
})
|
|
21663
21706
|
export class ItemsLoadedComponent {
|
|
21664
21707
|
readonly state$: Observable<ListLoadingState<Item>> = /* ... */ null!;
|
|
@@ -21707,7 +21750,6 @@ import { MatInputModule } from '@angular/material/input';
|
|
|
21707
21750
|
|
|
21708
21751
|
@Component({
|
|
21709
21752
|
selector: 'app-account-settings',
|
|
21710
|
-
standalone: true,
|
|
21711
21753
|
imports: [DbxSectionComponent, DbxBarDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxActionDirective, ReactiveFormsModule, MatFormFieldModule, MatInputModule],
|
|
21712
21754
|
template: \`
|
|
21713
21755
|
<dbx-section header="Account" icon="person" hint="Update your profile">
|
|
@@ -21724,8 +21766,7 @@ import { MatInputModule } from '@angular/material/input';
|
|
|
21724
21766
|
<dbx-button text="Cancel" stroked (btnClick)="cancel()"></dbx-button>
|
|
21725
21767
|
</dbx-bar>
|
|
21726
21768
|
</dbx-section>
|
|
21727
|
-
|
|
21728
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21769
|
+
\`
|
|
21729
21770
|
})
|
|
21730
21771
|
export class AccountSettingsComponent {
|
|
21731
21772
|
private readonly fb = inject(FormBuilder);
|
|
@@ -21762,7 +21803,6 @@ import { UIRouterModule } from '@uirouter/angular';
|
|
|
21762
21803
|
|
|
21763
21804
|
@Component({
|
|
21764
21805
|
selector: 'app-shell',
|
|
21765
|
-
standalone: true,
|
|
21766
21806
|
imports: [DbxSidenavPageComponent, DbxSidenavComponent, DbxContentPageDirective, UIRouterModule],
|
|
21767
21807
|
template: \`
|
|
21768
21808
|
<dbx-sidenav-page>
|
|
@@ -21771,8 +21811,7 @@ import { UIRouterModule } from '@uirouter/angular';
|
|
|
21771
21811
|
<ui-view></ui-view>
|
|
21772
21812
|
</div>
|
|
21773
21813
|
</dbx-sidenav-page>
|
|
21774
|
-
|
|
21775
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21814
|
+
\`
|
|
21776
21815
|
})
|
|
21777
21816
|
export class AppShellComponent {
|
|
21778
21817
|
readonly navAnchors: ClickableAnchor[] = [
|
|
@@ -21823,7 +21862,6 @@ interface Member {
|
|
|
21823
21862
|
|
|
21824
21863
|
@Component({
|
|
21825
21864
|
selector: 'app-members-page',
|
|
21826
|
-
standalone: true,
|
|
21827
21865
|
imports: [CommonModule, MatButtonModule, MatIconModule, DbxSectionPageComponent, DbxTwoColumnComponent, DbxTwoColumnRightComponent, DbxListComponent],
|
|
21828
21866
|
template: \`
|
|
21829
21867
|
<dbx-section-page header="Members" icon="group" scroll="body">
|
|
@@ -21835,8 +21873,7 @@ interface Member {
|
|
|
21835
21873
|
</dbx-two-column-right>
|
|
21836
21874
|
</dbx-two-column>
|
|
21837
21875
|
</dbx-section-page>
|
|
21838
|
-
|
|
21839
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
21876
|
+
\`
|
|
21840
21877
|
})
|
|
21841
21878
|
export class MembersPageComponent {
|
|
21842
21879
|
readonly members$: Observable<ListLoadingState<Member>> = /* ... */ null!;
|
|
@@ -25365,6 +25402,96 @@ var RULE_CATALOG = [
|
|
|
25365
25402
|
whenItApplies: "When a key on `<app>SystemStateStoredDataConverterMap` is neither a local `<NAME>_SYSTEM_STATE_TYPE` constant nor an imported identifier.",
|
|
25366
25403
|
whenItDoesNotApply: "Keys imported from upstream packages \u2014 those are detected via `importedIdentifiers` and skipped.",
|
|
25367
25404
|
canonicalFix: "Either declare the missing constant locally or import it from the upstream package that owns it."
|
|
25405
|
+
},
|
|
25406
|
+
{
|
|
25407
|
+
code: "WORKSPACE_DEPLOY_ENVIRONMENT_FILE_MISSING",
|
|
25408
|
+
source: "dbx_workspace_validate",
|
|
25409
|
+
severity: "error",
|
|
25410
|
+
title: "A configuration's file-replacement or esbuild-config path does not exist on disk",
|
|
25411
|
+
whatItFlags: "A configuration's file-replacement or esbuild-config path does not exist on disk.",
|
|
25412
|
+
whenItApplies: "When a `fileReplacements` `replace` / `with` path, or a configuration's `esbuildConfig` path, names a file that is absent from the working tree.",
|
|
25413
|
+
whenItDoesNotApply: "Generated files produced by an earlier target in the same pipeline \u2014 declare them as that target's `outputs` so the dependency is explicit, or the reference is genuinely broken.",
|
|
25414
|
+
canonicalFix: "Create the missing file or correct the path. An Angular build fails loudly on a missing replacement, but an esbuild `additionalProperties: true` schema accepts a bad path silently."
|
|
25415
|
+
},
|
|
25416
|
+
{
|
|
25417
|
+
code: "WORKSPACE_DEPLOY_ENVIRONMENT_FILE_UNREFERENCED",
|
|
25418
|
+
source: "dbx_workspace_validate",
|
|
25419
|
+
severity: "warning",
|
|
25420
|
+
title: "An `environment.<name>.ts` file exists but no build configuration references it",
|
|
25421
|
+
whatItFlags: "An `environment.<name>.ts` file exists but no build configuration references it.",
|
|
25422
|
+
whenItApplies: "When a file matching `environment.*.ts` sits in a project's `src/environments/` directory and appears in no configuration's `fileReplacements`, and no `esbuildConfig` file references it.",
|
|
25423
|
+
whenItDoesNotApply: "The base `environment.ts` (always the replacement source, never a target), and environment files imported directly by application code rather than swapped in by the build.",
|
|
25424
|
+
canonicalFix: "Add the configuration that consumes it, or delete the file. An unreachable environment file reads as a working deploy lane that does not exist \u2014 the file is edited, reviewed, and never compiled."
|
|
25425
|
+
},
|
|
25426
|
+
{
|
|
25427
|
+
code: "WORKSPACE_DEPLOY_HOSTING_TARGET_MISSING",
|
|
25428
|
+
source: "dbx_workspace_validate",
|
|
25429
|
+
severity: "error",
|
|
25430
|
+
title: "A deploy command targets a firebase hosting target that `firebase.json` does not declare",
|
|
25431
|
+
whatItFlags: "A deploy command targets a firebase hosting target that `firebase.json` does not declare.",
|
|
25432
|
+
whenItApplies: "When a deploy command runs `firebase deploy --only hosting:<target>` and `<target>` matches no `target` (or `site`) entry under `hosting` in `firebase.json`.",
|
|
25433
|
+
whenItDoesNotApply: "Workspaces that resolve hosting targets through `.firebaserc` target aliases the scanner does not read \u2014 verify manually if this misfires.",
|
|
25434
|
+
canonicalFix: "Add the hosting entry to `firebase.json`, or point the command at a declared target. `firebase deploy` fails on an unknown hosting target, so this breaks the lane outright."
|
|
25435
|
+
},
|
|
25436
|
+
{
|
|
25437
|
+
code: "WORKSPACE_DEPLOY_LANE_ASYMMETRIC",
|
|
25438
|
+
source: "dbx_workspace_validate",
|
|
25439
|
+
severity: "warning",
|
|
25440
|
+
title: "A deploy lane is wired on one side of the app/api pair but not the other",
|
|
25441
|
+
whatItFlags: "A deploy lane is wired on one side of the app/api pair but not the other.",
|
|
25442
|
+
whenItApplies: "When one project in the workspace declares `ci-deploy-<lane>` and a sibling project that declares at least one other `ci-deploy-*` lane does not declare this one.",
|
|
25443
|
+
whenItDoesNotApply: "Projects deliberately deployed on their own cadence, and workspaces with a single deployable project. Suppress by giving the sibling the lane, or accept the warning.",
|
|
25444
|
+
canonicalFix: "Add the missing `ci-deploy-<lane>` target to the sibling project. A lane present on the API but not the web app (or vice versa) deploys half an application and leaves the two halves on different builds."
|
|
25445
|
+
},
|
|
25446
|
+
{
|
|
25447
|
+
code: "WORKSPACE_DEPLOY_LANE_NO_ENVIRONMENT_SELECTION",
|
|
25448
|
+
source: "dbx_workspace_validate",
|
|
25449
|
+
severity: "error",
|
|
25450
|
+
title: "A deploy lane builds a configuration that selects no environment file",
|
|
25451
|
+
whatItFlags: "A deploy lane builds a configuration that selects no environment file.",
|
|
25452
|
+
whenItApplies: "When a `ci-deploy-<lane>` target builds a configuration that provides no environment-selection mechanism for its executor \u2014 no `fileReplacements` for an Angular `application` build, or no lane-specific `esbuildConfig` for an `@nx/esbuild:esbuild` build.",
|
|
25453
|
+
whenItDoesNotApply: "Non-deploy configurations such as `development`, which are expected to compile the base `environment.ts`. Only configurations reachable from a `ci-deploy-*` target are checked.",
|
|
25454
|
+
canonicalFix: "Add the `fileReplacements` entry (or the lane's `esbuildConfig`) to the configuration. Without it the lane deploys the unreplaced `environment.ts` \u2014 localhost URLs, dev credentials, and any developer-only function map \u2014 to a live project."
|
|
25455
|
+
},
|
|
25456
|
+
{
|
|
25457
|
+
code: "WORKSPACE_TARGET_OUTPUT_ESCAPES_ROOT",
|
|
25458
|
+
source: "dbx_workspace_validate",
|
|
25459
|
+
severity: "error",
|
|
25460
|
+
title: "A target's `outputs` entry resolves outside the workspace root",
|
|
25461
|
+
whatItFlags: "A target's `outputs` entry resolves outside the workspace root.",
|
|
25462
|
+
whenItApplies: 'When an `outputs` entry \u2014 after `{options.<name>}` substitution from the target\'s own options \u2014 resolves to a path above the workspace root. The common shape is `outputs: ["{options.reportsDirectory}"]` with a `../../`-relative option value.',
|
|
25463
|
+
whenItDoesNotApply: "Entries anchored by `{workspaceRoot}` or `{projectRoot}`, and entries whose `{options.<name>}` token has no resolvable value (skipped rather than guessed).",
|
|
25464
|
+
canonicalFix: 'Anchor the entry explicitly, e.g. `"{workspaceRoot}/coverage/{projectRoot}"`. Nx refuses to cache an output it cannot place inside the workspace and will report the task as flaky instead of failing loudly.'
|
|
25465
|
+
},
|
|
25466
|
+
{
|
|
25467
|
+
code: "WORKSPACE_TARGET_REF_CONFIGURATION_MISSING",
|
|
25468
|
+
source: "dbx_workspace_validate",
|
|
25469
|
+
severity: "error",
|
|
25470
|
+
title: "An `nx run <project>:<target>:<configuration>` reference names a configuration the target does not declare",
|
|
25471
|
+
whatItFlags: "An `nx run <project>:<target>:<configuration>` reference names a configuration the target does not declare.",
|
|
25472
|
+
whenItApplies: "Whenever a reference carries a configuration segment and the target's `configurations` map has no such key.",
|
|
25473
|
+
whenItDoesNotApply: "Targets that declare no `configurations` at all \u2014 Nx tolerates a configuration argument there, so it is not reported.",
|
|
25474
|
+
canonicalFix: "Rename the reference to a declared configuration (a `prod` / `production` mismatch is the usual cause), or add the configuration to the target. Nx does NOT error on an unknown configuration: `create-task-graph.js` silently substitutes `defaultConfiguration`, so a mismatch here ships whatever that default builds \u2014 and ships the base options with no configuration merged at all when no default is set."
|
|
25475
|
+
},
|
|
25476
|
+
{
|
|
25477
|
+
code: "WORKSPACE_TARGET_REF_PROJECT_MISSING",
|
|
25478
|
+
source: "dbx_workspace_validate",
|
|
25479
|
+
severity: "error",
|
|
25480
|
+
title: "An `nx run <project>:...` reference names a project that does not exist in the workspace",
|
|
25481
|
+
whatItFlags: "An `nx run <project>:...` reference names a project that does not exist in the workspace.",
|
|
25482
|
+
whenItApplies: "When a target reference in a `project.json` command, CI config, shell script, or npm script names a project with no matching entry in the workspace project graph.",
|
|
25483
|
+
whenItDoesNotApply: "References built from shell variables or CI interpolation the scanner cannot resolve \u2014 those are skipped rather than reported.",
|
|
25484
|
+
canonicalFix: "Create the project, or update the reference to the project's real name. A renamed or deleted project leaves these references behind and they only fail at deploy time."
|
|
25485
|
+
},
|
|
25486
|
+
{
|
|
25487
|
+
code: "WORKSPACE_TARGET_REF_TARGET_MISSING",
|
|
25488
|
+
source: "dbx_workspace_validate",
|
|
25489
|
+
severity: "error",
|
|
25490
|
+
title: "An `nx run <project>:<target>` reference names a target the project does not declare",
|
|
25491
|
+
whatItFlags: "An `nx run <project>:<target>` reference names a target the project does not declare.",
|
|
25492
|
+
whenItApplies: "When the referenced project exists but has no target by that name (after `nx.json` `targetDefaults` are accounted for).",
|
|
25493
|
+
whenItDoesNotApply: "Targets contributed by an inferred-target plugin the scanner does not evaluate \u2014 declare the plugin's targets explicitly if this misfires.",
|
|
25494
|
+
canonicalFix: "Add the target to the project, or point the reference at an existing one. This is the single most common way a CI lane silently stops doing anything."
|
|
25368
25495
|
}
|
|
25369
25496
|
];
|
|
25370
25497
|
|
|
@@ -38745,11 +38872,12 @@ function matchKindForRadius(exact, raw) {
|
|
|
38745
38872
|
if (exact.defaults.light === raw || exact.defaults.dark === raw) return "(exact-match design-system corner token).";
|
|
38746
38873
|
return "(idiomatic full / pill radius \u2014 design system token).";
|
|
38747
38874
|
}
|
|
38748
|
-
function findExactRoleToken(
|
|
38875
|
+
function findExactRoleToken(params) {
|
|
38876
|
+
const { registry, raw, role, isAllowed } = params;
|
|
38749
38877
|
const candidates = registry.byRole.get(role) ?? [];
|
|
38750
38878
|
let result;
|
|
38751
38879
|
for (const entry of candidates) {
|
|
38752
|
-
if (entry.defaults.light === raw || entry.defaults.dark === raw) {
|
|
38880
|
+
if ((entry.defaults.light === raw || entry.defaults.dark === raw) && (isAllowed === void 0 || isAllowed(entry))) {
|
|
38753
38881
|
result = entry;
|
|
38754
38882
|
break;
|
|
38755
38883
|
}
|
|
@@ -38894,7 +39022,7 @@ var hardcodedRadius = (input) => {
|
|
|
38894
39022
|
const colonIndex = input.scss.indexOf(":", match.index);
|
|
38895
39023
|
if (colonIndex !== -1 && isInsideScssVarDeclaration(input.scss, colonIndex)) continue;
|
|
38896
39024
|
const raw = match[1];
|
|
38897
|
-
let exact = findExactRoleToken(input.tokenRegistry, raw, "radius");
|
|
39025
|
+
let exact = findExactRoleToken({ registry: input.tokenRegistry, raw, role: "radius" });
|
|
38898
39026
|
if (exact === void 0 && FULL_RADIUS_SYNONYMS.has(raw)) {
|
|
38899
39027
|
exact = input.tokenRegistry.findByCssVariable("--mat-sys-corner-full");
|
|
38900
39028
|
}
|
|
@@ -38925,7 +39053,7 @@ var hardcodedShadow = (input) => {
|
|
|
38925
39053
|
if (match.index === void 0) continue;
|
|
38926
39054
|
const raw = match[1].trim();
|
|
38927
39055
|
if (raw.startsWith("var(") || raw === "none") continue;
|
|
38928
|
-
const exact = findExactRoleToken(input.tokenRegistry, raw, "elevation");
|
|
39056
|
+
const exact = findExactRoleToken({ registry: input.tokenRegistry, raw, role: "elevation" });
|
|
38929
39057
|
const fix = exact === void 0 ? 'Hardcoded `box-shadow:` declarations should map to one of the `--mat-sys-level0..5` elevation tokens, or wrap the surface in `<dbx-content-box [elevate]="true">` so the shadow comes from the design system.' : `Replace this hardcoded shadow with \`box-shadow: var(${exact.cssVariable})\` or use \`<dbx-content-box [elevate]="true">\` to apply the elevation through the wrapper component.`;
|
|
38930
39058
|
matches.push({
|
|
38931
39059
|
id: "hardcoded-shadow",
|
|
@@ -38970,12 +39098,13 @@ var hardcodedHintColor = (input) => {
|
|
|
38970
39098
|
return matches;
|
|
38971
39099
|
};
|
|
38972
39100
|
var HARDCODED_PADDING_RE = /(?:padding|margin)\s*(?:-(?:top|right|bottom|left))?\s*:\s*(\d+(?:\.\d+)?px)(?!\s*\))/gi;
|
|
39101
|
+
var DBX_PADDING_SCALE_RE = /^--dbx-padding-\d+$/;
|
|
38973
39102
|
var hardcodedPadding = (input) => {
|
|
38974
39103
|
const matches = [];
|
|
38975
39104
|
for (const match of input.scss.matchAll(HARDCODED_PADDING_RE)) {
|
|
38976
39105
|
if (match.index === void 0) continue;
|
|
38977
39106
|
const raw = match[1];
|
|
38978
|
-
const exact = findExactRoleToken(input.tokenRegistry, raw, "spacing");
|
|
39107
|
+
const exact = findExactRoleToken({ registry: input.tokenRegistry, raw, role: "spacing", isAllowed: (entry) => DBX_PADDING_SCALE_RE.test(entry.cssVariable) });
|
|
38979
39108
|
if (exact !== void 0) {
|
|
38980
39109
|
const utility = exact.utilityClasses?.[0];
|
|
38981
39110
|
const fix = ["Replace `" + match[0].trim() + "` with `var(" + exact.cssVariable + ")`" + (utility === void 0 ? "" : ` (or use the \`${utility}\` utility class on the host element)`) + "."].join("\n");
|
|
@@ -45205,8 +45334,7 @@ import { type Work } from '@dereekb/rxjs';
|
|
|
45205
45334
|
dbxActionForm
|
|
45206
45335
|
[dbxFormSource]="settings$"></my-settings-form>
|
|
45207
45336
|
</div>
|
|
45208
|
-
|
|
45209
|
-
standalone: true
|
|
45337
|
+
\`
|
|
45210
45338
|
})
|
|
45211
45339
|
export class SettingsAutosaveComponent {
|
|
45212
45340
|
private readonly store = inject(SettingsDocumentStore);
|
|
@@ -45250,8 +45378,7 @@ import { type Work } from '@dereekb/rxjs';
|
|
|
45250
45378
|
icon="delete"
|
|
45251
45379
|
dbxActionButton></dbx-button>
|
|
45252
45380
|
</ng-container>
|
|
45253
|
-
|
|
45254
|
-
standalone: true
|
|
45381
|
+
\`
|
|
45255
45382
|
})
|
|
45256
45383
|
export class DeleteAccountButtonComponent {
|
|
45257
45384
|
private readonly accountStore = inject(AccountDocumentStore);
|
|
@@ -45315,8 +45442,7 @@ import { type Work } from '@dereekb/rxjs';
|
|
|
45315
45442
|
<dbx-button text="Archive" dbxActionButton></dbx-button>
|
|
45316
45443
|
</ng-container>
|
|
45317
45444
|
</div>
|
|
45318
|
-
|
|
45319
|
-
standalone: true
|
|
45445
|
+
\`
|
|
45320
45446
|
})
|
|
45321
45447
|
export class ContentToolbarComponent {
|
|
45322
45448
|
private readonly store = inject(ArticleDocumentStore);
|
|
@@ -45370,8 +45496,7 @@ import { type WorkUsingContext } from '@dereekb/rxjs';
|
|
|
45370
45496
|
<dbx-button [raised]="true" text="Save" dbxActionButton></dbx-button>
|
|
45371
45497
|
<dbx-error dbxActionError></dbx-error>
|
|
45372
45498
|
</form>
|
|
45373
|
-
|
|
45374
|
-
standalone: true
|
|
45499
|
+
\`
|
|
45375
45500
|
})
|
|
45376
45501
|
export class EditProfilePageComponent {
|
|
45377
45502
|
private readonly profileStore = inject(ProfileDocumentStore);
|
|
@@ -45441,8 +45566,7 @@ type ConsentDecision = { readonly outcome: 'approved'; readonly value: ConsentFo
|
|
|
45441
45566
|
}
|
|
45442
45567
|
</div>
|
|
45443
45568
|
}
|
|
45444
|
-
|
|
45445
|
-
standalone: true
|
|
45569
|
+
\`
|
|
45446
45570
|
})
|
|
45447
45571
|
export class ConsentPageComponent {
|
|
45448
45572
|
readonly defaults$ = this.store.defaults$;
|
|
@@ -45489,8 +45613,7 @@ import { DbxActionContextMachine } from '@dereekb/dbx-core';
|
|
|
45489
45613
|
<div [dbxActionSource]="actionSource()">
|
|
45490
45614
|
<child-component></child-component>
|
|
45491
45615
|
</div>
|
|
45492
|
-
|
|
45493
|
-
standalone: true
|
|
45616
|
+
\`
|
|
45494
45617
|
})
|
|
45495
45618
|
export class ParentComponent {
|
|
45496
45619
|
readonly machine = new DbxActionContextMachine<MyValue, MyResult>();
|
|
@@ -45510,8 +45633,7 @@ export class ParentComponent {
|
|
|
45510
45633
|
<ng-container dbxAction dbxActionValue="hello">
|
|
45511
45634
|
<dbx-button [raised]="true" text="Submit" dbxActionButton></dbx-button>
|
|
45512
45635
|
</ng-container>
|
|
45513
|
-
|
|
45514
|
-
standalone: true
|
|
45636
|
+
\`
|
|
45515
45637
|
})
|
|
45516
45638
|
export class ChildComponent {}`
|
|
45517
45639
|
},
|
|
@@ -45554,8 +45676,7 @@ import { type IsEqualFunction } from '@dereekb/rxjs';
|
|
|
45554
45676
|
<my-tag-form #form></my-tag-form>
|
|
45555
45677
|
<dbx-button text="Save" dbxActionButton></dbx-button>
|
|
45556
45678
|
</div>
|
|
45557
|
-
|
|
45558
|
-
standalone: true
|
|
45679
|
+
\`
|
|
45559
45680
|
})
|
|
45560
45681
|
export class TagEditorComponent {
|
|
45561
45682
|
private readonly store = inject(TagCollectionStore);
|
|
@@ -52884,7 +53005,7 @@ function relativeOrAbsolute(from, target) {
|
|
|
52884
53005
|
const rel = relative20(from, target);
|
|
52885
53006
|
if (rel.length === 0) return ".";
|
|
52886
53007
|
if (rel.startsWith("..")) return target;
|
|
52887
|
-
return rel.
|
|
53008
|
+
return rel.replaceAll("\\", "/");
|
|
52888
53009
|
}
|
|
52889
53010
|
|
|
52890
53011
|
// packages/dbx-components-mcp/src/tools/mcp-config/init.ts
|
|
@@ -53013,19 +53134,19 @@ async function planRootConfig(input) {
|
|
|
53013
53134
|
}
|
|
53014
53135
|
function defaultOutFor(input) {
|
|
53015
53136
|
const targetAbs = resolve66(input.snapshot.workspaceRoot, ".tmp/dbx-mcp", `${input.slug}.${clusterFilenameSegment(input.cluster)}.json`);
|
|
53016
|
-
return relative21(dirname22(input.scanConfigPath), targetAbs).
|
|
53137
|
+
return relative21(dirname22(input.scanConfigPath), targetAbs).replaceAll("\\", "/");
|
|
53017
53138
|
}
|
|
53018
53139
|
function resolveScanOut(scanConfigPath, out) {
|
|
53019
53140
|
return resolve66(dirname22(scanConfigPath), out);
|
|
53020
53141
|
}
|
|
53021
53142
|
function relativeFromConfig(snapshot, absolute) {
|
|
53022
53143
|
const configDir = snapshot.configPath === null ? snapshot.workspaceRoot : dirname22(snapshot.configPath);
|
|
53023
|
-
return relative21(configDir, absolute).
|
|
53144
|
+
return relative21(configDir, absolute).replaceAll("\\", "/");
|
|
53024
53145
|
}
|
|
53025
53146
|
function workspaceRel(workspaceRoot, absolute) {
|
|
53026
53147
|
const rel = relative21(workspaceRoot, absolute);
|
|
53027
53148
|
if (rel.length === 0) return ".";
|
|
53028
|
-
return rel.
|
|
53149
|
+
return rel.replaceAll("\\", "/");
|
|
53029
53150
|
}
|
|
53030
53151
|
function serializeJson(value) {
|
|
53031
53152
|
return `${JSON.stringify(value, null, 2)}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"optional": false
|
|
23
23
|
}
|
|
24
24
|
],
|
|
25
|
-
"returns": "A factory function that produces a clamped {@link DateCellRangeWithRange
|
|
25
|
+
"returns": "A factory function that produces a clamped {@link DateCellRangeWithRange} from optional start/end input.",
|
|
26
26
|
"tags": [
|
|
27
27
|
"date",
|
|
28
28
|
"cell",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
{
|
|
56
56
|
"name": "config",
|
|
57
57
|
"type": "DateCellTiming | DateCallIndexRangeFromDatesFactoryConfig",
|
|
58
|
-
"description": "- A {@link DateCellTiming
|
|
58
|
+
"description": "- A {@link DateCellTiming} or full factory configuration.",
|
|
59
59
|
"optional": false
|
|
60
60
|
},
|
|
61
61
|
{
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"optional": true
|
|
66
66
|
}
|
|
67
67
|
],
|
|
68
|
-
"returns": "A clamped {@link DateCellRangeWithRange
|
|
68
|
+
"returns": "A clamped {@link DateCellRangeWithRange} derived from the timing and input.",
|
|
69
69
|
"tags": [
|
|
70
70
|
"date",
|
|
71
71
|
"cell",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"optional": true
|
|
105
105
|
}
|
|
106
106
|
],
|
|
107
|
-
"returns": "A {@link DateCellRangeWithRange
|
|
107
|
+
"returns": "A {@link DateCellRangeWithRange} covering only the completed day indexes.",
|
|
108
108
|
"tags": [
|
|
109
109
|
"date",
|
|
110
110
|
"cell",
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
"optional": false
|
|
178
178
|
}
|
|
179
179
|
],
|
|
180
|
-
"returns": "A {@link DateCellIndexRange
|
|
180
|
+
"returns": "A {@link DateCellIndexRange} with exclusive `maxIndex`.",
|
|
181
181
|
"tags": [
|
|
182
182
|
"date",
|
|
183
183
|
"cell",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
"optional": false
|
|
213
213
|
}
|
|
214
214
|
],
|
|
215
|
-
"returns": "A {@link DateCellRangeWithRange
|
|
215
|
+
"returns": "A {@link DateCellRangeWithRange} with inclusive `to`.",
|
|
216
216
|
"tags": [
|
|
217
217
|
"date",
|
|
218
218
|
"cell",
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
"optional": true
|
|
260
260
|
}
|
|
261
261
|
],
|
|
262
|
-
"returns": "A {@link DateCellIndexRange
|
|
262
|
+
"returns": "A {@link DateCellIndexRange} representing the computed index bounds.",
|
|
263
263
|
"tags": [
|
|
264
264
|
"date",
|
|
265
265
|
"cell",
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
"optional": false
|
|
366
366
|
}
|
|
367
367
|
],
|
|
368
|
-
"returns": "A factory function that expands date cell blocks into {@link DateCellDurationSpan
|
|
368
|
+
"returns": "A factory function that expands date cell blocks into {@link DateCellDurationSpan} arrays.",
|
|
369
369
|
"tags": [
|
|
370
370
|
"date",
|
|
371
371
|
"cell",
|
|
@@ -401,7 +401,7 @@
|
|
|
401
401
|
"optional": false
|
|
402
402
|
}
|
|
403
403
|
],
|
|
404
|
-
"returns": "A factory that computes {@link DateCellDayTimingInfo
|
|
404
|
+
"returns": "A factory that computes {@link DateCellDayTimingInfo} for any date or day index.",
|
|
405
405
|
"tags": [
|
|
406
406
|
"date",
|
|
407
407
|
"cell",
|
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"optional": false
|
|
439
439
|
}
|
|
440
440
|
],
|
|
441
|
-
"returns": "True if the input is a {@link DateCellTimingRelativeIndexFactory
|
|
441
|
+
"returns": "True if the input is a {@link DateCellTimingRelativeIndexFactory}.",
|
|
442
442
|
"tags": [
|
|
443
443
|
"date",
|
|
444
444
|
"cell",
|
|
@@ -810,7 +810,7 @@
|
|
|
810
810
|
"optional": false
|
|
811
811
|
}
|
|
812
812
|
],
|
|
813
|
-
"returns": "A new {@link FullDateCellTiming
|
|
813
|
+
"returns": "A new {@link FullDateCellTiming} with the requested aspects replaced.",
|
|
814
814
|
"tags": [
|
|
815
815
|
"date",
|
|
816
816
|
"cell",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"className": "DocActionFormWithSecondaryFormComponent",
|
|
32
32
|
"role": "form",
|
|
33
33
|
"selector": "doc-action-form-with-secondary-form",
|
|
34
|
-
"classSource": "@Component({\n template: DBX_FORGE_FORM_COMPONENT_TEMPLATE,\n selector: 'doc-action-form-with-secondary-form',\n providers: dbxForgeFormComponentProviders(),\n
|
|
34
|
+
"classSource": "@Component({\n template: DBX_FORGE_FORM_COMPONENT_TEMPLATE,\n selector: 'doc-action-form-with-secondary-form',\n providers: dbxForgeFormComponentProviders(),\n imports: [DbxForgeFormComponentImportsModule]\n})\nexport class DocActionFormWithSecondaryFormComponent extends AbstractSyncForgeFormDirective<DocActionFormWithSecondaryFormValue> {\n readonly formConfig: FormConfig = {\n fields: [\n dbxForgeTextField({\n key: 'reason',\n label: 'Reason',\n required: true,\n hint: 'The Approve handler receives this value via dbxActionForm. Type something to enable Approve.'\n })\n ]\n } as FormConfig;\n}"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"kind": "interface",
|
|
@@ -72,21 +72,21 @@
|
|
|
72
72
|
"className": "DocManualActionsItemListComponent",
|
|
73
73
|
"role": "list",
|
|
74
74
|
"selector": "doc-manual-actions-item-list",
|
|
75
|
-
"classSource": "@Component({\n selector: 'doc-manual-actions-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 dbx-list-no-item-padding'\n }
|
|
75
|
+
"classSource": "@Component({\n selector: 'doc-manual-actions-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 dbx-list-no-item-padding'\n }\n})\nexport class DocManualActionsItemListComponent extends AbstractDbxSelectionListWrapperDirective<ManualActionItemValue> {\n constructor() {\n super({\n componentClass: DocManualActionsItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"kind": "component",
|
|
79
79
|
"className": "DocManualActionsItemListViewComponent",
|
|
80
80
|
"role": "view",
|
|
81
81
|
"selector": "doc-manual-actions-item-list-view",
|
|
82
|
-
"classSource": "@Component({\n selector: 'doc-manual-actions-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocManualActionsItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }
|
|
82
|
+
"classSource": "@Component({\n selector: 'doc-manual-actions-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocManualActionsItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocManualActionsItemListViewComponent extends AbstractDbxSelectionListViewDirective<ManualActionItemValue> {\n // Drop `icon` (rows render no tile) and `anchor` (button owns it; row stays non-clickable).\n readonly config: DbxSelectionValueListViewConfig<ManualActionItemValueWithSelection> = {\n componentClass: DocManualActionsItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: undefined, anchor: undefined })))\n };\n}"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
"kind": "component",
|
|
86
86
|
"className": "DocManualActionsItemListViewItemComponent",
|
|
87
87
|
"role": "item",
|
|
88
88
|
"selector": "doc-manual-actions-item-list-view-item",
|
|
89
|
-
"classSource": "@Component({\n selector: 'doc-manual-actions-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium\">{{ title }}</span>\n <span class=\"item-details\">{{ detail }}</span>\n </div>\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n @if (buttonRaised) {\n <dbx-button [raised]=\"true\" color=\"primary\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n } @else {\n <dbx-button [stroked]=\"true\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n }\n </dbx-anchor>\n </div>\n </div>\n `,\n imports: [MatButtonModule, DbxButtonComponent, DbxAnchorComponent]
|
|
89
|
+
"classSource": "@Component({\n selector: 'doc-manual-actions-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium\">{{ title }}</span>\n <span class=\"item-details\">{{ detail }}</span>\n </div>\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n @if (buttonRaised) {\n <dbx-button [raised]=\"true\" color=\"primary\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n } @else {\n <dbx-button [stroked]=\"true\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n }\n </dbx-anchor>\n </div>\n </div>\n `,\n imports: [MatButtonModule, DbxButtonComponent, DbxAnchorComponent]\n})\nexport class DocManualActionsItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<ManualActionItemValue> {\n get title(): string {\n return this.itemValue.title;\n }\n\n get detail(): string {\n return this.itemValue.detail;\n }\n\n get buttonText(): string {\n return this.itemValue.buttonText;\n }\n\n get buttonRaised(): Maybe<boolean> {\n return this.itemValue.buttonRaised;\n }\n\n get anchor(): Maybe<ClickableAnchor> {\n return this.itemValue.anchor;\n }\n}"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"kind": "interface",
|
|
@@ -128,21 +128,21 @@
|
|
|
128
128
|
"className": "DocWorthKnowingItemListComponent",
|
|
129
129
|
"role": "list",
|
|
130
130
|
"selector": "doc-worth-knowing-item-list",
|
|
131
|
-
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-no-item-padding'\n }
|
|
131
|
+
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-no-item-padding'\n }\n})\nexport class DocWorthKnowingItemListComponent extends AbstractDbxSelectionListWrapperDirective<WorthKnowingItemValue> {\n constructor() {\n super({\n componentClass: DocWorthKnowingItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
"kind": "component",
|
|
135
135
|
"className": "DocWorthKnowingItemListViewComponent",
|
|
136
136
|
"role": "view",
|
|
137
137
|
"selector": "doc-worth-knowing-item-list-view",
|
|
138
|
-
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocWorthKnowingItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }
|
|
138
|
+
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocWorthKnowingItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocWorthKnowingItemListViewComponent extends AbstractDbxSelectionListViewDirective<WorthKnowingItemValue> {\n // Drop `icon` (template paints its own tile) and `anchor` (button owns it; row stays non-clickable).\n readonly config: DbxSelectionValueListViewConfig<WorthKnowingItemValueWithSelection> = {\n componentClass: DocWorthKnowingItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: undefined, anchor: undefined })))\n };\n}"
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"kind": "component",
|
|
142
142
|
"className": "DocWorthKnowingItemListViewItemComponent",
|
|
143
143
|
"role": "item",
|
|
144
144
|
"selector": "doc-worth-knowing-item-list-view-item",
|
|
145
|
-
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium\">{{ title }}</span>\n <span class=\"item-details\">{{ detail }}</span>\n </div>\n @if (buttonText) {\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n <dbx-button [stroked]=\"true\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n </dbx-anchor>\n </div>\n }\n </div>\n `,\n imports: [MatButtonModule, DbxColorDirective, DbxIconTileComponent, DbxButtonComponent, DbxAnchorComponent]
|
|
145
|
+
"classSource": "@Component({\n selector: 'doc-worth-knowing-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium\">{{ title }}</span>\n <span class=\"item-details\">{{ detail }}</span>\n </div>\n @if (buttonText) {\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n <dbx-button [stroked]=\"true\" class=\"dbx-nowrap\" [text]=\"buttonText\"></dbx-button>\n </dbx-anchor>\n </div>\n }\n </div>\n `,\n imports: [MatButtonModule, DbxColorDirective, DbxIconTileComponent, DbxButtonComponent, DbxAnchorComponent]\n})\nexport class DocWorthKnowingItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<WorthKnowingItemValue> {\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 buttonText(): Maybe<string> {\n return this.itemValue.buttonText;\n }\n\n get anchor(): Maybe<ClickableAnchor> {\n return this.itemValue.anchor;\n }\n}"
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
148
|
"kind": "interface",
|
|
@@ -241,21 +241,21 @@
|
|
|
241
241
|
"className": "DocAnchorButtonItemListComponent",
|
|
242
242
|
"role": "list",
|
|
243
243
|
"selector": "doc-anchor-button-item-list",
|
|
244
|
-
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-card-items-list'\n }
|
|
244
|
+
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-card-items-list'\n }\n})\nexport class DocAnchorButtonItemListComponent extends AbstractDbxSelectionListWrapperDirective<AnchorButtonItemValue> {\n constructor() {\n super({\n componentClass: DocAnchorButtonItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
245
245
|
},
|
|
246
246
|
{
|
|
247
247
|
"kind": "component",
|
|
248
248
|
"className": "DocAnchorButtonItemListViewComponent",
|
|
249
249
|
"role": "view",
|
|
250
250
|
"selector": "doc-anchor-button-item-list-view",
|
|
251
|
-
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocAnchorButtonItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }
|
|
251
|
+
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocAnchorButtonItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocAnchorButtonItemListViewComponent extends AbstractDbxSelectionListViewDirective<AnchorButtonItemValue> {\n // Drop `icon` (template paints its own tile) and `anchor` (button owns it; row stays non-clickable).\n readonly config: DbxSelectionValueListViewConfig<AnchorButtonItemValueWithSelection> = {\n componentClass: DocAnchorButtonItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: undefined, anchor: undefined })))\n };\n}"
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
254
|
"kind": "component",
|
|
255
255
|
"className": "DocAnchorButtonItemListViewItemComponent",
|
|
256
256
|
"role": "item",
|
|
257
257
|
"selector": "doc-anchor-button-item-list-view-item",
|
|
258
|
-
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n <button mat-flat-button>{{ buttonText }}</button>\n </dbx-anchor>\n </div>\n </div>\n `,\n imports: [MatButtonModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent, DbxAnchorComponent]
|
|
258
|
+
"classSource": "@Component({\n selector: 'doc-anchor-button-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <dbx-anchor [anchor]=\"anchor\">\n <button mat-flat-button>{{ buttonText }}</button>\n </dbx-anchor>\n </div>\n </div>\n `,\n imports: [MatButtonModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent, DbxAnchorComponent]\n})\nexport class DocAnchorButtonItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<AnchorButtonItemValue> {\n get icon(): string {\n return this.itemValue.icon;\n }\n\n get title(): string {\n return this.itemValue.title;\n }\n\n get progress(): number {\n return this.itemValue.progress;\n }\n\n get total(): number {\n return this.itemValue.total;\n }\n\n get buttonText(): string {\n return this.itemValue.buttonText;\n }\n\n get anchor(): ClickableAnchor {\n return this.itemValue.anchor;\n }\n\n get progressPercent(): number {\n return this.total > 0 ? Math.min(100, Math.round((this.progress / this.total) * 100)) : 0;\n }\n}"
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
"kind": "interface",
|
|
@@ -291,21 +291,21 @@
|
|
|
291
291
|
"className": "DocAnchorRowItemListComponent",
|
|
292
292
|
"role": "list",
|
|
293
293
|
"selector": "doc-anchor-row-item-list",
|
|
294
|
-
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n
|
|
294
|
+
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-card-items-list'\n }\n})\nexport class DocAnchorRowItemListComponent extends AbstractDbxSelectionListWrapperDirective<AnchorRowItemValue> {\n constructor() {\n super({\n componentClass: DocAnchorRowItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
295
295
|
},
|
|
296
296
|
{
|
|
297
297
|
"kind": "component",
|
|
298
298
|
"className": "DocAnchorRowItemListViewComponent",
|
|
299
299
|
"role": "view",
|
|
300
300
|
"selector": "doc-anchor-row-item-list-view",
|
|
301
|
-
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocAnchorRowItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }
|
|
301
|
+
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocAnchorRowItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocAnchorRowItemListViewComponent extends AbstractDbxSelectionListViewDirective<AnchorRowItemValue> {\n readonly config: DbxSelectionValueListViewConfig<AnchorRowItemValueWithSelection> = {\n componentClass: DocAnchorRowItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: undefined })))\n };\n}"
|
|
302
302
|
},
|
|
303
303
|
{
|
|
304
304
|
"kind": "component",
|
|
305
305
|
"className": "DocAnchorRowItemListViewItemComponent",
|
|
306
306
|
"role": "item",
|
|
307
307
|
"selector": "doc-anchor-row-item-list-view-item",
|
|
308
|
-
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <mat-icon>chevron_right</mat-icon>\n </div>\n </div>\n `,\n imports: [MatIconModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent]
|
|
308
|
+
"classSource": "@Component({\n selector: 'doc-anchor-row-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <mat-icon>chevron_right</mat-icon>\n </div>\n </div>\n `,\n imports: [MatIconModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent]\n})\nexport class DocAnchorRowItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<AnchorRowItemValue> {\n get icon(): string {\n return this.itemValue.icon;\n }\n\n get title(): string {\n return this.itemValue.title;\n }\n\n get progress(): number {\n return this.itemValue.progress;\n }\n\n get total(): number {\n return this.itemValue.total;\n }\n\n get progressPercent(): number {\n return this.total > 0 ? Math.min(100, Math.round((this.progress / this.total) * 100)) : 0;\n }\n}"
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
"kind": "interface",
|
|
@@ -339,21 +339,21 @@
|
|
|
339
339
|
"className": "DocProgressItemListComponent",
|
|
340
340
|
"role": "list",
|
|
341
341
|
"selector": "doc-progress-item-list",
|
|
342
|
-
"classSource": "@Component({\n selector: 'doc-progress-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-card-items-list'\n }
|
|
342
|
+
"classSource": "@Component({\n selector: 'doc-progress-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule],\n host: {\n class: 'dbx-list-no-hover-effects dbx-list-card-items-list'\n }\n})\nexport class DocProgressItemListComponent extends AbstractDbxSelectionListWrapperDirective<ProgressItemValue> {\n constructor() {\n super({\n componentClass: DocProgressItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
343
343
|
},
|
|
344
344
|
{
|
|
345
345
|
"kind": "component",
|
|
346
346
|
"className": "DocProgressItemListViewComponent",
|
|
347
347
|
"role": "view",
|
|
348
348
|
"selector": "doc-progress-item-list-view",
|
|
349
|
-
"classSource": "@Component({\n selector: 'doc-progress-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocProgressItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }
|
|
349
|
+
"classSource": "@Component({\n selector: 'doc-progress-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocProgressItemListViewComponent),\n host: {\n class: 'dbx-list-item-p0'\n }\n})\nexport class DocProgressItemListViewComponent extends AbstractDbxSelectionListViewDirective<ProgressItemValue> {\n readonly config: DbxSelectionValueListViewConfig<ProgressItemValueWithSelection> = {\n componentClass: DocProgressItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: undefined })))\n };\n}"
|
|
350
350
|
},
|
|
351
351
|
{
|
|
352
352
|
"kind": "component",
|
|
353
353
|
"className": "DocProgressItemListViewItemComponent",
|
|
354
354
|
"role": "item",
|
|
355
355
|
"selector": "doc-progress-item-list-view-item",
|
|
356
|
-
"classSource": "@Component({\n selector: 'doc-progress-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon doc-progress-item\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <button mat-flat-button>View requirements</button>\n </div>\n </div>\n `,\n imports: [MatButtonModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent]
|
|
356
|
+
"classSource": "@Component({\n selector: 'doc-progress-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded-thick dbx-list-two-line-item dbx-list-two-line-item-with-icon doc-progress-item\">\n <dbx-icon-tile class=\"item-icon\" [icon]=\"icon\" dbxColor=\"primary\" [dbxColorTone]=\"18\"></dbx-icon-tile>\n <div class=\"item-left\">\n <span class=\"dbx-text-title-medium dbx-pb1\">{{ title }}</span>\n <span class=\"item-details dbx-pb2\">{{ progress }} of {{ total }} complete</span>\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n </div>\n <div class=\"item-right\">\n <button mat-flat-button>View requirements</button>\n </div>\n </div>\n `,\n imports: [MatButtonModule, MatProgressBar, DbxColorDirective, DbxIconTileComponent]\n})\nexport class DocProgressItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<ProgressItemValue> {\n get icon(): string {\n return this.itemValue.icon;\n }\n\n get title(): string {\n return this.itemValue.title;\n }\n\n get progress(): number {\n return this.itemValue.progress;\n }\n\n get total(): number {\n return this.itemValue.total;\n }\n\n get progressPercent(): number {\n return this.total > 0 ? Math.min(100, Math.round((this.progress / this.total) * 100)) : 0;\n }\n}"
|
|
357
357
|
},
|
|
358
358
|
{
|
|
359
359
|
"kind": "interface",
|
|
@@ -386,21 +386,21 @@
|
|
|
386
386
|
"className": "DocTwoLineItemListComponent",
|
|
387
387
|
"role": "list",
|
|
388
388
|
"selector": "doc-two-line-item-list",
|
|
389
|
-
"classSource": "@Component({\n selector: 'doc-two-line-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule]
|
|
389
|
+
"classSource": "@Component({\n selector: 'doc-two-line-item-list',\n template: DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxListWrapperComponentImportsModule]\n})\nexport class DocTwoLineItemListComponent extends AbstractDbxSelectionListWrapperDirective<TwoLineItemValue> {\n constructor() {\n super({\n componentClass: DocTwoLineItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}"
|
|
390
390
|
},
|
|
391
391
|
{
|
|
392
392
|
"kind": "component",
|
|
393
393
|
"className": "DocTwoLineItemListViewComponent",
|
|
394
394
|
"role": "view",
|
|
395
395
|
"selector": "doc-two-line-item-list-view",
|
|
396
|
-
"classSource": "@Component({\n selector: 'doc-two-line-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocTwoLineItemListViewComponent)
|
|
396
|
+
"classSource": "@Component({\n selector: 'doc-two-line-item-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE,\n imports: [DbxSelectionValueListViewComponentImportsModule],\n providers: provideDbxListView(DocTwoLineItemListViewComponent)\n})\nexport class DocTwoLineItemListViewComponent extends AbstractDbxSelectionListViewDirective<TwoLineItemValue> {\n readonly config: DbxSelectionValueListViewConfig<TwoLineItemValueWithSelection> = {\n componentClass: DocTwoLineItemListViewItemComponent,\n mapValuesToItemValues: (values) => of(values.map((value) => ({ ...value, itemValue: value, icon: value.icon })))\n };\n}"
|
|
397
397
|
},
|
|
398
398
|
{
|
|
399
399
|
"kind": "component",
|
|
400
400
|
"className": "DocTwoLineItemListViewItemComponent",
|
|
401
401
|
"role": "item",
|
|
402
402
|
"selector": "doc-two-line-item-list-view-item",
|
|
403
|
-
"classSource": "@Component({\n selector: 'doc-two-line-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"item-title\">{{ title }}</span>\n @if (details) {\n <span class=\"item-details\">{{ details }}</span>\n }\n @if (footnote) {\n <span class=\"item-details-footnote\">{{ footnote }}</span>\n }\n </div>\n <dbx-spacer></dbx-spacer>\n <div class=\"item-right\">\n @if (status) {\n <dbx-chip [small]=\"true\" [color]=\"statusColor\">{{ status }}</dbx-chip>\n }\n </div>\n </div>\n `,\n imports: [DbxSpacerDirective, DbxChipDirective]
|
|
403
|
+
"classSource": "@Component({\n selector: 'doc-two-line-item-list-view-item',\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"item-title\">{{ title }}</span>\n @if (details) {\n <span class=\"item-details\">{{ details }}</span>\n }\n @if (footnote) {\n <span class=\"item-details-footnote\">{{ footnote }}</span>\n }\n </div>\n <dbx-spacer></dbx-spacer>\n <div class=\"item-right\">\n @if (status) {\n <dbx-chip [small]=\"true\" [color]=\"statusColor\">{{ status }}</dbx-chip>\n }\n </div>\n </div>\n `,\n imports: [DbxSpacerDirective, DbxChipDirective]\n})\nexport class DocTwoLineItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<TwoLineItemValue> {\n get title(): string {\n return this.itemValue.title;\n }\n\n get details(): Maybe<string> {\n return this.itemValue.details;\n }\n\n get footnote(): Maybe<string> {\n return this.itemValue.footnote;\n }\n\n get status(): Maybe<TwoLineItemValue['status']> {\n return this.itemValue.status;\n }\n\n get statusColor(): TwoLineItemStatusColor {\n return this.status ? STATUS_COLOR[this.status] : 'grey';\n }\n}"
|
|
404
404
|
},
|
|
405
405
|
{
|
|
406
406
|
"kind": "interface",
|
|
@@ -452,7 +452,7 @@
|
|
|
452
452
|
"dbx-link-hover"
|
|
453
453
|
],
|
|
454
454
|
"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>",
|
|
455
|
-
"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\"
|
|
455
|
+
"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\" [buttonStyle]=\"chatButtonStyle\" (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>",
|
|
456
456
|
"uses": []
|
|
457
457
|
}
|
|
458
458
|
]
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"optional": false
|
|
23
23
|
}
|
|
24
24
|
],
|
|
25
|
-
"returns": "`true` if the input is a Firebase {@link HttpsError
|
|
25
|
+
"returns": "`true` if the input is a Firebase {@link HttpsError}.",
|
|
26
26
|
"tags": [
|
|
27
27
|
"firebase",
|
|
28
28
|
"https",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"optional": false
|
|
57
57
|
}
|
|
58
58
|
],
|
|
59
|
-
"returns": "`true` if the input is a Firebase Admin {@link admin.FirebaseError
|
|
59
|
+
"returns": "`true` if the input is a Firebase Admin {@link admin.FirebaseError}.",
|
|
60
60
|
"tags": [
|
|
61
61
|
"firebase",
|
|
62
62
|
"admin",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"optional": false
|
|
90
90
|
}
|
|
91
91
|
],
|
|
92
|
-
"returns": "Structured {@link FirebaseServerErrorInfo
|
|
92
|
+
"returns": "Structured {@link FirebaseServerErrorInfo} with classified error details.",
|
|
93
93
|
"tags": [
|
|
94
94
|
"firebase",
|
|
95
95
|
"error",
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
{
|
|
247
247
|
"name": "handleFirebaseErrorFn",
|
|
248
248
|
"type": "ThrowErrorFunction<admin.FirebaseError>",
|
|
249
|
-
"description": "- Handler that receives the typed {@link admin.FirebaseError
|
|
249
|
+
"description": "- Handler that receives the typed {@link admin.FirebaseError}.",
|
|
250
250
|
"optional": false
|
|
251
251
|
}
|
|
252
252
|
],
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"optional": false
|
|
100
100
|
}
|
|
101
101
|
],
|
|
102
|
-
"returns": "A {@link FirebaseServerError
|
|
102
|
+
"returns": "A {@link FirebaseServerError} if the error has structured details, or a generic readable error otherwise.",
|
|
103
103
|
"tags": [
|
|
104
104
|
"firebase",
|
|
105
105
|
"https",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"optional": false
|
|
138
138
|
}
|
|
139
139
|
],
|
|
140
|
-
"returns": "A {@link ReadableError
|
|
140
|
+
"returns": "A {@link ReadableError} with a human-readable message suitable for display.",
|
|
141
141
|
"tags": [
|
|
142
142
|
"firebase",
|
|
143
143
|
"auth",
|
|
@@ -1433,7 +1433,7 @@
|
|
|
1433
1433
|
"optional": false
|
|
1434
1434
|
}
|
|
1435
1435
|
],
|
|
1436
|
-
"returns": "The same data object, now typed as {@link DocumentDataWithIdAndKey
|
|
1436
|
+
"returns": "The same data object, now typed as {@link DocumentDataWithIdAndKey}",
|
|
1437
1437
|
"tags": [
|
|
1438
1438
|
"firestore",
|
|
1439
1439
|
"data",
|
|
@@ -1478,7 +1478,7 @@
|
|
|
1478
1478
|
"optional": false
|
|
1479
1479
|
}
|
|
1480
1480
|
],
|
|
1481
|
-
"returns": "The same data object, now typed as {@link DocumentDataWithIdAndKey
|
|
1481
|
+
"returns": "The same data object, now typed as {@link DocumentDataWithIdAndKey}",
|
|
1482
1482
|
"tags": [
|
|
1483
1483
|
"firestore",
|
|
1484
1484
|
"data",
|
|
@@ -1553,7 +1553,7 @@
|
|
|
1553
1553
|
"category": "firestore",
|
|
1554
1554
|
"module": "@dereekb/firebase",
|
|
1555
1555
|
"subpath": "common/firestore/accessor/document.utility",
|
|
1556
|
-
"signature": "useDocumentSnapshotData(): <D extends
|
|
1556
|
+
"signature": "useDocumentSnapshotData(): <D extends FirestoreDocument<any>, O = void>(document: Maybe<D>, use: UseAsync<import(\"/home/circleci/code/packages/firebase/src/lib/common/firestore/accessor/document\").FirestoreDocumentData<D>, O>, defaultValue?: any) => Promise<Maybe<O>>",
|
|
1557
1557
|
"description": "Fetches a document's snapshot data (via `snapshot.data()`) and passes it to a `use` callback.\n\nWraps {@link useDocumentSnapshot} with a mapping step that extracts raw data from the snapshot.\nIf the document doesn't exist (data is `undefined`), the `use` callback is not invoked\nand `defaultValue` is returned instead.",
|
|
1558
1558
|
"params": [],
|
|
1559
1559
|
"returns": "The result of `use`, or the default value",
|
|
@@ -1798,7 +1798,7 @@
|
|
|
1798
1798
|
"optional": false
|
|
1799
1799
|
}
|
|
1800
1800
|
],
|
|
1801
|
-
"returns": "A {@link LimitedFirestoreDocumentAccessorSnapshotCache
|
|
1801
|
+
"returns": "A {@link LimitedFirestoreDocumentAccessorSnapshotCache} backed by the given accessor.",
|
|
1802
1802
|
"tags": [
|
|
1803
1803
|
"firestore",
|
|
1804
1804
|
"cache",
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
"optional": false
|
|
314
314
|
}
|
|
315
315
|
],
|
|
316
|
-
"returns": "A {@link BatchCalc
|
|
316
|
+
"returns": "A {@link BatchCalc} with computed batch counts and remainder.",
|
|
317
317
|
"tags": [
|
|
318
318
|
"batch",
|
|
319
319
|
"calculate",
|
|
@@ -437,7 +437,7 @@
|
|
|
437
437
|
"optional": false
|
|
438
438
|
}
|
|
439
439
|
],
|
|
440
|
-
"returns": "A {@link SeparateResult
|
|
440
|
+
"returns": "A {@link SeparateResult} with included and excluded arrays.",
|
|
441
441
|
"tags": [
|
|
442
442
|
"array",
|
|
443
443
|
"separate",
|
|
@@ -1002,7 +1002,7 @@
|
|
|
1002
1002
|
"optional": false
|
|
1003
1003
|
}
|
|
1004
1004
|
],
|
|
1005
|
-
"returns": "The {@link FunctionType
|
|
1005
|
+
"returns": "The {@link FunctionType}, or `null` for non-functions.",
|
|
1006
1006
|
"tags": [
|
|
1007
1007
|
"type",
|
|
1008
1008
|
"function",
|
|
@@ -2728,7 +2728,7 @@
|
|
|
2728
2728
|
"optional": false
|
|
2729
2729
|
}
|
|
2730
2730
|
],
|
|
2731
|
-
"returns": "An {@link AsyncValueCache
|
|
2731
|
+
"returns": "An {@link AsyncValueCache} that proxies the inner cache with a single-load memoization layer.",
|
|
2732
2732
|
"tags": [
|
|
2733
2733
|
"memoize",
|
|
2734
2734
|
"memo",
|
|
@@ -2761,7 +2761,7 @@
|
|
|
2761
2761
|
"optional": false
|
|
2762
2762
|
}
|
|
2763
2763
|
],
|
|
2764
|
-
"returns": "An {@link AsyncKeyedValueCache
|
|
2764
|
+
"returns": "An {@link AsyncKeyedValueCache} that proxies the inner cache with a record-level memoization layer.",
|
|
2765
2765
|
"tags": [
|
|
2766
2766
|
"memoize",
|
|
2767
2767
|
"memo",
|
|
@@ -7450,7 +7450,7 @@
|
|
|
7450
7450
|
{
|
|
7451
7451
|
"name": "filter",
|
|
7452
7452
|
"type": "FilterKeyValueTuplesInput<T>",
|
|
7453
|
-
"description": "- A {@link FilterKeyValueTuplesInput
|
|
7453
|
+
"description": "- A {@link FilterKeyValueTuplesInput} controlling which values match. Required (no default).",
|
|
7454
7454
|
"optional": false
|
|
7455
7455
|
}
|
|
7456
7456
|
],
|
|
@@ -7485,7 +7485,7 @@
|
|
|
7485
7485
|
{
|
|
7486
7486
|
"name": "filter",
|
|
7487
7487
|
"type": "FilterKeyValueTuplesInput<T>",
|
|
7488
|
-
"description": "- A {@link FilterKeyValueTuplesInput
|
|
7488
|
+
"description": "- A {@link FilterKeyValueTuplesInput} controlling which values are counted. Defaults to `KeyValueTypleValueFilter.UNDEFINED`.",
|
|
7489
7489
|
"optional": true
|
|
7490
7490
|
}
|
|
7491
7491
|
],
|
|
@@ -7591,7 +7591,7 @@
|
|
|
7591
7591
|
{
|
|
7592
7592
|
"name": "filter",
|
|
7593
7593
|
"type": "FilterKeyValueTuplesInput<I>",
|
|
7594
|
-
"description": "- A {@link FilterKeyValueTuplesInput
|
|
7594
|
+
"description": "- A {@link FilterKeyValueTuplesInput} controlling which values are included. Defaults to `KeyValueTypleValueFilter.UNDEFINED`.",
|
|
7595
7595
|
"optional": true
|
|
7596
7596
|
}
|
|
7597
7597
|
],
|
|
@@ -9778,7 +9778,7 @@
|
|
|
9778
9778
|
"signature": "makeDefaultNonConcurrentTaskKeyFactory(): StringFactory<any>",
|
|
9779
9779
|
"description": "Creates a default non-concurrent task key factory that generates unique incrementing number strings.",
|
|
9780
9780
|
"params": [],
|
|
9781
|
-
"returns": "A {@link StringFactory
|
|
9781
|
+
"returns": "A {@link StringFactory} that produces unique keys for identifying non-concurrent tasks.",
|
|
9782
9782
|
"tags": [
|
|
9783
9783
|
"promise",
|
|
9784
9784
|
"parallel",
|
|
@@ -13155,7 +13155,7 @@
|
|
|
13155
13155
|
{
|
|
13156
13156
|
"name": "valueOrFunction",
|
|
13157
13157
|
"type": "Maybe<boolean | DecisionFunction<T>>",
|
|
13158
|
-
"description": "- Boolean constant, {@link DecisionFunction
|
|
13158
|
+
"description": "- Boolean constant, {@link DecisionFunction}, or undefined to use the default.",
|
|
13159
13159
|
"optional": false
|
|
13160
13160
|
},
|
|
13161
13161
|
{
|
|
@@ -13165,7 +13165,7 @@
|
|
|
13165
13165
|
"optional": true
|
|
13166
13166
|
}
|
|
13167
13167
|
],
|
|
13168
|
-
"returns": "A {@link DecisionFunction
|
|
13168
|
+
"returns": "A {@link DecisionFunction} derived from the input.",
|
|
13169
13169
|
"tags": [
|
|
13170
13170
|
"decision",
|
|
13171
13171
|
"normalize",
|
|
@@ -14615,7 +14615,7 @@
|
|
|
14615
14615
|
"optional": false
|
|
14616
14616
|
}
|
|
14617
14617
|
],
|
|
14618
|
-
"returns": "A new {@link Modifier
|
|
14618
|
+
"returns": "A new {@link Modifier} pairing the key with the modify function.",
|
|
14619
14619
|
"tags": [
|
|
14620
14620
|
"modifier",
|
|
14621
14621
|
"mutate",
|
|
@@ -14647,7 +14647,7 @@
|
|
|
14647
14647
|
"optional": false
|
|
14648
14648
|
}
|
|
14649
14649
|
],
|
|
14650
|
-
"returns": "A single modifier function that applies all mapped modifiers, or {@link NOOP_MODIFIER
|
|
14650
|
+
"returns": "A single modifier function that applies all mapped modifiers, or {@link NOOP_MODIFIER} if empty.",
|
|
14651
14651
|
"tags": [
|
|
14652
14652
|
"modifier",
|
|
14653
14653
|
"map",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-components-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"dbx-components-mcp": "dbx-components-mcp.js"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"ts-morph": "^21.0.0"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@dereekb/dbx-cli": "
|
|
15
|
-
"@dereekb/util": "
|
|
14
|
+
"@dereekb/dbx-cli": "14.0.0",
|
|
15
|
+
"@dereekb/util": "14.0.0"
|
|
16
16
|
}
|
|
17
17
|
}
|